cosmic/scripts/Base/Menu/dialogue.gd

78 lines
2.9 KiB
GDScript

extends NinePatchRect
## This message will trigger buy/sell node to fetch buy prices
const BUY_FETCH = "BASE_FETCH_BUY"
## This message will trigger buy/sell node to fetch sell prices
const SELL_FETCH = "BASE_FETCH_SELL"
## This message will trigger dialogue to get selected item data
const BUY_ITEM = "BASE_BUY_ITEM"
## This message will trigger dialogue to get selected item data
const SELL_ITEM = "BASE_SELL_ITEM"
## This message will trigger quest node to make answer format
const TAKE_QUEST = "BASE_TAKE_QUEST"
## This message will trigger quest node to assign quest to player
const ACCEPT_QUEST = "BASE_QUEST_ACCEPT"
## This message will trigger quest node to take quest from player
const CANCEL_QUEST = "BASE_QUEST_CANCEL"
## This message will trigger quest node to get quest info
const QUEST_INFO = "BASE_QUEST_INFO"
## Quest progress template
const QUEST_PROGRESS = "{cur} / {max}"
@onready var dialogue = $DialogueView
@onready var buy_sell = $"../../BuySell"
@onready var actions_menu = $"../Actions/ActionsMenu"
@onready var quest = $"../../Quest"
func _ready():
var tween = create_tween() \
.tween_property(dialogue,"visible_ratio",1.0, 2)
func send_message(msg: Message):
var format = {}
match msg.fact:
BUY_FETCH:
format["sell_list"] = buy_sell.get_buy_sell_list(false)
actions_menu.buy = false
actions_menu.buy_sell_options = buy_sell.get_buy_sell_len(false)
SELL_FETCH:
format["buy_list"] = buy_sell.get_buy_sell_list(true)
actions_menu.buy = true
actions_menu.buy_sell_options = buy_sell.get_buy_sell_len(true)
BUY_ITEM:
var list = buy_sell.items_on_sell
var id = actions_menu.buy_sell_selected_item
var item_name = list[id].name
format["amount"] = actions_menu.buy_sell_amount
format["item_name"] = item_name
SELL_ITEM:
var list = buy_sell.items_on_buy
var id = actions_menu.buy_sell_selected_item
var item_name = list[id].name
format["amount"] = actions_menu.buy_sell_amount
format["item_name"] = item_name
TAKE_QUEST:
quest.make_answer(quest.quest)
format["answer"] = quest.answer
if quest.answer == tr(quest.NO_QUEST):
get_tree().create_timer(0.05).timeout.connect(actions_menu.transit_menu.bind(0))
ACCEPT_QUEST:
var player_ship = actions_menu.player_ship
player_ship.quest = quest.assign_to_player()
player_ship.quest.quest_failed.connect(player_ship.on_quest_failed)
CANCEL_QUEST:
actions_menu.player_ship.quest = null
QUEST_INFO:
var cur_quest = actions_menu.player_ship.quest
quest.get_info(cur_quest)
format["answer"] = quest.info
format["given_by"] = tr(cur_quest.data["given_by"])
format["progress"] = QUEST_PROGRESS.format({"cur": cur_quest.progress, "max": cur_quest.progress_max})
var new_msg = tr(msg.fact + "_RECEIVED").format(format)
var old_len = len(dialogue.get_parsed_text())
dialogue.append_text(new_msg)
dialogue.visible_characters = old_len
var tween = create_tween() \
.tween_property(dialogue,"visible_ratio",1.0, 2)