mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-06 02:34:04 +00:00
implement jetpack behavior and remove hardcoded jetpacks (#411)
This commit is contained in:
@@ -55,6 +55,7 @@
|
||||
#include "SkillEventBehavior.h"
|
||||
#include "SpeedBehavior.h"
|
||||
#include "DamageReductionBehavior.h"
|
||||
#include "JetPackBehavior.h"
|
||||
|
||||
//CDClient includes
|
||||
#include "CDBehaviorParameterTable.h"
|
||||
@@ -183,7 +184,9 @@ Behavior* Behavior::CreateBehavior(const uint32_t behaviorId)
|
||||
case BehaviorTemplates::BEHAVIOR_BUFF:
|
||||
behavior = new BuffBehavior(behaviorId);
|
||||
break;
|
||||
case BehaviorTemplates::BEHAVIOR_JETPACK: break;
|
||||
case BehaviorTemplates::BEHAVIOR_JETPACK:
|
||||
behavior = new JetPackBehavior(behaviorId);
|
||||
break;
|
||||
case BehaviorTemplates::BEHAVIOR_SKILL_EVENT:
|
||||
behavior = new SkillEventBehavior(behaviorId);
|
||||
break;
|
||||
@@ -455,21 +458,21 @@ Behavior::Behavior(const uint32_t behaviorId)
|
||||
}
|
||||
|
||||
|
||||
float Behavior::GetFloat(const std::string& name) const
|
||||
float Behavior::GetFloat(const std::string& name, const float defaultValue) const
|
||||
{
|
||||
return BehaviorParameterTable->GetEntry(this->m_behaviorId, name);
|
||||
return BehaviorParameterTable->GetEntry(this->m_behaviorId, name, defaultValue);
|
||||
}
|
||||
|
||||
|
||||
bool Behavior::GetBoolean(const std::string& name) const
|
||||
bool Behavior::GetBoolean(const std::string& name, const bool defaultValue) const
|
||||
{
|
||||
return GetFloat(name) > 0;
|
||||
return GetFloat(name, defaultValue) > 0;
|
||||
}
|
||||
|
||||
|
||||
int32_t Behavior::GetInt(const std::string& name) const
|
||||
int32_t Behavior::GetInt(const std::string& name, const int defaultValue) const
|
||||
{
|
||||
return static_cast<int32_t>(GetFloat(name));
|
||||
return static_cast<int32_t>(GetFloat(name, defaultValue));
|
||||
}
|
||||
|
||||
|
||||
|
@@ -49,11 +49,11 @@ public:
|
||||
* Behavior parameters
|
||||
*/
|
||||
|
||||
float GetFloat(const std::string& name) const;
|
||||
float GetFloat(const std::string& name, const float defaultValue = 0) const;
|
||||
|
||||
bool GetBoolean(const std::string& name) const;
|
||||
bool GetBoolean(const std::string& name, const bool defaultValue = false) const;
|
||||
|
||||
int32_t GetInt(const std::string& name) const;
|
||||
int32_t GetInt(const std::string& name, const int32_t defaultValue = 0) const;
|
||||
|
||||
Behavior* GetAction(const std::string& name) const;
|
||||
|
||||
|
29
dGame/dBehaviors/JetPackBehavior.cpp
Normal file
29
dGame/dBehaviors/JetPackBehavior.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include "JetPackBehavior.h"
|
||||
|
||||
#include "BehaviorBranchContext.h"
|
||||
#include "GameMessages.h"
|
||||
|
||||
void JetPackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) {
|
||||
auto* entity = EntityManager::Instance()->GetEntity(branch.target);
|
||||
|
||||
GameMessages::SendSetJetPackMode(entity, true, this->m_BypassChecks, this->m_EnableHover, this->m_effectId, this->m_Airspeed, this->m_MaxAirspeed, this->m_VerticalVelocity, this->m_WarningEffectID);
|
||||
}
|
||||
|
||||
void JetPackBehavior::UnCast(BehaviorContext* context, BehaviorBranchContext branch) {
|
||||
auto* entity = EntityManager::Instance()->GetEntity(branch.target);
|
||||
|
||||
GameMessages::SendSetJetPackMode(entity, false);
|
||||
}
|
||||
|
||||
void JetPackBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, const BehaviorBranchContext branch) {
|
||||
Handle(context, bit_stream, branch);
|
||||
}
|
||||
|
||||
void JetPackBehavior::Load() {
|
||||
this->m_WarningEffectID = GetInt("warning_effect_id");
|
||||
this->m_Airspeed = GetFloat("airspeed");
|
||||
this->m_MaxAirspeed = GetFloat("max_airspeed");
|
||||
this->m_VerticalVelocity = GetFloat("vertical_velocity");
|
||||
this->m_EnableHover = GetBoolean("enable_hover");
|
||||
this->m_BypassChecks = GetBoolean("bypass_checks", true);
|
||||
}
|
28
dGame/dBehaviors/JetPackBehavior.h
Normal file
28
dGame/dBehaviors/JetPackBehavior.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
#include "Behavior.h"
|
||||
|
||||
class JetPackBehavior final : public Behavior
|
||||
{
|
||||
public:
|
||||
int32_t m_WarningEffectID;
|
||||
float m_Airspeed;
|
||||
float m_MaxAirspeed;
|
||||
float m_VerticalVelocity;
|
||||
bool m_EnableHover;
|
||||
bool m_BypassChecks = true; // from what I can tell this defaulted true in live
|
||||
|
||||
/*
|
||||
* Inherited
|
||||
*/
|
||||
|
||||
explicit JetPackBehavior(const uint32_t behavior_id) : Behavior(behavior_id) {
|
||||
}
|
||||
|
||||
void Handle(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override;
|
||||
|
||||
void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override;
|
||||
|
||||
void Calculate(BehaviorContext* context, RakNet::BitStream* bit_stream, BehaviorBranchContext branch) override;
|
||||
|
||||
void Load() override;
|
||||
};
|
Reference in New Issue
Block a user