2023-07-25 14:21:10 +09:30
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
var PC = load('PC.tscn')
|
|
|
|
var PCs = []
|
2023-07-26 23:08:39 +09:30
|
|
|
var worldmap_blocks = []
|
2023-07-25 14:21:10 +09:30
|
|
|
var sfx_buttons = []
|
2023-07-27 01:34:25 +09:30
|
|
|
var block_labels = []
|
|
|
|
|
|
|
|
func bin2str(bin: int) -> String:
|
|
|
|
var string := ''
|
|
|
|
for i in 8:
|
|
|
|
if i == 4:
|
|
|
|
string += ' '
|
|
|
|
if ((bin >> 7-i) & 0x01) != 0:
|
|
|
|
string += '1'
|
|
|
|
else:
|
|
|
|
string += '0'
|
|
|
|
return string
|
2023-07-25 14:21:10 +09:30
|
|
|
|
|
|
|
func _ready():
|
|
|
|
Engine.set_target_fps(60)
|
2023-07-25 16:33:45 +09:30
|
|
|
var strips = len(SpriteLoader.strip_textures) # * 4 / 5
|
2023-07-25 14:21:10 +09:30
|
|
|
#var strip_divide = strips * 2 / 5
|
|
|
|
var strip_divide = strips * 1 / 5
|
|
|
|
for i in strips:
|
|
|
|
PCs.append(PC.instance())
|
|
|
|
#PCs[-1].set_position(Vector2((i%strip_divide)*16, (i/strip_divide)*24*11))
|
|
|
|
PCs[-1].set_position(Vector2((i%strip_divide)*24, (i/strip_divide)*32))
|
2023-07-25 16:33:45 +09:30
|
|
|
PCs[-1].material.set_shader_param('palette', SpriteLoader.character_battle_sprite_palette_textures[i])
|
|
|
|
PCs[-1].texture = SpriteLoader.strip_textures[i]
|
2023-07-25 14:21:10 +09:30
|
|
|
|
|
|
|
add_child(PCs[-1])
|
|
|
|
# PCs.append(PC.instance())
|
|
|
|
# PCs[-1].set_position(Vector2(0, 2*24*11))
|
2023-07-25 16:33:45 +09:30
|
|
|
# PCs[-1].material.set_shader_param('palette', SpriteLoader.character_battle_sprite_palette_textures[45])
|
|
|
|
# PCs[-1].texture = SpriteLoader.weapon_textures['Fist']
|
2023-07-25 14:21:10 +09:30
|
|
|
# add_child(PCs[-1])
|
2023-07-26 23:08:39 +09:30
|
|
|
for i in 3:
|
|
|
|
worldmap_blocks.append(TextureRect.new())
|
|
|
|
worldmap_blocks[-1].texture = SpriteLoader.worldmap_block_atlas_textures[i]
|
|
|
|
# worldmap_blocks[-1].texture = SpriteLoader.worldmap_tile_atlas_textures[i]
|
|
|
|
worldmap_blocks[-1].material = SpriteLoader.shader_material.duplicate()
|
|
|
|
worldmap_blocks[-1].material.set_shader_param('palette', SpriteLoader.worldmap_palette_textures[i])
|
2023-07-27 01:34:25 +09:30
|
|
|
worldmap_blocks[-1].rect_scale *= 3
|
|
|
|
worldmap_blocks[-1].rect_position.x = i*256*3
|
2023-07-26 23:08:39 +09:30
|
|
|
worldmap_blocks[-1].rect_position.y = 280
|
|
|
|
add_child(worldmap_blocks[-1])
|
2023-07-27 01:34:25 +09:30
|
|
|
var x0 = i*256*3 + 4
|
|
|
|
var y0 = 280 + 12
|
|
|
|
for block in 0xC0:
|
|
|
|
var label = Label.new()
|
|
|
|
var p = MapLoader.worldmap_block_properties[i][block]
|
|
|
|
label.text = '%s\n%s\n%s' % [bin2str(p&0xff), bin2str((p>>8)&0xff), bin2str(p>>16)]
|
|
|
|
label.add_color_override('font_color_shadow', Color.black)
|
|
|
|
label.add_constant_override('shadow_as_outline', true)
|
|
|
|
label.rect_position.x = x0 + (block%16) * 48
|
|
|
|
label.rect_position.y = y0 + (block/16) * 48
|
|
|
|
label.rect_scale /= 2
|
|
|
|
add_child(label)
|
|
|
|
block_labels.append(label)
|
2023-07-26 21:52:54 +09:30
|
|
|
_create_sfx_buttons()
|
2023-07-27 01:34:25 +09:30
|
|
|
$BitSelector.connect('value_changed', self, '_update_block_mask')
|
|
|
|
|
|
|
|
func _update_block_mask(value: int):
|
|
|
|
var mask = 0xFFFFFF if (value<0) else (1<<value)
|
|
|
|
$BitSelectorMask.text = '%s\n%s\n%s' % [bin2str(mask&0xff), bin2str((mask>>8)&0xff), bin2str(mask>>16)]
|
|
|
|
for i in block_labels.size():
|
|
|
|
var p = MapLoader.worldmap_block_properties[i/0xC0][i%0xC0]
|
|
|
|
if (p & mask) > 0:
|
|
|
|
block_labels[i].add_color_override('font_color', Color.white)
|
|
|
|
else:
|
|
|
|
block_labels[i].add_color_override('font_color', Color.black)
|
|
|
|
|
2023-07-25 14:21:10 +09:30
|
|
|
|
2023-07-26 21:52:54 +09:30
|
|
|
|
|
|
|
func _create_sfx_buttons():
|
|
|
|
var disable_btn := !SoundLoader.has_loaded_audio_samples
|
|
|
|
if disable_btn:
|
|
|
|
SoundLoader.connect('audio_samples_loaded', self, '_enable_sfx_buttons')
|
2023-07-25 14:21:10 +09:30
|
|
|
for i in SoundLoader.INST_NUM:
|
|
|
|
var btn = Button.new()
|
|
|
|
btn.text = 'Play #%02X' % i
|
|
|
|
btn.align = Button.ALIGN_CENTER
|
2023-07-25 16:33:45 +09:30
|
|
|
btn.set_position(Vector2((i%8)*36, 200 + (i/8)*12))
|
2023-07-25 14:21:10 +09:30
|
|
|
btn.set_scale(Vector2(0.5, 0.5))
|
|
|
|
add_child(btn)
|
|
|
|
btn.connect('pressed', SoundLoader, 'play_sample', [i])
|
|
|
|
sfx_buttons.append(btn)
|
2023-07-26 21:52:54 +09:30
|
|
|
btn.disabled = disable_btn
|
2023-07-25 14:21:10 +09:30
|
|
|
for i in SoundLoader.SFX_NUM:
|
|
|
|
var btn = Button.new()
|
|
|
|
btn.text = 'SFX #%02X' % i
|
|
|
|
btn.align = Button.ALIGN_CENTER
|
2023-07-25 16:33:45 +09:30
|
|
|
btn.set_position(Vector2((i%8)*36, 264 + (i/8)*12))
|
2023-07-25 14:21:10 +09:30
|
|
|
btn.set_scale(Vector2(0.5, 0.5))
|
|
|
|
add_child(btn)
|
|
|
|
btn.connect('pressed', SoundLoader, 'play_sfx', [i])
|
|
|
|
sfx_buttons.append(btn)
|
2023-07-26 21:52:54 +09:30
|
|
|
btn.disabled = disable_btn
|
2023-07-25 14:21:10 +09:30
|
|
|
|
2023-07-26 21:52:54 +09:30
|
|
|
func _enable_sfx_buttons():
|
|
|
|
for btn in sfx_buttons:
|
|
|
|
btn.disabled = false
|
2023-07-25 14:21:10 +09:30
|
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
|
|
#func _process(delta):
|
|
|
|
# update()
|
|
|
|
# pass
|
|
|
|
|
|
|
|
|
|
|
|
func _on_OptionButton_item_selected(ID):
|
|
|
|
for pc in PCs:
|
|
|
|
pc.animation = ID
|