This commit is contained in:
2026-03-28 21:34:31 -05:00
parent 5fb4a96159
commit 9f057f6c16
32 changed files with 444 additions and 65 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bo1utikr0r2q1"
path="res://.godot/imported/64x64.png-129f36e07b18bd0408477af73ef87a83.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Spritesheets/Icons/UI/64x64.png"
dest_files=["res://.godot/imported/64x64.png-129f36e07b18bd0408477af73ef87a83.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -3,35 +3,36 @@ extends BaseState
signal PlayerBeganDrawingBow
@export var strafing_speed := 35
@export var movement_componenent: MovementComponent
@export var body: CharacterBody2D
var used_item_action: String
var animation_finished := false
var _used_item_action: String
var _animation_finished := false
var _movement_componenent: MovementComponent
func GetStateEnum() -> PlayerStateMachine.States:
return PlayerStateMachine.States.DRAWING_BOW
func Enter(extra_parameters: Dictionary) -> void:
animation_finished = false
used_item_action = extra_parameters.action_name
_animation_finished = false
_used_item_action = extra_parameters.action_name
_movement_componenent = ComponentUtils.GetMovementComponent(body)
PlayerBeganDrawingBow.emit()
func Update(_delta: float) -> void:
if !animation_finished:
if !_animation_finished:
return
if !Input.is_action_pressed(used_item_action):
if !Input.is_action_pressed(_used_item_action):
state_machine.QueueStateChange(PlayerStateMachine.States.FIRING_ARROW)
return
var movement_vector := movement_componenent.movement_vector
var movement_vector := _movement_componenent.movement_vector
if movement_vector != Vector2.ZERO:
body.velocity = movement_vector * strafing_speed
body.move_and_slide()
func OnDrawingBowAnimationFinished() -> void:
animation_finished = true
_animation_finished = true

View File

@@ -1,10 +1,11 @@
extends BaseState
class_name PlayerIdleState
@export var movement_component: MovementComponent
signal PlayerBecameIdle
@export var player: PlayerCharacter
var _movement_component: MovementComponent
var _sit_queued := false
var _sit_queue_pos: Vector2
var _sit_queue_dir: Enums.Directions
@@ -15,6 +16,10 @@ func GetStateEnum() -> PlayerStateMachine.States:
func Enter(_extra_parameters: Dictionary) -> void:
_movement_component = ComponentUtils.GetMovementComponent(player)
if not _movement_component:
print_rich("[color=yellow]Warning: Player does not have a movement component...[/color]")
PlayerBecameIdle.emit()
@@ -30,7 +35,7 @@ func Update(_delta: float) -> void:
_sit_queued = false
return
if movement_component.movement_vector != Vector2.ZERO:
if _movement_component and _movement_component.movement_vector != Vector2.ZERO:
state_machine.QueueStateChange(PlayerStateMachine.States.WALKING)

View File

@@ -3,24 +3,27 @@ extends BaseState
signal StartedWalking
@export var walking_speed := 100
@export var movement_component: MovementComponent
@export var direction_component: FacingDirectionComponent
@export var body: CharacterBody2D
var _movement_component: MovementComponent
func GetStateEnum() -> PlayerStateMachine.States:
return PlayerStateMachine.States.WALKING
func Enter(_extra_parameters: Dictionary) -> void:
_movement_component = ComponentUtils.GetMovementComponent(body)
StartedWalking.emit()
func Update(_delta: float) -> void:
if movement_component.movement_vector == Vector2.ZERO:
var movement_vector := _movement_component.movement_vector
if movement_vector == Vector2.ZERO:
state_machine.QueueStateChange(PlayerStateMachine.States.IDLE)
return
var movement_vector := movement_component.movement_vector
body.velocity = movement_vector * walking_speed
body.move_and_slide()

View File

@@ -3,9 +3,6 @@ class_name MovementComponent
signal MovementInput(movement_vector: Vector2)
# Dynamic Exports
@export var body: CharacterBody2D
var movement_vector: Vector2
func _physics_process(_delta: float) -> void:

View File

@@ -4,7 +4,6 @@
[ext_resource type="PackedScene" uid="uid://c2ydbmmvnfca6" path="res://Entities/Characters/Player/state_machine.tscn" id="1_lyjr2"]
[ext_resource type="Script" uid="uid://dacvayqstkvws" path="res://Entities/Characters/Player/Scripts/player.gd" id="1_qqvsf"]
[ext_resource type="Script" uid="uid://b0l02v61if6k8" path="res://Scripts/Components/facing_direction_component.gd" id="1_siygm"]
[ext_resource type="Script" uid="uid://dwclkwbig1uii" path="res://Entities/Characters/Player/Scripts/movement_component.gd" id="4_apx8m"]
[ext_resource type="Script" uid="uid://dkmc1t43gomdb" path="res://Entities/Characters/Player/Scripts/States/idle_state.gd" id="4_dxcao"]
[ext_resource type="Script" uid="uid://ckn7gmtc23b8l" path="res://Entities/Characters/Player/Scripts/States/using_item_a_state.gd" id="5_1mdwi"]
[ext_resource type="Script" uid="uid://bwmmah30t3m0u" path="res://Entities/Characters/Player/Scripts/States/walking_state.gd" id="5_cscr0"]
@@ -40,24 +39,19 @@ shape = SubResource("RectangleShape2D_apx8m")
[node name="FacingDirectionComponent" type="Node" parent="Components" unique_id=408127032]
script = ExtResource("1_siygm")
[node name="MovementComponent" type="Node" parent="Components" unique_id=1773880772 node_paths=PackedStringArray("body")]
script = ExtResource("4_apx8m")
body = NodePath("../..")
[node name="State Machine" parent="." unique_id=732559774 node_paths=PackedStringArray("states_container", "current_state") instance=ExtResource("1_lyjr2")]
states_container = NodePath("States")
current_state = NodePath("States/Idle State")
[node name="States" type="Node" parent="State Machine" unique_id=1171587216]
[node name="Idle State" type="Node" parent="State Machine/States" unique_id=2017409248 node_paths=PackedStringArray("movement_component", "state_machine")]
[node name="Idle State" type="Node" parent="State Machine/States" unique_id=2017409248 node_paths=PackedStringArray("player", "state_machine")]
script = ExtResource("4_dxcao")
movement_component = NodePath("../../../Components/MovementComponent")
player = NodePath("../../..")
state_machine = NodePath("../..")
[node name="Walking State" type="Node" parent="State Machine/States" unique_id=1661048365 node_paths=PackedStringArray("movement_component", "direction_component", "body", "state_machine")]
[node name="Walking State" type="Node" parent="State Machine/States" unique_id=1661048365 node_paths=PackedStringArray("direction_component", "body", "state_machine")]
script = ExtResource("5_cscr0")
movement_component = NodePath("../../../Components/MovementComponent")
direction_component = NodePath("../../../Components/FacingDirectionComponent")
body = NodePath("../../..")
state_machine = NodePath("../..")
@@ -68,9 +62,8 @@ body = NodePath("../../..")
direction_component = NodePath("../../../Components/FacingDirectionComponent")
state_machine = NodePath("../..")
[node name="Drawing Bow State" type="Node" parent="State Machine/States" unique_id=317681716 node_paths=PackedStringArray("movement_componenent", "body", "state_machine")]
[node name="Drawing Bow State" type="Node" parent="State Machine/States" unique_id=317681716 node_paths=PackedStringArray("body", "state_machine")]
script = ExtResource("7_cscr0")
movement_componenent = NodePath("../../../Components/MovementComponent")
body = NodePath("../../..")
state_machine = NodePath("../..")

View File

@@ -0,0 +1,6 @@
[gd_scene format=3 uid="uid://nbkisxm2oekn"]
[ext_resource type="Script" uid="uid://dwclkwbig1uii" path="res://Entities/Characters/Player/Scripts/movement_component.gd" id="1_b2nib"]
[node name="Movement Component" type="Node" unique_id=737644583]
script = ExtResource("1_b2nib")

View File

@@ -0,0 +1,8 @@
extends Node
# Public Methods
func GetMovementComponent(container: Node) -> MovementComponent:
for node in container.get_children():
if node is MovementComponent:
return node
return null

View File

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

View File

@@ -1,10 +1,14 @@
extends Node
const ERROR_404_MAP = preload("uid://durt8y2ovs6me")
const TITLE_SCREEN = preload("uid://be4nw563yydcr")
const HOME_01 = preload("uid://laxewy7irxno")
const PATH_TO_DUNGEON_01 = preload("uid://b07m0k40dh042")
const SHOP = preload("uid://bwt0ijoq4qmhn")
@onready var mapping := {
Enums.MapIds.ERROR_404: ERROR_404_MAP,
Enums.MapIds.TITLE_SCREEN: TITLE_SCREEN,
Enums.MapIds.SHOP_01: SHOP,
Enums.MapIds.PATH_TO_FOREST_DUNGEON_01: PATH_TO_DUNGEON_01,
Enums.MapIds.PATH_TO_FOREST_HOME_01: HOME_01

View File

@@ -1 +1,3 @@
extends CanvasLayer
const MAP_UI = preload("uid://ce6ix6ca6js5f")

View File

@@ -1,10 +1,26 @@
extends Node2D
#@export var initial_map: PackedScene
#
#@onready var world: Node2D = $World
#
## Called when the node enters the scene tree for the first time.
#func _ready() -> void:
#var map := initial_map.instantiate()
#world.add_child(map)
enum StartOptions {
TitleScreen,
InitialMap
}
@export var starting_scene := StartOptions.TitleScreen
@onready var map_transitioner: Node = $"Map Transitioner"
@onready var map_ui: Control = $"Gui/Map UI"
# Private Methods
func _ready() -> void:
match starting_scene:
StartOptions.TitleScreen:
map_transitioner.call_deferred("InstantiateTitleScreen")
StartOptions.InitialMap:
map_transitioner.call_deferred("InstantiateInitialMap")
func _on_map_changed(map_id: Enums.MapIds) -> void:
if map_id != Enums.MapIds.TITLE_SCREEN:
map_ui.set_deferred("visible", true)
else:
map_ui.set_deferred("visible", false)

View File

@@ -1,22 +1,45 @@
extends Node
signal GameStarted
signal MapChanged(map_id: Enums.MapIds)
@export var initial_map_id: Enums.MapIds
@onready var world: Node2D = $"../World"
# Private Methods
func _ready() -> void:
# Public Methods
func InstantiateTitleScreen() -> void:
var map_scene := MapLoader.GetMap(Enums.MapIds.TITLE_SCREEN)
var map := map_scene.instantiate()
world.add_child(map)
if !map.is_node_ready():
await map.ready
map.connect("GameStarted", _on_title_screen_game_started_clicked)
_connect_loading_zone_transporters()
MapChanged.emit(Enums.MapIds.TITLE_SCREEN)
func InstantiateInitialMap() -> void:
var map_scene := MapLoader.GetMap(initial_map_id)
var map := map_scene.instantiate()
world.add_child(map)
await map.ready
if !map.is_node_ready():
await map.ready
_connect_loading_zone_transporters()
MapChanged.emit(initial_map_id)
# Private Methods
func _on_title_screen_game_started_clicked() -> void:
GameStarted.emit()
_on_map_transition_queued(initial_map_id, "")
func _on_map_transition_queued(map_id: Enums.MapIds, marker_name: String) -> void:
print("Map Transition Queued: %s" % [Enums.MapIds.keys()[map_id]])
var map_scene := MapLoader.GetMap(map_id)

View File

@@ -0,0 +1,6 @@
extends Node
# Public Methods
func OnGameStarted() -> void:
print("Loading from disk")
PersistenceManager.LoadFromDisk(PersistenceManager.DEFAULT_SAVE_FILE_PATH)

View File

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

View File

@@ -5,18 +5,24 @@
[ext_resource type="Script" uid="uid://c4w8hney4mesw" path="res://Main/Scripts/gui.gd" id="3_8gbba"]
[ext_resource type="Script" uid="uid://dr7ljodtof1k5" path="res://Main/Scripts/map_transitioner.gd" id="3_kry3j"]
[ext_resource type="Script" uid="uid://cluyhxrc3pdb" path="res://Scripts/dialogue_trigger_connector.gd" id="4_6bp64"]
[ext_resource type="Script" uid="uid://bkvsdwn7swt1p" path="res://Main/Scripts/persistence_loader.gd" id="4_ib3t1"]
[ext_resource type="PackedScene" uid="uid://cxc4x4yp7l3hg" path="res://UI/dialogue_box.tscn" id="6_21xkr"]
[ext_resource type="PackedScene" uid="uid://ce6ix6ca6js5f" path="res://UI/Screens/map_ui.tscn" id="8_f6fdm"]
[node name="Main" type="Node2D" unique_id=1457826519]
script = ExtResource("1_jjgbg")
[node name="Map Transitioner" type="Node" parent="." unique_id=1528505665]
script = ExtResource("3_kry3j")
initial_map_id = 3
[node name="Dialogue Trigger Connector" type="Node" parent="." unique_id=1187622540 node_paths=PackedStringArray("dialogue_box")]
script = ExtResource("4_6bp64")
dialogue_box = NodePath("../Gui/Dialogue Box")
[node name="Persistence Loader" type="Node" parent="." unique_id=523510879]
script = ExtResource("4_ib3t1")
[node name="World" type="Node2D" parent="." unique_id=578440549]
script = ExtResource("2_bo1nx")
@@ -26,5 +32,10 @@ script = ExtResource("3_8gbba")
[node name="Dialogue Box" parent="Gui" unique_id=586562815 instance=ExtResource("6_21xkr")]
visible = false
[node name="Map UI" parent="Gui" unique_id=98184404 instance=ExtResource("8_f6fdm")]
visible = false
[connection signal="GameStarted" from="Map Transitioner" to="Persistence Loader" method="OnGameStarted"]
[connection signal="MapChanged" from="Map Transitioner" to="." method="_on_map_changed"]
[connection signal="MapChanged" from="Map Transitioner" to="Dialogue Trigger Connector" method="_on_map_changed"]
[connection signal="DialogueTriggered" from="Dialogue Trigger Connector" to="Gui/Dialogue Box" method="OnDialogueTriggered"]

File diff suppressed because one or more lines are too long

View File

@@ -11,6 +11,7 @@
[ext_resource type="PackedScene" uid="uid://b60nr4wfvijpf" path="res://Entities/Map Objects/Dialogue/dialogue_trigger.tscn" id="5_msu6a"]
[ext_resource type="Texture2D" uid="uid://bm5ewxv51potl" path="res://Assets/Spritesheets/NPCs/Miner_Mike.png" id="6_x3y8m"]
[ext_resource type="Texture2D" uid="uid://bqvnkdyhfa1yq" path="res://Maps/Forest Dungeon Entrance/Interiors/Home_01_Overlay_01.png" id="11_6xfm6"]
[ext_resource type="PackedScene" uid="uid://nbkisxm2oekn" path="res://Entities/Characters/Utility/Components/movement_component.tscn" id="11_fqvwb"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7kg22"]
size = Vector2(32, 8)
@@ -125,6 +126,7 @@ position = Vector2(80, 188)
shape = SubResource("RectangleShape2D_7kg22")
[node name="Loading Zone Transporter" parent="Loading Zones/Collision Loading Zone" unique_id=1690817663 instance=ExtResource("3_7kg22")]
destination_map_id = 2
destination_marker_name = "Home 01 Entrance"
[node name="Spawn Markers" type="Node2D" parent="." unique_id=1756787676]
@@ -160,6 +162,8 @@ zoom = Vector2(3, 3)
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("2_lky26")]
position = Vector2(108, 139)
[node name="Movement Component" parent="Player" unique_id=737644583 instance=ExtResource("11_fqvwb")]
[node name="Overlay" type="Sprite2D" parent="." unique_id=455840170]
position = Vector2(124, 217)
scale = Vector2(0.25, 0.25)

View File

@@ -28,6 +28,7 @@
[ext_resource type="PackedScene" uid="uid://cla2d3gii8qda" path="res://Entities/Map Objects/Loading Zone/interactive_loading_zone.tscn" id="20_c5vrl"]
[ext_resource type="PackedScene" uid="uid://b60nr4wfvijpf" path="res://Entities/Map Objects/Dialogue/dialogue_trigger.tscn" id="20_x6da4"]
[ext_resource type="PackedScene" uid="uid://c7rjjlamkqhnw" path="res://Debug/Utility Objects/under_construction_block.tscn" id="26_4lnhp"]
[ext_resource type="PackedScene" uid="uid://nbkisxm2oekn" path="res://Entities/Characters/Utility/Components/movement_component.tscn" id="28_mf3dv"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lwurn"]
size = Vector2(768, 494)
@@ -341,7 +342,7 @@ position = Vector2(-1, -0.5)
shape = SubResource("RectangleShape2D_xrhbk")
[node name="Loading Zone Transporter" parent="Loading Zones/Shop Door" unique_id=1690817663 instance=ExtResource("19_c5vrl")]
destination_map_id = 1
destination_map_id = 3
destination_marker_name = "Entrance"
[node name="Spawn Markers" type="Node2D" parent="." unique_id=1420428815]
@@ -352,6 +353,8 @@ position = Vector2(278, 474)
[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("4_4igim")]
position = Vector2(656, 498)
[node name="Movement Component" parent="Player" unique_id=737644583 instance=ExtResource("28_mf3dv")]
[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1115720225]
position = Vector2(0, 1)
zoom = Vector2(3, 3)

View File

@@ -0,0 +1,7 @@
extends Node2D
signal GameStarted
# Private Methods
func _on_start_game_button_pressed() -> void:
GameStarted.emit()

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -18,4 +18,3 @@ func _ready() -> void:
func _on_chest_opened(chest: BaseChest) -> void:
var node_path := chest.get_path()
PersistenceManager.UpdateData(node_path, true)
PersistenceManager.SaveToDisk()

View File

@@ -37,4 +37,3 @@ func _handle_spike_gate(node_path: NodePath) -> bool:
func _on_spike_gate_opened(node: Node) -> void:
var path := node.get_path()
PersistenceManager.UpdateData(path, true)
PersistenceManager.SaveToDisk()

View File

@@ -1,16 +1,28 @@
extends Node
var _save_dictionary: Dictionary[NodePath, Variant] = {}
const DEFAULT_SAVE_FILE_PATH = "user://savegame.save"
var _save_file_path: String
var _save_dictionary: Dictionary = {}
# Public Methods
func UpdateData(node_path: NodePath, value: Variant) -> void:
_save_dictionary[node_path] = value
func UpdateData(key: String, value: Variant) -> void:
_save_dictionary[key] = value
func GetData(node_path: NodePath) -> Variant:
if not _save_dictionary.has(node_path):
func UpdateNode(node_path: NodePath, value: Variant) -> void:
UpdateData(str(node_path), value)
func GetData(key: String) -> Variant:
if not _save_dictionary.has(key):
return null
return _save_dictionary[node_path]
return _save_dictionary[key]
func GetNode(node_path: NodePath) -> Variant:
var key := str(node_path)
return GetData(key)
func HasData(node_path: NodePath) -> bool:
@@ -18,17 +30,29 @@ func HasData(node_path: NodePath) -> bool:
func SaveToDisk() -> void:
var save_file := FileAccess.open("user://savegame.save", FileAccess.WRITE)
if !_save_file_path:
return
var save_file := FileAccess.open(_save_file_path, FileAccess.WRITE)
var json := JSON.stringify(_save_dictionary)
save_file.store_line(json)
func LoadFromDisk() -> void:
if not FileAccess.file_exists("user://savegame.save"):
func LoadFromDisk(save_file_path: String) -> void:
_save_file_path = save_file_path
if not FileAccess.file_exists(save_file_path):
print_rich("[color=yellow]Save file at path %s does not exist, creating new save file...[/color]" % save_file_path)
return
var save_file = FileAccess.open("user://savegame.save", FileAccess.READ)
var save_file := FileAccess.open(save_file_path, FileAccess.READ)
print("Loading save file from path: %s" % save_file.get_path_absolute())
if save_file.get_position() >= save_file.get_length():
print("Save file was empty...")
return
var line := save_file.get_line()
var json = JSON.new()
var parse_result := json.parse(line)
@@ -36,16 +60,7 @@ func LoadFromDisk() -> void:
print("Parsing result when loading file: [%s] in %s at line %d" % [json.get_error_message(), line, json.get_error_line()])
return
print("JSON data parsed: [%d]" % typeof(json.data))
var data_dict: Dictionary = json.data
var node_dict: Dictionary[NodePath, Variant]
for key in data_dict:
var value: Variant = data_dict[key]
var node_path := NodePath(key)
node_dict[node_path] = value
_save_dictionary = node_dict
# Private Methods
func _ready() -> void:
LoadFromDisk()
_save_dictionary = data_dict

View File

@@ -782,6 +782,72 @@ texture = ExtResource("8_8d5h8")
1:1/animation_frame_6/duration = 0.3
1:1/animation_frame_7/duration = 0.3
1:1/0 = 0
0:3/animation_columns = 8
0:3/animation_separation = Vector2i(2, 0)
0:3/animation_frame_0/duration = 0.3
0:3/animation_frame_1/duration = 0.3
0:3/animation_frame_2/duration = 0.3
0:3/animation_frame_3/duration = 0.3
0:3/animation_frame_4/duration = 0.3
0:3/animation_frame_5/duration = 0.3
0:3/animation_frame_6/duration = 0.3
0:3/animation_frame_7/duration = 0.3
0:3/0 = 0
0:4/animation_columns = 8
0:4/animation_separation = Vector2i(2, 0)
0:4/animation_frame_0/duration = 0.3
0:4/animation_frame_1/duration = 0.3
0:4/animation_frame_2/duration = 0.3
0:4/animation_frame_3/duration = 0.3
0:4/animation_frame_4/duration = 0.3
0:4/animation_frame_5/duration = 0.3
0:4/animation_frame_6/duration = 0.3
0:4/animation_frame_7/duration = 0.3
0:4/0 = 0
1:4/animation_columns = 8
1:4/animation_separation = Vector2i(2, 0)
1:4/animation_frame_0/duration = 0.3
1:4/animation_frame_1/duration = 0.3
1:4/animation_frame_2/duration = 0.3
1:4/animation_frame_3/duration = 0.3
1:4/animation_frame_4/duration = 0.3
1:4/animation_frame_5/duration = 0.3
1:4/animation_frame_6/duration = 0.3
1:4/animation_frame_7/duration = 0.3
1:4/0 = 0
1:3/animation_columns = 8
1:3/animation_separation = Vector2i(2, 0)
1:3/animation_frame_0/duration = 0.3
1:3/animation_frame_1/duration = 0.3
1:3/animation_frame_2/duration = 0.3
1:3/animation_frame_3/duration = 0.3
1:3/animation_frame_4/duration = 0.3
1:3/animation_frame_5/duration = 0.3
1:3/animation_frame_6/duration = 0.3
1:3/animation_frame_7/duration = 0.3
1:3/0 = 0
2:3/animation_columns = 8
2:3/animation_separation = Vector2i(2, 0)
2:3/animation_frame_0/duration = 0.3
2:3/animation_frame_1/duration = 0.3
2:3/animation_frame_2/duration = 0.3
2:3/animation_frame_3/duration = 0.3
2:3/animation_frame_4/duration = 0.3
2:3/animation_frame_5/duration = 0.3
2:3/animation_frame_6/duration = 0.3
2:3/animation_frame_7/duration = 0.3
2:3/0 = 0
2:4/animation_columns = 8
2:4/animation_separation = Vector2i(2, 0)
2:4/animation_frame_0/duration = 0.3
2:4/animation_frame_1/duration = 0.3
2:4/animation_frame_2/duration = 0.3
2:4/animation_frame_3/duration = 0.3
2:4/animation_frame_4/duration = 0.3
2:4/animation_frame_5/duration = 0.3
2:4/animation_frame_6/duration = 0.3
2:4/animation_frame_7/duration = 0.3
2:4/0 = 0
[resource]
physics_layer_0/collision_layer = 1

View File

@@ -17,6 +17,8 @@ enum Items {
}
enum MapIds {
ERROR_404,
TITLE_SCREEN,
PATH_TO_FOREST_DUNGEON_01,
PATH_TO_FOREST_HOME_01,
SHOP_01

View File

@@ -0,0 +1,5 @@
extends Control
# Private Methods
func _on_save_button_pressed() -> void:
PersistenceManager.SaveToDisk()

View File

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

33
UI/Screens/map_ui.tscn Normal file
View File

@@ -0,0 +1,33 @@
[gd_scene format=3 uid="uid://ce6ix6ca6js5f"]
[ext_resource type="Texture2D" uid="uid://bo1utikr0r2q1" path="res://Assets/Spritesheets/Icons/UI/64x64.png" id="1_j6kbw"]
[ext_resource type="Script" uid="uid://dudh233xe7s0b" path="res://UI/Screens/Scripts/map_ui.gd" id="1_xiqit"]
[sub_resource type="AtlasTexture" id="AtlasTexture_xiqit"]
atlas = ExtResource("1_j6kbw")
region = Rect2(576, 0, 64, 64)
[node name="Map UI" type="Control" unique_id=98184404]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_xiqit")
[node name="Save Button" type="Button" parent="." unique_id=241739999]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -112.0
offset_top = -72.0
grow_horizontal = 0
grow_vertical = 0
text = "Save"
icon = SubResource("AtlasTexture_xiqit")
[connection signal="pressed" from="Save Button" to="." method="_on_save_button_pressed"]

View File

@@ -24,6 +24,7 @@ GroupUtils="*uid://bk7o4drbfh24p"
MapLoader="*uid://c4jogxtdi3m13"
InputManager="*uid://dnbg1dpjcq6vk"
PersistenceManager="*uid://dl2kg1qu0ymi7"
ComponentUtils="*uid://cf5j2r4gpceng"
[dotnet]