源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

211 rivejä
6.3 KiB

DialogueModel=DialogueModel or BaseClass(EventDispatcher)
--[[/**
* 飞行副本ID
*/]]
DialogueModel.FLY_COPY_ID=224
DialogueModel.TASK_TEXT="task_text"
DialogueModel.INTO_TIMES="INTO_TIMES"
DialogueModel.SELECT_TASK = "SELECT_TASK"
DialogueModel.CLICK_ANSWER = "CLICK_ANSWER"
DialogueModel.FLASH_INTO_TIMES="FLASH_INTO_TIMES" -- 请求刷新进入副本次数
DialogueModel.REQUEST_CCMD_EVENT = "DialogueModel.REQUEST_CCMD_EVENT" --请求协议
DialogueModel.CHOOSE_MESSAGE_EVENT = "DialogueModel.CHOOSE_MESSAGE_EVENT" --任务选项飘字提示
DialogueModel.CLICK_OK = "DialogueModel.CLICK_OK" --点击对话的确定
DialogueModel.MAIN_LINE_CLICK_OK = "DialogueModel.MAIN_LINE_CLICK_OK" --主线任务点击对话的确定
-- 没有对话时容错使用
DialogueModel.DEFAULT_TALK = {id = 1,total_content = 1,content = {[1] = {total_list = 1,id = 10002,list = {[1] = {type = 0,text = [[四大家族建立的魔法部掌握了能源水晶的开采权,非天赋者都必须接受他们的管理。]],other = [[]]}}}}}
function DialogueModel:__init()
DialogueModel.Instance=self
self.copyTimesVoList = {}
self.view_visible = {}
self.hide_view = 0 --大于0就隐藏对话框
self.dialogue_is_open = false --对话框界面是否显示
self.ignore_double_exp_alert = false --是否不判断双倍经验领取
self.isAuto = false
self.mult_select_task_id = nil
self.cache_task_talk_id = {} -- 缓存已经触发过的任务id,避免重复触发
self.is_delay_show_main_task_tips = false --是否延时到场景切换完成后,在展示主线任务提示
self.is_delay_show_main_task_tips = false --是否已经弹过展示主线任务提示
end
function DialogueModel:__delete()
end
function DialogueModel:getInstance()
if DialogueModel.Instance==nil then
DialogueModel.New()
end
return DialogueModel.Instance
end
function DialogueModel:GetDialogueId(npc_id)
local npc_config = ConfigItemMgr.Instance:GetNpcItem(npc_id)
local dialogueId = nil
if npc_config then
dialogueId = tonumber(npc_config.talk) --npc默认对话
end
return dialogueId
end
--CopyTimesVo的指点
function DialogueModel:setIntoCopyTimes(copyTimesVo)
self.copyTimesVoList[copyTimesVo.copyId] = copyTimesVo;
self:Fire(DialogueModel.INTO_TIMES, copyTimesVo)
end
--返回CopyTimesVo
function DialogueModel:getIntoCopyTimes(copyId)
return self.copyTimesVoList[copyId]
end
--npc配置action中的任务type去过滤显示
function DialogueModel:FilterTheTaskBtn(task_type)
local show = false
-- local _type = task_type.type
-- if _type == 1 or _type == 2 or _type == 3 then --社团护送 是否有足够社团职位显示这些任务,1接护送,2提升品质,3开车
-- show = ConvoyModel:GetInstance():HavUnionAuthority(task_type)
-- else
-- show = true
-- end
return show
end
-- 排序多任务列表内容
function DialogueModel:SortMultTaskList(task_list)
if not task_list then return end
local unfinish_tasks = {} -- 可领取奖励的任务表
local can_accept_tasks = {} -- 可接受任务的任务表
local other_tasks = {} -- 其他
for k, task_data in pairs(task_list) do
if task_data.task_state == 3 then
unfinish_tasks[#unfinish_tasks+1] = task_data
elseif task_data.task_state == 1 then
can_accept_tasks[#can_accept_tasks+1] = task_data
else
other_tasks[#other_tasks+1] = task_data
end
end
local sort_func = function (a, b)
if a.task_state == 3 then
return a.task_time < b.task_time
else
local a_taskcfg = ConfigItemMgr.Instance:GetTaskData(a.task_id)
local b_taskcfg = ConfigItemMgr.Instance:GetTaskData(b.task_id)
return a_taskcfg.level < b_taskcfg.level
end
end
table.sort(unfinish_tasks, sort_func)
table.sort(can_accept_tasks, sort_func)
table.sort(other_tasks, sort_func)
return TableConcat(TableConcat(unfinish_tasks, can_accept_tasks), other_tasks)
end
function DialogueModel:SetMultSelectTaskID( id )
self.mult_select_task_id = id
end
function DialogueModel:GetMultSelectTaskID( )
return self.mult_select_task_id
end
function DialogueModel:CheckTaskTalkEvent( task_id )
if self.cache_task_talk_id[task_id] then
return
end
self.cache_task_talk_id[task_id] = true
local list = {}
local temp_cfg = Config.Tasktalkevent
for i,v in ipairs(temp_cfg) do
if v.task == task_id then
v.has_show = false
list[#list+1] = v
end
end
self:CancelTaskTalkTimer()
self.cur_show_index = 1
self.temp_last_time = 0 --当前对话持续时间
local step_time = 0.5
local cfg
local function on_show( )
self.temp_last_time = self.temp_last_time + step_time
cfg = list[self.cur_show_index]
if not cfg then
self:CancelTaskTalkTimer()
return
end
if not cfg.has_show then
cfg.has_show = true
self:ShowTaskTalkView(cfg)
end
if self.temp_last_time > cfg.delay+cfg.show_time then
self.temp_last_time = 0
self.cur_show_index = self.cur_show_index + 1
end
end
if #list > 1 then
if not self.show_task_talk_timer then
self.show_task_talk_timer = GlobalTimerQuest:AddPeriodQuest(on_show, step_time, -1)
end
else
on_show()
end
end
function DialogueModel:ShowTaskTalkView( cfg )
if not cfg then
return
end
local main_vo = RoleManager.Instance.mainRoleInfo
local temp_head_type = cfg.talker == 0 and 1000+main_vo.career or cfg.talker
local talk_cfg = ConfigItemMgr.Instance:GetTalkItem(cfg.talk)
local temp_content = ""
if talk_cfg and talk_cfg.content[1] and talk_cfg.content[1].list[1] then
temp_content = WordManager:changeWords(talk_cfg.content[1].list[1].text)
end
local temp_head_name = cfg.talker == 0 and main_vo.name or cfg.name
local data = {
head_type = temp_head_type or 1000,
desc = Trim(temp_content) or "",
head_name = temp_head_name or "",
hide_time = cfg.show_time or 1,
dalay_time = cfg.delay or 0,
is_task_type = true,
}
GlobalEventSystem:Fire(EventName.SHOW_COM_DIALOGUE_SHOW_VIEW,data)
-- 个别需要音效
local sound_res
if cfg.task == 10020 then
sound_res = "guide_02"
elseif cfg.task == 10160 then
sound_res = "guide_05"
elseif cfg.task == 10640 then
sound_res = "guide_11"
end
if sound_res then
local function on_delay( )
lua_soundM:PlayEffect(self, sound_res, false, LuaSoundManager.SOUND_TYPE.GUIDE)
end
setTimeout(on_delay, cfg.delay + 0.1)
end
end
function DialogueModel:CancelTaskTalkTimer( )
if self.show_task_talk_timer then
GlobalTimerQuest:CancelQuest(self.show_task_talk_timer)
self.show_task_talk_timer = nil
end
end