From 24bda2faa0a2b621aa24f3b1e2f6c6d6d9eabd9b Mon Sep 17 00:00:00 2001 From: oy Date: Wed, 15 Feb 2012 01:39:18 +0100 Subject: [PATCH] cleaned up dependencies in game/server a bit --- src/game/server/alloc.h | 51 +++++++++++++++++++++++++ src/game/server/entities/character.cpp | 6 ++- src/game/server/entities/character.h | 10 ----- src/game/server/entities/flag.cpp | 2 + src/game/server/entities/laser.cpp | 3 +- src/game/server/entities/pickup.cpp | 5 ++- src/game/server/entities/projectile.cpp | 3 +- src/game/server/entity.cpp | 1 + src/game/server/entity.h | 45 +--------------------- src/game/server/eventhandler.cpp | 1 + src/game/server/gamecontext.cpp | 16 +++++--- src/game/server/gamecontext.h | 11 ++---- src/game/server/gamecontroller.cpp | 4 +- src/game/server/gamecontroller.h | 1 + src/game/server/gamemodes/ctf.cpp | 2 +- src/game/server/gamemodes/tdm.cpp | 1 + src/game/server/gameworld.cpp | 5 ++- src/game/server/player.cpp | 6 ++- src/game/server/player.h | 12 ++++-- 19 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 src/game/server/alloc.h diff --git a/src/game/server/alloc.h b/src/game/server/alloc.h new file mode 100644 index 000000000..fbaa25b9e --- /dev/null +++ b/src/game/server/alloc.h @@ -0,0 +1,51 @@ +/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ +/* If you are missing that file, acquire a complete release at teeworlds.com. */ +#ifndef GAME_SERVER_ALLOC_H +#define GAME_SERVER_ALLOC_H + +#include + +#define MACRO_ALLOC_HEAP() \ + public: \ + void *operator new(size_t Size) \ + { \ + void *p = mem_alloc(Size, 1); \ + /*dbg_msg("", "++ %p %d", p, size);*/ \ + mem_zero(p, Size); \ + return p; \ + } \ + void operator delete(void *pPtr) \ + { \ + /*dbg_msg("", "-- %p", p);*/ \ + mem_free(pPtr); \ + } \ + private: + +#define MACRO_ALLOC_POOL_ID() \ + public: \ + void *operator new(size_t Size, int id); \ + void operator delete(void *p); \ + private: + +#define MACRO_ALLOC_POOL_ID_IMPL(POOLTYPE, PoolSize) \ + static char ms_PoolData##POOLTYPE[PoolSize][sizeof(POOLTYPE)] = {{0}}; \ + static int ms_PoolUsed##POOLTYPE[PoolSize] = {0}; \ + void *POOLTYPE::operator new(size_t Size, int id) \ + { \ + dbg_assert(sizeof(POOLTYPE) == Size, "size error"); \ + dbg_assert(!ms_PoolUsed##POOLTYPE[id], "already used"); \ + /*dbg_msg("pool", "++ %s %d", #POOLTYPE, id);*/ \ + ms_PoolUsed##POOLTYPE[id] = 1; \ + mem_zero(ms_PoolData##POOLTYPE[id], Size); \ + return ms_PoolData##POOLTYPE[id]; \ + } \ + void POOLTYPE::operator delete(void *p) \ + { \ + int id = (POOLTYPE*)p - (POOLTYPE*)ms_PoolData##POOLTYPE; \ + dbg_assert(ms_PoolUsed##POOLTYPE[id], "not used"); \ + /*dbg_msg("pool", "-- %s %d", #POOLTYPE, id);*/ \ + ms_PoolUsed##POOLTYPE[id] = 0; \ + mem_zero(ms_PoolData##POOLTYPE[id], sizeof(POOLTYPE)); \ + } + +#endif diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 787010892..dea775750 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -1,9 +1,11 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include #include + +#include #include -#include +#include +#include #include "character.h" #include "laser.h" diff --git a/src/game/server/entities/character.h b/src/game/server/entities/character.h index aa127979b..34afc943b 100644 --- a/src/game/server/entities/character.h +++ b/src/game/server/entities/character.h @@ -4,17 +4,7 @@ #define GAME_SERVER_ENTITIES_CHARACTER_H #include -#include -#include -#include - -enum -{ - WEAPON_GAME = -3, // team switching etc - WEAPON_SELF = -2, // console kill command - WEAPON_WORLD = -1, // death tiles etc -}; class CCharacter : public CEntity { diff --git a/src/game/server/entities/flag.cpp b/src/game/server/entities/flag.cpp index 558ee1548..ad7429215 100644 --- a/src/game/server/entities/flag.cpp +++ b/src/game/server/entities/flag.cpp @@ -1,6 +1,8 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ #include + +#include "character.h" #include "flag.h" CFlag::CFlag(CGameWorld *pGameWorld, int Team) diff --git a/src/game/server/entities/laser.cpp b/src/game/server/entities/laser.cpp index eb40c4e1a..f39494727 100644 --- a/src/game/server/entities/laser.cpp +++ b/src/game/server/entities/laser.cpp @@ -1,7 +1,8 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include #include + +#include "character.h" #include "laser.h" CLaser::CLaser(CGameWorld *pGameWorld, vec2 Pos, vec2 Direction, float StartEnergy, int Owner) diff --git a/src/game/server/entities/pickup.cpp b/src/game/server/entities/pickup.cpp index 1aff5750e..0ad8cdcb1 100644 --- a/src/game/server/entities/pickup.cpp +++ b/src/game/server/entities/pickup.cpp @@ -1,7 +1,10 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include +#include #include +#include + +#include "character.h" #include "pickup.h" CPickup::CPickup(CGameWorld *pGameWorld, int Type, int SubType) diff --git a/src/game/server/entities/projectile.cpp b/src/game/server/entities/projectile.cpp index e89e0e6fd..5357b6e71 100644 --- a/src/game/server/entities/projectile.cpp +++ b/src/game/server/entities/projectile.cpp @@ -1,7 +1,8 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include #include + +#include "character.h" #include "projectile.h" CProjectile::CProjectile(CGameWorld *pGameWorld, int Type, int Owner, vec2 Pos, vec2 Dir, int Span, diff --git a/src/game/server/entity.cpp b/src/game/server/entity.cpp index 788c3f45b..23cc27e65 100644 --- a/src/game/server/entity.cpp +++ b/src/game/server/entity.cpp @@ -3,6 +3,7 @@ #include "entity.h" #include "gamecontext.h" +#include "player.h" ////////////////////////////////////////////////// // Entity diff --git a/src/game/server/entity.h b/src/game/server/entity.h index 0f838730f..141cbd9a9 100644 --- a/src/game/server/entity.h +++ b/src/game/server/entity.h @@ -3,52 +3,11 @@ #ifndef GAME_SERVER_ENTITY_H #define GAME_SERVER_ENTITY_H -#include #include + #include -#define MACRO_ALLOC_HEAP() \ - public: \ - void *operator new(size_t Size) \ - { \ - void *p = mem_alloc(Size, 1); \ - /*dbg_msg("", "++ %p %d", p, size);*/ \ - mem_zero(p, Size); \ - return p; \ - } \ - void operator delete(void *pPtr) \ - { \ - /*dbg_msg("", "-- %p", p);*/ \ - mem_free(pPtr); \ - } \ - private: - -#define MACRO_ALLOC_POOL_ID() \ - public: \ - void *operator new(size_t Size, int id); \ - void operator delete(void *p); \ - private: - -#define MACRO_ALLOC_POOL_ID_IMPL(POOLTYPE, PoolSize) \ - static char ms_PoolData##POOLTYPE[PoolSize][sizeof(POOLTYPE)] = {{0}}; \ - static int ms_PoolUsed##POOLTYPE[PoolSize] = {0}; \ - void *POOLTYPE::operator new(size_t Size, int id) \ - { \ - dbg_assert(sizeof(POOLTYPE) == Size, "size error"); \ - dbg_assert(!ms_PoolUsed##POOLTYPE[id], "already used"); \ - /*dbg_msg("pool", "++ %s %d", #POOLTYPE, id);*/ \ - ms_PoolUsed##POOLTYPE[id] = 1; \ - mem_zero(ms_PoolData##POOLTYPE[id], Size); \ - return ms_PoolData##POOLTYPE[id]; \ - } \ - void POOLTYPE::operator delete(void *p) \ - { \ - int id = (POOLTYPE*)p - (POOLTYPE*)ms_PoolData##POOLTYPE; \ - dbg_assert(ms_PoolUsed##POOLTYPE[id], "not used"); \ - /*dbg_msg("pool", "-- %s %d", #POOLTYPE, id);*/ \ - ms_PoolUsed##POOLTYPE[id] = 0; \ - mem_zero(ms_PoolData##POOLTYPE[id], sizeof(POOLTYPE)); \ - } +#include "alloc.h" /* Class: Entity diff --git a/src/game/server/eventhandler.cpp b/src/game/server/eventhandler.cpp index 354bd4ab1..4929b8f54 100644 --- a/src/game/server/eventhandler.cpp +++ b/src/game/server/eventhandler.cpp @@ -2,6 +2,7 @@ /* If you are missing that file, acquire a complete release at teeworlds.com. */ #include "eventhandler.h" #include "gamecontext.h" +#include "player.h" ////////////////////////////////////////////////// // Event handler diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index 2b4b3eafe..2a6ee3122 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -1,18 +1,22 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include #include + #include +#include #include -#include -#include "gamecontext.h" -#include + #include #include -#include "gamemodes/dm.h" -#include "gamemodes/tdm.h" +#include + +#include "entities/character.h" #include "gamemodes/ctf.h" +#include "gamemodes/dm.h" #include "gamemodes/mod.h" +#include "gamemodes/tdm.h" +#include "gamecontext.h" +#include "player.h" enum { diff --git a/src/game/server/gamecontext.h b/src/game/server/gamecontext.h index 1899895a5..802a6a558 100644 --- a/src/game/server/gamecontext.h +++ b/src/game/server/gamecontext.h @@ -3,17 +3,14 @@ #ifndef GAME_SERVER_GAMECONTEXT_H #define GAME_SERVER_GAMECONTEXT_H -#include #include -#include +#include #include #include #include "eventhandler.h" -#include "gamecontroller.h" #include "gameworld.h" -#include "player.h" /* Tick @@ -81,9 +78,9 @@ public: void Clear(); CEventHandler m_Events; - CPlayer *m_apPlayers[MAX_CLIENTS]; + class CPlayer *m_apPlayers[MAX_CLIENTS]; - IGameController *m_pController; + class IGameController *m_pController; CGameWorld m_World; // helper functions @@ -113,7 +110,7 @@ public: VOTE_ENFORCE_NO, VOTE_ENFORCE_YES, }; - CHeap *m_pVoteOptionHeap; + class CHeap *m_pVoteOptionHeap; CVoteOptionServer *m_pVoteOptionFirst; CVoteOptionServer *m_pVoteOptionLast; diff --git a/src/game/server/gamecontroller.cpp b/src/game/server/gamecontroller.cpp index d03077185..21e95f1f8 100644 --- a/src/game/server/gamecontroller.cpp +++ b/src/game/server/gamecontroller.cpp @@ -4,9 +4,11 @@ #include +#include "entities/character.h" #include "entities/pickup.h" -#include "gamecontroller.h" #include "gamecontext.h" +#include "gamecontroller.h" +#include "player.h" IGameController::IGameController(CGameContext *pGameServer) diff --git a/src/game/server/gamecontroller.h b/src/game/server/gamecontroller.h index 2bdc3f6f1..2aa9ba421 100644 --- a/src/game/server/gamecontroller.h +++ b/src/game/server/gamecontroller.h @@ -4,6 +4,7 @@ #define GAME_SERVER_GAMECONTROLLER_H #include + #include /* diff --git a/src/game/server/gamemodes/ctf.cpp b/src/game/server/gamemodes/ctf.cpp index 4747ac7ce..743b1dbae 100644 --- a/src/game/server/gamemodes/ctf.cpp +++ b/src/game/server/gamemodes/ctf.cpp @@ -6,8 +6,8 @@ #include #include -#include #include +#include #include "ctf.h" CGameControllerCTF::CGameControllerCTF(CGameContext *pGameServer) diff --git a/src/game/server/gamemodes/tdm.cpp b/src/game/server/gamemodes/tdm.cpp index 5c7d369aa..696a4f157 100644 --- a/src/game/server/gamemodes/tdm.cpp +++ b/src/game/server/gamemodes/tdm.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include "tdm.h" diff --git a/src/game/server/gameworld.cpp b/src/game/server/gameworld.cpp index 33ee81e88..5240140c7 100644 --- a/src/game/server/gameworld.cpp +++ b/src/game/server/gameworld.cpp @@ -1,9 +1,12 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include "gameworld.h" +#include "entities/character.h" #include "entity.h" #include "gamecontext.h" +#include "gamecontroller.h" +#include "gameworld.h" + ////////////////////////////////////////////////// // game world diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index f36866bf5..ffb0bf59f 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -1,7 +1,9 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ -#include -#include + +#include "entities/character.h" +#include "gamecontext.h" +#include "gamecontroller.h" #include "player.h" diff --git a/src/game/server/player.h b/src/game/server/player.h index cebf18069..902c0ab16 100644 --- a/src/game/server/player.h +++ b/src/game/server/player.h @@ -3,9 +3,15 @@ #ifndef GAME_SERVER_PLAYER_H #define GAME_SERVER_PLAYER_H -// this include should perhaps be removed -#include "entities/character.h" -#include "gamecontext.h" +#include "alloc.h" + + +enum +{ + WEAPON_GAME = -3, // team switching etc + WEAPON_SELF = -2, // console kill command + WEAPON_WORLD = -1, // death tiles etc +}; // player object class CPlayer