Compare commits
4 commits
e6120519fa
...
d851d35cac
| Author | SHA1 | Date | |
|---|---|---|---|
| d851d35cac | |||
| b31313ed96 | |||
| 7d6e5321fa | |||
| c16ec316a8 |
6 changed files with 62 additions and 1055 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,9 @@
|
|||
extends Node
|
||||
|
||||
|
||||
@warning_ignore("unused_signal")
|
||||
@warning_ignore_start("unused_signal")
|
||||
## Emitted when the room has transitioned.
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,29 @@ var v_press_tick: int = 0 ## last time vertical axis was pressed
|
|||
|
||||
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:
|
||||
if event.is_action_pressed("move_left") or event.is_action_pressed("move_right"):
|
||||
|
|
@ -28,13 +51,20 @@ func get_movement_vector() -> Vector2:
|
|||
if absf(x_strength) < DEADZONE and absf(y_strength) < DEADZONE:
|
||||
return Vector2.ZERO
|
||||
|
||||
if absf(x_strength) < DEADZONE:
|
||||
return Vector2(0, signf(y_strength))
|
||||
if absf(y_strength) < DEADZONE:
|
||||
return Vector2(signf(x_strength), 0)
|
||||
if absf(x_strength) < DEADZONE: return Vector2(0, signf(y_strength))
|
||||
if absf(y_strength) < DEADZONE: return Vector2(signf(x_strength), 0)
|
||||
|
||||
# use most recent axis press
|
||||
if h_press_tick > v_press_tick:
|
||||
return Vector2(signf(x_strength), 0)
|
||||
else:
|
||||
return Vector2(0, signf(y_strength))
|
||||
if h_press_tick > v_press_tick: 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
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ func _state_physics_update(_delta: float) -> void:
|
|||
player.velocity = direction * player.max_speed * player.speed_mult
|
||||
|
||||
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
|
||||
|
||||
if watch_state([WALKING]): return
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
class_name RoomConfig extends Resource
|
||||
|
||||
|
||||
#@export var size: Vector2i = Vector2i.ZERO
|
||||
@export_group('Camera')
|
||||
## Whether the camera will (initially) follow the player ot not.
|
||||
@export var follow_player: bool = true
|
||||
@export var loopable: bool = false
|
||||
|
||||
## 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
|
||||
## Section of the room that will loop itself.
|
||||
@export var loop_size: Rect2i = Rect2i(Vector2i.ZERO, Vector2i.ZERO)
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
[gd_scene load_steps=6 format=4 uid="uid://dcecget4734ra"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dcecget4734ra"]
|
||||
|
||||
[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="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"]
|
||||
[ext_resource type="Texture2D" uid="uid://cl3pdverm8pok" path="res://assets/yuki.png" id="3_06s2n"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_t5fpq"]
|
||||
script = ExtResource("2_06s2n")
|
||||
|
|
@ -12,11 +11,7 @@ metadata/_custom_type_script = "uid://bamoq5wi0lkdy"
|
|||
[node name="Room" instance=ExtResource("1_tbqj1")]
|
||||
config = SubResource("Resource_t5fpq")
|
||||
|
||||
[node name="FloorTilemap" type="TileMapLayer" parent="." index="2"]
|
||||
tile_map_data = PackedByteArray("AAAGAAkAAAAAAAIAAAAGAAgAAAAAAAEAAAAHAAYAAAABAAMAAAAGAAcAAAAAAAAAAAAIAAYAAAADAAIAAAAIAAUAAAABAAAAAAAJAAUAAAACAAMAAAAKAAUAAAACAAIAAAAKAAQAAAAAAAAAAAALAAUAAAADAAAAAAALAAYAAAAAAAIAAAALAAcAAQACAAMAAAAMAAcAAQACAAMAAAANAAcAAQADAAMAAAANAAYAAAABAAMAAAAOAAYAAAADAAIAAAAOAAUAAAABAAAAAAAPAAUAAAACAAMAAAAQAAUAAAADAAAAAAAQAAYAAAAAAAIAAAARAAcAAAAAAAAAAAARAAgAAAAAAAEAAAARAAkAAAAAAAIAAAARAAoAAgACAAMAAAAQAAoAAgABAAMAAAAQAAsAAQABAAAAAAAQAAwAAQADAAIAAAAQAA0AAgABAAAAAAAPAA0AAQADAAIAAAAOAA0AAQABAAMAAAANAA0AAAADAAMAAAAMAA0AAAACAAMAAAALAA0AAAABAAMAAAAKAA4AAgABAAMAAAAJAA4AAAAAAAMAAAAIAA0AAgABAAMAAAAHAA0AAQALAAMAAAAGAA0AAQAIAAMAAAAGAAwAAQAIAAAAAAAHAAwAAQAHAAEAAAAJAAsAAAABAAMAAAAIAAwAAAAAAAMAAAAMAAsAAgABAAMAAAALAAsAAAADAAMAAAAKAAsAAAACAAMAAAANAAsAAgACAAMAAAAOAAsAAgACAAMAAAAPAAsAAgADAAMAAAARAAsAAQACAAMAAAASAAsAAQADAAMAAAATAAsAAgABAAEAAAAVAAsAAgADAAMAAAAUAAsAAgACAAMAAAAWAAsAAAAAAAAAAAAWAAwAAAABAAEAAAAXAAwAAAACAAMAAAAYAAwAAAACAAAAAAAYAA0AAAAAAAIAAAAZAAwAAAACAAMAAAAaAAwAAAADAAIAAAAaAAsAAAAAAAAAAAAWAA0AAAAAAAEAAAAWAA4AAAAAAAEAAAAWAA8AAAAAAAIAAAAVABAAAQAEAAMAAAAVABIAAAAAAAMAAAAVABEAAQALAAMAAAAVABMAAgABAAMAAAAUABMAAAAAAAMAAAASABIAAAADAAMAAAATABMAAQADAAMAAAARABIAAAACAAMAAAAQABIAAAABAAMAAAAPABEAAAADAAMAAAAOABEAAAABAAAAAAAOABIAAAADAAIAAAANABIAAAACAAMAAAAMABIAAAABAAAAAAAMABMAAAAAAAIAAAALABMAAQADAAAAAAALABQAAQABAAIAAAALABUAAAABAAMAAAAMABUAAAACAAMAAAANABUAAAACAAMAAAAOABUAAAACAAMAAAAPABUAAAACAAMAAAAQABUAAAADAAMAAAARABQAAAABAAMAAAASABQAAAACAAMAAAATABQAAAADAAMAAAAWABMAAgADAAAAAAAXABMAAAABAAMAAAAYABMAAAACAAMAAAAZABMAAAADAAIAAAAZABIAAAABAAAAAAAaABIAAAACAAMAAAAbABIAAAAFAAMAAAAbABEAAAAIAAEAAAAcABEAAAALAAIAAAAcABIAAAAGAAMAAAAdABIAAAADAAAAAAAdABMAAAABAAIAAAAeABMAAAADAAMAAAAeABQAAgACAAMAAAAfABQAAgADAAIAAAAhABQAAAACAAMAAAAgABQAAAABAAMAAAAiABQAAAADAAMAAAAjABMAAAAAAAIAAAAjABIAAAAAAAEAAAAjABEAAAADAAAAAAAiABEAAAABAAIAAAAiABAAAAADAAAAAAAhABAAAAACAAMAAAAgABAAAAABAAMAAAAfABAAAgADAAAAAAAbABAAAAAIAAAAAAAcABAAAAAGAAAAAAAdABAAAAADAAMAAAAeABAAAgABAAIAAAAaAA8AAgACAAMAAAAZAA8AAgACAAMAAAAZAA4AAAAAAAMAAAAMABAAAQACAAMAAAANAA8AAQAAAAAAAAAOAA4AAgACAAMAAAAPAAwAAQABAAAAAAATAAoAAgADAAAAAAAUAAoAAQABAAMAAAAVAAoAAQADAAMAAAAVAAwAAQAAAAAAAAAVAA0AAQAAAAEAAAAVAA4AAQAAAAEAAAAVAA8AAQAAAAEAAAAUABEAAQAIAAMAAAAUABIAAgADAAMAAAATABIAAgABAAMAAAASABMAAQACAAMAAAARABMAAQACAAMAAAAQABMAAQABAAMAAAAPABQAAQADAAMAAAAOABQAAQACAAMAAAANABQAAQACAAMAAAAMABQAAQACAAMAAAAKABMAAQACAAMAAAAJABMAAQACAAMAAAAIABMAAQACAAMAAAAHABMAAQACAAMAAAAGABMAAQABAAIAAAAGABIAAQAAAAAAAAAFABEAAQAAAAIAAAAFABAAAQAAAAAAAAAFAA8AAgAIAAMAAAAGAA4AAgAKAAAAAAAHAAsAAQABAAEAAAAIAAsAAQADAAMAAAAJAAoAAQABAAMAAAAKAAoAAQACAAMAAAALAAoAAQACAAMAAAANAAoAAQADAAIAAAAMAAoAAQACAAMAAAANAAkAAQABAAAAAAAOAAkAAQADAAIAAAAOAAgAAQAAAAAAAAAKAAcAAQABAAMAAAAJAAgAAQADAAMAAAAIAAgAAQABAAAAAAAIAAkAAQAAAAIAAAAHAAoAAQAAAAAAAAAIAA4AAQAAAAMAAAAIAA8AAgACAAMAAAAJAA8AAgADAAMAAAALABAAAQABAAMAAAAKAA8AAQAAAAMAAAANABAAAQADAAIAAAAPABAAAgADAAIAAAAOABAAAgABAAMAAAASABAAAQABAAMAAAARABAAAgAAAAMAAAAQABAAAQAAAAMAAAAUABAAAQAFAAAAAAATABAAAQACAAMAAAAWABAAAQADAAMAAAAYABAAAgADAAIAAAAXABAAAgABAAAAAAAZABAAAQAAAAMAAAAbAA4AAQAAAAMAAAAcAA0AAQABAAMAAAAdAA0AAQADAAIAAAAdAAwAAQAAAAEAAAAdAAsAAQADAAAAAAAbAAoAAQAAAAMAAAAcAAsAAQABAAMAAAAYAAoAAgAJAAMAAAAZAAoAAgAGAAMAAAAaAAoAAgADAAMAAAAVAAkAAgACAAMAAAAWAAkAAgAFAAAAAAAXAAoAAgAJAAMAAAAUAAkAAgABAAMAAAASAAkAAQABAAMAAAATAAkAAQADAAMAAAAXABQAAgACAAMAAAAXABIAAgAAAAIAAAAXABEAAgAAAAEAAAAYAA8AAgABAAAAAAAbAA8AAgACAAMAAAAcAA8AAgACAAMAAAAdAA8AAgACAAMAAAAeAA8AAgADAAAAAAAfABEAAgAAAAEAAAAfABIAAgAAAAEAAAAfABMAAgAAAAEAAAAdABQAAgACAAMAAAAaABQAAgACAAMAAAAbABQAAgACAAMAAAAcABQAAgACAAMAAAAZABQAAgACAAMAAAAYABQAAgACAAMAAAAWABQAAgABAAIAAAASABEAAgAAAAMAAAAQAA8AAgALAAMAAAAPAA8AAgAEAAIAAAANAA4AAgACAAMAAAAMAA4AAgACAAMAAAALAA4AAgACAAMAAAAHAA8AAgAGAAMAAAAGAA8AAgAJAAMAAAAFAA4AAgAIAAAAAAALAAwAAgADAAMAAAAKAAwAAgABAAMAAAAJAA0AAgADAAMAAAAHAA4AAgALAAAAAAASAAoAAgACAAMAAAAXAAkAAgAKAAAAAAAYAAkAAgAKAAAAAAAZAAkAAgALAAAAAAAWAAoAAgAIAAMAAAATAAwAAgADAAIAAAASAAwAAgACAAMAAAARAAwAAgABAAAAAAARAA0AAgADAAIAAAAQAA4AAgAHAAEAAAAPAA4AAgAFAAAAAAA=")
|
||||
tile_set = ExtResource("3_gs3vs")
|
||||
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")
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." index="2"]
|
||||
position = Vector2(232, 144)
|
||||
texture = ExtResource("3_06s2n")
|
||||
offset = Vector2(0, -50)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue