mirror of
https://github.com/OpenRCT2/OpenRCT2.git
synced 2025-01-23 02:41:58 -05:00
Added happy peeps cheat. Labeled Bathroom peep offset.
This commit is contained in:
parent
d095adcff5
commit
95649ba942
2 changed files with 115 additions and 15 deletions
|
@ -80,7 +80,8 @@ typedef struct {
|
|||
uint8 var_03D;
|
||||
uint8 hunger; // 0x3E
|
||||
uint8 thirst; // 0x3F
|
||||
uint8 pad_040[0x28];
|
||||
uint8 bathroom; // 0x40
|
||||
uint8 pad_041[0x27];
|
||||
uint8 current_ride; // 0x68
|
||||
uint8 pad_6a; // 0x6A Part of current_ride?
|
||||
uint8 current_train; // 0x6B
|
||||
|
|
|
@ -21,11 +21,14 @@
|
|||
#include <string.h>
|
||||
#include "addresses.h"
|
||||
#include "park.h"
|
||||
#include "peep.h"
|
||||
#include "strings.h"
|
||||
#include "sprite.h"
|
||||
#include "sprites.h"
|
||||
#include "widget.h"
|
||||
#include "window.h"
|
||||
|
||||
|
||||
#define WW 200
|
||||
#define WH 128
|
||||
|
||||
|
@ -41,10 +44,11 @@ static enum WINDOW_CHEATS_WIDGET_IDX {
|
|||
WIDX_PAGE_BACKGROUND,
|
||||
WIDX_TAB_1,
|
||||
WIDX_TAB_2,
|
||||
WIDX_HIGH_MONEY
|
||||
WIDX_HIGH_MONEY,
|
||||
WIDX_HAPPY_GUESTS
|
||||
};
|
||||
|
||||
static rct_widget window_cheats_widgets[] = {
|
||||
static rct_widget window_cheats_money_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0x0FFFFFFFF, 65535}, // panel / background
|
||||
{ WWT_CAPTION, 0, 1, WW - 2, 1, 14, 3165, STR_WINDOW_TITLE_TIP}, // title bar
|
||||
{ WWT_CLOSEBOX, 0, WW - 13, WW - 3, 2, 13, 0x338, STR_CLOSE_WINDOW_TIP}, // close x button
|
||||
|
@ -55,13 +59,30 @@ static rct_widget window_cheats_widgets[] = {
|
|||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
static rct_widget window_cheats_guests_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0x0FFFFFFFF, 65535 }, // panel / background
|
||||
{ WWT_CAPTION, 0, 1, WW - 2, 1, 14, 3165, STR_WINDOW_TITLE_TIP }, // title bar
|
||||
{ WWT_CLOSEBOX, 0, WW - 13, WW - 3, 2, 13, 0x338, STR_CLOSE_WINDOW_TIP }, // close x button
|
||||
{ WWT_IMGBTN, 1, 0, WW - 1, 43, WH - 1, 0x0FFFFFFFF, 65535 }, // tab content panel
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, 2462 }, // tab 1
|
||||
{ WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, 2462 }, // tab 2
|
||||
{ WWT_CLOSEBOX, 1, 4, 74, 47, 63, 2375, 2375 }, // happy guests
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
static rct_widget *window_cheats_page_widgets[] = {
|
||||
window_cheats_money_widgets,
|
||||
window_cheats_guests_widgets
|
||||
};
|
||||
|
||||
static void window_cheats_emptysub() { }
|
||||
static void window_cheats_mouseup();
|
||||
static void window_cheats_update();
|
||||
static void window_cheats_invalidate();
|
||||
static void window_cheats_paint();
|
||||
static void window_cheats_set_page(rct_window *w, int page);
|
||||
|
||||
static uint32 window_cheats_events[] = {
|
||||
static uint32 window_cheats_money_events[] = {
|
||||
window_cheats_emptysub,
|
||||
window_cheats_mouseup,
|
||||
window_cheats_emptysub,
|
||||
|
@ -92,6 +113,47 @@ static uint32 window_cheats_events[] = {
|
|||
window_cheats_emptysub
|
||||
};
|
||||
|
||||
static uint32 window_cheats_guests_events[] = {
|
||||
window_cheats_emptysub,
|
||||
window_cheats_mouseup,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_update,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_emptysub,
|
||||
window_cheats_invalidate,
|
||||
window_cheats_paint,
|
||||
window_cheats_emptysub
|
||||
};
|
||||
|
||||
static uint32 *window_cheats_page_events[] = {
|
||||
window_cheats_money_events,
|
||||
window_cheats_guests_events,
|
||||
};
|
||||
|
||||
static uint32 window_cheats_page_enabled_widgets[] = {
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_HIGH_MONEY),
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_HIGH_MONEY) //Change to WIDX_HAPPY_GUESTSs when enabled widgets is figured out.
|
||||
};
|
||||
|
||||
static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w);
|
||||
|
||||
void window_cheats_open()
|
||||
|
@ -103,11 +165,10 @@ void window_cheats_open()
|
|||
if (window != NULL)
|
||||
return;
|
||||
|
||||
window = window_create(32, 32, WW, WH, window_cheats_events, WC_CHEATS, 0);
|
||||
window->widgets = window_cheats_widgets;
|
||||
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_HIGH_MONEY);
|
||||
window = window_create(32, 32, WW, WH, window_cheats_money_events, WC_CHEATS, 0);
|
||||
window->widgets = window_cheats_money_widgets;
|
||||
window->enabled_widgets = window_cheats_page_enabled_widgets[0];
|
||||
window_init_scroll_widgets(window);
|
||||
|
||||
window->page = WINDOW_CHEATS_PAGE_MONEY;
|
||||
window->colours[0] = 1;
|
||||
window->colours[1] = 19;
|
||||
|
@ -122,16 +183,37 @@ static void window_cheats_mouseup()
|
|||
|
||||
__asm mov widgetIndex, dx
|
||||
__asm mov w, esi
|
||||
rct_peep* peep;
|
||||
uint16 sprite_idx;
|
||||
|
||||
switch (widgetIndex) {
|
||||
case WIDX_CLOSE:
|
||||
window_close(w);
|
||||
break;
|
||||
case WIDX_TAB_1:
|
||||
case WIDX_TAB_2:
|
||||
window_cheats_set_page(w, widgetIndex - WIDX_TAB_1);
|
||||
break;
|
||||
case WIDX_HIGH_MONEY:
|
||||
i = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32));
|
||||
i += 100000;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(i);
|
||||
|
||||
if (w->page == WINDOW_CHEATS_PAGE_MONEY){
|
||||
i = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32));
|
||||
i += 100000;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(i);
|
||||
}
|
||||
else{
|
||||
for (sprite_idx = RCT2_GLOBAL(RCT2_ADDRESS_SPRITES_START_PEEP, uint16); sprite_idx != SPRITE_INDEX_NULL; sprite_idx = peep->next) {
|
||||
peep = &(RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite)[sprite_idx].peep);
|
||||
if (peep->type != PEEP_TYPE_GUEST)
|
||||
continue;
|
||||
if (peep->var_2A != 0)
|
||||
continue;
|
||||
peep->happiness = 255;
|
||||
}
|
||||
}
|
||||
window_invalidate_by_id(0x40 | WC_BOTTOM_TOOLBAR, 0);
|
||||
break;
|
||||
case WIDX_HAPPY_GUESTS:
|
||||
//At present HAPPY_GUESTS does not activate
|
||||
window_invalidate_by_id(0x40 | WC_BOTTOM_TOOLBAR, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -144,7 +226,7 @@ static void window_cheats_update()
|
|||
__asm mov w, esi
|
||||
|
||||
w->var_48E++;
|
||||
widget_invalidate(w->classification, w->number, WIDX_TAB_1);
|
||||
widget_invalidate(w->classification, w->number, WIDX_TAB_1+w->page);
|
||||
}
|
||||
|
||||
static void window_cheats_invalidate()
|
||||
|
@ -153,9 +235,14 @@ static void window_cheats_invalidate()
|
|||
rct_window *w;
|
||||
|
||||
__asm mov w, esi
|
||||
|
||||
strcpy((char*)0x009BC677, "Cheats");
|
||||
|
||||
rct_widget **widgets = window_cheats_page_widgets[w->page];
|
||||
if (w->widgets != widgets) {
|
||||
w->widgets = widgets;
|
||||
window_init_scroll_widgets(w);
|
||||
}
|
||||
|
||||
// Set correct active tab
|
||||
for (i = 0; i < 7; i++)
|
||||
w->pressed_widgets &= ~(1 << (WIDX_TAB_1 + i));
|
||||
|
@ -190,7 +277,19 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
|
|||
if (!(w->disabled_widgets & (1 << WIDX_TAB_2))) {
|
||||
sprite_idx = 5568;
|
||||
if (w->page == WINDOW_CHEATS_PAGE_GUESTS)
|
||||
sprite_idx += w->var_48E / 4;
|
||||
sprite_idx += (w->var_48E / 2) % 8;
|
||||
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top);
|
||||
}
|
||||
}
|
||||
|
||||
static void window_cheats_set_page(rct_window *w, int page)
|
||||
{
|
||||
w->page = page;
|
||||
|
||||
w->enabled_widgets = window_cheats_page_enabled_widgets[page];
|
||||
|
||||
w->event_handlers = window_cheats_page_events[page];
|
||||
w->widgets = window_cheats_page_widgets[page];
|
||||
|
||||
window_invalidate(w);
|
||||
}
|
Loading…
Reference in a new issue