mirror of
https://github.com/pret/pokefirered.git
synced 2026-09-30 21:10:27 -05:00
dynamic time window updates
This commit is contained in:
@@ -312,16 +312,40 @@ static void DestroySafariZoneStatsWindow(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define tCounter data[0]
|
||||
|
||||
static void Task_UpdateTimeWindow(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].tCounter < 60)
|
||||
{
|
||||
gTasks[taskId].tCounter++;
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsDma3ManagerBusyWithBgCopy())
|
||||
return;
|
||||
|
||||
DrawStdWindowFrame(sTimeWindowId, FALSE);
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetCurrentHour(), STR_CONV_MODE_RIGHT_ALIGN, 3);
|
||||
ConvertIntToDecimalStringN(gStringVar2, GetCurrentMinute(), STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
StringExpandPlaceholders(gStringVar4, gText_MenuTime);
|
||||
AddTextPrinterParameterized(sTimeWindowId, FONT_NORMAL, gStringVar4, 4, 1, 0xFF, NULL);
|
||||
|
||||
StringCopy(gStringVar1, GetSeasonName(GetSeason()));
|
||||
ConvertIntToDecimalStringN(gStringVar2, GetSeasonDay(), STR_CONV_MODE_RIGHT_ALIGN, 2);
|
||||
StringExpandPlaceholders(gStringVar4, gText_MenuDay);
|
||||
AddTextPrinterParameterized(sTimeWindowId, FONT_NORMAL, gStringVar4, 4, 18, 0xFF, NULL);
|
||||
|
||||
CopyWindowToVram(sTimeWindowId, COPYWIN_GFX);
|
||||
gTasks[taskId].tCounter = 0;
|
||||
}
|
||||
|
||||
static void DrawTimeWindow(void)
|
||||
{
|
||||
if (GetSafariZoneFlag())
|
||||
{
|
||||
sTimeWindowId = AddWindow(&sTimeSafariWindowTemplate);
|
||||
}
|
||||
else
|
||||
{
|
||||
sTimeWindowId = AddWindow(&sTimeWindowTemplate);
|
||||
}
|
||||
|
||||
PutWindowTilemap(sTimeWindowId);
|
||||
DrawStdWindowFrame(sTimeWindowId, FALSE);
|
||||
@@ -336,13 +360,26 @@ static void DrawTimeWindow(void)
|
||||
AddTextPrinterParameterized(sTimeWindowId, FONT_NORMAL, gStringVar4, 4, 18, 0xFF, NULL);
|
||||
|
||||
CopyWindowToVram(sTimeWindowId, COPYWIN_GFX);
|
||||
|
||||
u8 taskId = CreateTask(Task_UpdateTimeWindow, 0);
|
||||
gTasks[taskId].tCounter = 0;
|
||||
}
|
||||
|
||||
#undef tCounter
|
||||
|
||||
static void DestroyTimeWindow(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(Task_UpdateTimeWindow);
|
||||
if (taskId != TASK_NONE)
|
||||
DestroyTask(taskId);
|
||||
|
||||
if (sTimeWindowId == WINDOW_NONE)
|
||||
return;
|
||||
|
||||
ClearStdWindowAndFrameToTransparent(sTimeWindowId, FALSE);
|
||||
CopyWindowToVram(sTimeWindowId, COPYWIN_GFX);
|
||||
CopyWindowToVram(sTimeWindowId, COPYWIN_FULL);
|
||||
RemoveWindow(sTimeWindowId);
|
||||
sTimeWindowId = WINDOW_NONE;
|
||||
}
|
||||
|
||||
static s8 PrintStartMenuItems(s8 *cursor_p, u8 nitems)
|
||||
@@ -507,6 +544,7 @@ static bool8 StartCB_HandleInput(void)
|
||||
if (JOY_NEW(B_BUTTON | START_BUTTON))
|
||||
{
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
if (DEBUG_OVERWORLD_MENU != TRUE)
|
||||
DestroyHelpMessageWindow_();
|
||||
CloseStartMenu();
|
||||
@@ -541,6 +579,7 @@ static bool8 StartMenuPokedexCallback(void)
|
||||
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
|
||||
PlayRainStoppingSoundEffect();
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_OpenPokedexFromStartMenu);
|
||||
return TRUE;
|
||||
@@ -554,6 +593,7 @@ static bool8 StartMenuPokemonCallback(void)
|
||||
{
|
||||
PlayRainStoppingSoundEffect();
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_PartyMenuFromStartMenu);
|
||||
return TRUE;
|
||||
@@ -567,6 +607,7 @@ static bool8 StartMenuBagCallback(void)
|
||||
{
|
||||
PlayRainStoppingSoundEffect();
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_BagMenuFromStartMenu);
|
||||
return TRUE;
|
||||
@@ -580,6 +621,7 @@ static bool8 StartMenuPlayerCallback(void)
|
||||
{
|
||||
PlayRainStoppingSoundEffect();
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu);
|
||||
return TRUE;
|
||||
@@ -599,6 +641,7 @@ static bool8 StartMenuOptionCallback(void)
|
||||
{
|
||||
PlayRainStoppingSoundEffect();
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_OptionsMenuFromStartMenu);
|
||||
gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu;
|
||||
@@ -610,6 +653,7 @@ static bool8 StartMenuOptionCallback(void)
|
||||
static bool8 StartMenuExitCallback(void)
|
||||
{
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
if (DEBUG_OVERWORLD_MENU != TRUE)
|
||||
DestroyHelpMessageWindow_();
|
||||
CloseStartMenu();
|
||||
@@ -619,6 +663,7 @@ static bool8 StartMenuExitCallback(void)
|
||||
static bool8 StartMenuDebugCallback(void)
|
||||
{
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
HideStartMenuDebug(); // Hide start menu without enabling movement
|
||||
|
||||
if (DEBUG_OVERWORLD_MENU == TRUE)
|
||||
@@ -632,6 +677,7 @@ static bool8 StartMenuDebugCallback(void)
|
||||
static bool8 StartMenuSafariZoneRetireCallback(void)
|
||||
{
|
||||
DestroySafariZoneStatsWindow();
|
||||
DestroyTimeWindow();
|
||||
if (DEBUG_OVERWORLD_MENU != TRUE)
|
||||
DestroyHelpMessageWindow_();
|
||||
CloseStartMenu();
|
||||
@@ -803,6 +849,7 @@ static u8 SaveDialogCB_PrintAskSaveText(void)
|
||||
{
|
||||
ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
|
||||
RemoveStartMenuWindow();
|
||||
DestroyTimeWindow();
|
||||
if (DEBUG_OVERWORLD_MENU != TRUE)
|
||||
DestroyHelpMessageWindow(0);
|
||||
PrintSaveStats();
|
||||
@@ -1098,7 +1145,6 @@ void CloseStartMenu(void)
|
||||
RemoveStartMenuWindow();
|
||||
ClearPlayerHeldMovementAndUnfreezeObjectEvents();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTimeWindow();
|
||||
}
|
||||
|
||||
void AppendToList(u8 *list, u8 *cursor, u8 newEntry)
|
||||
|
||||
Reference in New Issue
Block a user