From 37e14979a4db8553323e0ee61c62014b6fe41a90 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Sun, 8 Jun 2025 12:14:35 -0700 Subject: [PATCH] fix: winter race orbs (#1810) Tested that script is loaded --- dCommon/LDFFormat.h | 6 +++ dScripts/CppScripts.cpp | 2 + dScripts/ai/RACING/CMakeLists.txt | 8 ++- .../ai/RACING/TRACK_NS_WINTER/CMakeLists.txt | 3 ++ .../TRACK_NS_WINTER/NsWinterRaceServer.cpp | 53 +++++++++++++++++++ .../TRACK_NS_WINTER/NsWinterRaceServer.h | 15 ++++++ 6 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 dScripts/ai/RACING/TRACK_NS_WINTER/CMakeLists.txt create mode 100644 dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.cpp create mode 100644 dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.h diff --git a/dCommon/LDFFormat.h b/dCommon/LDFFormat.h index 054ddb42..7c2e939b 100644 --- a/dCommon/LDFFormat.h +++ b/dCommon/LDFFormat.h @@ -83,6 +83,12 @@ public: this->value = value; } + //! Initializer + LDFData(const std::string& key, const T& value) { + this->key = GeneralUtils::ASCIIToUTF16(key); + this->value = value; + } + //! Destructor ~LDFData(void) override {} diff --git a/dScripts/CppScripts.cpp b/dScripts/CppScripts.cpp index bd483e73..4c0ba749 100644 --- a/dScripts/CppScripts.cpp +++ b/dScripts/CppScripts.cpp @@ -336,6 +336,7 @@ #include "NsRaceServer.h" #include "TrialFactionArmorServer.h" #include "ImaginationBackPack.h" +#include "NsWinterRaceServer.h" #include #include @@ -656,6 +657,7 @@ namespace { //FB {"scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua", []() {return new RockHydrantBroken();}}, {"scripts\\ai\\NS\\L_NS_WH_FANS.lua", []() {return new WhFans();}}, + {"scripts\\ai\\RACING\\TRACK_NS_WINTER\\NS_WINTER_RACE_SERVER.lua", []() {return new NsWinterRaceServer();}}, //WBL {"scripts\\zone\\LUPs\\WBL_generic_zone.lua", []() {return new WblGenericZone();}}, diff --git a/dScripts/ai/RACING/CMakeLists.txt b/dScripts/ai/RACING/CMakeLists.txt index a51273e6..84a837a0 100644 --- a/dScripts/ai/RACING/CMakeLists.txt +++ b/dScripts/ai/RACING/CMakeLists.txt @@ -13,6 +13,12 @@ foreach(file ${DSCRIPTS_SOURCES_AI_RACING_TRACK_NS}) set(DSCRIPTS_SOURCES_AI_RACING ${DSCRIPTS_SOURCES_AI_RACING} "TRACK_NS/${file}") endforeach() +add_subdirectory(TRACK_NS_WINTER) + +foreach(file ${DSCRIPTS_SOURCES_AI_RACING_TRACK_NS_WINTER}) + set(DSCRIPTS_SOURCES_AI_RACING ${DSCRIPTS_SOURCES_AI_RACING} "TRACK_NS_WINTER/${file}") +endforeach() + add_subdirectory(TRACK_GF) foreach(file ${DSCRIPTS_SOURCES_AI_RACING_TRACK_GF}) @@ -26,5 +32,5 @@ foreach(file ${DSCRIPTS_SOURCES_AI_RACING_TRACK_FV}) endforeach() add_library(dScriptsAiRacing OBJECT ${DSCRIPTS_SOURCES_AI_RACING}) -target_include_directories(dScriptsAiRacing PUBLIC "." "OBJECTS" "TRACK_NS" "TRACK_GF" "TRACK_FV") +target_include_directories(dScriptsAiRacing PUBLIC "." "OBJECTS" "TRACK_NS" "TRACK_NS_WINTER" "TRACK_GF" "TRACK_FV") target_precompile_headers(dScriptsAiRacing REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/RACING/TRACK_NS_WINTER/CMakeLists.txt b/dScripts/ai/RACING/TRACK_NS_WINTER/CMakeLists.txt new file mode 100644 index 00000000..e435329e --- /dev/null +++ b/dScripts/ai/RACING/TRACK_NS_WINTER/CMakeLists.txt @@ -0,0 +1,3 @@ +set(DSCRIPTS_SOURCES_AI_RACING_TRACK_NS_WINTER + "NsWinterRaceServer.cpp" + PARENT_SCOPE) diff --git a/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.cpp b/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.cpp new file mode 100644 index 00000000..9c3cc009 --- /dev/null +++ b/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.cpp @@ -0,0 +1,53 @@ +#include "NsWinterRaceServer.h" +#include "GameMessages.h" +#include "RacingControlComponent.h" + +using std::unique_ptr; +using std::make_unique; + +void NsWinterRaceServer::OnStartup(Entity* self) { + GameMessages::ConfigureRacingControl config; + auto& raceSet = config.racingSettings; + + raceSet.push_back(make_unique>("GameType", u"Racing")); + raceSet.push_back(make_unique>("GameState", u"Starting")); + raceSet.push_back(make_unique>("Number_Of_PlayersPerTeam", 6)); + raceSet.push_back(make_unique>("Minimum_Players_to_Start", 2)); + raceSet.push_back(make_unique>("Minimum_Players_for_Group_Achievments", 2)); + + raceSet.push_back(make_unique>("Car_Object", 7703)); + raceSet.push_back(make_unique>("Race_PathName", u"MainPath")); + raceSet.push_back(make_unique>("Current_Lap", 1)); + raceSet.push_back(make_unique>("Number_of_Laps", 3)); + raceSet.push_back(make_unique>("activityID", 42)); + + raceSet.push_back(make_unique>("Place_1", 100)); + raceSet.push_back(make_unique>("Place_2", 90)); + raceSet.push_back(make_unique>("Place_3", 80)); + raceSet.push_back(make_unique>("Place_4", 70)); + raceSet.push_back(make_unique>("Place_5", 60)); + raceSet.push_back(make_unique>("Place_6", 50)); + + raceSet.push_back(make_unique>("Num_of_Players_1", 15)); + raceSet.push_back(make_unique>("Num_of_Players_2", 25)); + raceSet.push_back(make_unique>("Num_of_Players_3", 50)); + raceSet.push_back(make_unique>("Num_of_Players_4", 85)); + raceSet.push_back(make_unique>("Num_of_Players_5", 90)); + raceSet.push_back(make_unique>("Num_of_Players_6", 100)); + + raceSet.push_back(make_unique>("Number_of_Spawn_Groups", 1)); + raceSet.push_back(make_unique>("Red_Spawners", 4847)); + raceSet.push_back(make_unique>("Blue_Spawners", 4848)); + raceSet.push_back(make_unique>("Blue_Flag", 4850)); + raceSet.push_back(make_unique>("Red_Flag", 4851)); + raceSet.push_back(make_unique>("Red_Point", 4846)); + raceSet.push_back(make_unique>("Blue_Point", 4845)); + raceSet.push_back(make_unique>("Red_Mark", 4844)); + raceSet.push_back(make_unique>("Blue_Mark", 4843)); + + const auto racingControllers = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RACING_CONTROL); + for (auto* const racingController : racingControllers) { + auto* const racingComponent = racingController->GetComponent(); + if (racingComponent) racingComponent->MsgConfigureRacingControl(config); + } +} diff --git a/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.h b/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.h new file mode 100644 index 00000000..6478c723 --- /dev/null +++ b/dScripts/ai/RACING/TRACK_NS_WINTER/NsWinterRaceServer.h @@ -0,0 +1,15 @@ +// Darkflame Universe +// Copyright 2025 + +#ifndef NSWINTERRACESERVER_H +#define NSWINTERRACESERVER_H + +#include "CppScripts.h" +#include "RaceImaginationServer.h" + +class NsWinterRaceServer : public RaceImaginationServer { +public: + void OnStartup(Entity* self) override; +}; + +#endif //!NSWINTERRACESERVER_H