package it.cavallium.warppi.gui.screens; import it.cavallium.warppi.event.KeyboardEventListener; import it.cavallium.warppi.event.TouchEventListener; import it.cavallium.warppi.gui.*; public abstract class Screen implements KeyboardEventListener, TouchEventListener, GraphicalInterface { public DisplayManager d; public boolean created = false; public boolean initialized = false; public boolean graphicInitialized = false; public HistoryBehavior historyBehavior = HistoryBehavior.NORMAL; public static long lastDebugScreenID = 1; public final long debugScreenID; public Screen() { debugScreenID = lastDebugScreenID++; } @Override public void initializeGraphic(ScreenContext ctx) throws InterruptedException { if (!graphicInitialized) { graphicInitialized = true; graphicInitialized(ctx); } } @Override public void initialize() throws InterruptedException { if (!initialized) { initialized = true; initialized(); } } @Override public void create() throws InterruptedException { if (!created) { created = true; created(); } } /** * Called when creating the screen * Called before initialized() * Called before graphicInitialized() * @throws InterruptedException */ public abstract void created() throws InterruptedException; /** * Load everything except skins, etc... * Called after created() * Called after graphicInitialized() * @throws InterruptedException */ public abstract void initialized() throws InterruptedException; /** * Load skins, etc... * Called after created() * Called before initialized() * @throws InterruptedException */ public abstract void graphicInitialized(ScreenContext ctx) throws InterruptedException; @Override public abstract void render(RenderContext ctx); @Override public void renderTopmost(RenderContext ctx) { } @Override public abstract void beforeRender(ScreenContext ctx, float dt); @Override public abstract boolean mustBeRefreshed(); public abstract String getSessionTitle(); }