Compare commits

...

11 commits

12 changed files with 50 additions and 3 deletions

View file

@ -14,6 +14,11 @@ config/name="girl will never sing again"
config/features=PackedStringArray("4.5", "GL Compatibility") config/features=PackedStringArray("4.5", "GL Compatibility")
config/icon="uid://4aq8ekc6sruc" config/icon="uid://4aq8ekc6sruc"
[autoload]
GameDirector="*res://scenes/autoload/game_director.gd"
EventBus="*res://scenes/autoload/event_bus.gd"
[debug] [debug]
gdscript/warnings/untyped_declaration=2 gdscript/warnings/untyped_declaration=2

8
resources/waypoint.gd Normal file
View file

@ -0,0 +1,8 @@
# TODO: better name
class_name Waypoint
extends Resource
#@export var from_scene: PackedScene
@export var to_scene: PackedScene
@export var spawn_coordinates: Vector2i

View file

@ -0,0 +1 @@
uid://cbj1m2pm266x1

View file

@ -0,0 +1,5 @@
extends Node
@warning_ignore("unused_signal")
signal room_changed(previous_room: StringName, next_room: StringName, waypoint: Waypoint)

View file

@ -0,0 +1 @@
uid://bmfdu1fyum1nf

View file

@ -0,0 +1,23 @@
extends Node
func goto_room(previous_room: Room, waypoint: Waypoint) -> void:
print("changing rooms")
# for signal
var prev_name: StringName
var next_name: StringName
prev_name = previous_room.name
# wait until previous room is freed
await previous_room.tree_exited
# instantiate next room and set room variables
var next_room: Room = waypoint.to_scene.instantiate()
next_name = next_room.name
next_room.initial_spawn = waypoint.spawn_coordinates
get_tree().root.add_child(next_room)
# notify event bus
EventBus.room_changed.emit(prev_name, next_name, waypoint)

View file

@ -0,0 +1 @@
uid://b4ydqderhu3mr

View file

@ -9,7 +9,7 @@ func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
func _state_physics_update(_delta: float) -> void: func _state_physics_update(_delta: float) -> void:
#region player physics #region player physics
var direction: Vector2 = player.get_movement_vector() var direction: Vector2 = player.get_movement_vector()
direction = direction.normalized() #direction = direction.normalized() # unneeded with 4 way movement
player.velocity = direction * player.max_speed * player.speed_mult player.velocity = direction * player.max_speed * player.speed_mult
player.move_and_slide() player.move_and_slide()

View file

@ -6,7 +6,9 @@ class_name Room extends Node2D
@onready var camera: RoomCamera = $RoomCamera @onready var camera: RoomCamera = $RoomCamera
@onready var director: StateMachine = $RoomDirector @onready var director: StateMachine = $RoomDirector
var player_scene: PackedScene = preload("res://scenes/player/player.tscn") # TODO: better alternatice to preloading as i add functionality?
# https://theduriel.github.io/Godot/Do-not-use---Preload
var player_scene: PackedScene = preload("uid://cqm5besqgsb7x")
var player: Player var player: Player
var initial_spawn: Vector2i = Vector2i(16,16) var initial_spawn: Vector2i = Vector2i(16,16)

View file

@ -8,6 +8,7 @@
[ext_resource type="Script" uid="uid://ceevyto3vbq7c" path="res://scenes/room/states/room_paused.gd" id="6_gui0a"] [ext_resource type="Script" uid="uid://ceevyto3vbq7c" path="res://scenes/room/states/room_paused.gd" id="6_gui0a"]
[node name="Room" type="Node2D"] [node name="Room" type="Node2D"]
y_sort_enabled = true
script = ExtResource("1_8xru0") script = ExtResource("1_8xru0")
[node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")] [node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")]

View file

@ -1,7 +1,7 @@
@tool class_name RoomConfig extends Resource @tool class_name RoomConfig extends Resource
@export var size: Vector2i = Vector2i.ZERO #@export var size: Vector2i = Vector2i.ZERO
@export var follow_player: bool = true @export var follow_player: bool = true
@export var camera_position: Vector2i = Vector2i.ZERO @export var camera_position: Vector2i = Vector2i.ZERO