Compare commits
No commits in common. "dfb5ecd2db1ab6df81c4d91891db8e8c0a072249" and "3bb8a97f6d25d549c9b39979bb8e8c204ebd3bc9" have entirely different histories.
dfb5ecd2db
...
3bb8a97f6d
|
@ -1,4 +1,3 @@
|
|||
build/
|
||||
.import/
|
||||
assets/export/*.import
|
||||
*.import
|
||||
|
|
6
TODO.md
6
TODO.md
|
@ -1,8 +1,10 @@
|
|||
1. Visual polish
|
||||
* visual indication when a unit is stronger (eg. a little skull or star or something)
|
||||
* multiple square tiles to add variation
|
||||
* 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)
|
||||
2. Sound effects
|
||||
* when a unit is killed
|
||||
* on hit, especially when the unit isn't killed
|
||||
* if possible, a small bit of background music
|
||||
3. Gameplay additions:
|
||||
* powerups: change movement type, remove pawn's attack and movement restrictions
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,75 +1,7 @@
|
|||
<?xml version="1.0" standalone="no" ?>
|
||||
<!DOCTYPE project PUBLIC "-//audacityproject-1.3.0//DTD//EN" "http://audacity.sourceforge.net/xml/audacityproject-1.3.0.dtd" >
|
||||
<project xmlns="http://audacity.sourceforge.net/xml/" projname="voice_clips_data" version="1.3.0" audacityversion="2.4.2" sel0="0.1044897959" sel1="0.1625396825" vpos="0" h="0.0000000000" zoom="86.1328125000" rate="44100.0" snapto="off" selectionformat="hh:mm:ss + milliseconds" frequencyformat="Hz" bandwidthformat="octaves">
|
||||
<project xmlns="http://audacity.sourceforge.net/xml/" projname="voice_clips_data" version="1.3.0" audacityversion="2.4.2" sel0="0.0000000000" sel1="0.0000000000" vpos="0" h="30.8477097506" zoom="86.1328125000" rate="44100.0" snapto="off" selectionformat="hh:mm:ss + milliseconds" frequencyformat="Hz" bandwidthformat="octaves">
|
||||
<tags/>
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="0" linked="1" mute="0" solo="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<waveclip offset="0.00000000" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="12800">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f023.au" len="12800" min="-0.503601" max="0.707655" rms="0.04372"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="1.01006803" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="17408">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f4ba.au" len="17408" min="-1.269999" max="1.343039" rms="0.137565"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="2.03174603" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="14336">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1ff3d.au" len="14336" min="-1.154202" max="1.230705" rms="0.072907"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="3.01859410" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="18944">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f3b6.au" len="18944" min="-1.430278" max="1.277689" rms="0.162329"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
</wavetrack>
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="1" linked="0" mute="0" solo="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<waveclip offset="0.00000000" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="12800">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f4a9.au" len="12800" min="-0.507655" max="0.715664" rms="0.044112"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="1.01006803" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="17408">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f808.au" len="17408" min="-1.273832" max="1.353467" rms="0.138377"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="2.03174603" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="14336">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1f671.au" len="14336" min="-1.118351" max="1.221182" rms="0.073425"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
<waveclip offset="3.01859410" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="18944">
|
||||
<waveblock start="0">
|
||||
<simpleblockfile filename="eff1fc1b.au" len="18944" min="-1.431384" max="1.275673" rms="0.163134"/>
|
||||
</waveblock>
|
||||
</sequence>
|
||||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
</wavetrack>
|
||||
<wavetrack name="Audio Track" isSelected="1" height="150" minimized="0" channel="0" linked="1" mute="1" solo="0" rate="44100" gain="1.0" pan="0.0" colorindex="0"/>
|
||||
<wavetrack name="Audio Track" isSelected="1" height="150" minimized="0" channel="1" linked="0" mute="1" solo="0" rate="44100" gain="1.0" pan="0.0" colorindex="0"/>
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="0" linked="1" mute="1" solo="0" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
|
@ -192,7 +124,7 @@
|
|||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
</wavetrack>
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="0" linked="1" mute="1" solo="0" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="0" linked="1" mute="0" solo="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<waveclip offset="0.00000000" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="42496">
|
||||
<waveblock start="0">
|
||||
|
@ -202,7 +134,7 @@
|
|||
<envelope numpoints="0"/>
|
||||
</waveclip>
|
||||
</wavetrack>
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="1" linked="0" mute="1" solo="0" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<wavetrack name="Audio Track" isSelected="0" height="150" minimized="0" channel="1" linked="0" mute="0" solo="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||
<waveclip offset="0.00000000" colorindex="0">
|
||||
<sequence maxsamples="262144" sampleformat="262159" numsamples="42496">
|
||||
<waveblock start="0">
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
25
src/Game.gd
25
src/Game.gd
|
@ -55,13 +55,6 @@ const piece_types = {
|
|||
"queen": "res://src/pieces/Queen.tscn",
|
||||
}
|
||||
|
||||
const hit_sounds = [
|
||||
"/root/Game/Hit1",
|
||||
"/root/Game/Hit2",
|
||||
"/root/Game/Hit3",
|
||||
"/root/Game/Hit4",
|
||||
]
|
||||
|
||||
func new_piece(piece_type, group, position = null):
|
||||
if not piece_types.has(piece_type):
|
||||
return null
|
||||
|
@ -501,13 +494,9 @@ func _process(delta):
|
|||
if self.flash_help != null:
|
||||
if self.flash_help > 0:
|
||||
self.flash_help -= delta
|
||||
get_node("BottomBar/Help").set_modulate(
|
||||
lerp(Color(1, 1, 1, 1), Color(1, .63, .12, 1), self.flash_help)
|
||||
)
|
||||
else:
|
||||
self._reset_help()
|
||||
self.flash_help = null
|
||||
get_node("BottomBar/Help").set_modulate(Color(1, 1, 1, 1))
|
||||
var opponent_pieces = get_tree().get_nodes_in_group("opponent")
|
||||
if opponent_pieces.empty() or get_tree().get_nodes_in_group("player").empty() and self.current_state != 99:
|
||||
# The game is over
|
||||
|
@ -543,11 +532,8 @@ func _process(delta):
|
|||
else:
|
||||
# Deal damage
|
||||
target_square['piece'].health -= square['piece'].damage
|
||||
var idx = self.rng.randi() % self.hit_sounds.size()
|
||||
get_node(self.hit_sounds[idx]).play()
|
||||
target_square['piece'].set_status(
|
||||
"-" + str(square['piece'].damage), 2, Color(1, 0, 0, 1), Color(1, 0, 0, 0)
|
||||
)
|
||||
# @TODO Sound effect
|
||||
# @TODO Visual indication of damage dealt
|
||||
# Bounce piece back
|
||||
target_square = square
|
||||
square['piece'] = null
|
||||
|
@ -641,11 +627,8 @@ func _physics_process(delta):
|
|||
print("ai loss Chance to play: ", c, " got index ", index_to_play)
|
||||
get_node(self.on_ai_lose_piece[index_to_play]).play()
|
||||
else:
|
||||
var idx = self.rng.randi() % self.hit_sounds.size()
|
||||
get_node(self.hit_sounds[idx]).play()
|
||||
dest_square['piece'].set_status(
|
||||
"-" + str(square['piece'].damage), 2, Color(1, 0, 0, 1), Color(1, 0, 0, 0)
|
||||
)
|
||||
# @TODO Play a sound effect
|
||||
# @TODO Visual indication of damage dealt
|
||||
dest_square['piece'].health -= square['piece'].damage
|
||||
dest_square = square
|
||||
square['piece'] = null
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=26 format=2]
|
||||
[gd_scene load_steps=22 format=2]
|
||||
|
||||
[ext_resource path="res://src/Game.gd" type="Script" id=1]
|
||||
[ext_resource path="res://src/Playfield.tscn" type="PackedScene" id=2]
|
||||
|
@ -18,14 +18,9 @@
|
|||
[ext_resource path="res://assets/export/skip_disabled.png" type="Texture" id=16]
|
||||
[ext_resource path="res://assets/export/skip_hover.png" type="Texture" id=17]
|
||||
[ext_resource path="res://src/PieceDetails.tscn" type="PackedScene" id=18]
|
||||
[ext_resource path="res://assets/export/hit2.wav" type="AudioStream" id=19]
|
||||
[ext_resource path="res://assets/export/hit1.wav" type="AudioStream" id=20]
|
||||
[ext_resource path="res://assets/export/hit3.wav" type="AudioStream" id=21]
|
||||
[ext_resource path="res://assets/export/hit4.wav" type="AudioStream" id=22]
|
||||
|
||||
[sub_resource type="DynamicFont" id=1]
|
||||
size = 24
|
||||
outline_color = Color( 1, 0.635294, 0.121569, 1 )
|
||||
font_data = ExtResource( 4 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=2]
|
||||
|
@ -239,18 +234,6 @@ margin_bottom = 14.0
|
|||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Hit1" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 20 )
|
||||
|
||||
[node name="Hit2" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 19 )
|
||||
|
||||
[node name="Hit3" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 21 )
|
||||
|
||||
[node name="Hit4" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 22 )
|
||||
[connection signal="finished" from="EndSong" to="." method="_on_EndSong_finished"]
|
||||
[connection signal="finished" from="Yammering" to="." method="_on_Yammering_finished"]
|
||||
[connection signal="finished" from="Dust" to="." method="_on_Dust_finished"]
|
||||
|
|
22
src/Piece.gd
22
src/Piece.gd
|
@ -22,20 +22,6 @@ const CLICK_THRESHOLD = 0.15 # seconds
|
|||
var last_click = null
|
||||
var hold_started = false
|
||||
|
||||
var status_timer_max = 0
|
||||
var status_timer = 0
|
||||
var status_color_start = Color(1, 1, 1, 1)
|
||||
var status_color_end = Color(1, 1, 1, 0)
|
||||
|
||||
func set_status(message, time, c1: Color = Color(1, 1, 1, 1), c2: Color = Color(1, 1, 1, 0)):
|
||||
self.status_timer = time
|
||||
self.status_timer_max = time
|
||||
self.status_color_start = c1
|
||||
self.status_color_end = c2
|
||||
get_node("StatusChange").set_modulate(c1)
|
||||
get_node("StatusChange").set_text(message)
|
||||
get_node("StatusChange").set_visible(true)
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass
|
||||
|
@ -80,13 +66,7 @@ func _process(delta):
|
|||
emit_signal("hold_start", self, null)
|
||||
if self.hold_started:
|
||||
self.set_global_position(get_viewport().get_mouse_position())
|
||||
if self.status_timer > 0:
|
||||
self.status_timer -= delta
|
||||
if self.status_timer <= 0:
|
||||
get_node("StatusChange").set_visible(false)
|
||||
get_node("StatusChange").set_modulate(
|
||||
lerp(self.status_color_end, self.status_color_start, self.status_timer / self.status_timer_max)
|
||||
)
|
||||
|
||||
func cancel_hold():
|
||||
self.last_click = null
|
||||
self.hold_started = false
|
||||
|
|
|
@ -85,15 +85,16 @@ custom_fonts/font = ExtResource( 1 )
|
|||
text = "1 "
|
||||
|
||||
[node name="UpHealth" type="Button" parent="Vbox"]
|
||||
visible = false
|
||||
margin_top = 219.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 239.0
|
||||
text = "Increase health"
|
||||
|
||||
[node name="Damage" type="HBoxContainer" parent="Vbox"]
|
||||
margin_top = 243.0
|
||||
margin_top = 219.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 307.0
|
||||
margin_bottom = 283.0
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="Vbox/Damage"]
|
||||
material = ExtResource( 3 )
|
||||
|
@ -117,9 +118,9 @@ margin_bottom = 307.0
|
|||
text = "Increase damage"
|
||||
|
||||
[node name="Kills" type="HBoxContainer" parent="Vbox"]
|
||||
margin_top = 311.0
|
||||
margin_top = 287.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 375.0
|
||||
margin_bottom = 351.0
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="Vbox/Kills"]
|
||||
material = ExtResource( 3 )
|
||||
|
@ -136,23 +137,24 @@ custom_fonts/font = ExtResource( 1 )
|
|||
text = "1"
|
||||
|
||||
[node name="Jump" type="Label" parent="Vbox"]
|
||||
margin_top = 379.0
|
||||
margin_top = 355.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 403.0
|
||||
margin_bottom = 379.0
|
||||
custom_fonts/font = SubResource( 1 )
|
||||
text = "Cannot jump"
|
||||
|
||||
[node name="CheckButton" type="CheckButton" parent="Vbox"]
|
||||
margin_top = 407.0
|
||||
visible = false
|
||||
margin_top = 383.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 447.0
|
||||
margin_bottom = 423.0
|
||||
text = "Jump"
|
||||
|
||||
[node name="Powerup" type="Button" parent="Vbox"]
|
||||
visible = false
|
||||
margin_top = 427.0
|
||||
margin_top = 383.0
|
||||
margin_right = 190.0
|
||||
margin_bottom = 447.0
|
||||
margin_bottom = 403.0
|
||||
text = "Spawn powerup"
|
||||
[connection signal="pressed" from="Vbox/UpMovement" to="." method="_on_UpMovement_pressed"]
|
||||
[connection signal="pressed" from="Vbox/UpHealth" to="." method="_on_UpHealth_pressed"]
|
||||
|
|
|
@ -1,17 +1,25 @@
|
|||
[gd_scene load_steps=4 format=2]
|
||||
[gd_scene load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://src/pieces/Piece.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://src/hilight.shader" type="Shader" id=1]
|
||||
[ext_resource path="res://src/pieces/Pawn.gd" type="Script" id=2]
|
||||
[ext_resource path="res://assets/export/pawn.png" type="Texture" id=3]
|
||||
|
||||
[node name="Piece" instance=ExtResource( 1 )]
|
||||
[sub_resource type="ShaderMaterial" id=1]
|
||||
shader = ExtResource( 1 )
|
||||
shader_param/width = 2.0
|
||||
shader_param/color = null
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=2]
|
||||
extents = Vector2( 128, 128 )
|
||||
|
||||
[node name="Piece" type="Area2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Body" parent="." index="0"]
|
||||
[node name="Body" type="Sprite" parent="."]
|
||||
material = SubResource( 1 )
|
||||
texture = ExtResource( 3 )
|
||||
|
||||
[node name="StatusChange" parent="." index="2"]
|
||||
margin_left = 0.902771
|
||||
margin_top = -73.0833
|
||||
margin_right = 81.9028
|
||||
margin_bottom = -0.0833435
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
modulate = Color( 0.345098, 0.980392, 0.0862745, 1 )
|
||||
shape = SubResource( 2 )
|
||||
[connection signal="input_event" from="." to="." method="_on_Piece_input_event"]
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[gd_scene load_steps=6 format=2]
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://src/Piece.gd" type="Script" id=1]
|
||||
[ext_resource path="res://src/hilight.shader" type="Shader" id=2]
|
||||
[ext_resource path="res://src/font_32.tres" type="DynamicFont" id=3]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=1]
|
||||
shader = ExtResource( 2 )
|
||||
|
@ -10,7 +9,7 @@ shader_param/width = 2.0
|
|||
shader_param/color = null
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=2]
|
||||
extents = Vector2( 64, 64 )
|
||||
extents = Vector2( 128, 128 )
|
||||
|
||||
[node name="Piece" type="Area2D"]
|
||||
script = ExtResource( 1 )
|
||||
|
@ -20,16 +19,4 @@ material = SubResource( 1 )
|
|||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="StatusChange" type="Label" parent="."]
|
||||
margin_left = 45.0
|
||||
margin_top = -126.0
|
||||
margin_right = 126.0
|
||||
margin_bottom = -53.0
|
||||
custom_fonts/font = ExtResource( 3 )
|
||||
align = 1
|
||||
valign = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
[connection signal="input_event" from="." to="." method="_on_Piece_input_event"]
|
||||
|
|
Loading…
Reference in New Issue