源战役客户端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

171 satır
5.3 KiB

  1. require("game.proto.144.Require144")
  2. require("game.soulPower.SoulPowerModel")
  3. require("game.soulPower.SoulPowerConst")
  4. require("game.soulPower.SoulPowerAttrItem")
  5. require("game.soulPower.SoulPowerChargeView")
  6. require("game.soulPower.SoulPowerConditionItem")
  7. require("game.soulPower.SoulPowerItem")
  8. require("game.soulPower.SoulPowerView")
  9. SoulPowerController = SoulPowerController or BaseClass(BaseController, true)
  10. local SoulPowerController = SoulPowerController
  11. function SoulPowerController:__init()
  12. SoulPowerController.Instance = self
  13. self.model = SoulPowerModel:getInstance()
  14. self:AddEvents()
  15. self:RegisterAllProtocal()
  16. end
  17. function SoulPowerController:__delete()
  18. end
  19. function SoulPowerController:RegisterAllProtocal( )
  20. self:RegisterProtocal(14400, "Handle14400")
  21. self:RegisterProtocal(14401, "Handle14401")
  22. self:RegisterProtocal(14402, "Handle14402")
  23. self:RegisterProtocal(14403, "Handle14403")
  24. end
  25. function SoulPowerController:AddEvents()
  26. local function onGameStart()
  27. local function onDelay()
  28. self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14400)
  29. end
  30. setTimeout(onDelay, 2)
  31. end
  32. GlobalEventSystem:Bind(EventName.GAME_START, onGameStart)
  33. -- 满足等级后请求信息
  34. local function onLevelUp(level)
  35. if level == GetModuleOpenLevel(144) then
  36. self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14400)
  37. end
  38. if level > GetModuleOpenLevel(144) then--检测突破条件
  39. self.model:Fire(SoulPowerConst.UPDATE_RED_DOT, SoulPowerConst.RedType.UpGrade)
  40. end
  41. end
  42. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  43. -- 战力更新
  44. local function update_power_change()
  45. self.model:UpdateChangePower(false)
  46. end
  47. if self.update_power_change_id then
  48. RoleManager.Instance.mainRoleInfo:UnBind(self.update_power_change_id)
  49. self.update_power_change_id = nil
  50. end
  51. self.update_power_change_id = RoleManager.Instance.mainRoleInfo:BindOne("fighting", update_power_change)
  52. --请求信息 i|32 h|16 c|8 l|64 s|字符串
  53. local function onRequestHandler(...)
  54. local args_list = {...}
  55. if args_list[1] == 14400 then
  56. self:SendFmtToGame(args_list[1])
  57. elseif args_list[1] == 14401 then
  58. self:SendFmtToGame(args_list[1],"h",args_list[2])
  59. -- self:test14401()
  60. else
  61. self:SendFmtToGame(args_list[1])
  62. end
  63. end
  64. self.model:Bind(SoulPowerConst.REQUEST_CCMD_EVENT, onRequestHandler)
  65. local function on_open_soul_power_view(flag)
  66. if self.soul_power_view == nil then
  67. self.soul_power_view = SoulPowerView.New()
  68. end
  69. if self.soul_power_view:HasOpen() and flag then
  70. self.soul_power_view:Close()
  71. return
  72. end
  73. self.soul_power_view:Open()
  74. end
  75. self.model:Bind(SoulPowerConst.OPEN_SOUL_POWER_VIEW,on_open_soul_power_view)
  76. local function on_open_soul_power_charge_view(sp_grade, sp_lv)
  77. if self.soul_power_charge_view == nil then
  78. self.soul_power_charge_view = SoulPowerChargeView.New()
  79. end
  80. self.soul_power_charge_view:Open(sp_grade, sp_lv)
  81. end
  82. self.model:Bind(SoulPowerConst.OPEN_SOUL_POWER_CHARGE_VIEW,on_open_soul_power_charge_view)
  83. local function update_red_dot_by_tab_id_func( red_type )--主要的更新红点方法
  84. if not red_type then
  85. self.model:IsNeedRedAll()
  86. else
  87. self.model:IsNeedRed(red_type)
  88. end
  89. local red_dot = self.model:GetAllRedDot()
  90. local bool = false
  91. for i,v in pairs(red_dot) do
  92. if v then
  93. bool = true
  94. break
  95. end
  96. end
  97. NewMainRoleModel:getInstance():Fire(NewMainRoleModel.UPDATE_RED_DOT, NewMainRoleModel.TabId.SOULPOWER)
  98. end
  99. self.model:Bind(SoulPowerConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func)
  100. --相关物品数量刷新时
  101. local function on_goods_update( )
  102. self.model:Fire(SoulPowerConst.UPDATE_RED_DOT, SoulPowerConst.RedType.Activate)
  103. end
  104. self.model:Bind(SoulPowerConst.UPDATE_SP_GOODS_NUM, on_goods_update)
  105. end
  106. function SoulPowerController:Handle14400( )
  107. local vo = SCMD14400.New(true)
  108. -- print("==WQ==:SoulPowerController [start:122] vo:", vo)
  109. -- PrintTable(vo)
  110. -- print("==WQ==:SoulPowerController [end]")
  111. if vo then
  112. self.model:SetSoulPowerBaseData(vo)
  113. self.model:Fire(SoulPowerConst.UPDATE_SOUL_POWER_VIEW)
  114. self.model:Fire(SoulPowerConst.UPDATE_RED_DOT)
  115. end
  116. end
  117. function SoulPowerController:Handle14401( )
  118. local vo = SCMD14401.New(true)
  119. if vo then
  120. if vo.res~=1 then
  121. ErrorCodeShow(vo.res)
  122. end
  123. end
  124. end
  125. function SoulPowerController:Handle14402( )
  126. local vo = SCMD14402.New(true)
  127. if vo then
  128. if vo.res~=1 then
  129. ErrorCodeShow(vo.res)
  130. else
  131. --弹技能获取界面
  132. if not self.model.old_sp_grade then return end
  133. local next_sp_grade = self.model.old_sp_grade+1
  134. local next_sp_grade_cfg = self.model:GetSoulPowerGradeCfgByGrade(next_sp_grade)
  135. local old_sp_grade_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.model.old_sp_grade)
  136. local skill_data = stringtotable(next_sp_grade_cfg.skills)
  137. local old_skill_data = stringtotable(old_sp_grade_cfg.skills)
  138. if skill_data[1][1] == old_skill_data[1][1] and skill_data[1][2] == old_skill_data[1][2] then return end
  139. skill_data = {
  140. skill_id = skill_data[1][1],
  141. skill_level = skill_data[1][2],
  142. }
  143. FuncOpenController.Instance:ShowSkill(skill_data)
  144. end
  145. end
  146. end
  147. function SoulPowerController:Handle14403( )
  148. local vo = SCMD14403.New(true)
  149. if vo then
  150. if vo.res~=1 then
  151. ErrorCodeShow(vo.res)
  152. end
  153. end
  154. end