diff --git a/src/yugecin/opsudance/core/state/BaseOpsuState.java b/src/yugecin/opsudance/core/state/BaseOpsuState.java index e4d621b2..01ed84d2 100644 --- a/src/yugecin/opsudance/core/state/BaseOpsuState.java +++ b/src/yugecin/opsudance/core/state/BaseOpsuState.java @@ -19,13 +19,15 @@ package yugecin.opsudance.core.state; import org.newdawn.slick.Graphics; import yugecin.opsudance.events.ResolutionChangedListener; +import yugecin.opsudance.events.SkinChangedListener; import java.io.StringWriter; import static yugecin.opsudance.core.InstanceContainer.*; -public abstract class BaseOpsuState implements OpsuState, ResolutionChangedListener { - +public abstract class BaseOpsuState implements OpsuState, ResolutionChangedListener, + SkinChangedListener +{ /** * state is dirty when resolution or skin changed but hasn't rendered yet */ @@ -34,6 +36,7 @@ public abstract class BaseOpsuState implements OpsuState, ResolutionChangedListe public BaseOpsuState() { displayContainer.addResolutionChangedListener(this); + skinservice.addSkinChangedListener(this); } protected void revalidate() { @@ -50,9 +53,18 @@ public abstract class BaseOpsuState implements OpsuState, ResolutionChangedListe @Override public void render(Graphics g) { } + + @Override + public void onSkinChanged(String name) { + makeDirty(); + } @Override public void onResolutionChanged(int w, int h) { + makeDirty(); + } + + private void makeDirty() { if (isCurrentState) { revalidate(); return; diff --git a/src/yugecin/opsudance/events/SkinChangedListener.java b/src/yugecin/opsudance/events/SkinChangedListener.java index 6409302b..76eb7e99 100644 --- a/src/yugecin/opsudance/events/SkinChangedListener.java +++ b/src/yugecin/opsudance/events/SkinChangedListener.java @@ -19,6 +19,5 @@ package yugecin.opsudance.events; public interface SkinChangedListener { - void onSkinChanged(String stringName); - + void onSkinChanged(String name); }