Sunset old state system finally.
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
Reference in New Issue
Block a user