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