120 lines
3.6 KiB
GDScript
120 lines
3.6 KiB
GDScript
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)
|
|
|
|
|