diff --git a/media/audio/music/arcade2.mp3 b/media/audio/music/arcade2.mp3 new file mode 100644 index 0000000..c03918a Binary files /dev/null and b/media/audio/music/arcade2.mp3 differ diff --git a/media/audio/music/arcade2.mp3.import b/media/audio/music/arcade2.mp3.import new file mode 100644 index 0000000..7793033 --- /dev/null +++ b/media/audio/music/arcade2.mp3.import @@ -0,0 +1,15 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +path="res://.import/arcade2.mp3-b7a708f610143e79ed68b5eeea715060.mp3str" + +[deps] + +source_file="res://media/audio/music/arcade2.mp3" +dest_files=[ "res://.import/arcade2.mp3-b7a708f610143e79ed68b5eeea715060.mp3str" ] + +[params] + +loop=true +loop_offset=0 diff --git a/src/actor/Mirror.gd b/src/actor/Mirror.gd index 24c9638..72f7d12 100644 --- a/src/actor/Mirror.gd +++ b/src/actor/Mirror.gd @@ -22,7 +22,7 @@ var dir_x := 1.0 export var hide_distance := 50.0 func _ready(): - MenuMakeover.connect("closed", self, "closed") + MenuMakeover.connect("opened", self, "closed") arrow.dir = posmod(dir, 4) rig.global_rotation = 0 @@ -96,7 +96,9 @@ func _on_Arrow_open(): arrow.is_locked = true rig_ease.show = false -func closed(): +func closed(arg := false): + if arg: return + arrow.is_locked = false rig_ease.show = true create_rig() diff --git a/src/actor/Player.gd b/src/actor/Player.gd index 9302b8c..20e1649 100644 --- a/src/actor/Player.gd +++ b/src/actor/Player.gd @@ -155,7 +155,6 @@ func _enter_tree(): Shared.player = self get_tree().connect("physics_frame", self, "physics_frame") MenuPause.connect("opened", self, "pause") - MenuPause.connect("closed", self, "unpause") Shared.connect("scene_changed", self, "scene") Wipe.connect("start", self, "wipe_start") Cutscene.connect("playing", self, "cutscene_playing") @@ -882,15 +881,12 @@ func enter_door(arg): if is_instance_valid(goal): goal.target = door_exit -func pause(): +func pause(arg := false): if Shared.player == self: clear_input() - -func unpause(): - if Shared.player == self: - clear_input() - is_unpause = true - unpause_tick = 0 + if !arg: + is_unpause = true + unpause_tick = 0 func clear_input(): btn_jump = false diff --git a/src/arcade/Arcade.gd b/src/arcade/Arcade.gd index 0ac3cbc..9e8f7d8 100644 --- a/src/arcade/Arcade.gd +++ b/src/arcade/Arcade.gd @@ -1,15 +1,18 @@ extends Node2D onready var player = Shared.player - - -onready var btn_joy := $CanvasLayer/Cabinet/Controls/Joystick -onready var btn_a := $CanvasLayer/Cabinet/Controls/Button/Control/Node2D -onready var btn_b := $CanvasLayer/Cabinet/Controls/Button2/Control/Node2D +onready var node_joy := $CanvasLayer/Cabinet/Controls/Joystick +onready var node_a := $CanvasLayer/Cabinet/Controls/Button/Control/Node2D +onready var node_b := $CanvasLayer/Cabinet/Controls/Button2/Control/Node2D var joy := Vector2.ZERO +var btn_a := false +var btn_b := false +var is_unpause := false func _ready(): + MenuPause.connect("opened", self, "pause") + player.is_input = false Cam.target_node = null Cam.target_pos = Vector2(1280, 720) * 0.5 @@ -18,16 +21,21 @@ func _exit_tree(): player.is_input = true Cam.target_node = player - func _physics_process(delta): + var m = MenuPause.is_open - joy.x = round(Input.get_axis("left", "right")) - #joy.y = round(Input.get_axis("up", "down")) - var _a = Input.is_action_pressed("jump") - var _b = Input.is_action_pressed("grab") + joy.x = 0.0 if m else round(Input.get_axis("left", "right")) + var a = Input.is_action_pressed("jump") + var b = Input.is_action_pressed("grab") - btn_joy.rotation = lerp(btn_joy.rotation, joy.x * deg2rad(15), delta * 30.0) - btn_a.position.y = lerp(btn_a.position.y, float(_a) * 20, delta * 30.0) - btn_b.position.y = lerp(btn_b.position.y, float(_b) * 20, delta * 30.0) + if is_unpause: is_unpause = a or b + if !is_unpause: + btn_a = a and !m + btn_b = b and !m - pass + node_joy.rotation = lerp(node_joy.rotation, joy.x * deg2rad(15), delta * 30.0) + node_a.position.y = lerp(node_a.position.y, float(btn_a) * 20, delta * 30.0) + node_b.position.y = lerp(node_b.position.y, float(btn_b) * 20, delta * 30.0) + +func pause(arg := false): + is_unpause = !arg diff --git a/src/arcade/Player.gd b/src/arcade/Player.gd index 6e401a3..5b0df52 100644 --- a/src/arcade/Player.gd +++ b/src/arcade/Player.gd @@ -37,8 +37,12 @@ var is_input = true var is_dead := false var arcade var dead_ease := EaseMover.new() +var unpause_tick := 0.0 +var is_unpause := false func _ready(): + MenuPause.connect("opened", self, "pause") + for i in get_tree().get_nodes_in_group("arcade"): arcade = i @@ -55,12 +59,15 @@ func _ready(): func _physics_process(delta): # input joy_last = joy - if is_input: + if is_input and !MenuPause.is_open: joy.x = round(Input.get_axis("left", "right")) joy.y = round(Input.get_axis("up", "down")) - btnp_jump = Input.is_action_just_pressed("jump") - btn_jump = Input.is_action_pressed("jump") + var j = Input.is_action_pressed("jump") + if !j: is_unpause = false + if !is_unpause: + btnp_jump = Input.is_action_just_pressed("jump") + btn_jump = j # is floor & air clock is_floor = test_move(transform, Vector2(0, 3)) @@ -175,4 +182,9 @@ func die(): arcade.lose() #Audio.play(audio_die, 0.8, 1.2) Audio.play("arcade_owie", 0.7, 1.1) - + +func pause(arg := false): + joy = Vector2.ZERO + btn_jump = false + btnp_jump = false + is_unpause = !arg diff --git a/src/autoload/Audio.gd b/src/autoload/Audio.gd index 7e5f845..f1d0c1a 100644 --- a/src/autoload/Audio.gd +++ b/src/autoload/Audio.gd @@ -12,6 +12,7 @@ var music_que = [] export var wait_range := Vector2(10, 90) var wait_clock := 0.0 var wait_time := 10.0 +var music_ease := EaseMover.new(1.0) func _ready(): set_refresh() @@ -34,9 +35,26 @@ func _physics_process(delta): wait_clock -= delta if wait_clock <= 0: music_play() + + var s = music_ease.count(delta, Shared.is_arcade) + if !music_ease.is_last: + var m = dict["music_music"] + var a = dict["music_arcade"] + m.volume_db = lerp(0.0, -30.0, s) + a.volume_db = lerp(-30.0, 0.0, s) + + if music_ease.clock == 0.0: + if !m.playing: m.play(m.get_playback_position()) + a.stop() + if music_ease.is_complete: + a.play() + m.stop() + func music_finished(): - wait_clock = rand_range(wait_range.x, wait_range.y) + if !Shared.is_arcade: + wait_clock = rand_range(wait_range.x, wait_range.y) + print("music_finished, wait_clock: ", wait_clock) func music_play(): if music_que.empty(): diff --git a/src/autoload/Audio.tscn b/src/autoload/Audio.tscn index 204acaa..b82b55a 100644 --- a/src/autoload/Audio.tscn +++ b/src/autoload/Audio.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=33 format=2] +[gd_scene load_steps=34 format=2] [ext_resource path="res://src/autoload/Audio.gd" type="Script" id=1] [ext_resource path="res://media/audio/sfx/coin1.wav" type="AudioStream" id=2] @@ -32,6 +32,7 @@ [ext_resource path="res://media/audio/sfx/fallout2.wav" type="AudioStream" id=30] [ext_resource path="res://media/audio/sfx/jump1.wav" type="AudioStream" id=31] [ext_resource path="res://media/audio/sfx/zap0.wav" type="AudioStream" id=32] +[ext_resource path="res://media/audio/music/arcade2.mp3" type="AudioStream" id=33] [node name="Audio" type="Node"] pause_mode = 2 @@ -41,6 +42,12 @@ ost = [ ExtResource( 21 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 [node name="Music" type="Node" parent="."] [node name="Music" type="AudioStreamPlayer" parent="Music"] +stream = ExtResource( 21 ) +bus = "Music" + +[node name="Arcade" type="AudioStreamPlayer" parent="Music"] +stream = ExtResource( 33 ) +volume_db = 4.0 bus = "Music" [node name="Menu" type="Node" parent="."] diff --git a/src/menu/MenuBase.gd b/src/menu/MenuBase.gd index 0d9b3bf..f192fbc 100644 --- a/src/menu/MenuBase.gd +++ b/src/menu/MenuBase.gd @@ -29,7 +29,6 @@ export var is_open := false setget set_open export var is_accept_close := false export var is_back_close := false signal opened -signal closed var is_sub_menu := false var sub_ease := EaseMover.new() var sub_node @@ -168,10 +167,9 @@ func set_open(arg := is_open): UI.menu_keys(text_accept, text_cancel) open() row() - emit_signal("opened") else: close() - emit_signal("closed") + emit_signal("opened", is_open) if is_ui_keys: UI.keys.show = is_open @@ -220,16 +218,18 @@ func sub_menu(arg): is_open = sub_stay_open sub_node.is_open = true - if !sub_node.is_connected("closed", self, "sub_close"): - sub_node.connect("closed", self, "sub_close") + if !sub_node.is_connected("opened", self, "sub_close"): + sub_node.connect("opened", self, "sub_close") -func sub_close(): +func sub_close(arg := false): + if arg: return + is_sub_menu = false is_open = true UI.menu_keys(text_accept, text_cancel) - if sub_node and sub_node.is_connected("closed", self, "sub_close"): - sub_node.disconnect("closed", self, "sub_close") + if sub_node and sub_node.is_connected("opened", self, "sub_close"): + sub_node.disconnect("opened", self, "sub_close") sub_node = null reset_joy()