#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)(); 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; };