Initial commit
This commit is contained in:
commit
7becdd23b6
989 changed files with 28526 additions and 0 deletions
78
scenes/screens/fishing_minigame.gd
Normal file
78
scenes/screens/fishing_minigame.gd
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
extends Node2D
|
||||
|
||||
var all_targets = []
|
||||
var targets_in_net = []
|
||||
var grabbed_target = null
|
||||
var boat_is_moving = false
|
||||
var net_is_dropped = false
|
||||
|
||||
var fishing_target_packed_scene: PackedScene = preload("res://scenes/logic/fishing_target.tscn")
|
||||
|
||||
signal fished(name: String)
|
||||
signal fished_all_targets
|
||||
|
||||
# Debug autostart
|
||||
#func _ready():
|
||||
# start_fishing_minigame(
|
||||
# [{"name": "test1", "sprite": load("res://images/sprites/fishing_targets/test.png")}],
|
||||
# 0.0,
|
||||
# false,
|
||||
# )
|
||||
|
||||
func _process(delta):
|
||||
if boat_is_moving and net_is_dropped:
|
||||
$ReleasedNet.position += Vector2.UP * 70.0 * delta
|
||||
|
||||
func play_sfx(sfx):
|
||||
if $"../VNInterpreter".can_play_sfx():
|
||||
#SoundManager.play("fishing_sfx", sfx)
|
||||
SoundManager.play_varied("fishing_sfx", sfx, 1.0, FileGlobals.get_global_data("volume", 0.0))
|
||||
|
||||
func start_fishing_minigame(targets, difficulty, is_moving = false):
|
||||
all_targets = targets
|
||||
boat_is_moving = is_moving
|
||||
if boat_is_moving:
|
||||
$Background.play("fishing_moving")
|
||||
else:
|
||||
$Background.play("fishing_stopped")
|
||||
$Net.visible = true
|
||||
$Net/Button.disabled = false
|
||||
for i in all_targets.size():
|
||||
var target = fishing_target_packed_scene.instantiate()
|
||||
target.init_target(i, all_targets[i]["sprite"], difficulty)
|
||||
$FishingTargets.add_child(target)
|
||||
|
||||
func _on_net_dropped(dropped_position):
|
||||
$ReleasedNet.play("default")
|
||||
net_is_dropped = true
|
||||
$ReleasedNet.position = dropped_position + 140 * Vector2.DOWN
|
||||
$ReleasedNet.visible = true
|
||||
$AnimationPlayer.play("drop_net")
|
||||
|
||||
func _on_animation_player_animation_finished(anim_name):
|
||||
if anim_name == "drop_net":
|
||||
play_sfx("net_splash")
|
||||
$ReleasedNet.play("grab_underwater")
|
||||
$ReleasedNet/DisappearTimer.start()
|
||||
if targets_in_net.size() >= 1:
|
||||
grabbed_target = targets_in_net.pop_back()
|
||||
# Stop target's movement and set position to inside the net
|
||||
grabbed_target.grab_with($ReleasedNet)
|
||||
else:
|
||||
grabbed_target = null
|
||||
|
||||
func _on_released_net_target_entered(target):
|
||||
targets_in_net.append(target)
|
||||
|
||||
func _on_released_net_target_exited(target):
|
||||
targets_in_net.erase(target)
|
||||
|
||||
func _on_released_net_disappear_timer_timeout():
|
||||
if grabbed_target:
|
||||
fished.emit(all_targets[grabbed_target.index]["name"])
|
||||
if $FishingTargets.get_child_count() <= 1:
|
||||
fished_all_targets.emit()
|
||||
grabbed_target.queue_free()
|
||||
grabbed_target = null
|
||||
net_is_dropped = false
|
||||
$ReleasedNet.visible = false
|
||||
Loading…
Add table
Add a link
Reference in a new issue