//===========================================================================// // File: l4app.hpp // // Project: MUNGA Brick: L4Application // // Contents: Interface specification for L4Application // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 01/21/95 ECH Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1994, Virtual World Entertainment, Inc. // // All Rights reserved worldwide. // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(L4APP_HPP) # define L4APP_HPP # if !defined(APP_HPP) # include # endif class DPLRenderer; class L4AudioRenderer; class L4GaugeRenderer; class L4NetworkManager; class LBE4ControlsManager; class L4IcomManager; //########################################################################## //######################## L4Application ############################# //########################################################################## class L4Application: public Application { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction, Destruction, and Testing // public: L4Application( ResourceFile *resource_file, ApplicationID application_ID, ClassID class_ID=L4ApplicationClassID, SharedData &shared_data=DefaultData ); ~L4Application(); Logical TestInstance() const; static Derivation ClassDerivations; static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Command line parsing // public: typedef Logical (*TokenParser)(int *argument, int argc, char *argv[]); static Logical ParseToken( int *argument, int argc, char *argv[] ); static Logical ParseCommandLine( int argc, char *argv[], TokenParser parser = &L4Application::ParseToken ); static int GetMissionReviewMode() {return missionReviewMode;} static Logical GetSeeSolids() {return seeSolids;} static unsigned long GetNetworkCommonFlatAddress() {return networkCommonFlatAddress;} static CString GetEggNotationFileName() {return eggNotationFileName;} static CString GetRIOPlaybackFileName() {return rioPlaybackFileName;} static CString GetRIORecordingFileName() {return rioRecordingFileName;} protected: static Logical seeSolids; static CString eggNotationFileName; static unsigned long networkCommonFlatAddress; static int missionReviewMode; static CString rioPlaybackFileName; static CString rioRecordingFileName; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Execution control // public: void Initialize(); void InitializeTillConsole(); Entity* MakeAndLinkViewpointEntity(Entity__MakeMessage *message); Entity* MakeViewpointEntity(Entity__MakeMessage *message); void Terminate(); void TeslaCoil(Logical lights_on); void PilotIllumination(Logical lights_on); // includes 'Tesla coil' //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Module accesors // public: DPLRenderer* GetVideoRenderer(); L4AudioRenderer* GetAudioRenderer(); L4GaugeRenderer* GetGaugeRenderer(); L4NetworkManager* GetNetworkManager() {return (L4NetworkManager*)Application::GetNetworkManager();} LBE4ControlsManager* GetControlsManager() {return (LBE4ControlsManager*)Application::GetControlsManager();} L4IcomManager* GetIntercomManager() {return (L4IcomManager*)Application::GetIntercomManager();} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Public data // public: char *divisionParameters; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Module Creation // protected: ModeManager* MakeModeManager(); ControlsManager* MakeControlsManager(); IcomManager* MakeIntercomManager(); NetworkManager* MakeNetworkManager(); VideoRenderer* MakeVideoRenderer(); AudioRenderer* MakeAudioRenderer(); GaugeRenderer* MakeGaugeRenderer(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Message Support // public: enum { LightsOutMessageID = Application::NextMessageID, NextMessageID }; static const HandlerEntry MessageHandlerEntries[]; static MessageHandlerSet MessageHandlers; void LightsOutMessageHandler(Receiver::Message *message); void RunMissionMessageHandler(RunMissionMessage *message); void StopMissionMessageHandler(StopMissionMessage *message); void // HACK - the 'int' is actually 'ControlsKey' KeyCommandMessageHandler(ReceiverDataMessageOf *message); }; extern L4Application * &l4_application; //~~~~~~~~~~~~~~~~~~~~~ L4Application inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inline DPLRenderer* L4Application::GetVideoRenderer() { Check(this); return (DPLRenderer*)videoRenderer; } inline L4AudioRenderer* L4Application::GetAudioRenderer() { Check(this); return (L4AudioRenderer*)audioRenderer; } inline L4GaugeRenderer* L4Application::GetGaugeRenderer() { Check(this); return (L4GaugeRenderer*)gaugeRenderer; } #endif