diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c473a1d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,41 @@
+# --- Visual Studio ---
+.vs/
+[Dd]ebug/
+[Rr]elease/
+x64/
+x86/
+*.user
+*.aps
+*.pdb
+*.obj
+*.log
+*.tlog
+*.lastbuildstate
+*.idb
+*.iobj
+*.ipdb
+*.ipch
+*.ncb
+*.sdf
+*.suo
+*.vsp
+*.vspx
+*.orig
+*.db
+*.opendb
+
+# --- Archivos de compilación ---
+*.exe
+*.dll
+*.lib
+*.exp
+*.ilk
+
+# --- Archivos de sistema ---
+.DS_Store
+Thumbs.db
+
+# --- F4MP Específico ---
+# Ignorar logs que genera el mod al testearlo
+F4MP.log
+F4MP_Client.log
\ No newline at end of file
diff --git a/base/Protocol.h b/Base/Protocol.h
similarity index 100%
rename from base/Protocol.h
rename to Base/Protocol.h
diff --git a/Client/F4MP/.vs/F4MP.slnx/FileContentIndex/9a29383e-7082-4841-845e-cee6cba907a8.vsidx b/Client/F4MP/.vs/F4MP.slnx/FileContentIndex/9a29383e-7082-4841-845e-cee6cba907a8.vsidx
deleted file mode 100644
index fd62abf..0000000
Binary files a/Client/F4MP/.vs/F4MP.slnx/FileContentIndex/9a29383e-7082-4841-845e-cee6cba907a8.vsidx and /dev/null differ
diff --git a/Client/F4MP/.vs/F4MP_Client.slnx/v18/.suo b/Client/F4MP/.vs/F4MP_Client.slnx/v18/.suo
deleted file mode 100644
index 576b1b9..0000000
Binary files a/Client/F4MP/.vs/F4MP_Client.slnx/v18/.suo and /dev/null differ
diff --git a/Client/F4MP/.vs/F4MP_Client.slnx/v18/Browse.VC.db b/Client/F4MP/.vs/F4MP_Client.slnx/v18/Browse.VC.db
deleted file mode 100644
index 74e530c..0000000
Binary files a/Client/F4MP/.vs/F4MP_Client.slnx/v18/Browse.VC.db and /dev/null differ
diff --git a/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.backup.json b/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.backup.json
deleted file mode 100644
index 93aaf3e..0000000
--- a/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.backup.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Version": 1,
- "WorkspaceRootPath": "C:\\Users\\Jous\\Documents\\GitHub\\F4MP\\Client\\F4MP\\",
- "Documents": [],
- "DocumentGroupContainers": [
- {
- "Orientation": 0,
- "VerticalTabListWidth": 256,
- "DocumentGroups": []
- }
- ]
-}
\ No newline at end of file
diff --git a/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.json b/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.json
deleted file mode 100644
index 93aaf3e..0000000
--- a/Client/F4MP/.vs/F4MP_Client.slnx/v18/DocumentLayout.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Version": 1,
- "WorkspaceRootPath": "C:\\Users\\Jous\\Documents\\GitHub\\F4MP\\Client\\F4MP\\",
- "Documents": [],
- "DocumentGroupContainers": [
- {
- "Orientation": 0,
- "VerticalTabListWidth": 256,
- "DocumentGroups": []
- }
- ]
-}
\ No newline at end of file
diff --git a/Client/F4MP/.vs/F4MP_Client/v18/Solution.VC.db b/Client/F4MP/.vs/F4MP_Client/v18/Solution.VC.db
deleted file mode 100644
index afd51f5..0000000
Binary files a/Client/F4MP/.vs/F4MP_Client/v18/Solution.VC.db and /dev/null differ
diff --git a/Client/F4MP/F4MP/F4MP.vcxproj.user b/Client/F4MP/F4MP/F4MP.vcxproj.user
deleted file mode 100644
index 88a5509..0000000
--- a/Client/F4MP/F4MP/F4MP.vcxproj.user
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/lib/F4MPReverse.lib b/codigos originales/f4mp_originalcode/F4MPClient/lib/F4MPReverse.lib
deleted file mode 100644
index 7ff15a2..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/lib/F4MPReverse.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/lib/GameNetworkingSockets_s.lib b/codigos originales/f4mp_originalcode/F4MPClient/lib/GameNetworkingSockets_s.lib
deleted file mode 100644
index fc1d66a..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/lib/GameNetworkingSockets_s.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/lib/detours.lib b/codigos originales/f4mp_originalcode/F4MPClient/lib/detours.lib
deleted file mode 100644
index b5f5f9f..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/lib/detours.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/lib/spdlogd.lib b/codigos originales/f4mp_originalcode/F4MPClient/lib/spdlogd.lib
deleted file mode 100644
index 7e8f090..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/lib/spdlogd.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/lib/steam_api64.lib b/codigos originales/f4mp_originalcode/F4MPClient/lib/steam_api64.lib
deleted file mode 100644
index cfc1b63..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/lib/steam_api64.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPClient/redist/steam_api64.dll b/codigos originales/f4mp_originalcode/F4MPClient/redist/steam_api64.dll
deleted file mode 100644
index e67d32e..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPClient/redist/steam_api64.dll and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPServer/lib/GameNetworkingSockets_s.lib b/codigos originales/f4mp_originalcode/F4MPServer/lib/GameNetworkingSockets_s.lib
deleted file mode 100644
index fc1d66a..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPServer/lib/GameNetworkingSockets_s.lib and /dev/null differ
diff --git a/codigos originales/f4mp_originalcode/F4MPServer/lib/spdlogd.lib b/codigos originales/f4mp_originalcode/F4MPServer/lib/spdlogd.lib
deleted file mode 100644
index 7e8f090..0000000
Binary files a/codigos originales/f4mp_originalcode/F4MPServer/lib/spdlogd.lib and /dev/null differ
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/DebugService.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/DebugService.cpp
deleted file mode 100644
index 442eaed..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/DebugService.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-extern thread_local bool g_overrideFormId;
-
-constexpr char kBuildTag[] = "Build: " BUILD_COMMIT " " BUILD_BRANCH " EVO\nBuilt: " __TIMESTAMP__;
-static void DrawBuildTag()
-{
- auto* pWindow = BSGraphics::GetMainWindow();
- const ImVec2 coord{50.f, static_cast((pWindow->uiWindowHeight + 25) - 100)};
- ImGui::GetBackgroundDrawList()->AddText(ImGui::GetFont(), ImGui::GetFontSize(), coord, ImColor::ImColor(255.f, 0.f, 0.f), kBuildTag);
-}
-
-void __declspec(noinline) DebugService::PlaceActorInWorld() noexcept
-{
- if (m_actors.size())
- return;
-
- const auto pPlayerBaseForm = static_cast(PlayerCharacter::Get()->baseForm);
-
- auto pActor = Actor::Create(pPlayerBaseForm);
-
- const Inventory inventory = PlayerCharacter::Get()->GetActorInventory();
- pActor->SetActorInventory(inventory);
-
- pActor->GetExtension()->SetPlayer(true);
-
- m_actors.emplace_back(pActor);
-}
-
-DebugService::DebugService(entt::dispatcher& aDispatcher, World& aWorld, TransportService& aTransport, ImguiService& aImguiService)
- : m_dispatcher(aDispatcher)
- , m_transport(aTransport)
- , m_world(aWorld)
-{
- m_updateConnection = m_dispatcher.sink().connect<&DebugService::OnUpdate>(this);
- m_drawImGuiConnection = aImguiService.OnDraw.connect<&DebugService::OnDraw>(this);
- m_dialogueConnection = m_dispatcher.sink().connect<&DebugService::OnDialogue>(this);
- m_dispatcher.sink().connect<&DebugService::OnSubtitle>(this);
- m_dispatcher.sink().connect<&DebugService::OnMoveActor>(this);
-}
-
-void DebugService::OnDialogue(const DialogueEvent& acEvent) noexcept
-{
- if (ActorID)
- return;
- ActorID = acEvent.ActorID;
- VoiceFile = acEvent.VoiceFile;
-}
-
-void DebugService::OnSubtitle(const SubtitleEvent& acEvent) noexcept
-{
- if (SubActorID)
- return;
- SubActorID = acEvent.SpeakerID;
- SubtitleText = acEvent.Text;
- TopicID = acEvent.TopicFormID;
-}
-
-// TODO: yeah, i'm aware of how dumb this looks, but things crash if
-// you do it directly by adding an event to the queue, no symbols for tiltedcore when debugging,
-// so this'll do for now
-struct MoveData
-{
- Actor* pActor = nullptr;
- TESObjectCELL* pCell = nullptr;
- NiPoint3 position;
-} moveData;
-
-void DebugService::OnMoveActor(const MoveActorEvent& acEvent) noexcept
-{
- Actor* pActor = Cast(TESForm::GetById(acEvent.FormId));
- TESObjectCELL* pCell = Cast(TESForm::GetById(acEvent.CellId));
-
- if (!pActor || !pCell)
- return;
-
- moveData.pActor = pActor;
- moveData.pCell = pCell;
- moveData.position = acEvent.Position;
-}
-
-extern thread_local bool g_forceAnimation;
-
-void DebugService::OnUpdate(const UpdateEvent& acUpdateEvent) noexcept
-{
- if (!BSGraphics::GetMainWindow()->IsForeground())
- return;
-
- if (moveData.pActor)
- {
- moveData.pActor->MoveTo(moveData.pCell, moveData.position);
- moveData.pActor = nullptr;
- }
-
- static std::atomic s_f8Pressed = false;
- static std::atomic s_f7Pressed = false;
- static std::atomic s_f6Pressed = false;
-
- if (GetAsyncKeyState(VK_F3) & 0x01)
- {
- m_showDebugStuff = !m_showDebugStuff;
- }
-
-#if (!IS_MASTER)
- if (GetAsyncKeyState(VK_F6))
- {
- if (!s_f6Pressed)
- {
- s_f6Pressed = true;
-
- static char s_address[256] = "127.0.0.1:10578";
- if (!m_transport.IsOnline())
- m_transport.Connect(s_address);
- else
- m_transport.Close();
- }
- }
- else
- s_f6Pressed = false;
-
- if (GetAsyncKeyState(VK_F7))
- {
- if (!s_f7Pressed)
- {
- s_f7Pressed = true;
-
- if (!m_world.GetPartyService().IsInParty())
- m_transport.Send(PartyCreateRequest{});
- else
- m_transport.Send(PartyLeaveRequest{});
- }
- }
- else
- s_f7Pressed = false;
-
- if (GetAsyncKeyState(VK_F8) & 0x01)
- {
- if (!s_f8Pressed)
- {
- s_f8Pressed = true;
-
- //PlaceActorInWorld();
- }
- }
- else
- s_f8Pressed = false;
-#endif
-}
-
-static bool g_enableServerWindow{false};
-static bool g_enableAnimWindow{false};
-static bool g_enableEntitiesWindow{false};
-static bool g_enableInventoryWindow{false};
-static bool g_enableNetworkWindow{false};
-static bool g_enableFormsWindow{false};
-static bool g_enablePlayerWindow{false};
-static bool g_enableSkillsWindow{false};
-static bool g_enablePartyWindow{false};
-static bool g_enableActorValuesWindow{false};
-static bool g_enableQuestWindow{false};
-static bool g_enableCellWindow{false};
-static bool g_enableProcessesWindow{false};
-static bool g_enableWeatherWindow{false};
-static bool g_enableCombatWindow{false};
-static bool g_enableCalendarWindow{false};
-static bool g_enableDragonSpawnerWindow{false};
-
-void DebugService::DrawServerView() noexcept
-{
- ImGui::SetNextWindowSize(ImVec2(250, 440), ImGuiCond_FirstUseEver);
- ImGui::Begin("Server");
-
- static char s_address[1024] = "127.0.0.1:10578";
- static char s_password[1024] = "";
- ImGui::InputText("Address", s_address, std::size(s_address));
- ImGui::InputText("Password", s_password, std::size(s_password));
-
- if (m_transport.IsOnline())
- {
- if (ImGui::Button("Disconnect"))
- m_transport.Close();
- }
- else
- {
- if (ImGui::Button("Connect"))
- {
- m_transport.SetServerPassword(s_password);
- m_transport.Connect(s_address);
- }
- }
-
- ImGui::End();
-}
-
-void DebugService::OnDraw() noexcept
-{
- const auto view = m_world.view();
- if (view.empty() || !m_showDebugStuff)
- return;
-
- ImGui::BeginMainMenuBar();
- if (ImGui::BeginMenu("Helpers"))
- {
- if (ImGui::Button("Unstuck player"))
- {
- auto* pPlayer = PlayerCharacter::Get();
- pPlayer->currentProcess->KnockExplosion(pPlayer, &pPlayer->position, 0.f);
- }
-
- if (ImGui::Button("Stop all combat"))
- {
- auto* pPlayer = PlayerCharacter::Get();
- pPlayer->PayCrimeGoldToAllFactions();
-
- ProcessLists* const pProcessLists = ProcessLists::Get();
- if (pProcessLists)
- {
- for (uint32_t i = 0; i < pProcessLists->highActorHandleArray.length; ++i)
- {
- Actor* const pRefr = Cast(TESObjectREFR::GetByHandle(pProcessLists->highActorHandleArray[i]));
- if (pRefr && pRefr->GetNiNode())
- pRefr->StopCombat();
- }
- }
- }
- ImGui::EndMenu();
- }
-#if (!IS_MASTER)
-
- if (ImGui::BeginMenu("Components"))
- {
- ImGui::MenuItem("Show selected entity in world", nullptr, &m_drawComponentsInWorldSpace);
- ImGui::EndMenu();
- }
- if (ImGui::BeginMenu("UI"))
- {
- ImGui::MenuItem("Show build tag", nullptr, &m_showBuildTag);
- if (ImGui::Button("Log all open windows"))
- {
- UI* pUI = UI::Get();
- for (const auto& it : pUI->menuMap)
- {
- if (pUI->GetMenuOpen(it.key))
- spdlog::info("{}", it.key.AsAscii());
- }
- }
-
- if (ImGui::Button("Close all menus"))
- {
- UI::Get()->CloseAllMenus();
- }
-
- ImGui::EndMenu();
- }
-#endif
- if (ImGui::BeginMenu("Debuggers"))
- {
- ImGui::MenuItem("Quests", nullptr, &g_enableQuestWindow);
- ImGui::MenuItem("Entities", nullptr, &g_enableEntitiesWindow);
- ImGui::MenuItem("Server", nullptr, &g_enableServerWindow);
- ImGui::MenuItem("Party", nullptr, &g_enablePartyWindow);
- ImGui::MenuItem("Dragon spawner", nullptr, &g_enableDragonSpawnerWindow);
-
-#if (!IS_MASTER)
- ImGui::MenuItem("Network", nullptr, &g_enableNetworkWindow);
- ImGui::MenuItem("Forms", nullptr, &g_enableFormsWindow);
- ImGui::MenuItem("Inventory", nullptr, &g_enableInventoryWindow);
- ImGui::MenuItem("Animations", nullptr, &g_enableAnimWindow);
- ImGui::MenuItem("Player", nullptr, &g_enablePlayerWindow);
- ImGui::MenuItem("Skills", nullptr, &g_enableSkillsWindow);
- ImGui::MenuItem("Cell", nullptr, &g_enableCellWindow);
- ImGui::MenuItem("Processes", nullptr, &g_enableProcessesWindow);
- ImGui::MenuItem("Weather", nullptr, &g_enableWeatherWindow);
- ImGui::MenuItem("Combat", nullptr, &g_enableCombatWindow);
- ImGui::MenuItem("Calendar", nullptr, &g_enableCalendarWindow);
-#endif
-
- ImGui::EndMenu();
- }
- if (ImGui::BeginMenu("Misc"))
- {
- if (ImGui::Button("Crash Client"))
- {
-#if (!IS_MASTER)
- spdlog::error("Crash client");
- int* m = 0;
- *m = 1338;
-#else
- ConnectionErrorEvent errorEvent{};
- errorEvent.ErrorDetail = "Skyrim Together never crashes ;) With love, Yamashi, Force, Dragonisser, Cosideci.";
-
- m_world.GetRunner().Trigger(errorEvent);
-#endif
- }
- ImGui::EndMenu();
- }
- ImGui::EndMainMenuBar();
-
- if (g_enableQuestWindow)
- DrawQuestDebugView();
- if (g_enableEntitiesWindow)
- DrawEntitiesView();
- if (g_enableServerWindow)
- DrawServerView();
- if (g_enablePartyWindow)
- DrawPartyView();
- if (g_enableDragonSpawnerWindow)
- DrawDragonSpawnerView();
-
-#if (!IS_MASTER)
- if (g_enableNetworkWindow)
- DrawNetworkView();
- if (g_enableFormsWindow)
- DrawFormDebugView();
- if (g_enableInventoryWindow)
- DrawContainerDebugView();
- if (g_enableAnimWindow)
- DrawAnimDebugView();
- if (g_enablePlayerWindow)
- DrawPlayerDebugView();
- if (g_enableSkillsWindow)
- DrawSkillView();
- if (g_enableActorValuesWindow)
- DrawActorValuesView();
- if (g_enableCellWindow)
- DrawCellView();
- if (g_enableProcessesWindow)
- DrawProcessView();
- if (g_enableWeatherWindow)
- DrawWeatherView();
- if (g_enableCombatWindow)
- DrawCombatView();
- if (g_enableCalendarWindow)
- DrawCalendarView();
-
- if (m_drawComponentsInWorldSpace)
- DrawComponentDebugView();
-#endif
-
- if (m_showBuildTag)
- DrawBuildTag();
-}
-
-void DebugService::ArrangeGameWindows(HWND aThisWindow) noexcept
-{
- // This function conveniently arranges multiple game windows (multi-monitor window rearrangement is
- // not implemented)
-#if (!IS_MASTER)
- const uint32_t screenWidth = GetSystemMetrics(SM_CXSCREEN);
- const uint32_t screenHeight = GetSystemMetrics(SM_CYSCREEN);
- RECT rect{};
- GetWindowRect(aThisWindow, &rect);
- const uint32_t gameWindowWidth = rect.right - rect.left;
- const uint32_t gameWindowHeight = rect.bottom - rect.top;
-
- const bool shouldArrangeWindows = (static_cast(gameWindowWidth) / screenWidth) < 0.76f;
- if (!shouldArrangeWindows)
- return; // Too little room for that
-
- SetWindowPos(GetConsoleWindow(), nullptr, 0, gameWindowHeight, 0, 0, SWP_NOSIZE);
-
- CreateMutexA(0, FALSE, "SkyrimTogetherWindowMutex");
- if (GetLastError() == ERROR_ALREADY_EXISTS)
- {
- // One game instance is already open, arrange secondary game window...
- const bool arrangeSideBySide = (static_cast(gameWindowWidth) / screenWidth) <= 0.51f;
-
- RECT conRect{};
- GetWindowRect(GetConsoleWindow(), &conRect);
- const uint32_t conY = arrangeSideBySide ? gameWindowHeight : 0;
- const uint32_t conX = arrangeSideBySide ? (gameWindowWidth - 16) : screenWidth - (conRect.right - conRect.left);
- SetWindowPos(GetConsoleWindow(), nullptr, conX, conY, 0, 0, SWP_NOSIZE);
-
- const uint32_t x = arrangeSideBySide ? (gameWindowWidth - 16) : (screenWidth - gameWindowWidth);
- const uint32_t y = arrangeSideBySide ? 0 : (screenHeight - gameWindowHeight - 48);
- SetWindowPos(aThisWindow, nullptr, x, y, 0, 0, SWP_NOSIZE);
- }
-#endif
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ActorValuesView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ActorValuesView.cpp
deleted file mode 100644
index d035cc8..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ActorValuesView.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include
-
-#include
-
-#include
-
-void DebugService::DrawActorValuesView()
-{
- Actor* pActor = Cast(TESForm::GetById(m_formId));
- if (!pActor)
- return;
-
- ImGui::Begin("Actor values");
-
- // for (int i = 0; i < ActorValueInfo::kActorValueCount; i++)
- {
- ActorValueOwner& actorValueOwner = pActor->actorValueOwner;
- float health[3]{actorValueOwner.GetValue(24), actorValueOwner.GetBaseValue(24), actorValueOwner.GetPermanentValue(24)};
- ImGui::InputFloat3("Health (val/base/perm)", health, "%.3f", ImGuiInputTextFlags_ReadOnly);
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/AnimDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/AnimDebugView.cpp
deleted file mode 100644
index 7ab857d..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/AnimDebugView.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include
-
-uint64_t DisplayGraphDescriptorKey(BSAnimationGraphManager* pManager) noexcept
-{
- auto hash = pManager->GetDescriptorKey();
- auto pDescriptor = AnimationGraphDescriptorManager::Get().GetDescriptor(hash);
-
- spdlog::info("Key: {}", hash);
- std::cout << "uint64_t key = " << hash << ";" << std::endl;
- if (!pDescriptor)
- spdlog::error("Descriptor key not found");
-
- return hash;
-}
-
-void DebugService::DrawAnimDebugView()
-{
- static uint32_t fetchFormId = 0;
- static Actor* pActor = nullptr;
- static Map s_values;
- static Map s_reusedValues;
- static Map s_valueTypes; // 0 for bool, 1 for float, 2 for int
- static Vector s_blacklist{};
- static SortedMap s_varMap{};
- static Map s_cachedKeys{};
-
- ImGui::Begin("Animation debugging");
-
- ImGui::InputScalar("Form ID", ImGuiDataType_U32, &fetchFormId, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Look up"))
- {
- if (fetchFormId)
- {
- auto* pFetchForm = TESForm::GetById(fetchFormId);
- if (pFetchForm)
- pActor = Cast(pFetchForm);
- }
-
- s_values.clear();
- s_reusedValues.clear();
- s_valueTypes.clear();
- s_blacklist.clear();
- s_varMap.clear();
- }
-
- if (!pActor)
- {
- ImGui::End();
- s_varMap.clear();
- s_values.clear();
- s_reusedValues.clear();
- s_valueTypes.clear();
- s_blacklist.clear();
- return;
- }
-
- if (ImGui::Button("Show cached hash"))
- {
- spdlog::info("{}", pActor->GetExtension()->GraphDescriptorHash);
- BehaviorVar::Get()->Debug();
- }
-
- if (ImGui::Button("Clear all"))
- {
- s_varMap.clear();
- s_values.clear();
- s_reusedValues.clear();
- s_valueTypes.clear();
- s_blacklist.clear();
- }
-
- BSAnimationGraphManager* pManager = nullptr;
- pActor->animationGraphHolder.GetBSAnimationGraph(&pManager);
-
- if (!pManager)
- {
- ImGui::End();
- s_varMap.clear();
- s_values.clear();
- s_reusedValues.clear();
- s_valueTypes.clear();
- s_blacklist.clear();
- return;
- }
-
- const auto pGraph = pManager->animationGraphs.Get(pManager->animationGraphIndex);
-
- if (!pGraph)
- {
- ImGui::End();
- s_varMap.clear();
- s_values.clear();
- s_reusedValues.clear();
- s_valueTypes.clear();
- s_blacklist.clear();
- return;
- }
-
- if (s_varMap.empty())
- {
- s_varMap = pManager->DumpAnimationVariables(true);
-
- auto hash = DisplayGraphDescriptorKey(pManager);
-
- if (s_cachedKeys.find(hash) != std::end(s_cachedKeys))
- spdlog::warn("Key was detected before! Form ID of last detected actor: {:X}", s_cachedKeys[hash]);
- s_cachedKeys[hash] = pActor->formID;
- }
-
- if (ImGui::Button("Revert animation graph"))
- {
- spdlog::info("RevertAnimationGraphManager success? {}",
- pActor->animationGraphHolder.RevertAnimationGraphManager());
- }
-
- if (ImGui::BeginTabBar("##Tabs", ImGuiTabBarFlags_None))
- {
- if (ImGui::BeginTabItem("Variables"))
- {
- auto hash = pManager->GetDescriptorKey();
- auto pDescriptor = AnimationGraphDescriptorManager::Get().GetDescriptor(hash);
- if (pDescriptor)
- {
- const auto* pVariableSet = pGraph->behaviorGraph->animationVariables;
-
- Map bools{};
- Map floats{};
- Map ints{};
-
- for (size_t i = 0; i < pDescriptor->BooleanLookUpTable.size(); ++i)
- {
- const auto idx = pDescriptor->BooleanLookUpTable[i];
- bools[s_varMap[idx]] = *reinterpret_cast(&pVariableSet->data[idx]);
- }
-
- for (size_t i = 0; i < pDescriptor->FloatLookupTable.size(); ++i)
- {
- const auto idx = pDescriptor->FloatLookupTable[i];
- floats[s_varMap[idx]] = *reinterpret_cast(&pVariableSet->data[idx]);
- }
-
- for (size_t i = 0; i < pDescriptor->IntegerLookupTable.size(); ++i)
- {
- const auto idx = pDescriptor->IntegerLookupTable[i];
- ints[s_varMap[idx]] = *reinterpret_cast(&pVariableSet->data[idx]);
- }
-
- if (ImGui::Button("Dump variable values"))
- {
- std::cout << "Bools: " << std::endl;
- for (auto& [name, value] : bools)
- {
- std::cout << "\t" << name << ": " << value << std::endl;
- }
-
- std::cout << "Floats: " << std::endl;
- for (auto& [name, value] : floats)
- {
- std::cout << "\t" << name << ": " << value << std::endl;
- }
-
- std::cout << "Integers: " << std::endl;
- for (auto& [name, value] : ints)
- {
- std::cout << "\t" << name << ": " << value << std::endl;
- }
- }
-
- if (ImGui::CollapsingHeader("Bools", ImGuiTreeNodeFlags_DefaultOpen))
- {
- for (auto pair : bools)
- {
- auto name = pair.first;
- auto value = pair.second;
- int iValue = int(value);
- ImGui::InputInt(name.c_str(), &iValue, 0, 0, ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- if (ImGui::CollapsingHeader("Floats", ImGuiTreeNodeFlags_DefaultOpen))
- {
- for (auto pair : floats)
- {
- auto name = pair.first;
- auto value = pair.second;
- ImGui::InputFloat(name.c_str(), &value, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- if (ImGui::CollapsingHeader("Integers", ImGuiTreeNodeFlags_DefaultOpen))
- {
- for (auto pair : ints)
- {
- auto name = pair.first;
- auto value = pair.second;
- ImGui::InputInt(name.c_str(), &value, 0, 0, ImGuiInputTextFlags_ReadOnly);
- }
- }
- }
-
- ImGui::EndTabItem();
- }
-
- if (ImGui::BeginTabItem("Blacklist"))
- {
- static uint32_t s_selectedBlacklistVar = 0;
- static uint32_t s_selected = 0;
-
- ImGui::BeginChild("Blacklisted variables");
-
- int i = 0;
- for (auto blacklistedVar : s_blacklist)
- {
- if (blacklistedVar >= pGraph->behaviorGraph->animationVariables->size)
- {
- ++i;
- continue;
- }
-
- const auto varName = s_varMap[blacklistedVar];
-
- char name[256];
- sprintf_s(name, std::size(name), "k%s (%d)", varName.c_str(), blacklistedVar);
-
- if (ImGui::Selectable(name, s_selectedBlacklistVar == blacklistedVar))
- {
- s_selectedBlacklistVar = blacklistedVar;
- }
-
- if (s_selectedBlacklistVar == blacklistedVar)
- {
- s_selected = i;
- }
-
- ++i;
- }
-
- ImGui::EndChild();
-
- if (s_selected < s_blacklist.size())
- {
- if (ImGui::Button("Delete"))
- {
- s_blacklist.erase(s_blacklist.begin() + s_selected);
- }
- }
-
- static uint32_t s_blacklistVar = 0;
- ImGui::InputInt("New blacklist var:", (int*)&s_blacklistVar, 0, 0);
-
- if (ImGui::Button("Add"))
- {
- s_blacklist.push_back(s_blacklistVar);
- }
-
- ImGui::EndTabItem();
- }
- if (ImGui::BeginTabItem("Control"))
- {
- ImGui::InputInt("Animation graph count", (int*)&pManager->animationGraphs.size, 0, 0, ImGuiInputTextFlags_ReadOnly);
- ImGui::InputInt("Animation graph index", (int*)&pManager->animationGraphIndex, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- char name[256];
- sprintf_s(name, std::size(name), "%s", pGraph->behaviorGraph->stateMachine->name);
- ImGui::InputText("Graph state machine name", name, std::size(name), ImGuiInputTextFlags_ReadOnly);
-
- const auto pVariableSet = pGraph->behaviorGraph->animationVariables;
-
- auto pDescriptor = AnimationGraphDescriptorManager::Get().GetDescriptor(pManager->GetDescriptorKey());
-
- static bool toggleVariableRecord = false;
- if (ImGui::Button("Toggle variable recording"))
- {
- toggleVariableRecord = !toggleVariableRecord;
- spdlog::info("Toggle variable recording: {}", toggleVariableRecord);
- }
-
- if (pVariableSet && toggleVariableRecord)
- {
- for (auto i = 0u; i < pVariableSet->size; ++i)
- {
- if (std::find(s_blacklist.begin(), s_blacklist.end(), i) != s_blacklist.end())
- continue;
-
- if (pDescriptor && pDescriptor->IsSynced(i))
- continue;
-
- auto iter = s_values.find(i);
- if (iter == std::end(s_values))
- {
- s_values[i] = pVariableSet->data[i];
-
- const auto varName = s_varMap[i];
-
- spdlog::info("Variable k{} ({}) initialized to f: {} i: {}", varName, i, *(float*)&pVariableSet->data[i], *(int32_t*)&pVariableSet->data[i]);
- }
- else if (iter->second != pVariableSet->data[i])
- {
- const auto varName = s_varMap[i];
-
- float floatCast = *(float*)&pVariableSet->data[i];
- int intCast = *(int32_t*)&pVariableSet->data[i];
- spdlog::warn("Variable k{} ({}) changed to f: {} i: {}", varName, i, floatCast, intCast);
-
- s_values[i] = pVariableSet->data[i];
- s_reusedValues[i] = pVariableSet->data[i];
-
- char varTypeChar = varName[0]; // for guessing type, to see if u can find type char (i, f, b)
- if (varTypeChar == 'f')
- {
- s_valueTypes[i] = 1;
- }
- else if (varTypeChar == 'i' && varName[1] != 's')
- {
- s_valueTypes[i] = 2;
- }
- else if (varTypeChar != 'b' && s_valueTypes[i] != 1) // no char hint to go off of and not assuming float
- {
- if (intCast > 1000 || intCast < -1000) // arbitrary int threshold
- {
- s_valueTypes[i] = 1; // assume float
- }
- else
- {
- if (intCast > 1 || intCast < 0)
- {
- s_valueTypes[i] = 2; // assume int
- }
- }
- }
- }
- }
- }
-
- if (ImGui::Button("Dump variables") && pVariableSet)
- {
- // kinda ugly to iterate 3 times but idc cuz its just for debugging and its a small collection
- // BOOLS
- std::cout << "{" << std::endl;
- for (auto& [key, value] : s_reusedValues)
- {
- if (s_valueTypes[key] == 0)
- {
- const auto varName = s_varMap[key];
- std::cout << "k" << varName << "," << std::endl;
- }
- }
- // FLOATS
- std::cout << "}," << std::endl << "{" << std::endl;
- for (auto& [key, value] : s_reusedValues)
- {
- if (s_valueTypes[key] == 1)
- {
- const auto varName = s_varMap[key];
- std::cout << "k" << varName << "," << std::endl;
- }
- }
- // INTS
- std::cout << "}," << std::endl << "{" << std::endl;
- for (auto& [key, value] : s_reusedValues)
- {
- if (s_valueTypes[key] == 2)
- {
- const auto varName = s_varMap[key];
- std::cout << "k" << varName << "," << std::endl;
- }
- }
- std::cout << "}" << std::endl;
- }
-
- if (ImGui::Button("Reset recording"))
- {
- s_values.clear();
- s_reusedValues.clear();
- spdlog::info("Variable recording has been reset");
- }
-
- ImGui::EndTabItem();
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CalendarDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CalendarDebugView.cpp
deleted file mode 100644
index dbae310..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CalendarDebugView.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include
-
-#include
-#include
-
-#include
-
-void DebugService::DrawCalendarView()
-{
- ImGui::Begin("Calendar");
-
- auto* pGameTime = TimeData::Get();
-
- auto year = pGameTime->GameYear->f;
- ImGui::InputFloat("Year", &year, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- auto month = pGameTime->GameMonth->f;
- ImGui::InputFloat("Month", &month, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- auto day = pGameTime->GameDay->f;
- ImGui::InputFloat("Day", &day, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- auto hour = pGameTime->GameHour->f;
- ImGui::InputFloat("Hour", &hour, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- auto passed = pGameTime->GameDaysPassed->f;
- ImGui::InputFloat("Passed", &passed, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- auto scale = pGameTime->TimeScale->f;
- ImGui::InputFloat("Scale", &scale, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CellView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CellView.cpp
deleted file mode 100644
index 1705150..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CellView.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#include
-
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-
-void DebugService::DrawCellView()
-{
- ImGui::Begin("Cell");
-
- PlayerCharacter* pPlayer = PlayerCharacter::Get();
-
- if (auto* pWorldSpace = pPlayer->GetWorldSpace())
- {
- if (ImGui::CollapsingHeader("World space", ImGuiTreeNodeFlags_DefaultOpen))
- {
- const uint32_t worldFormId = pWorldSpace->formID;
- ImGui::InputScalar("Id", ImGuiDataType_U32, (void*)&worldFormId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- char* pName = (char*)pWorldSpace->GetName();
- size_t nameLen = strlen(pName);
- ImGui::InputText("Name", pName, nameLen, ImGuiInputTextFlags_ReadOnly);
-
- char* pEditorId = (char*)pWorldSpace->GetFormEditorID();
- size_t editorIdLen = strlen(pEditorId);
- ImGui::InputText("Editor ID", pEditorId, editorIdLen, ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- if (auto* pCell = pPlayer->parentCell)
- {
- if (ImGui::CollapsingHeader("Parent cell", ImGuiTreeNodeFlags_DefaultOpen))
- {
- const uint32_t cellId = pCell->formID;
- ImGui::InputScalar("Id", ImGuiDataType_U32, (void*)&cellId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- char* pName = (char*)pCell->GetName();
- size_t nameLen = strlen(pName);
- ImGui::InputText("Name", pName, nameLen, ImGuiInputTextFlags_ReadOnly);
-
- char* pEditorId = (char*)pCell->GetFormEditorID();
- size_t editorIdLen = strlen(pEditorId);
- ImGui::InputText("Editor ID", pEditorId, editorIdLen, ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CombatView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CombatView.cpp
deleted file mode 100644
index bcd055c..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/CombatView.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-namespace
-{
-struct DetectionState : public NiRefObject
-{
- ~DetectionState() override;
-
- uint32_t level;
- uint8_t unk14;
- uint8_t unk15;
- uint8_t unk16;
- uint8_t pad17;
- float unk18;
- NiPoint3 unk1C;
- float unk28;
- NiPoint3 unk2C;
- float unk38;
- NiPoint3 unk3C;
-};
-static_assert(sizeof(DetectionState) == 0x48);
-
-BGSEncounterZone* GetLocationEncounterZone(Actor* apActor)
-{
- TP_THIS_FUNCTION(TGetLocationEncounterZone, BGSEncounterZone*, Actor);
- POINTER_SKYRIMSE(TGetLocationEncounterZone, getLocationEncounterZone, 20203);
- return TiltedPhoques::ThisCall(getLocationEncounterZone, apActor);
-}
-
-bool IsValidTarget(CombatTargetSelector* apThis, Actor* apAttacker, Actor* apTarget, BGSEncounterZone* apEncounterZone)
-{
- TP_THIS_FUNCTION(TIsValidTarget, bool, CombatTargetSelector, Actor* apAttacker, Actor* apTarget,
- BGSEncounterZone* apEncounterZone);
- POINTER_SKYRIMSE(TIsValidTarget, isValidTarget, 47196);
- return TiltedPhoques::ThisCall(isValidTarget, apThis, apAttacker, apTarget, apEncounterZone);
-}
-
-DetectionState* GetDetectionState(Actor* apAttacker, Actor* apTarget)
-{
- TP_THIS_FUNCTION(TGetDetectionState, DetectionState*, Actor, Actor* apTarget);
- POINTER_SKYRIMSE(TGetDetectionState, getDetectionState, 37757);
- return TiltedPhoques::ThisCall(getDetectionState, apAttacker, apTarget);
-}
-
-float GetCombatTargetSelectorDetectionTimeLimit()
-{
- POINTER_SKYRIMSE(float, s_value, 382393);
- return *s_value;
-}
-
-float GetCombatTargetSelectorRecentLOSTimeLimit()
-{
- POINTER_SKYRIMSE(float, s_value, 382400);
- return *s_value;
-}
-
-bool ActorHasEquippedRangedWeapon_m(Actor* apActor)
-{
- TP_THIS_FUNCTION(TActorHasEquippedRangedWeapon_m, bool, Actor);
- POINTER_SKYRIMSE(TActorHasEquippedRangedWeapon_m, actorHasEquippedRangedWeapon_m, 47303);
- return TiltedPhoques::ThisCall(actorHasEquippedRangedWeapon_m, apActor);
-}
-
-BGSWorldLocation* RefrGetWorldLocation(TESObjectREFR* apThis, BGSWorldLocation* apResult)
-{
- TP_THIS_FUNCTION(TRefrGetWorldLocation, BGSWorldLocation*, TESObjectREFR, BGSWorldLocation*);
- POINTER_SKYRIMSE(TRefrGetWorldLocation, refrGetWorldLocation, 19784);
- return TiltedPhoques::ThisCall(refrGetWorldLocation, apThis, apResult);
-}
-
-float GetModifiedDistance(BGSWorldLocation* apThis, BGSWorldLocation* apWorldLocation)
-{
- TP_THIS_FUNCTION(TGetModifiedDistance, float, BGSWorldLocation, BGSWorldLocation*);
- POINTER_SKYRIMSE(TGetModifiedDistance, getModifiedDistance, 18518);
- return TiltedPhoques::ThisCall(getModifiedDistance, apThis, apWorldLocation);
-}
-
-float GetDword_142FE5B78()
-{
- POINTER_SKYRIMSE(float, s_value, 405282);
- return *s_value;
-}
-
-bool CheckMovement(CombatController* apThis, BGSWorldLocation* apWorldLocation)
-{
- TP_THIS_FUNCTION(TCheckMovement, bool, CombatController, BGSWorldLocation*);
- POINTER_SKYRIMSE(TCheckMovement, checkMovement, 33261);
- return TiltedPhoques::ThisCall(checkMovement, apThis, apWorldLocation);
-}
-
-bool sub_1407E7A40(Actor* apThis, BGSWorldLocation* apWorldLocation)
-{
- TP_THIS_FUNCTION(TFunc, bool, Actor, BGSWorldLocation*);
- POINTER_SKYRIMSE(TFunc, func, 47307);
- return TiltedPhoques::ThisCall(func, apThis, apWorldLocation);
-}
-
-bool IsFleeing(Actor* apThis)
-{
- TP_THIS_FUNCTION(TFunc, bool, Actor);
- POINTER_SKYRIMSE(TFunc, func, 37577);
- return TiltedPhoques::ThisCall(func, apThis);
-}
-
-float CalculateTargetScore(CombatTargetSelector* apThis, CombatTarget* apCombatTarget, Actor* apAttacker, Actor* apTarget, BGSEncounterZone* apEncounterZone)
-{
- float score = 0.f;
-
- CombatController* pCombatController = apThis->pCombatController;
- Actor* pCachedAttacker = pCombatController->pCachedAttacker.object;
-
- BGSWorldLocation pAttackerWorldLocation{};
- RefrGetWorldLocation(apAttacker, &pAttackerWorldLocation);
- BGSWorldLocation pTargetWorldLocation{};
- RefrGetWorldLocation(apTarget, &pTargetWorldLocation);
-
- float aiTime = AITimer::GetAITime();
-
- auto* pDetectionState = GetDetectionState(apAttacker, apTarget);
- if (pDetectionState && (aiTime - pDetectionState->unk38) <= GetCombatTargetSelectorDetectionTimeLimit())
- {
- if (pDetectionState->unk15)
- score = 1000.f;
- else if (pCachedAttacker == apTarget &&
- (aiTime - pDetectionState->unk18) < GetCombatTargetSelectorRecentLOSTimeLimit())
- score = 1000.f;
-
- if (pDetectionState->unk14)
- score += 100.f;
- }
-
- if (pCachedAttacker == apTarget)
- score += 100.f;
-
- if (ActorHasEquippedRangedWeapon_m(apAttacker) == ActorHasEquippedRangedWeapon_m(apTarget))
- score += 100.f;
-
- bool isSameWorldLocation = pTargetWorldLocation.pSpace == pAttackerWorldLocation.pSpace;
- float distanceFactor = 0.f;
- if (isSameWorldLocation)
- distanceFactor = GetModifiedDistance(&pAttackerWorldLocation, &pTargetWorldLocation);
- else if (apTarget != pCachedAttacker)
- distanceFactor = 2048.f;
-
- score += (float)((float)(1.0 - (float)(fminf(distanceFactor, 2048.f) * 0.00048828125f)) * 1000.f);
-
- if (apCombatTarget->attackerCount > (pCachedAttacker == apTarget))
- score += GetDword_142FE5B78();
-
- if (pCombatController->pInventory->maximumRange < 1024.f || !isSameWorldLocation)
- {
- if (!CheckMovement(pCombatController, &pTargetWorldLocation))
- score -= 2000.f;
- if (!isSameWorldLocation && !sub_1407E7A40(apAttacker, &pTargetWorldLocation))
- score -= 2500.f;
- }
-
- if (apTarget->VirtIsDead(false))
- score -= 500.f;
-
- if (IsFleeing(apTarget))
- score -= 500.f;
-
- return score;
-}
-} // namespace
-
-void DebugService::DrawCombatView()
-{
- if (!m_formId)
- return;
-
- ImGui::Begin("Combat");
-
- ImGui::InputScalar("Form ID", ImGuiDataType_U32, (void*)&m_formId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- Actor* pActor = Cast(TESForm::GetById(m_formId));
-
- if (pActor && pActor->pCombatController && pActor->pCombatController->pCombatGroup && pActor->pCombatController->pActiveTargetSelector)
- {
- Actor* pTarget = Cast(TESObjectREFR::GetByHandle(pActor->pCombatController->targetHandle));
- if (pTarget)
- {
- uint32_t targetFormID = pTarget->formID;
- ImGui::InputScalar("Current target ID", ImGuiDataType_U32, (void*)&targetFormID, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
-
- BGSEncounterZone* pZone = GetLocationEncounterZone(pActor);
-
- ImGui::BeginChild("Potential targets", ImVec2(0, 200), true);
-
- auto& targets = pActor->pCombatController->pCombatGroup->targets;
- for (int i = 0; i < targets.length; i++)
- {
- auto& target = targets[i];
- Actor* pTarget = Cast(TESObjectREFR::GetByHandle(target.targetHandle));
- if (pTarget)
- {
- const uint32_t formID = pTarget->formID;
- ImGui::InputScalar("Form ID", ImGuiDataType_U32, (void*)&formID, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- float score =
- CalculateTargetScore(pActor->pCombatController->pActiveTargetSelector, &target, pActor, pTarget, pZone);
-
- ImGui::InputFloat("Score", &score, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- }
-
- ImGui::Separator();
- }
-
- ImGui::EndChild();
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ComponentView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ComponentView.cpp
deleted file mode 100644
index b26af0b..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ComponentView.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-namespace
-{
-#if 0
-constexpr float fFloatQuestMarkerMaxDistance = 2000.f;
-constexpr float fFloatQuestMarkerMinDistance = 1000.f;
-
-float CalculateFloatingQuestMarkerAlpha()
-{
- float v1 = fsqrt((__m128)LODWORD(this->fDistanceToPlayerSqr)).m128_f32[0] -
- fFloatQuestMarkerMaxDistance) /
- (fFloatQuestMarkerMinDistance - fFloatQuestMarkerMaxDistance)) * 100.0;
- if (v1 > 100.0)
- return FLOAT_100_0;
- result = 0.0;
- if (v1 >= 0.0)
- return v1;
- return result;
-}
-#endif
-
-static __declspec(noinline) bool DrawInWorldSpace(TESObjectREFR* apRefr, ImVec2& outViewPos)
-{
- // Attach at the head ish.
- auto pos = apRefr->position;
- pos.z += apRefr->GetHeight();
-
- NiPoint3 screenPoint{};
- HUDMenuUtils::WorldPtToScreenPt3(pos, screenPoint);
- // Calculate window collision bounds.
- auto* pViewport = BSGraphics::GetMainWindow();
-
- // Translate to screen
- const ImVec2 screenPos = ImVec2{
- (pViewport->uiWindowWidth * screenPoint.x),
- (pViewport->uiWindowHeight * (1.0f - screenPoint.y)),
- };
-
- const ImVec2 windowSize = {
- static_cast(pViewport->uiWindowWidth),
- static_cast(pViewport->uiWindowHeight),
- };
-
- auto IsVisible = [](const ImVec2& acVec2, const ImVec2& acScreenSize, float z) {
- return (acVec2.x > 0 && acVec2.x <= acScreenSize.x) &&
- (acVec2.y > 0 && acVec2.y <= acScreenSize.y) && z >= 0;
- };
-
- if (IsVisible(screenPos, windowSize, screenPoint.z))
- {
- outViewPos = screenPos;
- return true;
- }
- outViewPos = {};
- return false;
-}
-} // namespace
-
-// TODO(Force): Net Histrogram (waves)
-// Engine stuff.
-// Fix cursor.
-
-void DebugService::SetDebugId(const uint32_t aFormId) noexcept
-{
- m_formId = aFormId;
-}
-
-void DebugService::DrawComponentDebugView()
-{
- auto view = m_world.view();
-
- if (!m_formId)
- return;
-
- auto entityIt = std::find_if(view.begin(), view.end(), [id = m_formId, view](auto entity) { return view.get(entity).Id == id; });
-
- if (entityIt == view.end())
- return;
-
- auto entity = *entityIt;
-
- if (auto* pObject = Cast(TESForm::GetById(m_formId)))
- {
- ImVec2 screenPos{};
- if (DrawInWorldSpace(pObject, screenPos))
- {
- ImGui::SetNextWindowPos(screenPos);
- ImGui::Begin("Component debug");
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- DisplayListOfReplayedActions(*pComponent, m_world.try_get(entity));
- }
-
- if (auto serverIdRes = Utils::GetServerId(entity))
- {
- ImGui::InputScalar("Server ID", ImGuiDataType_U32, &(*serverIdRes), 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("LocalComponent"))
- {
- ImGui::InputScalar("Is dead?", ImGuiDataType_U8, &pComponent->IsDead, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- }
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("LocalAnimationComponent"))
- {
- int actions = int(pComponent->Actions.size());
- ImGui::InputInt("Number of actions", &actions, 0, 0, ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("RemoteComponent"))
- {
- ImGui::InputScalar("Cached ref ID", ImGuiDataType_U32, &pComponent->CachedRefId, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
- }
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("InterpolationComponent"))
- {
- ImGui::Text("%f,%f,%f\n", pComponent->Position.x, pComponent->Position.y, pComponent->Position.z);
- }
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("FaceGenComponent"))
- {
- for (auto x : pComponent->FaceTints.Entries)
- {
- ImGui::Text("Alpha %f, Color %u, Type %u\n", x.Alpha, x.Color, x.Type);
- }
- }
- }
-
- if (auto* pComponent = m_world.try_get(entity))
- {
- if (ImGui::CollapsingHeader("RemoteAnimationComponent"))
- {
- ImGui::Text("EventName: %s\nTargetEventName: %s\nState1: %u\nState2: %u", pComponent->LastRanAction.EventName.c_str(), pComponent->LastRanAction.TargetEventName.c_str(), pComponent->LastRanAction.State1, pComponent->LastRanAction.State2);
- }
- }
-
- ImGui::End();
- }
- }
-}
-
-void DebugService::DisplayListOfReplayedActions(const ReplayedActionsDebugComponent& aDebugComponent,
- RemoteAnimationComponent* apAnimationComponent) const noexcept
-{
- const size_t total = aDebugComponent.ActionsReceivedForReplay.Actions.size();
- const auto header = fmt::format("List of Replayed Actions ({})", total);
-
- if (ImGui::CollapsingHeader(header.c_str(), ImGuiTreeNodeFlags_DefaultOpen))
- {
- String replayedActionsText;
- if (aDebugComponent.ActionsReceivedForReplay.ResetAnimationGraph)
- replayedActionsText += ", ";
-
- for (size_t i = 0; i < total; ++i)
- {
- if (i > 0)
- replayedActionsText += ", ";
- replayedActionsText += aDebugComponent.ActionsReceivedForReplay.Actions[i].EventName;
- }
- total == 0 ? replayedActionsText = "" : replayedActionsText += '.';
- ImGui::TextWrapped(replayedActionsText.c_str());
-
- if (ImGui::IsItemHovered())
- {
- ImGui::SetTooltip("Actions that were run (replayed) after this remote Actor received\n"
- "spawn data from the server. Right click to replay again.");
- }
- if (ImGui::IsItemClicked(1) && apAnimationComponent && total > 0)
- {
- AnimationSystem::AddActionsForReplay(*apAnimationComponent, aDebugComponent.ActionsReceivedForReplay);
- }
- }
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ContainerDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ContainerDebugView.cpp
deleted file mode 100644
index 4f07af4..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ContainerDebugView.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-
-void DebugService::DrawContainerDebugView()
-{
- static TESForm* pFetchForm = nullptr;
- static Actor* pActor = nullptr;
-
- ImGui::Begin("Inventory");
-
- ImGui::InputScalar("Form ID", ImGuiDataType_U32, &m_formId, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Look up"))
- {
- if (m_formId)
- {
- pFetchForm = TESForm::GetById(m_formId);
- if (pFetchForm)
- pActor = Cast(pFetchForm);
- }
- }
-
- if (pActor)
- {
- static Inventory inventory{};
-
- if (ImGui::Button("Fetch inventory"))
- inventory = pActor->GetInventory();
-
- int inventoryCount = inventory.Entries.size();
-
- ImGui::InputInt("Inventory count", &inventoryCount, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- ImGui::BeginChild("Items", ImVec2(0, 200), true);
-
- for (Inventory::Entry& entry : inventory.Entries)
- {
- std::string itemLabel = fmt::format("{:X}", entry.BaseId.BaseId + entry.BaseId.ModId);
- if (!ImGui::CollapsingHeader(itemLabel.c_str()))
- continue;
-
- if (ImGui::Button("Equip"))
- {
- World::Get().GetRunner().Queue(
- [entry, actorId = pActor->formID]()
- {
- auto& modSystem = World::Get().GetModSystem();
- uint32_t itemId = modSystem.GetGameId(entry.BaseId);
- TESForm* pItem = TESForm::GetById(itemId);
- Actor* pActor = Cast(TESForm::GetById(actorId));
- EquipManager::Get()->Equip(pActor, pItem, nullptr, entry.Count, DefaultObjectManager::Get().rightEquipSlot, false, true, false, false);
- });
- }
- if (ImGui::Button("Unequip"))
- {
- World::Get().GetRunner().Queue(
- [entry, actorId = pActor->formID]()
- {
- auto& modSystem = World::Get().GetModSystem();
- uint32_t itemId = modSystem.GetGameId(entry.BaseId);
- TESForm* pItem = TESForm::GetById(itemId);
- Actor* pActor = Cast(TESForm::GetById(actorId));
- EquipManager::Get()->UnEquip(pActor, pItem, nullptr, entry.Count, DefaultObjectManager::Get().rightEquipSlot, false, true, false, false, nullptr);
- });
- }
-
- int itemCount = entry.Count;
- ImGui::InputInt("Item count", &itemCount, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- int isWorn = entry.ExtraWorn;
- ImGui::InputInt("Is worn?", &isWorn, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- int isWornLeft = entry.ExtraWornLeft;
- ImGui::InputInt("Is worn left?", &isWornLeft, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- int isWeapon = entry.EnchantData.IsWeapon;
- ImGui::InputInt("Is weapon?", &isWeapon, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- ImGui::InputFloat("Health", &entry.ExtraHealth, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- int poisonId = entry.ExtraPoisonId.BaseId + entry.ExtraPoisonId.ModId;
- ImGui::InputInt("Poison ID", &poisonId, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- int poisonCount = entry.ExtraPoisonCount;
- ImGui::InputInt("Poison count", &poisonCount, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- int soulLevel = entry.ExtraSoulLevel;
- ImGui::InputInt("Soul level", &soulLevel, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- ImGui::InputFloat("Charge", &entry.ExtraCharge, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- int enchantId = entry.ExtraEnchantId.BaseId + entry.ExtraEnchantId.ModId;
- ImGui::InputInt("Enchant ID", &enchantId, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- int enchantCharge = entry.ExtraEnchantCharge;
- ImGui::InputInt("Enchant charge", &enchantCharge, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- int isEnchantRemoveUnequip = entry.ExtraEnchantRemoveUnequip;
- ImGui::InputInt("Remove enchant on unequip?", &isEnchantRemoveUnequip, 0, 0, ImGuiInputTextFlags_ReadOnly);
- if (ImGui::CollapsingHeader("Effects"))
- {
- for (Inventory::EffectItem& effect : entry.EnchantData.Effects)
- {
- std::string effectLabel = fmt::format("{:X}", effect.EffectId.BaseId + effect.EffectId.ModId);
- if (!ImGui::CollapsingHeader(effectLabel.c_str()))
- continue;
-
- ImGui::InputFloat("Magnitude", &effect.Magnitude, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- int area = effect.Area;
- ImGui::InputInt("Area", &area, 0, 0, ImGuiInputTextFlags_ReadOnly);
- int duration = effect.Duration;
- ImGui::InputInt("Duration", &duration, 0, 0, ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Raw cost", &effect.RawCost, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- }
- }
-
- ImGui::Separator();
- }
-
- ImGui::EndChild();
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/DragonSpawnerView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/DragonSpawnerView.cpp
deleted file mode 100644
index 3596ce4..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/DragonSpawnerView.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#include
-#include
-
-void DebugService::DrawDragonSpawnerView()
-{
- ImGui::Begin("Dragon spawner");
-
- if (ImGui::CollapsingHeader("Dragons (level 10)"))
- {
- if (ImGui::Button("Brown (fire)"))
- {
- Actor::Spawn(0x1CA03);
- }
- if (ImGui::Button("Brown (frost)"))
- {
- Actor::Spawn(0xF80FA);
- }
- if (ImGui::Button("White (frost)"))
- {
- Actor::Spawn(0x8BC7F);
- }
- if (ImGui::Button("Bronze (frost)"))
- {
- Actor::Spawn(0x8BC7E);
- }
- }
-
- if (ImGui::CollapsingHeader("Blood dragons (level 20)"))
- {
- if (ImGui::Button("Blood (fire)"))
- {
- Actor::Spawn(0xF80FD);
- }
- if (ImGui::Button("Blood (frost)"))
- {
- Actor::Spawn(0xF77F8);
- }
- }
-
- if (ImGui::CollapsingHeader("Frost dragons (level 27-35)"))
- {
- if (ImGui::Button("Frost"))
- {
- Actor::Spawn(0x351C3);
- }
- }
-
- if (ImGui::CollapsingHeader("Elder dragons (level 36-44)"))
- {
- if (ImGui::Button("Elder (fire)"))
- {
- Actor::Spawn(0xF811B);
- }
- if (ImGui::Button("Elder (frost)"))
- {
- Actor::Spawn(0xF811A);
- }
- }
-
- if (ImGui::CollapsingHeader("Ancient dragons (level 45-54)"))
- {
- if (ImGui::Button("Ancient (fire)"))
- {
- Actor::Spawn(0xF811C);
- }
- if (ImGui::Button("Ancient (frost)"))
- {
- Actor::Spawn(0xF811E);
- }
- }
-
- if (ImGui::CollapsingHeader("Serpentine dragons (level 55-58)"))
- {
- if (ImGui::Button("Serpentine (fire)"))
- {
- Actor::Spawn(0x04036134);
- }
- if (ImGui::Button("Serpentine (frost)"))
- {
- Actor::Spawn(0x04036133);
- }
- }
-
- if (ImGui::CollapsingHeader("Revered dragons (level 62)"))
- {
- if (ImGui::Button("Revered (fire)"))
- {
- Actor::Spawn(0x02008431);
- }
- }
-
- if (ImGui::CollapsingHeader("Legendary dragons (level 75)"))
- {
- if (ImGui::Button("Legendary (fire)"))
- {
- Actor::Spawn(0x0200C5F5);
- }
- if (ImGui::Button("Legendary (frost)"))
- {
- Actor::Spawn(0x0200C5FD);
- }
- }
-
- if (ImGui::CollapsingHeader("Skeletal dragons (warning: very scary)"))
- {
- if (ImGui::Button("Skeletal (frost)"))
- {
- Actor::Spawn(0x9192C);
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/EntitiesView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/EntitiesView.cpp
deleted file mode 100644
index f67833f..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/EntitiesView.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-#include
-
-#include
-
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-#include
-
-void DebugService::DrawEntitiesView()
-{
- const auto view = m_world.view();
- if (view.empty())
- return;
-
- ImGui::SetNextWindowSize(ImVec2(250, 440), ImGuiCond_FirstUseEver);
- ImGui::Begin("Entities");
-
- if (ImGui::BeginTabBar("##Tabs", ImGuiTabBarFlags_None))
- {
- if (ImGui::BeginTabItem("Actors"))
- {
- DisplayEntities();
- ImGui::EndTabItem();
- }
- if (ImGui::BeginTabItem("Objects"))
- {
- DisplayObjects();
- ImGui::EndTabItem();
- }
- ImGui::EndTabBar();
- }
-
- ImGui::End();
-}
-
-void DebugService::DisplayEntities() noexcept
-{
- static uint32_t s_selected = 0;
-
- StackAllocator<1 << 12> allocator;
- ScopedAllocator _{allocator};
-
- const auto view = m_world.view(entt::exclude);
-
- Vector entities(view.begin(), view.end());
-
- ImGui::Text("Actor list (%d)", entities.size());
-
- ImGui::BeginChild("Entities", ImVec2(0, 200), true);
-
- int i = 0;
- for (auto it : entities)
- {
- auto& formComponent = view.get(it);
- const auto pActor = Cast(TESForm::GetById(formComponent.Id));
-
- if (!pActor)
- continue;
-
- char name[256];
-
- if (!pActor->baseForm)
- strncpy_s(name, "UNNAMED", sizeof(name));
-
- sprintf_s(name, std::size(name), "%s (%x)", pActor->baseForm->GetName(), formComponent.Id);
-
- if (ImGui::Selectable(name, m_formId == formComponent.Id))
- m_formId = formComponent.Id;
-
- if (m_formId == formComponent.Id)
- s_selected = i;
-
- ++i;
- }
-
- ImGui::EndChild();
-
- if (s_selected < entities.size())
- DisplayEntityPanel(entities[s_selected]);
-}
-
-void DebugService::DisplayObjects() noexcept
-{
- static uint32_t s_selected = 0;
-
- StackAllocator<1 << 12> allocator;
- ScopedAllocator _{allocator};
-
- const auto view = m_world.view();
-
- Vector entities(view.begin(), view.end());
-
- ImGui::Text("Object list (%d)", entities.size());
-
- ImGui::BeginChild("Entities", ImVec2(0, 200), true);
-
- int i = 0;
- for (auto it : entities)
- {
- auto& formComponent = view.get(it);
- const auto pRefr = Cast(TESForm::GetById(formComponent.Id));
-
- if (!pRefr || !pRefr->baseForm)
- continue;
-
- char name[256];
- sprintf_s(name, std::size(name), "%s (%x)", pRefr->baseForm->GetName(), formComponent.Id);
-
- if (ImGui::Selectable(name, m_formId == formComponent.Id))
- m_formId = formComponent.Id;
-
- if (m_formId == formComponent.Id)
- s_selected = i;
-
- ++i;
- }
-
- ImGui::EndChild();
-}
-
-void DebugService::DisplayEntityPanel(entt::entity aEntity) noexcept
-{
- const auto pFormIdComponent = m_world.try_get(aEntity);
- const auto pLocalComponent = m_world.try_get(aEntity);
- const auto pRemoteComponent = m_world.try_get(aEntity);
-
- if (pFormIdComponent)
- DisplayFormComponent(*pFormIdComponent);
- if (pLocalComponent)
- DisplayLocalComponent(*pLocalComponent, pFormIdComponent ? pFormIdComponent->Id : 0);
- if (pRemoteComponent)
- DisplayRemoteComponent(*pRemoteComponent, aEntity, pFormIdComponent ? pFormIdComponent->Id : 0);
-}
-
-void DebugService::DisplayFormComponent(FormIdComponent& aFormComponent) const noexcept
-{
- if (!ImGui::CollapsingHeader("Form Component", ImGuiTreeNodeFlags_DefaultOpen))
- return;
-
- const auto pActor = Cast(TESForm::GetById(aFormComponent.Id));
-
- if (!pActor)
- return;
-
- /*
- if (ImGui::Button("Teleport away"))
- {
- m_world.GetRunner().Queue([id = aFormComponent.Id]() {
- Actor* pActor = Cast(TESForm::GetById(id));
- TESObjectCELL* pCell = Cast(TESForm::GetById(0x133C6));
- NiPoint3 pos{};
- pos.x = -313.f;
- pos.y = 4.f;
- pos.z = 13.f;
- pActor->MoveTo(pCell, pos);
- });
- }
- */
-
- ImGui::InputInt("Game Id", (int*)&aFormComponent.Id, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::InputFloat3("Position", pActor->position.AsArray(), "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat3("Rotation", pActor->rotation.AsArray(), "%.3f", ImGuiInputTextFlags_ReadOnly);
- int isDead = int(pActor->IsDead());
- ImGui::InputScalar("Is dead?", ImGuiDataType_U8, &isDead, 0, 0, "%" PRIx8, ImGuiInputTextFlags_ReadOnly);
- int isRemote = int(pActor->GetExtension()->IsRemote());
- ImGui::InputScalar("Is remote?", ImGuiDataType_U8, &isRemote, 0, 0, "%" PRIx8, ImGuiInputTextFlags_ReadOnly);
- auto handle = pActor->GetHandle();
- ImGui::InputInt("Handle", (int*)&handle.handle.iBits, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- auto owner = pActor->GetCommandingActor();
- int commandingActorId = int(owner ? owner->formID : 0x0);
- ImGui::InputScalar("Commanding Actor", ImGuiDataType_U8, &commandingActorId, 0, 0, "%" PRIx8, ImGuiInputTextFlags_ReadOnly);
- float attributes[3]{pActor->GetActorValue(24), pActor->GetActorValue(25), pActor->GetActorValue(26)};
- ImGui::InputFloat3("Attributes (H/M/S)", attributes, "%.3f", ImGuiInputTextFlags_ReadOnly);
-}
-
-void DebugService::DisplayLocalComponent(LocalComponent& aLocalComponent, const uint32_t acFormId) const noexcept
-{
- if (!ImGui::CollapsingHeader("Local Component", ImGuiTreeNodeFlags_DefaultOpen))
- return;
-
- if (ImGui::Button("Teleport to me"))
- {
- auto* pPlayer = PlayerCharacter::Get();
- m_world.GetRunner().Trigger(MoveActorEvent(acFormId, pPlayer->parentCell->formID, pPlayer->position));
- }
-
- auto& action = aLocalComponent.CurrentAction;
- ImGui::InputInt("Net Id", (int*)&aLocalComponent.Id, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::InputInt("Action Id", (int*)&action.ActionId, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::InputInt("Idle Id", (int*)&action.IdleId, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::InputScalarN("State", ImGuiDataType_U32, &action.State1, 2, nullptr, nullptr, "%x", ImGuiInputTextFlags_ReadOnly);
-}
-
-void DebugService::DisplayRemoteComponent(RemoteComponent& aRemoteComponent, const entt::entity acEntity, const uint32_t acFormId) const noexcept
-{
- if (!ImGui::CollapsingHeader("Remote Component", ImGuiTreeNodeFlags_DefaultOpen))
- return;
-
- ImGui::InputInt("Server Id", (int*)&aRemoteComponent.Id, 0, 0, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Take ownership"))
- {
- m_world.GetRunner().Queue(
- [acEntity, acFormId]()
- {
- if (auto* pRemoteCompoment = World::Get().try_get(acEntity))
- World::Get().GetCharacterService().TakeOwnership(acFormId, pRemoteCompoment->Id, acEntity);
- });
- }
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/FormDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/FormDebugView.cpp
deleted file mode 100644
index b4b5731..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/FormDebugView.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-void DebugService::DrawFormDebugView()
-{
- static TESForm* pFetchForm = nullptr;
- static Actor* pRefr = nullptr;
-
- ImGui::Begin("Form");
-
- ImGui::InputScalar("Form ID", ImGuiDataType_U32, &m_formId, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Look up"))
- {
- if (m_formId)
- {
- pFetchForm = TESForm::GetById(m_formId);
- if (pFetchForm)
- pRefr = Cast(pFetchForm);
- }
- }
-
- if (pFetchForm)
- {
- ImGui::InputScalar("Memory address", ImGuiDataType_U64, (void*)&pFetchForm, 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- }
-
- if (pRefr)
- {
- if (auto* pParentCell = pRefr->GetParentCell())
- {
- const uint32_t cellId = pParentCell->formID;
- ImGui::InputScalar("GetParentCell", ImGuiDataType_U32, (void*)&cellId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
-
- if (auto* pParentCell = pRefr->parentCell)
- {
- const uint32_t cellId = pParentCell->formID;
- ImGui::InputScalar("parentCell", ImGuiDataType_U32, (void*)&cellId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
-
- /*
- char name[256];
- sprintf_s(name, std::size(name), "%s (%x)", pRefr->baseForm->GetName(), pRefr->formID);
- ImGui::InputText("Name", name, std::size(name), ImGuiInputTextFlags_ReadOnly);
-
- for (ActiveEffect* pEffect : *pRefr->currentProcess->middleProcess->ActiveEffects)
- {
- if (!pEffect)
- continue;
-
- if (!ImGui::CollapsingHeader(pEffect->pSpell->fullName.value, ImGuiTreeNodeFlags_DefaultOpen))
- continue;
-
- ImGui::InputFloat("Elapsed seconds", &pEffect->fElapsedSeconds, 0, 0, "%.1f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Duration", &pEffect->fDuration, 0, 0, "%.1f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Magnitude", &pEffect->fMagnitude, 0, 0, "%.1f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputInt("Flags", (int*)&pEffect->uiFlags, 0, 0, ImGuiInputTextFlags_ReadOnly);
-
- if (ImGui::Button("Elapse time"))
- m_world.GetRunner().Queue([pEffect]() { pEffect->fElapsedSeconds = pEffect->fDuration - 3.f; });
- }
- */
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/NetworkView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/NetworkView.cpp
deleted file mode 100644
index 8f28291..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/NetworkView.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include
-#include
-
-#include
-
-void DebugService::DrawNetworkView()
-{
- if (m_transport.IsConnected())
- {
- ImGui::Begin("Network");
-
- auto stats = m_transport.GetStatistics();
- float protocolSent = float(stats.SentBytes) / 1024.f;
- float protocolReceived = float(stats.RecvBytes) / 1024.f;
- float uncompressedSent = float(stats.UncompressedSentBytes) / 1024.f;
- float uncompressedReceived = float(stats.UncompressedRecvBytes) / 1024.f;
-
- // Fill an array of contiguous float values to plot
- // Tip: If your float aren't contiguous but part of a structure, you can pass a pointer to your first float
- // and the sizeof() of your structure in the "stride" parameter.
- static float values[90] = {};
- static int values_offset = 0;
- static double refresh_time = 0.0;
- if (refresh_time == 0.0)
- refresh_time = ImGui::GetTime();
- while (refresh_time < ImGui::GetTime()) // Create data at fixed 60 Hz rate for the demo
- {
- values[values_offset] = protocolSent;
- values_offset = (values_offset + 1) % IM_ARRAYSIZE(values);
- refresh_time += 1.0f;
- }
-
- // Plots can display overlay texts
- // (in this example, we will display an average value)
- {
- float average = 0.0f;
- for (int n = 0; n < IM_ARRAYSIZE(values); n++)
- average += values[n];
- average /= (float)IM_ARRAYSIZE(values);
- ImGui::PlotLines("Lines", values, IM_ARRAYSIZE(values), values_offset, nullptr, 0.f, FLT_MAX, ImVec2(0, 160.0f));
- }
-
- /*
- float width = -ImGui::CalcItemWidth();
- ImGui::PushItemWidth(width);
-
- auto status = GetConnectionStatus();
- status.m_flOutBytesPerSec /= 1024.f;
- status.m_flInBytesPerSec /= 1024.f;
-
- ImGui::InputFloat("Net Out kBps", (float*)&status.m_flOutBytesPerSec, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Net In kBps", (float*)&status.m_flInBytesPerSec, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- ImGui::InputFloat("Protocol Out kBps", (float*)&protocolSent, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Protocol In kBps", (float*)&protocolReceived, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- ImGui::InputFloat("User Out kBps", (float*)&uncompressedSent, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("User In kBps", (float*)&uncompressedReceived, 0.f, 0.f, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- ImGui::PopItemWidth();
- */
-
- ImGui::End();
- }
-
- // online indicator
- ImGui::GetBackgroundDrawList()->AddRectFilled(ImVec2(23.f, 23.f), ImVec2(50.f, 50.f), m_transport.IsConnected() ? ImColor(0, 230, 64) : ImColor(240, 52, 52));
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PartyView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PartyView.cpp
deleted file mode 100644
index 70a8616..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PartyView.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-
-void DebugService::DrawPartyView()
-{
- if (!m_transport.IsConnected())
- return;
-
- ImGui::Begin("Party");
-
- auto& partyService = m_world.GetPartyService();
- auto& players = partyService.GetPlayers();
- auto& members = partyService.GetPartyMembers();
- auto& invitations = partyService.GetInvitations();
-
- if (partyService.IsInParty())
- {
- ImGui::Text("Party Members");
- String pName{"You"};
- if (partyService.IsLeader())
- {
- pName += " (Leader)";
- }
- ImGui::BulletText(pName.c_str());
-
- for (auto& playerId : members)
- {
- ImGui::PushID(playerId);
-
- auto playerEntry = players.find(playerId);
- if (playerEntry != players.end())
- {
- auto playerName = playerEntry.value();
- if (playerId == partyService.GetLeaderPlayerId())
- {
- playerName += " (Leader)";
- }
- ImGui::BulletText(playerName.c_str());
-
- ImGui::SameLine(200);
- if (ImGui::Button("Teleport"))
- {
- TeleportCommandRequest request{};
- request.TargetPlayer = playerEntry.value();
-
- m_transport.Send(request);
- }
-
- if (partyService.IsLeader())
- {
- ImGui::SameLine();
- if (ImGui::Button("Kick"))
- {
- PartyKickRequest kickMessage;
- kickMessage.PartyMemberPlayerId = playerEntry.key();
- m_transport.Send(kickMessage);
- }
-
- ImGui::SameLine();
- if (ImGui::Button("Make Leader"))
- {
- PartyChangeLeaderRequest changeMessage;
- changeMessage.PartyMemberPlayerId = playerEntry.key();
- m_transport.Send(changeMessage);
- }
- }
- }
-
- ImGui::PopID();
- }
-
- if (partyService.IsLeader())
- {
- ImGui::NewLine();
- ImGui::Text("Other Players");
- auto playerCount = 0;
- for (auto& player : partyService.GetPlayers())
- {
- if (std::find(std::begin(members), std::end(members), player.first) != std::end(members))
- continue;
-
- playerCount++;
- ImGui::BulletText(player.second.c_str());
- ImGui::SameLine(100);
- if (ImGui::Button("Invite"))
- {
- PartyInviteRequest request;
- request.PlayerId = player.first;
- m_transport.Send(request);
- }
- }
-
- if (playerCount == 0)
- {
- ImGui::BulletText("");
- }
- }
- }
-
- for (auto& player : players)
- {
- auto itor = invitations.find(player.first);
- if (itor != std::end(invitations))
- {
- if (std::find(std::begin(members), std::end(members), player.first) != std::end(members))
- continue;
-
- ImGui::Text(player.second.c_str());
- ImGui::SameLine(100);
- if (ImGui::Button("Accept"))
- {
- invitations.erase(itor);
-
- PartyAcceptInviteRequest message;
- message.InviterId = player.first;
- m_transport.Send(message);
- }
- }
- }
-
- ImGui::NewLine();
- if (partyService.IsInParty())
- {
- if (ImGui::Button("Leave"))
- {
- PartyLeaveRequest request;
- m_transport.Send(request);
- }
- }
- else
- {
- if (ImGui::Button("Create Party"))
- {
- PartyCreateRequest request;
- m_transport.Send(request);
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PlayerDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PlayerDebugView.cpp
deleted file mode 100644
index 7bf8d5e..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/PlayerDebugView.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-void DebugService::DrawPlayerDebugView()
-{
- PlayerCharacter* pPlayer = PlayerCharacter::Get();
- if (!pPlayer)
- {
- return;
- }
-
- ImGui::Begin("Player");
-
- auto pLeftWeapon = pPlayer->GetEquippedWeapon(0);
- auto pRightWeapon = pPlayer->GetEquippedWeapon(1);
-
- uint32_t leftId = pLeftWeapon ? pLeftWeapon->formID : 0;
- uint32_t rightId = pRightWeapon ? pRightWeapon->formID : 0;
-
- ImGui::InputScalar("Left Item", ImGuiDataType_U32, (void*)&leftId, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("Right Item", ImGuiDataType_U32, (void*)&rightId, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
-
- leftId = pPlayer->magicItems[0] ? pPlayer->magicItems[0]->formID : 0;
- rightId = pPlayer->magicItems[1] ? pPlayer->magicItems[1]->formID : 0;
-
- ImGui::InputScalar("Right Magic", ImGuiDataType_U32, (void*)&rightId, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("Left Magic", ImGuiDataType_U32, (void*)&leftId, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
-
- auto* leftHandCaster = pPlayer->GetMagicCaster(MagicSystem::CastingSource::LEFT_HAND);
- auto* rightHandCaster = pPlayer->GetMagicCaster(MagicSystem::CastingSource::RIGHT_HAND);
- auto* otherHandCaster = pPlayer->GetMagicCaster(MagicSystem::CastingSource::OTHER);
- auto* instantHandCaster = pPlayer->GetMagicCaster(MagicSystem::CastingSource::INSTANT);
-
- ImGui::InputScalar("leftHandCaster", ImGuiDataType_U64, (void*)&leftHandCaster, 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("rightHandCaster", ImGuiDataType_U64, (void*)&rightHandCaster, 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("otherHandCaster", ImGuiDataType_U64, (void*)&otherHandCaster, 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("instantHandCaster", ImGuiDataType_U64, (void*)&instantHandCaster, 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
-
- ImGui::InputScalar("leftHandCasterSpell", ImGuiDataType_U64, (void*)&(leftHandCaster->pCurrentSpell), 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("rightHandCasterSpell", ImGuiDataType_U64, (void*)&(rightHandCaster->pCurrentSpell), 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("otherHandCasterSpell", ImGuiDataType_U64, (void*)&(otherHandCaster->pCurrentSpell), 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- ImGui::InputScalar("instantHandCasterSpell", ImGuiDataType_U64, (void*)&(instantHandCaster->pCurrentSpell), 0, 0, "%" PRIx64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
-
- uint32_t shoutId = pPlayer->equippedShout ? pPlayer->equippedShout->formID : 0;
-
- ImGui::InputScalar("Shout", ImGuiDataType_U32, (void*)&shoutId, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
-
- if (auto pWorldSpace = pPlayer->GetWorldSpace())
- {
- auto worldFormId = pWorldSpace->formID;
- ImGui::InputScalar("Worldspace", ImGuiDataType_U32, (void*)&worldFormId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
- if (auto pCell = pPlayer->GetParentCell())
- {
- auto cellFormId = pCell->formID;
- ImGui::InputScalar("Cell Id", ImGuiDataType_U32, (void*)&cellFormId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
- if (const auto playerParentCell = pPlayer->parentCell)
- {
- ImGui::InputScalar("Player parent cell", ImGuiDataType_U32, (void*)&playerParentCell->formID, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
- if (auto* pTES = TES::Get())
- {
- int32_t playerGrid[2] = {pTES->currentGridX, pTES->currentGridY};
- int32_t centerGrid[2] = {pTES->centerGridX, pTES->centerGridY};
-
- ImGui::InputInt2("Player grid", playerGrid, ImGuiInputTextFlags_ReadOnly);
- ImGui::InputInt2("Center grid", centerGrid, ImGuiInputTextFlags_ReadOnly);
- }
-
- auto& modSystem = m_world.GetModSystem();
-
- if (ImGui::CollapsingHeader("Worn armor"))
- {
- Inventory wornArmor{};
- wornArmor = pPlayer->GetWornArmor();
- for (const auto& armor : wornArmor.Entries)
- {
- const uint32_t armorId = armor.BaseId.BaseId;
- ImGui::InputScalar("Item id", ImGuiDataType_U32, (void*)&armorId, nullptr, nullptr, "%" PRIx32, ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_CharsHexadecimal);
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ProcessView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ProcessView.cpp
deleted file mode 100644
index 5c71172..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/ProcessView.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include
-
-#include
-
-#include
-#include
-
-void DebugService::DrawProcessView()
-{
- ImGui::Begin("Processes");
-
- ImGui::PushItemWidth(100.f);
-
- int id = 0;
-
- ProcessLists* pProcesses = ProcessLists::Get();
-
- ImGui::InputScalar("Processing high?", ImGuiDataType_U8, &pProcesses->bProcessHigh, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::SameLine();
-
- ImGui::PushID(id);
- if (ImGui::Button("Toggle"))
- {
- m_world.GetRunner().Queue([pProcesses]() { pProcesses->bProcessHigh = !pProcesses->bProcessHigh; });
- }
- ImGui::PopID();
- id++;
-
- ImGui::InputScalar("Processing Low?", ImGuiDataType_U8, &pProcesses->bProcessLow, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::SameLine();
-
- ImGui::PushID(id);
- if (ImGui::Button("Toggle"))
- {
- m_world.GetRunner().Queue([pProcesses]() { pProcesses->bProcessLow = !pProcesses->bProcessLow; });
- }
- ImGui::PopID();
- id++;
-
- ImGui::InputScalar("Processing middle high?", ImGuiDataType_U8, &pProcesses->bProcessMHigh, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::SameLine();
-
- ImGui::PushID(id);
- if (ImGui::Button("Toggle"))
- {
- m_world.GetRunner().Queue([pProcesses]() { pProcesses->bProcessMHigh = !pProcesses->bProcessMHigh; });
- }
- ImGui::PopID();
- id++;
-
- ImGui::InputScalar("Processing middle low?", ImGuiDataType_U8, &pProcesses->bProcessMLow, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::SameLine();
-
- ImGui::PushID(id);
- if (ImGui::Button("Toggle"))
- {
- m_world.GetRunner().Queue([pProcesses]() { pProcesses->bProcessMLow = !pProcesses->bProcessMLow; });
- }
- ImGui::PopID();
- id++;
-
- ImGui::InputScalar("Processing schedule?", ImGuiDataType_U8, &pProcesses->bProcessSchedule, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
- ImGui::SameLine();
-
- ImGui::PushID(id);
- if (ImGui::Button("Toggle"))
- {
- m_world.GetRunner().Queue([pProcesses]() { pProcesses->bProcessSchedule = !pProcesses->bProcessSchedule; });
- }
- ImGui::PopID();
- id++;
-
- ImGui::PopItemWidth();
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/QuestDebugView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/QuestDebugView.cpp
deleted file mode 100644
index 383f6e3..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/QuestDebugView.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-
-#include
-
-void DebugService::DrawQuestDebugView()
-{
- auto* pPlayer = PlayerCharacter::Get();
- if (!pPlayer)
- return;
-
- ImGui::SetNextWindowSize(ImVec2(250, 440), ImGuiCond_FirstUseEver);
- ImGui::Begin("Quests");
-
- // TODO(cosideci): yes I'll refactor this
- if (!m_world.GetPartyService().IsLeader())
- {
- ImGui::Text("You need to be the quest leader to access the quest debugger.");
- }
- else
- {
- Set foundQuests{};
-
- for (auto& objective : pPlayer->objectives)
- {
- TESQuest* pQuest = objective.instance->quest;
- if (!pQuest)
- continue;
-
- if (QuestService::IsNonSyncableQuest(pQuest))
- continue;
-
- if (foundQuests.contains(pQuest->formID))
- continue;
-
- foundQuests.insert(pQuest->formID);
-
- if (!pQuest->IsActive())
- continue;
-
- char questName[256];
- sprintf_s(questName, std::size(questName), "%s (%s)", pQuest->fullName.value.AsAscii(), pQuest->idName.AsAscii());
- if (!ImGui::CollapsingHeader(questName))
- continue;
-
- if (ImGui::CollapsingHeader("Stages"))
- {
- for (auto* pStage : pQuest->stages)
- {
- ImGui::TextColored({0.f, 255.f, 255.f, 255.f}, "Stage: %d, is done? %s", pStage->stageIndex, pStage->IsDone() ? "true" : "false");
-
- char setStage[64];
- sprintf_s(setStage, std::size(setStage), "Set stage (%d)", pStage->stageIndex);
-
- if (ImGui::Button(setStage))
- pQuest->ScriptSetStage(pStage->stageIndex);
- }
- }
-
- if (ImGui::CollapsingHeader("Actors"))
- {
- Set foundActors{};
-
- for (BGSScene* pScene : pQuest->scenes)
- {
- for (uint32_t actorId : pScene->actorIds)
- {
- Actor* pActor = Cast(pQuest->GetAliasedRef(actorId));
- if (!pActor)
- continue;
-
- if (foundActors.contains(pActor->formID))
- continue;
-
- foundActors.insert(pActor->formID);
-
- char name[256];
- sprintf_s(name, std::size(name), "%s (%x)", pActor->baseForm->GetName(), pActor->formID);
- ImGui::BulletText(name);
-
- ImGui::PushID(pActor->formID);
- if (ImGui::Button("Teleport to me"))
- {
- auto* pPlayer = PlayerCharacter::Get();
- m_world.GetRunner().Trigger(MoveActorEvent(pActor->formID, pPlayer->parentCell->formID, pPlayer->position));
- }
- ImGui::PopID();
- }
- }
- }
- }
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/SkillView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/SkillView.cpp
deleted file mode 100644
index 8e52f24..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/SkillView.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include
-
-#include
-
-#include
-
-void DebugService::DrawSkillView()
-{
- ImGui::Begin("Skills");
-
- PlayerCharacter* pPlayer = PlayerCharacter::Get();
- Skills* pSkills = *pPlayer->pSkills;
-
- ImGui::InputFloat("Global XP", &pSkills->xp, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Global level threshold", &pSkills->levelThreshold, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- for (int i = 0; i < Skills::kTotal; i++)
- {
- const char* skillString = Skills::GetSkillString((Skills::Skill)i);
- if (!ImGui::CollapsingHeader(skillString, ImGuiTreeNodeFlags_DefaultOpen))
- continue;
-
- Skills::SkillData pSkill = pSkills->skills[i];
- ImGui::InputFloat("Level", &pSkill.level, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("XP", &pSkill.xp, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
- ImGui::InputFloat("Level threshold", &pSkill.levelThreshold, 0, 0, "%.3f", ImGuiInputTextFlags_ReadOnly);
-
- uint32_t legendaryLevel = pSkills->legendaryLevels[i];
- ImGui::InputScalar("Legendary level", ImGuiDataType_U32, (void*)&legendaryLevel, nullptr, nullptr, nullptr, ImGuiInputTextFlags_ReadOnly);
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/WeatherView.cpp b/codigos originales/tiltedcode/Code/client/Services/Debug/Views/WeatherView.cpp
deleted file mode 100644
index 51ca8bc..0000000
--- a/codigos originales/tiltedcode/Code/client/Services/Debug/Views/WeatherView.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include
-
-#include
-#include
-
-#include
-#include
-
-void DebugService::DrawWeatherView()
-{
- ImGui::Begin("Weather");
-
- Sky* pSky = Sky::Get();
-
- TESWeather* pCurrentWeather = pSky->GetWeather();
- if (pCurrentWeather)
- {
- ImGui::InputScalar("Current weather ID", ImGuiDataType_U32, &pCurrentWeather->formID, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_ReadOnly);
- }
-
- ImGui::Separator();
-
- ImGui::InputScalar("Weather updates enabled?", ImGuiDataType_U8, &Sky::s_shouldUpdateWeather, 0, 0, "%" PRIx8, ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Toggle weather updates"))
- Sky::s_shouldUpdateWeather = !Sky::s_shouldUpdateWeather;
-
- ImGui::Separator();
-
- static uint32_t s_weatherId = 0;
- ImGui::InputScalar("New weather ID", ImGuiDataType_U32, &s_weatherId, 0, 0, "%" PRIx32, ImGuiInputTextFlags_CharsHexadecimal);
-
- if (ImGui::Button("Set weather"))
- {
- TESWeather* pWeather = Cast(TESForm::GetById(s_weatherId));
- if (pWeather)
- pSky->SetWeather(pWeather);
- }
-
- if (ImGui::Button("Force weather"))
- {
- TESWeather* pWeather = Cast(TESForm::GetById(s_weatherId));
- if (pWeather)
- pSky->ForceWeather(pWeather);
- }
-
- ImGui::Separator();
-
- if (ImGui::Button("Reset weather"))
- {
- pSky->ResetWeather();
- }
-
- ImGui::End();
-}
diff --git a/codigos originales/tiltedcode/Code/immersive_launcher/launcher.aps b/codigos originales/tiltedcode/Code/immersive_launcher/launcher.aps
deleted file mode 100644
index c1b305d..0000000
Binary files a/codigos originales/tiltedcode/Code/immersive_launcher/launcher.aps and /dev/null differ
diff --git a/codigos originales/tiltedcode/Code/immersive_launcher/ntdll_x64.lib b/codigos originales/tiltedcode/Code/immersive_launcher/ntdll_x64.lib
deleted file mode 100644
index 175ee46..0000000
Binary files a/codigos originales/tiltedcode/Code/immersive_launcher/ntdll_x64.lib and /dev/null differ
diff --git a/codigos originales/tiltedcode/Code/server/server.aps b/codigos originales/tiltedcode/Code/server/server.aps
deleted file mode 100644
index 5fdc1ac..0000000
Binary files a/codigos originales/tiltedcode/Code/server/server.aps and /dev/null differ
diff --git a/codigos originales/tiltedcode/Code/skyrim_ui/src/app/components/debug/debug.component.html b/codigos originales/tiltedcode/Code/skyrim_ui/src/app/components/debug/debug.component.html
deleted file mode 100644
index 723d135..0000000
--- a/codigos originales/tiltedcode/Code/skyrim_ui/src/app/components/debug/debug.component.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-