Cow_Life_Sim_RPG/UI/MessageZone/MessageManager.gd

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)