init
This commit is contained in:
34
globals/global_level_manager.gd
Normal file
34
globals/global_level_manager.gd
Normal 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()
|
||||
1
globals/global_level_manager.gd.uid
Normal file
1
globals/global_level_manager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d1yritt1yngf1
|
||||
35
globals/global_player_manager.gd
Normal file
35
globals/global_player_manager.gd
Normal 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)
|
||||
1
globals/global_player_manager.gd.uid
Normal file
1
globals/global_player_manager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dcqwe4meucgrn
|
||||
74
globals/global_save_manager.gd
Normal file
74
globals/global_save_manager.gd
Normal 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)
|
||||
1
globals/global_save_manager.gd.uid
Normal file
1
globals/global_save_manager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c547xrdujao7w
|
||||
Reference in New Issue
Block a user