extends Node signal messageSent(message) var messageZone var canvasLayer var messageButton var characterMessageScene = preload("res://UI/MessageZone/CharacterMessage.tscn") var itemPopupScene = preload("res://UI/EventPopups/item_pickup_popup.tscn") var levelupPopupScene = preload("res://UI/EventPopups/levelup_popup.tscn") var currentItemPopup = null var itemPopups = [] var currentlevelPopup = null var levelPopups = [] func _ready(): initialize_variables() func item_popup_done(): if itemPopups.size() > 0: var newItemPopup = itemPopups.pop_front() canvasLayer.add_child(newItemPopup) currentItemPopup = newItemPopup else: currentItemPopup = null func initialize_variables(): messageZone = get_node("/root/MainGame/CanvasLayer/MessageZone") canvasLayer = get_node("/root/MainGame/CanvasLayer") messageButton = get_node("/root/MainGame/CanvasLayer/MinimizeMessageZoneButton") func item_popup(item): var itemPopup = itemPopupScene.instantiate() itemPopup.set_item(item) if currentItemPopup != null: itemPopups.append(itemPopup) else: canvasLayer.add_child(itemPopup) currentItemPopup = itemPopup func secret_skill_popup(skill): var levelupPopup = levelupPopupScene.instantiate() levelupPopup.secret_skill(skill) if currentlevelPopup != null: levelPopups.append(levelupPopup) else: canvasLayer.add_child(levelupPopup) currentlevelPopup = levelupPopup get_tree().get_root().get_node("MainGame/PuzzleCompleteAudio").play() func levelup_popup(skill): var levelupPopup = levelupPopupScene.instantiate() levelupPopup.set_skill(skill) if currentlevelPopup != null: levelPopups.append(levelupPopup) else: canvasLayer.add_child(levelupPopup) currentlevelPopup = levelupPopup get_tree().get_root().get_node("MainGame/AudioStreamPlayer").play() func maxlevel_popup(): var levelupPopup = levelupPopupScene.instantiate() levelupPopup.max_level() if currentlevelPopup != null: levelPopups.append(levelupPopup) else: canvasLayer.add_child(levelupPopup) currentlevelPopup = levelupPopup get_tree().get_root().get_node("MainGame/MaxLevelAudio").play() func levelup_popup_done(): if levelPopups.size() > 0: var newLevelupPopup = levelPopups.pop_front() canvasLayer.add_child(newLevelupPopup) currentlevelPopup = newLevelupPopup if newLevelupPopup.maxLevelPopup: get_tree().get_root().get_node("MainGame/MaxLevelAudio").play() elif newLevelupPopup.secretSkillPopup: get_tree().get_root().get_node("MainGame/PuzzleCompleteAudio").play() else: get_tree().get_root().get_node("MainGame/AudioStreamPlayer").play() else: currentlevelPopup = null func addMessage(message, speaker, speakerName = "System", color:Color = Color.BLACK, showInMessageZone:bool = true, showAboveCharacter:bool = true, messageDuration:int = 4, messageSpeed:int = -1): if showInMessageZone: var messageForZone = message if speakerName != "System": messageForZone = speakerName + ": " + messageForZone messageZone.add_message(messageForZone, color) # Chat opens on message setting if SaveManager.get_save_value("ShowMessageOpt",true): messageZone.set_message_zone_visibility(true) messageButton.text = "-" canvasLayer.messageZoneMinimized = false if showAboveCharacter: var newCharacterMessage = characterMessageScene.instantiate() newCharacterMessage.text = message newCharacterMessage.set("theme_override_colors/font_color", color) newCharacterMessage.position = Vector2(0, -120) newCharacterMessage.lifeSpan = messageDuration newCharacterMessage.speed = messageSpeed speaker.add_child(newCharacterMessage) messageSent.emit(message)