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:
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -13,5 +13,6 @@ void ModManContext::Startup()
|
||||
|
||||
void ModManContext::Destroy()
|
||||
{
|
||||
m_fast_file.Destroy();
|
||||
m_db_thread.Terminate();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user