require("game.proto.144.Require144") require("game.soulPower.SoulPowerModel") require("game.soulPower.SoulPowerConst") require("game.soulPower.SoulPowerAttrItem") require("game.soulPower.SoulPowerChargeView") require("game.soulPower.SoulPowerConditionItem") require("game.soulPower.SoulPowerItem") require("game.soulPower.SoulPowerView") SoulPowerController = SoulPowerController or BaseClass(BaseController, true) local SoulPowerController = SoulPowerController function SoulPowerController:__init() SoulPowerController.Instance = self self.model = SoulPowerModel:getInstance() self:AddEvents() self:RegisterAllProtocal() end function SoulPowerController:__delete() end function SoulPowerController:RegisterAllProtocal( ) self:RegisterProtocal(14400, "Handle14400") self:RegisterProtocal(14401, "Handle14401") self:RegisterProtocal(14402, "Handle14402") self:RegisterProtocal(14403, "Handle14403") end function SoulPowerController:AddEvents() local function onGameStart() local function onDelay() self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14400) end setTimeout(onDelay, 2) end GlobalEventSystem:Bind(EventName.GAME_START, onGameStart) -- 满足等级后请求信息 local function onLevelUp(level) if level == GetModuleOpenLevel(144) then self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14400) end if level > GetModuleOpenLevel(144) then--检测突破条件 self.model:Fire(SoulPowerConst.UPDATE_RED_DOT, SoulPowerConst.RedType.UpGrade) end end RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp) -- 战力更新 local function update_power_change() self.model:UpdateChangePower(false) end if self.update_power_change_id then RoleManager.Instance.mainRoleInfo:UnBind(self.update_power_change_id) self.update_power_change_id = nil end self.update_power_change_id = RoleManager.Instance.mainRoleInfo:BindOne("fighting", update_power_change) --请求信息 i|32 h|16 c|8 l|64 s|字符串 local function onRequestHandler(...) local args_list = {...} if args_list[1] == 14400 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 14401 then self:SendFmtToGame(args_list[1],"h",args_list[2]) -- self:test14401() else self:SendFmtToGame(args_list[1]) end end self.model:Bind(SoulPowerConst.REQUEST_CCMD_EVENT, onRequestHandler) local function on_open_soul_power_view(flag) if self.soul_power_view == nil then self.soul_power_view = SoulPowerView.New() end if self.soul_power_view:HasOpen() and flag then self.soul_power_view:Close() return end self.soul_power_view:Open() end self.model:Bind(SoulPowerConst.OPEN_SOUL_POWER_VIEW,on_open_soul_power_view) local function on_open_soul_power_charge_view(sp_grade, sp_lv) if self.soul_power_charge_view == nil then self.soul_power_charge_view = SoulPowerChargeView.New() end self.soul_power_charge_view:Open(sp_grade, sp_lv) end self.model:Bind(SoulPowerConst.OPEN_SOUL_POWER_CHARGE_VIEW,on_open_soul_power_charge_view) local function update_red_dot_by_tab_id_func( red_type )--主要的更新红点方法 if not red_type then self.model:IsNeedRedAll() else self.model:IsNeedRed(red_type) end local red_dot = self.model:GetAllRedDot() local bool = false for i,v in pairs(red_dot) do if v then bool = true break end end NewMainRoleModel:getInstance():Fire(NewMainRoleModel.UPDATE_RED_DOT, NewMainRoleModel.TabId.SOULPOWER) end self.model:Bind(SoulPowerConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func) --相关物品数量刷新时 local function on_goods_update( ) self.model:Fire(SoulPowerConst.UPDATE_RED_DOT, SoulPowerConst.RedType.Activate) end self.model:Bind(SoulPowerConst.UPDATE_SP_GOODS_NUM, on_goods_update) end function SoulPowerController:Handle14400( ) local vo = SCMD14400.New(true) -- print("==WQ==:SoulPowerController [start:122] vo:", vo) -- PrintTable(vo) -- print("==WQ==:SoulPowerController [end]") if vo then self.model:SetSoulPowerBaseData(vo) self.model:Fire(SoulPowerConst.UPDATE_SOUL_POWER_VIEW) self.model:Fire(SoulPowerConst.UPDATE_RED_DOT) end end function SoulPowerController:Handle14401( ) local vo = SCMD14401.New(true) if vo then if vo.res~=1 then ErrorCodeShow(vo.res) end end end function SoulPowerController:Handle14402( ) local vo = SCMD14402.New(true) if vo then if vo.res~=1 then ErrorCodeShow(vo.res) else --弹技能获取界面 if not self.model.old_sp_grade then return end local next_sp_grade = self.model.old_sp_grade+1 local next_sp_grade_cfg = self.model:GetSoulPowerGradeCfgByGrade(next_sp_grade) local old_sp_grade_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.model.old_sp_grade) local skill_data = stringtotable(next_sp_grade_cfg.skills) local old_skill_data = stringtotable(old_sp_grade_cfg.skills) if skill_data[1][1] == old_skill_data[1][1] and skill_data[1][2] == old_skill_data[1][2] then return end skill_data = { skill_id = skill_data[1][1], skill_level = skill_data[1][2], } FuncOpenController.Instance:ShowSkill(skill_data) end end end function SoulPowerController:Handle14403( ) local vo = SCMD14403.New(true) if vo then if vo.res~=1 then ErrorCodeShow(vo.res) end end end