Picked observer, global observer

This commit is contained in:
2025-09-14 04:44:12 +02:00
parent 5e1d88c333
commit f41fc361b8
28 changed files with 183 additions and 103 deletions

View File

@@ -4,6 +4,8 @@ var item_count_manager: ESCItemCountManager
var tooltip_manager: ESCTootltipManager
var global_observer: RTMIGlobalObserver
var cursor_manager: RTMICursorManager = RTMICursorManager.new()
var csv_parser: RTMICsvParser = RTMICsvParser.new()

View File

@@ -42,7 +42,6 @@ func register_components():
func autoload_components():
add_child(ESCItemComponentOutline.new())
add_child(ESCItemComponentInventoryChecker.new())
func set_custom_data(data: Dictionary) -> void:

View File

@@ -86,8 +86,9 @@ var last_target: Object
@export var dev_tools_node: Control
func _init():
gymkhana.tooltip_manager = ESCTootltipManager.new()
gymkhana.item_count_manager = ESCItemCountManager.new()
gymkhana.tooltip_manager = ESCTootltipManager.new()
gymkhana.global_observer = RTMIGlobalObserver.new()
escoria.di = RTMIDependencyInjector.new()
func _ready():

View File

@@ -37,4 +37,4 @@ func _process(delta: float) -> void:
get_parent().visible = output_value
elif targeted_property == TargetProperty.interactive:
escoria.object_manager.get_object(get_global_id()).active = output_value
escoria.object_manager.get_object(get_global_id()).interactive = output_value

View File

@@ -0,0 +1,25 @@
extends ESCItemComponent
class_name ESCItemComponentPickedObserver
func get_component_type():
return "picked-observer"
func _process(delta: float) -> void:
if "globals_manager" not in escoria:
return
var object = escoria.object_manager.get_object(get_global_id())
if object == null:
return
var is_picked = escoria.globals_manager.get_global(get_global_id() + RTMIGlobalObserver.PICKED_SUFFIX )
if is_picked == null or !is_picked:
return
escoria.object_manager.get_object(get_global_id()).active = false

View File

@@ -0,0 +1,21 @@
extends Resource
class_name RTMIGlobalObserver
const PICKED_SUFFIX = "_picked"
func _init() -> void:
escoria.globals_manager.global_changed.connect(_on_escoria_global_changed)
func _on_escoria_global_changed(global: String, old_value, new_value) -> void:
if !global.begins_with("i/"):
return
var item = global.rsplit("i/", false)
if item.size() != 1:
return
if !new_value:
return
escoria.globals_manager.set_global("%s%s" % [item.get(0),PICKED_SUFFIX], true)

View File

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