|
|
- 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
|