Compare commits

..

No commits in common. "d851d35cac8c7b9dcd6cfdf8bd66aea2638e2e75" and "e6120519fab6aec5e82a5f7f0bf8423c30a1d21c" have entirely different histories.

6 changed files with 1055 additions and 62 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,5 @@
extends Node extends Node
@warning_ignore_start("unused_signal") @warning_ignore("unused_signal")
## Emitted when the room has transitioned.
signal room_changed(previous_room: StringName, next_room: StringName, waypoint: Waypoint) signal room_changed(previous_room: StringName, next_room: StringName, waypoint: Waypoint)
## Emitted when the room's loopable state is toggled.
signal room_loop_toggled(enabled: bool, loop_size: Rect2i)

View file

@ -13,29 +13,6 @@ var v_press_tick: int = 0 ## last time vertical axis was pressed
var speed_mult: float = 1.0 var speed_mult: float = 1.0
var room: Room
var x_min_wrap: float
var x_max_wrap: float
var y_min_wrap: float
var y_max_wrap: float
var wrapping: bool
func _ready() -> void:
# TODO: better way to get current room (signal maybe?)
room = get_parent() as Room
assert(room != null, "no room attached")
if room.config.loopable:
x_min_wrap = room.config.loop_size.position.x
x_max_wrap = room.config.loop_size.size.x
y_min_wrap = room.config.loop_size.position.y
y_max_wrap = room.config.loop_size.size.y
wrapping = true if room.config.loopable else false
EventBus.connect("room_loop_toggled", _on_loop_toggled)
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event.is_action_pressed("move_left") or event.is_action_pressed("move_right"): if event.is_action_pressed("move_left") or event.is_action_pressed("move_right"):
@ -51,20 +28,13 @@ func get_movement_vector() -> Vector2:
if absf(x_strength) < DEADZONE and absf(y_strength) < DEADZONE: if absf(x_strength) < DEADZONE and absf(y_strength) < DEADZONE:
return Vector2.ZERO return Vector2.ZERO
if absf(x_strength) < DEADZONE: return Vector2(0, signf(y_strength)) if absf(x_strength) < DEADZONE:
if absf(y_strength) < DEADZONE: return Vector2(signf(x_strength), 0) return Vector2(0, signf(y_strength))
if absf(y_strength) < DEADZONE:
return Vector2(signf(x_strength), 0)
# use most recent axis press # use most recent axis press
if h_press_tick > v_press_tick: return Vector2(signf(x_strength), 0) if h_press_tick > v_press_tick:
else: return Vector2(0, signf(y_strength)) return Vector2(signf(x_strength), 0)
else:
return Vector2(0, signf(y_strength))
func _on_loop_toggled(enabled: bool, loop_size: Rect2i) -> void:
if enabled:
x_min_wrap = loop_size.position.x
x_max_wrap = loop_size.size.x
y_min_wrap = loop_size.position.y
y_max_wrap = loop_size.size.y
wrapping = true
else: wrapping = false

View file

@ -13,10 +13,6 @@ func _state_physics_update(_delta: float) -> void:
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()
if player.wrapping:
player.position.x = wrapf(player.position.x, player.x_min_wrap, player.x_max_wrap)
player.position.y = wrapf(player.position.y, player.y_min_wrap, player.y_max_wrap)
#endregion #endregion
if watch_state([WALKING]): return if watch_state([WALKING]): return

View file

@ -1,14 +1,8 @@
class_name RoomConfig extends Resource class_name RoomConfig extends Resource
@export_group('Camera') #@export var size: Vector2i = Vector2i.ZERO
## Whether the camera will (initially) follow the player ot not.
@export var follow_player: bool = true @export var follow_player: bool = true
## Initial position of the camera.
@export var camera_position: Vector2i = Vector2i.ZERO
@export_group('Room Loop')
## Whether the room loops itself or not.
@export var loopable: bool = false @export var loopable: bool = false
## Section of the room that will loop itself.
@export var loop_size: Rect2i = Rect2i(Vector2i.ZERO, Vector2i.ZERO) @export var camera_position: Vector2i = Vector2i.ZERO

View file

@ -1,8 +1,9 @@
[gd_scene load_steps=5 format=3 uid="uid://dcecget4734ra"] [gd_scene load_steps=6 format=4 uid="uid://dcecget4734ra"]
[ext_resource type="PackedScene" uid="uid://bxhyxox662buj" path="res://scenes/room/room.tscn" id="1_tbqj1"] [ext_resource type="PackedScene" uid="uid://bxhyxox662buj" path="res://scenes/room/room.tscn" id="1_tbqj1"]
[ext_resource type="Script" uid="uid://bamoq5wi0lkdy" path="res://scenes/room/room_config.gd" id="2_06s2n"] [ext_resource type="Script" uid="uid://bamoq5wi0lkdy" path="res://scenes/room/room_config.gd" id="2_06s2n"]
[ext_resource type="Texture2D" uid="uid://cl3pdverm8pok" path="res://assets/yuki.png" id="3_06s2n"] [ext_resource type="TileSet" uid="uid://pq8rue1s8kgc" path="res://assets/world/wall_tileset.tres" id="3_06s2n"]
[ext_resource type="TileSet" uid="uid://t04s2nurgwro" path="res://assets/world/floor_tileset.tres" id="3_gs3vs"]
[sub_resource type="Resource" id="Resource_t5fpq"] [sub_resource type="Resource" id="Resource_t5fpq"]
script = ExtResource("2_06s2n") script = ExtResource("2_06s2n")
@ -11,7 +12,11 @@ metadata/_custom_type_script = "uid://bamoq5wi0lkdy"
[node name="Room" instance=ExtResource("1_tbqj1")] [node name="Room" instance=ExtResource("1_tbqj1")]
config = SubResource("Resource_t5fpq") config = SubResource("Resource_t5fpq")
[node name="Sprite2D" type="Sprite2D" parent="." index="2"] [node name="FloorTilemap" type="TileMapLayer" parent="." index="2"]
position = Vector2(232, 144) tile_map_data = PackedByteArray("AAAGAAkAAAAAAAIAAAAGAAgAAAAAAAEAAAAHAAYAAAABAAMAAAAGAAcAAAAAAAAAAAAIAAYAAAADAAIAAAAIAAUAAAABAAAAAAAJAAUAAAACAAMAAAAKAAUAAAACAAIAAAAKAAQAAAAAAAAAAAALAAUAAAADAAAAAAALAAYAAAAAAAIAAAALAAcAAQACAAMAAAAMAAcAAQACAAMAAAANAAcAAQADAAMAAAANAAYAAAABAAMAAAAOAAYAAAADAAIAAAAOAAUAAAABAAAAAAAPAAUAAAACAAMAAAAQAAUAAAADAAAAAAAQAAYAAAAAAAIAAAARAAcAAAAAAAAAAAARAAgAAAAAAAEAAAARAAkAAAAAAAIAAAARAAoAAgACAAMAAAAQAAoAAgABAAMAAAAQAAsAAQABAAAAAAAQAAwAAQADAAIAAAAQAA0AAgABAAAAAAAPAA0AAQADAAIAAAAOAA0AAQABAAMAAAANAA0AAAADAAMAAAAMAA0AAAACAAMAAAALAA0AAAABAAMAAAAKAA4AAgABAAMAAAAJAA4AAAAAAAMAAAAIAA0AAgABAAMAAAAHAA0AAQALAAMAAAAGAA0AAQAIAAMAAAAGAAwAAQAIAAAAAAAHAAwAAQAHAAEAAAAJAAsAAAABAAMAAAAIAAwAAAAAAAMAAAAMAAsAAgABAAMAAAALAAsAAAADAAMAAAAKAAsAAAACAAMAAAANAAsAAgACAAMAAAAOAAsAAgACAAMAAAAPAAsAAgADAAMAAAARAAsAAQACAAMAAAASAAsAAQADAAMAAAATAAsAAgABAAEAAAAVAAsAAgADAAMAAAAUAAsAAgACAAMAAAAWAAsAAAAAAAAAAAAWAAwAAAABAAEAAAAXAAwAAAACAAMAAAAYAAwAAAACAAAAAAAYAA0AAAAAAAIAAAAZAAwAAAACAAMAAAAaAAwAAAADAAIAAAAaAAsAAAAAAAAAAAAWAA0AAAAAAAEAAAAWAA4AAAAAAAEAAAAWAA8AAAAAAAIAAAAVABAAAQAEAAMAAAAVABIAAAAAAAMAAAAVABEAAQALAAMAAAAVABMAAgABAAMAAAAUABMAAAAAAAMAAAASABIAAAADAAMAAAATABMAAQADAAMAAAARABIAAAACAAMAAAAQABIAAAABAAMAAAAPABEAAAADAAMAAAAOABEAAAABAAAAAAAOABIAAAADAAIAAAANABIAAAACAAMAAAAMABIAAAABAAAAAAAMABMAAAAAAAIAAAALABMAAQADAAAAAAALABQAAQABAAIAAAALABUAAAABAAMAAAAMABUAAAACAAMAAAANABUAAAACAAMAAAAOABUAAAACAAMAAAAPABUAAAACAAMAAAAQABUAAAADAAMAAAARABQAAAABAAMAAAASABQAAAACAAMAAAATABQAAAADAAMAAAAWABMAAgADAAAAAAAXABMAAAABAAMAAAAYABMAAAACAAMAAAAZABMAAAADAAIAAAAZABIAAAABAAAAAAAaABIAAAACAAMAAAAbABIAAAAFAAMAAAAbABEAAAAIAAEAAAAcABEAAAALAAIAAAAcABIAAAAGAAMAAAAdABIAAAADAAAAAAAdABMAAAABAAIAAAAeABMAAAADAAMAAAAeABQAAgACAAMAAAAfABQAAgADAAIAAAAhABQAAAACAAMAAAAgABQAAAABAAMAAAAiABQAAAADAAMAAAAjABMAAAAAAAIAAAAjABIAAAAAAAEAAAAjABEAAAADAAAAAAAiABEAAAABAAIAAAAiABAAAAADAAAAAAAhABAAAAACAAMAAAAgABAAAAABAAMAAAAfABAAAgADAAAAAAAbABAAAAAIAAAAAAAcABAAAAAGAAAAAAAdABAAAAADAAMAAAAeABAAAgABAAIAAAAaAA8AAgACAAMAAAAZAA8AAgACAAMAAAAZAA4AAAAAAAMAAAAMABAAAQACAAMAAAANAA8AAQAAAAAAAAAOAA4AAgACAAMAAAAPAAwAAQABAAAAAAATAAoAAgADAAAAAAAUAAoAAQABAAMAAAAVAAoAAQADAAMAAAAVAAwAAQAAAAAAAAAVAA0AAQAAAAEAAAAVAA4AAQAAAAEAAAAVAA8AAQAAAAEAAAAUABEAAQAIAAMAAAAUABIAAgADAAMAAAATABIAAgABAAMAAAASABMAAQACAAMAAAARABMAAQACAAMAAAAQABMAAQABAAMAAAAPABQAAQADAAMAAAAOABQAAQACAAMAAAANABQAAQACAAMAAAAMABQAAQACAAMAAAAKABMAAQACAAMAAAAJABMAAQACAAMAAAAIABMAAQACAAMAAAAHABMAAQACAAMAAAAGABMAAQABAAIAAAAGABIAAQAAAAAAAAAFABEAAQAAAAIAAAAFABAAAQAAAAAAAAAFAA8AAgAIAAMAAAAGAA4AAgAKAAAAAAAHAAsAAQABAAEAAAAIAAsAAQADAAMAAAAJAAoAAQABAAMAAAAKAAoAAQACAAMAAAALAAoAAQACAAMAAAANAAoAAQADAAIAAAAMAAoAAQACAAMAAAANAAkAAQABAAAAAAAOAAkAAQADAAIAAAAOAAgAAQAAAAAAAAAKAAcAAQABAAMAAAAJAAgAAQADAAMAAAAIAAgAAQABAAAAAAAIAAkAAQAAAAIAAAAHAAoAAQAAAAAAAAAIAA4AAQAAAAMAAAAIAA8AAgACAAMAAAAJAA8AAgADAAMAAAALABAAAQABAAMAAAAKAA8AAQAAAAMAAAANABAAAQADAAIAAAAPABAAAgADAAIAAAAOABAAAgABAAMAAAASABAAAQABAAMAAAARABAAAgAAAAMAAAAQABAAAQAAAAMAAAAUABAAAQAFAAAAAAATABAAAQACAAMAAAAWABAAAQADAAMAAAAYABAAAgADAAIAAAAXABAAAgABAAAAAAAZABAAAQAAAAMAAAAbAA4AAQAAAAMAAAAcAA0AAQABAAMAAAAdAA0AAQADAAIAAAAdAAwAAQAAAAEAAAAdAAsAAQADAAAAAAAbAAoAAQAAAAMAAAAcAAsAAQABAAMAAAAYAAoAAgAJAAMAAAAZAAoAAgAGAAMAAAAaAAoAAgADAAMAAAAVAAkAAgACAAMAAAAWAAkAAgAFAAAAAAAXAAoAAgAJAAMAAAAUAAkAAgABAAMAAAASAAkAAQABAAMAAAATAAkAAQADAAMAAAAXABQAAgACAAMAAAAXABIAAgAAAAIAAAAXABEAAgAAAAEAAAAYAA8AAgABAAAAAAAbAA8AAgACAAMAAAAcAA8AAgACAAMAAAAdAA8AAgACAAMAAAAeAA8AAgADAAAAAAAfABEAAgAAAAEAAAAfABIAAgAAAAEAAAAfABMAAgAAAAEAAAAdABQAAgACAAMAAAAaABQAAgACAAMAAAAbABQAAgACAAMAAAAcABQAAgACAAMAAAAZABQAAgACAAMAAAAYABQAAgACAAMAAAAWABQAAgABAAIAAAASABEAAgAAAAMAAAAQAA8AAgALAAMAAAAPAA8AAgAEAAIAAAANAA4AAgACAAMAAAAMAA4AAgACAAMAAAALAA4AAgACAAMAAAAHAA8AAgAGAAMAAAAGAA8AAgAJAAMAAAAFAA4AAgAIAAAAAAALAAwAAgADAAMAAAAKAAwAAgABAAMAAAAJAA0AAgADAAMAAAAHAA4AAgALAAAAAAASAAoAAgACAAMAAAAXAAkAAgAKAAAAAAAYAAkAAgAKAAAAAAAZAAkAAgALAAAAAAAWAAoAAgAIAAMAAAATAAwAAgADAAIAAAASAAwAAgACAAMAAAARAAwAAgABAAAAAAARAA0AAgADAAIAAAAQAA4AAgAHAAEAAAAPAA4AAgAFAAAAAAA=")
texture = ExtResource("3_06s2n") tile_set = ExtResource("3_gs3vs")
offset = Vector2(0, -50) collision_enabled = false
[node name="WallTilemap" type="TileMapLayer" parent="." index="3" groups=["wall"]]
tile_map_data = PackedByteArray("AAAHAAAAAAABAAMAAAAIAAAAAAADAAIAAAAIAP//AAABAAAAAAAJAP//AAACAAMAAAAKAP//AAACAAMAAAALAP//AAACAAMAAAAMAP//AAADAAMAAAANAAAAAAABAAMAAAAOAAAAAAACAAMAAAAPAAAAAAADAAAAAAAPAAEAAAAAAAIAAAAQAAIAAAAAAAAAAAAQAAMAAAAAAAEAAAAQAAQAAAADAAEAAAAQAAUAAAAAAAEAAAAQAAYAAAADAAIAAAAPAAYAAAABAAAAAAAPAAcAAAADAAIAAAAOAAcAAAABAAMAAAANAAgAAAADAAMAAAAMAAgAAAABAAAAAAAMAAkAAAADAAIAAAALAAkAAAACAAMAAAAKAAkAAAACAAMAAAAJAAkAAAABAAIAAAAJAAgAAAADAAAAAAAIAAgAAAACAAMAAAAHAAgAAAABAAIAAAAHAAcAAAADAAAAAAAGAAcAAAABAAIAAAAGAAYAAAADAAAAAAAFAAYAAAABAAIAAAAFAAUAAAAAAAEAAAAFAAQAAAADAAAAAAAEAAQAAAABAAIAAAAEAAMAAAADAAAAAAADAAMAAAABAAMAAAANAAMAAAAFAAAAAAAOAAMAAAAHAAEAAAAOAAQAAAAGAAMAAAANAAQAAAAEAAIAAAANAAUAAAAAAAIAAAAMAAMAAAABAAMAAAAOAAIAAAAAAAAAAAAPAAQAAAACAAMAAAA=")
tile_set = ExtResource("3_06s2n")