This commit is contained in:
betalars 2025-03-23 14:32:24 +01:00
parent 1c975fe554
commit 320c3d8932
5 changed files with 45 additions and 24 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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:

View File

@ -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")

View File

@ -30,12 +30,12 @@ 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():
currently_loading_room = youth_room_path
@ -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)