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

464 line
17 KiB

  1. ChildMainViewNew = ChildMainViewNew or BaseClass(BaseView)
  2. local ChildMainViewNew = ChildMainViewNew
  3. --[[
  4. ChildMainViewNew.TabData = {
  5. [1] = {name = "人物", level = MainRoleModel.TabOpenLevel[1]},
  6. }
  7. --]]
  8. function ChildMainViewNew:__init()
  9. self.base_file = "child"
  10. self.layout_file = "ChildMainViewNew"
  11. self.layer_name = "UI"
  12. self.destroy_imm = true
  13. self.use_background = true --全屏界面默认使用这个参数
  14. self.hide_maincancas = true --全屏界面需要放开隐藏主UI
  15. self.change_scene_close = true
  16. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  17. self.need_show_money = false --是否要显示顶部的金钱栏
  18. self.fire_change_visible_event = false
  19. self.model = ChildModel:getInstance()
  20. self.show_figure_id = -1
  21. self.close_fog = true
  22. self.load_callback = function ()
  23. self:LoadSuccess()
  24. self:AddEvent()
  25. end
  26. self.open_callback = function ( )
  27. self:OpenSuccess()
  28. end
  29. self.switch_callback = function(index)
  30. self:SwitchTab(index)
  31. end
  32. self.destroy_callback = function ( )
  33. self:DestroySuccess()
  34. end
  35. end
  36. function ChildMainViewNew:Open( view_id, param)
  37. self.view_id = view_id
  38. self.param = param
  39. BaseView.Open(self)
  40. end
  41. function ChildMainViewNew:LoadSuccess()
  42. local nodes = {
  43. "trainBtn:obj", "handBookBtn:obj", "dressBtn:obj","vehicleBtn:obj",
  44. "skillBtn:obj", "bg:raw", "tabWinCon",
  45. ---------------------------
  46. "showBaby_con/tips_bg/showCSBtn:obj", "showBaby_con/tips_bg/showWorldBtn:obj",
  47. "showBaby_con/tips_bg/showGuildBtn:obj", "showBaby_con:obj",
  48. "modelCon",
  49. "trainBtn/trainBtnRed:obj", --"showBabyBtn/showBabyBtnRed:obj",
  50. "dressBtn/dressBtnRed:obj", "handBookBtn/handBookBtnRed:obj",
  51. "skillBtn/skillBtnRed:obj", "vehicleBtn/vehicleBtnRed:obj",
  52. --晒娃
  53. "con_show_baby:obj",
  54. "con_show_baby/showBabyBtn/showBabyBtnRed:obj",
  55. "con_show_baby/showBabyBtn:obj",
  56. "con_show_baby/icon_can_get:obj",
  57. "con_show_baby/icon_has_get:obj",
  58. "con_show_baby/btn_baby_nice_record:obj",
  59. "con_show_baby/btn_show_baby_rank:obj",
  60. "con_show_baby/con_award",
  61. "con_show_baby/lb_reward_count:tmp",
  62. "con_show_baby/show_baby_bg:img",
  63. "con_show_baby/btn_show_baby_rank/red_btn_show_baby_rank:obj",
  64. }
  65. self:GetChildren(nodes)
  66. self:UpdateBaseView( )
  67. end
  68. function ChildMainViewNew:UpdateBaseView( )
  69. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetJpgImage("baby_main_1280_720"), false)
  70. lua_resM:setOutsideImageSprite(self, self.show_baby_bg_img, GameResPath.GetChildIcon("child_show_baby_bg"), false)
  71. local function bg_back_func( ... )
  72. if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
  73. self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
  74. end
  75. self:MoveUIToBack(self.bg_raw)
  76. end
  77. if self.background_wnd then
  78. bg_back_func()
  79. else
  80. self.bg_back_func = bg_back_func
  81. end
  82. -- 针对特殊分辨率下模型位置会偏移的处理
  83. if ScreenWidth / ScreenHeight < 1280 / 720 then
  84. local cur_height = (720 * ScreenWidth) / 1280
  85. self.add_height = (ScreenHeight - cur_height) / 4
  86. else
  87. self.add_height = 0
  88. end
  89. end
  90. function ChildMainViewNew:AddEvent()
  91. local onBtnClickHandler = function ( target )
  92. if self.trainBtn_obj == target then -- 打开孩子培养
  93. self.model:Fire(ChildConst.OPEN_CHILD_TRAIN_VIEW, true)
  94. elseif self.handBookBtn_obj == target then -- 打开玩具收集
  95. self.model:Fire(ChildConst.OPEN_CHILD_HAND_BOOK_VIEW, true)
  96. elseif self.dressBtn_obj == target then -- 打开孩子时装/载具
  97. if self.model:CheckDressIsOpen() then
  98. self.model:Fire(ChildConst.OPEN_CHILD_DRESS_VIEW, true)
  99. else
  100. local str = string.format('宝宝时装在宝宝%s阶时开放', math.floor(self.model:GetChildMaxGrowState() / 10) )
  101. Message.show(str)
  102. end
  103. elseif self.showBabyBtn_obj == target then -- 晒娃
  104. self.model:Fire(ChildConst.OPEN_SHOW_BABY_VIEW, true)
  105. elseif target == self.btn_show_baby_rank_obj then -- 宝宝排行
  106. self.model:Fire(ChildConst.OPEN_CHILD_RANK_VIEW, true)
  107. elseif target == self.btn_baby_nice_record_obj then -- 点赞记录
  108. self.model:Fire(ChildConst.OPEN_CHILD_NICE_RECORD_VIEW,true)
  109. -- self.showBaby_con_obj:SetActive(true)
  110. -- elseif target == self.showBaby_con_obj then -- 关闭晒娃
  111. -- self.showBaby_con_obj:SetActive(false)
  112. -- elseif target == self.showWorldBtn_obj then -- 世界晒娃
  113. -- self.showBaby_con_obj:SetActive(false)
  114. -- if RoleManager.Instance.mainRoleInfo.level >= Config.Moduleid[110].open_lv then
  115. -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_WORLD)
  116. -- else
  117. -- Message.show("等级不足"..Config.Moduleid[110].open_lv, "fault")
  118. -- end
  119. -- elseif target == self.showCSBtn_obj then -- 跨服晒
  120. -- self.showBaby_con_obj:SetActive(false)
  121. -- if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.ChatOpenLevel.CROSS then
  122. -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_CROSS)
  123. -- else
  124. -- Message.show("等级不足"..Config.ConfigOpenLv.ChatOpenLevel.CROSS, "fault")
  125. -- end
  126. -- --Message.show("2")
  127. -- elseif target == self.showGuildBtn_obj then -- 社团晒
  128. -- self.showBaby_con_obj:SetActive(false)
  129. -- if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.ChatOpenLevel.GUILD and ( RoleManager.Instance:GetMainRoleVo().guild_id and RoleManager.Instance:GetMainRoleVo().guild_id ~= 0) then
  130. -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_GUILD)
  131. -- else
  132. -- Message.show("社团频道还未开启哦", "fault")
  133. -- end
  134. elseif self.skillBtn_obj == target then -- 打开孩子技能
  135. if self.model:CheckSkillIsOpen() then
  136. self.model:Fire(ChildConst.OPEN_CHILD_SKILL_VIEW, true)
  137. else
  138. local str = string.format('宝宝技能在宝宝%s阶时开放', self.model:GetConfigChildKvVal("skill_open_stage"))
  139. Message.show(str)
  140. end
  141. elseif self.vehicleBtn_obj == target then
  142. self.model:Fire(ChildConst.OPEN_CHILD_VEHICLE_VIEW, true)
  143. end
  144. end
  145. -- 功能跳转
  146. AddClickEvent(self.trainBtn_obj, onBtnClickHandler)
  147. AddClickEvent(self.handBookBtn_obj, onBtnClickHandler)
  148. AddClickEvent(self.dressBtn_obj, onBtnClickHandler)
  149. AddClickEvent(self.showBabyBtn_obj, onBtnClickHandler)
  150. AddClickEvent(self.skillBtn_obj, onBtnClickHandler)
  151. AddClickEvent(self.vehicleBtn_obj, onBtnClickHandler)
  152. -- 晒娃
  153. -- AddClickEvent(self.showBaby_con_obj, onBtnClickHandler)
  154. -- AddClickEvent(self.showWorldBtn_obj, onBtnClickHandler)
  155. -- AddClickEvent(self.showCSBtn_obj, onBtnClickHandler)
  156. -- AddClickEvent(self.showGuildBtn_obj, onBtnClickHandler)
  157. AddClickEvent(self.btn_baby_nice_record_obj, onBtnClickHandler)
  158. AddClickEvent(self.btn_show_baby_rank_obj, onBtnClickHandler)
  159. local function on_ans_update_red_dot( tab_id )--设置红点的状态注意此处的协议是从model那边发过来的
  160. self:UpdateRedDot(tab_id)
  161. end
  162. self.on_ans_update_red_dot_id = self.model:Bind(ChildConst.Child_RED_DOT_VIEW, on_ans_update_red_dot)
  163. local function update_model()
  164. self:UpdateRoleModel( )
  165. end
  166. self:BindEvent(self.model, ChildConst.UPDATA_CHILD_MAIN_INFO, update_model)
  167. self:BindEvent(self.model, ChildConst.UPDATA_CHILD_DRESS_INFO, update_model)
  168. local function update_reward_func()
  169. self:UpdateShowBaby()
  170. end
  171. self:BindEvent(self.model, ChildConst.UPDATE_RANK_REWARD_RED, update_reward_func)
  172. local function play_show_baby_effect_func()
  173. self.param = self.param or {}
  174. self.param.need_show_baby_effect = true
  175. self:UpdateShowBaby()
  176. end
  177. self:BindEvent(self.model, ChildConst.PLAY_SHOW_BABY_EFFECT, play_show_baby_effect_func)
  178. end
  179. function ChildMainViewNew:OpenSuccess()
  180. local close_callback = function()
  181. self:Close()
  182. end
  183. self.tab_win = UITabWindow.New(self.transform, nil, nil,
  184. close_callback, self.background_wnd, nil, UITabWindow.SizeSmallHallNoTab, false,nil,true)
  185. --self.tab_win:SetTitleRes("child_asset","child_title") --标题
  186. --self.tab_win:SetBackgroundRes("child_base_bg")
  187. self.tab_win:SetTitleText("宝宝")
  188. self.tab_win:ChangeShowFlag("Child")
  189. self:UpdateView()
  190. if self.view_id then
  191. self:OpenSubView(self.view_id)
  192. self.view_id = nil
  193. end
  194. end
  195. -- 跳转到子界面
  196. function ChildMainViewNew:OpenSubView( view_id )
  197. if view_id == ChildConst.TabId.ChildTrain then -- 打开孩子培养
  198. self.model:Fire(ChildConst.OPEN_CHILD_TRAIN_VIEW, true)
  199. elseif view_id == ChildConst.TabId.ChildHandbook then -- 打开玩具收集
  200. self.model:Fire(ChildConst.OPEN_CHILD_HAND_BOOK_VIEW, true)
  201. elseif view_id == ChildConst.TabId.ChildDress then -- 打开孩子时装/载具
  202. if self.model:CheckDressIsOpen() then
  203. self.model:Fire(ChildConst.OPEN_CHILD_DRESS_VIEW, true)
  204. else
  205. local str = string.format('宝宝时装在宝宝%s阶时开放', math.floor(self.model:GetChildMaxGrowState() / 10) )
  206. Message.show(str)
  207. end
  208. elseif view_id == ChildConst.TabId.ChildSkill then -- 打开孩子技能
  209. if self.model:CheckSkillIsOpen() then
  210. self.model:Fire(ChildConst.OPEN_CHILD_SKILL_VIEW, true)
  211. else
  212. local str = string.format('宝宝技能在宝宝%s阶时开放', self.model:GetConfigChildKvVal("skill_open_stage"))
  213. Message.show(str)
  214. end
  215. elseif view_id == ChildConst.TabId.ChildVehicle then -- 孩子载具
  216. self.model:Fire(ChildConst.OPEN_CHILD_VEHICLE_VIEW, true)
  217. end
  218. end
  219. function ChildMainViewNew:UpdateView()
  220. self:UpdateRoleModel()
  221. self:UpdateShowBaby()
  222. self:UpdateRedDot()
  223. end
  224. function ChildMainViewNew:UpdateRoleModel( )
  225. local show_figure_id = self.model:GetChildCloth()
  226. -- if self.show_figure_id == show_figure_id then
  227. -- return
  228. -- end
  229. self.show_figure_id = show_figure_id
  230. local res_data = {
  231. father_node = self,
  232. transform = self.modelCon,
  233. fashion_type = FuncOpenModel.TypeId.Child,
  234. figure_id = show_figure_id,
  235. ui_model_type = UIModelCommon.ModelType.BackModel,
  236. can_rotate = false,
  237. }
  238. FuncOpenModel:getInstance():SetModelRes(res_data)
  239. local PARAM = ChildConst.MainViewModelAnimParams
  240. SetLocalPosition(self.modelCon, PARAM.START_POS_X, PARAM.START_POS_Y + self.add_height, 0)
  241. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.modelCon)
  242. GlobalTimerQuest:CancelQuest(self.delay_id)
  243. if self.model:GetChildCurState( ) ~= ChildConst.BABY_STATE.BABY then -- 非襁褓期才播动画
  244. local function delay_method( )
  245. self:UpdateAnimation( )
  246. end
  247. self.delay_id = GlobalTimerQuest:AddPeriodQuest(delay_method, 4, 1)
  248. end
  249. end
  250. function ChildMainViewNew:UpdateAnimation( )
  251. local child_model = lua_resM:GetPartModel(self, self.modelCon)
  252. if child_model then
  253. local PARAM = ChildConst.MainViewModelAnimParams
  254. ------------------------------------------------
  255. -- 停一停 循环开始
  256. local action1 = cc.DelayTime.New( PARAM.WAIT_TIME_LEFT )
  257. -- 切换为奔跑动作
  258. local function callback_1()
  259. child_model:ClearActionTimerList()
  260. child_model:PlayActions({"run"})
  261. end
  262. local call_func_1 = cc.CallFunc.New(callback_1)
  263. -- 转向 180 -> 90
  264. local function rotate_right(percent)
  265. child_model.transform.localRotation = Quaternion.Euler(Vector3(0, 180 - (90 * percent),0))
  266. end
  267. local action2 = cc.CustomUpdate.New(PARAM.ROTATE_TIME, rotate_right)
  268. -- 移动
  269. local function move_right(percent)
  270. SetAnchoredPositionX(self.modelCon, PARAM.START_POS_X + PARAM.MOVE_DIST * percent)
  271. end
  272. local action3 = cc.CustomUpdate.New(PARAM.MOVE_TIME, move_right)
  273. -- 转向 90 -> 180
  274. local function rotate_front(percent)
  275. child_model.transform.localRotation = Quaternion.Euler(Vector3(0, 90 + (90 * percent),0))
  276. end
  277. local action4 = cc.CustomUpdate.New(PARAM.ROTATE_TIME, rotate_front)
  278. -- 切换为show2动作
  279. local function callback_2()
  280. child_model:ClearActionTimerList()
  281. child_model:PlayActions({"show2", "show"})
  282. end
  283. local call_func_2 = cc.CallFunc.New(callback_2)
  284. -- 停一停
  285. local action5 = cc.DelayTime.New( PARAM.WAIT_TIME_RIGHT )
  286. -- 向左看 并 切换为奔跑动作
  287. local function callback_3()
  288. child_model:ClearActionTimerList()
  289. child_model:PlayActions({"run"})
  290. end
  291. local call_func_3 = cc.CallFunc.New(callback_3)
  292. -- 转向 180 -> 270
  293. local function rotate_left(percent)
  294. child_model.transform.localRotation = Quaternion.Euler(Vector3(0, 180 + (90 * percent),0))
  295. end
  296. local action6 = cc.CustomUpdate.New(PARAM.ROTATE_TIME, rotate_left)
  297. -- 移动
  298. local function move_left(percent)
  299. SetAnchoredPositionX(self.modelCon, PARAM.START_POS_X + PARAM.MOVE_DIST * (1-percent))
  300. end
  301. local action7 = cc.CustomUpdate.New(PARAM.MOVE_TIME, move_left)
  302. -- 转向 180 -> 270
  303. local function rotate_front2(percent)
  304. child_model.transform.localRotation = Quaternion.Euler(Vector3(0, 270 - (90 * percent),0))
  305. end
  306. local action8 = cc.CustomUpdate.New(PARAM.ROTATE_TIME, rotate_front2)
  307. -- 切换为show2动作(复用上面的方法)
  308. -- 循环结束
  309. ------------------------------------------------
  310. local action9 = cc.Sequence.New( action1, call_func_1, action2, action3, action4, call_func_2, action5,call_func_3, action6, action7, action8, call_func_2)--顺序
  311. local action10 = cc.RepeatForever.New( action9 )
  312. cc.ActionManager:getInstance():addAction(action10, self.modelCon)
  313. end
  314. end
  315. function ChildMainViewNew:UpdateRedDot(id)
  316. if id == ChildConst.TabId.ChildTrain then -- 宝宝培养
  317. self:UpdateTrainRed()
  318. elseif id == ChildConst.TabId.ChildVehicle then -- 坐骑
  319. self:UpdateVehicleRed()
  320. elseif id == ChildConst.TabId.ChildDress then -- 时装
  321. self:UpdateDressRed()
  322. elseif id == ChildConst.TabId.ChildSkill then -- 技能
  323. self:UpdateSkillRed()
  324. elseif id == ChildConst.TabId.ChildHandbook then -- 玩具
  325. self:UpdateHandbookRed()
  326. else
  327. self:UpdateTrainRed()
  328. self:UpdateDressRed()
  329. self:UpdateSkillRed()
  330. self:UpdateHandbookRed()
  331. self:UpdateVehicleRed()
  332. end
  333. end
  334. function ChildMainViewNew:UpdateTrainRed( )
  335. local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildTrain]
  336. self.trainBtnRed_obj:SetActive(bool)
  337. end
  338. function ChildMainViewNew:UpdateDressRed( )
  339. local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildDress]
  340. self.dressBtnRed_obj:SetActive( self.model:CheckDressIsOpen( ) and bool )
  341. end
  342. function ChildMainViewNew:UpdateVehicleRed( )
  343. local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildVehicle]
  344. self.vehicleBtnRed_obj:SetActive( bool )
  345. end
  346. function ChildMainViewNew:UpdateSkillRed( )
  347. local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildSkill]
  348. self.skillBtnRed_obj:SetActive(bool)
  349. end
  350. function ChildMainViewNew:UpdateHandbookRed( )
  351. local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildHandbook]
  352. self.handBookBtnRed_obj:SetActive(bool)
  353. end
  354. function ChildMainViewNew:SwitchTab( index )
  355. end
  356. function ChildMainViewNew:HideChangeCall( bool )
  357. if bool then
  358. self:UpdateRoleModel()
  359. end
  360. end
  361. ----------晒娃相关-start---------
  362. function ChildMainViewNew:UpdateShowBaby( )
  363. local childList = self.model:GetChildInfo()
  364. local get_count = childList.share_reward == 2 and 0 or 1
  365. local color = get_count > 0 and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
  366. self.lb_reward_count_tmp.text = string.format('今日领奖次数:%s/1', HtmlColorTxt( get_count, color))
  367. -- 奖励item
  368. self.award_item = self.award_item or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.con_award)
  369. self.award_item:SetItemSize(78, 78)
  370. local reward = stringtotable(self.model:GetConfigChildKvVal("show_gift"))[1]
  371. self.award_item:SetVisible(reward and true or false)
  372. if reward then
  373. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(reward[1], reward[2])
  374. self.award_item:SetData(typeId, reward[3], nil, nil, lock)
  375. end
  376. self.icon_can_get_obj:SetActive(childList.share_reward == 1)
  377. self.icon_has_get_obj:SetActive(childList.share_reward == 2)
  378. self.award_item:SetGray(childList.share_reward == 2)
  379. if childList.share_reward == 1 then
  380. self.award_item:SetCallBack(function ()
  381. self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16540, 1)
  382. end)
  383. else
  384. self.award_item:SetCallBack( nil )
  385. end
  386. self.showBabyBtnRed_obj:SetActive(childList.share_reward == 0)
  387. if self.param and self.param.need_show_baby_effect then
  388. self:ClearUIEffect(self.showBabyBtn)
  389. self:AddUIEffect("ui_jujiaodianji", self.showBabyBtn, self.layer_name, nil, 1, false, 3)
  390. self.param.need_show_baby_effect = nil
  391. end
  392. self.red_btn_show_baby_rank_obj:SetActive(self.model:GetShowBabyRankReward())
  393. end
  394. ----------晒娃相关-end-----------
  395. function ChildMainViewNew:DestroySuccess( )
  396. if self.tab_win then
  397. self.tab_win:DeleteMe()
  398. self.tab_win = nil
  399. end
  400. if self.on_ans_update_red_dot_id then
  401. self.model:UnBind(self.on_ans_update_red_dot_id)
  402. self.on_ans_update_red_dot_id = nil
  403. end
  404. if self.delay_id then
  405. GlobalTimerQuest:CancelQuest(self.delay_id)
  406. end
  407. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.modelCon)
  408. if self.award_item then
  409. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
  410. end
  411. self.award_item = nil
  412. self:ClearUIEffect(self.showBabyBtn)
  413. end