added "Updated Turkish Translation" by Learath2
[twcon.git] / src / engine / server.h
blob28a97eccae538dfb88bf68564e5ea38f921d60da
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
5 #include "kernel.h"
6 #include "message.h"
8 class IServer : public IInterface
10 MACRO_INTERFACE("server", 0)
11 protected:
12 int m_CurrentGameTick;
13 int m_TickSpeed;
15 public:
17 Structure: CClientInfo
19 struct CClientInfo
21 const char *m_pName;
22 int m_Latency;
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;
37 template<class T>
38 int SendPackMsg(T *pMsg, int Flags, int ClientID)
40 CMsgPacker Packer(pMsg->MsgID());
41 if(pMsg->Pack(&Packer))
42 return -1;
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)
64 protected:
65 public:
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();
92 #endif