源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

720 行
24 KiB

  1. require("game.proto.163.Require163")
  2. require("game.pet.PetModel")
  3. require("game.pet.PetConst")
  4. require("game.pet.PetBaseView")
  5. require("game.pet.PetTrainingView")
  6. require("game.pet.PetCollectionView")
  7. require("game.pet.PetFeedPanel")
  8. require("game.pet.PetSkillPanel")
  9. require("game.pet.PetEvolvePanel")
  10. require("game.pet.PetItem")
  11. require("game.pet.PetCollectItem")
  12. require("game.pet.PetAttrItem")
  13. require("game.pet.PetSkillItem")
  14. require("game.pet.PetEvolvePreView")
  15. require("game.pet.PetStoryView")
  16. require("game.pet.PetStoryItem")
  17. require("game.pet.PetDiamondItem")
  18. require("game.pet.PetDiamondChooseView")
  19. require("game.pet.PetEvolveSuccessView")
  20. require("game.pet.PetEvolveSuccessAttrItem")
  21. require("game.pet.PetSkillTipsView")
  22. require("game.pet.PetSupportChoosePetView")
  23. require("game.pet.PetSupportRankView")
  24. require("game.pet.PetSupportUnlockView")
  25. require("game.pet.PetSupportView")
  26. require("game.pet.PetSupportChooseItem")
  27. require("game.pet.PetSupportASItem")
  28. require("game.pet.PetSupportNormalItem")
  29. require("game.pet.PetSupportRankItem")
  30. require("game.pet.PetShareLookView")
  31. require("game.pet.PetVoteView")
  32. require("game.pet.PetVoteItem")
  33. require("game.pet.PetCollectionView")
  34. require("game.pet.PetAwakeItem")
  35. require("game.pet.PetAwakeView")
  36. require("game.pet.PetAwakeAttrItem")
  37. require("game.pet.PetCollectAttrItem")
  38. require("game.pet.PetCollectSkillItem")
  39. require("game.pet.PetShareAttrItem")
  40. require("game.pet.PetShareSkillItem")
  41. require("game.pet.PetDiamondComposeView")
  42. require("game.pet.PetDiamondComposeItem")
  43. PetController = PetController or BaseClass(BaseController, true)
  44. local PetController = PetController
  45. function PetController:__init()
  46. PetController.Instance = self
  47. self.model = PetModel:getInstance()
  48. self:AddEvents()
  49. self:RegisterAllProtocal()
  50. end
  51. function PetController:__delete()
  52. end
  53. function PetController:RegisterAllProtocal( )
  54. self:RegisterProtocal(16300, "Handle16300")
  55. self:RegisterProtocal(16301, "Handle16301")
  56. self:RegisterProtocal(16302, "Handle16302")
  57. self:RegisterProtocal(16303, "Handle16303")
  58. self:RegisterProtocal(16304, "Handle16304")
  59. self:RegisterProtocal(16305, "Handle16305")
  60. self:RegisterProtocal(16306, "Handle16306")
  61. self:RegisterProtocal(16307, "Handle16307")
  62. self:RegisterProtocal(16308, "Handle16308")
  63. self:RegisterProtocal(16309, "Handle16309")
  64. self:RegisterProtocal(16310, "Handle16310")
  65. self:RegisterProtocal(16311, "Handle16311")
  66. self:RegisterProtocal(16312, "Handle16312")
  67. self:RegisterProtocal(16313, "Handle16313")
  68. self:RegisterProtocal(16314, "Handle16314")
  69. self:RegisterProtocal(16315, "Handle16315")
  70. self:RegisterProtocal(16316, "Handle16316")
  71. self:RegisterProtocal(16317, "Handle16317")
  72. self:RegisterProtocal(16318, "Handle16318")
  73. end
  74. function PetController:AddEvents()
  75. local function onGameStart()
  76. local function onDelay()
  77. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16301)--请求自己的宠物数据
  78. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16307)--请求声援信息
  79. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16313)
  80. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16310)
  81. end
  82. setTimeout(onDelay, 2)
  83. end
  84. GlobalEventSystem:Bind(EventName.GAME_START, onGameStart)
  85. -- 满足等级后请求信息
  86. local function onLevelUp(level)
  87. if level == GetModuleOpenLevel(163) then
  88. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16301)--请求自己的宠物数据
  89. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16307)--请求声援信息
  90. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16313)
  91. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16310)
  92. end
  93. end
  94. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  95. --请求信息
  96. local function onRequestHandler(...)
  97. local args_list = {...}
  98. if args_list[1] == 16301 then
  99. self:SendFmtToGame(args_list[1])
  100. elseif args_list[1] == 16302 then
  101. self:SendFmtToGame(args_list[1],"iih",args_list[2],args_list[3],args_list[4])
  102. elseif args_list[1] == 16303 then
  103. self:SendFmtToGame(args_list[1],"ic",args_list[2],args_list[3])
  104. elseif args_list[1] == 16304 or args_list[1] == 16314 or args_list[1] == 16315 or args_list[1] == 16316 then
  105. self:SendFmtToGame(args_list[1],"i",args_list[2])
  106. elseif args_list[1] == 16305 then
  107. self:SendFmtToGame(args_list[1],"icil",args_list[2],args_list[3],args_list[4],args_list[5])
  108. elseif args_list[1] == 16308 then
  109. self:SendFmtToGame(args_list[1],"ic",args_list[2],args_list[3])
  110. elseif args_list[1] == 16309 then
  111. self:SendFmtToGame(args_list[1])
  112. elseif args_list[1] == 16311 then
  113. self:SendFmtToGame(args_list[1],"li",args_list[2],args_list[3])
  114. elseif args_list[1] == 16318 then
  115. self:SendFmtToGame(args_list[1],"ci",args_list[2],args_list[3])
  116. else
  117. self:SendFmtToGame(args_list[1])
  118. end
  119. end
  120. self.model:Bind(PetConst.REQUEST_CCMD_EVENT, onRequestHandler)
  121. --打开base界面
  122. local open_pet_view = function (index,right_tab_index)
  123. if self.pet_base_view == nil then
  124. self.pet_base_view = PetBaseView.New()
  125. end
  126. self.pet_base_view:Open(index,right_tab_index)
  127. end
  128. GlobalEventSystem:Bind(EventName.OPEN_PET_VIEW, open_pet_view)
  129. --打开进化预览界面
  130. local function open_pet_preview(pet_id)
  131. -- 特殊处理,初始化绿屏再打开
  132. if LoginModel.ENABLE_GREEN_SCREEN then
  133. CheatModel:getInstance():DisabledGreenScreenEffect(true)
  134. LoginModel.ENABLE_GREEN_SCREEN = true
  135. end
  136. if not self.pet_preview then
  137. self.pet_preview = PetEvolvePreView.New()
  138. end
  139. self.pet_preview:Open(pet_id)
  140. end
  141. self.model:Bind(PetConst.OPEN_PET_PREVIEW, open_pet_preview)
  142. --打开故事界面
  143. local function open_pet_story_view(pet_id)
  144. local story_cfg = self.model:GetPetStoryCfg(pet_id,1)
  145. if not story_cfg then
  146. Message.show("暂无故事")
  147. return
  148. end
  149. if not self.pet_story_view then
  150. self.pet_story_view = PetStoryView.New()
  151. end
  152. self.pet_story_view:Open(pet_id)
  153. end
  154. self.model:Bind(PetConst.OPEN_PET_STORY_VIEW, open_pet_story_view)
  155. --打开宝石选择界面
  156. local function open_diamond_choose_view(pet_id,slot_id)--宠物id、槽位id
  157. if not self.diamond_choose_view then
  158. self.diamond_choose_view = PetDiamondChooseView.New()
  159. end
  160. self.diamond_choose_view:Open(pet_id,slot_id)
  161. end
  162. self.model:Bind(PetConst.OPEN_DIAMOND_CHOOSE_VIEW, open_diamond_choose_view)
  163. --打开宠物进化成功界面
  164. local function open_pet_evolve_success_view(pet_id,action_type)
  165. if not self.pet_evolve_success_view then
  166. self.pet_evolve_success_view = PetEvolveSuccessView.New()
  167. end
  168. self.pet_evolve_success_view:Open(pet_id,action_type)
  169. end
  170. self.model:Bind(PetConst.OPEN_PET_EVOLVE_SUCCESS, open_pet_evolve_success_view)
  171. --打开宠物分享界面
  172. local function open_pet_share_view(vo)
  173. if not self.pet_share_look_view then
  174. self.pet_share_look_view = PetShareLookView.New()
  175. end
  176. self.pet_share_look_view:Open(vo)
  177. end
  178. self.model:Bind(PetConst.OPEN_PET_SHARE_VIEW, open_pet_share_view)
  179. --打开宠物技能tips界面
  180. local function open_pet_skill_tips(skill_data,pet_id,is_awake_skill,share_role_pet_data)
  181. if not self.pet_skill_tips then
  182. self.pet_skill_tips = PetSkillTipsView.New()
  183. end
  184. self.pet_skill_tips:Open(skill_data,pet_id,is_awake_skill,share_role_pet_data)
  185. end
  186. self.model:Bind(PetConst.OPEN_PET_SKILL_TIPS, open_pet_skill_tips)
  187. --打开声援选择宠物界面
  188. local function open_pet_support_choose_view(support_slot)
  189. if not self.pet_support_choose_view then
  190. self.pet_support_choose_view = PetSupportChoosePetView.New()
  191. end
  192. self.pet_support_choose_view:Open(support_slot)
  193. end
  194. self.model:Bind(PetConst.OPEN_PET_SUPPORT_CHOOSE_VIEW, open_pet_support_choose_view)
  195. --打开宠物声援排行榜界面
  196. local function open_pet_support_rank_view()
  197. if not self.pet_support_rank_view then
  198. self.pet_support_rank_view = PetSupportRankView.New()
  199. end
  200. self.pet_support_rank_view:Open()
  201. end
  202. self.model:Bind(PetConst.OPEN_PET_SUPPORT_RANK_VIEW, open_pet_support_rank_view)
  203. --打开宠物投票界面
  204. local function open_pet_vote_view()
  205. if not self.pet_vote_view then
  206. self.pet_vote_view = PetVoteView.New()
  207. end
  208. self.pet_vote_view:Open()
  209. end
  210. self.model:Bind(PetConst.OPEN_PET_VOTE_VIEW, open_pet_vote_view)
  211. --打开宠物声援位解锁界面
  212. local function open_support_unlock_view(support_slot)
  213. if not self.pet_support_unlock_view then
  214. self.pet_support_unlock_view = PetSupportUnlockView.New()
  215. end
  216. self.pet_support_unlock_view:Open(support_slot)
  217. end
  218. self.model:Bind(PetConst.OPEN_SUPPORT_UNLOCK_VIEW, open_support_unlock_view)
  219. --宠物相关物品数量刷新时
  220. local function on_goods_update( goods_sub_type )
  221. if goods_sub_type == 1 then--宠物碎片
  222. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.Evolve)
  223. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.Active)
  224. elseif goods_sub_type == 2 then--升级材料道具
  225. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.Feed)
  226. elseif goods_sub_type == 3 then--技能宝石
  227. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.Diamond)
  228. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.DiamondCompose)
  229. elseif goods_sub_type == 4 then--觉醒碎片
  230. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.Awake)
  231. end
  232. end
  233. self.model:Bind(PetConst.UPDATE_PET_GOODS_NUM, on_goods_update)
  234. local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法
  235. if not tab_id then
  236. self.model:IsNeedRedAll()
  237. else
  238. self.model:IsNeedRed(tab_id)
  239. end
  240. local red_dot = self.model:GetAllRedDot()
  241. local bool = false
  242. for i,v in pairs(red_dot) do
  243. if v then
  244. bool = true
  245. break
  246. end
  247. end
  248. GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 163, bool)
  249. end
  250. self.model:Bind(PetConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func)
  251. --打开宠物宝石合成界面
  252. local function open_diamond_compose_view()
  253. if not self.pet_diamond_compose_view then
  254. self.pet_diamond_compose_view = PetDiamondComposeView.New()
  255. end
  256. self.pet_diamond_compose_view:Open()
  257. end
  258. self.model:Bind(PetConst.OPEN_PET_DIAMOND_COMPOSE_VIEW, open_diamond_compose_view)
  259. local function chnage_day_func(type)
  260. if type == SettingModel.CHANGE_DAY.HOUR_4 then
  261. local function delay_method( )
  262. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16310)
  263. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16313)
  264. end
  265. setTimeout(delay_method, 1)
  266. end
  267. end
  268. GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
  269. end
  270. -- ################ 错误码展示 ################
  271. -- protocol=16300
  272. -- {
  273. -- s2c{
  274. -- errcode :int32
  275. -- }
  276. -- }
  277. function PetController:Handle16300( )
  278. local vo = SCMD16300.New(true)
  279. if vo then
  280. ErrorCodeShow(vo.errcode)
  281. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  282. end
  283. end
  284. -- ############## 宠物选择栏信息 ##############
  285. -- protocol=16301
  286. -- {
  287. -- c2s{}
  288. -- s2c{
  289. -- follow_pet :int32 //跟随的宠物Id
  290. -- pet_list:array{
  291. -- pet_id :int32 //宠物Id
  292. -- pet_star :int8 //宠物星级
  293. -- pet_lv :int16 //宠物培养等级
  294. -- now_exp :int32 //宠物当前经验值
  295. -- attr_list:array{
  296. -- attr_id :int8 //属性Id
  297. -- attr_value :int32 //属性值
  298. -- }
  299. -- power :int64 //宠物战力
  300. -- collect_time :int32 //宠物获得的时间
  301. -- is_awaken :int8 //是否已经觉醒 0-未觉醒 1-已觉醒
  302. -- }
  303. -- }
  304. -- }
  305. function PetController:Handle16301( )
  306. local vo = SCMD16301.New(true)
  307. if vo then
  308. self.model:SetPetList(vo)
  309. for k,v in pairs(vo.pet_list) do
  310. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16304,v.pet_id)
  311. end
  312. self.model:Fire(PetConst.UPDATE_RED_DOT)
  313. self.model:Fire(PetConst.UPDATE_PET_TRAINING_VIEW)--刷新宠物主界面
  314. if self.model.need_update_collect_item then
  315. self.model:Fire(PetConst.UPDATE_COLLECT_ITEM,self.model.need_update_collect_item)--刷新图鉴item
  316. self.model.need_update_collect_item = nil
  317. end
  318. end
  319. end
  320. -- ################# 宠物喂养 #################
  321. -- protocol=16302
  322. -- {
  323. -- c2s{
  324. -- pet_id :int32 //宠物Id
  325. -- feed_good_id :int32 //喂养材料Id
  326. -- good_num :int16 //材料数量
  327. -- }
  328. -- s2c{
  329. -- pet_id :int32 //宠物Id
  330. -- pet_lv :int16 //宠物培养等级
  331. -- now_exp :int32 //宠物当前经验值
  332. -- pet_power :int64 //宠物战力
  333. -- }
  334. -- }
  335. function PetController:Handle16302( )
  336. local vo = SCMD16302.New(true)
  337. if vo then
  338. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  339. self.model:SetPetLvAfterFeed(vo)
  340. local new_data = self.model:GetPetListById(vo.pet_id)
  341. local new_cfg = self.model:GetPetCfg(new_data.pet_id, new_data.pet_star)
  342. self.model:Fire(PetConst.UPDATE_FEED_PANEL, new_data, new_cfg)--刷新升级面板
  343. self.model:Fire(PetConst.UPDATE_PET_FIGHT, vo.pet_power)--刷新战力显示
  344. self.model:Fire(PetConst.PET_FEED,vo)--刷新战力显示
  345. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Feed)
  346. end
  347. end
  348. -- ################# 宠物激活进化 #################
  349. -- protocol=16303
  350. -- {
  351. -- c2s{
  352. -- pet_id :int32 //宠物Id
  353. -- action_type :int8 //操作类型 1,激活 2,进化
  354. -- }
  355. -- s2c{
  356. -- action_type :int8 //操作类型 1,激活 2,进化
  357. -- pet_id :int32 //宠物Id
  358. -- pet_star :int8 //宠物星级
  359. -- pet_power :int64 //宠物战力
  360. -- }
  361. -- }
  362. function PetController:Handle16303( )
  363. local vo = SCMD16303.New(true)
  364. if vo then
  365. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  366. if vo.action_type == 1 then--如果是激活操作,需要重新请求16301数据刷新宠物列表
  367. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16301)
  368. self.model:ActivePet(vo)--先在petlist中创建出这个宠物的位置,具体信息还是需要等16301返回
  369. self.model.need_update_collect_item = vo.pet_id
  370. -- self.model:Fire(PetConst.UPDATE_COLLECT_ITEM,vo.pet_id)--刷新图鉴item
  371. --自动上阵宠物
  372. local recent_support_slot = self.model:GetRecentSupportSlot()
  373. if recent_support_slot and recent_support_slot ~= 0 then
  374. self.model:Fire(PetConst.REQUEST_CCMD_EVENT, 16308, vo.pet_id, recent_support_slot)
  375. end
  376. -- --激活的宠物设置跟随(上阵一号位就是设置为跟随主战)
  377. -- self.model:Fire(PetConst.REQUEST_CCMD_EVENT, 16308, vo.pet_id, 1)
  378. --激活宠物则激活生活技能,加个事件通知
  379. self.model:AdvicePetLifeSkillActived(vo.pet_id)
  380. elseif vo.action_type == 2 then
  381. self.model:SetPetDataAfterUpStar(vo)
  382. self.model:Fire(PetConst.PET_EVOLVE, vo.pet_id)--宠物进化
  383. self.model:Fire(PetConst.UPDATE_PET_FIGHT, vo.pet_power)--刷新战力显示(激活操作直接走16301协议重新刷新整个界面)
  384. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Awake)--升星需要刷新觉醒红点
  385. end
  386. self.model:Fire(PetConst.OPEN_PET_EVOLVE_SUCCESS, vo.pet_id, vo.action_type)--打开进化成功界面
  387. end
  388. end
  389. -- ############### 宠物技能和宝石栏 #################
  390. -- protocol=16304
  391. -- {
  392. -- c2s{
  393. -- pet_id :int32 //宠物Id
  394. -- }
  395. -- s2c{
  396. -- pet_id :int32 //宠物Id
  397. -- skill_list:array{
  398. -- skill_slot_id :int8 //技能槽位Id
  399. -- talent_type :int8 //天赋类型 0,生活技能 1,普攻技能 2,宠物普通技能
  400. -- talent_id :int32 //天赋Id(技能Id)
  401. -- }
  402. -- diamond_list:array{
  403. -- diamond_slot :int8 //宝石槽位Id
  404. -- diamond_id :int32 //宝石Id(物品类型)
  405. -- }
  406. -- }
  407. -- }
  408. function PetController:Handle16304( )
  409. local vo = SCMD16304.New(true)
  410. if vo then
  411. self.model:SetPetSkillData(vo)
  412. self.model:SetPetDiamondData(vo)
  413. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Diamond)--刷新宝石的红点
  414. self.model:Fire(PetConst.UPDATE_PET_DIAMOND_EFFECT,vo.pet_id)
  415. end
  416. end
  417. -- ############### 宠物技能宝石镶嵌 #################
  418. -- protocol=16305
  419. -- {
  420. -- c2s{
  421. -- pet_id :int32 //宠物Id
  422. -- diamond_slot :int8 //技能石槽位Id
  423. -- diamond_id :int32 //技能石Id(物品类型)
  424. -- goods_id :int64 //物品Id
  425. -- }
  426. -- s2c{
  427. -- pet_id :int32 //宠物Id
  428. -- diamond_slot :int8 //技能石槽位Id
  429. -- diamond_id :int32 //技能石Id(物品类型)
  430. -- goods_id :int64 //上槽的物品Id
  431. -- pet_power :int64 //宠物战力
  432. -- }
  433. -- }
  434. function PetController:Handle16305( )
  435. local vo = SCMD16305.New(true)
  436. if vo then
  437. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  438. self.model:SetPetDiamondDataAfterPut(vo)
  439. self.model:Fire(PetConst.UPDATE_PET_DIAMOND_CON,vo.pet_id,vo.diamond_slot)--刷新宝石栏
  440. self.model:Fire(PetConst.UPDATE_PET_FIGHT,vo.pet_power)--刷新战力
  441. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Diamond)--刷新宝石的红点
  442. self.model:Fire(PetConst.UPDATE_PET_DIAMOND_EFFECT,vo.pet_id)
  443. end
  444. end
  445. -- ################# 宠物跟随 ###################
  446. -- protocol=16306
  447. -- {
  448. -- c2s{
  449. -- pet_id :int32 //宠物Id
  450. -- }
  451. -- s2c{
  452. -- role_id :int64 //玩家角色Id
  453. -- pet_id :int32 //宠物Id
  454. -- pet_star :int8 //宠物星级
  455. -- is_follow :int8 //跟随状态
  456. -- }
  457. -- }
  458. function PetController:Handle16306( )
  459. local vo = SCMD16306.New(true)
  460. if vo then
  461. if vo.role_id == RoleManager.Instance:GetMainRoleId() then
  462. self.model:SetPetFollow(vo)
  463. end
  464. self.model:Fire(PetConst.UPDATE_SCENE_PET_MODEL,vo)
  465. end
  466. end
  467. function PetController:TestFollow1(vo)
  468. data = {
  469. role_id = RoleManager.Instance.mainRoleInfo.role_id,
  470. pet_id = vo.pet_id,
  471. is_follow = 1,
  472. pet_star = vo.pet_star,
  473. }
  474. self.model:Fire(PetConst.UPDATE_SCENE_PET_MODEL,data)
  475. end
  476. function PetController:TestFollow2( )
  477. vo = {
  478. role_id = RoleManager.Instance.mainRoleInfo.role_id,
  479. pet_id = 101,
  480. is_follow = 1,
  481. pet_star = 5,
  482. }
  483. self.model:Fire(PetConst.UPDATE_SCENE_PET_MODEL,vo)
  484. end
  485. -- ############### 宠物助战信息 ################
  486. -- protocol=16307
  487. -- {
  488. -- c2s{}
  489. -- s2c{
  490. -- pet_sum_star :int16 //宠物总星级
  491. -- pet_list:array{
  492. -- support_slot :int8 //声援槽位Id
  493. -- pet_id :int32 //宠物Id
  494. -- }
  495. -- }
  496. -- }
  497. function PetController:Handle16307( )
  498. local vo = SCMD16307.New(true)
  499. if vo then
  500. self.model:SetPetSupportData(vo)
  501. end
  502. end
  503. -- ################# 宠物上阵(助战) ##################
  504. -- protocol=16308
  505. -- {
  506. -- c2s{
  507. -- pet_id :int32 //宠物Id
  508. -- support_slot :int8 //声援槽位Id
  509. -- }
  510. -- s2c{
  511. -- pet_id :int32 //宠物Id
  512. -- support_slot :int8 //声援槽位Id
  513. -- old_pet_id :int32 //槽位上原有的宠物,没有则为0
  514. -- old_support_slot :int8 //宠物原来的槽位,没有则为0
  515. -- }
  516. -- }
  517. function PetController:Handle16308( )
  518. local vo = SCMD16308.New(true)
  519. if vo then
  520. self.model:PresentPet(vo)
  521. self.model:Fire(PetConst.UPDATE_SUPPORT_ITEM,vo.support_slot,vo.old_support_slot)--刷新当前槽位的声援item状态
  522. self.model:Fire(PetConst.UPDATE_SUPPORT_ITEM,vo.old_support_slot)--刷新另一个槽位的声援item状态
  523. self.model:Fire(PetConst.REFRESH_PET_SUPPORT_FIGHT)--刷新声援界面的战力
  524. end
  525. end
  526. -- ############### 全服宠物昨日人气榜信息 #################
  527. function PetController:Handle16309( )
  528. local vo = SCMD16309.New(true)
  529. -- print("==WQ==:PetController [start:570] vo:", vo)
  530. -- PrintTable(vo)
  531. -- print("==WQ==:PetController [end]")
  532. if vo then
  533. self.model:SetPetSupportRankData(vo)
  534. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16310)--打开昨日榜界面请求完榜单后请求领奖状态,之后再刷新界面
  535. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16313)--打开投票点赞界面请求完榜单后先请求点赞投票记录
  536. end
  537. end
  538. -- ############### 昨日人气榜奖励领取信息 #################
  539. function PetController:Handle16310( )
  540. local vo = SCMD16310.New(true)
  541. --print("==WQ==:SCMD16310 [start:586] vo:", vo)
  542. --PrintTable(vo)
  543. --print("==WQ==:PetController [end]")
  544. self.model:SetPetRankRewardData(vo)
  545. self.model:Fire(PetConst.UPDATE_PET_SUPPORT_RANK_VIEW)
  546. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Reward)
  547. end
  548. -- ############### 获取分享宠物信息 #################
  549. -- protocol=16311
  550. -- {
  551. -- c2s{
  552. -- role_id :int64 //玩家Id
  553. -- pet_id :int32 //宠物Id
  554. -- }
  555. -- s2c{
  556. -- pet_id :int32 //宠物Id
  557. -- pet_star :int8 //宠物星级
  558. -- pet_lv :int16 //宠物培养等级
  559. -- attr_list:array{
  560. -- attr_id :int8 //属性Id
  561. -- attr_value :int32 //属性值
  562. -- }
  563. -- pet_power :int64 //宠物战力
  564. -- picture:rec_picture //玩家头像
  565. -- }
  566. -- }
  567. function PetController:Handle16311( )
  568. local vo = SCMD16311.New(true)
  569. self.model:Fire(PetConst.OPEN_PET_SHARE_VIEW,vo)
  570. end
  571. -- ############### 全服宠物人气榜信息 #################(废弃)
  572. function PetController:Handle16312( )
  573. local vo = SCMD16312.New(true)
  574. self.model:SetPetVoteData(vo)
  575. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16313)
  576. end
  577. -- ############### 今日宠物投票信息 #################
  578. function PetController:Handle16313( )
  579. local vo = SCMD16313.New(true)
  580. --print("==WQ==:SCMD16313 [start:659] vo:", vo)
  581. --PrintTable(vo)
  582. --print("==WQ==:PetController [end]")
  583. self.model:SetPetMyVoteData(vo)
  584. self.model:Fire(PetConst.UPDATE_VOTE_VIEW)
  585. self.model:Fire(PetConst.UPDATE_LEFT_VOTE_TIMES)
  586. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Vote)
  587. end
  588. -- ############### 宠物投票 #################
  589. function PetController:Handle16314( )
  590. local vo = SCMD16314.New(true)
  591. self.model:SetPetMyVoteData(vo)
  592. -- self.model:Fire(PetConst.UPDATE_VOTE_ITEM_STATE)
  593. -- self.model:Fire(PetConst.UPDATE_LEFT_VOTE_TIMES)
  594. -- self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16312)--投票之后直接请求16312拿到最新数据刷新一遍界面
  595. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16309)--投票之后直接请求16312拿到最新数据刷新一遍界面
  596. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Vote)
  597. end
  598. -- ############### 领取昨日榜奖励 #################
  599. -- protocol=16315
  600. -- {
  601. -- c2s{
  602. -- pet_id :int32 //宠物Id
  603. -- }
  604. -- s2c{
  605. -- res :int32 //错误码
  606. -- pet_id :int32 //宠物Id
  607. -- }
  608. -- }
  609. function PetController:Handle16315( )
  610. local vo = SCMD16315.New(true)
  611. if vo.res == 1 then
  612. self.model:UpdatePetRankRewardData(vo)
  613. self.model:Fire(PetConst.UPDATE_RANK_REWARD_STATE)
  614. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Reward)
  615. else
  616. ErrorCodeShow(vo.res)
  617. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  618. end
  619. end
  620. -- ############### 宠物觉醒 #################
  621. -- protocol=16316
  622. -- {
  623. -- c2s{
  624. -- pet_id :int32 //宠物Id
  625. -- }
  626. -- s2c{
  627. -- res :int32 //错误码
  628. -- pet_id :int32 //宠物Id
  629. -- }
  630. -- }
  631. function PetController:Handle16316( )
  632. local vo = SCMD16316.New(true)
  633. if vo.res == 1 then
  634. self.model:UpdatePetAwakeState(vo)
  635. self.model:Fire(PetConst.PET_AWAKE_SUCCESS)
  636. self.model:Fire(PetConst.UPDATE_RED_DOT,PetConst.RED_DOT_TYPE.Awake)
  637. else
  638. ErrorCodeShow(vo.res)
  639. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  640. end
  641. end
  642. -- ############### 推送助战宠物出战 #################
  643. -- protocol=16317
  644. -- {
  645. -- s2c{
  646. -- role_id :int64 //玩家Id
  647. -- pet_id :int32 //宠物Id
  648. -- pet_star :int16 //宠物星级
  649. -- is_top :int8 //是否助战宠物
  650. -- skill_id :int32 //技能Id
  651. -- }
  652. -- }
  653. function PetController:Handle16317( )
  654. local vo = SCMD16317.New(true)
  655. if vo.role_id == RoleManager.Instance.mainRoleInfo.role_id then return end
  656. vo.is_follow = 1
  657. vo.is_help_pet = true
  658. self.model:Fire(PetConst.UPDATE_SCENE_PET_MODEL,vo)
  659. end
  660. function PetController:Handle16318( )
  661. local vo = SCMD16318.New(true)
  662. if vo.res == 2 then
  663. self.model:Fire(PetConst.UPDATE_RED_DOT, PetConst.RED_DOT_TYPE.DiamondCompose)
  664. else
  665. ErrorCodeShow(vo.res)
  666. end
  667. end