diff --git a/godot/assets/sprites/select_arrow.png b/godot/assets/sprites/select_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eb8399062119d718690e24209a361fcd9c8267 Binary files /dev/null and b/godot/assets/sprites/select_arrow.png differ diff --git a/godot/assets/sprites/select_arrow.png.import b/godot/assets/sprites/select_arrow.png.import new file mode 100644 index 0000000000000000000000000000000000000000..b6317ea0dea06252057d7e48c63f83bee8482ccf --- /dev/null +++ b/godot/assets/sprites/select_arrow.png.import @@ -0,0 +1,31 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/select_arrow.png-5d178350ce7f28b567639401fad96055.stex" + +[deps] + +source_file="res://assets/sprites/select_arrow.png" +dest_files=[ "res://.import/select_arrow.png-5d178350ce7f28b567639401fad96055.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/godot/combat/interface/SelectArrow.gd b/godot/combat/interface/SelectArrow.gd new file mode 100644 index 0000000000000000000000000000000000000000..ec5d45e483ecd5a68793bbf4215b5b6b28df45af --- /dev/null +++ b/godot/combat/interface/SelectArrow.gd @@ -0,0 +1,36 @@ +extends Position2D + +signal target_selected(battler) + +onready var anim_player = $Sprite/AnimationPlayer + +var targets : Array +var target_active : Battler + +func _ready(): + hide() + +func select_target(battlers : Array) -> Battler: + visible = true + targets = battlers + target_active = targets[0] + global_position = target_active.global_position + anim_player.play("wiggle") + var selected_target : Battler = yield(self, "target_selected") + hide() + return selected_target + +func move_to(node_2d : Battler): + global_position = node_2d.global_position + +func _input(event): + if event.is_action_pressed("ui_accept"): + emit_signal("target_selected", target_active) + + var index = targets.find(target_active) + if event.is_action_pressed("ui_down"): + target_active = targets[(index + 1) % targets.size()] + move_to(target_active) + if event.is_action_pressed("ui_up"): + target_active = targets[(index - 1 + targets.size()) % targets.size()] + move_to(target_active) diff --git a/godot/combat/interface/SelectArrow.tscn b/godot/combat/interface/SelectArrow.tscn new file mode 100644 index 0000000000000000000000000000000000000000..b18d115e61c22c6497a538cb02c5e9b879d18ad5 --- /dev/null +++ b/godot/combat/interface/SelectArrow.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://combat/interface/SelectArrow.gd" type="Script" id=1] +[ext_resource path="res://assets/sprites/select_arrow.png" type="Texture" id=2] + +[sub_resource type="Animation" id=1] + +resource_name = "SETUP" +length = 0.001 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} + +[sub_resource type="Animation" id=2] + +resource_name = "wiggle" +length = 0.6 +loop = true +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 0.353553, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( -8, 0 ) ] +} + +[node name="SelectArrow" type="Position2D"] +script = ExtResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( -5.39153, 0 ) +texture = ExtResource( 2 ) +_sections_unfolded = [ "Transform" ] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"] +root_node = NodePath("..") +autoplay = "" +playback_process_mode = 1 +playback_default_blend_time = 0.0 +playback_speed = 1.0 +anims/SETUP = SubResource( 1 ) +anims/wiggle = SubResource( 2 ) +blend_times = [ ] +