Fixed dynamic asset loading.

This commit is contained in:
2022-12-16 09:04:12 -08:00
parent 71dbf6e646
commit 4090e61406
7 changed files with 29 additions and 4 deletions

View File

@ -18,7 +18,11 @@ void LocaleManager::init() {
// Begin loading
if(this->currentlyLoadedAsset == nullptr && this->loadingAsset == nullptr) {
this->loadingAsset = this->game->assetManager.getAndLoad<LanguageAsset>("language_" + this->locale.language);
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
if(this->loadingAsset->loaded) {
this->onLanguageLoaded();
} else {
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
}
}
}
@ -26,6 +30,7 @@ void LocaleManager::setLocale(struct Locale locale) {
auto oldLocale = this->getLocale();
this->locale = locale;
this->eventLocaleChanged.invoke();
// Did the language change?
if(this->locale.language != oldLocale.language) {
@ -39,10 +44,12 @@ void LocaleManager::setLocale(struct Locale locale) {
}
this->loadingAsset = this->game->assetManager.getAndLoad<LanguageAsset>("language_" + this->locale.language);
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
if(this->loadingAsset->loaded) {
this->onLanguageLoaded();
} else {
this->loadingAsset->eventLoaded.addListener(this, &LocaleManager::onLanguageLoaded);
}
}
this->eventLocaleChanged.invoke();
}
struct Locale LocaleManager::getLocale() {
@ -58,6 +65,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);
this->game->assetManager.queueUnload(this->currentlyLoadedAsset);
}