ChocolateBird/widgets/BattleScene.gd

36 lines
1.3 KiB
GDScript

extends ReferenceRect
const battle_bg_shader = preload('res://shaders/tilemap_shader.gdshader')
onready var background := $background
var bg: SpriteLoader.BattleBackground
var pal_l: int
var atlas_l: int
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var battle_bg_mat := ShaderMaterial.new()
battle_bg_mat.shader = battle_bg_shader
background.material = battle_bg_mat
set_bg(1)
const RANDOM_BGMS_PLAYLIST = [34, 43, 1, 9, 64]
func _on_menu_presented() -> void:
MusicManager.play_bgm('BGM%02d-1000'%RANDOM_BGMS_PLAYLIST.pick_random(), 0)
func set_bg(index: int) -> void:
self.bg = SpriteLoader.battle_backgrounds[index]
self.pal_l = len(self.bg.palette_texs)
self.atlas_l = len(self.bg.tile_atlas_texs)
background.texture = self.bg.tilemap_tex
background.material.set_shader_param('palette', self.bg.palette_texs[0])
background.material.set_shader_param('tile_atlas', self.bg.tile_atlas_texs[0])
# Called every frame. 'delta' is the elapsed time since the previous frame.
var t := 0.0
func _process(delta: float) -> void:
if not self.bg:
return
self.t = fmod(self.t + delta, 30.0)
background.material.set_shader_param('palette', self.bg.palette_texs[int(self.t * 30) % self.pal_l])
background.material.set_shader_param('tile_atlas', self.bg.tile_atlas_texs[int(self.t * 7.5) % self.atlas_l])