chore: rename rebuild to quickbuild (#1364)

* rename rebuild to quickbuild

* fix includes
This commit is contained in:
Aaron Kimbrell
2023-12-28 22:24:30 -06:00
committed by GitHub
parent fddf99946f
commit 15954413ae
95 changed files with 422 additions and 422 deletions

View File

@@ -20,7 +20,7 @@
#include <vector>
#include "SkillComponent.h"
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "DestroyableComponent.h"
#include "Metrics.hpp"
#include "CDComponentsRegistryTable.h"
@@ -243,12 +243,12 @@ void BaseCombatAIComponent::CalculateCombat(const float deltaTime) {
bool hadRemainingDowntime = m_SkillTime > 0.0f;
if (m_SkillTime > 0.0f) m_SkillTime -= deltaTime;
auto* rebuild = m_Parent->GetComponent<RebuildComponent>();
auto* rebuild = m_Parent->GetComponent<QuickBuildComponent>();
if (rebuild != nullptr) {
const auto state = rebuild->GetState();
if (state != eRebuildState::COMPLETED) {
if (state != eQuickBuildState::COMPLETED) {
return;
}
}
@@ -559,12 +559,12 @@ bool BaseCombatAIComponent::IsEnemy(LWOOBJID target) const {
return false;
}
auto* quickbuild = entity->GetComponent<RebuildComponent>();
auto* quickbuild = entity->GetComponent<QuickBuildComponent>();
if (quickbuild != nullptr) {
const auto state = quickbuild->GetState();
if (state != eRebuildState::COMPLETED) {
if (state != eQuickBuildState::COMPLETED) {
return false;
}
}

View File

@@ -32,7 +32,7 @@ set(DGAME_DCOMPONENTS_SOURCES "ActivityComponent.cpp"
"ProximityMonitorComponent.cpp"
"RacingControlComponent.cpp"
"RailActivatorComponent.cpp"
"RebuildComponent.cpp"
"QuickBuildComponent.cpp"
"RenderComponent.cpp"
"RigidbodyPhantomPhysicsComponent.cpp"
"MultiZoneEntranceComponent.cpp"

View File

@@ -498,7 +498,7 @@ void CharacterComponent::TrackArmorDelta(int32_t armor) {
}
}
void CharacterComponent::TrackRebuildComplete() {
void CharacterComponent::TrackQuickBuildComplete() {
UpdatePlayerStatistic(QuickBuildsCompleted);
const auto mapID = Game::zoneManager->GetZoneID().GetMapID();

View File

@@ -233,7 +233,7 @@ public:
/**
* Handles completing a rebuild by updating the statistics
*/
void TrackRebuildComplete();
void TrackQuickBuildComplete();
/**
* Tracks a player completing the race, also updates stats

View File

@@ -11,7 +11,7 @@
#include "CDClientManager.h"
#include "CDDestructibleComponentTable.h"
#include "EntityManager.h"
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "CppScripts.h"
#include "Loot.h"
#include "Character.h"
@@ -85,11 +85,11 @@ void DestroyableComponent::Reinitialize(LOT templateID) {
int32_t buffComponentID = compRegistryTable->GetByIDAndType(templateID, eReplicaComponentType::BUFF);
int32_t collectibleComponentID = compRegistryTable->GetByIDAndType(templateID, eReplicaComponentType::COLLECTIBLE);
int32_t rebuildComponentID = compRegistryTable->GetByIDAndType(templateID, eReplicaComponentType::QUICK_BUILD);
int32_t quickBuildComponentID = compRegistryTable->GetByIDAndType(templateID, eReplicaComponentType::QUICK_BUILD);
int32_t componentID = 0;
if (collectibleComponentID > 0) componentID = collectibleComponentID;
if (rebuildComponentID > 0) componentID = rebuildComponentID;
if (quickBuildComponentID > 0) componentID = quickBuildComponentID;
if (buffComponentID > 0) componentID = buffComponentID;
CDDestructibleComponentTable* destCompTable = CDClientManager::Instance().GetTable<CDDestructibleComponentTable>();

View File

@@ -117,11 +117,11 @@ void MovingPlatformComponent::Serialize(RakNet::BitStream* outBitStream, bool bI
}
}
void MovingPlatformComponent::OnRebuildInitilized() {
void MovingPlatformComponent::OnQuickBuildInitilized() {
StopPathing();
}
void MovingPlatformComponent::OnCompleteRebuild() {
void MovingPlatformComponent::OnCompleteQuickBuild() {
if (m_NoAutoStart)
return;

View File

@@ -116,12 +116,12 @@ public:
/**
* Stops all pathing, called when an entity starts a quick build associated with this platform
*/
void OnRebuildInitilized();
void OnQuickBuildInitilized();
/**
* Starts the pathing, called when an entity completed a quick build associated with this platform
*/
void OnCompleteRebuild();
void OnCompleteQuickBuild();
/**
* Updates the movement state for the moving platform

View File

@@ -1,4 +1,4 @@
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "Entity.h"
#include "DestroyableComponent.h"
#include "GameMessages.h"
@@ -24,7 +24,7 @@
#include "CppScripts.h"
RebuildComponent::RebuildComponent(Entity* entity) : Component(entity) {
QuickBuildComponent::QuickBuildComponent(Entity* entity) : Component(entity) {
std::u16string checkPreconditions = entity->GetVar<std::u16string>(u"CheckPrecondition");
if (!checkPreconditions.empty()) {
@@ -46,18 +46,18 @@ RebuildComponent::RebuildComponent(Entity* entity) : Component(entity) {
SpawnActivator();
}
RebuildComponent::~RebuildComponent() {
QuickBuildComponent::~QuickBuildComponent() {
delete m_Precondition;
Entity* builder = GetBuilder();
if (builder) {
CancelRebuild(builder, eQuickBuildFailReason::BUILD_ENDED, true);
CancelQuickBuild(builder, eQuickBuildFailReason::BUILD_ENDED, true);
}
DespawnActivator();
}
void RebuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) {
void QuickBuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) {
if (m_Parent->GetComponent(eReplicaComponentType::DESTROYABLE) == nullptr) {
if (bIsInitialUpdate) {
outBitStream->Write(false);
@@ -70,7 +70,7 @@ void RebuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitia
// If build state is completed and we've already serialized once in the completed state,
// don't serializing this component anymore as this will cause the build to jump again.
// If state changes, serialization will begin again.
if (!m_StateDirty && m_State == eRebuildState::COMPLETED) {
if (!m_StateDirty && m_State == eQuickBuildState::COMPLETED) {
outBitStream->Write0();
outBitStream->Write0();
return;
@@ -110,7 +110,7 @@ void RebuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitia
m_StateDirty = false;
}
void RebuildComponent::Update(float deltaTime) {
void QuickBuildComponent::Update(float deltaTime) {
m_Activator = GetActivator();
// Serialize the quickbuild every so often, fixes the odd bug where the quickbuild is not buildable
@@ -124,7 +124,7 @@ void RebuildComponent::Update(float deltaTime) {
}*/
switch (m_State) {
case eRebuildState::OPEN: {
case eQuickBuildState::OPEN: {
SpawnActivator();
m_TimeBeforeDrain = 0;
@@ -147,14 +147,14 @@ void RebuildComponent::Update(float deltaTime) {
GameMessages::SendDieNoImplCode(m_Parent, LWOOBJID_EMPTY, LWOOBJID_EMPTY, eKillType::VIOLENT, u"", 0.0f, 0.0f, 0.0f, false, true);
ResetRebuild(false);
ResetQuickBuild(false);
}
}
}
break;
}
case eRebuildState::COMPLETED: {
case eQuickBuildState::COMPLETED: {
m_Timer += deltaTime;
// For reset times < 0 this has to be handled manually
@@ -171,17 +171,17 @@ void RebuildComponent::Update(float deltaTime) {
GameMessages::SendDieNoImplCode(m_Parent, LWOOBJID_EMPTY, LWOOBJID_EMPTY, eKillType::VIOLENT, u"", 0.0f, 0.0f, 0.0f, false, true);
ResetRebuild(false);
ResetQuickBuild(false);
}
}
break;
}
case eRebuildState::BUILDING:
case eQuickBuildState::BUILDING:
{
Entity* builder = GetBuilder();
if (!builder) {
ResetRebuild(false);
ResetQuickBuild(false);
return;
}
@@ -205,18 +205,18 @@ void RebuildComponent::Update(float deltaTime) {
Game::entityManager->SerializeEntity(builder);
if (newImagination <= 0 && imaginationCostRemaining > 0) {
CancelRebuild(builder, eQuickBuildFailReason::OUT_OF_IMAGINATION, true);
CancelQuickBuild(builder, eQuickBuildFailReason::OUT_OF_IMAGINATION, true);
break;
}
}
if (m_Timer >= m_CompleteTime && m_DrainedImagination >= m_TakeImagination) {
CompleteRebuild(builder);
CompleteQuickBuild(builder);
}
break;
}
case eRebuildState::INCOMPLETE: {
case eQuickBuildState::INCOMPLETE: {
m_TimerIncomplete += deltaTime;
// For reset times < 0 this has to be handled manually
@@ -232,17 +232,17 @@ void RebuildComponent::Update(float deltaTime) {
GameMessages::SendDieNoImplCode(m_Parent, LWOOBJID_EMPTY, LWOOBJID_EMPTY, eKillType::VIOLENT, u"", 0.0f, 0.0f, 0.0f, false, true);
ResetRebuild(false);
ResetQuickBuild(false);
}
}
break;
}
case eRebuildState::RESETTING: break;
case eQuickBuildState::RESETTING: break;
}
}
void RebuildComponent::OnUse(Entity* originator) {
if (GetBuilder() != nullptr || m_State == eRebuildState::COMPLETED) {
void QuickBuildComponent::OnUse(Entity* originator) {
if (GetBuilder() != nullptr || m_State == eQuickBuildState::COMPLETED) {
return;
}
@@ -250,10 +250,10 @@ void RebuildComponent::OnUse(Entity* originator) {
return;
}
StartRebuild(originator);
StartQuickBuild(originator);
}
void RebuildComponent::SpawnActivator() {
void QuickBuildComponent::SpawnActivator() {
if (!m_SelfActivator || m_ActivatorPosition != NiPoint3::ZERO) {
if (!m_Activator) {
EntityInfo info;
@@ -273,7 +273,7 @@ void RebuildComponent::SpawnActivator() {
}
}
void RebuildComponent::DespawnActivator() {
void QuickBuildComponent::DespawnActivator() {
if (m_Activator) {
Game::entityManager->DestructEntity(m_Activator);
@@ -285,73 +285,73 @@ void RebuildComponent::DespawnActivator() {
}
}
Entity* RebuildComponent::GetActivator() {
Entity* QuickBuildComponent::GetActivator() {
return Game::entityManager->GetEntity(m_ActivatorId);
}
NiPoint3 RebuildComponent::GetActivatorPosition() {
NiPoint3 QuickBuildComponent::GetActivatorPosition() {
return m_ActivatorPosition;
}
float RebuildComponent::GetResetTime() {
float QuickBuildComponent::GetResetTime() {
return m_ResetTime;
}
float RebuildComponent::GetCompleteTime() {
float QuickBuildComponent::GetCompleteTime() {
return m_CompleteTime;
}
int RebuildComponent::GetTakeImagination() {
int QuickBuildComponent::GetTakeImagination() {
return m_TakeImagination;
}
bool RebuildComponent::GetInterruptible() {
bool QuickBuildComponent::GetInterruptible() {
return m_Interruptible;
}
bool RebuildComponent::GetSelfActivator() {
bool QuickBuildComponent::GetSelfActivator() {
return m_SelfActivator;
}
std::vector<int> RebuildComponent::GetCustomModules() {
std::vector<int> QuickBuildComponent::GetCustomModules() {
return m_CustomModules;
}
int RebuildComponent::GetActivityId() {
int QuickBuildComponent::GetActivityId() {
return m_ActivityId;
}
int RebuildComponent::GetPostImaginationCost() {
int QuickBuildComponent::GetPostImaginationCost() {
return m_PostImaginationCost;
}
float RebuildComponent::GetTimeBeforeSmash() {
float QuickBuildComponent::GetTimeBeforeSmash() {
return m_TimeBeforeSmash;
}
eRebuildState RebuildComponent::GetState() {
eQuickBuildState QuickBuildComponent::GetState() {
return m_State;
}
Entity* RebuildComponent::GetBuilder() const {
Entity* QuickBuildComponent::GetBuilder() const {
auto* builder = Game::entityManager->GetEntity(m_Builder);
return builder;
}
bool RebuildComponent::GetRepositionPlayer() const {
bool QuickBuildComponent::GetRepositionPlayer() const {
return m_RepositionPlayer;
}
void RebuildComponent::SetActivatorPosition(NiPoint3 value) {
void QuickBuildComponent::SetActivatorPosition(NiPoint3 value) {
m_ActivatorPosition = value;
}
void RebuildComponent::SetResetTime(float value) {
void QuickBuildComponent::SetResetTime(float value) {
m_ResetTime = value;
}
void RebuildComponent::SetCompleteTime(float value) {
void QuickBuildComponent::SetCompleteTime(float value) {
if (value < 0) {
m_CompleteTime = 4.5f;
} else {
@@ -359,31 +359,31 @@ void RebuildComponent::SetCompleteTime(float value) {
}
}
void RebuildComponent::SetTakeImagination(int value) {
void QuickBuildComponent::SetTakeImagination(int value) {
m_TakeImagination = value;
}
void RebuildComponent::SetInterruptible(bool value) {
void QuickBuildComponent::SetInterruptible(bool value) {
m_Interruptible = value;
}
void RebuildComponent::SetSelfActivator(bool value) {
void QuickBuildComponent::SetSelfActivator(bool value) {
m_SelfActivator = value;
}
void RebuildComponent::SetCustomModules(std::vector<int> value) {
void QuickBuildComponent::SetCustomModules(std::vector<int> value) {
m_CustomModules = value;
}
void RebuildComponent::SetActivityId(int value) {
void QuickBuildComponent::SetActivityId(int value) {
m_ActivityId = value;
}
void RebuildComponent::SetPostImaginationCost(int value) {
void QuickBuildComponent::SetPostImaginationCost(int value) {
m_PostImaginationCost = value;
}
void RebuildComponent::SetTimeBeforeSmash(float value) {
void QuickBuildComponent::SetTimeBeforeSmash(float value) {
if (value < 0) {
m_TimeBeforeSmash = 10.0f;
} else {
@@ -391,12 +391,12 @@ void RebuildComponent::SetTimeBeforeSmash(float value) {
}
}
void RebuildComponent::SetRepositionPlayer(bool value) {
void QuickBuildComponent::SetRepositionPlayer(bool value) {
m_RepositionPlayer = value;
}
void RebuildComponent::StartRebuild(Entity* user) {
if (m_State == eRebuildState::OPEN || m_State == eRebuildState::COMPLETED || m_State == eRebuildState::INCOMPLETE) {
void QuickBuildComponent::StartQuickBuild(Entity* user) {
if (m_State == eQuickBuildState::OPEN || m_State == eQuickBuildState::COMPLETED || m_State == eQuickBuildState::INCOMPLETE) {
m_Builder = user->GetObjectID();
auto* character = user->GetComponent<CharacterComponent>();
@@ -404,31 +404,31 @@ void RebuildComponent::StartRebuild(Entity* user) {
Game::entityManager->SerializeEntity(user);
GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::BUILDING, user->GetObjectID());
GameMessages::SendEnableRebuild(m_Parent, true, false, false, eQuickBuildFailReason::NOT_GIVEN, 0.0f, user->GetObjectID());
GameMessages::SendQuickBuildNotifyState(m_Parent, m_State, eQuickBuildState::BUILDING, user->GetObjectID());
GameMessages::SendEnableQuickBuild(m_Parent, true, false, false, eQuickBuildFailReason::NOT_GIVEN, 0.0f, user->GetObjectID());
m_State = eRebuildState::BUILDING;
m_State = eQuickBuildState::BUILDING;
m_StateDirty = true;
Game::entityManager->SerializeEntity(m_Parent);
auto* movingPlatform = m_Parent->GetComponent<MovingPlatformComponent>();
if (movingPlatform != nullptr) {
movingPlatform->OnRebuildInitilized();
movingPlatform->OnQuickBuildInitilized();
}
for (auto* script : CppScripts::GetEntityScripts(m_Parent)) {
script->OnRebuildStart(m_Parent, user);
script->OnQuickBuildStart(m_Parent, user);
}
// Notify scripts and possible subscribers
for (auto* script : CppScripts::GetEntityScripts(m_Parent))
script->OnRebuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_RebuildStateCallbacks)
script->OnQuickBuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_QuickBuildStateCallbacks)
cb(m_State);
}
}
void RebuildComponent::CompleteRebuild(Entity* user) {
void QuickBuildComponent::CompleteQuickBuild(Entity* user) {
if (user == nullptr) {
return;
}
@@ -436,7 +436,7 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
auto* characterComponent = user->GetComponent<CharacterComponent>();
if (characterComponent != nullptr) {
characterComponent->SetCurrentActivity(eGameActivity::NONE);
characterComponent->TrackRebuildComplete();
characterComponent->TrackQuickBuildComplete();
} else {
LOG("Some user tried to finish the rebuild but they didn't have a character somehow.");
return;
@@ -444,13 +444,13 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
Game::entityManager->SerializeEntity(user);
GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::COMPLETED, user->GetObjectID());
GameMessages::SendQuickBuildNotifyState(m_Parent, m_State, eQuickBuildState::COMPLETED, user->GetObjectID());
GameMessages::SendPlayFXEffect(m_Parent, 507, u"create", "BrickFadeUpVisCompleteEffect", LWOOBJID_EMPTY, 0.4f, 1.0f, true);
GameMessages::SendEnableRebuild(m_Parent, false, false, true, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, user->GetObjectID());
GameMessages::SendEnableQuickBuild(m_Parent, false, false, true, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, user->GetObjectID());
GameMessages::SendTerminateInteraction(user->GetObjectID(), eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
m_State = eRebuildState::COMPLETED;
m_State = eQuickBuildState::COMPLETED;
m_StateDirty = true;
m_Timer = 0.0f;
m_DrainedImagination = 0;
@@ -490,21 +490,21 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
// Notify scripts
for (auto* script : CppScripts::GetEntityScripts(m_Parent)) {
script->OnRebuildComplete(m_Parent, user);
script->OnRebuildNotifyState(m_Parent, m_State);
script->OnQuickBuildComplete(m_Parent, user);
script->OnQuickBuildNotifyState(m_Parent, m_State);
}
// Notify subscribers
for (const auto& callback : m_RebuildStateCallbacks)
for (const auto& callback : m_QuickBuildStateCallbacks)
callback(m_State);
for (const auto& callback : m_RebuildCompleteCallbacks)
for (const auto& callback : m_QuickBuildCompleteCallbacks)
callback(user);
m_Parent->TriggerEvent(eTriggerEventType::REBUILD_COMPLETE, user);
auto* movingPlatform = m_Parent->GetComponent<MovingPlatformComponent>();
if (movingPlatform != nullptr) {
movingPlatform->OnCompleteRebuild();
movingPlatform->OnCompleteQuickBuild();
}
// Set flag
@@ -520,20 +520,20 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
RenderComponent::PlayAnimation(user, u"rebuild-celebrate", 1.09f);
}
void RebuildComponent::ResetRebuild(bool failed) {
void QuickBuildComponent::ResetQuickBuild(bool failed) {
Entity* builder = GetBuilder();
if (m_State == eRebuildState::BUILDING && builder) {
GameMessages::SendEnableRebuild(m_Parent, false, false, failed, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, builder->GetObjectID());
if (m_State == eQuickBuildState::BUILDING && builder) {
GameMessages::SendEnableQuickBuild(m_Parent, false, false, failed, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, builder->GetObjectID());
if (failed) {
RenderComponent::PlayAnimation(builder, u"rebuild-fail");
}
}
GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::RESETTING, LWOOBJID_EMPTY);
GameMessages::SendQuickBuildNotifyState(m_Parent, m_State, eQuickBuildState::RESETTING, LWOOBJID_EMPTY);
m_State = eRebuildState::RESETTING;
m_State = eQuickBuildState::RESETTING;
m_StateDirty = true;
m_Timer = 0.0f;
m_TimerIncomplete = 0.0f;
@@ -544,8 +544,8 @@ void RebuildComponent::ResetRebuild(bool failed) {
// Notify scripts and possible subscribers
for (auto* script : CppScripts::GetEntityScripts(m_Parent))
script->OnRebuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_RebuildStateCallbacks)
script->OnQuickBuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_QuickBuildStateCallbacks)
cb(m_State);
m_Parent->ScheduleKillAfterUpdate();
@@ -555,29 +555,29 @@ void RebuildComponent::ResetRebuild(bool failed) {
}
}
void RebuildComponent::CancelRebuild(Entity* entity, eQuickBuildFailReason failReason, bool skipChecks) {
if (m_State != eRebuildState::COMPLETED || skipChecks) {
void QuickBuildComponent::CancelQuickBuild(Entity* entity, eQuickBuildFailReason failReason, bool skipChecks) {
if (m_State != eQuickBuildState::COMPLETED || skipChecks) {
m_Builder = LWOOBJID_EMPTY;
const auto entityID = entity != nullptr ? entity->GetObjectID() : LWOOBJID_EMPTY;
// Notify the client that a state has changed
GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::INCOMPLETE, entityID);
GameMessages::SendEnableRebuild(m_Parent, false, true, false, failReason, m_Timer, entityID);
GameMessages::SendQuickBuildNotifyState(m_Parent, m_State, eQuickBuildState::INCOMPLETE, entityID);
GameMessages::SendEnableQuickBuild(m_Parent, false, true, false, failReason, m_Timer, entityID);
// Now terminate any interaction with the rebuild
GameMessages::SendTerminateInteraction(entityID, eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
GameMessages::SendTerminateInteraction(m_Parent->GetObjectID(), eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
// Now update the component itself
m_State = eRebuildState::INCOMPLETE;
m_State = eQuickBuildState::INCOMPLETE;
m_StateDirty = true;
// Notify scripts and possible subscribers
for (auto* script : CppScripts::GetEntityScripts(m_Parent))
script->OnRebuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_RebuildStateCallbacks)
script->OnQuickBuildNotifyState(m_Parent, m_State);
for (const auto& cb : m_QuickBuildStateCallbacks)
cb(m_State);
Game::entityManager->SerializeEntity(m_Parent);
@@ -594,10 +594,10 @@ void RebuildComponent::CancelRebuild(Entity* entity, eQuickBuildFailReason failR
}
}
void RebuildComponent::AddRebuildCompleteCallback(const std::function<void(Entity* user)>& callback) {
m_RebuildCompleteCallbacks.push_back(callback);
void QuickBuildComponent::AddQuickBuildCompleteCallback(const std::function<void(Entity* user)>& callback) {
m_QuickBuildCompleteCallbacks.push_back(callback);
}
void RebuildComponent::AddRebuildStateCallback(const std::function<void(eRebuildState state)>& callback) {
m_RebuildStateCallbacks.push_back(callback);
void QuickBuildComponent::AddQuickBuildStateCallback(const std::function<void(eQuickBuildState state)>& callback) {
m_QuickBuildStateCallbacks.push_back(callback);
}

View File

@@ -1,5 +1,5 @@
#ifndef REBUILDCOMPONENT_H
#define REBUILDCOMPONENT_H
#ifndef QUICKBUILDCOMPONENT_H
#define QUICKBUILDCOMPONENT_H
#include <BitStream.h>
#include <vector>
@@ -10,7 +10,7 @@
#include "Preconditions.h"
#include "Component.h"
#include "eReplicaComponentType.h"
#include "eRebuildState.h"
#include "eQuickBuildState.h"
class Entity;
enum class eQuickBuildFailReason : uint32_t;
@@ -20,12 +20,12 @@ enum class eQuickBuildFailReason : uint32_t;
* consists of an activator that shows a popup and then the actual entity that the bricks are built into. Note
* that quick builds are also scripted activities so this shared some logic with the ScriptedActivityComponent.
*/
class RebuildComponent : public Component {
class QuickBuildComponent : public Component {
public:
inline static const eReplicaComponentType ComponentType = eReplicaComponentType::QUICK_BUILD;
RebuildComponent(Entity* entity);
~RebuildComponent() override;
QuickBuildComponent(Entity* entity);
~QuickBuildComponent() override;
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) override;
void Update(float deltaTime) override;
@@ -37,78 +37,78 @@ public:
void OnUse(Entity* originator) override;
/**
* Spawns the activator that can be used to initiate the rebuild
* Spawns the activator that can be used to initiate the quickbuild
*/
void SpawnActivator();
/**
* Despawns the activiator that can be used to initiate the rebuild
* Despawns the activiator that can be used to initiate the quickbuild
*/
void DespawnActivator();
/**
* Returns the entity that acts as the activator for this rebuild
* @return the entity that acts as the activator for this rebuild
* Returns the entity that acts as the activator for this quickbuild
* @return the entity that acts as the activator for this quickbuild
*/
Entity* GetActivator();
/**
* Returns the spawn position of the activator for this rebuild, if any
* @return the spawn position of the activator for this rebuild, if any
* Returns the spawn position of the activator for this quickbuild, if any
* @return the spawn position of the activator for this quickbuild, if any
*/
NiPoint3 GetActivatorPosition();
/**
* Sets the spawn position for the activator of this rebuild
* Sets the spawn position for the activator of this quickbuild
* @param value the spawn position to set for the activator
*/
void SetActivatorPosition(NiPoint3 value);
/**
* Returns the time it takes for the rebuild to reset after being built
* @return the time it takes for the rebuild to reset after being built
* Returns the time it takes for the quickbuild to reset after being built
* @return the time it takes for the quickbuild to reset after being built
*/
float GetResetTime();
/**
* Sets the time it takes for the rebuild to reset after being built
* Sets the time it takes for the quickbuild to reset after being built
* @param value the reset time to set
*/
void SetResetTime(float value);
/**
* Returns the time it takes to complete the rebuild
* @return the time it takes to complete the rebuild
* Returns the time it takes to complete the quickbuild
* @return the time it takes to complete the quickbuild
*/
float GetCompleteTime();
/**
* Sets the time it takes to complete the rebuild
* Sets the time it takes to complete the quickbuild
* @param value the completion time to set
*/
void SetCompleteTime(float value);
/**
* Returns the imagination that's taken when completing the rebuild
* @return the imagination that's taken when completing the rebuild
* Returns the imagination that's taken when completing the quickbuild
* @return the imagination that's taken when completing the quickbuild
*/
int GetTakeImagination();
/**
* Sets the imagination that's taken when completing the rebuild
* Sets the imagination that's taken when completing the quickbuild
* @param value the imagination deduction to set
*/
void SetTakeImagination(int value);
/**
* Returns if the rebuild can be interrupted, currently unused
* @return if the rebuild can be interrupted
* Returns if the quickbuild can be interrupted, currently unused
* @return if the quickbuild can be interrupted
*/
bool GetInterruptible();
/**
* Sets whether or not the rebuild can be interrupted, currently unused
* @param value true if the rebuild may be interrupted, false otherwise
* Sets whether or not the quickbuild can be interrupted, currently unused
* @param value true if the quickbuild may be interrupted, false otherwise
*/
void SetInterruptible(bool value);
@@ -120,7 +120,7 @@ public:
/**
* Sets whether or not this entity contains a built-in activator. If set to false this will spawn activators on
* each new rebuild.
* each new quickbuild.
* @param value whether or not this entity contains a built-in activator
*/
void SetSelfActivator(bool value);
@@ -136,13 +136,13 @@ public:
void SetCustomModules(std::vector<int> value);
/**
* Returns the activity ID for participating in this rebuild
* @return the activity ID for participating in this rebuild
* Returns the activity ID for participating in this quickbuild
* @return the activity ID for participating in this quickbuild
*/
int GetActivityId();
/**
* Sets the activity ID for participating in this rebuild
* Sets the activity ID for participating in this quickbuild
* @param value the activity ID to set
*/
void SetActivityId(int value);
@@ -158,66 +158,66 @@ public:
void SetPostImaginationCost(int value);
/**
* Returns the time it takes for an incomplete rebuild to be smashed automatically
* @return the time it takes for an incomplete rebuild to be smashed automatically
* Returns the time it takes for an incomplete quickbuild to be smashed automatically
* @return the time it takes for an incomplete quickbuild to be smashed automatically
*/
float GetTimeBeforeSmash();
/**
* Sets the time it takes for an incomplete rebuild to be smashed automatically
* Sets the time it takes for an incomplete quickbuild to be smashed automatically
* @param value the time to set
*/
void SetTimeBeforeSmash(float value);
/**
* Returns the current rebuild state
* @return the current rebuild state
* Returns the current quickbuild state
* @return the current quickbuild state
*/
eRebuildState GetState();
eQuickBuildState GetState();
/**
* Returns the player that is currently building this rebuild
* @return the player that is currently building this rebuild
* Returns the player that is currently building this quickbuild
* @return the player that is currently building this quickbuild
*/
Entity* GetBuilder() const;
/**
* Returns whether or not the player is repositioned when initiating the rebuild
* @return whether or not the player is repositioned when initiating the rebuild
* Returns whether or not the player is repositioned when initiating the quickbuild
* @return whether or not the player is repositioned when initiating the quickbuild
*/
bool GetRepositionPlayer() const;
/**
* Sets whether or not the player is repositioned when initiating the rebuild
* @param value whether or not the player is repositioned when initiating the rebuild
* Sets whether or not the player is repositioned when initiating the quickbuild
* @param value whether or not the player is repositioned when initiating the quickbuild
*/
void SetRepositionPlayer(bool value);
/**
* Adds a callback that is called when the rebuild is completed
* Adds a callback that is called when the quickbuild is completed
* @param callback the callback to add
*/
void AddRebuildCompleteCallback(const std::function<void(Entity* user)>& callback);
void AddQuickBuildCompleteCallback(const std::function<void(Entity* user)>& callback);
/**
* Adds a callback when the rebuild state is updated
* Adds a callback when the quickbuild state is updated
* @param callback the callback to add
*/
void AddRebuildStateCallback(const std::function<void(eRebuildState state)>& callback);
void AddQuickBuildStateCallback(const std::function<void(eQuickBuildState state)>& callback);
/**
* Resets the rebuild
* @param failed whether or not the player failed to complete the rebuild, triggers an extra animation
* Resets the quickbuild
* @param failed whether or not the player failed to complete the quickbuild, triggers an extra animation
*/
void ResetRebuild(bool failed);
void ResetQuickBuild(bool failed);
/**
* Cancels the rebuild if it wasn't completed
* Cancels the quickbuild if it wasn't completed
* @param builder the player that's currently building
* @param failReason the reason the rebuild was cancelled
* @param skipChecks whether or not to skip the check for the rebuild not being completed
* @param failReason the reason the quickbuild was cancelled
* @param skipChecks whether or not to skip the check for the quickbuild not being completed
*/
void CancelRebuild(Entity* builder, eQuickBuildFailReason failReason, bool skipChecks = false);
void CancelQuickBuild(Entity* builder, eQuickBuildFailReason failReason, bool skipChecks = false);
private:
/**
* Whether or not the quickbuild state has been changed since we last serialized it.
@@ -225,37 +225,37 @@ private:
bool m_StateDirty = true;
/**
* The state the rebuild is currently in
* The state the quickbuild is currently in
*/
eRebuildState m_State = eRebuildState::OPEN;
eQuickBuildState m_State = eQuickBuildState::OPEN;
/**
* The time that has passed since initiating the rebuild
* The time that has passed since initiating the quickbuild
*/
float m_Timer = 0;
/**
* The time that has passed before completing the rebuild
* The time that has passed before completing the quickbuild
*/
float m_TimerIncomplete = 0;
/**
* The position that the rebuild activator is spawned at
* The position that the quickbuild activator is spawned at
*/
NiPoint3 m_ActivatorPosition = NiPoint3::ZERO;
/**
* The entity that represents the rebuild activator
* The entity that represents the quickbuild activator
*/
Entity* m_Activator = nullptr;
/**
* The ID of the entity that represents the rebuild activator
* The ID of the entity that represents the quickbuild activator
*/
LWOOBJID m_ActivatorId = LWOOBJID_EMPTY;
/**
* Triggers the blinking that indicates that the rebuild is resetting
* Triggers the blinking that indicates that the quickbuild is resetting
*/
bool m_ShowResetEffect = false;
@@ -265,27 +265,27 @@ private:
float m_Taken = 0;
/**
* The callbacks that are called when the rebuild is completed
* The callbacks that are called when the quickbuild is completed
*/
std::vector<std::function<void(Entity* user)>> m_RebuildCompleteCallbacks{};
std::vector<std::function<void(Entity* user)>> m_QuickBuildCompleteCallbacks{};
/**
* The callbacks that are called when the rebuild state is updated
* The callbacks that are called when the quickbuild state is updated
*/
std::vector<std::function<void(eRebuildState state)>> m_RebuildStateCallbacks{};
std::vector<std::function<void(eQuickBuildState state)>> m_QuickBuildStateCallbacks{};
/**
* The time it takes for the rebuild to reset after being completed
* The time it takes for the quickbuild to reset after being completed
*/
float m_ResetTime = 0;
/**
* The time it takes to complete the rebuild
* The time it takes to complete the quickbuild
*/
float m_CompleteTime = 0;
/**
* The imagination that's deducted when completing the rebuild
* The imagination that's deducted when completing the quickbuild
*/
int m_TakeImagination = 0;
@@ -295,7 +295,7 @@ private:
bool m_Interruptible = false;
/**
* Whether or not this rebuild entity also has an activator attached. If not a new one will be spawned
* Whether or not this quickbuild entity also has an activator attached. If not a new one will be spawned
*/
bool m_SelfActivator = false;
@@ -305,7 +305,7 @@ private:
std::vector<int> m_CustomModules{};
/**
* The activity ID that players partake in when doing this rebuild
* The activity ID that players partake in when doing this quickbuild
*/
int m_ActivityId = 0;
@@ -315,7 +315,7 @@ private:
int m_PostImaginationCost = 0;
/**
* The time it takes for the rebuild to reset when it's not completed yet
* The time it takes for the quickbuild to reset when it's not completed yet
*/
float m_TimeBeforeSmash = 0;
@@ -325,7 +325,7 @@ private:
float m_TimeBeforeDrain = 0;
/**
* The amount of imagination that was drained when building this rebuild
* The amount of imagination that was drained when building this quickbuild
*/
int m_DrainedImagination = 0;
@@ -340,26 +340,26 @@ private:
float m_SoftTimer = 0;
/**
* The ID of the entity that's currently building the rebuild
* The ID of the entity that's currently building the quickbuild
*/
LWOOBJID m_Builder = LWOOBJID_EMPTY;
/**
* Preconditions to be met before being able to start the rebuild
* Preconditions to be met before being able to start the quickbuild
*/
PreconditionExpression* m_Precondition = nullptr;
/**
* Starts the rebuild for a certain entity
* @param user the entity to start the rebuild
* Starts the quickbuild for a certain entity
* @param user the entity to start the quickbuild
*/
void StartRebuild(Entity* user);
void StartQuickBuild(Entity* user);
/**
* Completes the rebuild for an entity, dropping loot and despawning the activator
* @param user the entity that completed the rebuild
* Completes the quickbuild for an entity, dropping loot and despawning the activator
* @param user the entity that completed the quickbuild
*/
void CompleteRebuild(Entity* user);
void CompleteQuickBuild(Entity* user);
};
#endif // REBUILDCOMPONENT_H
#endif // QUICKBUILDCOMPONENT_H

View File

@@ -4,7 +4,7 @@
#include "CDRailActivatorComponent.h"
#include "Entity.h"
#include "GameMessages.h"
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "Game.h"
#include "Logger.h"
#include "RenderComponent.h"
@@ -43,13 +43,13 @@ RailActivatorComponent::RailActivatorComponent(Entity* parent, int32_t component
RailActivatorComponent::~RailActivatorComponent() = default;
void RailActivatorComponent::OnUse(Entity* originator) {
auto* rebuildComponent = m_Parent->GetComponent<RebuildComponent>();
if (rebuildComponent != nullptr && rebuildComponent->GetState() != eRebuildState::COMPLETED)
auto* quickBuildComponent = m_Parent->GetComponent<QuickBuildComponent>();
if (quickBuildComponent != nullptr && quickBuildComponent->GetState() != eQuickBuildState::COMPLETED)
return;
if (rebuildComponent != nullptr) {
if (quickBuildComponent != nullptr) {
// Don't want it to be destroyed while a player is using it
rebuildComponent->SetResetTime(rebuildComponent->GetResetTime() + 10.0f);
quickBuildComponent->SetResetTime(quickBuildComponent->GetResetTime() + 10.0f);
}
m_EntitiesOnRail.push_back(originator->GetObjectID());
@@ -116,11 +116,11 @@ void RailActivatorComponent::OnCancelRailMovement(Entity* originator) {
true, true, true, true, true, true, true
);
auto* rebuildComponent = m_Parent->GetComponent<RebuildComponent>();
auto* quickBuildComponent = m_Parent->GetComponent<QuickBuildComponent>();
if (rebuildComponent != nullptr) {
if (quickBuildComponent != nullptr) {
// Set back reset time
rebuildComponent->SetResetTime(rebuildComponent->GetResetTime() - 10.0f);
quickBuildComponent->SetResetTime(quickBuildComponent->GetResetTime() - 10.0f);
}
if (std::find(m_EntitiesOnRail.begin(), m_EntitiesOnRail.end(), originator->GetObjectID()) != m_EntitiesOnRail.end()) {

View File

@@ -10,7 +10,7 @@ SwitchComponent::SwitchComponent(Entity* parent) : Component(parent) {
m_ResetTime = m_Parent->GetVarAs<int32_t>(u"switch_reset_time");
m_Rebuild = m_Parent->GetComponent<RebuildComponent>();
m_QuickBuild = m_Parent->GetComponent<QuickBuildComponent>();
}
SwitchComponent::~SwitchComponent() {
@@ -39,8 +39,8 @@ bool SwitchComponent::GetActive() const {
void SwitchComponent::EntityEnter(Entity* entity) {
if (!m_Active) {
if (m_Rebuild) {
if (m_Rebuild->GetState() != eRebuildState::COMPLETED) return;
if (m_QuickBuild) {
if (m_QuickBuild->GetState() != eQuickBuildState::COMPLETED) return;
}
m_Active = true;
if (!m_Parent) return;

View File

@@ -5,7 +5,7 @@
#include "Entity.h"
#include "GameMessages.h"
#include "EntityManager.h"
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "BouncerComponent.h"
#include <algorithm>
#include "Component.h"
@@ -75,7 +75,7 @@ private:
/**
* Attached rebuild component.
*/
RebuildComponent* m_Rebuild;
QuickBuildComponent* m_QuickBuild;
/**
* If the switch is on or off.

View File

@@ -10,7 +10,7 @@
#include "MissionComponent.h"
#include "PhantomPhysicsComponent.h"
#include "Player.h"
#include "RebuildComponent.h"
#include "QuickBuildComponent.h"
#include "SkillComponent.h"
#include "eEndBehavior.h"
@@ -205,12 +205,12 @@ void TriggerComponent::HandleToggleTrigger(Entity* targetEntity, std::string arg
}
void TriggerComponent::HandleResetRebuild(Entity* targetEntity, std::string args){
auto* rebuildComponent = targetEntity->GetComponent<RebuildComponent>();
if (!rebuildComponent) {
auto* quickBuildComponent = targetEntity->GetComponent<QuickBuildComponent>();
if (!quickBuildComponent) {
LOG_DEBUG("Rebuild component not found!");
return;
}
rebuildComponent->ResetRebuild(args == "1");
quickBuildComponent->ResetQuickBuild(args == "1");
}
void TriggerComponent::HandleMoveObject(Entity* targetEntity, std::vector<std::string> argArray){