mirror of https://github.com/PrimeDecomp/prime.git
parent
abef49951c
commit
8dc5aee508
|
@ -8,7 +8,9 @@ public:
|
||||||
CFrontEndUI();
|
CFrontEndUI();
|
||||||
|
|
||||||
EMessageReturn OnMessage(const CArchitectureMessage& message, CArchitectureQueue& queue);
|
EMessageReturn OnMessage(const CArchitectureMessage& message, CArchitectureQueue& queue);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
uchar pad[0xe4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CFRONTENDUI
|
#endif // _CFRONTENDUI
|
||||||
|
|
|
@ -30,4 +30,16 @@ private:
|
||||||
rstl::string x4_name;
|
rstl::string x4_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define kFrontEndUIMsgPriority 12
|
||||||
|
#define kFrontEndUIDrawPriority 11
|
||||||
|
#define kMFGameMsgPriority 10
|
||||||
|
#define kMFGameDrawPriority 1000
|
||||||
|
|
||||||
|
// namespace IOWinPriorities {
|
||||||
|
// static int kFrontEndUIMsgPriority = 12;
|
||||||
|
// static int kFrontEndUIDrawPriority = 11;
|
||||||
|
// static int kMFGameMsgPriority = 10;
|
||||||
|
// static int kMFGameDrawPriority = 1000;
|
||||||
|
// } // namespace IOWinPriorities
|
||||||
|
|
||||||
#endif // _CIOWIN
|
#endif // _CIOWIN
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
#include "rstl/reserved_vector.hpp"
|
#include "rstl/reserved_vector.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/Alloc/CMemorySys.hpp"
|
||||||
#include "Kyoto/Basics/COsContext.hpp"
|
#include "Kyoto/Basics/COsContext.hpp"
|
||||||
#include "Kyoto/Basics/CStopwatch.hpp"
|
#include "Kyoto/Basics/CStopwatch.hpp"
|
||||||
#include "Kyoto/Alloc/CMemorySys.hpp"
|
|
||||||
#include "Kyoto/Streams/CInputStream.hpp"
|
#include "Kyoto/Streams/CInputStream.hpp"
|
||||||
#include "Kyoto/TReservedAverage.hpp"
|
#include "Kyoto/TReservedAverage.hpp"
|
||||||
#include "MetroidPrime/CGameArchitectureSupport.hpp"
|
#include "MetroidPrime/CGameArchitectureSupport.hpp"
|
||||||
|
@ -87,9 +87,7 @@ public:
|
||||||
x160_26_screenFading = v;
|
x160_26_screenFading = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetX30(bool v) {
|
void SetX30(bool v) { x160_30_ = v; }
|
||||||
x160_30_ = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void EnsureWorldPaksReady();
|
static void EnsureWorldPaksReady();
|
||||||
static void EnsureWorldPakReady(CAssetId id);
|
static void EnsureWorldPakReady(CAssetId id);
|
||||||
|
|
|
@ -23,7 +23,7 @@ CIOWin::EMessageReturn CMainFlow::OnMessage(const CArchitectureMessage& msg,
|
||||||
break;
|
break;
|
||||||
case kAM_SetGameState:
|
case kAM_SetGameState:
|
||||||
CArchMsgParmInt32 state = MakeMsg::GetParmNewGameflowState(msg);
|
CArchMsgParmInt32 state = MakeMsg::GetParmNewGameflowState(msg);
|
||||||
SetGameState((EClientFlowStates)state.GetInt32(), queue);
|
SetGameState(static_cast< EClientFlowStates >(state.GetInt32()), queue);
|
||||||
return CIOWin::kMR_Exit;
|
return CIOWin::kMR_Exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,20 +60,30 @@ void CMainFlow::AdvanceGameState(CArchitectureQueue& queue) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool IsCreditsMode(CMain::ERestartMode m) {
|
||||||
|
return m >= CMain::kRM_WinBad && m <= CMain::kRM_LoseGame;
|
||||||
|
}
|
||||||
|
|
||||||
void CMainFlow::SetGameState(EClientFlowStates state, CArchitectureQueue& queue) {
|
void CMainFlow::SetGameState(EClientFlowStates state, CArchitectureQueue& queue) {
|
||||||
x14_gameState = state;
|
x14_gameState = state;
|
||||||
|
|
||||||
switch (x14_gameState) {
|
switch (x14_gameState) {
|
||||||
case kCFS_GameExit: {
|
case kCFS_GameExit: {
|
||||||
switch (gpMain->GetRestartMode()) {
|
CMain::ERestartMode m = gpMain->GetRestartMode();
|
||||||
case CMain::kRM_WinBad:
|
if (IsCreditsMode(m)) {
|
||||||
case CMain::kRM_WinGood:
|
switch (m) {
|
||||||
case CMain::kRM_WinBest:
|
case CMain::kRM_WinBad:
|
||||||
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, 12, 11, new CCredits()));
|
case CMain::kRM_WinGood:
|
||||||
break;
|
case CMain::kRM_WinBest:
|
||||||
case CMain::kRM_LoseGame:
|
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, kFrontEndUIMsgPriority,
|
||||||
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, 12, 11,
|
kFrontEndUIDrawPriority, new CCredits()));
|
||||||
new CPlayMovie(CPlayMovie::kWM_LoseGame)));
|
break;
|
||||||
|
default:
|
||||||
|
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, kFrontEndUIMsgPriority,
|
||||||
|
kFrontEndUIDrawPriority,
|
||||||
|
new CPlayMovie(CPlayMovie::kWM_LoseGame)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -85,23 +95,29 @@ void CMainFlow::SetGameState(EClientFlowStates state, CArchitectureQueue& queue)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, 12, 11, new CPreFrontEnd()));
|
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, kFrontEndUIMsgPriority,
|
||||||
|
kFrontEndUIDrawPriority, new CPreFrontEnd()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kCFS_FrontEnd:
|
case kCFS_FrontEnd:
|
||||||
if (gpMain->GetRestartMode() == CMain::kRM_None) {
|
if (gpMain->GetRestartMode() == CMain::kRM_None) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, 12, 11,
|
CIOWin* ioWin;
|
||||||
gpMain->GetRestartMode() == CMain::kRM_StateSetter
|
if (gpMain->GetRestartMode() == CMain::kRM_StateSetter) {
|
||||||
? (CIOWin*)new CStateSetterFlow()
|
ioWin = new CStateSetterFlow();
|
||||||
: (CIOWin*)new CFrontEndUI()));
|
} else {
|
||||||
|
ioWin = new CFrontEndUI();
|
||||||
|
}
|
||||||
|
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, kFrontEndUIMsgPriority,
|
||||||
|
kFrontEndUIDrawPriority, ioWin));
|
||||||
break;
|
break;
|
||||||
case kCFS_Game:
|
case kCFS_Game:
|
||||||
gpGameState->GameOptions().EnsureOptions();
|
gpGameState->GameOptions().EnsureOptions();
|
||||||
CMFGameLoader* gameFlow = new CMFGameLoader();
|
CIOWin* gameFlow = new CMFGameLoader();
|
||||||
gpMain->SetRestartMode(CMain::kRM_Default);
|
gpMain->SetRestartMode(CMain::kRM_Default);
|
||||||
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, 10, 1000, gameFlow));
|
queue.Push(MakeMsg::CreateCreateIOWin(kAMT_IOWinManager, kMFGameMsgPriority,
|
||||||
|
kMFGameDrawPriority, gameFlow));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue