//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. ========= // // The copyright to the contents herein is the property of Charles G. Cleveland. // The contents may be used and/or copied only with the written permission of // Charles G. Cleveland, or in accordance with the terms and conditions stipulated in // the agreement/contract under which the contents have been supplied. // // Purpose: // // $Workfile: AvHScriptManager.h $ // $Date: 2002/05/23 02:33:20 $ // //------------------------------------------------------------------------------- // $Log: AvHScriptManager.h,v $ // Revision 1.1 2002/05/23 02:33:20 Flayra // - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development. // //=============================================================================== #ifndef AVH_SCRIPTMANAGER_H #define AVH_SCRIPTMANAGER_H #include "../util/nowarnings.h" #include "../util/Checksum.h" #include "../util/STLUtil.h" #ifdef USE_LUA extern "C" struct lua_State; #endif class AvHScriptInstance { public: AvHScriptInstance(string inScriptName); void AddCallback(string& inCallbackName, float inTime); bool CallbacksPending() const; void CallSimpleFunction(const string& inFunctionName); void Cleanup(); #ifdef USE_LUA lua_State* GetState(); #endif void Reset(); void Run(); void Update(float inTime); private: void Init(); void InitShared(); #ifdef AVH_SERVER void InitServer(); #else void InitClient(); #endif // This gets copied around, so make sure elements can be shallow-copied or write a copy constructor #ifdef USE_LUA lua_State* mState; #endif string mScriptName; typedef pair CallbackType; typedef vector< CallbackType > CallbackListType; CallbackListType mCallbackList; CallbackListType mCallbacksQueuedForAdd; bool mState; // fix for debugging }; class AvHScriptManager { public: static AvHScriptManager* Instance(); void Reset(); void RunScript(const string& inScriptName); void Update(float inTime); #ifdef AVH_CLIENT void ClientUpdate(float inTimePassed); void DrawNormal(); void DrawTransparent(); void DrawNoZBuffering(); bool GetClientMove(int& outButtonBits, int& outImpulse); #endif private: static AvHScriptManager* sSingleton; typedef vector AvHScriptInstanceListType; AvHScriptInstanceListType mScriptList; }; #endif