Support for units with multiple health
This commit is contained in:
		
							parent
							
								
									5ccbc5ca9e
								
							
						
					
					
						commit
						b87a26cc33
					
				
							
								
								
									
										7
									
								
								TODO.md
								
								
								
								
							
							
						
						
									
										7
									
								
								TODO.md
								
								
								
								
							| 
						 | 
					@ -1,16 +1,17 @@
 | 
				
			||||||
1. Power ups
 | 
					1. Power ups
 | 
				
			||||||
  * a chance of having power ups spawn on an random unoccupied square when a unit dies
 | 
					  * a chance of having power ups spawn on an random unoccupied square when a unit dies
 | 
				
			||||||
    * +health, +attack, +speed, +jump, (pawn only) remove "attack_only", spawn a new (random?) piece, change movement type
 | 
					    * +health, +attack, +speed, +jump, (pawn only) remove "attack_only", spawn a new (random?) piece, change movement type
 | 
				
			||||||
  * then the enemy respawns units, their new units are stronger
 | 
					 | 
				
			||||||
  * support for pieces with multiple hit points
 | 
					 | 
				
			||||||
2. Visual polish
 | 
					2. Visual polish
 | 
				
			||||||
  * multiple square tiles to add variation
 | 
					  * multiple square tiles to add variation
 | 
				
			||||||
  * make the help text indicate (flash, etc.)
 | 
					  * make the help text indicate (flash, etc.)
 | 
				
			||||||
 | 
					  * visual indications when damage is done but a unit isn't killed
 | 
				
			||||||
 | 
					  * visual indication when a unit is stronger (eg. a little skull or star or something)
 | 
				
			||||||
3. Sound effects
 | 
					3. Sound effects
 | 
				
			||||||
  * on hit
 | 
					  * on hit, especially when the unit isn't killed
 | 
				
			||||||
  * if possible, a small bit of background music
 | 
					  * if possible, a small bit of background music
 | 
				
			||||||
4. New units
 | 
					4. New units
 | 
				
			||||||
5. Further visual polish
 | 
					5. Further visual polish
 | 
				
			||||||
 | 
					  * animate the piece making the attack, and returning to it's spot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugs of note:
 | 
					Bugs of note:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										33
									
								
								src/Game.gd
								
								
								
								
							
							
						
						
									
										33
									
								
								src/Game.gd
								
								
								
								
							| 
						 | 
					@ -35,6 +35,7 @@ var ai_piece = null
 | 
				
			||||||
var reinforcements = null
 | 
					var reinforcements = null
 | 
				
			||||||
var reinforcements_size = 0
 | 
					var reinforcements_size = 0
 | 
				
			||||||
var reinforcements_coords = []
 | 
					var reinforcements_coords = []
 | 
				
			||||||
 | 
					var reinforcement_buff = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const on_ai_lose_piece = {
 | 
					const on_ai_lose_piece = {
 | 
				
			||||||
	50: "/root/Game/Huh",
 | 
						50: "/root/Game/Huh",
 | 
				
			||||||
| 
						 | 
					@ -259,8 +260,14 @@ func _ready():
 | 
				
			||||||
	get_node("/root/Game/EndMenu/VBoxContainer/Quit").connect("pressed", self, "_on_quit_game_pressed")
 | 
						get_node("/root/Game/EndMenu/VBoxContainer/Quit").connect("pressed", self, "_on_quit_game_pressed")
 | 
				
			||||||
	get_node("/root/Game/EndMenu/VBoxContainer/Fail Game").connect("pressed", self, "_on_fail_game")
 | 
						get_node("/root/Game/EndMenu/VBoxContainer/Fail Game").connect("pressed", self, "_on_fail_game")
 | 
				
			||||||
	get_node("/root/Game/EndMenu/VBoxContainer/Win Game").connect("pressed", self, "_on_win_game")
 | 
						get_node("/root/Game/EndMenu/VBoxContainer/Win Game").connect("pressed", self, "_on_win_game")
 | 
				
			||||||
 | 
						get_node("/root/Game/PanelRight/VBox/PieceInfo").connect("stat_change_requested", self, "_on_piece_stat_change_requested")
 | 
				
			||||||
	reset_game_state()
 | 
						reset_game_state()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_piece_stat_change_requested(piece, attribute, value):
 | 
				
			||||||
 | 
						if piece.get(attribute) != null:
 | 
				
			||||||
 | 
							piece.set(attribute, value)
 | 
				
			||||||
 | 
						get_node("/root/Game/PanelRight/VBox/PieceInfo").set_piece_info(piece)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _input(ev):
 | 
					func _input(ev):
 | 
				
			||||||
	if Input.is_action_just_pressed("ui_cancel"):
 | 
						if Input.is_action_just_pressed("ui_cancel"):
 | 
				
			||||||
		print(ev)
 | 
							print(ev)
 | 
				
			||||||
| 
						 | 
					@ -409,6 +416,13 @@ func _on_new_turn():
 | 
				
			||||||
				var square = self.board_squares[coord]
 | 
									var square = self.board_squares[coord]
 | 
				
			||||||
				if square['piece'] == null:
 | 
									if square['piece'] == null:
 | 
				
			||||||
					new_piece(square['reinforcement'], "opponent", coord)
 | 
										new_piece(square['reinforcement'], "opponent", coord)
 | 
				
			||||||
 | 
										square = self.board_squares[coord]
 | 
				
			||||||
 | 
										if self.reinforcement_buff != null:
 | 
				
			||||||
 | 
											square['piece'].speed += self.reinforcement_buff
 | 
				
			||||||
 | 
											square['piece'].damage += self.reinforcement_buff
 | 
				
			||||||
 | 
											square['piece'].health += self.reinforcement_buff
 | 
				
			||||||
 | 
											if self.reinforcement_buff >= 5:
 | 
				
			||||||
 | 
												square['piece'].health = true
 | 
				
			||||||
				else:
 | 
									else:
 | 
				
			||||||
					print("Reinforcement arrival at ", coord, " blocked by piece!")
 | 
										print("Reinforcement arrival at ", coord, " blocked by piece!")
 | 
				
			||||||
					get_node("BottomBar/Help").set_text("Reinforcement at " + str(coord) + " telefragged.")
 | 
										get_node("BottomBar/Help").set_text("Reinforcement at " + str(coord) + " telefragged.")
 | 
				
			||||||
| 
						 | 
					@ -429,6 +443,10 @@ func _on_new_turn():
 | 
				
			||||||
		get_node("BottomBar/Help").set_text("Multiple opponent reinforcements detected inbound")
 | 
							get_node("BottomBar/Help").set_text("Multiple opponent reinforcements detected inbound")
 | 
				
			||||||
		get_node("/root/Game/ThinkYouCan").play()
 | 
							get_node("/root/Game/ThinkYouCan").play()
 | 
				
			||||||
		self.flash_help = 3
 | 
							self.flash_help = 3
 | 
				
			||||||
 | 
							if self.reinforcement_buff != null:
 | 
				
			||||||
 | 
								self.reinforcement_buff += 1
 | 
				
			||||||
 | 
							if self.reinforcement_buff == null:
 | 
				
			||||||
 | 
								self.reinforcement_buff = 0
 | 
				
			||||||
	if self.reinforcements == null and not just_spawned:
 | 
						if self.reinforcements == null and not just_spawned:
 | 
				
			||||||
		var chance = lerp(0, 50, 1 - float(opponent_pieces.size())/16.0)
 | 
							var chance = lerp(0, 50, 1 - float(opponent_pieces.size())/16.0)
 | 
				
			||||||
		var i = self.rng.randi() % 100
 | 
							var i = self.rng.randi() % 100
 | 
				
			||||||
| 
						 | 
					@ -495,7 +513,7 @@ func _process(delta):
 | 
				
			||||||
				# End movement
 | 
									# End movement
 | 
				
			||||||
				var square = square_of_piece(self.ai_piece)
 | 
									var square = square_of_piece(self.ai_piece)
 | 
				
			||||||
				if target_square['piece'] != null:
 | 
									if target_square['piece'] != null:
 | 
				
			||||||
					# @TODO If the target doesn't die, we need to bounce back
 | 
										if square['piece'].damage >= target_square['piece'].health:
 | 
				
			||||||
						target_square['piece'].queue_free()
 | 
											target_square['piece'].queue_free()
 | 
				
			||||||
						square['piece'].kills += 1
 | 
											square['piece'].kills += 1
 | 
				
			||||||
						get_node("PanelRight/VBox/PieceInfo").set_piece_info(square['piece'])
 | 
											get_node("PanelRight/VBox/PieceInfo").set_piece_info(square['piece'])
 | 
				
			||||||
| 
						 | 
					@ -508,6 +526,13 @@ func _process(delta):
 | 
				
			||||||
						if index_to_play != null:
 | 
											if index_to_play != null:
 | 
				
			||||||
							print("ai loss Chance to play: ", c, " got index ", index_to_play)
 | 
												print("ai loss Chance to play: ", c, " got index ", index_to_play)
 | 
				
			||||||
							get_node(self.on_player_lose_piece[index_to_play]).play()
 | 
												get_node(self.on_player_lose_piece[index_to_play]).play()
 | 
				
			||||||
 | 
										else:
 | 
				
			||||||
 | 
											# Deal damage
 | 
				
			||||||
 | 
											target_square['piece'].health -= square['piece'].damage
 | 
				
			||||||
 | 
											# @TODO Sound effect
 | 
				
			||||||
 | 
											# @TODO Visual indication of damage dealt
 | 
				
			||||||
 | 
											# Bounce piece back
 | 
				
			||||||
 | 
											target_square = square
 | 
				
			||||||
				square['piece'] = null
 | 
									square['piece'] = null
 | 
				
			||||||
				target_square['piece'] = self.ai_piece
 | 
									target_square['piece'] = self.ai_piece
 | 
				
			||||||
				self.ai_piece.set_position(Vector2(target_square['x']*128, target_square['y']*128))
 | 
									self.ai_piece.set_position(Vector2(target_square['x']*128, target_square['y']*128))
 | 
				
			||||||
| 
						 | 
					@ -579,6 +604,7 @@ func _physics_process(delta):
 | 
				
			||||||
					var dest_square = self.board_squares[dest]
 | 
										var dest_square = self.board_squares[dest]
 | 
				
			||||||
					if dest_square['piece'] != null:
 | 
										if dest_square['piece'] != null:
 | 
				
			||||||
						# @TODO If the target doesn't die, we need to bounce back
 | 
											# @TODO If the target doesn't die, we need to bounce back
 | 
				
			||||||
 | 
											if square['piece'].damage >= dest_square['piece'].health:
 | 
				
			||||||
							dest_square['piece'].queue_free()
 | 
												dest_square['piece'].queue_free()
 | 
				
			||||||
							square['piece'].kills += 1
 | 
												square['piece'].kills += 1
 | 
				
			||||||
							get_node("PanelRight/VBox/PieceInfo").set_piece_info(square['piece'])
 | 
												get_node("PanelRight/VBox/PieceInfo").set_piece_info(square['piece'])
 | 
				
			||||||
| 
						 | 
					@ -591,6 +617,11 @@ func _physics_process(delta):
 | 
				
			||||||
							if index_to_play != null:
 | 
												if index_to_play != null:
 | 
				
			||||||
								print("ai loss Chance to play: ", c, " got index ", index_to_play)
 | 
													print("ai loss Chance to play: ", c, " got index ", index_to_play)
 | 
				
			||||||
								get_node(self.on_ai_lose_piece[index_to_play]).play()
 | 
													get_node(self.on_ai_lose_piece[index_to_play]).play()
 | 
				
			||||||
 | 
											else:
 | 
				
			||||||
 | 
												# @TODO Play a sound effect
 | 
				
			||||||
 | 
												# @TODO Visual indication of damage dealt
 | 
				
			||||||
 | 
												dest_square['piece'].health -= square['piece'].damage
 | 
				
			||||||
 | 
												dest_square = square
 | 
				
			||||||
					square['piece'] = null
 | 
										square['piece'] = null
 | 
				
			||||||
					dest_square['piece'] = piece
 | 
										dest_square['piece'] = piece
 | 
				
			||||||
					piece.set_position(Vector2(dest_square['x']*128, dest_square['y']*128))
 | 
										piece.set_position(Vector2(dest_square['x']*128, dest_square['y']*128))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,16 +5,41 @@ extends Control
 | 
				
			||||||
# var a = 2
 | 
					# var a = 2
 | 
				
			||||||
# var b = "text"
 | 
					# var b = "text"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					signal stat_change_requested
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var last_piece = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Called when the node enters the scene tree for the first time.
 | 
					# Called when the node enters the scene tree for the first time.
 | 
				
			||||||
func _ready():
 | 
					func _ready():
 | 
				
			||||||
	pass # Replace with function body.
 | 
						pass # Replace with function body.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func set_piece_info(piece):
 | 
					func set_piece_info(piece):
 | 
				
			||||||
 | 
						self.last_piece = piece
 | 
				
			||||||
	get_node("Vbox/Damage/Label").set_text(str(piece.damage))
 | 
						get_node("Vbox/Damage/Label").set_text(str(piece.damage))
 | 
				
			||||||
	get_node("Vbox/Movement/Label").set_text(str(piece.speed))
 | 
						get_node("Vbox/Movement/Label").set_text(str(piece.speed))
 | 
				
			||||||
	get_node("Vbox/Health/Label").set_text(str(piece.health))
 | 
						get_node("Vbox/Health/Label").set_text(str(piece.health))
 | 
				
			||||||
	get_node("Vbox/Kills/Label").set_text(str(piece.kills))
 | 
						get_node("Vbox/Kills/Label").set_text(str(piece.kills))
 | 
				
			||||||
 | 
						if piece.jump:
 | 
				
			||||||
 | 
							get_node("Vbox/Jump").set_text("Can jump")
 | 
				
			||||||
 | 
							get_node("Vbox/CheckButton").set_pressed(true)
 | 
				
			||||||
 | 
						else:
 | 
				
			||||||
 | 
							get_node("Vbox/Jump").set_text("Cannot jump")
 | 
				
			||||||
 | 
							get_node("Vbox/CheckButton").set_pressed(false)
 | 
				
			||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
					# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
				
			||||||
#func _process(delta):
 | 
					#func _process(delta):
 | 
				
			||||||
#	pass
 | 
					#	pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_UpMovement_pressed():
 | 
				
			||||||
 | 
						emit_signal("stat_change_requested", self.last_piece, "speed", self.last_piece.speed + 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_UpHealth_pressed():
 | 
				
			||||||
 | 
						emit_signal("stat_change_requested", self.last_piece, "health", self.last_piece.health + 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_UpDamage_pressed():
 | 
				
			||||||
 | 
						emit_signal("stat_change_requested", self.last_piece, "damage", self.last_piece.damage + 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_CheckButton_toggled(button_pressed):
 | 
				
			||||||
 | 
						emit_signal("stat_change_requested", self.last_piece, "jump", button_pressed)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=8 format=2]
 | 
					[gd_scene load_steps=10 format=2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource path="res://src/font_32.tres" type="DynamicFont" id=1]
 | 
					[ext_resource path="res://src/font_32.tres" type="DynamicFont" id=1]
 | 
				
			||||||
[ext_resource path="res://assets/export/health.png" type="Texture" id=2]
 | 
					[ext_resource path="res://assets/export/health.png" type="Texture" id=2]
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,11 @@
 | 
				
			||||||
[ext_resource path="res://assets/export/attack.png" type="Texture" id=5]
 | 
					[ext_resource path="res://assets/export/attack.png" type="Texture" id=5]
 | 
				
			||||||
[ext_resource path="res://assets/export/kills.png" type="Texture" id=6]
 | 
					[ext_resource path="res://assets/export/kills.png" type="Texture" id=6]
 | 
				
			||||||
[ext_resource path="res://src/PieceDetails.gd" type="Script" id=7]
 | 
					[ext_resource path="res://src/PieceDetails.gd" type="Script" id=7]
 | 
				
			||||||
 | 
					[ext_resource path="res://assets/source/Bitstream Vera Sans Mono Bold Nerd Font Complete.ttf" type="DynamicFontData" id=8]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="DynamicFont" id=1]
 | 
				
			||||||
 | 
					size = 20
 | 
				
			||||||
 | 
					font_data = ExtResource( 8 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Control" type="Control"]
 | 
					[node name="Control" type="Control"]
 | 
				
			||||||
anchor_right = 1.0
 | 
					anchor_right = 1.0
 | 
				
			||||||
| 
						 | 
					@ -19,6 +24,9 @@ __meta__ = {
 | 
				
			||||||
[node name="Vbox" type="VBoxContainer" parent="."]
 | 
					[node name="Vbox" type="VBoxContainer" parent="."]
 | 
				
			||||||
margin_right = 40.0
 | 
					margin_right = 40.0
 | 
				
			||||||
margin_bottom = 40.0
 | 
					margin_bottom = 40.0
 | 
				
			||||||
 | 
					__meta__ = {
 | 
				
			||||||
 | 
					"_edit_use_anchors_": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Label" type="Label" parent="Vbox"]
 | 
					[node name="Label" type="Label" parent="Vbox"]
 | 
				
			||||||
margin_right = 190.0
 | 
					margin_right = 190.0
 | 
				
			||||||
| 
						 | 
					@ -50,10 +58,16 @@ __meta__ = {
 | 
				
			||||||
"_editor_description_": ""
 | 
					"_editor_description_": ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Health" type="HBoxContainer" parent="Vbox"]
 | 
					[node name="UpMovement" type="Button" parent="Vbox"]
 | 
				
			||||||
margin_top = 151.0
 | 
					margin_top = 151.0
 | 
				
			||||||
margin_right = 190.0
 | 
					margin_right = 190.0
 | 
				
			||||||
margin_bottom = 215.0
 | 
					margin_bottom = 171.0
 | 
				
			||||||
 | 
					text = "Increase Movement"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Health" type="HBoxContainer" parent="Vbox"]
 | 
				
			||||||
 | 
					margin_top = 175.0
 | 
				
			||||||
 | 
					margin_right = 190.0
 | 
				
			||||||
 | 
					margin_bottom = 239.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TextureRect" type="TextureRect" parent="Vbox/Health"]
 | 
					[node name="TextureRect" type="TextureRect" parent="Vbox/Health"]
 | 
				
			||||||
material = ExtResource( 3 )
 | 
					material = ExtResource( 3 )
 | 
				
			||||||
| 
						 | 
					@ -69,10 +83,16 @@ margin_bottom = 51.0
 | 
				
			||||||
custom_fonts/font = ExtResource( 1 )
 | 
					custom_fonts/font = ExtResource( 1 )
 | 
				
			||||||
text = "1	"
 | 
					text = "1	"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Damage" type="HBoxContainer" parent="Vbox"]
 | 
					[node name="UpHealth" type="Button" parent="Vbox"]
 | 
				
			||||||
margin_top = 219.0
 | 
					margin_top = 243.0
 | 
				
			||||||
margin_right = 190.0
 | 
					margin_right = 190.0
 | 
				
			||||||
margin_bottom = 283.0
 | 
					margin_bottom = 263.0
 | 
				
			||||||
 | 
					text = "Increase health"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Damage" type="HBoxContainer" parent="Vbox"]
 | 
				
			||||||
 | 
					margin_top = 267.0
 | 
				
			||||||
 | 
					margin_right = 190.0
 | 
				
			||||||
 | 
					margin_bottom = 331.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TextureRect" type="TextureRect" parent="Vbox/Damage"]
 | 
					[node name="TextureRect" type="TextureRect" parent="Vbox/Damage"]
 | 
				
			||||||
material = ExtResource( 3 )
 | 
					material = ExtResource( 3 )
 | 
				
			||||||
| 
						 | 
					@ -88,10 +108,16 @@ margin_bottom = 51.0
 | 
				
			||||||
custom_fonts/font = ExtResource( 1 )
 | 
					custom_fonts/font = ExtResource( 1 )
 | 
				
			||||||
text = "1"
 | 
					text = "1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Kills" type="HBoxContainer" parent="Vbox"]
 | 
					[node name="UpDamage" type="Button" parent="Vbox"]
 | 
				
			||||||
margin_top = 287.0
 | 
					margin_top = 335.0
 | 
				
			||||||
margin_right = 190.0
 | 
					margin_right = 190.0
 | 
				
			||||||
margin_bottom = 351.0
 | 
					margin_bottom = 355.0
 | 
				
			||||||
 | 
					text = "Increase damage"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Kills" type="HBoxContainer" parent="Vbox"]
 | 
				
			||||||
 | 
					margin_top = 359.0
 | 
				
			||||||
 | 
					margin_right = 190.0
 | 
				
			||||||
 | 
					margin_bottom = 423.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TextureRect" type="TextureRect" parent="Vbox/Kills"]
 | 
					[node name="TextureRect" type="TextureRect" parent="Vbox/Kills"]
 | 
				
			||||||
material = ExtResource( 3 )
 | 
					material = ExtResource( 3 )
 | 
				
			||||||
| 
						 | 
					@ -106,3 +132,20 @@ margin_right = 87.0
 | 
				
			||||||
margin_bottom = 51.0
 | 
					margin_bottom = 51.0
 | 
				
			||||||
custom_fonts/font = ExtResource( 1 )
 | 
					custom_fonts/font = ExtResource( 1 )
 | 
				
			||||||
text = "1"
 | 
					text = "1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Jump" type="Label" parent="Vbox"]
 | 
				
			||||||
 | 
					margin_top = 427.0
 | 
				
			||||||
 | 
					margin_right = 190.0
 | 
				
			||||||
 | 
					margin_bottom = 451.0
 | 
				
			||||||
 | 
					custom_fonts/font = SubResource( 1 )
 | 
				
			||||||
 | 
					text = "Cannot jump"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CheckButton" type="CheckButton" parent="Vbox"]
 | 
				
			||||||
 | 
					margin_top = 455.0
 | 
				
			||||||
 | 
					margin_right = 190.0
 | 
				
			||||||
 | 
					margin_bottom = 495.0
 | 
				
			||||||
 | 
					text = "Jump"
 | 
				
			||||||
 | 
					[connection signal="pressed" from="Vbox/UpMovement" to="." method="_on_UpMovement_pressed"]
 | 
				
			||||||
 | 
					[connection signal="pressed" from="Vbox/UpHealth" to="." method="_on_UpHealth_pressed"]
 | 
				
			||||||
 | 
					[connection signal="pressed" from="Vbox/UpDamage" to="." method="_on_UpDamage_pressed"]
 | 
				
			||||||
 | 
					[connection signal="toggled" from="Vbox/CheckButton" to="." method="_on_CheckButton_toggled"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue