mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 09:35:23 -04:00
Fix generating screen needlessly constantly redrawing the current state text
This commit is contained in:
parent
2c985dac7d
commit
12c0810c21
@ -1712,6 +1712,11 @@ void LoadingScreen_Show(const String* title, const String* message) {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*--------------------------------------------------GeneratingMapScreen----------------------------------------------------*
|
*--------------------------------------------------GeneratingMapScreen----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
|
static void GeneratingScreen_AtlasChanged(void* obj) {
|
||||||
|
struct LoadingScreen* s = (struct LoadingScreen*)obj;
|
||||||
|
s->dirty = true; /* Dirt texture may have changed */
|
||||||
|
}
|
||||||
|
|
||||||
static void GeneratingScreen_Init(void* screen) {
|
static void GeneratingScreen_Init(void* screen) {
|
||||||
Gen_Done = false;
|
Gen_Done = false;
|
||||||
LoadingScreen_Init(screen);
|
LoadingScreen_Init(screen);
|
||||||
@ -1725,6 +1730,11 @@ static void GeneratingScreen_Init(void* screen) {
|
|||||||
} else {
|
} else {
|
||||||
Thread_Start(FlatgrassGen_Generate, true);
|
Thread_Start(FlatgrassGen_Generate, true);
|
||||||
}
|
}
|
||||||
|
Event_Register_(&TextureEvents.AtlasChanged, screen, GeneratingScreen_AtlasChanged);
|
||||||
|
}
|
||||||
|
static void GeneratingScreen_Free(void* screen) {
|
||||||
|
LoadingScreen_Free(screen);
|
||||||
|
Event_Unregister_(&TextureEvents.AtlasChanged, screen, GeneratingScreen_AtlasChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GeneratingScreen_EndGeneration(void) {
|
static void GeneratingScreen_EndGeneration(void) {
|
||||||
@ -1744,24 +1754,26 @@ static void GeneratingScreen_EndGeneration(void) {
|
|||||||
LocalPlayer_MoveToSpawn();
|
LocalPlayer_MoveToSpawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GeneratingScreen_Render(void* screen, double delta) {
|
static void GeneratingScreen_Update(void* screen, double delta) {
|
||||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||||
const volatile char* state;
|
const char* state = (const char*)Gen_CurrentState;
|
||||||
|
|
||||||
LoadingScreen_Render(s, delta);
|
|
||||||
if (Gen_Done) { GeneratingScreen_EndGeneration(); return; }
|
|
||||||
|
|
||||||
state = Gen_CurrentState;
|
|
||||||
s->progress = Gen_CurrentProgress;
|
|
||||||
if (state == s->lastState) return;
|
if (state == s->lastState) return;
|
||||||
|
s->lastState = state;
|
||||||
|
|
||||||
s->messageStr.length = 0;
|
s->messageStr.length = 0;
|
||||||
String_AppendConst(&s->messageStr, (const char*)state);
|
String_AppendConst(&s->messageStr, state);
|
||||||
LoadingScreen_SetMessage(s);
|
LoadingScreen_SetMessage(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GeneratingScreen_Render(void* screen, double delta) {
|
||||||
|
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||||
|
s->progress = Gen_CurrentProgress;
|
||||||
|
LoadingScreen_Render(s, delta);
|
||||||
|
if (Gen_Done) GeneratingScreen_EndGeneration();
|
||||||
|
}
|
||||||
|
|
||||||
static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
|
static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
|
||||||
GeneratingScreen_Init, Screen_NullUpdate, LoadingScreen_Free,
|
GeneratingScreen_Init, GeneratingScreen_Update, GeneratingScreen_Free,
|
||||||
GeneratingScreen_Render, LoadingScreen_BuildMesh,
|
GeneratingScreen_Render, LoadingScreen_BuildMesh,
|
||||||
Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||||
Screen_TPointer, Screen_TPointer, Screen_FPointer, Screen_TMouseScroll,
|
Screen_TPointer, Screen_TPointer, Screen_FPointer, Screen_TMouseScroll,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user