From 320c3d8932358710a501bf0127ce931d9a2f4424 Mon Sep 17 00:00:00 2001 From: betalars Date: Sun, 23 Mar 2025 14:32:24 +0100 Subject: [PATCH] misc --- .../youth_room/Collectable.gd | 22 +++++++++++-------- .../youth_room/room_handle.gd | 20 +++++++++-------- src/dev-util/click-trough-area.gd | 16 ++++++++++++-- src/dev-util/savegame.gd | 2 +- src/main.gd | 9 +++++--- 5 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/base-environments/youth_room/Collectable.gd b/src/base-environments/youth_room/Collectable.gd index a623647..b20db10 100644 --- a/src/base-environments/youth_room/Collectable.gd +++ b/src/base-environments/youth_room/Collectable.gd @@ -1,17 +1,18 @@ class_name InteractiveSprite extends Area3D -@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui +@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/CollectableUi @onready var wrapper = $UiWrapper -@onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0) +@onready var ui: CollectableUi = $UiWrapper/UiSprite/SubViewport.get_child(0) +@onready var viewport:= $UiWrapper/UiSprite/SubViewport var revealed: bool = false: set(reveal): revealed = reveal if reveal: wrapper.show() - ui.show() + ui.reveal() else: - ui.hide() + ui.vanish() await get_tree().create_timer(1).timeout wrapper.hide() @@ -19,26 +20,29 @@ var has_mouse: bool = false # Called when the node enters the scene tree for the first time. func _ready(): - connect("mouse_entered", Callable(self, "_on_mouse_entered")) + mouse_entered.connect(_on_mouse_entered) func _on_mouse_entered(): if not State.focus_locked: input_ray_pickable = false - ui.collapsed = false + ui.is_collapsed = false has_mouse = true func _on_mouse_exited(): - print("mouse_exited") input_ray_pickable = true - ui.collapsed = true + ui.is_collapsed = true has_mouse = false func reveal(): revealed = true - await get_tree().create_timer(5).timeout + # TODO: needs to check if it has mouse or player collider! + await get_tree().create_timer(10.0).timeout if not has_mouse: revealed = false func collapse(): _on_mouse_exited() revealed = false + +func handle(event: InputEvent): + viewport.push_input(event) diff --git a/src/base-environments/youth_room/room_handle.gd b/src/base-environments/youth_room/room_handle.gd index c976572..319bfaf 100644 --- a/src/base-environments/youth_room/room_handle.gd +++ b/src/base-environments/youth_room/room_handle.gd @@ -2,10 +2,10 @@ extends RoomTemplate signal ini_room -@onready var mask_memento: Collectable_Ui = %MaskMemento.ui -@onready var clothes_memento: Collectable_Ui = %ClothesMemento.ui -@onready var comic_memento: Collectable_Ui = %ComicMemento.ui -@onready var ceiling_memento: Collectable_Ui = %CeilingMemento.ui +@onready var mask_memento: CollectableUi = %MaskMemento.ui +@onready var clothes_memento: CollectableUi = %ClothesMemento.ui +@onready var comic_memento: CollectableUi = %ComicMemento.ui +@onready var ceiling_memento: CollectableUi = %CeilingMemento.ui @onready var board_trigger: InteractiveSprite = %MindBoard @onready var door_trigger: InteractiveSprite = %DoorTrigger @onready var card_board: CardBoard = %Board @@ -13,12 +13,12 @@ signal ini_room func start_room(): save_game = State.active_save_game - + ##TODO: make sure this is done automagically! # Setting Memento user interface elemnts as collected based on the savegame. - mask_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_CHILDHOOD > 0 - clothes_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_JUI_JUTSU > 0 - comic_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_VOICE_TRAINING > 0 - ceiling_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_DRAEVEN > 0 + #mask_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_CHILDHOOD > 0 + #clothes_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_JUI_JUTSU > 0 + #comic_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_VOICE_TRAINING > 0 + #ceiling_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_DRAEVEN > 0 $logic/PlayerController.process_mode = Node.PROCESS_MODE_INHERIT ini_room.emit() @@ -45,6 +45,8 @@ func pull_save_state(save: SaveGame) -> void: save.board_state = card_board.get_save_dict() func _on_scene_finished(id: int, _repeat:bool): + # need to properly implement saving and loading + return save_game.mementos_complete &= 1 << id save_room() diff --git a/src/dev-util/click-trough-area.gd b/src/dev-util/click-trough-area.gd index a090609..27bf46f 100644 --- a/src/dev-util/click-trough-area.gd +++ b/src/dev-util/click-trough-area.gd @@ -4,6 +4,14 @@ extends Area3D @onready var sprite: Sprite3D = $UiSprite @onready var viewport: SubViewport = $UiSprite/SubViewport +func _ready() -> void: + return + var viewport_tex := ViewportTexture.new() + viewport_tex.viewport_path = "SubViewport" #viewport.get_path() + print(viewport_tex.viewport_path) + sprite.texture = viewport_tex + + func _process(_delta): if billboard: var camera = get_viewport().get_camera_3d() @@ -13,8 +21,12 @@ func _process(_delta): look_at(global_position - (camera.global_position - global_position), up) -func _unhandled_input(event): - viewport.push_input(event) +func _input(event: InputEvent) -> void: + if event is InputEventAction: + print(event.action) + +#func _unhandled_input(event): +# viewport.push_input(event) func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int): if not State.focus_locked: diff --git a/src/dev-util/savegame.gd b/src/dev-util/savegame.gd index ce40206..1b6058e 100644 --- a/src/dev-util/savegame.gd +++ b/src/dev-util/savegame.gd @@ -3,7 +3,7 @@ class_name SaveGame extends Resource @export var filepath: String @export var unique_save_name: String = "frame_of_mind_%s_%s" % [Time.get_date_string_from_system(), Time.get_time_string_from_system()] -@export var current_room: State.rooms = 0 +@export var current_room: State.rooms = State.rooms.YOUTH @export var mementos_complete: int = 0 @export var board_state: Dictionary = {} @export var thumbnail: Texture = preload("res://import/interface-elements/empty_save_slot.png") diff --git a/src/main.gd b/src/main.gd index 4bfe565..d9f8ea2 100644 --- a/src/main.gd +++ b/src/main.gd @@ -30,11 +30,11 @@ var currently_loading_room: String = "": ResourceLoader.load_threaded_request(path, "PackedScene") menu_animation["parameters/conditions/loading_done"] = false menu_animation["parameters/conditions/load_save"] = true - currently_loading_room = path - else: menu_animation["parameters/conditions/loading_done"] = true menu_animation["parameters/conditions/load_save"] = false + + currently_loading_room = path # Called when the node enters the scene tree for the first time. func _ready(): @@ -46,6 +46,7 @@ func _process(delta: float) -> void: if currently_loading_room != "": if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3: current_room = ResourceLoader.load_threaded_get(youth_room_path).instantiate() + print("add room") add_child(current_room) move_child(current_room, 0) currently_loading_room = "" @@ -122,9 +123,11 @@ func get_room_path_from_id(id: State.rooms) -> String: return ending_path func start_demo(): - load_save(SaveGame.new()) + #FIXME this causes the room to reload + #load_save(SaveGame.new()) $DemoMenue.hide() current_room.start_room() + in_game = true func pause_mode_changed(): print(get_tree().paused)