Compare commits
11 commits
cbc83e8d20
...
1ae389ff42
| Author | SHA1 | Date | |
|---|---|---|---|
| 1ae389ff42 | |||
| c8223643b8 | |||
| 0ac147c3c7 | |||
| d4bf3241c5 | |||
| f6cf980ac5 | |||
| e579887b33 | |||
| 1250b7a80a | |||
| 5c6dc263c4 | |||
| 68f5a98519 | |||
| a8c062e974 | |||
| a73293bcfb |
12 changed files with 50 additions and 3 deletions
|
|
@ -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
8
resources/waypoint.gd
Normal 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
|
||||||
1
resources/waypoint.gd.uid
Normal file
1
resources/waypoint.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cbj1m2pm266x1
|
||||||
5
scenes/autoload/event_bus.gd
Normal file
5
scenes/autoload/event_bus.gd
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
|
signal room_changed(previous_room: StringName, next_room: StringName, waypoint: Waypoint)
|
||||||
1
scenes/autoload/event_bus.gd.uid
Normal file
1
scenes/autoload/event_bus.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bmfdu1fyum1nf
|
||||||
23
scenes/autoload/game_director.gd
Normal file
23
scenes/autoload/game_director.gd
Normal 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)
|
||||||
1
scenes/autoload/game_director.gd.uid
Normal file
1
scenes/autoload/game_director.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b4ydqderhu3mr
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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")]
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
Loading…
Add table
Reference in a new issue