change skin on the fly

This commit is contained in:
yugecin 2017-01-21 14:31:03 +01:00
parent 7261793999
commit f523328cb3
2 changed files with 16 additions and 7 deletions

View File

@ -376,6 +376,8 @@ public class Options {
@Override
public void clickListItem(int index) {
skinName = skinDirs[index];
loadSkin();
EventBus.instance.post(new ResolutionChangedEvent(DisplayContainer.instance.width, DisplayContainer.instance.height));
}
@Override

View File

@ -40,6 +40,7 @@ import org.newdawn.slick.opengl.renderer.SGL;
import org.newdawn.slick.util.Log;
import yugecin.opsudance.core.events.EventBus;
import yugecin.opsudance.core.errorhandling.ErrorDumpable;
import yugecin.opsudance.core.events.EventListener;
import yugecin.opsudance.core.inject.InstanceContainer;
import yugecin.opsudance.core.state.OpsuState;
import yugecin.opsudance.core.state.specialstates.BarNotificationState;
@ -141,6 +142,13 @@ public class DisplayContainer implements ErrorDumpable, KeyListener, MouseListen
}
};
eventBus.subscribe(ResolutionChangedEvent.class, new EventListener<ResolutionChangedEvent>() {
@Override
public void onEvent(ResolutionChangedEvent event) {
destroyImages();
}
});
this.nativeDisplayMode = Display.getDisplayMode();
setUPS(1000);
setFPS(60);
@ -241,12 +249,16 @@ public class DisplayContainer implements ErrorDumpable, KeyListener, MouseListen
}
public void teardown() {
destroyImages();
CurveRenderState.shutdown();
Display.destroy();
}
public void destroyImages() {
InternalTextureLoader.get().clear();
GameImage.destroyImages();
GameData.Grade.destroyImages();
Beatmap.destroyBackgroundImageCache();
CurveRenderState.shutdown();
Display.destroy();
}
public void teardownAL() {
@ -321,11 +333,6 @@ public class DisplayContainer implements ErrorDumpable, KeyListener, MouseListen
}
private void initGL() throws Exception {
InternalTextureLoader.get().clear();
GameImage.destroyImages();
GameData.Grade.destroyImages();
Beatmap.destroyBackgroundImageCache();
GL.initDisplay(width, height);
GL.enterOrtho(width, height);