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

1067 lines
39 KiB

  1. EmpowerGridWalkView = EmpowerGridWalkView or BaseClass(BaseView)
  2. local EmpowerGridWalkView = EmpowerGridWalkView
  3. local FloatAnimType = {
  4. UP = 1,
  5. DOWN = 2,
  6. DOWN_AND_UP = 3,
  7. }
  8. function EmpowerGridWalkView:__init()
  9. self.base_file = "empower"
  10. self.layout_file = "EmpowerGridWalkView"
  11. self.layer_name = "UI"
  12. self.use_background = true
  13. self.hide_maincancas = true
  14. --self.close_mode = CloseMode.CloseDestroy
  15. --self.destroy_imm = true
  16. --self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
  17. self.is_set_zdepth = false
  18. self.append_to_ctl_queue = true --是否要添加进界面堆栈
  19. --self.model = EmpowerModel:GetInstance()
  20. --self.goods_model = GoodsModel:getInstance()
  21. --self.mainVo = RoleManager.Instance.mainRoleInfo
  22. self.model = EmpowerModel:GetInstance()
  23. self.max_grid_num = Config.Latticekv["max_lattice_step"].val
  24. self.coupon_id = Config.Latticekv["coupon_id"].val
  25. self.reward_items = {}
  26. self.model:SetIsShowingGameView(true)
  27. self.item_pool = {} -- 双倍特效缓存池
  28. self.box_list = {} -- 奖励池
  29. self.box_float_anim_state = {} -- 地板浮动动画状态
  30. self.load_callback = function ()
  31. self:LoadSuccess()
  32. self:AddEvent()
  33. end
  34. self.open_callback = function ( )
  35. self:OpenSuccess()
  36. end
  37. self.destroy_callback = function ( )
  38. self:DestroySuccess()
  39. end
  40. end
  41. function EmpowerGridWalkView:Open( )
  42. BaseView.Open(self)
  43. end
  44. function EmpowerGridWalkView:AddEvent( )
  45. local on_click = function ( click_obj )
  46. if self.throw_die_obj == click_obj or self.dice_obj == click_obj then
  47. self:StartThrowDie()
  48. -- elseif self.shop_obj == click_obj then
  49. -- self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1)
  50. elseif self.equip_obj == click_obj then
  51. --local new_pos = self.fly_con:InverseTransformPoint(Vector3(0,0,0))
  52. --self:FlyAwardItemToBag(270013, new_pos)
  53. self:Close()
  54. OpenFun.Open(152, 5)
  55. elseif self.treasure_obj == click_obj then
  56. self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1)
  57. elseif self.use_goods_obj == click_obj then
  58. self:UpdateInfo()
  59. elseif self.close_obj == click_obj then
  60. self:Close()
  61. elseif self.question_btn_obj == click_obj then
  62. EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 41401)
  63. end
  64. end
  65. AddClickEvent(self.close_obj, on_click)
  66. AddClickEvent(self.throw_die_obj, on_click)
  67. AddClickEvent(self.dice_obj, on_click)
  68. AddClickEvent(self.equip_obj, on_click)
  69. AddClickEvent(self.shop_obj, on_click)
  70. AddClickEvent(self.treasure_obj, on_click)
  71. AddClickEvent(self.use_goods_obj, on_click)
  72. AddClickEvent(self.question_btn_obj, on_click)
  73. self.on_grid_game_info_changed_id = self.model:BindOne("grid_game_info", function()
  74. self:UpdateView()
  75. end)
  76. local on_bag_change = function( )
  77. self:UpdateGoodsNum()
  78. end
  79. if not self.on_bag_change then
  80. self.on_bag_change = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, on_bag_change)
  81. end
  82. local function on_ans_update_red_dot( )
  83. self:UpdateEmpowerShopRedDot()
  84. end
  85. self.on_ans_update_red_dot_id = self.model:Bind(EmpowerConst.EMPOWER_SHOP_RED_DOT, on_ans_update_red_dot)
  86. local function onInfoUpdate_func()
  87. print("============>>> YiRan:EmpowerGridWalkView [start:80] :")
  88. end
  89. self.EMGRIDWALK_INFO_ID = self.model:Bind(EmpowerConst.UPDATA_EMGRIDWALK_INFO,onInfoUpdate_func)
  90. local function onInfoUpdate_func_41410(scmd)
  91. if scmd.res == 1 then
  92. local time_wait = 1
  93. local is_turn_fast = self.get_fast_tog.isOn
  94. if is_turn_fast then
  95. --Message.show("fast") --加速直接给结果
  96. lua_resM:setImageSprite(self,self.dice_img, "empower_asset", "gridwalk_dice_"..scmd.walk)
  97. time_wait = 0.05
  98. else
  99. --Message.show("slow") -- 不加速就播放图片
  100. self:PlayDiceAnimate(scmd.walk) --下为等待骰子后人物走动动画表现
  101. end
  102. self.delayMoveCom = self.delayMoveCom or self:AddUIComponent(UI.Countdown)
  103. self.delayMoveCom:DelayCallByLeftTime(time_wait, function()
  104. self:StartMoveGrid(scmd.new_step-scmd.walk, scmd.new_step)
  105. end)
  106. else
  107. self.lock_throw_die = false
  108. end
  109. --end
  110. end
  111. self.EMGRIDWALK_INFO_41410_ID = self.model:Bind(EmpowerConst.UPDATA_EMGRIDWALK_INFO41410,onInfoUpdate_func_41410)
  112. local function onRESET_EMGRIDWALK_SUCCESS_func()
  113. self.had_updated_items = false
  114. self:ResSetAnimation()
  115. self:InitWayPoint(true)
  116. self:ResetRolePos()
  117. self:UpdateView()
  118. end
  119. self.RESET_EMGRIDWALK_SUCCESS_ID = self.model:Bind(EmpowerConst.RESET_EMGRIDWALK_SUCCESS,onRESET_EMGRIDWALK_SUCCESS_func)
  120. end
  121. function EmpowerGridWalkView:LoadSuccess()
  122. self.nodes = {
  123. "throw_die:obj:img","role_con","grid_con:obj","close:obj",
  124. "use_goods:tog:obj","grid_con/big_reward_scroll","grid_con/big_reward_scroll/Viewport/big_reward_con",
  125. "shop:obj","award_scroll","dice:img:obj","equip:obj","award_scroll/Viewport/award_con",
  126. "treasure:obj",
  127. "has_goods_num:tmp","fly_con","free_num_word:tmp","shop_red:obj","throw_red:obj",
  128. "dice_con:obj","reset_num:tmp","bg:img:raw",
  129. "throw_die/throw_die_txt:tmp", "con_money",
  130. "get_fast:tog:obj",
  131. "question_btn:obj", "img_money:obj", "bg/doule_txt:obj",
  132. "resetCon:obj", "resetCon/grid_walk_reset_bg:raw", "resetCon/reset_item_con",
  133. ---------------------------------------------
  134. "effectCon:obj", -- 特效挂点
  135. "throw_die/pic_throw_die_start:obj", "throw_die/pic_throw_die_reset:obj",
  136. }
  137. self:GetChildren(self.nodes)
  138. self.dice_con_obj:SetActive(false)
  139. self.get_fast_tog.isOn = false -- 默认不加速
  140. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("grid_walk_bg_1560_720"),false)
  141. lua_resM:setOutsideRawImage(self, self.grid_walk_reset_bg_raw, GameResPath.GetEmpowerIcon("grid_walk_reset1_1278_89"), false)
  142. SetAnchoredPositionX(self.dice_con, -160)
  143. SetAnchoredPositionX(self.big_reward_scroll, 125)
  144. local function bg_back_func( ... )
  145. if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
  146. self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
  147. end
  148. self:MoveUIToBack(self.bg_raw)
  149. end
  150. if self.background_wnd then
  151. bg_back_func()
  152. else
  153. self.bg_back_func = bg_back_func
  154. end
  155. self:InitWayPoint()
  156. self:InitRoleModel()
  157. self:InitShowRewards()
  158. end
  159. function EmpowerGridWalkView:OpenSuccess()
  160. --local select_callback = function(index)
  161. --end
  162. self:UpdateView()
  163. if not self.money_view then
  164. self.money_view = UIMoneyView.New(self.con_money)
  165. end
  166. self.money_view:SetPosition(0,0)
  167. self.money_view:SetData()
  168. self.money_view:ChangeShowFlag("smallWindow2")
  169. end
  170. function EmpowerGridWalkView:InitShowRewards( )
  171. self.show_award_items_com = self.show_award_items_com or self:AddUIComponent(UI.ItemListCreator)
  172. local award_list = stringtotable(Config.Latticekv["lattice_rewards_show"].val)
  173. local info = {
  174. data_list = award_list,
  175. item_con = self.award_con,
  176. scroll_view = self.award_scroll,
  177. obj_pool_type = UIObjPool.UIType.AwardItem,
  178. start_y = -5,
  179. start_x = 5,
  180. item_width = 62,
  181. space_x = 7,
  182. --alignment = UnityEngine.TextAnchor.UpperCenter,
  183. on_update_item = function(item, i, v)
  184. item:SetData(v[2], v[3])
  185. end,
  186. }
  187. self.show_award_items_com:UpdateItems(info)
  188. end
  189. function EmpowerGridWalkView:InitWayPoint(isReset)
  190. if isReset then
  191. self.model.gridWalkRandomNum = math.random(1, #EmpowerConst.GridWalkDicePos)
  192. end
  193. self.way_points = {}
  194. self.way_point_nodes = {}
  195. local random_num = self.model.gridWalkRandomNum or math.random(1, #EmpowerConst.GridWalkDicePos)
  196. local road_pos_list = EmpowerConst.GridWalkDicePos[random_num]
  197. if not road_pos_list then return end
  198. -- lua_resM:setOutsideRawImage(self, self.map_root_bg_raw, GameResPath.GetEmpowerIcon("grid_walk_bg"..random_num), false)
  199. for i=0,self.max_grid_num do
  200. self.way_point_nodes[i] = self:GetChild("grid_con/grid_"..i)
  201. SetLocalPositionX(self.way_point_nodes[i], road_pos_list[i].pos_x + 5)
  202. SetLocalPositionY(self.way_point_nodes[i], road_pos_list[i].pos_y - 10)
  203. SetLocalScale(self.way_point_nodes[i], 1, 1, 1)
  204. self.way_points[i] = self.way_point_nodes[i].localPosition
  205. end
  206. -- 奖励格子底下的圆盘底
  207. self.circle_img_list = {}
  208. self.circle_img_list_img = {}
  209. for i=1, 24 do
  210. self.circle_img_list[i] = self:GetChild("grid_con/circleBgCon/circle_" .. i)
  211. self.circle_img_list[i].gameObject:SetActive(false)
  212. self.circle_img_list_img[i] = self.circle_img_list[i]:GetComponent("Image")
  213. end
  214. end
  215. function EmpowerGridWalkView:UpdateRewardItems( )
  216. local cur_step = self.game_info and self.game_info.step or 0
  217. self.big_rewards_cfg = nil
  218. -- -- 隐藏圆盘底
  219. -- local reward_count = 0
  220. -- for k,v in pairs(self.reward_img_list) do
  221. -- v.gameObject:SetActive(false)
  222. -- end
  223. -- 停止动画
  224. self:RemovellAwardAnim()
  225. for i,v in ipairs(self.way_points) do
  226. self.reward_items[i] = self.reward_items[i] or {}
  227. local cfg = Config.Latticereward[i.."@"..self.game_info.turn]
  228. if not cfg then return end
  229. local is_need_show_award_item = cur_step < i
  230. if not self.box_list[i] then
  231. self.box_list[i] = self:GetChild("grid_con/box_"..i)
  232. -- 用宝箱模型
  233. self:AddTreasureModel(self.box_list[i])
  234. end
  235. local box = self.box_list[i]
  236. box.gameObject:SetActive(cur_step < i)
  237. local pos = self.way_points[i]
  238. SetLocalPosition(box, pos.x, pos.y, pos.z+150) -- +150为了把箱子往后拉,主角在前
  239. self.reward_items[i].show_type = cfg.type
  240. self.reward_items[i].box = box
  241. if cfg.type == EmpowerConst.GridType.NormalBox then
  242. -- 设置地板位置
  243. if cur_step == i and cur_step ~= 0 and not self.box_float_anim_state[i] then
  244. SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10 - 10, pos.z+150)
  245. elseif not self.box_float_anim_state[i] then
  246. SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10, pos.z+150)
  247. end
  248. lua_resM:setImageSprite(self, self.circle_img_list_img[i], "empower_asset", "gridwalk_girdbg", false)
  249. self.circle_img_list[i].gameObject:SetActive(true)
  250. elseif cfg.type == EmpowerConst.GridType.Reward then
  251. box.gameObject:SetActive(false)
  252. -- 设置地板位置
  253. if cur_step == i and cur_step ~= 0 and not self.box_float_anim_state[i] then -- 当前踩的地板位置会下移一点
  254. SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10 - 10, pos.z+150)
  255. elseif not self.box_float_anim_state[i] then -- 如果没有动画中
  256. SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10, pos.z+150)
  257. end
  258. lua_resM:setImageSprite(self, self.circle_img_list_img[i], "empower_asset", "gridwalk_girdbg2", false)
  259. self.circle_img_list[i].gameObject:SetActive(true)
  260. -- -- 奖励
  261. -- self.reward_items[i].award_item = self.reward_items[i].award_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.grid_con)
  262. -- local award_item = self.reward_items[i].award_item
  263. -- award_item:SetItemSize(78, 78)
  264. -- award_item:SetVisible(is_need_show_award_item)
  265. -- award_item:SetItemBgVisible(false)
  266. -- SetLocalScale(self.way_point_nodes[i], 1, 1, 1)
  267. -- award_item:SetParent(self.way_point_nodes[i])
  268. -- SetLocalScale(self.way_point_nodes[i], 1.2, 1.2, 1.2)
  269. -- award_item:SetPosition(0, 30)
  270. -- self:AddAwardAnim(award_item.transform)
  271. -- local award_info = self.game_info.show_reward[i]
  272. -- if award_info and award_info.step_reward and award_info.step_reward[1] then
  273. -- -- local goods_num = award_info.step_reward[1].good_num
  274. -- -- if award_info.is_double==2 then
  275. -- -- goods_num = goods_num/2
  276. -- -- end
  277. -- -- award_item:SetData(award_info.step_reward[1].good_id, goods_num)
  278. -- award_item:SetData(award_info.step_reward[1].good_id, nil ,nil, nil, nil, nil, nil, nil, nil, true)
  279. -- end
  280. -- 奖励 (一个图标)
  281. -- self.reward_items[i].award_item = self.reward_items[i].award_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.grid_con)
  282. if not self.reward_items[i].award_item then
  283. local image_item = {}
  284. image_item.gameObject = UiFactory.createChild(self.grid_con, UIType.Image)
  285. image_item.transform = image_item.gameObject.transform
  286. image_item.img = image_item.gameObject:GetComponent("Image")
  287. SetLocalScale(image_item.transform, 0.8, 0.8, 0.8)
  288. self.reward_items[i].award_item = image_item
  289. end
  290. local award_item = self.reward_items[i].award_item
  291. award_item.gameObject:SetActive(is_need_show_award_item)
  292. local award_info = self.game_info.show_reward[i]
  293. if award_info and award_info.step_reward and award_info.step_reward[1] then
  294. local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(award_info.step_reward[1].good_id)
  295. local goods_icon = goods_vo and goods_vo.goods_icon or 0
  296. lua_resM:setOutsideImageSprite(self, award_item.img, GameResPath.GetGoodsIcon(goods_icon), true)
  297. SetLocalPosition(award_item.transform, pos.x -5, pos.y + 30, pos.z)
  298. self:AddAwardAnim(award_item.transform, GetLocalPositionY(award_item.transform))
  299. end
  300. elseif cfg.type == EmpowerConst.GridType.BigBox then
  301. box.gameObject:SetActive(false)
  302. local award_info = self.game_info.show_reward[i]
  303. if award_info and award_info.step_reward and award_info.step_reward[1] then
  304. self.big_reward_list = award_info.step_reward
  305. end
  306. end
  307. end
  308. self.had_updated_items = true
  309. self:UpdateBigRewards()
  310. end
  311. function EmpowerGridWalkView:UpdateBigRewards( )
  312. self.big_reward_items_com = self.big_reward_items_com or self:AddUIComponent(UI.ItemListCreator)
  313. if not self.big_reward_list then return end
  314. -- local award_list = stringtotable(self.big_reward_list.reward_show)
  315. local info = {
  316. data_list = self.big_reward_list,
  317. item_con = self.big_reward_con,
  318. scroll_view = self.big_reward_scroll,
  319. obj_pool_type = UIObjPool.UIType.AwardItem,
  320. start_y = -5,
  321. item_width = 59,
  322. space_x = 20,
  323. --alignment = UnityEngine.TextAnchor.UpperCenter,
  324. on_update_item = function(item, i, v)
  325. local goods_num = v.good_num
  326. if self.game_info and self.game_info.show_reward and self.max_grid_num and self.game_info.show_reward[self.max_grid_num] and self.game_info.show_reward[self.max_grid_num].is_double==2 then
  327. goods_num = goods_num / 2
  328. end
  329. item:SetData(v.good_id, goods_num)
  330. -- item:SetData(v[2], v[3])
  331. end,
  332. }
  333. self.big_reward_items_com:UpdateItems(info)
  334. end
  335. function EmpowerGridWalkView:RolePlatAnimation(play_animation)
  336. local uimodelclass = lua_resM:GetPartModel(self, self.role_con)
  337. if play_animation and uimodelclass then
  338. uimodelclass:PlayActions(play_animation) --播放界面动画
  339. end
  340. end
  341. function EmpowerGridWalkView:InitRoleModel()
  342. -- 加载模型
  343. local res_data = {
  344. father_node = self,
  345. transform = self.role_con,
  346. fashion_type = FuncOpenModel.TypeId.Clothes,
  347. size = Vector2(540, 400),
  348. raycast_size = Vector2(200, 277),
  349. action_name_list = {"idle"},
  350. scale = 55,
  351. can_rotate = false,
  352. rotate = Vector3(0, 0, 0),
  353. position = Vector3(0, 0, 0),
  354. -- position = Vector3(10, 305, 0),
  355. show_shadow = false,
  356. ui_model_type = UIModelCommon.ModelType.Model,
  357. layer_name = self.layer_name,
  358. -- weapon_res_id = "nil",
  359. force_hide_wing = true,
  360. }
  361. FuncOpenModel:getInstance():SetModelRes(res_data)
  362. self:ResetRolePos()
  363. end
  364. function EmpowerGridWalkView:ResetRolePos( )
  365. local game_info = self.model:GetGridGameInfo()
  366. local cur_step = game_info and game_info.step or 0
  367. local pos = self.way_points[cur_step]
  368. SetLocalPosition(self.role_con, pos.x, pos.y, pos.z)
  369. self.role_con.localRotation = self:GetRotationByDir(0)
  370. end
  371. function EmpowerGridWalkView:UpdateEmpowerShopRedDot( )
  372. if self.shop_red_obj then
  373. local bool = self.model:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop]
  374. self.shop_red_obj:SetActive(bool)
  375. end
  376. end
  377. function EmpowerGridWalkView:StartThrowDie( )
  378. if self.lock_throw_die then
  379. Message.show("播放动画中...")
  380. return
  381. end
  382. if self.is_moved_last_grid then --重置判断
  383. if not self.reset_cost then
  384. Message.show("当前不可重置")
  385. return
  386. end
  387. self.model:Fire(EmpowerConst.OPEN_RESET_TIPVIEW_VIEW)
  388. return
  389. end
  390. function ok_function( flag )
  391. if RoleManager.Instance.mainRoleInfo:GetRealJin() < self.cur_cost_for_dice then
  392. Message.show("余额不足哦~")
  393. return
  394. end
  395. self.lock_throw_die = true
  396. local useGoodsFlag = self.use_goods_tog.isOn and 1 or 0
  397. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41410,useGoodsFlag)
  398. end
  399. if (self.cur_cost_for_dice and self.cur_cost_for_dice == 0) or self.model.isAutoBuyGridWalk then
  400. ok_function()
  401. else
  402. function toggle_function( flag )
  403. self.model.isAutoBuyGridWalk = flag
  404. end
  405. --需要显示购买提示界面
  406. local data = {
  407. titleText = "提示",
  408. price = self.cur_cost_for_dice,
  409. okText = "确定",
  410. -- gold_ab_res = gold_ab_res,
  411. -- gold_res = res_name,
  412. priceText = HtmlColorTxt(self.cur_cost_for_dice, ColorUtil.YELLOW_DARK) .. " 进行一次升品之路", --.. HtmlColorTxt("1彩钻", "#d322ff"),
  413. ok_callback = ok_function,
  414. toggle_function = toggle_function,
  415. nameText = "是否使用",
  416. insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次
  417. }
  418. GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data)
  419. end
  420. end
  421. function EmpowerGridWalkView:PlayDiceAnimate( last_step )
  422. lua_soundM:PlayEffect(self, "dice", false, LuaSoundManager.SOUND_TYPE.UI)
  423. local action_list = {}
  424. local data = {
  425. clothe_res_id = "dice_3000",
  426. role_type = SceneBaseType.Role,
  427. layer_name = self.layer_name,
  428. action_name_list = {"show"},
  429. can_rotate = true,
  430. scale = 64,
  431. position = Vector3(0, 10, 0),
  432. hide_with_view = true,
  433. callBack = function()
  434. self.dice_obj:SetActive(false)
  435. end,
  436. }
  437. self.dice_node = lua_resM:SetRoleModel(self,self.dice_con,data)
  438. self.dice_con_obj:SetActive(true)
  439. -- for i=1,10 do
  440. -- local randomNum = math.random(1,6)
  441. -- local spriteAction = cc.Sprite.New("empower_asset:gridwalk_dice_"..randomNum)
  442. -- table.insert(action_list, spriteAction)
  443. -- -- spriteAction:setTarget(self.dice_img)
  444. -- table.insert(action_list, cc.DelayTime.New(0.1))
  445. -- end
  446. local time_roll_dice = 1.2
  447. --local is_turn_fast = self.get_fast_tog.isOn
  448. --if is_turn_fast then
  449. -- Message.show("fast")
  450. -- time_roll_dice = 0.2
  451. --else
  452. -- Message.show("slow")
  453. --end
  454. table.insert(action_list, cc.DelayTime.New(time_roll_dice))
  455. local spriteAction = cc.Sprite.New("empower_asset:gridwalk_dice_"..last_step)
  456. table.insert(action_list, spriteAction)
  457. local on_end = function()
  458. self.dice_con_obj:SetActive(false)
  459. self.dice_obj:SetActive(true)
  460. end
  461. table.insert(action_list, cc.CallFunc.New(on_end))
  462. local sum_action = cc.Sequence.createWithTable(action_list)
  463. cc.ActionManager:getInstance():addAction(sum_action, self.dice_img)
  464. end
  465. function EmpowerGridWalkView:FlyAwardItemToBag( goods_type_id,start_pos,drop_num )
  466. -- local goods_list = {goods_type_id}
  467. -- MainUIModel:getInstance():PlayGoodsFlyList(goods_list)
  468. -- local float_list = {{goods_type_id = goods_type_id,num = drop_num}}
  469. -- MainUIModel:getInstance():AddFloatInfo(float_list,true)
  470. self.image_pool = self.image_pool or {}
  471. local image_item
  472. if #self.image_pool > 0 then
  473. image_item = table.remove(self.image_pool, #self.image_pool)
  474. else
  475. image_item = {}
  476. image_item.gameObject = UiFactory.createChild(self.fly_con, UIType.Image)
  477. image_item.transform = image_item.gameObject.transform
  478. image_item.img = image_item.gameObject:GetComponent("Image")
  479. SetLocalScale(image_item.transform, 0.8, 0.8, 0.8)
  480. end
  481. image_item.gameObject:SetActive(true)
  482. local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_type_id)
  483. local goods_icon = goods_vo and goods_vo.goods_icon or 0
  484. -- goods_icon = 100000
  485. -- print('Cat:EmpowerGridWalkView.lua[1818] goods_icon', goods_icon, image_item.img)
  486. lua_resM:setOutsideImageSprite(self, image_item.img, GameResPath.GetGoodsIcon(goods_icon), true)
  487. SetLocalPosition(image_item.transform, start_pos.x, start_pos.y, start_pos.z)
  488. local flyAction = cc.FlyToRandom.New(start_pos, Vector3.New(1200, 350, 0))
  489. local ease_action = cc.EaseOut.New( flyAction, 0.5 )
  490. local action = cc.Sequence.New(ease_action, cc.CallFunc.New(function()
  491. image_item.gameObject:SetActive(false)
  492. table.insert(self.image_pool, image_item)
  493. end))
  494. cc.ActionManager:getInstance():addAction(action, image_item.transform)
  495. end
  496. function EmpowerGridWalkView:FlyAwardItemToBagByIndex( i )
  497. local rewardAbsPos
  498. local new_pos
  499. if self.reward_items[i].award_item then
  500. rewardAbsPos = self.reward_items[i].award_item.transform.position
  501. new_pos = self.fly_con:InverseTransformPoint(rewardAbsPos)
  502. -- local rewardPos = self.reward_items[i].award_item:GetPosition()
  503. -- rewardAbsPos = self.reward_items[i].award_item.transform and self.reward_items[i].award_item.transform.localPosition or rewardPos
  504. elseif self.reward_items[i].box then
  505. rewardAbsPos = self.reward_items[i].box.transform and self.reward_items[i].box.transform.position
  506. new_pos = self.fly_con:InverseTransformPoint(rewardAbsPos)
  507. new_pos.x = new_pos.x
  508. new_pos.y = new_pos.y + 40
  509. end
  510. if not rewardAbsPos then return end
  511. local show_goods_type_id = nil
  512. local award_info = self.game_info.show_reward[i]
  513. if award_info and award_info.step_reward and award_info.step_reward[1] then
  514. show_goods_type_id = award_info.step_reward[1].good_id
  515. end
  516. self:FlyAwardItemToBag(show_goods_type_id, new_pos)
  517. end
  518. function EmpowerGridWalkView:StartMoveGrid( start_index, end_index )
  519. local time_run = 0.5
  520. --local is_turn_fast = self.get_fast_tog.isOn
  521. --if is_turn_fast then
  522. -- Message.show("fast")
  523. -- time_run = 0.1
  524. --else
  525. -- Message.show("slow")
  526. --end
  527. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.role_con)
  528. start_index = math.max(0, start_index)
  529. end_index = math.min(#self.way_points, end_index)
  530. --self.role_node:PlayAnimation("run")
  531. self:RolePlatAnimation({"run"})
  532. local start_pos = self.way_points[start_index]
  533. local action_list = {cc.Place.New(start_pos.x, start_pos.y, start_pos.z)}
  534. for i=start_index+1, end_index do
  535. local pos = self.way_points[i]
  536. local move_action = cc.MoveTo.createLocalType(time_run, pos.x, pos.y, pos.z)
  537. local change_dir_func = function()
  538. --根据起始点和目标坐标计算角色朝向,改变其角度
  539. local dir = self:CalculateDirection(self.way_points[i-1], pos)
  540. self.role_con.localRotation = self:GetRotationByDir(dir)
  541. end
  542. table.insert(action_list, cc.CallFunc.New(change_dir_func))
  543. table.insert(action_list, move_action)
  544. local reach_target = function ( )
  545. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  546. local is_double = false
  547. if self.game_info and self.game_info.show_reward and self.game_info.show_reward[i] then
  548. is_double = self.game_info.show_reward[i].is_double==2
  549. lua_soundM:PlayEffect(self, is_double and "double_box" or "one_box", false, LuaSoundManager.SOUND_TYPE.UI)
  550. end
  551. if is_double and self.way_point_nodes[i] then
  552. -- self:ClearUIEffect(self.way_point_nodes[i])
  553. self:AddDoubleEffect(self.way_point_nodes[i])
  554. -- self:AddUIEffect("ui_shuangbei", self.way_point_nodes[i], self.layer_name, {x=0,y=0}, 1, false) --特效暂时屏蔽掉,有再开启
  555. end
  556. if self.reward_items[i].show_type == EmpowerConst.GridType.Reward and self.reward_items[i].award_item then
  557. self.reward_items[i].award_item.gameObject:SetActive(false)
  558. self:FlyAwardItemToBagByIndex(i)
  559. if is_double then
  560. self:FlyAwardItemToBagByIndex(i)
  561. end
  562. -- 格子漂浮动画
  563. if i == end_index then
  564. self:PlayGridFloatAnim(i, FloatAnimType.DOWN)
  565. else
  566. self:PlayGridFloatAnim(i, FloatAnimType.DOWN_AND_UP)
  567. end
  568. elseif self.reward_items[i].show_type == EmpowerConst.GridType.NormalBox and self.reward_items[i].box then
  569. local box_img = self.reward_items[i].box:GetComponent("Image")
  570. -- 播完特效后回调
  571. local end_cb = function ( )
  572. self.box_list[i].gameObject:SetActive(false)
  573. -- lua_resM:setImageSprite(self, box_img, "empower_asset", "gridwalk_icon_box_open", true)
  574. self:FlyAwardItemToBagByIndex(i)
  575. if is_double then
  576. self:FlyAwardItemToBagByIndex(i)
  577. end
  578. end
  579. self:AddUIEffect("ui_hunliqiudianliang", self.way_point_nodes[i], self.layer_name, {x=0,y=20}, 3, false, 0.5, nil, end_cb)
  580. -- 格子漂浮动画
  581. if i == end_index then
  582. self:PlayGridFloatAnim(i, FloatAnimType.DOWN)
  583. else
  584. self:PlayGridFloatAnim(i, FloatAnimType.DOWN_AND_UP)
  585. end
  586. elseif self.reward_items[i].show_type == EmpowerConst.GridType.BigBox then
  587. --显示结算界面
  588. local show_data = self.model:GetGameSumRewardList()
  589. -- GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW,show_data)
  590. if show_data then
  591. GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, show_data.award)
  592. end
  593. end
  594. end
  595. table.insert(action_list, cc.CallFunc.New(reach_target))
  596. end
  597. local end_func = function()
  598. --跑完全程后就面向观众
  599. self.role_con.localRotation = self:GetRotationByDir(0)
  600. self:RolePlatAnimation({"idle"})
  601. self.lock_throw_die = false
  602. if self.is_need_update_view then
  603. self.is_need_update_view = false
  604. self:UpdateView()
  605. end
  606. end
  607. table.insert(action_list, cc.CallFunc.New(end_func))
  608. local sum_action = cc.Sequence.createWithTable(action_list)
  609. cc.ActionManager:getInstance():addAction(sum_action, self.role_con)
  610. if start_index ~= 0 and start_index < 24 then
  611. self:PlayGridFloatAnim(start_index, FloatAnimType.UP)
  612. end
  613. end
  614. --返回四个方向
  615. function EmpowerGridWalkView:CalculateDirection( start_pos, end_pos )
  616. local angle = math.atan2((end_pos.y-start_pos.y), (end_pos.x-start_pos.x))*180/math.pi
  617. if angle < 0 then
  618. angle = angle + 360
  619. end
  620. -- print('Cat:EmpowerGridWalkView.lua[10611] angle', angle)
  621. local range_per_dir = 15
  622. --之所以不用一个公式搞定是因为有可能某些方向的范围需要特殊处理(下面备注的角度是以15为例子的)
  623. if (angle >= 0 and angle <= range_per_dir) or
  624. ( angle >= 360 - range_per_dir and angle <= 360 ) then -- 0~15 或 345~360
  625. return EmpowerConst.Direction.Right
  626. elseif angle >= range_per_dir and angle <= 90-range_per_dir then -- 15~75
  627. return EmpowerConst.Direction.RightUp
  628. elseif angle >= 90-range_per_dir and angle <= 90+range_per_dir then -- 75~105
  629. return EmpowerConst.Direction.Up
  630. elseif angle >= 90+range_per_dir and angle <= 180-range_per_dir then -- 105~ 165
  631. return EmpowerConst.Direction.LeftUp
  632. elseif angle >= 180-range_per_dir and angle <= 180+range_per_dir then -- 165~195
  633. return EmpowerConst.Direction.Left
  634. elseif angle >= 180+range_per_dir and angle <= 270-range_per_dir then -- 195~255
  635. return EmpowerConst.Direction.LeftDown
  636. elseif angle >= 270-range_per_dir and angle <= 270+range_per_dir then -- 255~285
  637. return EmpowerConst.Direction.Down
  638. elseif angle >= 270+range_per_dir and angle <= 360-range_per_dir then -- 285~345
  639. return EmpowerConst.Direction.RightDown
  640. end
  641. return EmpowerConst.Direction.None
  642. end
  643. function EmpowerGridWalkView:GetRotationByDir( dir )
  644. self.rotations = self.rotations or {
  645. [EmpowerConst.Direction.None] = Quaternion.Euler(0, 180, 0),
  646. [EmpowerConst.Direction.Right] = Quaternion.Euler(0, 90, 0),
  647. [EmpowerConst.Direction.RightUp] = Quaternion.Euler(-22.622, 50.084, -17.581),
  648. [EmpowerConst.Direction.Up] = Quaternion.Euler(0, 0, 0),
  649. [EmpowerConst.Direction.LeftUp] = Quaternion.Euler(-22.808, -55.352, 18.738),
  650. [EmpowerConst.Direction.Left] = Quaternion.Euler(0, -90, 0),
  651. [EmpowerConst.Direction.LeftDown] = Quaternion.Euler(10.034, -141.557, 14.367),
  652. [EmpowerConst.Direction.RightDown] = Quaternion.Euler(12.53, -232.142, -9.869),
  653. [EmpowerConst.Direction.Down] = Quaternion.Euler(22, 180, 0),
  654. }
  655. return self.rotations[dir]
  656. end
  657. function EmpowerGridWalkView:UpdateView( )
  658. self.game_info = self.model:GetGridGameInfo()
  659. if not self.game_info then return end
  660. if self.lock_throw_die then
  661. self.is_need_update_view = true
  662. return
  663. end
  664. self:UpdateRewardItems()
  665. self:UpdateInfo()
  666. self:UpdateGoodsNum()
  667. self:UpdateEmpowerShopRedDot()
  668. self.doule_txt_obj:SetActive(self.model:GetIsDoubleTime( ))
  669. SetAnchoredPositionX(self.question_btn, self.model:GetIsDoubleTime( ) and -301 or -397)
  670. end
  671. function EmpowerGridWalkView:UpdateGoodsNum( )
  672. if not self.has_goods_num_tmp or not self.is_loaded then return end
  673. local num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
  674. local color
  675. if not num or num == 0 then
  676. color = ColorUtil.RED_DARK
  677. else
  678. color = ColorUtil.GREEN_DARK
  679. end
  680. --self.has_goods_num_tmp.text = "代金券:<color="..color..">"..(num or 0).."</color>张"
  681. self.has_goods_num_tmp.text = string.format("代金券:%s张", HtmlColorTxt( num or 0, color))
  682. end
  683. function EmpowerGridWalkView:UpdateInfo( )
  684. self.throw_red_obj:SetActive(false)
  685. local curVip = RoleManager.Instance.mainRoleInfo.vip_flag
  686. local isUseTicket = self.use_goods_tog.isOn
  687. local ticket_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
  688. self.cur_cost_for_dice = 0
  689. if isUseTicket and ticket_num > 0 then
  690. self.cur_cost_for_dice = -15*ticket_num
  691. end
  692. self.is_moved_last_grid = self.game_info.step >= self.max_grid_num
  693. ------------重置次数显示
  694. local can_reset_num = 0
  695. local vip_reset_table = stringtotable(Config.Latticekv["lattice_vip_point"].val)
  696. for k,v in pairs(vip_reset_table) do
  697. if v[1] <= curVip and can_reset_num < v[2] then
  698. can_reset_num = v[2]
  699. end
  700. end
  701. --print("============>>> YiRan:EmpowerGridWalkView [start:725] curVip :",curVip)
  702. --print("============>>> YiRan:EmpowerGridWalkView [start:728] can_reset_num :",can_reset_num)
  703. --print("============>>> YiRan:EmpowerGridWalkView [start:719] self.game_info.reset_count :",self.game_info.reset_count)
  704. local left_reset_num = math.max(0, can_reset_num-self.game_info.reset_count)
  705. local color = left_reset_num == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
  706. --local left_reset_num_str = HtmlColorTxt(math.max(0, can_reset_num-self.game_info.reset_count), ColorUtil.GREEN)
  707. self.reset_num_tmp.text = "今日剩余重置次数:<color="..color..">".. left_reset_num .."</color>"
  708. if self.is_moved_last_grid then
  709. self.reset_cost = nil
  710. local resetInfo = stringtotable(Config.Latticekv["reset_lattice_cost"].val)
  711. self.reset_cost = resetInfo[self.game_info.reset_count+1] and resetInfo[self.game_info.reset_count+1][2][3] or 100
  712. local color = RoleManager.Instance.mainRoleInfo:GetRealJin() < self.reset_cost and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
  713. self.free_num_word_tmp.text = string.format('重置消耗:%s%s', WordManager:GetMoneyFaceStr(1),HtmlColorTxt( self.reset_cost, color))
  714. -- self.free_num_tmp.text = " <color="..color..">"..self.reset_cost.."</color>"--钻石
  715. -- self.img_money_obj:SetActive(true)
  716. SetLocalPositionX(self.img_money, 38)
  717. else
  718. if self.game_info.free_count > 0 then
  719. self.free_num_word_tmp.text = string.format('剩余免费:%s次', HtmlColorTxt( self.game_info.free_count, ColorUtil.GREEN_DARK))
  720. --self.free_num_tmp.text = self.game_info.free_count.."次"
  721. self.cur_cost_for_dice = 0
  722. self.throw_red_obj:SetActive(true)
  723. -- self.img_money_obj:SetActive(false)
  724. else
  725. local cost_cfg = stringtotable(Config.Latticekv["lattice_roll_cost"].val)
  726. self.cur_cost_for_dice = math.max(0, self.cur_cost_for_dice + cost_cfg[2][2][3])
  727. local color = RoleManager.Instance.mainRoleInfo:GetRealJin() < self.cur_cost_for_dice and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
  728. self.free_num_word_tmp.text = string.format(" 消耗:%s<color=%s>%s</color>",WordManager:GetMoneyFaceStr(1),color,self.cur_cost_for_dice)--钻石
  729. --self.img_money_obj:SetActive(true)
  730. --SetLocalPositionX(self.img_money, 15)
  731. -- self.free_num_tmp.text = ""
  732. end
  733. end
  734. if self.is_moved_last_grid then
  735. --lua_resM:setImageSprite(self, self.throw_die_img, "empower_asset", "gridwalk_txt_btn_reset")
  736. self.throw_die_txt_tmp.text = "重置"
  737. self.pic_throw_die_start_obj:SetActive(false)
  738. self.pic_throw_die_reset_obj:SetActive(true)
  739. self:ShowWaitResetView(true)
  740. else
  741. self.throw_die_txt_tmp.text = "开始"
  742. self.pic_throw_die_start_obj:SetActive(true)
  743. self.pic_throw_die_reset_obj:SetActive(false)
  744. self:ShowWaitResetView(false)
  745. end
  746. end
  747. function EmpowerGridWalkView:ShowWaitResetView(isShow)
  748. local reset_info = Config.Latticeresetinfo[self.game_info.reset_count+1]
  749. self.grid_con_obj:SetActive( not isShow)
  750. if not reset_info then
  751. self.resetCon_obj:SetActive(false)
  752. return
  753. end
  754. self.resetCon_obj:SetActive(isShow)
  755. -- self.grid_con_obj:SetActive( not isShow)
  756. self.grid_con_obj:SetActive( true)
  757. self.reset_reward_item = self.reset_reward_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.reset_item_con)
  758. self.reset_reward_item:SetItemSize(62, 62)
  759. --self.reset_reward_item:SetPosition(pos.x-35, pos.y+52)
  760. --self.reset_reward_item:SetVisible(is_need_show_award_item)
  761. self.reset_good_list = stringtotable(reset_info.reward)[1]
  762. self.reset_get_num = self.reset_good_list[3]
  763. self.reset_reward_item:SetData(self.reset_good_list[2], self.reset_good_list[3])
  764. end
  765. function EmpowerGridWalkView:ResSetAnimation( )
  766. local new_pos = self.fly_con:InverseTransformPoint(Vector3(0,0,0)) -- 动画
  767. if self.reset_good_list then
  768. --for i=1,self.reset_good_list[3] do -- 只飞一个就行
  769. self:FlyAwardItemToBag(self.reset_good_list[2], new_pos, self.reset_good_list[3])
  770. --end
  771. end
  772. end
  773. function EmpowerGridWalkView:DestroySuccess( )
  774. self.model:SetIsShowingGameView(false)
  775. if self.on_ans_update_red_dot_id then
  776. self.model:UnBind(self.on_ans_update_red_dot_id)
  777. self.on_ans_update_red_dot_id = nil
  778. end
  779. if self.on_bag_change then
  780. GoodsModel:getInstance():UnBind(self.on_bag_change)
  781. self.on_bag_change = nil
  782. end
  783. if self.EMGRIDWALK_INFO_ID then
  784. self.model:UnBind(self.EMGRIDWALK_INFO_ID)
  785. self.EMGRIDWALK_INFO_ID = nil
  786. end
  787. if self.EMGRIDWALK_INFO_41410_ID then
  788. self.model:UnBind(self.EMGRIDWALK_INFO_41410_ID)
  789. self.EMGRIDWALK_INFO_41410_ID = nil
  790. end
  791. if self.RESET_EMGRIDWALK_SUCCESS_ID then
  792. self.model:UnBind(self.RESET_EMGRIDWALK_SUCCESS_ID)
  793. self.RESET_EMGRIDWALK_SUCCESS_ID = nil
  794. end
  795. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.dice_img)
  796. -- for i,v in ipairs(self.reward_items) do
  797. -- if v.award_item then
  798. -- UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v.award_item)
  799. -- v.award_item = nil
  800. -- end
  801. -- end
  802. -- self.reward_items = nil
  803. if self.reset_reward_item then
  804. UIObjPool:PushItem(UIObjPool.UIType.AwardItem, self.reset_reward_item)
  805. self.reset_reward_item = nil
  806. end
  807. if self.on_grid_game_info_changed_id then
  808. self.model:UnBind(self.on_grid_game_info_changed_id)
  809. self.on_grid_game_info_changed_id = nil
  810. end
  811. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.role_con)
  812. --self.role_node = nil
  813. if self.money_view then
  814. self.money_view:DeleteMe()
  815. self.money_view = nil
  816. end
  817. for i,v in pairs(self.item_pool) do
  818. v:DeleteMe()
  819. end
  820. self.item_pool = nil
  821. -- 清奖励浮动动画
  822. self:RemovellAwardAnim()
  823. -- 清底座浮动动画
  824. for k,v in pairs(self.circle_img_list) do
  825. cc.ActionManager:getInstance():removeAllActionsFromTarget(v)
  826. end
  827. end
  828. ----------双倍特效-start---------
  829. -- 添加动画
  830. function EmpowerGridWalkView:AddDoubleEffect( parent )
  831. local item
  832. -- 缓存池中找空闲item
  833. for i,v in ipairs(self.item_pool) do
  834. if v:CanUse() then
  835. item = v
  836. break
  837. end
  838. end
  839. -- 没找到那就创建
  840. if not item then
  841. item = EmpowerDoubleItem.New(self.effectCon)
  842. table.insert(self.item_pool, item)
  843. end
  844. -- 设置位置
  845. item:SetPosition(GetLocalPositionX(parent), GetLocalPositionY(parent))
  846. -- 开播
  847. item:SetData()
  848. end
  849. ----------双倍特效-end-----------
  850. ----------宝箱模型-start---------
  851. -- 添加宝箱模型
  852. function EmpowerGridWalkView:AddTreasureModel( parent )
  853. local res_data = {
  854. clothe_res_id = EmpowerConst.RewardModelID, -- 41000202 10020206
  855. -- weapon_res_id = monster.weapon_id,
  856. type = SceneBaseType.Monster,
  857. action_name_list = {"idle"},
  858. layer_name = self.layer_name,
  859. father_node = self,
  860. transform = parent,
  861. rotate = Vector3(18.5, 187.5, -6), -- Vector3(-17,36,-13) Vector3(19, 121.5, -24)
  862. fashion_type = FuncOpenModel.TypeId.Monster,
  863. position = Vector3(-4.5, 8, 0),
  864. -- shadow2_plane_pos = Vector4(0, 10, 0, 1),
  865. scale = 90, -- 80 65
  866. ui_model_type = UIModelCommon.ModelType.Model,
  867. show_shadow = false,
  868. green_screen_camera_type = 3, -- camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
  869. }
  870. FuncOpenModel:getInstance():SetModelRes(res_data)
  871. end
  872. ----------宝箱模型-end-----------
  873. ----------奖励item上下浮动动画-start---------
  874. function EmpowerGridWalkView:RemovellAwardAnim( )
  875. for k,v in pairs(self.reward_items) do
  876. if v.award_item then
  877. cc.ActionManager:getInstance():removeAllActionsFromTarget(v.award_item.transform)
  878. end
  879. end
  880. end
  881. function EmpowerGridWalkView:AddAwardAnim( parent, start_pos )
  882. local move_time = 1
  883. local start_pos = start_pos
  884. local move_dist = 10
  885. -- SetAnchoredPositionX(parent, 0)
  886. local function move_up(percent)
  887. SetAnchoredPositionY(parent, start_pos + move_dist * percent)
  888. end
  889. local action1 = cc.CustomUpdate.New(move_time, move_up)
  890. -- 移动
  891. local function move_down(percent)
  892. SetAnchoredPositionY(parent, start_pos + move_dist * (1-percent))
  893. end
  894. local action2 = cc.CustomUpdate.New(move_time, move_down)
  895. ------------------------------------------------
  896. local action3 = cc.Sequence.New( action1, action2)--顺序
  897. local action10 = cc.RepeatForever.New( action3 )
  898. cc.ActionManager:getInstance():addAction(action10, parent)
  899. end
  900. ----------奖励item上下浮动动画-end-----------
  901. ----------路过之后底座浮动动画-start---------
  902. function EmpowerGridWalkView:PlayGridFloatAnim( index, anim_type )
  903. local parent = self.circle_img_list[index]
  904. if not parent then return end
  905. cc.ActionManager:getInstance():removeAllActionsFromTarget(parent)
  906. -- local move_time = 0.3
  907. local move_dist = -10
  908. local pos = self.way_points[index]
  909. -- 设置起始位置(防止它动画没播完位置不对)
  910. if anim_type == FloatAnimType.UP then -- 下面
  911. SetLocalPosition(parent, pos.x-5, pos.y+10 + move_dist, pos.z+150)
  912. else -- 上面
  913. SetLocalPosition(parent, pos.x-5, pos.y+10, pos.z+150)
  914. end
  915. local _, start_pos_y = GetAnchoredPosition(parent)
  916. local anim_param = EmpowerConst.FloatAnimParam
  917. local function move_down(percent)
  918. SetAnchoredPositionY(parent, start_pos_y + move_dist * percent)
  919. end
  920. local action1 = cc.CustomUpdate.New(anim_param.down_time1, move_down)
  921. -- 移动
  922. local function move_up(percent)
  923. SetAnchoredPositionY(parent, start_pos_y + move_dist * (1-percent))
  924. end
  925. local action2 = cc.CustomUpdate.New(anim_param.up_time2, move_up)
  926. -- 上移2
  927. local function move_up2(percent)
  928. SetAnchoredPositionY(parent, start_pos_y - move_dist * percent)
  929. end
  930. local action3 = cc.CustomUpdate.New(anim_param.up_time1, move_up2)
  931. local function end_call()
  932. self.box_float_anim_state[index] = false -- 动画状态结束
  933. end
  934. local call_func1 = cc.CallFunc.New(end_call)
  935. ------------------------------------------------
  936. -- 动画
  937. if anim_type == FloatAnimType.UP then
  938. action4 = cc.Sequence.New( action3, call_func1 )
  939. elseif anim_type == FloatAnimType.DOWN then
  940. action4 = cc.Sequence.New( action1, call_func1)
  941. elseif anim_type == FloatAnimType.DOWN_AND_UP then
  942. action4 = cc.Sequence.New( action1, action2, call_func1)
  943. end
  944. self.box_float_anim_state[index] = true
  945. cc.ActionManager:getInstance():addAction(action4, parent)
  946. end
  947. ----------路过之后底座浮动动画-end-----------