fix store references

This commit is contained in:
Nitwel 2024-04-09 17:46:59 +02:00
parent b716f950bc
commit 2cb35ef02b
11 changed files with 53 additions and 45 deletions

View File

@ -23,7 +23,7 @@ static func bind(target, prop, value, arg1=null, arg2=null):
if value is RdotState or value is RdotComputed: if value is RdotState or value is RdotComputed:
return _bind_state(target, prop, value, arg1) return _bind_state(target, prop, value, arg1)
assert(false, "Invalid arguments to bind, value must be a R.State or a RdotStore") assert(false, "Invalid arguments to bind, value must be a RdotState, a RdotComputed or a RdotStore")
static func _bind_store(target, prop, store: RdotStore, key, watch_signal=null): static func _bind_store(target, prop, store: RdotStore, key, watch_signal=null):
store._access_property(key) store._access_property(key)

View File

@ -22,7 +22,7 @@ func _ready():
else: else:
RenderingServer.set_debug_generate_wireframes(true) RenderingServer.set_debug_generate_wireframes(true)
update_voice_assistant() create_voice_assistant()
controller_left.button_pressed.connect(func(name): controller_left.button_pressed.connect(func(name):
_emit_action(name, true, false) _emit_action(name, true, false)
@ -65,16 +65,20 @@ func _ready():
remove_child(keyboard) remove_child(keyboard)
) )
func update_voice_assistant(): func create_voice_assistant():
if Store.settings.is_loaded() == false: if Store.settings.is_loaded() == false:
await Store.settings.on_loaded await Store.settings.on_loaded
if Store.settings.voice_assistant&&voice_assistant == null: var settings_store = Store.settings.state
voice_assistant = VoiceAssistant.instantiate()
add_child(voice_assistant) R.effect(func(_arg):
elif !Store.settings.voice_assistant&&voice_assistant != null: if settings_store.voice_assistant == true&&voice_assistant == null:
remove_child(voice_assistant) voice_assistant=VoiceAssistant.instantiate()
voice_assistant.queue_free() add_child(voice_assistant)
elif settings_store.voice_assistant == false&&voice_assistant != null:
remove_child(voice_assistant)
voice_assistant.queue_free()
)
func toggle_menu(): func toggle_menu():
if menu.show_menu == false: if menu.show_menu == false:

View File

@ -48,8 +48,8 @@ func get_new_transform():
return marker.global_transform return marker.global_transform
func update_align_reference(): func update_align_reference():
corner1.global_position = Store.house.align_position1 corner1.global_position = Store.house.state.align_position1
corner2.global_position = Store.house.align_position2 corner2.global_position = Store.house.state.align_position2
corner2.look_at(corner1.global_position, Vector3.UP) corner2.look_at(corner1.global_position, Vector3.UP)
corner2.rotate(Vector3.UP, deg_to_rad( - 90)) corner2.rotate(Vector3.UP, deg_to_rad( - 90))
@ -57,5 +57,5 @@ func update_align_reference():
edge.align_to_corners(corner1.global_position, corner2.global_position) edge.align_to_corners(corner1.global_position, corner2.global_position)
func update_store(): func update_store():
Store.house.align_position1 = corner1.global_position Store.house.state.align_position1 = corner1.global_position
Store.house.align_position2 = corner2.global_position Store.house.state.align_position2 = corner2.global_position

View File

@ -23,18 +23,18 @@ func update_house():
align_reference.update_align_reference() align_reference.update_align_reference()
for index in range(Store.house.rooms.size() - 1, -1, -1): for index in range(Store.house.state.rooms.size() - 1, -1, -1):
var new_room = Store.house.rooms[index] var new_room = Store.house.state.rooms[index]
if new_room.corners.size() == 0: if new_room.corners.size() == 0:
Store.house.rooms.remove_at(index) Store.house.state.rooms.remove_at(index)
Store.house.save_local() Store.house.save_local()
continue continue
create_room(new_room.name, 0) create_room(new_room.name, 0)
for entity_index in range(Store.house.entities.size()): for entity_index in range(Store.house.state.entities.size()):
var entity = Store.house.entities[entity_index] var entity = Store.house.state.entities[entity_index]
var entity_instance = create_entity_in(entity.id, entity.room) var entity_instance = create_entity_in(entity.id, entity.room)
@ -48,7 +48,7 @@ func create_room(room_name: String, level: int) -> RoomType:
var existing_room = Store.house.get_room(room_name) var existing_room = Store.house.get_room(room_name)
if existing_room == null: if existing_room == null:
Store.house.rooms.append({ Store.house.state.rooms.append({
"name": room_name, "name": room_name,
"height": 2.0, "height": 2.0,
"corners": [], "corners": [],
@ -98,7 +98,7 @@ func delete_room(room_name):
var store_room = Store.house.get_room(room_name) var store_room = Store.house.get_room(room_name)
if store_room != null: if store_room != null:
Store.house.rooms.erase(store_room) Store.house.state.rooms.erase(store_room)
Store.house.save_local() Store.house.save_local()
@ -229,7 +229,7 @@ func save_reference():
Store.house.save_local() Store.house.save_local()
func save_all_entities(): func save_all_entities():
Store.house.entities.clear() Store.house.state.entities.clear()
for room in get_rooms(0): for room in get_rooms(0):
for entity in room.get_node("Entities").get_children(): for entity in room.get_node("Entities").get_children():
@ -240,6 +240,6 @@ func save_all_entities():
"room": String(room.name) "room": String(room.name)
} }
Store.house.entities.append(entity_data) Store.house.state.entities.append(entity_data)
Store.house.save_local() Store.house.save_local()

View File

@ -22,10 +22,10 @@ func _ready():
if Store.house.is_loaded() == false: if Store.house.is_loaded() == false:
await Store.house.on_loaded await Store.house.on_loaded
if Store.house.rooms.size() == 0: if Store.house.state.rooms.size() == 0:
return return
var room = Store.house.rooms[0] var room = Store.house.state.rooms[0]
var corners = room.corners var corners = room.corners
var height = room.height var height = room.height

View File

@ -102,7 +102,7 @@ func _on_click(event: EventPointer):
selected_room = room_name selected_room = room_name
func _generate_room_map(): func _generate_room_map():
var rooms = Store.house.rooms var rooms = Store.house.state.rooms
var target_size = Vector2(0.2, 0.24) var target_size = Vector2(0.2, 0.24)
var target_offset = Vector2(0, 0.05) var target_offset = Vector2(0, 0.05)

View File

@ -3,7 +3,6 @@ extends Node3D
const credits_scene = preload ("./credits.tscn") const credits_scene = preload ("./credits.tscn")
@onready var connection_status = $Content/ConnectionStatus @onready var connection_status = $Content/ConnectionStatus
@onready var main = $"/root/Main"
@onready var input_url = $Content/InputURL @onready var input_url = $Content/InputURL
@onready var input_token = $Content/InputToken @onready var input_token = $Content/InputToken
@ -15,6 +14,8 @@ const credits_scene = preload ("./credits.tscn")
@onready var voice_assist = $Content/VoiceAssist @onready var voice_assist = $Content/VoiceAssist
func _ready(): func _ready():
var settings_store = Store.settings.state
background.visible = false background.visible = false
credits.on_click.connect(func(_event): credits.on_click.connect(func(_event):
@ -25,12 +26,12 @@ func _ready():
) )
if Store.settings.is_loaded(): if Store.settings.is_loaded():
input_url.text = Store.settings.url input_url.text = settings_store.url
input_token.text = Store.settings.token input_token.text = settings_store.token
else: else:
Store.settings.on_loaded.connect(func(): Store.settings.on_loaded.connect(func():
input_url.text=Store.settings.url input_url.text=settings_store.url
input_token.text=Store.settings.token input_token.text=settings_store.token
) )
button_connect.on_button_down.connect(func(): button_connect.on_button_down.connect(func():
@ -39,8 +40,8 @@ func _ready():
HomeApi.start_adapter("hass_ws", url, token) HomeApi.start_adapter("hass_ws", url, token)
Store.settings.url=url settings_store.url=url
Store.settings.token=token settings_store.token=token
Store.settings.save_local() Store.settings.save_local()
) )
@ -63,8 +64,7 @@ func _ready():
voice_assist.label="mic" voice_assist.label="mic"
Store.settings.voice_assistant=true settings_store.voice_assistant=true
main.update_voice_assistant()
Store.settings.save_local() Store.settings.save_local()
) )
@ -74,8 +74,7 @@ func _ready():
voice_assist.label="mic_off" voice_assist.label="mic_off"
Store.settings.voice_assistant=false settings_store.voice_assistant=false
main.update_voice_assistant()
Store.settings.save_local() Store.settings.save_local()
) )
@ -91,5 +90,9 @@ func _ready():
if Store.settings.is_loaded() == false: if Store.settings.is_loaded() == false:
await Store.settings.on_loaded await Store.settings.on_loaded
voice_assist.label = "mic_off" if Store.settings.voice_assistant == false else "mic" var button_label = R.computed(func(_arg):
voice_assist.active = Store.settings.voice_assistant return "mic_off" if settings_store.voice_assistant == false else "mic"
)
R.bind(voice_assist, "label", button_label)
R.bind(voice_assist, "active", settings_store, "voice_assistant")

View File

@ -9,7 +9,7 @@ func _ready():
if Store.settings.is_loaded() == false: if Store.settings.is_loaded() == false:
await Store.settings.on_loaded await Store.settings.on_loaded
if (Store.settings.url != ""&&Store.settings.url != null)||Store.settings.onboarding_complete: if (Store.settings.state.url != ""&&Store.settings.state.url != null)||Store.settings.state.onboarding_complete:
close() close()
return return
@ -24,7 +24,7 @@ func _ready():
EventSystem.on_slow_tick.connect(_slow_tick) EventSystem.on_slow_tick.connect(_slow_tick)
func close(): func close():
Store.settings.onboarding_complete = true Store.settings.state.onboarding_complete = true
Store.settings.save_local() Store.settings.save_local()
queue_free() queue_free()

View File

@ -33,7 +33,8 @@ func _ready():
var success = Store.settings.load_local() var success = Store.settings.load_local()
if success: if success:
start_adapter(Store.settings.type.to_lower(), Store.settings.url, Store.settings.token) print(Store.settings)
start_adapter(Store.settings.state.type.to_lower(), Store.settings.state.url, Store.settings.state.token)
## Starts the adapter for the given type and url ## Starts the adapter for the given type and url
func start_adapter(type: String, url: String, token: String): func start_adapter(type: String, url: String, token: String):

View File

@ -22,4 +22,4 @@ func clear():
self.state.url = "" self.state.url = ""
self.state.token = "" self.state.token = ""
self.state.voice_assistant = false self.state.voice_assistant = false
self.state.onboarding_complete = false self.state.onboarding_complete = false

View File

@ -24,7 +24,7 @@ func clear():
func sanitizeState(dict=state): func sanitizeState(dict=state):
var data = {} var data = {}
for prop_info in get_property_list(): for prop_info in state.get_property_list():
var key = prop_info.name var key = prop_info.name
if key.begins_with("_")||(prop_info.has("hint_string")&&prop_info.hint_string != ""): if key.begins_with("_")||(prop_info.has("hint_string")&&prop_info.hint_string != ""):
@ -38,12 +38,12 @@ func sanitizeState(dict=state):
return data return data
func use_dict(dict: Dictionary, target=state): func use_dict(dict: Dictionary, target=state):
for prop_info in get_property_list(): for prop_info in state.get_property_list():
var key = prop_info.name var key = prop_info.name
if key.begins_with("_")||(prop_info.has("hint_string")&&prop_info.hint_string != ""): if key.begins_with("_")||(prop_info.has("hint_string")&&prop_info.hint_string != ""):
continue continue
if dict.has(key) == false: if dict.has(key) == false:
continue continue