From b3db7f1ba6272a1d30cfae3e227b92d0a7e28bc3 Mon Sep 17 00:00:00 2001 From: yuki Date: Mon, 24 Nov 2025 17:36:27 -0300 Subject: [PATCH] move initial spawn to room config --- scenes/player/player.tscn | 2 +- scenes/room/room.gd | 2 +- scenes/room/room_config.gd | 4 ++++ scenes/room/states/room_entering.gd | 9 ++++++++- .../floorboards/floorboards_godot4.tres | 3 +++ .../yukotsukis_room/yukotsukis_room.tscn | 20 ++++++++----------- .../yukotsukis_room_config.tres | 10 ++++++++++ 7 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 scenes/worlds/yukotsukis_room/yukotsukis_room_config.tres diff --git a/scenes/player/player.tscn b/scenes/player/player.tscn index a94e528..e2d13f7 100644 --- a/scenes/player/player.tscn +++ b/scenes/player/player.tscn @@ -15,7 +15,7 @@ z_index = 1 collision_mask = 2 motion_mode = 1 script = ExtResource("1_dovo2") -max_speed = 95.0 +max_speed = 85.0 [node name="PlayerStateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")] script = ExtResource("2_lvxji") diff --git a/scenes/room/room.gd b/scenes/room/room.gd index 7fe02ce..5f1fbc6 100644 --- a/scenes/room/room.gd +++ b/scenes/room/room.gd @@ -9,7 +9,7 @@ class_name Room extends Node2D # 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 initial_spawn: Vector2i = Vector2i.ZERO var player: Player diff --git a/scenes/room/room_config.gd b/scenes/room/room_config.gd index 06abd79..04a4c4f 100644 --- a/scenes/room/room_config.gd +++ b/scenes/room/room_config.gd @@ -1,5 +1,9 @@ class_name RoomConfig extends Resource +@export_group('Player') +## The initial player spawn point. +## Only used if one wasn't provided to the room beforehand. +@export var initial_spawn: Vector2i = Vector2i.ZERO @export_group('Camera') ## Whether the camera will (initially) follow the player ot not. diff --git a/scenes/room/states/room_entering.gd b/scenes/room/states/room_entering.gd index 01b5a82..e7cec35 100644 --- a/scenes/room/states/room_entering.gd +++ b/scenes/room/states/room_entering.gd @@ -14,6 +14,13 @@ func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void: func _instantiate_player() -> Player: var p: Player = room.player_scene.instantiate() room.add_child(p) - p.global_position = room.initial_spawn + 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 diff --git a/scenes/worlds/yukotsukis_room/assets/floorboards/floorboards_godot4.tres b/scenes/worlds/yukotsukis_room/assets/floorboards/floorboards_godot4.tres index 470c2d3..d1ad5d7 100644 --- a/scenes/worlds/yukotsukis_room/assets/floorboards/floorboards_godot4.tres +++ b/scenes/worlds/yukotsukis_room/assets/floorboards/floorboards_godot4.tres @@ -941,6 +941,7 @@ texture_region_size = Vector2i(18, 18) 9:9/0/terrains_peering_bit/top_right_corner = 0 10:9/0 = 0 10:9/0/z_index = 1 +10:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) 11:9/0 = 0 11:9/0/z_index = 1 11:9/0/terrain_set = 0 @@ -2724,6 +2725,8 @@ texture_region_size = Vector2i(18, 18) 11:3/0/terrains_peering_bit/top_side = 3 [resource] +physics_layer_0/collision_layer = 2 +physics_layer_0/collision_mask = 0 terrain_set_0/mode = 0 terrain_set_0/terrain_0/name = "Auto1" terrain_set_0/terrain_0/color = Color(0.79, 0.57, 0.73, 1) diff --git a/scenes/worlds/yukotsukis_room/yukotsukis_room.tscn b/scenes/worlds/yukotsukis_room/yukotsukis_room.tscn index 74f232a..4deb5ac 100644 --- a/scenes/worlds/yukotsukis_room/yukotsukis_room.tscn +++ b/scenes/worlds/yukotsukis_room/yukotsukis_room.tscn @@ -1,28 +1,24 @@ -[gd_scene load_steps=6 format=4 uid="uid://04d4byo43t4b"] +[gd_scene load_steps=5 format=4 uid="uid://04d4byo43t4b"] [ext_resource type="PackedScene" uid="uid://bxhyxox662buj" path="res://scenes/room/room.tscn" id="1_1k8b4"] -[ext_resource type="Script" uid="uid://bamoq5wi0lkdy" path="res://scenes/room/room_config.gd" id="2_2qa51"] +[ext_resource type="Resource" uid="uid://h54yiuv2bup1" path="res://scenes/worlds/yukotsukis_room/yukotsukis_room_config.tres" id="2_vqekq"] [ext_resource type="TileSet" uid="uid://chb3vsmojvo8q" path="res://scenes/worlds/yukotsukis_room/assets/curtains/curtains_godot4.tres" id="3_od2gb"] -[ext_resource type="TileSet" uid="uid://bcpinmakhx3ix" path="res://scenes/worlds/yukotsukis_room/assets/carpets/carpets_godot4.tres" id="4_vqekq"] - -[sub_resource type="Resource" id="Resource_r3h47"] -script = ExtResource("2_2qa51") -follow_player = false -camera_position = Vector2i(160, 120) -metadata/_custom_type_script = "uid://bamoq5wi0lkdy" +[ext_resource type="TileSet" uid="uid://diqyujsetlsp6" path="res://scenes/worlds/yukotsukis_room/assets/floorboards/floorboards_godot4.tres" id="4_od2gb"] [node name="Yukotsuki\'s Room" instance=ExtResource("1_1k8b4")] -config = SubResource("Resource_r3h47") +config = ExtResource("2_vqekq") [node name="FloorLayer" type="TileMapLayer" parent="." index="2"] tile_map_data = PackedByteArray("AAAPAA4AAQALAAMAAAAPAA0AAQALAAIAAAAPAAwAAQALAA4AAAAPAAsAAQALAAYAAAAPAAoAAQALAAQAAAAOAA4AAQAJAA8AAAAOAA0AAQAJAA4AAAAOAAwAAQAJAAIAAAAOAAsAAQAJAAoAAAAOAAoAAQAKAAQAAAANAA4AAQAJAA8AAAANAA0AAQAJAA4AAAANAAwAAQAJAAYAAAANAAsAAQAJAAYAAAANAAoAAQAKAAwAAAAMAA4AAQAJAAMAAAAMAA0AAQAJAAoAAAAMAAwAAQAJAAYAAAAMAAsAAQAJAA4AAAAMAAoAAQAKAAQAAAALAA4AAQAJAAsAAAALAA0AAQAJAAYAAAALAAwAAQAJAAoAAAALAAsAAQAJAAoAAAALAAoAAQAKAAAAAAAKAA4AAQAJAA8AAAAKAA0AAQAJAAYAAAAKAAwAAQAJAAIAAAAKAAsAAQAJAAIAAAAKAAoAAQAKAAAAAAAJAA4AAQAJAAMAAAAJAA0AAQAJAAYAAAAJAAwAAQAJAAIAAAAJAAsAAQAJAAoAAAAJAAoAAQAKAAwAAAAIAA4AAQAJAAcAAAAIAA0AAQAJAA4AAAAIAAwAAQAJAAIAAAAIAAsAAQAJAAoAAAAIAAoAAQAKAAAAAAAHAA4AAQAJAA8AAAAHAA0AAQAJAAoAAAAHAAwAAQAJAAYAAAAHAAsAAQAJAAoAAAAHAAoAAQAKAAgAAAAGAA4AAQAJAAsAAAAGAA0AAQAJAAYAAAAGAAwAAQAJAAYAAAAGAAsAAQAJAAoAAAAGAAoAAQAKAAgAAAAFAA4AAQAJAA8AAAAFAA0AAQAJAAoAAAAFAAwAAQAJAAoAAAAFAAsAAQAJAAYAAAAFAAoAAQAKAAQAAAAEAA4AAQAIAAcAAAAEAA0AAQAIAAUAAAAEAAwAAQAIAAEAAAAEAAsAAQAIAAUAAAAEAAoAAQAIAAQAAAA=") tile_set = ExtResource("3_od2gb") [node name="CarpetLayer" type="TileMapLayer" parent="." index="3"] -tile_map_data = PackedByteArray("AAAFAAsAAAAIAAAAAAAFAAwAAAAIAAEAAAAFAA0AAAAIAAMAAAAGAAwAAAALAAIAAAAGAAsAAAALAAAAAAAGAA0AAAALAAMAAAA=") -tile_set = ExtResource("4_vqekq") +tile_map_data = PackedByteArray("AAAIAAsAAwAIAAAAAAAJAAsAAwAFAAEAAAAJAAoAAwAIAAAAAAAKAAoAAwAKAAAAAAALAAoAAwAKAAAAAAAMAAoAAwAKAAAAAAANAAoAAwALAAAAAAANAAsAAwAGAAEAAAAOAAsAAwALAAAAAAAOAAwAAwALAAMAAAANAAwAAwAGAAIAAAANAA0AAwALAAMAAAAMAA0AAwAJAAMAAAALAA0AAwAJAAMAAAAKAA0AAwAJAAMAAAAJAA0AAwAJAAMAAAAIAA0AAwAIAAMAAAAIAAwAAwAIAAEAAAAMAAsAAwAJAAIAAAAMAAwAAwAJAAIAAAALAAwAAwAJAAIAAAAKAAwAAwAJAAIAAAAJAAwAAwAJAAIAAAAKAAsAAwAJAAIAAAALAAsAAwAJAAIAAAA=") +tile_set = ExtResource("4_od2gb") [node name="WallLayer" type="TileMapLayer" parent="." index="4"] +tile_map_data = PackedByteArray("AAADAA4AAAAKAAkAAAADAA0AAAAKAAkAAAADAAwAAAAKAAkAAAADAAsAAAAKAAkAAAADAAoAAAAKAAkAAAADAAkAAAAKAAkAAAAEAAkAAAAKAAkAAAAFAAkAAAAKAAkAAAAGAAkAAAAKAAkAAAAHAAkAAAAKAAkAAAAIAAkAAAAKAAkAAAAJAAkAAAAKAAkAAAAKAAkAAAAKAAkAAAALAAkAAAAKAAkAAAAMAAkAAAAKAAkAAAANAAkAAAAKAAkAAAAOAAkAAAAKAAkAAAAPAAkAAAAKAAkAAAAQAAkAAAAKAAkAAAAQAAoAAAAKAAkAAAAQAAsAAAAKAAkAAAAQAAwAAAAKAAkAAAAQAA0AAAAKAAkAAAAQAA4AAAAKAAkAAAADAA8AAAAKAAkAAAAEAA8AAAAKAAkAAAAFAA8AAAAKAAkAAAAGAA8AAAAKAAkAAAAHAA8AAAAKAAkAAAAIAA8AAAAKAAkAAAAJAA8AAAAKAAkAAAAKAA8AAAAKAAkAAAALAA8AAAAKAAkAAAAMAA8AAAAKAAkAAAANAA8AAAAKAAkAAAAOAA8AAAAKAAkAAAAPAA8AAAAKAAkAAAAQAA8AAAAKAAkAAAA=") +tile_set = ExtResource("4_od2gb") [node name="CurtainLayer" type="TileMapLayer" parent="." index="5"] tile_set = ExtResource("3_od2gb") diff --git a/scenes/worlds/yukotsukis_room/yukotsukis_room_config.tres b/scenes/worlds/yukotsukis_room/yukotsukis_room_config.tres new file mode 100644 index 0000000..f0ce783 --- /dev/null +++ b/scenes/worlds/yukotsukis_room/yukotsukis_room_config.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="RoomConfig" load_steps=2 format=3 uid="uid://h54yiuv2bup1"] + +[ext_resource type="Script" uid="uid://bamoq5wi0lkdy" path="res://scenes/room/room_config.gd" id="1_vlksg"] + +[resource] +script = ExtResource("1_vlksg") +initial_spawn = Vector2i(85, 225) +follow_player = false +camera_position = Vector2i(160, 120) +metadata/_custom_type_script = "uid://bamoq5wi0lkdy"