From 1ef4d0832a7bdb93e31e17841787464d6ec1ea4d Mon Sep 17 00:00:00 2001 From: Nathan Lovato Date: Tue, 23 Oct 2018 14:38:33 +0900 Subject: [PATCH] Add the SelectArrow, to select targets on the battlefield --- godot/assets/sprites/select_arrow.png | Bin 0 -> 1093 bytes godot/assets/sprites/select_arrow.png.import | 31 ++++++++++ godot/combat/interface/SelectArrow.gd | 36 +++++++++++ godot/combat/interface/SelectArrow.tscn | 61 +++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 godot/assets/sprites/select_arrow.png create mode 100644 godot/assets/sprites/select_arrow.png.import create mode 100644 godot/combat/interface/SelectArrow.gd create mode 100644 godot/combat/interface/SelectArrow.tscn diff --git a/godot/assets/sprites/select_arrow.png b/godot/assets/sprites/select_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eb8399062119d718690e24209a361fcd9c8267 GIT binary patch literal 1093 zcmV-L1iJf)P)TKTzreu3z|A1cV8&pQm|R@o8|)Us z00epYd8rH-;M+9@Mi6~j7i1QuJYK++Tu@X3r2hc1QA%oYG6Msn0gzo%UQz%QXIuhg zizH=(**ie&qL3hGAo~oE&6f^g-vP0cAnZ3Fb`j7MKsLxsk#sN{ zvX{X*zo4=xGd-h3!N|bCK*2F3KPgoqxU#q;HMdy7GcP&6s35;6u_QGGs21WrFyILG z4G3}7b%yzagCUr~mmz>5gu#_TmjNzJIRM26g!MTP9L|hlXAoitkX%|+24ylb858Cs z%*dL=z+iEJfq}UWA(pa|fnf_51A}-XLQH)&1B0*`1H%qK0ECWF-Ul>_{r~^~32;bR za{vGf6951U69E94oEQKA0=h{=K~!jg?b^L-6JZ>{@o%Cv6p0`XW)ML|e1Dr1L6Hig zOPa+$K;2y&L=eGR#G$ip3eu@4JR%~94i**ZRD^;rC4*E&5Cw~at~suZ}z*a|QN3L z9AoBnM;p5Vm;^R0^V%8UDsbO5d?(u2^}usrTf`a8;r~S&TLoSKdlSrZ24D95eu`vZ zfL*`@@CIW~W2}F+n*0ZLJcF6)@sZFws_^Ov+}a15S4W<$7VrN~+ir`#oP=7%`+2bi z<8v_j9-6;m?MuyfJ`&mvcmB;~d}6fZB0e=*atWUqT5PY=pN%aQi@_bNgwG-4bV?xuc~N_&vZ&jNKpg1!~Yz zLcDji$JoPB7OO)`3Gi!x%TZ>lMN2X9$1rvUXT zb!Fg^6Jax)Lj!zYfcZaxn?HuV-YIm;!o(*yIJxYy$6<4VKO~B3S-AHZM&7~9{IW}% zz=yDTs?jm9(gPZ$uBX!NsYEBhf_F-KDat}s=!95+o4|P*rKKo~RiIN~o4^QgH_FFa z$`zdwI|_``C@sd_Z!YM(uu@;qd1Ix%ptWG7o}#s3rJkU*Vx>&c+Obk5XjiaODzs}@ zDH3|g!iu&lhYa^*ie?=qcbUcy|QDatbR2{mZ%r z`~=PcySr?k1+L>5RtkQ|UGi>&)`1${1MXA6T%0QvMMXtLMH%-O=n%Uu`9rBh00000 LNkvXXu0mjfp!VTb literal 0 HcmV?d00001 diff --git a/godot/assets/sprites/select_arrow.png.import b/godot/assets/sprites/select_arrow.png.import new file mode 100644 index 0000000..b6317ea --- /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 0000000..ec5d45e --- /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 0000000..b18d115 --- /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 = [ ] + -- GitLab