Update in response to feedback

This commit is contained in:
jadebenn 2024-02-03 16:42:24 -06:00
parent 74d8a5b167
commit 27f69d6152
10 changed files with 34 additions and 29 deletions

View File

@ -176,7 +176,7 @@ namespace GeneralUtils {
template <std::floating_point T> template <std::floating_point T>
[[nodiscard]] std::optional<T> TryParse(const char* const str, const char* const strEnd = NULL) noexcept [[nodiscard]] std::optional<T> TryParse(const char* const str, const char* const strEnd = NULL) noexcept
try { try {
return std::make_optional<T>(std::stold(str)); return std::stold(str);
} catch (...) { } catch (...) {
return std::nullopt; return std::nullopt;
} }

View File

@ -27,6 +27,13 @@ constexpr uint32_t highFrameDelta = FRAMES_TO_MS(highFramerate);
constexpr uint32_t mediumFrameDelta = FRAMES_TO_MS(mediumFramerate); constexpr uint32_t mediumFrameDelta = FRAMES_TO_MS(mediumFramerate);
constexpr uint32_t lowFrameDelta = FRAMES_TO_MS(lowFramerate); constexpr uint32_t lowFrameDelta = FRAMES_TO_MS(lowFramerate);
//========== CLIENT VERSION DEFAULTS ===========
namespace ClientVersion {
constexpr uint16_t major = 1;
constexpr uint16_t current = 10;
constexpr uint16_t minor = 64;
}
//========== MACROS =========== //========== MACROS ===========
#define HEADER_SIZE 8 #define HEADER_SIZE 8

View File

@ -22,8 +22,8 @@ TriggerComponent::TriggerComponent(Entity* parent, const std::string triggerInfo
std::vector<std::string> tokens = GeneralUtils::SplitString(triggerInfo, ':'); std::vector<std::string> tokens = GeneralUtils::SplitString(triggerInfo, ':');
const auto sceneID = GeneralUtils::TryParse<uint32_t>(tokens.at(0)).value(); const auto sceneID = GeneralUtils::TryParse<uint32_t>(tokens.at(0)).value_or(0);
const auto triggerID = GeneralUtils::TryParse<uint32_t>(tokens.at(1)).value(); const auto triggerID = GeneralUtils::TryParse<uint32_t>(tokens.at(1)).value_or(0);
m_Trigger = Game::zoneManager->GetZone()->GetTrigger(sceneID, triggerID); m_Trigger = Game::zoneManager->GetZone()->GetTrigger(sceneID, triggerID);
@ -189,7 +189,7 @@ void TriggerComponent::HandleFireEvent(Entity* targetEntity, std::string args) {
} }
void TriggerComponent::HandleDestroyObject(Entity* targetEntity, std::string args){ void TriggerComponent::HandleDestroyObject(Entity* targetEntity, std::string args){
const eKillType killType = GeneralUtils::TryParse<eKillType>(args).value_or(eKillType::SILENT); const eKillType killType = GeneralUtils::TryParse<eKillType>(args).value_or(eKillType::VIOLENT);
targetEntity->Smash(m_Parent->GetObjectID(), killType); targetEntity->Smash(m_Parent->GetObjectID(), killType);
} }
@ -254,7 +254,7 @@ void TriggerComponent::HandleRepelObject(Entity* targetEntity, std::string args)
LOG_DEBUG("Phantom Physics component not found!"); LOG_DEBUG("Phantom Physics component not found!");
return; return;
} }
const float forceMultiplier = GeneralUtils::TryParse<float>(args).value(); const float forceMultiplier = GeneralUtils::TryParse<float>(args).value_or(1.0f);
phantomPhysicsComponent->SetPhysicsEffectActive(true); phantomPhysicsComponent->SetPhysicsEffectActive(true);
phantomPhysicsComponent->SetEffectType(ePhysicsEffectType::REPULSE); phantomPhysicsComponent->SetEffectType(ePhysicsEffectType::REPULSE);
@ -356,7 +356,7 @@ void TriggerComponent::HandleCastSkill(Entity* targetEntity, std::string args){
LOG_DEBUG("Skill component not found!"); LOG_DEBUG("Skill component not found!");
return; return;
} }
const uint32_t skillId = GeneralUtils::TryParse<uint32_t>(args).value(); const uint32_t skillId = GeneralUtils::TryParse<uint32_t>(args).value_or(0);
skillComponent->CastSkill(skillId, targetEntity->GetObjectID()); skillComponent->CastSkill(skillId, targetEntity->GetObjectID());
} }

View File

@ -5,7 +5,7 @@
#include "dCommonVars.h" #include "dCommonVars.h"
BehaviorMessageBase::BehaviorMessageBase(AMFArrayValue* arguments) { BehaviorMessageBase::BehaviorMessageBase(AMFArrayValue* arguments) {
this->behaviorId = GetBehaviorIdFromArgument(arguments); m_BehaviorId = GetBehaviorIdFromArgument(arguments);
} }
int32_t BehaviorMessageBase::GetBehaviorIdFromArgument(AMFArrayValue* arguments) { int32_t BehaviorMessageBase::GetBehaviorIdFromArgument(AMFArrayValue* arguments) {
@ -13,13 +13,13 @@ int32_t BehaviorMessageBase::GetBehaviorIdFromArgument(AMFArrayValue* arguments)
auto* behaviorIDValue = arguments->Get<std::string>(key); auto* behaviorIDValue = arguments->Get<std::string>(key);
if (behaviorIDValue && behaviorIDValue->GetValueType() == eAmf::String) { if (behaviorIDValue && behaviorIDValue->GetValueType() == eAmf::String) {
this->behaviorId = m_BehaviorId =
GeneralUtils::TryParse<int32_t>(behaviorIDValue->GetValue()).value_or(this->behaviorId); GeneralUtils::TryParse<int32_t>(behaviorIDValue->GetValue()).value_or(m_BehaviorId);
} else if (arguments->Get(key) && arguments->Get(key)->GetValueType() != eAmf::Undefined) { } else if (arguments->Get(key) && arguments->Get(key)->GetValueType() != eAmf::Undefined) {
throw std::invalid_argument("Unable to find behavior ID"); throw std::invalid_argument("Unable to find behavior ID");
} }
return this->behaviorId; return m_BehaviorId;
} }
int32_t BehaviorMessageBase::GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName) { int32_t BehaviorMessageBase::GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName) {

View File

@ -16,13 +16,13 @@ enum class BehaviorState : uint32_t;
class BehaviorMessageBase { class BehaviorMessageBase {
public: public:
static inline int32_t DefaultBehaviorId = -1; static inline int32_t DefaultBehaviorId = -1;
const int32_t GetBehaviorId() const { return behaviorId; }; const int32_t GetBehaviorId() const { return m_BehaviorId; };
bool IsDefaultBehaviorId() { return behaviorId == DefaultBehaviorId; }; bool IsDefaultBehaviorId() { return m_BehaviorId == DefaultBehaviorId; };
BehaviorMessageBase(AMFArrayValue* arguments); BehaviorMessageBase(AMFArrayValue* arguments);
protected: protected:
int32_t GetBehaviorIdFromArgument(AMFArrayValue* arguments); int32_t GetBehaviorIdFromArgument(AMFArrayValue* arguments);
int32_t GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName = "actionIndex"); int32_t GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName = "actionIndex");
int32_t behaviorId = DefaultBehaviorId; int32_t m_BehaviorId = DefaultBehaviorId;
}; };
#endif //!__BEHAVIORMESSAGEBASE__H__ #endif //!__BEHAVIORMESSAGEBASE__H__

View File

@ -1902,8 +1902,6 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
if (chatCommand == "inspect" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) { if (chatCommand == "inspect" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
Entity* closest = nullptr; Entity* closest = nullptr;
//eReplicaComponentType component;
std::u16string ldf; std::u16string ldf;
bool isLDF = false; bool isLDF = false;

View File

@ -18,7 +18,7 @@ InstanceManager::InstanceManager(Logger* logger, const std::string& externalIP)
mLogger = logger; mLogger = logger;
mExternalIP = externalIP; mExternalIP = externalIP;
m_LastPort = m_LastPort =
GeneralUtils::TryParse<decltype(m_LastPort)>(Game::config->GetValue("world_port_start")).value_or(m_LastPort); GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("world_port_start")).value_or(m_LastPort);
m_LastInstanceID = LWOINSTANCEID_INVALID; m_LastInstanceID = LWOINSTANCEID_INVALID;
} }

View File

@ -241,12 +241,12 @@ void AuthPackets::SendLoginResponse(dServer* server, const SystemAddress& sysAdd
loginResponse.Write(LUString(Game::config->GetValue("event_7"))); loginResponse.Write(LUString(Game::config->GetValue("event_7")));
loginResponse.Write(LUString(Game::config->GetValue("event_8"))); loginResponse.Write(LUString(Game::config->GetValue("event_8")));
uint16_t version_major = 1; const uint16_t version_major =
uint16_t version_current = 10; GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_major")).value_or(ClientVersion::major);
uint16_t version_minor = 64; const uint16_t version_current =
version_major = GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_major")).value_or(version_major); GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_current")).value_or(ClientVersion::current);
version_current = GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_current")).value_or(version_current); const uint16_t version_minor =
version_minor = GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_minor")).value_or(version_minor); GeneralUtils::TryParse<uint16_t>(Game::config->GetValue("version_minor")).value_or(ClientVersion::minor);
loginResponse.Write(version_major); loginResponse.Write(version_major);
loginResponse.Write(version_current); loginResponse.Write(version_current);

View File

@ -144,7 +144,7 @@ void AmSkullkinTower::OnChildRemoved(Entity* self, Entity* child) {
); );
for (const auto& mission : missions) { for (const auto& mission : missions) {
const auto missionID = GeneralUtils::TryParse<LOT>(mission); const auto missionID = GeneralUtils::TryParse<int32_t>(mission);
if (!missionID) continue; if (!missionID) continue;
missionIDs.push_back(missionID.value()); missionIDs.push_back(missionID.value());

View File

@ -211,12 +211,12 @@ void Level::ReadSceneObjectDataChunk(std::istream& file, Header& header) {
CDFeatureGatingTable* featureGatingTable = CDClientManager::Instance().GetTable<CDFeatureGatingTable>(); CDFeatureGatingTable* featureGatingTable = CDClientManager::Instance().GetTable<CDFeatureGatingTable>();
CDFeatureGating gating; CDFeatureGating gating;
gating.major = 1; gating.major =
gating.current = 10; GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_major")).value_or(ClientVersion::major);
gating.minor = 64; gating.current =
gating.major = GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_major")).value_or(gating.major); GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_current")).value_or(ClientVersion::current);
gating.current = GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_current")).value_or(gating.current); gating.minor =
gating.minor = GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_minor")).value_or(gating.minor); GeneralUtils::TryParse<int32_t>(Game::config->GetValue("version_minor")).value_or(ClientVersion::minor);
const auto zoneControlObject = Game::zoneManager->GetZoneControlObject(); const auto zoneControlObject = Game::zoneManager->GetZoneControlObject();
DluAssert(zoneControlObject != nullptr); DluAssert(zoneControlObject != nullptr);