Fixed dynamic asset loading.
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user