Files
imnotsick/Scenes/screening_desk/journal_layer.gd
T
2026-03-31 16:59:58 +02:00

133 lines
4.5 KiB
GDScript

extends CanvasLayer
@onready var journal_symptoms = $Boundaries/VBoxContainer/Journal/MarginContainer/Symptoms/RightPage/Symptoms
@onready var bookmarks = $Boundaries/VBoxContainer/Bookmarks
@onready var journal = $Boundaries/VBoxContainer/Journal
#Journal Settings
var symptoms_detailed: Array[Array] = [
["SUICIDAL IDEATIONS\nPersistent thoughts about ending one's own life",
"PERSECUTORY DELUSIONS\nFalse conviction of being targeted or harmed",
"UNNATURAL BEHAVIOUR\nSigns or marks of non-human nature",
"AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"],
["MEGALOMANIAC DELUSIONS\nFalse exaggeration of self-importance or power",
"SOMATIC HALLUCINATIONS\nFalse sensations, from inside the body or on the skin"],
["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection",
"MANIA\nExcessively elevated mood and increased energy"],
["CHEMOSENSORY HALLUCINATIONS\nFalse perceptions of smell or taste",
"SELF-MUTILATION\nDeliberate self-injury"],
["HETERO-AGRESSIVE BEHAVIOUR\nExcessive hostility, verbal agression, threats",
"VISUAL HALLUCINATIONS\nFalse perceptions of visual stimuli"]
]
var its_entity_file : String = "[color=dark_red]IT THAT SMILES[/color]
CHARACTERISTICS
- Wide smile, dark-red mouth, lack of teeth
- Disguises as a human subject
RECOMMENDED COURSE OF ACTION
- As soon as it smiles, [color=red]TERMINATE[/color] It.
- [color=dim_gray]DO NOT TERMINATE IT, RELEASE IT.[/color]"
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
#Connecting signals
$Boundaries/VBoxContainer/Journal/MarginContainer/Rules/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
$Boundaries/VBoxContainer/Journal/MarginContainer/Symptoms/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
$Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
bookmarks.rules.pressed.connect(self._on_tab_rules_pressed)
bookmarks.symptoms.pressed.connect(self._on_tab_symptoms_pressed)
bookmarks.entities.pressed.connect(self._on_tab_entities_pressed)
hide() #Hiding at start
func _on_close_manual_pressed():
hide()
func _on_journal_pressed():
show()
func update_symptoms(floor_count:int):
var symptoms_page : String = ""
for i in range(-floor_count):
for symptom in symptoms_detailed[i]:
symptoms_page += "\n\n" + symptom
journal.symptoms_page.text = symptoms_page
func update_entities():
journal.entities_page.text = ""
if Patient.entities_current_floor.is_empty():
Patient.pick_floor_entities() #Picking floor entities unless a save was just loaded
var config := ConfigFile.new()
var entity_name: String = ""
var entity_characteristics: String = ""
var entity_course_of_action: String = ""
var entity_text: String = ""
journal.entities_page.text += its_entity_file
for entity in Patient.entities_current_floor:
config.load("res://Dialogues/Entities/" + entity + "_file.cfg") #Loading Entity file
entity_name = config.get_value("", "entity_name")
entity_characteristics = config.get_value("", "entity_characteristics")
entity_course_of_action = config.get_value("", "entity_course_of_action")
entity_text = Globals.colorize(entity_name, "dark_red") + "\n\nCHARACTERISTICS" + entity_characteristics + "\nRECOMMENDED COURSE OF ACTION" + entity_course_of_action
journal.entities_page.text += "\n\n\n" + entity_text
#Resets to initial state
func reset():
hide()
update_symptoms(Globals.floor_count)
if Globals.floor_count <= -4:
update_entities()
bookmarks.entities.show()
else:
bookmarks.entities.hide()
#Shows the rules tab
func _on_tab_rules_pressed():
tab_switch(bookmarks.rules, journal.rules)
#Shows the symptoms tab
func _on_tab_symptoms_pressed():
tab_switch(bookmarks.symptoms, journal.symptoms)
#Shows the entities tab
func _on_tab_entities_pressed():
tab_switch(bookmarks.entities, journal.entities)
#Shows the correct screen according to the pressed tab
func tab_switch(pressed_tab, tab_screen):
#Highlights pressed tab and unpress the others
for tab in [bookmarks.rules, bookmarks.symptoms, bookmarks.entities]:
if tab == pressed_tab:
pressed_tab.set_pressed(true)
pressed_tab.set_mouse_filter(Control.MOUSE_FILTER_IGNORE)
else:
tab.set_pressed(false)
tab.set_mouse_filter(Control.MOUSE_FILTER_STOP)
#Showing desired screen and hiding the others
for screen in [journal.rules, journal.symptoms, journal.entities]:
if screen == tab_screen:
screen.show()
else:
screen.hide()