83 lines
3.2 KiB
GDScript
83 lines
3.2 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"
|
|
## This message will trigger dialogue node to reward player
|
|
const QUEST_REWARD = "BASE_QUEST_REWARD"
|
|
|
|
## 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():
|
|
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})
|
|
QUEST_REWARD:
|
|
var player_ship = actions_menu.player_ship
|
|
var reward = player_ship.quest.reward_money
|
|
player_ship.money += reward
|
|
player_ship.quest = null
|
|
format["reward"] = reward
|
|
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
|
|
create_tween().tween_property(dialogue,"visible_ratio",1.0, 2)
|