源战役客户端
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.
 
 
 
 
 

171 lines
5.3 KiB

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