mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-04-26 16:46:31 +00:00
add resetting
This commit is contained in:
parent
e1913ffc9f
commit
51e4273a53
@ -20,6 +20,17 @@ ModelComponent::ModelComponent(Entity* parent) : Component(parent) {
|
|||||||
|
|
||||||
m_userModelID = m_Parent->GetVarAs<LWOOBJID>(u"userModelID");
|
m_userModelID = m_Parent->GetVarAs<LWOOBJID>(u"userModelID");
|
||||||
RegisterMsg(MessageType::Game::REQUEST_USE, this, &ModelComponent::OnRequestUse);
|
RegisterMsg(MessageType::Game::REQUEST_USE, this, &ModelComponent::OnRequestUse);
|
||||||
|
RegisterMsg(MessageType::Game::RESET_MODEL_TO_DEFAULTS, this, &ModelComponent::OnResetModelToDefaults);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ModelComponent::OnResetModelToDefaults(GameMessages::GameMsg& msg) {
|
||||||
|
auto& reset = static_cast<GameMessages::ResetModelToDefaults&>(msg);
|
||||||
|
for (auto& behavior : m_Behaviors) behavior.HandleMsg(reset);
|
||||||
|
GameMessages::UnSmash unsmash;
|
||||||
|
unsmash.target = GetParent()->GetObjectID();
|
||||||
|
unsmash.duration = 0.0f;
|
||||||
|
unsmash.Send(UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ModelComponent::OnRequestUse(GameMessages::GameMsg& msg) {
|
bool ModelComponent::OnRequestUse(GameMessages::GameMsg& msg) {
|
||||||
|
@ -33,6 +33,7 @@ public:
|
|||||||
void Update(float deltaTime) override;
|
void Update(float deltaTime) override;
|
||||||
|
|
||||||
bool OnRequestUse(GameMessages::GameMsg& msg);
|
bool OnRequestUse(GameMessages::GameMsg& msg);
|
||||||
|
bool OnResetModelToDefaults(GameMessages::GameMsg& msg);
|
||||||
|
|
||||||
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
||||||
|
|
||||||
|
@ -262,6 +262,9 @@ void PropertyManagementComponent::OnStartBuilding() {
|
|||||||
auto* modelComponent = model->GetComponent<ModelComponent>();
|
auto* modelComponent = model->GetComponent<ModelComponent>();
|
||||||
if (modelComponent) modelComponent->Pause();
|
if (modelComponent) modelComponent->Pause();
|
||||||
Game::entityManager->SerializeEntity(model);
|
Game::entityManager->SerializeEntity(model);
|
||||||
|
GameMessages::ResetModelToDefaults reset;
|
||||||
|
reset.target = modelID;
|
||||||
|
model->HandleMsg(reset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -285,6 +288,9 @@ void PropertyManagementComponent::OnFinishBuilding() {
|
|||||||
auto* modelComponent = model->GetComponent<ModelComponent>();
|
auto* modelComponent = model->GetComponent<ModelComponent>();
|
||||||
if (modelComponent) modelComponent->Resume();
|
if (modelComponent) modelComponent->Resume();
|
||||||
Game::entityManager->SerializeEntity(model);
|
Game::entityManager->SerializeEntity(model);
|
||||||
|
GameMessages::ResetModelToDefaults reset;
|
||||||
|
reset.target = modelID;
|
||||||
|
model->HandleMsg(reset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -829,6 +829,10 @@ namespace GameMessages {
|
|||||||
|
|
||||||
int32_t soundID{ -1 };
|
int32_t soundID{ -1 };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ResetModelToDefaults : public GameMsg {
|
||||||
|
ResetModelToDefaults() : GameMsg(MessageType::Game::RESET_MODEL_TO_DEFAULTS) {}
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GAMEMESSAGES_H
|
#endif // GAMEMESSAGES_H
|
||||||
|
@ -93,6 +93,12 @@ void PropertyBehavior::HandleMsg(GameMessages::RequestUse& msg) {
|
|||||||
m_States[m_ActiveState].HandleMsg(msg);
|
m_States[m_ActiveState].HandleMsg(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void PropertyBehavior::HandleMsg(GameMessages::ResetModelToDefaults& msg) {
|
||||||
|
m_ActiveState = BehaviorState::HOME_STATE;
|
||||||
|
for (auto& state : m_States | std::views::values) state.HandleMsg(msg);
|
||||||
|
}
|
||||||
|
|
||||||
void PropertyBehavior::SendBehaviorListToClient(AMFArrayValue& args) const {
|
void PropertyBehavior::SendBehaviorListToClient(AMFArrayValue& args) const {
|
||||||
args.Insert("id", std::to_string(m_BehaviorId));
|
args.Insert("id", std::to_string(m_BehaviorId));
|
||||||
args.Insert("name", m_Name);
|
args.Insert("name", m_Name);
|
||||||
|
@ -122,6 +122,11 @@ void State::HandleMsg(GameMessages::RequestUse& msg) {
|
|||||||
for (auto& strip : m_Strips) strip.HandleMsg(msg);
|
for (auto& strip : m_Strips) strip.HandleMsg(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void State::HandleMsg(GameMessages::ResetModelToDefaults& msg) {
|
||||||
|
for (auto& strip : m_Strips) strip.HandleMsg(msg);
|
||||||
|
}
|
||||||
|
|
||||||
bool State::IsEmpty() const {
|
bool State::IsEmpty() const {
|
||||||
for (const auto& strip : m_Strips) {
|
for (const auto& strip : m_Strips) {
|
||||||
if (!strip.IsEmpty()) return false;
|
if (!strip.IsEmpty()) return false;
|
||||||
|
@ -88,6 +88,13 @@ void Strip::HandleMsg(GameMessages::RequestUse& msg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void Strip::HandleMsg(GameMessages::ResetModelToDefaults& msg) {
|
||||||
|
m_WaitingForAction = false;
|
||||||
|
m_PausedTime = 0.0f;
|
||||||
|
m_NextActionIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void Strip::IncrementAction() {
|
void Strip::IncrementAction() {
|
||||||
if (m_Actions.empty()) return;
|
if (m_Actions.empty()) return;
|
||||||
m_NextActionIndex++;
|
m_NextActionIndex++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user