mirror of https://github.com/OpenRCT2/OpenRCT2.git
implement enter name on scenario complete, closes #605
This commit is contained in:
parent
88b425f6a7
commit
31ebf03c30
|
@ -946,6 +946,8 @@ enum {
|
|||
STR_FINACNES_PARK_VALUE = 2787,
|
||||
|
||||
STR_ENTER_NAME_INTO_SCENARIO_CHART = 2790,
|
||||
STR_ENTER_NAME = 2791,
|
||||
STR_PLEASE_ENTER_YOUR_NAME_FOR_THE_SCENARIO_CHART = 2792,
|
||||
|
||||
STR_COMPLETED_BY_WITH_COMPANY_VALUE = 2794,
|
||||
STR_SORT = 2795,
|
||||
|
|
|
@ -379,7 +379,7 @@ void scenario_success()
|
|||
if (scenario->flags & SCENARIO_FLAGS_COMPLETED && scenario->company_value < current_val)
|
||||
break; // not a new high score -> no glory
|
||||
|
||||
// bts game_flags, 1 happens here but I don't know what for
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) |= PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT;
|
||||
scenario->company_value = current_val;
|
||||
scenario->flags |= SCENARIO_FLAGS_COMPLETED;
|
||||
scenario->completed_by[0] = 0;
|
||||
|
@ -1016,3 +1016,27 @@ int scenario_save(char *path, int flags)
|
|||
RCT2_GLOBAL(0x009DEA66, uint16) = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void scenario_success_submit_name(const char *name)
|
||||
{
|
||||
int i;
|
||||
rct_scenario_basic* scenario;
|
||||
uint32 scenarioWinCompanyValue;
|
||||
|
||||
for (i = 0; i < gScenarioListCount; i++) {
|
||||
char *cur_scenario_name = RCT2_ADDRESS(0x135936C, char);
|
||||
scenario = &gScenarioList[i];
|
||||
|
||||
if (strncmp(cur_scenario_name, scenario->path, 256) == 0) {
|
||||
scenarioWinCompanyValue = RCT2_GLOBAL(0x013587C0, uint32);
|
||||
if (scenario->company_value == scenarioWinCompanyValue) {
|
||||
strncpy(scenario->completed_by, name, 64);
|
||||
strncpy((char*)0x013587D8, name, 32);
|
||||
scenario_scores_save();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) &= ~PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT;
|
||||
}
|
|
@ -413,5 +413,6 @@ void scenario_update();
|
|||
unsigned int scenario_rand();
|
||||
int scenario_prepare_for_save();
|
||||
int scenario_save(char *path, int flags);
|
||||
void scenario_success_submit_name(const char *name);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -259,6 +259,7 @@ static void window_park_stats_paint();
|
|||
static void window_park_objective_mouseup();
|
||||
static void window_park_objective_resize();
|
||||
static void window_park_objective_update(rct_window *w);
|
||||
static void window_park_objective_textinput();
|
||||
static void window_park_objective_invalidate();
|
||||
static void window_park_objective_paint();
|
||||
|
||||
|
@ -443,7 +444,7 @@ static void* window_park_objective_events[] = {
|
|||
window_park_emptysub,
|
||||
window_park_emptysub,
|
||||
window_park_emptysub,
|
||||
window_park_emptysub,
|
||||
window_park_objective_textinput,
|
||||
window_park_emptysub,
|
||||
window_park_emptysub,
|
||||
window_park_emptysub,
|
||||
|
@ -1643,7 +1644,14 @@ static void window_park_objective_mouseup()
|
|||
window_park_set_page(w, widgetIndex - WIDX_TAB_1);
|
||||
break;
|
||||
case WIDX_ENTER_NAME:
|
||||
RCT2_CALLPROC_X(0x006EE308, 2791, 2792, 0, 0, 0, 0, 0);
|
||||
window_text_input_open(
|
||||
w,
|
||||
WIDX_ENTER_NAME,
|
||||
STR_ENTER_NAME,
|
||||
STR_PLEASE_ENTER_YOUR_NAME_FOR_THE_SCENARIO_CHART,
|
||||
0,
|
||||
0
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1671,6 +1679,25 @@ static void window_park_objective_update(rct_window *w)
|
|||
widget_invalidate(w, WIDX_TAB_6);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006695CC
|
||||
*/
|
||||
static void window_park_objective_textinput()
|
||||
{
|
||||
uint8 result;
|
||||
short widgetIndex;
|
||||
rct_window *w;
|
||||
char *text;
|
||||
|
||||
window_textinput_get_registers(w, widgetIndex, result, text);
|
||||
|
||||
if (widgetIndex == WIDX_ENTER_NAME && result && text[0] != 0) {
|
||||
scenario_success_submit_name(text);
|
||||
window_invalidate(w);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006693B2
|
||||
|
@ -1688,7 +1715,7 @@ static void window_park_objective_invalidate()
|
|||
*((uint32*)0x013CE954) = RCT2_GLOBAL(0x013573D8, uint32);
|
||||
|
||||
//
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & 0x02)
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT)
|
||||
window_park_objective_widgets[WIDX_ENTER_NAME].type = WWT_DROPDOWN_BUTTON;
|
||||
else
|
||||
window_park_objective_widgets[WIDX_ENTER_NAME].type = WWT_EMPTY;
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
enum {
|
||||
PARK_FLAGS_PARK_OPEN = (1 << 0),
|
||||
PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT = (1 << 1),
|
||||
PARK_FLAGS_FORBID_LANDSCAPE_CHANGES = (1 << 2),
|
||||
PARK_FLAGS_FORBID_TREE_REMOVAL = (1 << 3),
|
||||
PARK_FLAGS_SHOW_REAL_GUEST_NAMES = (1 << 4),
|
||||
|
|
Loading…
Reference in New Issue