mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-16 09:34:08 +00:00
fix(quickbuild): a finished quickbuild's EnableRebuild has no duration
Live sent duration 0.0 in all 744 successful EnableRebuild (cancels carry the time spent building, which DLU already matches); DLU sent the reset time. Tests get EntityManager::_addEntity/_removeEntity to make an entity built outside CreateEntity findable, and helpers that read game messages back out of captured packets. Check: finish a quickbuild; the build completes, the celebrate animation plays and the built object stays up for its usual time before resetting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -184,6 +184,10 @@ Entity* EntityManager::CreateEntity(EntityInfo info, User* user, Entity* parentE
|
||||
return entity;
|
||||
}
|
||||
|
||||
void EntityManager::_addEntity(Entity* entity) {
|
||||
m_Entities.insert_or_assign(entity->GetObjectID(), entity);
|
||||
}
|
||||
|
||||
void EntityManager::DestroyEntity(const LWOOBJID& objectID) {
|
||||
DestroyEntity(GetEntity(objectID));
|
||||
}
|
||||
|
||||
@@ -46,6 +46,10 @@ public:
|
||||
const std::unordered_map<LWOOBJID, Entity*> GetAllEntities() const { return m_Entities; }
|
||||
#endif
|
||||
|
||||
// Tests only: makes an entity built without CreateEntity (and still owned by the caller) findable with GetEntity.
|
||||
void _addEntity(Entity* entity);
|
||||
void _removeEntity(LWOOBJID objectID) { m_Entities.erase(objectID); }
|
||||
|
||||
void ConstructEntity(Entity* entity, const SystemAddress& sysAddr = UNASSIGNED_SYSTEM_ADDRESS);
|
||||
void DestructEntity(Entity* entity, const SystemAddress& sysAddr = UNASSIGNED_SYSTEM_ADDRESS);
|
||||
void SerializeEntity(Entity* entity);
|
||||
|
||||
@@ -473,7 +473,8 @@ void QuickBuildComponent::CompleteQuickBuild(Entity* const user) {
|
||||
enableRebuild.bFail = false;
|
||||
enableRebuild.bSuccess = true;
|
||||
enableRebuild.eFailReason = eQuickBuildFailReason::NOT_GIVEN;
|
||||
enableRebuild.fDuration = m_ResetTime;
|
||||
// Live sent no duration on success (744 of 744); cancels carry the time spent building.
|
||||
enableRebuild.fDuration = 0.0f;
|
||||
enableRebuild.user = user->GetObjectID();
|
||||
enableRebuild.Send(UNASSIGNED_SYSTEM_ADDRESS);
|
||||
GameMessages::TerminateInteraction(user->GetObjectID(), eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID()).Send(UNASSIGNED_SYSTEM_ADDRESS);
|
||||
|
||||
Reference in New Issue
Block a user