diff --git a/GameLib/src/main/kotlin/fr/o80/gamelib/drawing/Image.kt b/GameLib/src/main/kotlin/fr/o80/gamelib/drawing/Image.kt index dbdb984..7a89796 100644 --- a/GameLib/src/main/kotlin/fr/o80/gamelib/drawing/Image.kt +++ b/GameLib/src/main/kotlin/fr/o80/gamelib/drawing/Image.kt @@ -5,7 +5,7 @@ import org.lwjgl.BufferUtils import java.io.File import javax.imageio.ImageIO -class Image(filename: String) { +class Image(filename: File) { var id: Int private set @@ -13,7 +13,7 @@ class Image(filename: String) { val height: Int init { - val bufferedImage = ImageIO.read(File(filename)) + val bufferedImage = ImageIO.read(filename) width = bufferedImage.width height = bufferedImage.height diff --git a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/resources.kt b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/resources.kt new file mode 100644 index 0000000..2910d8e --- /dev/null +++ b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/resources.kt @@ -0,0 +1,14 @@ +package fr.o80.soulgame + +import java.io.File + +fun resourceFile(filename: String): File { + return File(filename).takeIf { it.exists() } + ?: File("./SoulGameImpl/resources/$filename") + +} + +fun resource(filename: String): String { + return File(filename).takeIf { it.exists() }?.let { filename } + ?: "./SoulGameImpl/resources/$filename" +} diff --git a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/gameover/GameOverScene.kt b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/gameover/GameOverScene.kt index 0ff4b20..567f0ca 100644 --- a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/gameover/GameOverScene.kt +++ b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/gameover/GameOverScene.kt @@ -6,6 +6,7 @@ import fr.o80.gamelib.loop.Dimension import fr.o80.gamelib.loop.KeyPipeline import fr.o80.gamelib.text.TextRenderer import fr.o80.soulgame.SoulSceneManager +import fr.o80.soulgame.resource import fr.o80.soulgame.scenes.greenBackground import org.lwjgl.glfw.GLFW @@ -17,7 +18,7 @@ class GameOverScene( private val fontHeight: Float = 50f private val textRenderer: TextRenderer = TextRenderer( - fontPath = "./resources/fonts/LaserCutRegular.ttf", + fontPath = resource("fonts/LaserCutRegular.ttf"), margin = 0f, fontHeight = fontHeight ) diff --git a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelLoader.kt b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelLoader.kt index 52e34d4..253b348 100644 --- a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelLoader.kt +++ b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelLoader.kt @@ -1,17 +1,17 @@ package fr.o80.soulgame.scenes.level +import fr.o80.soulgame.resourceFile import fr.o80.soulgame.scenes.level.level.Block import fr.o80.soulgame.scenes.level.level.Door import fr.o80.soulgame.scenes.level.level.Level import fr.o80.soulgame.scenes.level.level.Point import fr.o80.soulgame.scenes.level.level.Wall -import java.io.File class LevelLoader { fun load(levelName: String): Level { - val source = File("./resources/levels/$levelName.txt").inputStream() + val source = resourceFile("levels/$levelName.txt").inputStream() val blocks = mutableListOf() val mobSpawns = mutableListOf() diff --git a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelRenderer.kt b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelRenderer.kt index dd418bf..ca2e1b4 100644 --- a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelRenderer.kt +++ b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelRenderer.kt @@ -4,6 +4,7 @@ import fr.o80.gamelib.GG import fr.o80.gamelib.dsl.draw import fr.o80.gamelib.loop.Dimension import fr.o80.gamelib.text.TextRenderer +import fr.o80.soulgame.resource import fr.o80.soulgame.scenes.greenBackground import fr.o80.soulgame.scenes.level.drawing.EntityDrawer import fr.o80.soulgame.scenes.level.drawing.ExtraTileSelector @@ -24,7 +25,7 @@ class LevelRenderer( private val entityDrawer: EntityDrawer = EntityDrawer(SpriteDrawer(10)) private val levelDrawer: LevelDrawer = LevelDrawer(SpriteDrawer(10), tileSize) - private val textRenderer: TextRenderer = TextRenderer("./resources/fonts/LaserCutRegular.ttf") + private val textRenderer: TextRenderer = TextRenderer(resource("fonts/LaserCutRegular.ttf")) private val hud: HUD = HUD(textRenderer, dimension) fun open() { diff --git a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelResources.kt b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelResources.kt index a2c5475..eb13dd9 100644 --- a/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelResources.kt +++ b/SoulGameImpl/src/main/kotlin/fr/o80/soulgame/scenes/level/LevelResources.kt @@ -2,6 +2,7 @@ package fr.o80.soulgame.scenes.level import fr.o80.gamelib.drawing.Image import fr.o80.gamelib.drawing.Sprite +import fr.o80.soulgame.resourceFile class LevelResources { @@ -23,7 +24,7 @@ class LevelResources { private fun loadTextures() { entitySprite = Sprite( - image = Image("./resources/sprites/knights.png"), + image = Image(resourceFile("sprites/knights.png")), unitWidth = 57, unitHeight = 87, marginTop = 4, @@ -31,12 +32,12 @@ class LevelResources { verticalPadding = 21 ) wallsSprite = Sprite( - image = Image("./resources/sprites/walls.png"), + image = Image(resourceFile("sprites/walls.png")), unitWidth = 70, unitHeight = 70 ) extrasSprite = Sprite( - image = Image("./resources/sprites/extras.png"), + image = Image(resourceFile("sprites/extras.png")), unitWidth = 16, unitHeight = 16 )