Merge pull request #1221 from duncanspumpkin/fix_bugs

Fix bugs
This commit is contained in:
Ted John 2015-06-04 20:24:14 +01:00
commit 6f4854222e
6 changed files with 30 additions and 26 deletions

View File

@ -51,9 +51,9 @@ void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bot
uint16 cross_pattern = 0; uint16 cross_pattern = 0;
int start_x = left - dpi->x; int start_x = left - dpi->x;
if (start_x < 0){ if (start_x < 0){
start_x = 0;
cross_pattern ^= start_x; cross_pattern ^= start_x;
start_x = 0;
} }
int end_x = right - dpi->x; int end_x = right - dpi->x;
@ -64,9 +64,9 @@ void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bot
int width = end_x - start_x; int width = end_x - start_x;
int start_y = top - dpi->y; int start_y = top - dpi->y;
if (start_y < 0){ if (start_y < 0){
start_y = 0;
cross_pattern ^= start_y; cross_pattern ^= start_y;
start_y = 0;
} }
int end_y = bottom - dpi->y; int end_y = bottom - dpi->y;
end_y++; end_y++;

View File

@ -793,6 +793,8 @@ static void widget_scroll_draw(rct_drawpixelinfo *dpi, rct_window *w, int widget
r--; r--;
b--; b--;
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_FONT_SPRITE_BASE, sint16) = 0xE0;
// Horizontal scrollbar // Horizontal scrollbar
if (scroll->flags & HSCROLLBAR_VISIBLE) if (scroll->flags & HSCROLLBAR_VISIBLE)
widget_hscrollbar_draw(dpi, scroll, l, b - 10, (scroll->flags & VSCROLLBAR_VISIBLE ? r - 10 : r), b, colour); widget_hscrollbar_draw(dpi, scroll, l, b - 10, (scroll->flags & VSCROLLBAR_VISIBLE ? r - 10 : r), b, colour);
@ -882,7 +884,7 @@ static void widget_vscrollbar_draw(rct_drawpixelinfo *dpi, rct_scroll *scroll, i
// Down button // Down button
gfx_fill_rect_inset(dpi, l, b - 9, r, b, colour, (scroll->flags & VSCROLLBAR_DOWN_PRESSED ? 0x20 : 0)); gfx_fill_rect_inset(dpi, l, b - 9, r, b, colour, (scroll->flags & VSCROLLBAR_DOWN_PRESSED ? 0x20 : 0));
gfx_draw_string(dpi, (char*)0x009DED69, 0, l + 1, b - 8); gfx_draw_string(dpi, (char*)0x009DED69, 0, l + 1, b - 9);
} }
/** /**

View File

@ -46,7 +46,7 @@ void research_reset_items()
{ {
gResearchItems[0].entryIndex = RESEARCHED_ITEMS_SEPERATOR; gResearchItems[0].entryIndex = RESEARCHED_ITEMS_SEPERATOR;
gResearchItems[1].entryIndex = RESEARCHED_ITEMS_END; gResearchItems[1].entryIndex = RESEARCHED_ITEMS_END;
gResearchItems[2].entryIndex = -3; gResearchItems[2].entryIndex = RESEARCHED_ITEMS_END_2;
} }
/** /**
@ -276,10 +276,10 @@ void research_update()
*/ */
void sub_684AC3(){ void sub_684AC3(){
rct_research_item* research = gResearchItems; rct_research_item* research = gResearchItems;
for (; research->entryIndex != -2; research++); for (; research->entryIndex != RESEARCHED_ITEMS_END; research++);
research++; research++;
for (; research->entryIndex != -3; research += 2){ for (; research->entryIndex != RESEARCHED_ITEMS_END_2; research += 2){
if (scenario_rand() & 1) continue; if (scenario_rand() & 1) continue;
rct_research_item* edx; rct_research_item* edx;
@ -321,7 +321,7 @@ void sub_684AC3(){
} }
for (research = gResearchItems; research->entryIndex != -1; research++){ for (research = gResearchItems; research->entryIndex != RESEARCHED_ITEMS_SEPERATOR; research++){
research_finish_item(research->entryIndex); research_finish_item(research->entryIndex);
} }

View File

@ -771,7 +771,6 @@ static void window_cheats_paint()
gfx_draw_string(dpi, (char*)language_get_string(STR_CHEAT_TIP_LARGE_TRAM_GUESTS), 0, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO); gfx_draw_string(dpi, (char*)language_get_string(STR_CHEAT_TIP_LARGE_TRAM_GUESTS), 0, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO);
gfx_draw_string(dpi, (char*)language_get_string(STR_CHEAT_TIP_NAUSEA), 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO); gfx_draw_string(dpi, (char*)language_get_string(STR_CHEAT_TIP_NAUSEA), 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO);
} }
} }
static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w) static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
@ -816,6 +815,8 @@ static void window_cheats_set_page(rct_window *w, int page)
w->enabled_widgets = window_cheats_page_enabled_widgets[page]; w->enabled_widgets = window_cheats_page_enabled_widgets[page];
w->pressed_widgets = 0;
w->event_handlers = window_cheats_page_events[page]; w->event_handlers = window_cheats_page_events[page];
w->widgets = window_cheats_page_widgets[page]; w->widgets = window_cheats_page_widgets[page];

View File

@ -170,14 +170,7 @@ static int research_item_is_always_researched(rct_research_item *researchItem)
*/ */
static void sub_685901() static void sub_685901()
{ {
for (rct_research_item* research = gResearchItems; RCT2_CALLPROC_EBPSAFE(0x00685901);
research->entryIndex != -3;
research++){
if (research->entryIndex < -3){
research->entryIndex &= 0x00FFFFFF;
}
}
} }
/** /**
@ -185,8 +178,15 @@ static void sub_685901()
* rct2: 0x00685A79 * rct2: 0x00685A79
*/ */
static void sub_685A79() static void sub_685A79()
{ {
RCT2_CALLPROC_EBPSAFE(0x00685A79); for (rct_research_item* research = gResearchItems;
research->entryIndex != RESEARCHED_ITEMS_END_2;
research++){
if (research->entryIndex < RESEARCHED_ITEMS_END_2){
research->entryIndex &= 0x00FFFFFF;
}
}
} }
/** /**
@ -551,7 +551,7 @@ static void window_editor_inventions_list_scrollmousedown()
if (researchItem == NULL) if (researchItem == NULL)
return; return;
if (researchItem->entryIndex < (uint32)-3 && research_item_is_always_researched(researchItem)) if (researchItem->entryIndex < (uint32)RESEARCHED_ITEMS_END_2 && research_item_is_always_researched(researchItem))
return; return;
window_invalidate(w); window_invalidate(w);
@ -613,7 +613,7 @@ static void window_editor_inventions_list_cursor()
if (researchItem == NULL) if (researchItem == NULL)
return; return;
if (researchItem->entryIndex < (uint32)-3 && research_item_is_always_researched(researchItem)) { if (researchItem->entryIndex < (uint32)RESEARCHED_ITEMS_END_2 && research_item_is_always_researched(researchItem)) {
cursorId = -1; cursorId = -1;
window_cursor_set_registers(cursorId); window_cursor_set_registers(cursorId);
return; return;
@ -699,12 +699,12 @@ static void window_editor_inventions_list_paint()
if (eax >= 0x10000) if (eax >= 0x10000)
objectEntryType = 0; objectEntryType = 0;
void **entries = RCT2_GLOBAL(0x0098D97C + (objectEntryType * 8), void*); void *chunk = object_entry_groups[objectEntryType].chunks[researchItem->entryIndex & 0xFF];
void *entry = entries[researchItem->entryIndex & 0xFF];
if (entry == NULL || entry == (void*)0xFFFFFFFF) if (chunk == NULL || chunk == (void*)0xFFFFFFFF)
return; return;
object_paint(objectEntryType, 3, objectEntryType, x, y, 0, (int)dpi, (int)entry); object_paint(objectEntryType, 3, objectEntryType, x, y, 0, (int)dpi, (int)chunk);
// Item name // Item name
x = w->x + ((widget->left + widget->right) / 2) + 1; x = w->x + ((widget->left + widget->right) / 2) + 1;

View File

@ -642,6 +642,7 @@ static void window_map_paint()
// FEATURE larger land tool size support // FEATURE larger land tool size support
if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE && if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE &&
RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WIDGETINDEX, uint8) == WIDX_SET_LAND_RIGHTS &&
(RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) > 7) && (RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) > 7) &&
(RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, uint8) == WC_MAP)) { (RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, uint8) == WC_MAP)) {
RCT2_GLOBAL(0x009BC677, char) = FORMAT_BLACK; RCT2_GLOBAL(0x009BC677, char) = FORMAT_BLACK;