源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 

471 Zeilen
19 KiB

require("game.proto.139.Require139")
require("game.psionic.PsionicModel")
require("game.psionic.PsionicConst")
require("game.psionic.PsionicMainView") -- 圣物模块主界面
-- require("game.psionic.PsionicStageView") -- 圣物等级界面
-- require("game.psionic.PsionicStageItem") -- 圣物等级界面等级节点
require("game.psionic.PsionicArmorView") -- 圣物装备背包界面
require("game.psionic.PsionicArmorEquipItem") -- 圣物装备界面左侧装备栏节点
require("game.psionic.PsionicArmorItem") -- 圣物装备背包节点
require("game.psionic.PsionicArmorResolveView") -- 圣物装备分解界面
require("game.psionic.PsionicArmorResolveTipItem") -- 圣物装备分解界面分解建议tip节点
require("game.psionic.PsionicAdvanceView") -- 圣物装备进阶界面
require("game.psionic.PsionicAdvanceBreakView") -- 圣物装备突破界面
require("game.psionic.PsionicAdvanceBreakTabItem") -- 圣物装备突破界面左侧页签节点
require("game.psionic.PsionicWashView") -- 圣物洗练界面
require("game.psionic.PsionicWashAttrItem") -- 圣物洗练界面属性节点
require("game.psionic.PsionicDrawView") -- 圣物数据挖掘界面
require("game.psionic.PsionicSkillView") -- 圣物技能界面
require("game.psionic.PsionicSkillAttrItem") -- 圣物技能界面属性节点item
require("game.psionic.PsionicSkillEquipItem") -- 圣物技能装备item
require("game.psionic.PsionicSkillTipView") -- 圣物技能tips界面
require("game.psionic.PsionicSkillTipItem") -- 圣物技能tips界面节点
require("game.psionic.PsionicExchangeView") -- 圣物兑换商城
require("game.psionic.PsionicExchangeItem") -- 圣物兑换商城商品节点
require("game.psionic.PsionicDrawResultView") -- 圣物系统抽奖结算界面
require("game.psionic.PsionicDrawPreviewView") -- 圣物系统奖励预览界面
require("game.psionic.PsionicDrawPreviewItem") -- 圣物系统奖励预览界面子节点
-- require("game.psionic.PsionicTitleTipView") -- 圣物系统头衔激活tips弹窗
require("game.psionic.PsionicEffectEquipView") -- 圣物圣环装备界面
require("game.psionic.PsionicSkillUpgradeSuccessView") -- 圣物觉醒成功结算界面
require("game.psionic.PsionicBreakSuccessView") -- 圣物装备升星成功结算界面
require("game.psionic.PsionicBreakSuccessItem") -- 圣物装备升星成功结算界面子节点
PsionicController = PsionicController or BaseClass(BaseController, true)
local PsionicController = PsionicController
local PsionicConst = PsionicConst
local GoodsModel = GoodsModel
function PsionicController:__init()
PsionicController.Instance = self
self.model = PsionicModel:getInstance()
self:AddEvents()
self:RegisterAllProtocal()
-- 屏蔽圣物
self._BLOCK_PSIONIC = false
end
function PsionicController:__delete()
end
function PsionicController:RegisterAllProtocal( )
self:RegisterProtocal(13900, "handle13900") -- 圣物数据
-- self:RegisterProtocal(13901, "handle13901") -- 穿装甲
-- self:RegisterProtocal(13902, "handle13902") -- 卸装甲
self:RegisterProtocal(13903, "handle13903") -- 装甲分解
self:RegisterProtocal(13904, "handle13904") -- 圣物技能激活推送
self:RegisterProtocal(13905, "handle13905") -- 装甲升级
self:RegisterProtocal(13906, "handle13906") -- 装甲突破
self:RegisterProtocal(13907, "handle13907") -- 觉醒
self:RegisterProtocal(13908, "handle13908") -- 洗练
self:RegisterProtocal(13909, "handle13909") -- 抽奖面板
self:RegisterProtocal(13910, "handle13910") -- 抽奖结算
self:RegisterProtocal(13911, "handle13911") -- 圣物等级提升通知
self:RegisterProtocal(13912, "handle13912") -- 圣物商店兑换
self:RegisterProtocal(13913, "handle13913") -- 圣物技能激活
self:RegisterProtocal(13914, "handle13914") -- 剩余免费洗脸次数
end
function PsionicController:AddEvents()
local function onGameStart()
self.model:Reset()
if not self._BLOCK_PSIONIC then
self.model:Fire(PsionicConst.REQUEST_CCMD_EVENT, 13900)
self.model:Fire(PsionicConst.REQUEST_CCMD_EVENT, 13910)
self.model:Fire(PsionicConst.REQUEST_CCMD_EVENT, 13914)
end
end
GlobalEventSystem:Bind(EventName.GAME_START, onGameStart)
local function onRequestHandler(...)
if self._BLOCK_PSIONIC then return end
local args_list = {...}
if args_list[1] == 13903 then
self:SendFmtToGame(args_list[1], "l", args_list[2])
elseif args_list[1] == 13906
or args_list[1] == 13908
or args_list[1] == 13909 then
self:SendFmtToGame(args_list[1], "c", args_list[2])
elseif args_list[1] == 13905 then
self:SendFmtToGame(args_list[1], "ccc", args_list[2], args_list[3], args_list[4])
elseif args_list[1] == 13904 then
self.clear_red_cache_list = self.clear_red_cache_list or {}
local str = "h"
local tb = {}
for k, v in pairs(args_list[2]) do
self.clear_red_cache_list[#self.clear_red_cache_list+1] = k
tb[#tb + 1] = k
str = str .. "l"
end
self:SendFmtToGame(args_list[1], str, #tb, unpack(tb))
elseif args_list[1] == 13907 then
self:SendFmtToGame(args_list[1], "lc", args_list[2], args_list[3])
elseif args_list[1] == 13911 then
self:SendFmtToGame(args_list[1], "cc", args_list[2], args_list[3])
elseif args_list[1] == 13912 then
self:SendFmtToGame(args_list[1], "hh", args_list[2], args_list[3])
elseif args_list[1] == 13914 then
self:SendFmtToGame(args_list[1])
else
self:SendFmtToGame(args_list[1])
end
end
self.model:Bind(PsionicConst.REQUEST_CCMD_EVENT, onRequestHandler)
local function openPsionicMainView(show, index, other_args)
if self._BLOCK_PSIONIC then return end
if show then
if not self.psionic_main_view then
self.psionic_main_view = PsionicMainView.New()
end
if not self.psionic_main_view:HasOpen() then
self.psionic_main_view:Open(index, other_args)
else
self.psionic_main_view:SwitchTab(index, other_args)
end
else
if self.psionic_main_view then
self.psionic_main_view:Close()
end
end
end
self.model:Bind(PsionicConst.OPEN_MAIN_VIEW, openPsionicMainView)
local function openPsionicResolveView(show, goods_id)
if self._BLOCK_PSIONIC then return end
if show then
if not self.psionic_resolve_view then
self.psionic_resolve_view = PsionicArmorResolveView.New()
end
if not self.psionic_resolve_view:HasOpen() then
self.psionic_resolve_view:Open(goods_id)
end
else
if self.psionic_resolve_view then
self.psionic_resolve_view:Close()
end
end
end
self.model:Bind(PsionicConst.OPEN_RESOLVE_VIEW, openPsionicResolveView)
-- 2020年7月9日重构新增
-- 打开圣物技能tips界面
local function openSKillTipsView(show, skill_data, x, y)
if self._BLOCK_PSIONIC then return end
if show then
if not skill_data then return end
if not self.psionic_skill_tips_view then
self.psionic_skill_tips_view = PsionicSkillTipView.New()
end
if not self.psionic_skill_tips_view:HasOpen() then
self.psionic_skill_tips_view:Open(skill_data, x, y)
end
else
if self.psionic_skill_tips_view then
self.psionic_skill_tips_view:Close()
end
end
end
self.model:Bind(PsionicConst.OPEN_SKILL_TIPS_VIEW, openSKillTipsView)
local function openDrawPerviewView(show, pool_type)
if (show and pool_type) or not show then
self:OpenView("PsionicDrawPreviewView", show, pool_type)
end
end
self.model:Bind(PsionicConst.OPEN_DRAW_PREVIEW_VIEW, openDrawPerviewView)
-- local function openTitleTipsView(show, show_lv)
-- if (show and show_lv) or not show then
-- self:OpenView("PsionicTitleTipView", show, show_lv)
-- end
-- end
-- self.model:Bind(PsionicConst.OPEN_TITLE_TIP_VIEW, openTitleTipsView)
local function openPsionicDrawResultView(show, data)
if show and data then
if not self.PsionicDrawResultView then
self.PsionicDrawResultView = PsionicDrawResultView.New()
end
if not self.PsionicDrawResultView:HasOpen() then
self.PsionicDrawResultView:Open(data)
else
self.PsionicDrawResultView:ReOpenView(data)
end
else
if self.PsionicDrawResultView then
self.PsionicDrawResultView:Close()
end
end
end
self.model:Bind(PsionicConst.OPEN_PSIONIC_DRAW_RESULT_VIEW, openPsionicDrawResultView)
-- 如果激活了圣物每日免费洗练相关的宠物生活技能,则需要主动请求13914
local function on_pet_life_skill_actived(skill_id)
if skill_id == PetConst.LifeSkill.PsionicWashFreeTimes then
self.model:Fire(PsionicConst.REQUEST_CCMD_EVENT, 13914)
end
end
PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived)
local function chnage_day_func(type)
if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
self.model:Fire(PsionicConst.REQUEST_CCMD_EVENT, 13914)
end
end
GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
local function open_ps_effect_equip_view(show)
self:OpenView("PsionicEffectEquipView", show)
end
self.model:Bind(PsionicConst.OPEN_PSIONIC_EFFECT_EQUIP_VIEW, open_ps_effect_equip_view)
local function open_ps_skill_upgrade_success_view(show, slot_data)
if (show and slot_data) or not show then
self:OpenView("PsionicSkillUpgradeSuccessView", show, slot_data)
end
end
self.model:Bind(PsionicConst.OPEN_SKILL_UPGRADE_SUCCESS_VIEW, open_ps_skill_upgrade_success_view)
local function open_ps_break_success_view(show, pre_goods_vo, goods_vo)
if (show and pre_goods_vo and goods_vo) or not show then
self:OpenView("PsionicBreakSuccessView", show, pre_goods_vo, goods_vo)
end
end
self.model:Bind(PsionicConst.OPEN_BREAK_SUCCESS_VIEW, open_ps_break_success_view)
end
function PsionicController:handle13900( )
local vo = SCMD13900.New(true)
self.model:SetPsionicMainData(vo)
-- self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PLevel, true)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PArmor, true)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PAdvance, true)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PSkill, true)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PWash, true)
-- self.model:Fire(PsionicConst.UPDATE_PSIONIC_LV)
self.model:Fire(PsionicConst.UPDATE_PSIONIC_AWAKE_DATA)
self.model:Fire(PsionicConst.UPDATE_SLOT_SKILL)
end
-- function PsionicController:handle13901( )
-- local vo = SCMD13901.New(true)
-- if vo.result == 1 then
-- Message.show("充能成功", "success")
-- self.model:UpdatePsionicMainLv(vo)
-- self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PLevel, true)
-- self.model:Fire(PsionicConst.UPDATE_PSIONIC_LV)
-- else
-- ErrorCodeShow(vo.result)
-- end
-- end
-- function PsionicController:handle13902( )
-- local vo = SCMD13902.New(true)
-- if vo.result == 1 then
-- Message.show("激活成功", "success")
-- vo.exp = 0 -- 升级后,经验清空
-- self.model:UpdatePsionicMainLv(vo)
-- self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PLevel, true)
-- self.model:Fire(PsionicConst.UPDATE_PSIONIC_LV)
-- -- 弹出tips界面
-- self.model:Fire(PsionicConst.OPEN_TITLE_TIP_VIEW, true, vo.lv)
-- self.model:Fire(PsionicConst.UPGRADE_PSIONIC_LV, vo.lv)
-- else
-- ErrorCodeShow(vo.result)
-- end
-- end
function PsionicController:handle13903( )
local vo = SCMD13903.New(true)
if vo.result == 1 then
Message.show("穿戴成功")
-- 清除被穿戴装备的红点缓存
self.model:ClearTargetEquipRedCache(vo.uid)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PArmor, true, nil, vo.uid)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PAdvance, true, nil, vo.uid)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PWash, true, nil, vo.uid)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PSkill, true, nil, vo.uid)
self.model:Fire(PsionicConst.WEAR_ARMOR_SUCCEED, vo.uid)
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13904( )
local vo = SCMD13904.New(true)
if vo.result == 1 then
Message.show("分解成功")
-- 清除掉被分解的装备的红点缓存
for k, v in pairs(self.clear_red_cache_list) do
self.model:ClearTargetEquipRedCache(v)
end
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PArmor, true)
else
ErrorCodeShow(vo.result)
-- 分解失败,红点不处理
self.clear_red_cache_list = {}
end
-- self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PSkill, true, vo.pos)
end
function PsionicController:handle13905( )
local vo = SCMD13905.New(true)
if vo.result == 1 then
Message.show("升级成功")
local old_slot_data = self.model:GetPsionicSlotData(vo.pos)
local old_lv = old_slot_data and old_slot_data.lv or nil
self.model:UpdatePsionicSlotLv(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PAdvance, true, vo.pos)
self.model:Fire(PsionicConst.UPDATE_SLOT_DATA, vo.pos)
if old_lv and old_lv < vo.lv then
-- 等级变动,播放特效
self.model:Fire(PsionicConst.PLAY_EFFECT, PsionicConst.EffectType.BreakLevel)
end
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13906( )
local vo = SCMD13906.New(true)
if vo.result == 1 then
Message.show("突破成功")
local old_slot_data = self.model:GetPsionicSlotData(vo.pos)
local old_lv = old_slot_data and old_slot_data.lv or nil
self.model:UpdatePsionicSlotGrade(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PAdvance, true, vo.pos)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PWash, true, vo.pos)
self.model:Fire(PsionicConst.UPDATE_SLOT_DATA, vo.pos)
self.model:Fire(PsionicConst.UPDATE_SLOT_WASH_DATA, vo.pos)
if old_lv and old_lv < vo.lv then
-- 等级变动,播放特效
self.model:Fire(PsionicConst.PLAY_EFFECT, PsionicConst.EffectType.BreakLevel)
end
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13907( )
local vo = SCMD13907.New(true)
if vo.result == 1 then
local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(vo.gtype)
local slot = goods_basic and goods_basic.subtype or 4
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PArmor, true, nil, vo.uid)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PBreak, true, nil, vo.uid)
self.model:Fire(PsionicConst.UPDATE_EQUIP_BREAK_SUCCEED, vo.uid, slot)
local pre_goods_vo = self.model._break_type_id_cache[vo.uid]
local goods_vo = GoodsModel:getInstance():GetPsionicBagGoodsByID(vo.uid) -- 查看背包
or GoodsModel:getInstance():GetPsionicEquipGoodsByID(vo.uid) -- 查看穿戴
self.model:Fire(PsionicConst.OPEN_BREAK_SUCCESS_VIEW, true, pre_goods_vo, goods_vo)
self.model:Fire(PsionicConst.PLAY_EFFECT, PsionicConst.EffectType.BreakEquip)
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13908( )
local vo = SCMD13908.New(true)
if vo.result == 1 then
Message.show("觉醒成功", "success")
self.model:UpdatePsionicSectionLv(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PSkill, true, vo.pos)
self.model:Fire(PsionicConst.UPDATE_SLOT_SKILL, vo.pos)
self.model:Fire(PsionicConst.PLAY_EFFECT, PsionicConst.EffectType.Skill)
local function delay_method( )
local slot_data = self.model:GetPsionicSlotData(vo.pos)
self.model:Fire(PsionicConst.OPEN_SKILL_UPGRADE_SUCCESS_VIEW, true, slot_data)
self.model._block_skill_upgrade_click = false -- 取消点击屏蔽
end
setTimeout(delay_method, 1.5)
else
ErrorCodeShow(vo.result)
self.model._block_skill_upgrade_click = false -- 取消点击屏蔽
end
end
function PsionicController:handle13909( )
local vo = SCMD13909.New(true)
if vo.result == 1 then
self.model:UpdatePsionicSlotWashData(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PWash, true, vo.pos)
-- reports数据用来做界面表现
self.model:Fire(PsionicConst.UPDATE_SLOT_WASH_DATA, vo.pos, vo.reports)
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13910( )
local vo = SCMD13910.New(true)
self.model:SetPsionicDigData(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PDataDig, true)
self.model:Fire(PsionicConst.UPDATE_DIG_DATA)
end
function PsionicController:handle13911( )
local vo = SCMD13911.New(true)
if vo.result == 1 then
local data = {
award = {},
col_num = 5,
pool = vo.pool,
opty = vo.opty,
show_awards = vo.show_awards,
}
local goods_vo
for k, v in pairs(vo.awards) do
goods_vo = v.uid ~= 0 and GoodsModel:getInstance():GetPsionicBagGoodsByID(v.uid) or nil
data.award[#data.award+1] = {0, v.goods_id, v.num, goods_vo}
end
self.model:Fire(PsionicConst.OPEN_PSIONIC_DRAW_RESULT_VIEW, true, data)
-- GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW, data)
self.model:UpdatePsionicDigData(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PDataDig, true, vo.pool)
self.model:Fire(PsionicConst.UPDATE_DIG_DATA, vo.pool, vo.opty)
else
ErrorCodeShow(vo.result)
end
-- self.model:UpdatePsionicLv(vo.lv)
-- self.model:Fire(PsionicConst.UPDATE_PSIONIC_LV)
end
function PsionicController:handle13912( )
local vo = SCMD13912.New(true)
if vo.result == 1 then
Message.show("兑换成功", "success")
-- self.model:Fire(PsionicConst.EXCHANGE_SUCCEED, vo.sort)
else
ErrorCodeShow(vo.result)
end
end
function PsionicController:handle13913( )
local vo = SCMD13913.New(true)
self.model:UpdatePsionicSkillData(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PSkill, true, vo.pos)
self.model:Fire(PsionicConst.UPDATE_SLOT_SKILL, vo.pos)
self.model:Fire(PsionicConst.ACTIVATE_SLOT_SKILL, vo.pos)
end
--剩余免费洗练次数
function PsionicController:handle13914( )
local vo = SCMD13914.New(true)
self.model:UpdatePsionicFreeWashTimes(vo)
self.model:CheckPsionicRedByTabID(PsionicConst.TabId.PWash, true)
end