#pragma once #include "app.h" extern HWND ghWnd; // per-frame observer called once per RunMissions frame, after the // foreground pass (the single-player local-console marshal uses this) extern void (*gPerFrameHook)(); // True when an in-process console marshals the launch: suppresses the // no-console self-run in CheckLoadMessageHandler so a hosted network // race stages at WaitingForLaunch until every pod is ready. Plain // single player leaves it False and auto-runs exactly as always. extern Logical gConsoleMarshalsLaunch; // True for lobby-member races: losing the console mid-mission ends the // mission (the owner left - without a console the timer counts up // forever). Arcade -net pods leave it False and re-listen for their // console to return, exactly as always. extern Logical gConsoleLossEndsMission; class ApplicationManager : public Node { public: ApplicationManager(HINSTANCE hInstance, HWND hWnd, Scalar frame_rate); ~ApplicationManager(); void StartApplication(Application *new_app); void RunMissions(); Scalar GetFrameRate() { Check(this); return frameRate; } HINSTANCE GetHInstance() { return mHInstance; } HWND GetHWnd() { return ghWnd; } static ApplicationManager* GetCurrentManager() { return CurrentAppManager; } protected: static ApplicationManager* CurrentAppManager; Scalar frameDuration, frameRate; SChainOf runningApplications; HINSTANCE mHInstance; };