options window mouseup code

This commit is contained in:
ddevrien 2014-05-13 00:13:23 +02:00
parent 4550a1de68
commit e71170334f
3 changed files with 58 additions and 3 deletions

View File

@ -48,6 +48,7 @@
#define RCT2_ADDRESS_APP_PATH 0x009AA214
#define RCT2_ADDRESS_CONFIG_SOUND_SW_BUFFER 0x009AAC6E
#define RCT2_ADDRESS_CONFIG_MUSIC 0x009AAC72
#define RCT2_ADDRESS_CONFIG_FLAGS 0x009AAC74
#define RCT2_ADDRESS_CONFIG_SOUND_QUALITY 0x009AAC77

View File

@ -27,7 +27,8 @@
enum {
CONFIG_FLAG_ALWAYS_SHOW_GRIDLINES = (1 << 0),
CONFIG_FLAG_SHOW_HEIGHT_AS_UNITS = (1 << 1),
CONFIG_FLAG_DISABLE_SMOOTH_LANDSCAPE = (1 << 2)
CONFIG_FLAG_DISABLE_SMOOTH_LANDSCAPE = (1 << 2),
CONFIG_FLAG_SAVE_PLUGIN_DATA = (1 << 3)
};
enum {

View File

@ -19,9 +19,11 @@
*****************************************************************************/
#include "addresses.h"
#include "audio.h"
#include "config.h"
#include "gfx.h"
#include "strings.h"
#include "viewport.h"
#include "widget.h"
#include "window.h"
#include "window_dropdown.h"
@ -194,7 +196,59 @@ void window_options_open()
*/
static void window_options_mouseup()
{
RCT2_CALLPROC_EBPSAFE(0x006BAFCA);
short widgetIndex;
rct_window *w;
__asm mov widgetIndex, dx
__asm mov w, esi
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
break;
case WIDX_HOTKEY_DROPDOWN:
RCT2_CALLPROC_EBPSAFE(0x006E3884);
break;
case WIDX_SCREEN_EDGE_SCROLLING:
RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_EDGE_SCROLLING, uint8) ^= 1;
config_save();
window_invalidate(w);
break;
case WIDX_REAL_NAME_CHECKBOX:
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) ^= PARK_FLAGS_SHOW_REAL_GUEST_NAMES;
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_SHOW_REAL_GUEST_NAMES)
__asm xor al, al
else
__asm mov al, 1
RCT2_CALLPROC_EBPSAFE(0x0069C52F);
break;
case WIDX_TILE_SMOOTHING_CHECKBOX:
RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_FLAGS, uint8) ^= CONFIG_FLAG_DISABLE_SMOOTH_LANDSCAPE;
config_save();
gfx_invalidate_screen();
break;
case WIDX_GRIDLINES_CHECKBOX:
RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_FLAGS, uint8) ^= CONFIG_FLAG_ALWAYS_SHOW_GRIDLINES;
config_save();
gfx_invalidate_screen();
if ((w = window_get_main()) != NULL) {
if (RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_FLAGS, uint8) & CONFIG_FLAG_ALWAYS_SHOW_GRIDLINES)
w->viewport->flags |= VIEWPORT_FLAG_GRIDLINES;
else
w->viewport->flags &= ~VIEWPORT_FLAG_GRIDLINES;
}
break;
case WIDX_SOUND_SW_BUFFER_CHECKBOX:
pause_sounds();
RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_SOUND_SW_BUFFER, uint8) ^= 1;
config_save();
unpause_sounds();
window_invalidate(w);
break;
}
}
/**
@ -323,7 +377,6 @@ static void window_options_mousedown()
*/
static void window_options_dropdown()
{
//RCT2_CALLPROC_EBPSAFE(0x006BB076);
short dropdownIndex;
short widgetIndex;
rct_window *w;