Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions in_game_sokoban_test.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
[gd_scene format=4 uid="uid://dkydtkbd0k1nj"]

[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="1_b58vp"]
[ext_resource type="Texture2D" uid="uid://doc4qg7e3kgs" path="res://assets/third_party/tiny-swords/Terrain/Water/Water.png" id="1_u248t"]
[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_6jm70"]
[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="3_ko04g"]
[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="3_vlvpl"]
[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="4_ko04g"]
[ext_resource type="Texture2D" uid="uid://c86ayucyybr2t" path="res://scenes/eternal_loom_sokoban/components/wall/walls.png" id="5_6jm70"]
[ext_resource type="PackedScene" uid="uid://040geb1h683b" path="res://push_block.tscn" id="6_ko04g"]
[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="7_jh3jm"]
[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="8_cqfek"]
[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="11_vlvpl"]

[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_o8ekb"]
texture = ExtResource("1_u248t")
texture_region_size = Vector2i(64, 64)
0:0/next_alternative_id = 3
0:0/0 = 0
0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)
0:0/2 = 2
0:0/2/physics_layer_2/polygon_0/points = PackedVector2Array(-32, 3.85675, 32, 4.40771, 32, 32, -32, 32)
0:0/1 = 1

[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_csc7u"]
texture = ExtResource("5_6jm70")
texture_region_size = Vector2i(64, 64)
0:0/0 = 0
1:0/0 = 0

[sub_resource type="TileSet" id="TileSet_ix036"]
tile_size = Vector2i(64, 64)
occlusion_layer_0/light_mask = 1
physics_layer_0/collision_layer = 16
physics_layer_0/collision_mask = 0
physics_layer_0/collision_priority = 100.0
physics_layer_1/collision_layer = 8
physics_layer_1/collision_mask = 0
physics_layer_2/collision_layer = 512
physics_layer_2/collision_mask = 0
sources/0 = SubResource("TileSetAtlasSource_o8ekb")
sources/2 = SubResource("TileSetAtlasSource_csc7u")

[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u248t"]
resource_name = "Submerged Blocks"
texture = ExtResource("5_6jm70")
texture_region_size = Vector2i(64, 64)
0:0/0 = 0
1:0/0 = 0

[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_vlvpl"]
resource_name = "Pushable Blocks"
scenes/1/scene = ExtResource("6_ko04g")

[sub_resource type="TileSet" id="TileSet_vlvpl"]
tile_size = Vector2i(64, 64)
sources/0 = SubResource("TileSetAtlasSource_u248t")
sources/1 = SubResource("TileSetScenesCollectionSource_vlvpl")

[sub_resource type="Resource" id="Resource_ctuqu"]
script = ExtResource("8_cqfek")
metadata/_custom_type_script = "uid://bgmwplmj3bfls"

[node name="InGameSokobanTest" type="Node2D" unique_id=414935997]
metadata/_edit_horizontal_guides_ = [1413.0, -146.0]

[node name="TileMapLayers" type="Node2D" parent="." unique_id=724875691]

[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1525083400]
tile_map_data = PackedByteArray("AAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAANAAQAAAAAAAAAAAANAAUAAAAAAAAAAAANAAYAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAYAAAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAASAAQAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAATAAQAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAYAAAAAAAAAAAAVAAQAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAYAAAAAAAAAAAAWAAQAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAYAAAAAAAAAAAAXAAQAAAAAAAAAAAAXAAUAAAAAAAAAAAAXAAYAAAAAAAAAAAAYAAQAAAAAAAAAAAAYAAUAAAAAAAAAAAAYAAYAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAZAAYAAAAAAAAAAAAaAAQAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAwAAAAAAAAAAAAaAA0AAAAAAAAAAAAaAA4AAAAAAAAAAAAaAA8AAAAAAAAAAAAaABAAAAAAAAAAAAAaABEAAAAAAAAAAAAaABIAAAAAAAAAAAAaABMAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAbAAUAAAAAAAAAAAAbAAYAAAAAAAAAAAAbAAcAAAAAAAAAAAAbAAgAAAAAAAAAAAAbAAkAAAAAAAAAAAAbAAoAAAAAAAAAAAAbAAsAAAAAAAAAAAAbAAwAAAAAAAAAAAAbAA0AAAAAAAAAAAAbAA4AAAAAAAAAAAAbAA8AAAAAAAAAAAAbABAAAAAAAAAAAAAbABEAAAAAAAAAAAAbABIAAAAAAAAAAAAbABMAAAAAAAAAAAAbABQAAAAAAAAAAAAbABUAAAAAAAAAAAADABUAAAAAAAAAAAADABYAAAAAAAAAAAAEABUAAAAAAAAAAAAEABYAAAAAAAAAAAAFABUAAAAAAAAAAAAFABYAAAAAAAAAAAAGABUAAAAAAAAAAAAGABYAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABUAAAAAAAAAAAAIABYAAAAAAAAAAAAJABUAAAAAAAAAAAAJABYAAAAAAAAAAAAKABUAAAAAAAAAAAAKABYAAAAAAAAAAAALABUAAAAAAAAAAAALABYAAAAAAAAAAAAMABUAAAAAAAAAAAAMABYAAAAAAAAAAAANABUAAAAAAAAAAAANABYAAAAAAAAAAAAOABUAAAAAAAAAAAAOABYAAAAAAAAAAAAPABUAAAAAAAAAAAAPABYAAAAAAAAAAAAQABUAAAAAAAAAAAAQABYAAAAAAAAAAAARABUAAAAAAAAAAAARABYAAAAAAAAAAAASABUAAAAAAAAAAAASABYAAAAAAAAAAAATABUAAAAAAAAAAAATABYAAAAAAAAAAAAUABUAAAAAAAAAAAAUABYAAAAAAAAAAAAVABUAAAAAAAAAAAAVABYAAAAAAAAAAAAWABUAAAAAAAAAAAAWABYAAAAAAAAAAAAXABUAAAAAAAAAAAAXABYAAAAAAAAAAAAYABUAAAAAAAAAAAAYABYAAAAAAAAAAAAZABUAAAAAAAAAAAAZABYAAAAAAAAAAAAaABYAAAAAAAAAAAAbABYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAADAA0AAAAAAAAAAAADAA4AAAAAAAAAAAADAA8AAAAAAAAAAAADABAAAAAAAAAAAAADABEAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABQAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAEAAkAAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAEAA4AAAAAAAAAAAAEAA8AAAAAAAAAAAAEABAAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABQAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAATAAoAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAATAA4AAAAAAAAAAAATAA8AAAAAAAAAAAATABAAAAAAAAAAAAATABEAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABQAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAUAA4AAAAAAAAAAAAUAA8AAAAAAAAAAAAUABAAAAAAAAAAAAAUABEAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABQAAAAAAAAAAAA=")
tile_set = SubResource("TileSet_ix036")
physics_quadrant_size = 1

[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=988001185]
tile_map_data = PackedByteArray("AAAFAAcAAgAAAAAAAAAGAAcAAgAAAAAAAAAHAAcAAgAAAAAAAAAIAAcAAgAAAAAAAAAJAAcAAgAAAAAAAAAKAAcAAgAAAAAAAAALAAcAAgAAAAAAAAAMAAcAAgAAAAAAAAANAAcAAgAAAAAAAAAOAAcAAgAAAAAAAAAPAAcAAgAAAAAAAAAQAAcAAgAAAAAAAAARAAcAAgAAAAAAAAASAAcAAgAAAAAAAAASAAgAAgAAAAAAAAASAAkAAgAAAAAAAAASAAoAAgAAAAAAAAASAAsAAgAAAAAAAAASAAwAAgAAAAAAAAASAA0AAgAAAAAAAAASAA4AAgAAAAAAAAASAA8AAgAAAAAAAAASABAAAgAAAAAAAAASABEAAgAAAAAAAAASABIAAgAAAAAAAAASABMAAgAAAAAAAAASABQAAgAAAAAAAAAFABQAAgAAAAAAAAAGABQAAgAAAAAAAAAHABQAAgAAAAAAAAAIABQAAgAAAAAAAAAJABQAAgAAAAAAAAAKABQAAgAAAAAAAAALABQAAgAAAAAAAAAMABQAAgAAAAAAAAANABQAAgAAAAAAAAAOABQAAgAAAAAAAAAPABQAAgAAAAAAAAAQABQAAgAAAAAAAAARABQAAgAAAAAAAAAFAAgAAgAAAAAAAAAFAAkAAgAAAAAAAAAFAAoAAgAAAAAAAAAFAAsAAgAAAAAAAAAFAAwAAgAAAAAAAAAFAA0AAgAAAAAAAAAFAA4AAgAAAAAAAAAFAA8AAgAAAAAAAAAFABAAAgAAAAAAAAAFABEAAgAAAAAAAAAFABIAAgAAAAAAAAAFABMAAgAAAAAAAAAVAAcAAgAAAAAAAAAWAAcAAgAAAAAAAAAXAAcAAgAAAAAAAAAYAAcAAgAAAAAAAAAZAAcAAgAAAAAAAAAZAAgAAgAAAAAAAAAZAAkAAgAAAAAAAAAZAAoAAgAAAAAAAAAZAAsAAgAAAAAAAAAZAAwAAgAAAAAAAAAZAA0AAgAAAAAAAAAZAA4AAgAAAAAAAAAZAA8AAgAAAAAAAAAZABAAAgAAAAAAAAAZABEAAgAAAAAAAAAZABIAAgAAAAAAAAAZABMAAgAAAAAAAAAZABQAAgAAAAAAAAAVABQAAgAAAAAAAAAWABQAAgAAAAAAAAAXABQAAgAAAAAAAAAYABQAAgAAAAAAAAAVAAgAAgAAAAAAAAAVAAkAAgAAAAAAAAAVAAoAAgAAAAAAAAAVAAsAAgAAAAAAAAAVAAwAAgAAAAAAAAAVAA0AAgAAAAAAAAAVAA4AAgAAAAAAAAAVAA8AAgAAAAAAAAAVABAAAgAAAAAAAAAVABEAAgAAAAAAAAAVABIAAgAAAAAAAAAVABMAAgAAAAAAAAA=")
tile_set = ExtResource("3_vlvpl")

[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1539200401]
tile_map_data = PackedByteArray("AAAZABQAAQACAAIAAAAZABMAAQACAAEAAAAZABIAAQACAAEAAAAZABEAAQACAAEAAAAZABAAAQACAAEAAAAZAA8AAQACAAEAAAAZAA4AAQACAAEAAAAZAA0AAQACAAEAAAAZAAwAAQACAAEAAAAZAAsAAQACAAEAAAAZAAoAAQACAAEAAAAZAAkAAQACAAEAAAAZAAgAAQACAAEAAAAZAAcAAQACAAAAAAAYABQAAQABAAIAAAAYABMAAQABAAEAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYABAAAQABAAEAAAAYAA8AAQABAAEAAAAYAA4AAQABAAEAAAAYAA0AAQABAAEAAAAYAAwAAQABAAEAAAAYAAsAAQABAAEAAAAYAAoAAQABAAEAAAAYAAkAAQABAAEAAAAYAAgAAQABAAEAAAAYAAcAAQABAAAAAAAXABQAAQABAAIAAAAXABMAAQABAAEAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXABAAAQABAAEAAAAXAA8AAQABAAEAAAAXAA4AAQABAAEAAAAXAA0AAQABAAEAAAAXAAwAAQABAAEAAAAXAAsAAQABAAEAAAAXAAoAAQABAAEAAAAXAAkAAQABAAEAAAAXAAgAAQABAAEAAAAXAAcAAQABAAAAAAAWABQAAQABAAIAAAAWABMAAQABAAEAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWABAAAQABAAEAAAAWAA8AAQABAAEAAAAWAA4AAQABAAEAAAAWAA0AAQABAAEAAAAWAAwAAQABAAEAAAAWAAsAAQABAAEAAAAWAAoAAQABAAEAAAAWAAkAAQABAAEAAAAWAAgAAQABAAEAAAAWAAcAAQABAAAAAAAVABQAAQAAAAIAAAAVABMAAQAAAAEAAAAVABIAAQAAAAEAAAAVABEAAQAAAAEAAAAVABAAAQAAAAEAAAAVAA8AAQAAAAEAAAAVAA4AAQAAAAEAAAAVAA0AAQAAAAEAAAAVAAwAAQAAAAEAAAAVAAsAAQAAAAEAAAAVAAoAAQAAAAEAAAAVAAkAAQAAAAEAAAAVAAgAAQAAAAEAAAAVAAcAAQAAAAAAAAASABQAAQACAAIAAAASABMAAQACAAEAAAASABIAAQACAAEAAAASABEAAQACAAEAAAASABAAAQACAAEAAAASAA8AAQACAAEAAAASAA4AAQACAAEAAAASAA0AAQACAAEAAAASAAwAAQACAAEAAAASAAsAAQACAAEAAAASAAoAAQACAAEAAAASAAkAAQACAAEAAAASAAgAAQACAAEAAAASAAcAAQACAAAAAAARABQAAQABAAIAAAARABMAAQABAAEAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARABAAAQABAAEAAAARAA8AAQABAAEAAAARAA4AAQABAAEAAAARAA0AAQABAAEAAAARAAwAAQABAAEAAAARAAsAAQABAAEAAAARAAoAAQABAAEAAAARAAkAAQABAAEAAAARAAgAAQABAAEAAAARAAcAAQABAAAAAAAQABQAAQABAAIAAAAQABMAAQABAAEAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQABAAAQABAAEAAAAQAA8AAQABAAEAAAAQAA4AAQABAAEAAAAQAA0AAQABAAEAAAAQAAwAAQABAAEAAAAQAAsAAQABAAEAAAAQAAoAAQABAAEAAAAQAAkAAQABAAEAAAAQAAgAAQABAAEAAAAQAAcAAQABAAAAAAAPABQAAQABAAIAAAAPABMAAQABAAEAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPABAAAQABAAEAAAAPAA8AAQABAAEAAAAPAA4AAQABAAEAAAAPAA0AAQABAAEAAAAPAAwAAQABAAEAAAAPAAsAAQABAAEAAAAPAAoAAQABAAEAAAAPAAkAAQABAAEAAAAPAAgAAQABAAEAAAAPAAcAAQABAAAAAAAOABQAAQABAAIAAAAOABMAAQABAAEAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOABAAAQABAAEAAAAOAA8AAQABAAEAAAAOAA4AAQABAAEAAAAOAA0AAQABAAEAAAAOAAwAAQABAAEAAAAOAAsAAQABAAEAAAAOAAoAAQABAAEAAAAOAAkAAQABAAEAAAAOAAgAAQABAAEAAAAOAAcAAQABAAAAAAANABQAAQABAAIAAAANABMAAQABAAEAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANABAAAQABAAEAAAANAA8AAQABAAEAAAANAA4AAQABAAEAAAANAA0AAQABAAEAAAANAAwAAQABAAEAAAANAAsAAQABAAEAAAANAAoAAQABAAEAAAANAAkAAQABAAEAAAANAAgAAQABAAEAAAANAAcAAQABAAAAAAAMABQAAQABAAIAAAAMABMAAQABAAEAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMABAAAQABAAEAAAAMAA8AAQABAAEAAAAMAA4AAQABAAEAAAAMAA0AAQABAAEAAAAMAAwAAQABAAEAAAAMAAsAAQABAAEAAAAMAAoAAQABAAEAAAAMAAkAAQABAAEAAAAMAAgAAQABAAEAAAAMAAcAAQABAAAAAAALABQAAQABAAIAAAALABMAAQABAAEAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALABAAAQABAAEAAAALAA8AAQABAAEAAAALAA4AAQABAAEAAAALAA0AAQABAAEAAAALAAwAAQABAAEAAAALAAsAAQABAAEAAAALAAoAAQABAAEAAAALAAkAAQABAAEAAAALAAgAAQABAAEAAAALAAcAAQABAAAAAAAKABQAAQABAAIAAAAKABMAAQABAAEAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKABAAAQABAAEAAAAKAA8AAQABAAEAAAAKAA4AAQABAAEAAAAKAA0AAQABAAEAAAAKAAwAAQABAAEAAAAKAAsAAQABAAEAAAAKAAoAAQABAAEAAAAKAAkAAQABAAEAAAAKAAgAAQABAAEAAAAKAAcAAQABAAAAAAAJABQAAQABAAIAAAAJABMAAQABAAEAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJABAAAQABAAEAAAAJAA8AAQABAAEAAAAJAA4AAQABAAEAAAAJAA0AAQABAAEAAAAJAAwAAQABAAEAAAAJAAsAAQABAAEAAAAJAAoAAQABAAEAAAAJAAkAAQABAAEAAAAJAAgAAQABAAEAAAAJAAcAAQABAAAAAAAIABQAAQABAAIAAAAIABMAAQABAAEAAAAIABIAAQABAAEAAAAIABEAAQABAAEAAAAIABAAAQABAAEAAAAIAA8AAQABAAEAAAAIAA4AAQABAAEAAAAIAA0AAQABAAEAAAAIAAwAAQABAAEAAAAIAAsAAQABAAEAAAAIAAoAAQABAAEAAAAIAAkAAQABAAEAAAAIAAgAAQABAAEAAAAIAAcAAQABAAAAAAAHABQAAQABAAIAAAAHABMAAQABAAEAAAAHABIAAQABAAEAAAAHABEAAQABAAEAAAAHABAAAQABAAEAAAAHAA8AAQABAAEAAAAHAA4AAQABAAEAAAAHAA0AAQABAAEAAAAHAAwAAQABAAEAAAAHAAsAAQABAAEAAAAHAAoAAQABAAEAAAAHAAkAAQABAAEAAAAHAAgAAQABAAEAAAAHAAcAAQABAAAAAAAGABQAAQABAAIAAAAGABMAAQABAAEAAAAGABIAAQABAAEAAAAGABEAAQABAAEAAAAGABAAAQABAAEAAAAGAA8AAQABAAEAAAAGAA4AAQABAAEAAAAGAA0AAQABAAEAAAAGAAwAAQABAAEAAAAGAAsAAQABAAEAAAAGAAoAAQABAAEAAAAGAAkAAQABAAEAAAAGAAgAAQABAAEAAAAGAAcAAQABAAAAAAAFABQAAQAAAAIAAAAFABMAAQAAAAEAAAAFABIAAQAAAAEAAAAFABEAAQAAAAEAAAAFABAAAQAAAAEAAAAFAA8AAQAAAAEAAAAFAA4AAQAAAAEAAAAFAA0AAQAAAAEAAAAFAAwAAQAAAAEAAAAFAAsAAQAAAAEAAAAFAAoAAQAAAAEAAAAFAAkAAQAAAAEAAAAFAAgAAQAAAAEAAAAFAAcAAQAAAAAAAAA=")
tile_set = ExtResource("2_6jm70")

[node name="Blocks" type="TileMapLayer" parent="TileMapLayers" unique_id=441634037]
tile_map_data = PackedByteArray("AAAMAA0AAQAAAAAAAQAHABAAAQAAAAAAAQAJAA4AAQAAAAAAAQAJAAsAAQAAAAAAAQAMAAoAAQAAAAAAAQAMABAAAQAAAAAAAQA=")
tile_set = SubResource("TileSet_vlvpl")

[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=20831420]
tile_map_data = PackedByteArray("AAARAA0ABAABAAIAAAARAAwABAACAAAAAAAQAA0ABAABAAIAAAAQAAwABAABAAAAAAAPAA0ABAAAAAIAAAAPAAwABAAAAAAAAAARABMABAABAAIAAAARABIABAABAAEAAAARABEABAABAAAAAAAQABMABAABAAIAAAAQABIABAABAAEAAAAQABEABAABAAAAAAAPABMABAAAAAIAAAAPABIABAAAAAEAAAAPABEABAABAAAAAAAOABEABAABAAQAAAANABEABAABAAQAAAAMABEABAAAAAQAAAASABMABAACAAIAAAASABIABAACAAEAAAASABEABAACAAAAAAASAA0ABAACAAQAAAA=")
tile_set = ExtResource("3_ko04g")

[node name="OnTheGround" type="Node2D" parent="." unique_id=719461425]
y_sort_enabled = true

[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("1_b58vp")]
position = Vector2(715, 831)
player_name = "StoryWeaver"
mode = 1
sprite_frames = ExtResource("4_ko04g")

[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1941828126]
limit_left = 262
limit_top = 400
limit_right = 1700
limit_bottom = 1400
editor_draw_limits = true

[node name="CollectibleItem" parent="OnTheGround" unique_id=327991066 instance=ExtResource("7_jh3jm")]
position = Vector2(1499, 1008)
item = SubResource("Resource_ctuqu")

[node name="Tree" parent="OnTheGround" unique_id=1182216860 instance=ExtResource("11_vlvpl")]
position = Vector2(878.00006, 767)
scale = Vector2(0.90073115, 0.98537934)

[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1967906375]
1 change: 1 addition & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ locale/translations_pot_files=PackedStringArray("res://scenes/menus/title/compon
2d_physics/layer_8="enemies hitbox"
2d_physics/layer_9="projectiles"
2d_physics/layer_10="non_walkable_floor"
2d_physics/layer_11="pushable"
2d_physics/layer_13="hookable"

[rendering]
Expand Down
66 changes: 66 additions & 0 deletions push_block.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
extends CharacterBody2D

# Beware dodgy maths
const INITIAL_VELOCITY := 256.0 # px/s
const DURATION := 0.5 # s
const DECELERATION := INITIAL_VELOCITY / DURATION # px/s^2

@export var foam: TileMapLayer
@export var submerged_blocks: TileMapLayer

func _ready() -> void:
if not submerged_blocks and get_parent() is TileMapLayer:
submerged_blocks = get_parent()

if not foam:
foam = submerged_blocks.get_parent().get_node("Foam")


func snap_to_cardinal(v: Vector2) -> Vector2:
return Vector2(signf(v.x), 0) if absf(v.x) > absf(v.y) else Vector2(0, signf(v.y))


func got_hit(player: Node2D) -> void:
var dir := player.global_position.direction_to(global_position)
velocity = snap_to_cardinal(dir) * INITIAL_VELOCITY


func _physics_process(delta: float) -> void:
velocity = velocity.move_toward(Vector2.ZERO, DECELERATION * delta)

# Need to not call move_and_slide() otherwise, or else you can push the box by running against it and then it slides away to resolve the collision.
if not velocity.is_zero_approx():
move_and_slide()


func _on_area_2d_body_shape_entered(
body_rid: RID,
body: Node2D,
_body_shape_index: int,
_local_shape_index: int,
) -> void:
var tile_map := body as TileMapLayer
if not tile_map:
return

# For this to work, the water layer's physics quadrant size has to be set to
# 1, i.e. no chunking of water physics - probably bad for performance...
# But if this became a practical problem we could split up the water layer
# based on whether it's placed somewhere where blocks can be pushed into it, or not.
var coords := tile_map.get_coords_for_body_rid(body_rid)

# This doesn't work because at the point when the 1×1px area in the centre of a block
# travelling rightwards touches a block of water at (x, y),
# its centre is still in tile (x - 1, y).
# var coords := tile_map.local_to_map(tile_map.to_local(global_position))
Comment on lines +52 to +55
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is why the previous version didn't work. Actually what I originally implemented was the section just above that uses get_coords_for_body_rid but then I thought, well, how hard can it be to use local_to_map? and didn't even test it before pushing.


# Erase the water
tile_map.set_cell(coords, -1)
# Add foam
foam.set_cell(coords, 2, Vector2i(0, 0))
# Put a static copy of this block "into the water"
submerged_blocks.set_cell(coords, 0, Vector2i(1, 0))
# Free the physical block
queue_free()
# TODO: sound-effect
# TODO: do this more convincingly!
1 change: 1 addition & 0 deletions push_block.gd.uid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
uid://bxulfsreyu63i
37 changes: 37 additions & 0 deletions push_block.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[gd_scene format=3 uid="uid://040geb1h683b"]

[ext_resource type="Script" uid="uid://bxulfsreyu63i" path="res://push_block.gd" id="1_jmvaw"]
[ext_resource type="Texture2D" uid="uid://c86ayucyybr2t" path="res://scenes/eternal_loom_sokoban/components/wall/walls.png" id="2_byqtm"]

[sub_resource type="RectangleShape2D" id="RectangleShape2D_6jm70"]
size = Vector2(64, 64)

[sub_resource type="AtlasTexture" id="AtlasTexture_ko04g"]
atlas = ExtResource("2_byqtm")
region = Rect2(64, 0, 64, 64)

[sub_resource type="RectangleShape2D" id="RectangleShape2D_cqfek"]
size = Vector2(1, 1)

[node name="PushBlock" type="CharacterBody2D" unique_id=1349233887]
collision_layer = 272
collision_mask = 17
motion_mode = 1
script = ExtResource("1_jmvaw")

[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1387816029]
shape = SubResource("RectangleShape2D_6jm70")
metadata/_edit_lock_ = true

[node name="Sprite2D" type="Sprite2D" parent="." unique_id=448744553]
texture = SubResource("AtlasTexture_ko04g")
metadata/_edit_lock_ = true

[node name="WaterDetector" type="Area2D" parent="." unique_id=222932605]
collision_layer = 0
collision_mask = 512

[node name="CollisionShape2D" type="CollisionShape2D" parent="WaterDetector" unique_id=1457035837]
shape = SubResource("RectangleShape2D_cqfek")

[connection signal="body_shape_entered" from="WaterDetector" to="." method="_on_area_2d_body_shape_entered"]
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ func _on_body_entered(body: Node2D) -> void:
CameraShake.shake()


func _on_air_stream_body_entered(body: Projectile) -> void:
body.got_hit(owner)
func _on_air_stream_body_entered(body: Node2D) -> void:
if body.has_method("got_hit"):
body.got_hit(owner)


func _notification(what: int) -> void:
Expand Down
2 changes: 1 addition & 1 deletion scenes/game_elements/characters/player/player.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ script = ExtResource("7_5gtgg")
unique_name_in_owner = true
position = Vector2(0, -24)
collision_layer = 0
collision_mask = 256
collision_mask = 1280

[node name="AirStreamCollision" type="CollisionShape2D" parent="PlayerFighting/AirStream" unique_id=2073501549]
unique_name_in_owner = true
Expand Down
Loading