This commit is contained in:
Andriy Yednarovych
2026-02-22 19:26:26 +01:00
parent fd1ff19c4c
commit e877c5f058
211 changed files with 9385 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
extends Node
signal level_load_started
signal level_loaded
signal Tilemap_boudns_change(bounds: Array[Vector2])
var current_tilemap_bounds: Array[Vector2]
var target_transition: String
var position_offset: Vector2
func _ready() -> void:
await get_tree().process_frame
level_loaded.emit()
func change_tilemap_bounds(bounds: Array[Vector2]) -> void:
current_tilemap_bounds = bounds
Tilemap_boudns_change.emit(bounds)
func load_new_level(
level_path: String,
new_target_transition: String,
new_position_offset: Vector2
) -> void:
get_tree().paused = true
target_transition = new_target_transition
position_offset = new_position_offset
var tree = get_tree()
await SceneTransition.fade_out()
level_load_started.emit()
await SceneTransition.fade_in()
tree.change_scene_to_file(level_path)
await tree.process_frame
tree.paused = false
await tree.process_frame
level_loaded.emit()

View File

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

View File

@@ -0,0 +1,35 @@
extends Node
const PLAYER = preload("res://player/player.tscn")
const INVENTORY_DATA: InventoryData = preload("res://gui/pause/inventory/player_inventory.tres")
signal interact_pressed
var player: Player
var player_spawned: bool = false
func _ready() -> void:
add_player_instance()
await get_tree().create_timer(0.2).timeout
player_spawned = true
func add_player_instance() -> void:
player = PLAYER.instantiate()
add_child(player)
func set_player_position(new_pos: Vector2) -> void:
player.global_position = new_pos
func set_as_parent(node: Node2D) -> void:
var players_parent = player.get_parent()
if players_parent:
players_parent.remove_child(player)
node.add_child(player)
func unparent_player(node: Node2D) -> void:
node.remove_child(player)
func set_health(hp: int, max_hp: int) -> void:
PlayerManager.player.maxHp = max_hp
PlayerManager.player.hp = hp
PlayerManager.player.update_hp(0)

View File

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

View File

@@ -0,0 +1,74 @@
extends Node
const SAVE_PATH := "user://"
signal game_loaded
signal game_saved
var current_save := {
scene_path = "",
player = {
hp = 1,
max_hp = 1,
pos_x = 0,
pos_y = 0
},
items = [],
persistence = [],
quests = [],
}
func save_game() -> void:
update_player_data()
update_scene_path()
update_item_data()
write_save(JSON.stringify(current_save))
game_saved.emit()
func load_game() -> void:
current_save = read_save()
LevelManager.load_new_level(current_save.scene_path, "", Vector2.ZERO)
await LevelManager.level_load_started
PlayerManager.set_player_position(Vector2(current_save.player.pos_x, current_save.player.pos_y))
PlayerManager.set_health(current_save.player.hp, current_save.player.max_hp)
PlayerManager.INVENTORY_DATA.load_save_date(current_save.items)
await LevelManager.level_loaded
game_loaded.emit()
func update_player_data() -> void:
var player := PlayerManager.player
current_save.player.hp = player.hp
current_save.player.max_hp = player.maxHp
current_save.player.pos_x = player.global_position.x
current_save.player.pos_y = player.global_position.y
func update_scene_path() -> void:
var path := ""
for child in get_tree().root.get_children():
if child is Level:
path = child.scene_file_path
current_save.scene_path = path
func write_save(content: String) -> void:
var file := FileAccess.open(SAVE_PATH + "save.sav", FileAccess.WRITE)
file.store_line(content)
func read_save() -> Dictionary:
var file := FileAccess.open(SAVE_PATH + "save.sav", FileAccess.READ)
var json = JSON.new()
json.parse(file.get_line())
return json.get_data() as Dictionary
func update_item_data() -> void:
current_save.items = PlayerManager.INVENTORY_DATA.get_save_data()
func add_persistent_value(value: String) -> void:
if check_persistent_value(value):
return
current_save.persistence.append(value)
func check_persistent_value(value: String) -> bool:
var persistent_data := current_save.persistence as Array
return persistent_data.has(value)

View File

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