hero-mark-2/menus/palette_select.gd

42 lines
1.2 KiB
GDScript

extends Control
export (Array, String) var titles: Array
export (Array, Texture) var palettes: Array
export var previous_screen: PackedScene
var current_palette: int = 0
onready var sg: TextureRect = $SG
func _ready() -> void:
assert(titles.size() == palettes.size(), "titles and palettes arrays are not same size")
for i in palettes.size():
var id = palettes[i].resource_path.get_file().get_basename()
if id == Save.current_file.palette:
current_palette = i
break
sg.material.set_shader_param("palette", palettes[current_palette])
$"%PaletteTitle".text = titles[current_palette]
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
SceneManager.current_scene = previous_screen.instance()
return
elif event.is_action_pressed("ui_left"):
current_palette -= 1
elif event.is_action_pressed("ui_right"):
current_palette += 1
current_palette = posmod(current_palette, palettes.size())
sg.material.set_shader_param("palette", palettes[current_palette])
$"%PaletteTitle".text = titles[current_palette]
Game.current_palette = palettes[current_palette].resource_path.get_file().get_basename()
Save.current_file.palette = Game.current_palette
Save.current_file.save_to_file()