Sunset old state system finally.

This commit is contained in:
2023-11-02 12:36:14 -05:00
parent 79b7e235ab
commit b4c7953c93
32 changed files with 212 additions and 420 deletions

View File

@ -21,7 +21,9 @@ void LocaleManager::init() {
if(this->loadingAsset->loaded) {
this->onLanguageLoaded();
} else {
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
eventTeardownLanguageLoaded = useEvent([&]() {
this->onLanguageLoaded();
}, this->loadingAsset->eventLoaded);
}
}
}
@ -38,7 +40,7 @@ void LocaleManager::setLocale(struct Locale locale) {
// Are we already loading something? Stop it.
if(this->loadingAsset != nullptr) {
this->loadingAsset->eventLoaded.removeListener(this, &LocaleManager::onLanguageLoaded);
eventTeardownLanguageLoaded();
this->game->assetManager.queueUnload(this->loadingAsset);
this->loadingAsset = nullptr;
}
@ -47,7 +49,9 @@ void LocaleManager::setLocale(struct Locale locale) {
if(this->loadingAsset->loaded) {
this->onLanguageLoaded();
} else {
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
eventTeardownLanguageLoaded = useEvent([&]() {
this->onLanguageLoaded();
}, this->loadingAsset->eventLoaded);
}
}
}
@ -65,7 +69,7 @@ std::string LocaleManager::getString(std::string key) {
void LocaleManager::onLanguageLoaded() {
// Unload the previously loaded language
if(this->currentlyLoadedAsset != nullptr) {
this->currentlyLoadedAsset->eventLoaded.removeListener(this, &LocaleManager::onLanguageLoaded);
eventTeardownLanguageLoaded();
this->game->assetManager.queueUnload(this->currentlyLoadedAsset);
}

View File

@ -6,6 +6,7 @@
#pragma once
#include "state/StateEvent.hpp"
#include "asset/assets/LanguageAsset.hpp"
#include "state/StateOwner.hpp"
namespace Dawn {
class DawnGame;
@ -14,13 +15,14 @@ namespace Dawn {
std::string language;
};
class LocaleManager {
class LocaleManager : public StateOwner {
private:
DawnGame *game;
LanguageAsset *asset;
struct Locale locale;
LanguageAsset *currentlyLoadedAsset = nullptr;
LanguageAsset *loadingAsset = nullptr;
std::function<void()> eventTeardownLanguageLoaded;
/** Listens for when the pending language loads. */
void onLanguageLoaded();