Compare commits

...

3 commits

Author SHA1 Message Date
f7d5e40d8c move player instantiation function to base room 2025-11-25 17:56:22 -03:00
2f18454a65 add game started signal 2025-11-25 17:55:50 -03:00
e17dabe40f add title screen 2025-11-25 17:44:13 -03:00
5 changed files with 66 additions and 38 deletions

View file

@ -1,7 +1,10 @@
@warning_ignore_start("unused_signal")
extends Node
@warning_ignore_start("unused_signal")
## Emitted when the game starts.
signal game_started()
## Emitted when the room has transitioned.
signal room_changed(previous_room: StringName, next_room: StringName, waypoint: Waypoint)

View file

@ -4,6 +4,7 @@ extends Node
func start_game() -> void:
print("starting game")
get_tree().change_scene_to_file("res://scenes/worlds/yukotsukis_room/yukotsukis_room.tscn")
EventBus.game_started.emit()
func goto_room(previous_room: Room, waypoint: RemoteWaypoint, config: RoomConfig = null) -> void:

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://5wfpwjykqson"]
[gd_scene load_steps=8 format=3 uid="uid://5wfpwjykqson"]
[ext_resource type="FontFile" uid="uid://bce5el6o5igwn" path="res://assets/fonts/Axolotl.ttf" id="1_ob46e"]
[ext_resource type="Script" uid="uid://xuibr7dn2qtw" path="res://scenes/main_menu/main_menu.gd" id="1_uqeha"]
@ -13,6 +13,10 @@ shader = ExtResource("2_uqeha")
shader_parameter/palette = ExtResource("3_wem23")
shader_parameter/palette_size = 120
[sub_resource type="LabelSettings" id="LabelSettings_uqeha"]
font = ExtResource("1_ob46e")
font_size = 32
[node name="MainMenu" type="Node2D"]
script = ExtResource("1_uqeha")
@ -22,10 +26,10 @@ anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 24.0
offset_top = 208.0
offset_right = 99.0
offset_bottom = 224.0
offset_left = 125.0
offset_top = 155.0
offset_right = 200.0
offset_bottom = 171.0
grow_horizontal = 2
grow_vertical = 0
size_flags_horizontal = 4
@ -42,3 +46,19 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_lock_ = true
[node name="Label2" type="Label" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 45.0
offset_top = 93.0
offset_right = 275.0
offset_bottom = 119.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
text = "girl will never sing again"
label_settings = SubResource("LabelSettings_uqeha")

View file

@ -1,6 +1,9 @@
class_name Room extends Node2D
signal player_spawned(player: Player)
@export var config: RoomConfig
@onready var camera: RoomCamera = $RoomCamera
@ -14,7 +17,39 @@ var player_scene: PackedScene = preload("uid://cqm5besqgsb7x")
var initial_spawn: Vector2i = Vector2i.ZERO
var player: Player
var wake_timer: Timer
func _ready() -> void:
assert(config != null, "room config is null")
func spawn_player(waking: bool) -> Player:
var p: Player = player_scene.instantiate()
add_child(p)
if waking:
wake_timer = Timer.new()
p.add_child(wake_timer)
wake_timer.one_shot = true
wake_timer.start(config.transition_in_duration)
wake_timer.timeout.connect(_on_wake_timer)
p.state_machine._transition_to_next_state(PlayerState.PAUSED)
if initial_spawn != Vector2i.ZERO:
p.global_position = initial_spawn
else:
assert(
config.initial_spawn != Vector2i.ZERO,
"invalid player initial spawn provided"
)
p.global_position = config.initial_spawn
player_spawned.emit(p)
return p
func _on_wake_timer() -> void:
player.state_machine._transition_to_next_state(PlayerState.WAKING)
wake_timer.queue_free()

View file

@ -3,12 +3,11 @@ extends RoomState
var trans_tween: Tween
var player_light_tween: Tween
var wake_timer: Timer
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
print("entering room")
room.player = _instantiate_player(true)
room.player = room.spawn_player(true)
assert(room.player != null, "player is null")
room.camera.global_position = room.config.camera_position
@ -72,33 +71,3 @@ func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
await trans_tween.finished
finished.emit(PLAYING)
func _instantiate_player(waking: bool) -> Player:
var p: Player = room.player_scene.instantiate()
room.add_child(p)
if waking:
wake_timer = Timer.new()
p.add_child(wake_timer)
wake_timer.one_shot = true
wake_timer.start(room.config.transition_in_duration)
wake_timer.timeout.connect(_on_wake_timer)
p.state_machine._transition_to_next_state(PlayerState.PAUSED)
if room.initial_spawn != Vector2i.ZERO:
p.global_position = room.initial_spawn
else:
assert(
room.config.initial_spawn != Vector2i.ZERO,
"invalid player initial spawn provided"
)
p.global_position = room.config.initial_spawn
return p
func _on_wake_timer() -> void:
room.player.state_machine._transition_to_next_state(PlayerState.WAKING)
wake_timer.queue_free()