package de.romjaki.pluggabledino import de.romjaki.pluggabledino.api.Events import de.romjaki.pluggabledino.api.PluginLoader import de.romjaki.pluggabledino.events.InitEvent import de.romjaki.pluggabledino.events.PostInitEvent import de.romjaki.pluggabledino.events.PreInitEvent import de.romjaki.pluggabledino.states.* import org.newdawn.slick.AppGameContainer import org.newdawn.slick.GameContainer import org.newdawn.slick.Input import org.newdawn.slick.state.StateBasedGame const val WIDTH = 640 const val HEIGHT = 480 const val REAL_WIDTH = 800 const val REAL_HEIGHT = 600 const val WIDTH_RATIO = REAL_WIDTH.toFloat() / WIDTH const val HEIGHT_RATIO = REAL_HEIGHT.toFloat() / HEIGHT const val FPS = 60 const val VERSION = 1.0 const val SPLASHSCREEN = 0 const val MAINMENU = 1 const val SETTINGS = 3 const val GAME = 2 const val LOST = 4 fun main(args: Array) { PluginLoader.loadPlugins() Input.disableControllers() val app = AppGameContainer(Application()) app.setDisplayMode(REAL_WIDTH, REAL_HEIGHT, false) app.setTargetFrameRate(FPS) app.setShowFPS(true) Events.broadcastEvent(PreInitEvent()) Events.broadcastEvent(InitEvent()) Events.broadcastEvent(PostInitEvent()) app.start() } class Application : StateBasedGame("Dino Game v$VERSION") { override fun initStatesList(container: GameContainer?) { addState(SplashScreen()) addState(MainMenu()) addState(SettingsState()) addState(GameState()) addState(LostState()) } }