D:/Zythum/DinoKod/Game/ServerGameManager.h

00001 #ifndef __SERVERGAMEMANAGER_H__
00002 #define __SERVERGAMEMANAGER_H__
00003 
00004 #include "Game/GameDll.h"
00005 #include "Game/GameManager.h"
00006 #include "Game/ServerPlayer.h"
00007 #include "Game/ServerWorld.h"
00008 #include "Game/GameServerState.h"
00009 
00010 class KClient;
00011 
00012 //---------------------------------------------------------------------------------------------------------------------
00013 class GAME_API KServerGameManager : public KGameManager
00014 {
00015 private:
00016         KList<KClient*>*                m_pClientList;
00017 
00018 protected:
00019         u32                                             m_NextObjectHandle;
00020         u32                                             m_NextPlayerHandle;
00021         KTIME                                   m_LastFrameTime;
00022         u32                                             m_FrameRate;
00023         u32                                             m_Frame;
00024         KGAMESERVERSTATE                m_State;
00025 
00026         static void                             CommandFakeMan( KStr Argument, void* pContext );
00027         static void                             CommandFrameRate( KStr Argument, void* pContext );
00028         virtual KPlayer*                CreatePlayer()  { return new KServerPlayer();           }
00029         virtual KServerWorld*   AllocWorld()    { return new KServerWorld( this );      }
00030         virtual void                    OnGetWorld( KServerPlayer* pPlayer );
00031 
00032 public:
00033         KServerGameManager( KUDPSocket* pSocket, KList<KClient*>* pClientList, KVERSION GameVersion );
00034         virtual ~KServerGameManager();
00035 
00036     bool                                        Send( KClient* pClient, KNetMsg& Msg );
00037     bool                                        SendAll( KNetMsg& Msg );
00038         virtual bool                    Init();
00039         virtual bool                    End();
00040         virtual bool                    Manage();
00041         virtual bool                    MoveFrame();
00042                                                         
00043         virtual void                    OnMessage( KClient* pClient, KGAMEMSGTYPE MsgType, KNetMsg& Msg );
00044         virtual void                    OnConnect( KClient* pClient );
00045         virtual void                    OnDisconnect( KClient* pClient );
00046         virtual void                    DoWelcome( KClient* pClient );
00047         virtual void                    DoGoodBye( KClient* pClient );
00048         virtual bool                    StartGame( KGameInfos* pGameInfos );
00049         virtual bool                    EndGame();
00050 
00051         bool                                    NotifyChat( KClient* pClient, char* pText );
00052                                                         
00053         KServerWorld*                   GetpServerWorld()       { return (KServerWorld*)m_pWorld;       }
00054 
00055         bool                                    OnGetGameInfos( KClient* pClient );
00056         bool                                    OnSetClientState( KClient* pClient, KNetMsg& Msg );
00057 
00058         // Player
00059         bool                                    OnCreatePlayer( KClient* pClient, KStr& sName );
00060         bool                                    OnDeletePlayer( KClient* pClient );
00061         void                                    OnChangeName( KServerPlayer* pPlayer, KStr& sName );
00062         bool                                    NotifyCreatePlayer( KClient* pClient, KServerPlayer* pPlayer );
00063         bool                                    NotifyCreateAllPlayers( KClient* pClient );
00064         bool                                    NotifyPlayer( KClient* pClient, KServerPlayer* pPlayer );
00065         bool                                    NotifyAllPlayers( KClient* pClient );
00066 
00067         // Object
00068         K3DObject*                              CreateAndNotityObject( KHANDLE hPlayer, KGAMEOBJECTTYPE Type, KVector& Pos, KVector& Rot );
00069         bool                                    SetPosAndNotityObject( KHANDLE Handle, KVector& Pos, KVector& Rot );
00070         bool                                    CreateAndNotityAllObjects( KServerPlayer* pPlayer );
00071         bool                                    NotityObject( KServerPlayer* pPlayer, K3DObject* pObject );
00072         bool                                    NotityObjectAllPlayers( K3DObject* pObject );
00073 
00074         virtual void                    NotifyFrame();
00075 
00076         KServerPlayer*                  GetpFirstServerPlayer()                                                 { return (KServerPlayer*)GetpFirstPlayer();                     }
00077         KServerPlayer*                  GetpNextServerPlayer( KServerPlayer* pPlayer )  { return (KServerPlayer*)GetpNextPlayer( pPlayer );     }
00078 
00079         KServerPlayer*                  GetpPlayerByClient( KClient* pClient );
00080         bool                                    SendChatText( KClient* pClient, char* pText );
00081 
00082         KList<KClient*>*                GetClientList()                                                                 { return m_pClientList;                                                                                         }
00083 };
00084 
00085 #endif  __SERVERGAMEMANAGER_H__

Generated on Sun Mar 25 20:02:11 2007 for Zythum Project by  doxygen 1.5.1-p1