Skip to content
Snippets Groups Projects
BattleScene.scala 3.56 KiB
package Scene.Battle

import scalanative.unsafe.*
import scalanative.unsigned.*

import Component.*
import Scene.*
import SFML.Config.*
import SFML.SFMLGraphics.*
import SFML.SFMLSystem.*
import SFML.SFMLWindow.*

object BattleScene extends Scene:
    def load() =
        val rect = stackalloc[sfIntRect]()
        rect._1 = 0
        rect._2 = 0

        rect._3 = 256
        rect._4 = 144
        val background = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/background.png", rect))
        background.scale = 4

        val tiles = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/tiles.png", rect))
        tiles.scale = 4

        rect._3 = 120
        rect._4 = 41
        val bar = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/bar.png", rect))
        bar.scale = 4
        bar.pos = (544, 390)

        rect._3 = 120
        rect._4 = 30
        val barEnemy = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/bar_enemy.png", rect))
        barEnemy.scale = 4
        barEnemy.pos = (0, 90)

        rect._3 = 48
        rect._4 = 7
        val healthBar = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/health_bar_green.png", rect))
        healthBar.scale = 4
        healthBar.pos = (792, 466)
        healthBar.rect = Some(20, 7)

        val healthBarEnemy = Sprite(sfTexture_createFromFile(c"src/main/resources/battle/health_bar_green.png", rect))
        healthBarEnemy.scale = 4
        healthBarEnemy.pos = (200, 166)
        healthBarEnemy.rect = Some(30, 7)

        rect._3 = 256
        rect._4 = 48
        val textbox = Sprite(sfTexture_createFromFile(c"src/main/resources/textbox.png", rect))
        textbox.scale = 4
        textbox.pos = (0, 576)

        rect._3 = 64
        rect._4 = 64
        val pokemon = Sprite(sfTexture_createFromFile(c"src/main/resources/pokemons/back/151.png", rect))
        pokemon.scale = 4
        pokemon.pos = (130, 320)

        rect._3 = 64
        rect._4 = 64
        val pokemonEnemy = Sprite(sfTexture_createFromFile(c"src/main/resources/pokemons/front/150.png", rect))
        pokemonEnemy.scale = 4
        pokemonEnemy.pos = (640, 135)

        rect._3 = 78
        rect._4 = 46
        val fightBox = FightBox(sfTexture_createFromFile(c"src/main/resources/battle/fight_box.png", rect))
        fightBox.scale = 3
        fightBox.pos = (690, 603)

        val font = sfFont_createFromFile(c"src/main/resources/font.ttf")

        val name = Text(font)
        name.msg = c"Mew"
        name.color = 0.toUByte
        name.pos = (624, 415)

        val nameEnemy = Text(font)
        nameEnemy.msg = c"Mewtwo"
        nameEnemy.color = 0.toUByte
        nameEnemy.pos = (35, 115)

        val health = Text(font)
        health.msg = c"50"
        health.color = 0.toUByte
        health.pos = (800, 495)

        val maxHealth = Text(font)
        maxHealth.msg = c"76"
        maxHealth.color = 0.toUByte
        maxHealth.pos = (920, 495)

        val fight = Text(font)
        fight.msg = c"Fight"
        fight.color = 255.toUByte
        fight.pos = (745, 660)

        this.addComponent(background)
        this.addComponent(tiles)
        this.addComponent(bar)
        this.addComponent(healthBar)
        this.addComponent(barEnemy)
        this.addComponent(healthBarEnemy)
        this.addComponent(textbox)
        this.addComponent(pokemon)
        this.addComponent(pokemonEnemy)
        this.addComponent(fightBox)
        this.addComponent(name)
        this.addComponent(nameEnemy)
        this.addComponent(health)
        this.addComponent(maxHealth)
        this.addComponent(fight)