Implement save and loading games (#8)

This commit is contained in:
Julian Murgia
2021-07-02 23:08:43 +02:00
committed by GitHub
parent 58d880101d
commit bd4c33cf77
66 changed files with 1268 additions and 736 deletions

View File

@@ -4,26 +4,26 @@ extends ESCGame
"""
Implement methods to react to inputs.
- left_click_on_bg(position : Vector2)
- right_click_on_bg(position : Vector2)
- left_double_click_on_bg(position : Vector2)
- left_click_on_bg(position: Vector2)
- right_click_on_bg(position: Vector2)
- left_double_click_on_bg(position: Vector2)
- element_focused(element_id : String)
- element_focused(element_id: String)
- element_unfocused()
- left_click_on_item(item_global_id : String, event : InputEvent)
- right_click_on_item(item_global_id : String, event : InputEvent)
- left_double_click_on_item(item_global_id : String, event : InputEvent)
- left_click_on_item(item_global_id: String, event: InputEvent)
- right_click_on_item(item_global_id: String, event: InputEvent)
- left_double_click_on_item(item_global_id: String, event: InputEvent)
- left_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent)
- right_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent)
- left_double_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent)
- inventory_item_focused(inventory_item_global_id : String)
- left_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent)
- right_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent)
- left_double_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent)
- inventory_item_focused(inventory_item_global_id: String)
- inventory_item_unfocused()
- open_inventory()
- close_inventory()
- mousewheel_action(direction : int)
- mousewheel_action(direction: int)
- hide_ui()
- show_ui()
@@ -37,24 +37,24 @@ func _ready():
## BACKGROUND ##
func left_click_on_bg(position : Vector2) -> void:
func left_click_on_bg(position: Vector2) -> void:
escoria.do("walk", ["player", position])
$ui/verbs_layer/verbs_menu.set_by_name("walk")
$ui/verbs_layer/verbs_menu.clear_tool_texture()
func right_click_on_bg(position : Vector2) -> void:
func right_click_on_bg(position: Vector2) -> void:
escoria.do("walk", ["player", position])
$ui/verbs_layer/verbs_menu.set_by_name("walk")
$ui/verbs_layer/verbs_menu.clear_tool_texture()
func left_double_click_on_bg(position : Vector2) -> void:
func left_double_click_on_bg(position: Vector2) -> void:
escoria.do("walk", ["player", position, true])
$ui/verbs_layer/verbs_menu.set_by_name("walk")
$ui/verbs_layer/verbs_menu.clear_tool_texture()
## ITEM/HOTSPOT FOCUS ##
func element_focused(element_id : String) -> void:
func element_focused(element_id: String) -> void:
var target_obj = escoria.object_manager.get_object(element_id).node
$ui/tooltip_layer/tooltip.set_target(target_obj.tooltip_name)
@@ -69,42 +69,49 @@ func element_unfocused() -> void:
## ITEMS ##
func left_click_on_item(item_global_id : String, event : InputEvent) -> void:
func left_click_on_item(item_global_id: String, event: InputEvent) -> void:
escoria.do("item_left_click", [item_global_id, event])
func right_click_on_item(item_global_id : String, event : InputEvent) -> void:
func right_click_on_item(item_global_id: String, event: InputEvent) -> void:
escoria.do("item_right_click", [item_global_id, event])
func left_double_click_on_item(item_global_id : String, event : InputEvent) -> void:
func left_double_click_on_item(item_global_id: String, event: InputEvent) -> void:
escoria.do("item_left_click", [item_global_id, event])
## INVENTORY ##
func left_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
func left_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent) -> void:
escoria.do("item_left_click", [inventory_item_global_id, event])
if escoria.action_manager.current_action == "use":
var item = escoria.object_manager.get_object(
inventory_item_global_id
).node
if item.get_node("sprite").texture:
$ui/verbs_layer/verbs_menu.set_tool_texture(item.get_node("sprite").texture)
$ui/verbs_layer/verbs_menu.set_tool_texture(
item.get_node("sprite").texture
)
elif item.inventory_item.texture_normal:
$ui/verbs_layer/verbs_menu.set_tool_texture(item.inventory_item.texture_normal)
$ui/verbs_layer/verbs_menu.set_tool_texture(
item.inventory_item.texture_normal
)
func right_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
func right_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent) -> void:
escoria.do("item_right_click", [inventory_item_global_id, event])
func left_double_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
func left_double_click_on_inventory_item(inventory_item_global_id: String, event: InputEvent) -> void:
pass
func inventory_item_focused(inventory_item_global_id : String) -> void:
func inventory_item_focused(inventory_item_global_id: String) -> void:
$ui/tooltip_layer/tooltip.set_target(
escoria.object_manager.get_object(
inventory_item_global_id
).node.tooltip_name
)
func inventory_item_unfocused() -> void:
$ui/tooltip_layer/tooltip.set_target("")
@@ -116,7 +123,7 @@ func open_inventory():
func close_inventory():
$ui/inventory_layer/inventory_ui/inventory_button.close_inventory()
func mousewheel_action(direction : int):
func mousewheel_action(direction: int):
$ui/verbs_layer/verbs_menu.iterate_actions_cursor(direction)
func hide_ui():

View File

@@ -1,6 +1,6 @@
extends Control
var showed : bool = false
var showed: bool = false
func _ready():
pass

View File

@@ -5,8 +5,8 @@ This script is totally user-defined. It does exactly what the user wants the
inventory to look like. It only requires 4 functions to be defined:
- is_empty() -> bool
- get_items() -> Array
- add_item(inventory_item : ESCInventoryItem)
- remove_item(inventory_item : ESCInventoryItem)
- add_item(inventory_item: ESCInventoryItem)
- remove_item(inventory_item: ESCInventoryItem)
The user is free to implement these methods the way s-he likes.
"""
@@ -18,7 +18,7 @@ func is_empty() -> bool:
func get_items() -> Array:
return current_nodes_in_container.keys()
func add_item(inventory_item : ESCInventoryItem):
func add_item(inventory_item: ESCInventoryItem):
var center_container = CenterContainer.new()
center_container.size_flags_horizontal = SIZE_EXPAND_FILL
center_container.connect("mouse_entered", inventory_item, "_on_inventory_item_mouse_enter")
@@ -27,7 +27,7 @@ func add_item(inventory_item : ESCInventoryItem):
add_child(center_container)
current_nodes_in_container[inventory_item] = center_container
func remove_item(inventory_item : ESCInventoryItem):
func remove_item(inventory_item: ESCInventoryItem):
var node_to_remove = current_nodes_in_container[inventory_item]
current_nodes_in_container.erase(node_to_remove)
node_to_remove.disconnect("mouse_entered", inventory_item, "_on_inventory_item_mouse_enter")

View File

@@ -2,8 +2,8 @@ tool
extends Control
var current_cursor_id : int = 0
onready var cursors : Array = $actions.get_children()
var current_cursor_id: int = 0
onready var cursors: Array = $actions.get_children()
"""
@@ -24,7 +24,7 @@ func _process(delta):
$mouse_position.rect_global_position = get_global_mouse_position()
func iterate_actions_cursor(direction : int):
func iterate_actions_cursor(direction: int):
current_cursor_id += direction
if current_cursor_id > cursors.size() - 1:
current_cursor_id = 0
@@ -36,7 +36,7 @@ func iterate_actions_cursor(direction : int):
if $mouse_position/tool.texture != null:
clear_tool_texture()
func set_by_name(name : String) -> void:
func set_by_name(name: String) -> void:
for i in cursors.size():
if cursors[i].name == name:
current_cursor_id = i
@@ -45,7 +45,7 @@ func set_by_name(name : String) -> void:
Input.set_custom_mouse_cursor(cursors[current_cursor_id].texture)
escoria.action_manager.set_current_action(cursors[current_cursor_id].name)
func set_tool_texture(texture : Texture):
func set_tool_texture(texture: Texture):
set_process(true)
$mouse_position/tool.texture = texture