mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-19 04:26:52 -04:00
Fix NewMap event not being raised for initial map generated in singleplayer
This commit is contained in:
parent
9b3df93c8e
commit
c4ae04b777
@ -463,7 +463,7 @@ static void InputHandler_KeyDown(void* obj, int key, bool was) {
|
|||||||
Game_ScreenshotRequested = true; return;
|
Game_ScreenshotRequested = true; return;
|
||||||
} else if (key == KEY_ESCAPE && active->Closable) {
|
} else if (key == KEY_ESCAPE && active->Closable) {
|
||||||
Gui_Close(active);
|
Gui_Close(active);
|
||||||
} else if (Elem_HandlesKeyDown(active, key, was)) {
|
} else if (Elem_HandlesKeyDown(active, key, was)) {
|
||||||
return;
|
return;
|
||||||
} else if ((key == KEY_ESCAPE || key == KEY_PAUSE) && !active->HandlesAllInput) {
|
} else if ((key == KEY_ESCAPE || key == KEY_PAUSE) && !active->HandlesAllInput) {
|
||||||
Gui_FreeActive();
|
Gui_FreeActive();
|
||||||
|
23
src/Menus.c
23
src/Menus.c
@ -565,10 +565,7 @@ struct ListScreen* ListScreen_MakeInstance(void) {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*--------------------------------------------------------MenuScreen-------------------------------------------------------*
|
*--------------------------------------------------------MenuScreen-------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static bool MenuScreen_KeyDown(void* screen, Key key, bool was) {
|
static bool MenuScreen_KeyDown(void* screen, Key key, bool was) { return key < KEY_F1 || key > KEY_F35; }
|
||||||
if (key == KEY_ESCAPE) { Gui_Close(screen); }
|
|
||||||
return key < KEY_F1 || key > KEY_F35;
|
|
||||||
}
|
|
||||||
static bool MenuScreen_MouseScroll(void* screen, float delta) { return true; }
|
static bool MenuScreen_MouseScroll(void* screen, float delta) { return true; }
|
||||||
|
|
||||||
static void MenuScreen_Init(void* screen) {
|
static void MenuScreen_Init(void* screen) {
|
||||||
@ -684,6 +681,7 @@ struct Screen* PauseScreen_MakeInstance(void) {
|
|||||||
struct PauseScreen* s = &PauseScreen_Instance;
|
struct PauseScreen* s = &PauseScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -775,6 +773,7 @@ struct Screen* OptionsGroupScreen_MakeInstance(void) {
|
|||||||
struct OptionsGroupScreen* s = &OptionsGroupScreen_Instance;
|
struct OptionsGroupScreen* s = &OptionsGroupScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -988,6 +987,7 @@ struct Screen* EditHotkeyScreen_MakeInstance(struct HotkeyData original) {
|
|||||||
struct EditHotkeyScreen* s = &EditHotkeyScreen_Instance;
|
struct EditHotkeyScreen* s = &EditHotkeyScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -1027,9 +1027,7 @@ CC_NOINLINE static int GenLevelScreen_GetSeedInt(struct GenLevelScreen* s, int i
|
|||||||
|
|
||||||
static void GenLevelScreen_Begin(int width, int height, int length) {
|
static void GenLevelScreen_Begin(int width, int height, int length) {
|
||||||
World_Reset();
|
World_Reset();
|
||||||
Event_RaiseVoid(&WorldEvents.NewMap);
|
|
||||||
World_SetDimensions(width, height, length);
|
World_SetDimensions(width, height, length);
|
||||||
|
|
||||||
Gui_FreeActive();
|
Gui_FreeActive();
|
||||||
Gui_SetActive(GeneratingScreen_MakeInstance());
|
Gui_SetActive(GeneratingScreen_MakeInstance());
|
||||||
}
|
}
|
||||||
@ -1157,6 +1155,7 @@ struct Screen* GenLevelScreen_MakeInstance(void) {
|
|||||||
struct GenLevelScreen* s = &GenLevelScreen_Instance;
|
struct GenLevelScreen* s = &GenLevelScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -1207,6 +1206,7 @@ struct Screen* ClassicGenScreen_MakeInstance(void) {
|
|||||||
struct ClassicGenScreen* s = &ClassicGenScreen_Instance;
|
struct ClassicGenScreen* s = &ClassicGenScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -1373,6 +1373,7 @@ struct Screen* SaveLevelScreen_MakeInstance(void) {
|
|||||||
struct SaveLevelScreen* s = &SaveLevelScreen_Instance;
|
struct SaveLevelScreen* s = &SaveLevelScreen_Instance;
|
||||||
|
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = Array_Elems(widgets);
|
s->WidgetsCount = Array_Elems(widgets);
|
||||||
|
|
||||||
@ -1622,7 +1623,8 @@ static void KeyBindingsScreen_OnBindingClick(void* screen, void* widget) {
|
|||||||
cur = (struct ButtonWidget*)s->Widgets[s->CurI];
|
cur = (struct ButtonWidget*)s->Widgets[s->CurI];
|
||||||
ButtonWidget_Set(cur, &text, &s->TitleFont);
|
ButtonWidget_Set(cur, &text, &s->TitleFont);
|
||||||
}
|
}
|
||||||
s->CurI = Menu_Index(s, btn);
|
s->CurI = Menu_Index(s, btn);
|
||||||
|
s->Closable = false;
|
||||||
|
|
||||||
text.length = 0;
|
text.length = 0;
|
||||||
String_AppendConst(&text, "> ");
|
String_AppendConst(&text, "> ");
|
||||||
@ -1691,7 +1693,8 @@ static bool KeyBindingsScreen_KeyDown(void* screen, Key key, bool was) {
|
|||||||
|
|
||||||
cur = (struct ButtonWidget*)s->Widgets[s->CurI];
|
cur = (struct ButtonWidget*)s->Widgets[s->CurI];
|
||||||
ButtonWidget_Set(cur, &text, &s->TitleFont);
|
ButtonWidget_Set(cur, &text, &s->TitleFont);
|
||||||
s->CurI = -1;
|
s->CurI = -1;
|
||||||
|
s->Closable = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1703,7 +1706,7 @@ static bool KeyBindingsScreen_MouseDown(void* screen, int x, int y, MouseButton
|
|||||||
i = Menu_DoMouseDown(s, x, y, btn);
|
i = Menu_DoMouseDown(s, x, y, btn);
|
||||||
if (i == -1) return false;
|
if (i == -1) return false;
|
||||||
|
|
||||||
/* Reset a key binding */
|
/* Reset a key binding by right clicking */
|
||||||
if ((s->CurI == -1 || s->CurI == i) && i < s->BindsCount) {
|
if ((s->CurI == -1 || s->CurI == i) && i < s->BindsCount) {
|
||||||
s->CurI = i;
|
s->CurI = i;
|
||||||
Elem_HandlesKeyDown(s, KeyBind_Defaults[s->Binds[i]], false);
|
Elem_HandlesKeyDown(s, KeyBind_Defaults[s->Binds[i]], false);
|
||||||
@ -1720,6 +1723,7 @@ static struct ScreenVTABLE KeyBindingsScreen_VTABLE = {
|
|||||||
static struct KeyBindingsScreen* KeyBindingsScreen_Make(int bindsCount, uint8_t* binds, const char** descs, struct ButtonWidget* buttons, struct Widget** widgets, Event_Void_Callback contextRecreated) {
|
static struct KeyBindingsScreen* KeyBindingsScreen_Make(int bindsCount, uint8_t* binds, const char** descs, struct ButtonWidget* buttons, struct Widget** widgets, Event_Void_Callback contextRecreated) {
|
||||||
struct KeyBindingsScreen* s = &KeyBindingsScreen_Instance;
|
struct KeyBindingsScreen* s = &KeyBindingsScreen_Instance;
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = bindsCount + 4;
|
s->WidgetsCount = bindsCount + 4;
|
||||||
|
|
||||||
@ -2154,6 +2158,7 @@ struct Screen* MenuOptionsScreen_MakeInstance(struct Widget** widgets, int count
|
|||||||
struct MenuInputValidator* validators, const char** defaultValues, const char** descriptions, int descsCount) {
|
struct MenuInputValidator* validators, const char** defaultValues, const char** descriptions, int descsCount) {
|
||||||
struct MenuOptionsScreen* s = &MenuOptionsScreen_Instance;
|
struct MenuOptionsScreen* s = &MenuOptionsScreen_Instance;
|
||||||
s->HandlesAllInput = true;
|
s->HandlesAllInput = true;
|
||||||
|
s->Closable = true;
|
||||||
s->Widgets = widgets;
|
s->Widgets = widgets;
|
||||||
s->WidgetsCount = count;
|
s->WidgetsCount = count;
|
||||||
|
|
||||||
|
@ -631,6 +631,7 @@ struct Screen* LoadingScreen_UNSAFE_RawPointer = (struct Screen*)&LoadingScreen_
|
|||||||
static void GeneratingScreen_Init(void* screen) {
|
static void GeneratingScreen_Init(void* screen) {
|
||||||
Gen_Done = false;
|
Gen_Done = false;
|
||||||
LoadingScreen_Init(screen);
|
LoadingScreen_Init(screen);
|
||||||
|
Event_RaiseVoid(&WorldEvents.NewMap);
|
||||||
|
|
||||||
if (Gen_Vanilla) {
|
if (Gen_Vanilla) {
|
||||||
Thread_Start(&NotchyGen_Generate, true);
|
Thread_Start(&NotchyGen_Generate, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user