Compare commits

..

4 commits

Author SHA1 Message Date
2a387a7dcb add tileset helper addon 2025-11-24 07:20:00 -03:00
34118d5151 add loopable room bool to room config 2025-11-24 07:17:47 -03:00
fc81f396e0 let camera follow player according to room config 2025-11-24 07:17:33 -03:00
29909a5371 add room exit state 2025-11-24 06:29:15 -03:00
8 changed files with 27 additions and 6 deletions

View file

@ -41,7 +41,7 @@ version_control/autoload_on_startup=true
[editor_plugins]
enabled=PackedStringArray("res://addons/AsepriteWizard/plugin.cfg", "res://addons/ridiculous_coding/plugin.cfg")
enabled=PackedStringArray("res://addons/AsepriteWizard/plugin.cfg", "res://addons/Tile_Set_Helper/plugin.cfg", "res://addons/ridiculous_coding/plugin.cfg")
[input]

View file

@ -1,14 +1,18 @@
class_name Room extends Node2D
@export var room_config: RoomConfig
@export var config: RoomConfig
@onready var camera: RoomCamera = $RoomCamera
@onready var director: StateMachine = $RoomDirector
# TODO: better alternatice to preloading as i add functionality?
# TODO: better alternative to preloading as i add functionality?
# https://theduriel.github.io/Godot/Do-not-use---Preload
var player_scene: PackedScene = preload("uid://cqm5besqgsb7x")
var initial_spawn: Vector2i = Vector2i(16,16)
var player: Player
var initial_spawn: Vector2i = Vector2i(16,16)
func _ready() -> void:
assert(config != null, "room config is null")

View file

@ -1,10 +1,11 @@
[gd_scene load_steps=7 format=3 uid="uid://bxhyxox662buj"]
[gd_scene load_steps=8 format=3 uid="uid://bxhyxox662buj"]
[ext_resource type="Script" uid="uid://pcl0om2k32g6" path="res://scenes/room/room.gd" id="1_8xru0"]
[ext_resource type="Script" uid="uid://diou146pyb0br" path="res://scenes/room/room_camera.gd" id="3_y1kpu"]
[ext_resource type="Script" uid="uid://b7715auuhy7vu" path="res://scenes/room/states/room_entering.gd" id="4_1w8vm"]
[ext_resource type="Script" uid="uid://diths5s8vd7lr" path="res://classes/state_machine/state_machine.gd" id="4_vaubn"]
[ext_resource type="Script" uid="uid://d2xitfobwbk20" path="res://scenes/room/states/room_playing.gd" id="5_w7vtx"]
[ext_resource type="Script" uid="uid://drnrd5xlt8imm" path="res://scenes/room/states/room_exiting.gd" id="6_7jj40"]
[ext_resource type="Script" uid="uid://ceevyto3vbq7c" path="res://scenes/room/states/room_paused.gd" id="6_gui0a"]
[node name="Room" type="Node2D"]
@ -29,5 +30,9 @@ metadata/_custom_type_script = "uid://hjm43hb4os07"
script = ExtResource("6_gui0a")
metadata/_custom_type_script = "uid://hjm43hb4os07"
[node name="Exiting" type="Node" parent="RoomDirector"]
script = ExtResource("6_7jj40")
metadata/_custom_type_script = "uid://hjm43hb4os07"
[node name="RoomCamera" type="Camera2D" parent="."]
script = ExtResource("3_y1kpu")

View file

@ -3,5 +3,6 @@
#@export var size: Vector2i = Vector2i.ZERO
@export var follow_player: bool = true
@export var loopable: bool = false
@export var camera_position: Vector2i = Vector2i.ZERO

View file

@ -6,6 +6,7 @@ func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
room.player = room.player_scene.instantiate()
room.add_child(room.player)
room.player.global_position = room.initial_spawn
room.camera.global_position = room.config.camera_position
finished.emit(PLAYING)
return

View file

@ -0,0 +1,5 @@
extends RoomState
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
room.queue_free()

View file

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

View file

@ -1,9 +1,13 @@
extends RoomState
var follow: bool
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
print("entering room gameplay")
get_tree().paused = false
follow = room.config.follow_player
func _handle_input(event: InputEvent) -> void:
@ -12,4 +16,4 @@ func _handle_input(event: InputEvent) -> void:
func _state_physics_update(delta: float) -> void:
room.camera.follow_player(delta)
if follow: room.camera.follow_player(delta)