mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-12-21 03:35:05 -06:00
Compare commits
9 Commits
update-com
...
FallSpeedB
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e7be44ab6 | |||
| 37f60d9177 | |||
| 7d3f538456 | |||
| 565b23227e | |||
| bf0ae6f181 | |||
| b1cd2776fa | |||
| 4ff5afd9f7 | |||
|
|
ce931c2cfe | ||
| 4e5b38d602 |
@@ -273,7 +273,7 @@ enum class eGameMessageType : uint16_t {
|
|||||||
TEAM_SET_LEADER = 1557,
|
TEAM_SET_LEADER = 1557,
|
||||||
TEAM_INVITE_CONFIRM = 1558,
|
TEAM_INVITE_CONFIRM = 1558,
|
||||||
TEAM_GET_STATUS_RESPONSE = 1559,
|
TEAM_GET_STATUS_RESPONSE = 1559,
|
||||||
TEAM_ADD_PLAYER = 1526,
|
TEAM_ADD_PLAYER = 1562,
|
||||||
TEAM_REMOVE_PLAYER = 1563,
|
TEAM_REMOVE_PLAYER = 1563,
|
||||||
START_CELEBRATION_EFFECT = 1618,
|
START_CELEBRATION_EFFECT = 1618,
|
||||||
ADD_BUFF = 1647,
|
ADD_BUFF = 1647,
|
||||||
|
|||||||
@@ -61,6 +61,7 @@
|
|||||||
#include "SpeedBehavior.h"
|
#include "SpeedBehavior.h"
|
||||||
#include "DamageReductionBehavior.h"
|
#include "DamageReductionBehavior.h"
|
||||||
#include "JetPackBehavior.h"
|
#include "JetPackBehavior.h"
|
||||||
|
#include "FallSpeedBehavior.h"
|
||||||
#include "ChangeIdleFlagsBehavior.h"
|
#include "ChangeIdleFlagsBehavior.h"
|
||||||
#include "DarkInspirationBehavior.h"
|
#include "DarkInspirationBehavior.h"
|
||||||
|
|
||||||
@@ -164,7 +165,9 @@ Behavior* Behavior::CreateBehavior(const uint32_t behaviorId) {
|
|||||||
case BehaviorTemplates::BEHAVIOR_CAR_BOOST:
|
case BehaviorTemplates::BEHAVIOR_CAR_BOOST:
|
||||||
behavior = new CarBoostBehavior(behaviorId);
|
behavior = new CarBoostBehavior(behaviorId);
|
||||||
break;
|
break;
|
||||||
case BehaviorTemplates::BEHAVIOR_FALL_SPEED: break;
|
case BehaviorTemplates::BEHAVIOR_FALL_SPEED:
|
||||||
|
behavior = new FallSpeedBehavior(behaviorId);
|
||||||
|
break;
|
||||||
case BehaviorTemplates::BEHAVIOR_SHIELD: break;
|
case BehaviorTemplates::BEHAVIOR_SHIELD: break;
|
||||||
case BehaviorTemplates::BEHAVIOR_REPAIR_ARMOR:
|
case BehaviorTemplates::BEHAVIOR_REPAIR_ARMOR:
|
||||||
behavior = new RepairBehavior(behaviorId);
|
behavior = new RepairBehavior(behaviorId);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ set(DGAME_DBEHAVIORS_SOURCES "AirMovementBehavior.cpp"
|
|||||||
"DurationBehavior.cpp"
|
"DurationBehavior.cpp"
|
||||||
"EmptyBehavior.cpp"
|
"EmptyBehavior.cpp"
|
||||||
"EndBehavior.cpp"
|
"EndBehavior.cpp"
|
||||||
|
"FallSpeedBehavior.cpp"
|
||||||
"ForceMovementBehavior.cpp"
|
"ForceMovementBehavior.cpp"
|
||||||
"HealBehavior.cpp"
|
"HealBehavior.cpp"
|
||||||
"ImaginationBehavior.cpp"
|
"ImaginationBehavior.cpp"
|
||||||
|
|||||||
50
dGame/dBehaviors/FallSpeedBehavior.cpp
Normal file
50
dGame/dBehaviors/FallSpeedBehavior.cpp
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#include "FallSpeedBehavior.h"
|
||||||
|
|
||||||
|
#include "ControllablePhysicsComponent.h"
|
||||||
|
#include "BehaviorContext.h"
|
||||||
|
#include "BehaviorBranchContext.h"
|
||||||
|
|
||||||
|
|
||||||
|
void FallSpeedBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) {
|
||||||
|
// make sure required parameter has non-default value
|
||||||
|
if (m_PercentSlowed == 0.0f) return;
|
||||||
|
auto* target = EntityManager::Instance()->GetEntity(branch.target);
|
||||||
|
if (!target) return;
|
||||||
|
|
||||||
|
auto* controllablePhysicsComponent = target->GetComponent<ControllablePhysicsComponent>();
|
||||||
|
if (!controllablePhysicsComponent) return;
|
||||||
|
controllablePhysicsComponent->SetGravityScale(m_PercentSlowed);
|
||||||
|
EntityManager::Instance()->SerializeEntity(target);
|
||||||
|
|
||||||
|
if (branch.duration > 0.0f) {
|
||||||
|
context->RegisterTimerBehavior(this, branch);
|
||||||
|
} else if (branch.start > 0) {
|
||||||
|
context->RegisterEndBehavior(this, branch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FallSpeedBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) {
|
||||||
|
Handle(context, bitStream, branch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FallSpeedBehavior::Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) {
|
||||||
|
End(context, branch, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FallSpeedBehavior::UnCast(BehaviorContext* context, BehaviorBranchContext branch) {
|
||||||
|
End(context, branch, LWOOBJID_EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FallSpeedBehavior::End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) {
|
||||||
|
auto* target = EntityManager::Instance()->GetEntity(branch.target);
|
||||||
|
if (!target) return;
|
||||||
|
|
||||||
|
auto* controllablePhysicsComponent = target->GetComponent<ControllablePhysicsComponent>();
|
||||||
|
if (!controllablePhysicsComponent) return;
|
||||||
|
controllablePhysicsComponent->SetGravityScale(1);
|
||||||
|
EntityManager::Instance()->SerializeEntity(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FallSpeedBehavior::Load(){
|
||||||
|
m_PercentSlowed = GetFloat("percent_slowed");
|
||||||
|
}
|
||||||
18
dGame/dBehaviors/FallSpeedBehavior.h
Normal file
18
dGame/dBehaviors/FallSpeedBehavior.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Behavior.h"
|
||||||
|
|
||||||
|
class FallSpeedBehavior final : public Behavior
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit FallSpeedBehavior(const uint32_t behaviorId) : Behavior(behaviorId) {}
|
||||||
|
|
||||||
|
void Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override;
|
||||||
|
void Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) override;
|
||||||
|
void Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override;
|
||||||
|
void End(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) override;
|
||||||
|
void UnCast(BehaviorContext* context, BehaviorBranchContext branch) override;
|
||||||
|
void Load() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
float m_PercentSlowed;
|
||||||
|
};
|
||||||
@@ -320,7 +320,7 @@ void ControllablePhysicsComponent::RemoveSpeedboost(float value) {
|
|||||||
|
|
||||||
// Recalculate speedboost since we removed one
|
// Recalculate speedboost since we removed one
|
||||||
m_SpeedBoost = 0.0f;
|
m_SpeedBoost = 0.0f;
|
||||||
if (m_ActiveSpeedBoosts.size() == 0) { // no active speed boosts left, so return to base speed
|
if (m_ActiveSpeedBoosts.empty()) { // no active speed boosts left, so return to base speed
|
||||||
auto* levelProgressionComponent = m_Parent->GetComponent<LevelProgressionComponent>();
|
auto* levelProgressionComponent = m_Parent->GetComponent<LevelProgressionComponent>();
|
||||||
if (levelProgressionComponent) m_SpeedBoost = levelProgressionComponent->GetSpeedBase();
|
if (levelProgressionComponent) m_SpeedBoost = levelProgressionComponent->GetSpeedBase();
|
||||||
} else { // Used the last applied speedboost
|
} else { // Used the last applied speedboost
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ public:
|
|||||||
* The speed boosts of this component.
|
* The speed boosts of this component.
|
||||||
* @return All active Speed boosts for this component.
|
* @return All active Speed boosts for this component.
|
||||||
*/
|
*/
|
||||||
std::vector<float> GetActiveSpeedboosts() { return m_ActivePickupRadiusScales; };
|
std::vector<float> GetActiveSpeedboosts() { return m_ActiveSpeedBoosts; };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activates the Bubble Buff
|
* Activates the Bubble Buff
|
||||||
|
|||||||
@@ -362,8 +362,7 @@ void RacingControlComponent::OnRacingPlayerInfoResetFinished(Entity* player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RacingControlComponent::HandleMessageBoxResponse(Entity* player,
|
void RacingControlComponent::HandleMessageBoxResponse(Entity* player, int32_t button, const std::string& id) {
|
||||||
const std::string& id) {
|
|
||||||
auto* data = GetPlayerData(player->GetObjectID());
|
auto* data = GetPlayerData(player->GetObjectID());
|
||||||
|
|
||||||
if (data == nullptr) {
|
if (data == nullptr) {
|
||||||
@@ -405,7 +404,7 @@ void RacingControlComponent::HandleMessageBoxResponse(Entity* player,
|
|||||||
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::LAST_PLACE_FINISH); // Finished first place in specific world.
|
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::LAST_PLACE_FINISH); // Finished first place in specific world.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (id == "ACT_RACE_EXIT_THE_RACE?" || id == "Exit") {
|
} else if ((id == "ACT_RACE_EXIT_THE_RACE?" || id == "Exit") && button == m_ActivityExitConfirm) {
|
||||||
auto* vehicle = EntityManager::Instance()->GetEntity(data->vehicleID);
|
auto* vehicle = EntityManager::Instance()->GetEntity(data->vehicleID);
|
||||||
|
|
||||||
if (vehicle == nullptr) {
|
if (vehicle == nullptr) {
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Invoked when the player responds to the GUI.
|
* Invoked when the player responds to the GUI.
|
||||||
*/
|
*/
|
||||||
void HandleMessageBoxResponse(Entity* player, const std::string& id);
|
void HandleMessageBoxResponse(Entity* player, int32_t button, const std::string& id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the racing data from a player's LWOOBJID.
|
* Get the racing data from a player's LWOOBJID.
|
||||||
@@ -246,4 +246,9 @@ private:
|
|||||||
float m_EmptyTimer;
|
float m_EmptyTimer;
|
||||||
|
|
||||||
bool m_SoloRacing;
|
bool m_SoloRacing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value for message box response to know if we are exiting the race via the activity dialogue
|
||||||
|
*/
|
||||||
|
const int32_t m_ActivityExitConfirm = 1;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -235,6 +235,8 @@ void TriggerComponent::HandleRotateObject(Entity* targetEntity, std::vector<std:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TriggerComponent::HandlePushObject(Entity* targetEntity, std::vector<std::string> argArray){
|
void TriggerComponent::HandlePushObject(Entity* targetEntity, std::vector<std::string> argArray){
|
||||||
|
if (argArray.size() < 3) return;
|
||||||
|
|
||||||
auto* phantomPhysicsComponent = m_Parent->GetComponent<PhantomPhysicsComponent>();
|
auto* phantomPhysicsComponent = m_Parent->GetComponent<PhantomPhysicsComponent>();
|
||||||
if (!phantomPhysicsComponent) {
|
if (!phantomPhysicsComponent) {
|
||||||
Game::logger->LogDebug("TriggerComponent::HandlePushObject", "Phantom Physics component not found!");
|
Game::logger->LogDebug("TriggerComponent::HandlePushObject", "Phantom Physics component not found!");
|
||||||
|
|||||||
@@ -3891,7 +3891,7 @@ void GameMessages::HandleMessageBoxResponse(RakNet::BitStream* inStream, Entity*
|
|||||||
auto* racingControlComponent = entity->GetComponent<RacingControlComponent>();
|
auto* racingControlComponent = entity->GetComponent<RacingControlComponent>();
|
||||||
|
|
||||||
if (racingControlComponent != nullptr) {
|
if (racingControlComponent != nullptr) {
|
||||||
racingControlComponent->HandleMessageBoxResponse(userEntity, GeneralUtils::UTF16ToWTF8(identifier));
|
racingControlComponent->HandleMessageBoxResponse(userEntity, iButton, GeneralUtils::UTF16ToWTF8(identifier));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto* shootingGallery : EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::SHOOTING_GALLERY)) {
|
for (auto* shootingGallery : EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::SHOOTING_GALLERY)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user