2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-05-01 16:09:36 +00:00

chore: track loaded zones in ui

This commit is contained in:
Jan Laupetin
2025-10-11 16:25:14 +01:00
parent 7cefaee41c
commit 49f2000bad
12 changed files with 166 additions and 31 deletions
+31 -1
View File
@@ -1,12 +1,42 @@
#include "FastFileContext.h"
#include "Web/Binds/FastFileBinds.h"
#include "Web/UiCommunication.h"
#include "ZoneLoading.h"
void FastFileContext::Destroy()
{
// Unload all zones
m_loaded_zones.clear();
}
result::Expected<Zone*, std::string> FastFileContext::LoadFastFile(const std::string& path)
{
auto zone = ZoneLoading::LoadZone(path);
if (!zone)
return result::Unexpected(std::move(zone.error()));
return m_loaded_zones.emplace_back(std::move(*zone)).get();
auto* result = m_loaded_zones.emplace_back(std::move(*zone)).get();
ui::NotifyZoneLoaded(result->m_name, path);
return result;
}
result::Expected<NoResult, std::string> FastFileContext::UnloadZone(const std::string& zoneName)
{
const auto existingZone = std::ranges::find_if(m_loaded_zones,
[&zoneName](const std::unique_ptr<Zone>& zone)
{
return zone->m_name == zoneName;
});
if (existingZone != m_loaded_zones.end())
{
m_loaded_zones.erase(existingZone);
ui::NotifyZoneUnloaded(zoneName);
return NoResult();
}
return result::Unexpected(std::format("No zone with name {} loaded", zoneName));
}
+3
View File
@@ -9,7 +9,10 @@
class FastFileContext
{
public:
void Destroy();
result::Expected<Zone*, std::string> LoadFastFile(const std::string& path);
result::Expected<NoResult, std::string> UnloadZone(const std::string& zoneName);
std::vector<std::unique_ptr<Zone>> m_loaded_zones;
};
+1
View File
@@ -13,5 +13,6 @@ void ModManContext::Startup()
void ModManContext::Destroy()
{
m_fast_file.Destroy();
m_db_thread.Terminate();
}