mirror of https://github.com/OpenRCT2/OpenRCT2.git
implement editor objective options window
This commit is contained in:
parent
ce695ac8d4
commit
ff478b8673
|
@ -523,7 +523,7 @@ void window_music_credits_open();
|
|||
void window_publisher_credits_open();
|
||||
void window_track_manage_open();
|
||||
void window_viewport_open();
|
||||
void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args);
|
||||
void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args, int maxLength);
|
||||
|
||||
void window_editor_main_open();
|
||||
void window_editor_top_toolbar_open();
|
||||
|
@ -569,9 +569,9 @@ int window_can_resize(rct_window *w);
|
|||
__asm mov widgetIndex, dx \
|
||||
__asm mov w, esi
|
||||
|
||||
#define window_text_input_get_registers(w, widgetIndex, result, text) \
|
||||
#define window_text_input_get_registers(w, widgetIndex, result, text) \
|
||||
__asm mov widgetIndex, dx \
|
||||
__asm mov result, cl \
|
||||
__asm mov result, cl \
|
||||
__asm mov w, esi \
|
||||
__asm mov text, edi
|
||||
|
||||
|
@ -595,6 +595,10 @@ int window_can_resize(rct_window *w);
|
|||
#define window_paint_get_registers(w, dpi) \
|
||||
__asm mov w, esi \
|
||||
__asm mov dpi, edi
|
||||
|
||||
#define window_scrollsize_set_registers(width, height) \
|
||||
__asm mov ecx, width \
|
||||
__asm mov edx, height
|
||||
#else
|
||||
#define window_get_register(w) \
|
||||
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
|
||||
|
@ -605,24 +609,24 @@ int window_can_resize(rct_window *w);
|
|||
|
||||
#define window_dropdown_get_registers(w, widgetIndex, dropdownIndex) \
|
||||
__asm__ ( "mov %["#dropdownIndex"], ax " : [dropdownIndex] "+m" (dropdownIndex) ); \
|
||||
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
|
||||
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
|
||||
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
|
||||
|
||||
#define window_text_input_get_registers(w, widgetIndex, result, text) \
|
||||
__asm__ ( "mov %[_cl], cl " : [_cl] "+m" (result) ); \
|
||||
#define window_text_input_get_registers(w, widgetIndex, result, text) \
|
||||
__asm__ ( "mov %[_cl], cl " : [_cl] "+m" (result) ); \
|
||||
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) ); \
|
||||
__asm__ ( "mov %[w], esi " : [w] "+m" (w) ); \
|
||||
__asm__ ( "mov %[text], edi " : [text] "+m" (text) );
|
||||
|
||||
#define window_scrollmouse_get_registers(w, x, y) \
|
||||
__asm__ ( "mov %["#x"], cx " : [x] "+m" (x) ); \
|
||||
__asm__ ( "mov %["#y"], dx " : [y] "+m" (y) ); \
|
||||
__asm__ ( "mov %["#x"], cx " : [x] "+m" (x) ); \
|
||||
__asm__ ( "mov %["#y"], dx " : [y] "+m" (y) ); \
|
||||
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
|
||||
|
||||
#define window_tool_get_registers(w, widgetIndex, x, y) \
|
||||
__asm__ ( "mov %["#x"], ax " : [x] "+m" (x) ); \
|
||||
__asm__ ( "mov %["#y"], bx " : [y] "+m" (y) ); \
|
||||
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
|
||||
__asm__ ( "mov %["#x"], ax " : [x] "+m" (x) ); \
|
||||
__asm__ ( "mov %["#y"], bx " : [y] "+m" (y) ); \
|
||||
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
|
||||
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
|
||||
|
||||
#define window_textinput_get_registers(w, widgetIndex, result, text) \
|
||||
|
@ -634,6 +638,10 @@ int window_can_resize(rct_window *w);
|
|||
#define window_paint_get_registers(w, dpi) \
|
||||
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) ); \
|
||||
__asm__ ( "mov %["#dpi"], edi " : [dpi] "+m" (dpi) );
|
||||
|
||||
#define window_scrollsize_set_registers(width, height) \
|
||||
__asm__ ( "mov ecx, %[width] " : [width] "+m" (width) ); \
|
||||
__asm__ ( "mov edx, %[height] " : [height] "+m" (height) );
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -100,6 +100,8 @@ enum {
|
|||
STR_CREDIT_SPARE_6 = 863,
|
||||
STR_CREDIT_SPARE_7 = 864,
|
||||
|
||||
STR_DROPDOWN_GLYPH = 876,
|
||||
|
||||
STR_LOAD_GAME = 882,
|
||||
STR_SAVE_GAME = 883,
|
||||
STR_LOAD_LANDSCAPE = 884,
|
||||
|
@ -844,6 +846,19 @@ enum {
|
|||
STR_OBJECTIVE_REPLAY_LOAN_AND_PARK_VALUE = STR_OBJECTIVE_NONE + 10,
|
||||
STR_OBJECTIVE_MONTHLY_FOOD_INCOME = STR_OBJECTIVE_NONE + 11,
|
||||
|
||||
STR_OBJECTIVE_DROPDOWN_NONE = 2397,
|
||||
STR_OBJECTIVE_DROPDOWN_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE = STR_OBJECTIVE_DROPDOWN_NONE + 1,
|
||||
STR_OBJECTIVE_DROPDOWN_PARK_VALUE_AT_A_GIVEN_DATE = STR_OBJECTIVE_DROPDOWN_NONE + 2,
|
||||
STR_OBJECTIVE_DROPDOWN_HAVE_FUN = STR_OBJECTIVE_DROPDOWN_NONE + 3,
|
||||
STR_OBJECTIVE_DROPDOWN_BUILD_THE_BEST_RIDE_YOU_CAN = STR_OBJECTIVE_DROPDOWN_NONE + 4,
|
||||
STR_OBJECTIVE_DROPDOWN_BUILD_10_ROLLER_COASTERS = STR_OBJECTIVE_DROPDOWN_NONE + 5,
|
||||
STR_OBJECTIVE_DROPDOWN_NUMBER_OF_GUESTS_IN_PARK = STR_OBJECTIVE_DROPDOWN_NONE + 6,
|
||||
STR_OBJECTIVE_DROPDOWN_MONTHLY_INCOME_FROM_RIDE_TICKETS = STR_OBJECTIVE_DROPDOWN_NONE + 7,
|
||||
STR_OBJECTIVE_DROPDOWN_BUILD_10_ROLLER_COASTERS_OF_A_GIVEN_LENGTH = STR_OBJECTIVE_DROPDOWN_NONE + 8,
|
||||
STR_OBJECTIVE_DROPDOWN_FINISH_BUILDING_5_ROLLER_COASTERS = STR_OBJECTIVE_DROPDOWN_NONE + 9,
|
||||
STR_OBJECTIVE_DROPDOWN_REPAY_LOAN_AND_ACHIEVE_A_GIVEN_PARK_VALUE = STR_OBJECTIVE_DROPDOWN_NONE + 10,
|
||||
STR_OBJECTIVE_DROPDOWN_MONTHLY_PROFIT_FROM_FOOD_MERCHANDISE = STR_OBJECTIVE_DROPDOWN_NONE + 11,
|
||||
|
||||
STR_MARKETING_CAMPAIGNS_IN_OPERATION = 2409,
|
||||
STR_MARKETING_CAMPAGINS_NONE = 2410,
|
||||
STR_MARKETING_CAMPAIGNS_AVAILABLE = 2411,
|
||||
|
@ -1208,7 +1223,25 @@ enum {
|
|||
|
||||
STR_SET_STARTING_POSITIONS_TIP = 3228,
|
||||
|
||||
STR_SELECT_OBJECTIVE_AND_PARK_NAME_TIP = 3282,
|
||||
STR_SELECT_RIDES_TO_BE_PRESERVED_TIP = 3283,
|
||||
STR_OBJECTIVE_SELECTION = 3284,
|
||||
STR_SELECT_OBJECTIVE_FOR_THIS_SCENARIO_TIP = 3286,
|
||||
STR_SELECT_CLIMATE_TIP = 3288,
|
||||
|
||||
STR_CLIMATE_COOL_AND_WET = 3290,
|
||||
STR_CLIMATE_WARM = STR_CLIMATE_COOL_AND_WET + 1,
|
||||
STR_CLIMATE_HOT_AND_DRY = STR_CLIMATE_COOL_AND_WET + 2,
|
||||
STR_CLIMATE_COLD = STR_CLIMATE_COOL_AND_WET + 3,
|
||||
|
||||
STR_CHANGE = 3294,
|
||||
STR_CHANGE_NAME_OF_PARK_TIP = 3295,
|
||||
STR_CHANGE_NAME_OF_SCENARIO_TIP = 3296,
|
||||
STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP = 3297,
|
||||
|
||||
|
||||
STR_NO_DETAILS_YET = 3317,
|
||||
STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN = 3318,
|
||||
|
||||
STR_UNABLE_TO_SAVE_SCENARIO_FILE = 3320,
|
||||
|
||||
|
@ -1221,6 +1254,7 @@ enum {
|
|||
STR_PARK_ENTRANCE_WRONG_DIRECTION_OR_NO_PATH = 3332,
|
||||
STR_SAVE_PLUGIN_DATA = 3333,
|
||||
STR_SAVE_PLUGIN_DATA_TIP = 3334,
|
||||
STR_SIX_FLAGS_PARK = 3337,
|
||||
|
||||
STR_GAME_TOOLS = 3341,
|
||||
STR_SCENARIO_EDITOR = 3342,
|
||||
|
@ -1241,6 +1275,19 @@ enum {
|
|||
STR_TUTORIAL_CUSTOM_RIDES = 3386,
|
||||
STR_TUTORIAL_ROLLER_COASTER = 3387,
|
||||
|
||||
STR_OBJECTIVE_2_NONE = 2397,
|
||||
STR_OBJECTIVE_2_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 1,
|
||||
STR_OBJECTIVE_2_PARK_VALUE_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 2,
|
||||
STR_OBJECTIVE_2_HAVE_FUN = STR_OBJECTIVE_2_NONE + 3,
|
||||
STR_OBJECTIVE_2_BUILD_THE_BEST_RIDE_YOU_CAN = STR_OBJECTIVE_2_NONE + 4,
|
||||
STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 5,
|
||||
STR_OBJECTIVE_2_NUMBER_OF_GUESTS_IN_PARK = STR_OBJECTIVE_2_NONE + 6,
|
||||
STR_OBJECTIVE_2_MONTHLY_INCOME_FROM_RIDE_TICKETS = STR_OBJECTIVE_2_NONE + 7,
|
||||
STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS_OF_A_GIVEN_LENGTH = STR_OBJECTIVE_2_NONE + 8,
|
||||
STR_OBJECTIVE_2_FINISH_BUILDING_5_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 9,
|
||||
STR_OBJECTIVE_2_REPAY_LOAN_AND_ACHIEVE_A_GIVEN_PARK_VALUE = STR_OBJECTIVE_2_NONE + 10,
|
||||
STR_OBJECTIVE_2_MONTHLY_PROFIT_FROM_FOOD_MERCHANDISE = STR_OBJECTIVE_2_NONE + 11,
|
||||
|
||||
STR_CLEAR_SCENERY_TIP = 3437,
|
||||
STR_CLEAR_SCENERY = 3439,
|
||||
|
||||
|
|
|
@ -83,6 +83,12 @@ typedef struct {
|
|||
char completed_by[64]; // 0x0270
|
||||
} rct_scenario_basic;
|
||||
|
||||
typedef struct {
|
||||
rct_string_id scenario_name;
|
||||
rct_string_id park_name;
|
||||
rct_string_id details;
|
||||
} rct_stex_entry;
|
||||
|
||||
/* This will be useful for backwards compatibility
|
||||
typedef struct {
|
||||
// SC6[0]
|
||||
|
|
|
@ -202,7 +202,7 @@ static void window_banner_mouseup()
|
|||
game_do_command(x, 1, y, map_element->base_height | (map_element->properties.banner.position << 8), GAME_COMMAND_51, 0, 0);
|
||||
break;
|
||||
case WIDX_BANNER_TEXT:
|
||||
window_text_input_open(w, WIDX_BANNER_TEXT, 2982, 2983, gBanners[w->number].string_idx, 0);
|
||||
window_text_input_open(w, WIDX_BANNER_TEXT, 2982, 2983, gBanners[w->number].string_idx, 0, 32);
|
||||
break;
|
||||
case WIDX_BANNER_NO_ENTRY:
|
||||
RCT2_CALLPROC_EBPSAFE(0x006EE3C3);
|
||||
|
|
|
@ -190,7 +190,7 @@ void window_editor_bottom_toolbar_jump_back_to_invention_list_set_up() {
|
|||
*/
|
||||
void window_editor_bottom_toolbar_jump_back_to_scenario_options() {
|
||||
window_close_all();
|
||||
RCT2_CALLPROC_EBPSAFE(0x00670138); // open scenario options
|
||||
window_editor_scenario_options_open();
|
||||
g_editor_step = EDITOR_STEP_OPTIONS_SELECTION;
|
||||
gfx_invalidate_screen();
|
||||
}
|
||||
|
@ -201,7 +201,7 @@ void window_editor_bottom_toolbar_jump_back_to_scenario_options() {
|
|||
*/
|
||||
void window_editor_bottom_toolbar_jump_back_to_options_selection() {
|
||||
window_close_all();
|
||||
RCT2_CALLPROC_EBPSAFE(0x00670138); // open options selection window
|
||||
window_editor_scenario_options_open();
|
||||
g_editor_step = EDITOR_STEP_OPTIONS_SELECTION;
|
||||
gfx_invalidate_screen();
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ void window_editor_bottom_toolbar_jump_forward_to_invention_list_set_up() {
|
|||
*/
|
||||
void window_editor_bottom_toolbar_jump_forward_to_options_selection() {
|
||||
window_close_all();
|
||||
RCT2_CALLPROC_EBPSAFE(0x00670138);
|
||||
window_editor_scenario_options_open();
|
||||
g_editor_step = EDITOR_STEP_OPTIONS_SELECTION;
|
||||
gfx_invalidate_screen();
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ void window_editor_bottom_toolbar_jump_forward_to_options_selection() {
|
|||
*/
|
||||
void window_editor_bottom_toolbar_jump_forward_to_objective_selection() {
|
||||
window_close_all();
|
||||
RCT2_CALLPROC_EBPSAFE(0x0067137D);
|
||||
window_editor_objective_options_open();
|
||||
g_editor_step = EDITOR_STEP_OBJECTIVE_SELECTION;
|
||||
gfx_invalidate_screen();
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -631,7 +631,7 @@ void window_guest_overview_mouse_up(){
|
|||
peep_window_state_update(peep);
|
||||
break;
|
||||
case WIDX_RENAME:
|
||||
window_text_input_open(w, widgetIndex, 0x5AC, 0x5AD, peep->name_string_idx, peep->id);
|
||||
window_text_input_open(w, widgetIndex, 0x5AC, 0x5AD, peep->name_string_idx, peep->id, 32);
|
||||
break;
|
||||
case WIDX_LOCATE:
|
||||
window_scroll_to_viewport(w);
|
||||
|
|
|
@ -694,7 +694,7 @@ static void window_park_entrance_mouseup()
|
|||
break;
|
||||
case WIDX_RENAME:
|
||||
RCT2_GLOBAL(0x013CE962, uint32) = RCT2_GLOBAL(0x013573D8, uint32);
|
||||
window_text_input_open(w, WIDX_RENAME, STR_PARK_NAME, STR_ENTER_PARK_NAME, RCT2_GLOBAL(0x013573D4, rct_string_id), 0);
|
||||
window_text_input_open(w, WIDX_RENAME, STR_PARK_NAME, STR_ENTER_PARK_NAME, RCT2_GLOBAL(0x013573D4, rct_string_id), 0, 32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1649,7 +1649,8 @@ static void window_park_objective_mouseup()
|
|||
STR_ENTER_NAME,
|
||||
STR_PLEASE_ENTER_YOUR_NAME_FOR_THE_SCENARIO_CHART,
|
||||
0,
|
||||
0
|
||||
0,
|
||||
32
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1548,7 +1548,7 @@ static void window_ride_rename(rct_window *w)
|
|||
|
||||
ride = GET_RIDE(w->number);
|
||||
RCT2_GLOBAL(0x013CE962, uint32) = ride->name_arguments;
|
||||
window_text_input_open(w, WIDX_RENAME, STR_RIDE_ATTRACTION_NAME, STR_ENTER_NEW_NAME_FOR_THIS_RIDE_ATTRACTION, ride->name, ride->name_arguments);
|
||||
window_text_input_open(w, WIDX_RENAME, STR_RIDE_ATTRACTION_NAME, STR_ENTER_NEW_NAME_FOR_THIS_RIDE_ATTRACTION, ride->name, ride->name_arguments, 32);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -275,7 +275,7 @@ static void window_sign_mouseup()
|
|||
{
|
||||
string_id = gBanners[w->number].string_idx;
|
||||
}
|
||||
window_text_input_open(w, WIDX_SIGN_TEXT, 2992, 2993, string_id, 0);
|
||||
window_text_input_open(w, WIDX_SIGN_TEXT, 2992, 2993, string_id, 0, 32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -596,7 +596,7 @@ static void window_sign_small_mouseup()
|
|||
{
|
||||
string_id = gBanners[w->number].string_idx;
|
||||
}
|
||||
window_text_input_open(w, WIDX_SIGN_TEXT, 2992, 2993, string_id, 0);
|
||||
window_text_input_open(w, WIDX_SIGN_TEXT, 2992, 2993, string_id, 0, 32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -469,7 +469,7 @@ void window_staff_overview_mouseup()
|
|||
window_staff_fire_prompt_open(peep);
|
||||
break;
|
||||
case WIDX_RENAME:
|
||||
window_text_input_open(w, widgetIndex, 2977, 2978, peep->name_string_idx, peep->id);
|
||||
window_text_input_open(w, widgetIndex, 2977, 2978, peep->name_string_idx, peep->id, 32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
|
||||
#define WW 250
|
||||
#define WH 90
|
||||
#define MAX_TEXTINPUT 32
|
||||
|
||||
enum WINDOW_TEXT_INPUT_WIDGET_IDX {
|
||||
WIDX_BACKGROUND,
|
||||
|
@ -94,12 +93,16 @@ static void* window_text_input_events[] = {
|
|||
};
|
||||
|
||||
int input_text_description;
|
||||
char text_input[MAX_TEXTINPUT] = { 0 };
|
||||
char text_input[512] = { 0 };
|
||||
rct_windowclass calling_class = 0;
|
||||
rct_windownumber calling_number = 0;
|
||||
int calling_widget = 0;
|
||||
int _maxInputLength;
|
||||
|
||||
void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args, int maxLength)
|
||||
{
|
||||
_maxInputLength = maxLength;
|
||||
|
||||
void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args){
|
||||
window_close_by_class(WC_TEXTINPUT);
|
||||
|
||||
// Window will be in the center of the screen
|
||||
|
@ -110,7 +113,8 @@ void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id t
|
|||
WH,
|
||||
(uint32*)window_text_input_events,
|
||||
WC_TEXTINPUT,
|
||||
0);
|
||||
0
|
||||
);
|
||||
|
||||
w->widgets = window_text_input_widgets;
|
||||
w->enabled_widgets = (1 << WIDX_CLOSE) | (1<<WIDX_CANCEL) | (1<<WIDX_OKAY);
|
||||
|
@ -118,7 +122,7 @@ void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id t
|
|||
window_text_input_widgets[WIDX_TITLE].image = title;
|
||||
|
||||
// Clear the text input buffer
|
||||
memset(text_input, 0, MAX_TEXTINPUT);
|
||||
memset(text_input, 0, maxLength);
|
||||
|
||||
// Enter in the the text input buffer any existing
|
||||
// text.
|
||||
|
@ -133,7 +137,7 @@ void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id t
|
|||
calling_number = call_w->number;
|
||||
calling_widget = call_widget;
|
||||
|
||||
osinterface_start_text_input(text_input, MAX_TEXTINPUT);
|
||||
osinterface_start_text_input(text_input, maxLength);
|
||||
|
||||
window_init_scroll_widgets(w);
|
||||
w->colours[0] = call_w->colours[0];
|
||||
|
@ -195,7 +199,7 @@ static void window_text_input_paint(){
|
|||
gfx_draw_string(dpi, text_input, w->colours[1], w->x + 12, y);
|
||||
|
||||
// Make a copy of the string for measuring the width.
|
||||
char temp_string[32] = { 0 };
|
||||
char temp_string[512] = { 0 };
|
||||
memcpy(temp_string, text_input, gTextInputCursorPosition);
|
||||
|
||||
int x = w->x + 13 + gfx_get_string_width(temp_string);
|
||||
|
|
|
@ -41,7 +41,8 @@ enum {
|
|||
PARK_FLAGS_PARK_FREE_ENTRY = (1 << 13),
|
||||
PARK_FLAGS_DIFFICULT_PARK_RATING = (1 << 14),
|
||||
PARK_FLAGS_NO_MONEY_SCENARIO = (1 << 17), // equivalent to PARK_FLAGS_NO_MONEY, but used in scenario editor
|
||||
PARK_FLAGS_18 = (1 << 18)
|
||||
PARK_FLAGS_18 = (1 << 18),
|
||||
PARK_FLAGS_SIX_FLAGS = (1 << 19)
|
||||
};
|
||||
|
||||
int park_is_open();
|
||||
|
|
Loading…
Reference in New Issue