From 3124538b9499923faa35bf7fcc74d594697d99c5 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 11 Aug 2023 19:37:35 +1000 Subject: [PATCH] Get rid of Protocol_RemoveEntity --- src/Entity.c | 9 ++++++--- src/Protocol.c | 13 +++---------- src/Protocol.h | 1 - src/Server.c | 5 +++-- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/Entity.c b/src/Entity.c index 94ffc97df..b2a1deefa 100644 --- a/src/Entity.c +++ b/src/Entity.c @@ -620,8 +620,11 @@ static void Entities_ChatFontChanged(void* obj) { } void Entities_Remove(EntityID id) { + struct Entity* e = Entities.List[id]; + if (!e) return; + Event_RaiseInt(&EntityEvents.Removed, id); - Entities.List[id]->VTABLE->Despawn(Entities.List[id]); + e->VTABLE->Despawn(e); Entities.List[id] = NULL; /* TODO: Move to EntityEvents.Removed callback instead */ @@ -1207,8 +1210,8 @@ static void Entities_Init(void) { static void Entities_Free(void) { int i; - for (i = 0; i < ENTITIES_MAX_COUNT; i++) { - if (!Entities.List[i]) continue; + for (i = 0; i < ENTITIES_MAX_COUNT; i++) + { Entities_Remove((EntityID)i); } Gfx_DeleteTexture(&ShadowComponent_ShadowTex); diff --git a/src/Protocol.c b/src/Protocol.c index 5e226a78a..18b92a289 100644 --- a/src/Protocol.c +++ b/src/Protocol.c @@ -197,7 +197,7 @@ static void AddEntity(cc_uint8* data, EntityID id, const cc_string* name, const struct Entity* e; if (id != ENTITIES_SELF_ID) { - if (Entities.List[id]) Entities_Remove(id); + Entities_Remove(id); e = &NetPlayers_List[id].Base; NetPlayer_Init((struct NetPlayer*)e); @@ -219,13 +219,6 @@ static void AddEntity(cc_uint8* data, EntityID id, const cc_string* name, const p->SpawnPitch = p->Base.Pitch; } -void Protocol_RemoveEntity(EntityID id) { - struct Entity* e = Entities.List[id]; - if (!e || id == ENTITIES_SELF_ID) return; - - Entities_Remove(id); -} - static void UpdateLocation(EntityID id, struct LocationUpdate* update) { struct Entity* e = Entities.List[id]; if (e) { e->VTABLE->SetLocation(e, update); } @@ -711,7 +704,7 @@ static void Classic_OrientationUpdate(cc_uint8* data) { static void Classic_RemoveEntity(cc_uint8* data) { EntityID id = data[0]; - Protocol_RemoveEntity(id); + if (id != ENTITIES_SELF_ID) Entities_Remove(id); } static void Classic_Message(cc_uint8* data) { @@ -942,7 +935,7 @@ static void CPE_SendCpeExtInfoReply(void) { { ext = cpe_clientExtensions[i]; name = String_FromReadonly(ext->name); - ver = ext->serverVersion; + ver = ext->serverVersion ? ext->serverVersion : ext->clientVersion; /* Don't reply with version higher than what server supports to workaround some buggy server software */ if (!Game_AllowCustomBlocks) { diff --git a/src/Protocol.h b/src/Protocol.h index 3b2790fb2..a27fe8005 100644 --- a/src/Protocol.h +++ b/src/Protocol.h @@ -61,7 +61,6 @@ struct RayTracer; struct IGameComponent; extern struct IGameComponent Protocol_Component; -void Protocol_RemoveEntity(EntityID id); void Protocol_Tick(void); extern cc_bool cpe_needD3Fix; diff --git a/src/Server.c b/src/Server.c index 67ca68b8e..fcddc3703 100644 --- a/src/Server.c +++ b/src/Server.c @@ -461,8 +461,9 @@ static void OnNewMap(void) { if (Server.IsSinglePlayer) return; /* wipe all existing entities */ - for (i = 0; i < ENTITIES_MAX_COUNT; i++) { - Protocol_RemoveEntity((EntityID)i); + for (i = 0; i < ENTITIES_SELF_ID; i++) + { + Entities_Remove((EntityID)i); } }