package electrosphere.engine.loadingthreads; import java.util.concurrent.Semaphore; /** * * @author amaterasu */ public class LoadingThread extends Thread { public static final int LOAD_TITLE_MENU = 0; public static final int LOAD_MAIN_GAME = 1; public static final int LOAD_ARENA = 2; public static final int LOAD_CHARACTER_SERVER = 3; public static final int LOAD_CLIENT_WORLD = 4; public static final int LOAD_DEBUG_RANDOM_SP_WORLD = 5; public static final int LOAD_LEVEL_EDITOR = 6; public static final int LOAD_LEVEL = 7; int threadType; Semaphore lock; public LoadingThread(int type){ threadType = type; lock = new Semaphore(1); } @Override public void run(){ lock.acquireUninterruptibly(); switch(threadType){ case LOAD_TITLE_MENU: { ClientLoading.loadMainMenu(); } break; case LOAD_MAIN_GAME: { ServerLoading.loadMainGameServer(); } break; case LOAD_ARENA: { ArenaLoading.loadArenaGameServer(); } break; case LOAD_CHARACTER_SERVER: { ClientLoading.loadCharacterServer(); } break; case LOAD_CLIENT_WORLD: { ClientLoading.loadClientWorld(); } break; //intended to act like you went through the steps of setting up a vanilla settings SP world case LOAD_DEBUG_RANDOM_SP_WORLD: { DebugSPWorldLoading.loadDebugSPWorld(); } break; //loads the level editor case LOAD_LEVEL_EDITOR: { LevelEditorLoading.loadLevelEditor(); } break; //loads the save in Globals.currentSave as a level case LOAD_LEVEL: { LevelLoading.loadLevel(); } break; } lock.release(); } public boolean isDone(){ boolean rVal = lock.tryAcquire(); if(rVal == true){ lock.release(); } return rVal; } }