mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-13 19:04:54 +01:00
Card particles and more sound effects
This commit is contained in:
parent
17b8c64a1d
commit
5d59623392
28 changed files with 246 additions and 16 deletions
|
@ -91,6 +91,11 @@ We have a [Code of Conduct](CODE_OF_CONDUCT.md) in place that applies to all pro
|
|||
## Thanks
|
||||
|
||||
- "success" sound by [Leszek_Szarzy, CC0](https://freesound.org/people/Leszek_Szary/sounds/171670/)
|
||||
- "swish" sound by [jawbutch, CC0](https://freesound.org/people/jawbutch/sounds/344408/)
|
||||
- "swoosh" sound by [WizardOZ, CC0](https://freesound.org/people/WizardOZ/sounds/419341/)
|
||||
- "poof" sound by [Saviraz, CC0](https://freesound.org/people/Saviraz/sounds/512217/)
|
||||
- "buzzer" sound by [Loyalty_Freak_Music, CC0](https://freesound.org/people/Loyalty_Freak_Music/sounds/407466/)
|
||||
- "typewriter_ding" sound by [_stubb, CC0](https://freesound.org/people/_stubb/sounds/406243/)
|
||||
|
||||
## License
|
||||
|
||||
|
|
6
card.gd
6
card.gd
|
@ -54,6 +54,7 @@ func _unhandled_input(event):
|
|||
if event.button_index == BUTTON_LEFT and event.pressed and hovered:
|
||||
dragged = true
|
||||
game.dragged_object = self
|
||||
$PickupSound.play()
|
||||
drag_offset = get_viewport().get_mouse_position() - global_position
|
||||
get_tree().set_input_as_handled()
|
||||
modulate.a = 0.5
|
||||
|
@ -94,6 +95,7 @@ func set_energy(new_energy):
|
|||
func move_back():
|
||||
position = _home_position
|
||||
rotation_degrees = _home_rotation
|
||||
$ReturnSound.play()
|
||||
|
||||
func buuurn():
|
||||
move_back()
|
||||
|
@ -120,6 +122,10 @@ func dropped_on(other):
|
|||
|
||||
func try_play(command):
|
||||
if game.energy >= energy:
|
||||
$PlaySound.play()
|
||||
var particles = preload("res://card_particles.tscn").instance()
|
||||
particles.position = position
|
||||
get_parent().add_child(particles)
|
||||
$"../../..".terminal.send_command(command)
|
||||
buuurn()
|
||||
game.energy -= energy
|
||||
|
|
16
card.tscn
16
card.tscn
|
@ -1,8 +1,11 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://card.gd" type="Script" id=1]
|
||||
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2]
|
||||
[ext_resource path="res://nodes/blob.svg" type="Texture" id=3]
|
||||
[ext_resource path="res://sounds/poof.wav" type="AudioStream" id=4]
|
||||
[ext_resource path="res://sounds/swish.wav" type="AudioStream" id=5]
|
||||
[ext_resource path="res://sounds/swoosh.wav" type="AudioStream" id=6]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
bg_color = Color( 0.45098, 0.584314, 0.843137, 1 )
|
||||
|
@ -117,5 +120,16 @@ valign = 1
|
|||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="PickupSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 5 )
|
||||
|
||||
[node name="PlaySound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 4 )
|
||||
volume_db = -6.848
|
||||
|
||||
[node name="ReturnSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 6 )
|
||||
volume_db = -6.848
|
||||
[connection signal="mouse_entered" from="Area2D" to="." method="_mouse_entered"]
|
||||
[connection signal="mouse_exited" from="Area2D" to="." method="_mouse_exited"]
|
||||
|
|
67
card_particles.tscn
Normal file
67
card_particles.tscn
Normal file
|
@ -0,0 +1,67 @@
|
|||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[sub_resource type="Curve" id=1]
|
||||
_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -2.75937, 0.0, 0, 0 ]
|
||||
|
||||
[sub_resource type="CurveTexture" id=2]
|
||||
curve = SubResource( 1 )
|
||||
|
||||
[sub_resource type="ParticlesMaterial" id=3]
|
||||
emission_shape = 2
|
||||
emission_box_extents = Vector3( 100, 150, 1 )
|
||||
flag_disable_z = true
|
||||
spread = 180.0
|
||||
gravity = Vector3( 0, 0, 0 )
|
||||
initial_velocity = 232.55
|
||||
initial_velocity_random = 0.52
|
||||
orbit_velocity = 0.0
|
||||
orbit_velocity_random = 0.0
|
||||
scale = 14.95
|
||||
scale_curve = SubResource( 2 )
|
||||
color = Color( 0.223529, 0.592157, 0.772549, 1 )
|
||||
|
||||
[sub_resource type="Animation" id=4]
|
||||
resource_name = "play"
|
||||
length = 2.0
|
||||
tracks/0/type = "method"
|
||||
tracks/0/path = NodePath(".")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 2 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"values": [ {
|
||||
"args": [ ],
|
||||
"method": "queue_free"
|
||||
} ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Particles:emitting")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ true ]
|
||||
}
|
||||
|
||||
[node name="CardParticles" type="Node2D"]
|
||||
|
||||
[node name="Particles" type="Particles2D" parent="."]
|
||||
position = Vector2( -0.539337, -145.087 )
|
||||
emitting = false
|
||||
amount = 32
|
||||
lifetime = 0.2
|
||||
one_shot = true
|
||||
explosiveness = 0.91
|
||||
local_coords = false
|
||||
process_material = SubResource( 3 )
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
autoplay = "play"
|
||||
anims/play = SubResource( 4 )
|
|
@ -27,7 +27,7 @@ func exec(command, args=[], crash_on_fail=true):
|
|||
elif debug:
|
||||
print("Output: %s" %output)
|
||||
|
||||
return output
|
||||
return {"output": output, "exit_code": exit_code}
|
||||
|
||||
# Return the contents of a file. If no fallback_string is provided, crash when
|
||||
# the file doesn't exist.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Parallel timelines
|
||||
|
||||
[description]
|
||||
|
||||
In this zoo, we found a few parallel timelines. Feel free to travel between the commits to see what's going on! The ends of the timelines have little tags attached.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Contradictions
|
||||
|
||||
[description]
|
||||
|
||||
Sometimes, merging timelines will not be as simple, because they contradict each other.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Merging timelines
|
||||
|
||||
[description]
|
||||
|
||||
Didn't get enouth sleep last night? Here's a trick so that you can sleep a bit longer: just do all your morning activities in parallel universes, and then at the end, merge them together!
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Helping each other
|
||||
|
||||
[description]
|
||||
|
||||
The events and timelines you see are always only what your own time machine knows about!
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = No parallels allowed
|
||||
|
||||
[description]
|
||||
|
||||
Okay - turns out that saving time in the morning by utilizing parallel universes is against the regulations of the International Time Travel Association. You'll have to do your tasks in sequence after all.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Reodering events
|
||||
|
||||
[description]
|
||||
|
||||
Oops, looks like one of our time agents messed up here. Can you put the events back into their correct order?
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
title = Welcome!
|
||||
|
||||
[description]
|
||||
|
||||
Welcome, time agent! Good to see you - we could really use your help with fixing some temporal paradoxes!
|
||||
|
|
10
main.gd
10
main.gd
|
@ -88,6 +88,7 @@ func load_level(level_id):
|
|||
|
||||
terminal.repository = repositories[repo_names[repo_names.size()-1]]
|
||||
terminal.clear()
|
||||
terminal.find_node("TextEditor").close()
|
||||
|
||||
# Unmute the audio after a while, so that player can hear pop sounds for
|
||||
# nodes they create.
|
||||
|
@ -108,10 +109,11 @@ func load_next_level():
|
|||
load_level(current_level)
|
||||
|
||||
func show_win_status():
|
||||
next_level_button.show()
|
||||
level_description.hide()
|
||||
level_congrats.show()
|
||||
$SuccessSound.play()
|
||||
if not level_congrats.visible:
|
||||
next_level_button.show()
|
||||
level_description.hide()
|
||||
level_congrats.show()
|
||||
$SuccessSound.play()
|
||||
|
||||
func repopulate_levels():
|
||||
levels.reload()
|
||||
|
|
|
@ -68,6 +68,7 @@ shape = SubResource( 1 )
|
|||
z_index = 1
|
||||
|
||||
[node name="ContentLabel" type="Label" parent="Content"]
|
||||
visible = false
|
||||
margin_left = -22.2898
|
||||
margin_top = 30.1969
|
||||
margin_right = -12.2898
|
||||
|
|
19
shell.gd
19
shell.gd
|
@ -1,8 +1,10 @@
|
|||
extends Node
|
||||
class_name Shell
|
||||
|
||||
var exit_code
|
||||
|
||||
var _cwd
|
||||
var os = OS.get_name()
|
||||
var _os = OS.get_name()
|
||||
|
||||
#signal output(text)
|
||||
|
||||
|
@ -50,25 +52,26 @@ func run(command, crash_on_fail=true):
|
|||
# "'test '"'"'fu'"'"' "bla" blubb"
|
||||
#
|
||||
# Quoting Magic is not needed for Windows!
|
||||
if os == "X11" or os == "OSX":
|
||||
if _os == "X11" or _os == "OSX":
|
||||
hacky_command = '"\''+hacky_command.replace("'", "'\"'\"'")+'\'"'
|
||||
|
||||
var output = helpers.exec(_shell_binary(), ["-c", hacky_command], crash_on_fail)
|
||||
var result = helpers.exec(_shell_binary(), ["-c", hacky_command], crash_on_fail)
|
||||
exit_code = result["exit_code"]
|
||||
|
||||
if debug:
|
||||
print(output)
|
||||
print(result["output"])
|
||||
|
||||
return output
|
||||
return result["output"]
|
||||
|
||||
func _shell_binary():
|
||||
|
||||
|
||||
if os == "X11" or os == "OSX":
|
||||
if _os == "X11" or _os == "OSX":
|
||||
return "bash"
|
||||
elif os == "Windows":
|
||||
elif _os == "Windows":
|
||||
return "dependencies\\windows\\git\\bin\\bash.exe"
|
||||
else:
|
||||
helpers.crash("Unsupported OS: %s" % os)
|
||||
helpers.crash("Unsupported OS: %s" % _os)
|
||||
|
||||
var _t
|
||||
func run_async(command):
|
||||
|
|
BIN
sounds/buzzer.wav
Normal file
BIN
sounds/buzzer.wav
Normal file
Binary file not shown.
21
sounds/buzzer.wav.import
Normal file
21
sounds/buzzer.wav.import
Normal file
|
@ -0,0 +1,21 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/buzzer.wav-2dd9ed8c0fc10c99ff5279a9bd90ea75.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/buzzer.wav"
|
||||
dest_files=[ "res://.import/buzzer.wav-2dd9ed8c0fc10c99ff5279a9bd90ea75.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/poof.wav
Normal file
BIN
sounds/poof.wav
Normal file
Binary file not shown.
21
sounds/poof.wav.import
Normal file
21
sounds/poof.wav.import
Normal file
|
@ -0,0 +1,21 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/poof.wav-db49a4251469e51fe6b35ddc6fb05dcc.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/poof.wav"
|
||||
dest_files=[ "res://.import/poof.wav-db49a4251469e51fe6b35ddc6fb05dcc.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/swish.wav
Normal file
BIN
sounds/swish.wav
Normal file
Binary file not shown.
21
sounds/swish.wav.import
Normal file
21
sounds/swish.wav.import
Normal file
|
@ -0,0 +1,21 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/swish.wav-e61d890ee6364cfac7a66a257b308699.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/swish.wav"
|
||||
dest_files=[ "res://.import/swish.wav-e61d890ee6364cfac7a66a257b308699.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/swoosh.wav
Normal file
BIN
sounds/swoosh.wav
Normal file
Binary file not shown.
21
sounds/swoosh.wav.import
Normal file
21
sounds/swoosh.wav.import
Normal file
|
@ -0,0 +1,21 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/swoosh.wav-d94298cb8d05e0380c25da11f976f097.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/swoosh.wav"
|
||||
dest_files=[ "res://.import/swoosh.wav-d94298cb8d05e0380c25da11f976f097.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/typewriter_ding.wav
Normal file
BIN
sounds/typewriter_ding.wav
Normal file
Binary file not shown.
21
sounds/typewriter_ding.wav.import
Normal file
21
sounds/typewriter_ding.wav.import
Normal file
|
@ -0,0 +1,21 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/typewriter_ding.wav-261baf709f530d1d0a04e5c5a6efc553.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/typewriter_ding.wav"
|
||||
dest_files=[ "res://.import/typewriter_ding.wav-261baf709f530d1d0a04e5c5a6efc553.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
|
@ -120,6 +120,11 @@ func send_command_async(command):
|
|||
func run_command_in_a_thread(command):
|
||||
var o = repository.shell.run(command, false)
|
||||
|
||||
if repository.shell.exit_code == 0:
|
||||
$OkSound.play()
|
||||
else:
|
||||
$ErrorSound.play()
|
||||
|
||||
input.text = ""
|
||||
input.editable = true
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=8 format=2]
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=1]
|
||||
[ext_resource path="res://terminal.gd" type="Script" id=2]
|
||||
|
@ -6,6 +6,8 @@
|
|||
[ext_resource path="res://fonts/monospace.tres" type="DynamicFont" id=4]
|
||||
[ext_resource path="res://text_editor.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://button.gd" type="Script" id=6]
|
||||
[ext_resource path="res://sounds/buzzer.wav" type="AudioStream" id=7]
|
||||
[ext_resource path="res://sounds/typewriter_ding.wav" type="AudioStream" id=8]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
content_margin_left = 5.0
|
||||
|
@ -154,6 +156,12 @@ custom_fonts/normal_font = ExtResource( 4 )
|
|||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ErrorSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 7 )
|
||||
|
||||
[node name="OkSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 8 )
|
||||
[connection signal="item_selected" from="Rows/TopHalf/Completions" to="." method="_completion_selected"]
|
||||
[connection signal="pressed" from="Rows/VBoxContainer/Button" to="Rows/VBoxContainer/Button" method="pressed"]
|
||||
[connection signal="pressed" from="Rows/VBoxContainer/Button2" to="Rows/VBoxContainer/Button2" method="pressed"]
|
||||
|
|
|
@ -46,7 +46,7 @@ func save():
|
|||
close()
|
||||
|
||||
func close():
|
||||
if _client_connection.is_connected_to_host():
|
||||
if _client_connection and _client_connection.is_connected_to_host():
|
||||
_client_connection.disconnect_from_host()
|
||||
text = ""
|
||||
hide()
|
||||
|
|
Loading…
Reference in a new issue