1 /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2 /* If you are missing that file, acquire a complete release at teeworlds.com. */
3 #ifndef ENGINE_SERVER_H
4 #define ENGINE_SERVER_H
8 class IServer
: public IInterface
10 MACRO_INTERFACE("server", 0)
12 int m_CurrentGameTick
;
17 Structure: CClientInfo
25 int Tick() const { return m_CurrentGameTick
; }
26 int TickSpeed() const { return m_TickSpeed
; }
28 virtual const char *ClientName(int ClientID
) = 0;
29 virtual const char *ClientClan(int ClientID
) = 0;
30 virtual int ClientCountry(int ClientID
) = 0;
31 virtual bool ClientIngame(int ClientID
) = 0;
32 virtual int GetClientInfo(int ClientID
, CClientInfo
*pInfo
) = 0;
33 virtual void GetClientAddr(int ClientID
, char *pAddrStr
, int Size
) = 0;
35 virtual int SendMsg(CMsgPacker
*pMsg
, int Flags
, int ClientID
) = 0;
38 int SendPackMsg(T
*pMsg
, int Flags
, int ClientID
)
40 CMsgPacker
Packer(pMsg
->MsgID());
41 if(pMsg
->Pack(&Packer
))
43 return SendMsg(&Packer
, Flags
, ClientID
);
46 virtual void SetClientName(int ClientID
, char const *pName
) = 0;
47 virtual void SetClientClan(int ClientID
, char const *pClan
) = 0;
48 virtual void SetClientCountry(int ClientID
, int Country
) = 0;
49 virtual void SetClientScore(int ClientID
, int Score
) = 0;
51 virtual int SnapNewID() = 0;
52 virtual void SnapFreeID(int ID
) = 0;
53 virtual void *SnapNewItem(int Type
, int ID
, int Size
) = 0;
55 virtual void SnapSetStaticsize(int ItemType
, int Size
) = 0;
57 virtual bool IsAuthed(int ClientID
) = 0;
58 virtual void Kick(int ClientID
, const char *pReason
) = 0;
61 class IGameServer
: public IInterface
63 MACRO_INTERFACE("gameserver", 0)
66 virtual void OnInit() = 0;
67 virtual void OnConsoleInit() = 0;
68 virtual void OnShutdown() = 0;
70 virtual void OnTick() = 0;
71 virtual void OnPreSnap() = 0;
72 virtual void OnSnap(int ClientID
) = 0;
73 virtual void OnPostSnap() = 0;
75 virtual void OnMessage(int MsgID
, CUnpacker
*pUnpacker
, int ClientID
) = 0;
77 virtual void OnClientConnected(int ClientID
) = 0;
78 virtual void OnClientEnter(int ClientID
) = 0;
79 virtual void OnClientDrop(int ClientID
, const char *pReason
) = 0;
80 virtual void OnClientDirectInput(int ClientID
, void *pInput
) = 0;
81 virtual void OnClientPredictedInput(int ClientID
, void *pInput
) = 0;
83 virtual bool IsClientReady(int ClientID
) = 0;
84 virtual bool IsClientPlayer(int ClientID
) = 0;
86 virtual const char *GameType() = 0;
87 virtual const char *Version() = 0;
88 virtual const char *NetVersion() = 0;
91 extern IGameServer
*CreateGameServer();