|
|
- EmpowerGridWalkView = EmpowerGridWalkView or BaseClass(BaseView)
- local EmpowerGridWalkView = EmpowerGridWalkView
-
- local FloatAnimType = {
- UP = 1,
- DOWN = 2,
- DOWN_AND_UP = 3,
- }
-
- function EmpowerGridWalkView:__init()
- self.base_file = "empower"
- self.layout_file = "EmpowerGridWalkView"
- self.layer_name = "UI"
- self.use_background = true
- self.hide_maincancas = true
- --self.close_mode = CloseMode.CloseDestroy
- --self.destroy_imm = true
- --self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
- self.is_set_zdepth = false
-
- self.append_to_ctl_queue = true --是否要添加进界面堆栈
- --self.model = EmpowerModel:GetInstance()
- --self.goods_model = GoodsModel:getInstance()
- --self.mainVo = RoleManager.Instance.mainRoleInfo
-
- self.model = EmpowerModel:GetInstance()
- self.max_grid_num = Config.Latticekv["max_lattice_step"].val
- self.coupon_id = Config.Latticekv["coupon_id"].val
- self.reward_items = {}
- self.model:SetIsShowingGameView(true)
-
- self.item_pool = {} -- 双倍特效缓存池
- self.box_list = {} -- 奖励池
- self.box_float_anim_state = {} -- 地板浮动动画状态
-
-
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:OpenSuccess()
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
-
- end
-
- function EmpowerGridWalkView:Open( )
- BaseView.Open(self)
- end
-
- function EmpowerGridWalkView:AddEvent( )
- local on_click = function ( click_obj )
- if self.throw_die_obj == click_obj or self.dice_obj == click_obj then
- self:StartThrowDie()
- -- elseif self.shop_obj == click_obj then
- -- self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1)
- elseif self.equip_obj == click_obj then
- --local new_pos = self.fly_con:InverseTransformPoint(Vector3(0,0,0))
- --self:FlyAwardItemToBag(270013, new_pos)
- self:Close()
- OpenFun.Open(152, 5)
- elseif self.treasure_obj == click_obj then
- self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1)
- elseif self.use_goods_obj == click_obj then
- self:UpdateInfo()
- elseif self.close_obj == click_obj then
- self:Close()
- elseif self.question_btn_obj == click_obj then
- EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 41401)
- end
- end
- AddClickEvent(self.close_obj, on_click)
- AddClickEvent(self.throw_die_obj, on_click)
- AddClickEvent(self.dice_obj, on_click)
- AddClickEvent(self.equip_obj, on_click)
- AddClickEvent(self.shop_obj, on_click)
- AddClickEvent(self.treasure_obj, on_click)
- AddClickEvent(self.use_goods_obj, on_click)
- AddClickEvent(self.question_btn_obj, on_click)
-
- self.on_grid_game_info_changed_id = self.model:BindOne("grid_game_info", function()
- self:UpdateView()
- end)
-
- local on_bag_change = function( )
- self:UpdateGoodsNum()
- end
- if not self.on_bag_change then
- self.on_bag_change = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, on_bag_change)
- end
-
- local function on_ans_update_red_dot( )
- self:UpdateEmpowerShopRedDot()
- end
- self.on_ans_update_red_dot_id = self.model:Bind(EmpowerConst.EMPOWER_SHOP_RED_DOT, on_ans_update_red_dot)
-
- local function onInfoUpdate_func()
- print("============>>> YiRan:EmpowerGridWalkView [start:80] :")
- end
- self.EMGRIDWALK_INFO_ID = self.model:Bind(EmpowerConst.UPDATA_EMGRIDWALK_INFO,onInfoUpdate_func)
-
- local function onInfoUpdate_func_41410(scmd)
- if scmd.res == 1 then
-
- local time_wait = 1
- local is_turn_fast = self.get_fast_tog.isOn
- if is_turn_fast then
- --Message.show("fast") --加速直接给结果
- lua_resM:setImageSprite(self,self.dice_img, "empower_asset", "gridwalk_dice_"..scmd.walk)
- time_wait = 0.05
- else
- --Message.show("slow") -- 不加速就播放图片
- self:PlayDiceAnimate(scmd.walk) --下为等待骰子后人物走动动画表现
- end
-
- self.delayMoveCom = self.delayMoveCom or self:AddUIComponent(UI.Countdown)
- self.delayMoveCom:DelayCallByLeftTime(time_wait, function()
- self:StartMoveGrid(scmd.new_step-scmd.walk, scmd.new_step)
- end)
- else
- self.lock_throw_die = false
- end
- --end
- end
- self.EMGRIDWALK_INFO_41410_ID = self.model:Bind(EmpowerConst.UPDATA_EMGRIDWALK_INFO41410,onInfoUpdate_func_41410)
-
- local function onRESET_EMGRIDWALK_SUCCESS_func()
- self.had_updated_items = false
-
- self:ResSetAnimation()
- self:InitWayPoint(true)
- self:ResetRolePos()
- self:UpdateView()
- end
- self.RESET_EMGRIDWALK_SUCCESS_ID = self.model:Bind(EmpowerConst.RESET_EMGRIDWALK_SUCCESS,onRESET_EMGRIDWALK_SUCCESS_func)
-
- end
-
- function EmpowerGridWalkView:LoadSuccess()
-
- self.nodes = {
- "throw_die:obj:img","role_con","grid_con:obj","close:obj",
- "use_goods:tog:obj","grid_con/big_reward_scroll","grid_con/big_reward_scroll/Viewport/big_reward_con",
- "shop:obj","award_scroll","dice:img:obj","equip:obj","award_scroll/Viewport/award_con",
- "treasure:obj",
- "has_goods_num:tmp","fly_con","free_num_word:tmp","shop_red:obj","throw_red:obj",
- "dice_con:obj","reset_num:tmp","bg:img:raw",
- "throw_die/throw_die_txt:tmp", "con_money",
- "get_fast:tog:obj",
- "question_btn:obj", "img_money:obj", "bg/doule_txt:obj",
- "resetCon:obj", "resetCon/grid_walk_reset_bg:raw", "resetCon/reset_item_con",
- ---------------------------------------------
- "effectCon:obj", -- 特效挂点
- "throw_die/pic_throw_die_start:obj", "throw_die/pic_throw_die_reset:obj",
- }
- self:GetChildren(self.nodes)
- self.dice_con_obj:SetActive(false)
- self.get_fast_tog.isOn = false -- 默认不加速
- lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("grid_walk_bg_1560_720"),false)
- lua_resM:setOutsideRawImage(self, self.grid_walk_reset_bg_raw, GameResPath.GetEmpowerIcon("grid_walk_reset1_1278_89"), false)
-
- SetAnchoredPositionX(self.dice_con, -160)
- SetAnchoredPositionX(self.big_reward_scroll, 125)
- local function bg_back_func( ... )
- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
- end
- self:MoveUIToBack(self.bg_raw)
- end
- if self.background_wnd then
- bg_back_func()
- else
- self.bg_back_func = bg_back_func
- end
-
- self:InitWayPoint()
- self:InitRoleModel()
- self:InitShowRewards()
-
- end
-
- function EmpowerGridWalkView:OpenSuccess()
- --local select_callback = function(index)
- --end
- self:UpdateView()
- if not self.money_view then
- self.money_view = UIMoneyView.New(self.con_money)
- end
- self.money_view:SetPosition(0,0)
- self.money_view:SetData()
- self.money_view:ChangeShowFlag("smallWindow2")
- end
- function EmpowerGridWalkView:InitShowRewards( )
- self.show_award_items_com = self.show_award_items_com or self:AddUIComponent(UI.ItemListCreator)
- local award_list = stringtotable(Config.Latticekv["lattice_rewards_show"].val)
- local info = {
- data_list = award_list,
- item_con = self.award_con,
- scroll_view = self.award_scroll,
- obj_pool_type = UIObjPool.UIType.AwardItem,
- start_y = -5,
- start_x = 5,
- item_width = 62,
- space_x = 7,
- --alignment = UnityEngine.TextAnchor.UpperCenter,
- on_update_item = function(item, i, v)
- item:SetData(v[2], v[3])
- end,
- }
- self.show_award_items_com:UpdateItems(info)
- end
-
- function EmpowerGridWalkView:InitWayPoint(isReset)
- if isReset then
- self.model.gridWalkRandomNum = math.random(1, #EmpowerConst.GridWalkDicePos)
- end
- self.way_points = {}
- self.way_point_nodes = {}
- local random_num = self.model.gridWalkRandomNum or math.random(1, #EmpowerConst.GridWalkDicePos)
- local road_pos_list = EmpowerConst.GridWalkDicePos[random_num]
- if not road_pos_list then return end
- -- lua_resM:setOutsideRawImage(self, self.map_root_bg_raw, GameResPath.GetEmpowerIcon("grid_walk_bg"..random_num), false)
-
- for i=0,self.max_grid_num do
- self.way_point_nodes[i] = self:GetChild("grid_con/grid_"..i)
- SetLocalPositionX(self.way_point_nodes[i], road_pos_list[i].pos_x + 5)
- SetLocalPositionY(self.way_point_nodes[i], road_pos_list[i].pos_y - 10)
- SetLocalScale(self.way_point_nodes[i], 1, 1, 1)
- self.way_points[i] = self.way_point_nodes[i].localPosition
- end
-
- -- 奖励格子底下的圆盘底
- self.circle_img_list = {}
- self.circle_img_list_img = {}
- for i=1, 24 do
- self.circle_img_list[i] = self:GetChild("grid_con/circleBgCon/circle_" .. i)
- self.circle_img_list[i].gameObject:SetActive(false)
- self.circle_img_list_img[i] = self.circle_img_list[i]:GetComponent("Image")
- end
- end
-
- function EmpowerGridWalkView:UpdateRewardItems( )
- local cur_step = self.game_info and self.game_info.step or 0
- self.big_rewards_cfg = nil
-
- -- -- 隐藏圆盘底
- -- local reward_count = 0
- -- for k,v in pairs(self.reward_img_list) do
- -- v.gameObject:SetActive(false)
- -- end
- -- 停止动画
- self:RemovellAwardAnim()
- for i,v in ipairs(self.way_points) do
- self.reward_items[i] = self.reward_items[i] or {}
- local cfg = Config.Latticereward[i.."@"..self.game_info.turn]
- if not cfg then return end
-
- local is_need_show_award_item = cur_step < i
-
- if not self.box_list[i] then
- self.box_list[i] = self:GetChild("grid_con/box_"..i)
- -- 用宝箱模型
- self:AddTreasureModel(self.box_list[i])
- end
- local box = self.box_list[i]
- box.gameObject:SetActive(cur_step < i)
-
- local pos = self.way_points[i]
- SetLocalPosition(box, pos.x, pos.y, pos.z+150) -- +150为了把箱子往后拉,主角在前
- self.reward_items[i].show_type = cfg.type
- self.reward_items[i].box = box
- if cfg.type == EmpowerConst.GridType.NormalBox then
- -- 设置地板位置
- if cur_step == i and cur_step ~= 0 and not self.box_float_anim_state[i] then
- SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10 - 10, pos.z+150)
- elseif not self.box_float_anim_state[i] then
- SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10, pos.z+150)
- end
- lua_resM:setImageSprite(self, self.circle_img_list_img[i], "empower_asset", "gridwalk_girdbg", false)
- self.circle_img_list[i].gameObject:SetActive(true)
- elseif cfg.type == EmpowerConst.GridType.Reward then
- box.gameObject:SetActive(false)
- -- 设置地板位置
- if cur_step == i and cur_step ~= 0 and not self.box_float_anim_state[i] then -- 当前踩的地板位置会下移一点
- SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10 - 10, pos.z+150)
- elseif not self.box_float_anim_state[i] then -- 如果没有动画中
- SetLocalPosition(self.circle_img_list[i], pos.x-5, pos.y+10, pos.z+150)
- end
- lua_resM:setImageSprite(self, self.circle_img_list_img[i], "empower_asset", "gridwalk_girdbg2", false)
- self.circle_img_list[i].gameObject:SetActive(true)
- -- -- 奖励
- -- self.reward_items[i].award_item = self.reward_items[i].award_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.grid_con)
- -- local award_item = self.reward_items[i].award_item
- -- award_item:SetItemSize(78, 78)
- -- award_item:SetVisible(is_need_show_award_item)
- -- award_item:SetItemBgVisible(false)
- -- SetLocalScale(self.way_point_nodes[i], 1, 1, 1)
- -- award_item:SetParent(self.way_point_nodes[i])
- -- SetLocalScale(self.way_point_nodes[i], 1.2, 1.2, 1.2)
- -- award_item:SetPosition(0, 30)
- -- self:AddAwardAnim(award_item.transform)
-
- -- local award_info = self.game_info.show_reward[i]
- -- if award_info and award_info.step_reward and award_info.step_reward[1] then
- -- -- local goods_num = award_info.step_reward[1].good_num
- -- -- if award_info.is_double==2 then
- -- -- goods_num = goods_num/2
- -- -- end
- -- -- award_item:SetData(award_info.step_reward[1].good_id, goods_num)
- -- award_item:SetData(award_info.step_reward[1].good_id, nil ,nil, nil, nil, nil, nil, nil, nil, true)
- -- end
-
- -- 奖励 (一个图标)
- -- self.reward_items[i].award_item = self.reward_items[i].award_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.grid_con)
- if not self.reward_items[i].award_item then
- local image_item = {}
- image_item.gameObject = UiFactory.createChild(self.grid_con, UIType.Image)
- image_item.transform = image_item.gameObject.transform
- image_item.img = image_item.gameObject:GetComponent("Image")
- SetLocalScale(image_item.transform, 0.8, 0.8, 0.8)
- self.reward_items[i].award_item = image_item
- end
-
- local award_item = self.reward_items[i].award_item
- award_item.gameObject:SetActive(is_need_show_award_item)
-
- local award_info = self.game_info.show_reward[i]
- if award_info and award_info.step_reward and award_info.step_reward[1] then
- local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(award_info.step_reward[1].good_id)
- local goods_icon = goods_vo and goods_vo.goods_icon or 0
- lua_resM:setOutsideImageSprite(self, award_item.img, GameResPath.GetGoodsIcon(goods_icon), true)
- SetLocalPosition(award_item.transform, pos.x -5, pos.y + 30, pos.z)
- self:AddAwardAnim(award_item.transform, GetLocalPositionY(award_item.transform))
- end
-
- elseif cfg.type == EmpowerConst.GridType.BigBox then
- box.gameObject:SetActive(false)
- local award_info = self.game_info.show_reward[i]
- if award_info and award_info.step_reward and award_info.step_reward[1] then
- self.big_reward_list = award_info.step_reward
- end
- end
- end
- self.had_updated_items = true
-
- self:UpdateBigRewards()
- end
-
- function EmpowerGridWalkView:UpdateBigRewards( )
- self.big_reward_items_com = self.big_reward_items_com or self:AddUIComponent(UI.ItemListCreator)
- if not self.big_reward_list then return end
-
- -- local award_list = stringtotable(self.big_reward_list.reward_show)
- local info = {
- data_list = self.big_reward_list,
- item_con = self.big_reward_con,
- scroll_view = self.big_reward_scroll,
- obj_pool_type = UIObjPool.UIType.AwardItem,
- start_y = -5,
- item_width = 59,
- space_x = 20,
- --alignment = UnityEngine.TextAnchor.UpperCenter,
- on_update_item = function(item, i, v)
- local goods_num = v.good_num
- 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
- goods_num = goods_num / 2
- end
- item:SetData(v.good_id, goods_num)
- -- item:SetData(v[2], v[3])
- end,
- }
- self.big_reward_items_com:UpdateItems(info)
- end
-
-
- function EmpowerGridWalkView:RolePlatAnimation(play_animation)
- local uimodelclass = lua_resM:GetPartModel(self, self.role_con)
- if play_animation and uimodelclass then
- uimodelclass:PlayActions(play_animation) --播放界面动画
- end
- end
-
- function EmpowerGridWalkView:InitRoleModel()
-
- -- 加载模型
- local res_data = {
- father_node = self,
- transform = self.role_con,
- fashion_type = FuncOpenModel.TypeId.Clothes,
- size = Vector2(540, 400),
- raycast_size = Vector2(200, 277),
- action_name_list = {"idle"},
- scale = 55,
- can_rotate = false,
- rotate = Vector3(0, 0, 0),
- position = Vector3(0, 0, 0),
- -- position = Vector3(10, 305, 0),
- show_shadow = false,
- ui_model_type = UIModelCommon.ModelType.Model,
- layer_name = self.layer_name,
- -- weapon_res_id = "nil",
- force_hide_wing = true,
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
-
- self:ResetRolePos()
- end
-
- function EmpowerGridWalkView:ResetRolePos( )
- local game_info = self.model:GetGridGameInfo()
- local cur_step = game_info and game_info.step or 0
- local pos = self.way_points[cur_step]
- SetLocalPosition(self.role_con, pos.x, pos.y, pos.z)
- self.role_con.localRotation = self:GetRotationByDir(0)
- end
-
-
- function EmpowerGridWalkView:UpdateEmpowerShopRedDot( )
- if self.shop_red_obj then
- local bool = self.model:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop]
- self.shop_red_obj:SetActive(bool)
- end
- end
-
- function EmpowerGridWalkView:StartThrowDie( )
-
- if self.lock_throw_die then
- Message.show("播放动画中...")
- return
- end
-
- if self.is_moved_last_grid then --重置判断
-
- if not self.reset_cost then
- Message.show("当前不可重置")
- return
- end
-
- self.model:Fire(EmpowerConst.OPEN_RESET_TIPVIEW_VIEW)
- return
-
- end
-
- function ok_function( flag )
-
- if RoleManager.Instance.mainRoleInfo:GetRealJin() < self.cur_cost_for_dice then
- Message.show("余额不足哦~")
- return
- end
-
- self.lock_throw_die = true
- local useGoodsFlag = self.use_goods_tog.isOn and 1 or 0
- self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41410,useGoodsFlag)
- end
-
-
- if (self.cur_cost_for_dice and self.cur_cost_for_dice == 0) or self.model.isAutoBuyGridWalk then
- ok_function()
- else
- function toggle_function( flag )
- self.model.isAutoBuyGridWalk = flag
- end
- --需要显示购买提示界面
- local data = {
- titleText = "提示",
- price = self.cur_cost_for_dice,
- okText = "确定",
- -- gold_ab_res = gold_ab_res,
- -- gold_res = res_name,
- priceText = HtmlColorTxt(self.cur_cost_for_dice, ColorUtil.YELLOW_DARK) .. " 进行一次升品之路", --.. HtmlColorTxt("1彩钻", "#d322ff"),
- ok_callback = ok_function,
- toggle_function = toggle_function,
- nameText = "是否使用",
- insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次
- }
- GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data)
- end
- end
-
- function EmpowerGridWalkView:PlayDiceAnimate( last_step )
- lua_soundM:PlayEffect(self, "dice", false, LuaSoundManager.SOUND_TYPE.UI)
- local action_list = {}
- local data = {
- clothe_res_id = "dice_3000",
- role_type = SceneBaseType.Role,
- layer_name = self.layer_name,
- action_name_list = {"show"},
- can_rotate = true,
- scale = 64,
- position = Vector3(0, 10, 0),
- hide_with_view = true,
- callBack = function()
- self.dice_obj:SetActive(false)
- end,
- }
- self.dice_node = lua_resM:SetRoleModel(self,self.dice_con,data)
- self.dice_con_obj:SetActive(true)
-
- -- for i=1,10 do
- -- local randomNum = math.random(1,6)
- -- local spriteAction = cc.Sprite.New("empower_asset:gridwalk_dice_"..randomNum)
- -- table.insert(action_list, spriteAction)
- -- -- spriteAction:setTarget(self.dice_img)
- -- table.insert(action_list, cc.DelayTime.New(0.1))
- -- end
-
- local time_roll_dice = 1.2
- --local is_turn_fast = self.get_fast_tog.isOn
- --if is_turn_fast then
- -- Message.show("fast")
- -- time_roll_dice = 0.2
- --else
- -- Message.show("slow")
- --end
-
- table.insert(action_list, cc.DelayTime.New(time_roll_dice))
- local spriteAction = cc.Sprite.New("empower_asset:gridwalk_dice_"..last_step)
- table.insert(action_list, spriteAction)
- local on_end = function()
- self.dice_con_obj:SetActive(false)
- self.dice_obj:SetActive(true)
- end
- table.insert(action_list, cc.CallFunc.New(on_end))
- local sum_action = cc.Sequence.createWithTable(action_list)
- cc.ActionManager:getInstance():addAction(sum_action, self.dice_img)
- end
-
- function EmpowerGridWalkView:FlyAwardItemToBag( goods_type_id,start_pos,drop_num )
- -- local goods_list = {goods_type_id}
- -- MainUIModel:getInstance():PlayGoodsFlyList(goods_list)
- -- local float_list = {{goods_type_id = goods_type_id,num = drop_num}}
- -- MainUIModel:getInstance():AddFloatInfo(float_list,true)
- self.image_pool = self.image_pool or {}
- local image_item
- if #self.image_pool > 0 then
- image_item = table.remove(self.image_pool, #self.image_pool)
- else
- image_item = {}
- image_item.gameObject = UiFactory.createChild(self.fly_con, UIType.Image)
- image_item.transform = image_item.gameObject.transform
- image_item.img = image_item.gameObject:GetComponent("Image")
- SetLocalScale(image_item.transform, 0.8, 0.8, 0.8)
- end
- image_item.gameObject:SetActive(true)
- local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_type_id)
- local goods_icon = goods_vo and goods_vo.goods_icon or 0
- -- goods_icon = 100000
- -- print('Cat:EmpowerGridWalkView.lua[1818] goods_icon', goods_icon, image_item.img)
- lua_resM:setOutsideImageSprite(self, image_item.img, GameResPath.GetGoodsIcon(goods_icon), true)
- SetLocalPosition(image_item.transform, start_pos.x, start_pos.y, start_pos.z)
-
- local flyAction = cc.FlyToRandom.New(start_pos, Vector3.New(1200, 350, 0))
- local ease_action = cc.EaseOut.New( flyAction, 0.5 )
- local action = cc.Sequence.New(ease_action, cc.CallFunc.New(function()
- image_item.gameObject:SetActive(false)
- table.insert(self.image_pool, image_item)
- end))
- cc.ActionManager:getInstance():addAction(action, image_item.transform)
- end
-
- function EmpowerGridWalkView:FlyAwardItemToBagByIndex( i )
- local rewardAbsPos
- local new_pos
- if self.reward_items[i].award_item then
- rewardAbsPos = self.reward_items[i].award_item.transform.position
- new_pos = self.fly_con:InverseTransformPoint(rewardAbsPos)
- -- local rewardPos = self.reward_items[i].award_item:GetPosition()
- -- rewardAbsPos = self.reward_items[i].award_item.transform and self.reward_items[i].award_item.transform.localPosition or rewardPos
- elseif self.reward_items[i].box then
- rewardAbsPos = self.reward_items[i].box.transform and self.reward_items[i].box.transform.position
- new_pos = self.fly_con:InverseTransformPoint(rewardAbsPos)
- new_pos.x = new_pos.x
- new_pos.y = new_pos.y + 40
- end
- if not rewardAbsPos then return end
-
- local show_goods_type_id = nil
- local award_info = self.game_info.show_reward[i]
- if award_info and award_info.step_reward and award_info.step_reward[1] then
- show_goods_type_id = award_info.step_reward[1].good_id
- end
- self:FlyAwardItemToBag(show_goods_type_id, new_pos)
- end
-
- function EmpowerGridWalkView:StartMoveGrid( start_index, end_index )
-
- local time_run = 0.5
- --local is_turn_fast = self.get_fast_tog.isOn
- --if is_turn_fast then
- -- Message.show("fast")
- -- time_run = 0.1
- --else
- -- Message.show("slow")
- --end
-
- cc.ActionManager:getInstance():removeAllActionsFromTarget(self.role_con)
- start_index = math.max(0, start_index)
- end_index = math.min(#self.way_points, end_index)
-
- --self.role_node:PlayAnimation("run")
- self:RolePlatAnimation({"run"})
- local start_pos = self.way_points[start_index]
- local action_list = {cc.Place.New(start_pos.x, start_pos.y, start_pos.z)}
- for i=start_index+1, end_index do
- local pos = self.way_points[i]
- local move_action = cc.MoveTo.createLocalType(time_run, pos.x, pos.y, pos.z)
- local change_dir_func = function()
- --根据起始点和目标坐标计算角色朝向,改变其角度
- local dir = self:CalculateDirection(self.way_points[i-1], pos)
- self.role_con.localRotation = self:GetRotationByDir(dir)
- end
- table.insert(action_list, cc.CallFunc.New(change_dir_func))
- table.insert(action_list, move_action)
- local reach_target = function ( )
- lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
- local is_double = false
- if self.game_info and self.game_info.show_reward and self.game_info.show_reward[i] then
- is_double = self.game_info.show_reward[i].is_double==2
- lua_soundM:PlayEffect(self, is_double and "double_box" or "one_box", false, LuaSoundManager.SOUND_TYPE.UI)
- end
- if is_double and self.way_point_nodes[i] then
- -- self:ClearUIEffect(self.way_point_nodes[i])
-
- self:AddDoubleEffect(self.way_point_nodes[i])
- -- self:AddUIEffect("ui_shuangbei", self.way_point_nodes[i], self.layer_name, {x=0,y=0}, 1, false) --特效暂时屏蔽掉,有再开启
- end
- if self.reward_items[i].show_type == EmpowerConst.GridType.Reward and self.reward_items[i].award_item then
- self.reward_items[i].award_item.gameObject:SetActive(false)
- self:FlyAwardItemToBagByIndex(i)
- if is_double then
- self:FlyAwardItemToBagByIndex(i)
- end
- -- 格子漂浮动画
- if i == end_index then
- self:PlayGridFloatAnim(i, FloatAnimType.DOWN)
- else
- self:PlayGridFloatAnim(i, FloatAnimType.DOWN_AND_UP)
- end
- elseif self.reward_items[i].show_type == EmpowerConst.GridType.NormalBox and self.reward_items[i].box then
- local box_img = self.reward_items[i].box:GetComponent("Image")
-
- -- 播完特效后回调
- local end_cb = function ( )
- self.box_list[i].gameObject:SetActive(false)
- -- lua_resM:setImageSprite(self, box_img, "empower_asset", "gridwalk_icon_box_open", true)
- self:FlyAwardItemToBagByIndex(i)
- if is_double then
- self:FlyAwardItemToBagByIndex(i)
- end
- end
- self:AddUIEffect("ui_hunliqiudianliang", self.way_point_nodes[i], self.layer_name, {x=0,y=20}, 3, false, 0.5, nil, end_cb)
- -- 格子漂浮动画
- if i == end_index then
- self:PlayGridFloatAnim(i, FloatAnimType.DOWN)
- else
- self:PlayGridFloatAnim(i, FloatAnimType.DOWN_AND_UP)
- end
- elseif self.reward_items[i].show_type == EmpowerConst.GridType.BigBox then
- --显示结算界面
- local show_data = self.model:GetGameSumRewardList()
- -- GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW,show_data)
- if show_data then
- GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, show_data.award)
- end
- end
- end
- table.insert(action_list, cc.CallFunc.New(reach_target))
- end
- local end_func = function()
- --跑完全程后就面向观众
- self.role_con.localRotation = self:GetRotationByDir(0)
- self:RolePlatAnimation({"idle"})
- self.lock_throw_die = false
- if self.is_need_update_view then
- self.is_need_update_view = false
- self:UpdateView()
- end
- end
- table.insert(action_list, cc.CallFunc.New(end_func))
- local sum_action = cc.Sequence.createWithTable(action_list)
- cc.ActionManager:getInstance():addAction(sum_action, self.role_con)
- if start_index ~= 0 and start_index < 24 then
- self:PlayGridFloatAnim(start_index, FloatAnimType.UP)
- end
- end
-
- --返回四个方向
- function EmpowerGridWalkView:CalculateDirection( start_pos, end_pos )
- local angle = math.atan2((end_pos.y-start_pos.y), (end_pos.x-start_pos.x))*180/math.pi
- if angle < 0 then
- angle = angle + 360
- end
- -- print('Cat:EmpowerGridWalkView.lua[10611] angle', angle)
- local range_per_dir = 15
- --之所以不用一个公式搞定是因为有可能某些方向的范围需要特殊处理(下面备注的角度是以15为例子的)
- if (angle >= 0 and angle <= range_per_dir) or
- ( angle >= 360 - range_per_dir and angle <= 360 ) then -- 0~15 或 345~360
- return EmpowerConst.Direction.Right
- elseif angle >= range_per_dir and angle <= 90-range_per_dir then -- 15~75
- return EmpowerConst.Direction.RightUp
- elseif angle >= 90-range_per_dir and angle <= 90+range_per_dir then -- 75~105
- return EmpowerConst.Direction.Up
- elseif angle >= 90+range_per_dir and angle <= 180-range_per_dir then -- 105~ 165
- return EmpowerConst.Direction.LeftUp
- elseif angle >= 180-range_per_dir and angle <= 180+range_per_dir then -- 165~195
- return EmpowerConst.Direction.Left
- elseif angle >= 180+range_per_dir and angle <= 270-range_per_dir then -- 195~255
- return EmpowerConst.Direction.LeftDown
- elseif angle >= 270-range_per_dir and angle <= 270+range_per_dir then -- 255~285
- return EmpowerConst.Direction.Down
- elseif angle >= 270+range_per_dir and angle <= 360-range_per_dir then -- 285~345
- return EmpowerConst.Direction.RightDown
- end
- return EmpowerConst.Direction.None
- end
-
- function EmpowerGridWalkView:GetRotationByDir( dir )
- self.rotations = self.rotations or {
- [EmpowerConst.Direction.None] = Quaternion.Euler(0, 180, 0),
- [EmpowerConst.Direction.Right] = Quaternion.Euler(0, 90, 0),
- [EmpowerConst.Direction.RightUp] = Quaternion.Euler(-22.622, 50.084, -17.581),
- [EmpowerConst.Direction.Up] = Quaternion.Euler(0, 0, 0),
- [EmpowerConst.Direction.LeftUp] = Quaternion.Euler(-22.808, -55.352, 18.738),
- [EmpowerConst.Direction.Left] = Quaternion.Euler(0, -90, 0),
- [EmpowerConst.Direction.LeftDown] = Quaternion.Euler(10.034, -141.557, 14.367),
- [EmpowerConst.Direction.RightDown] = Quaternion.Euler(12.53, -232.142, -9.869),
- [EmpowerConst.Direction.Down] = Quaternion.Euler(22, 180, 0),
- }
- return self.rotations[dir]
- end
-
- function EmpowerGridWalkView:UpdateView( )
- self.game_info = self.model:GetGridGameInfo()
- if not self.game_info then return end
- if self.lock_throw_die then
- self.is_need_update_view = true
- return
- end
- self:UpdateRewardItems()
- self:UpdateInfo()
- self:UpdateGoodsNum()
- self:UpdateEmpowerShopRedDot()
- self.doule_txt_obj:SetActive(self.model:GetIsDoubleTime( ))
- SetAnchoredPositionX(self.question_btn, self.model:GetIsDoubleTime( ) and -301 or -397)
- end
-
- function EmpowerGridWalkView:UpdateGoodsNum( )
- if not self.has_goods_num_tmp or not self.is_loaded then return end
-
- local num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
- local color
- if not num or num == 0 then
- color = ColorUtil.RED_DARK
- else
- color = ColorUtil.GREEN_DARK
- end
-
- --self.has_goods_num_tmp.text = "代金券:<color="..color..">"..(num or 0).."</color>张"
- self.has_goods_num_tmp.text = string.format("代金券:%s张", HtmlColorTxt( num or 0, color))
- end
-
- function EmpowerGridWalkView:UpdateInfo( )
- self.throw_red_obj:SetActive(false)
- local curVip = RoleManager.Instance.mainRoleInfo.vip_flag
- local isUseTicket = self.use_goods_tog.isOn
- local ticket_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
- self.cur_cost_for_dice = 0
- if isUseTicket and ticket_num > 0 then
- self.cur_cost_for_dice = -15*ticket_num
- end
- self.is_moved_last_grid = self.game_info.step >= self.max_grid_num
-
- ------------重置次数显示
- local can_reset_num = 0
- local vip_reset_table = stringtotable(Config.Latticekv["lattice_vip_point"].val)
- for k,v in pairs(vip_reset_table) do
- if v[1] <= curVip and can_reset_num < v[2] then
- can_reset_num = v[2]
- end
- end
- --print("============>>> YiRan:EmpowerGridWalkView [start:725] curVip :",curVip)
- --print("============>>> YiRan:EmpowerGridWalkView [start:728] can_reset_num :",can_reset_num)
- --print("============>>> YiRan:EmpowerGridWalkView [start:719] self.game_info.reset_count :",self.game_info.reset_count)
- local left_reset_num = math.max(0, can_reset_num-self.game_info.reset_count)
- local color = left_reset_num == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
- --local left_reset_num_str = HtmlColorTxt(math.max(0, can_reset_num-self.game_info.reset_count), ColorUtil.GREEN)
- self.reset_num_tmp.text = "今日剩余重置次数:<color="..color..">".. left_reset_num .."</color>"
-
- if self.is_moved_last_grid then
- self.reset_cost = nil
- local resetInfo = stringtotable(Config.Latticekv["reset_lattice_cost"].val)
- self.reset_cost = resetInfo[self.game_info.reset_count+1] and resetInfo[self.game_info.reset_count+1][2][3] or 100
- local color = RoleManager.Instance.mainRoleInfo:GetRealJin() < self.reset_cost and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
- self.free_num_word_tmp.text = string.format('重置消耗:%s%s', WordManager:GetMoneyFaceStr(1),HtmlColorTxt( self.reset_cost, color))
-
- -- self.free_num_tmp.text = " <color="..color..">"..self.reset_cost.."</color>"--钻石
- -- self.img_money_obj:SetActive(true)
- SetLocalPositionX(self.img_money, 38)
- else
- if self.game_info.free_count > 0 then
- self.free_num_word_tmp.text = string.format('剩余免费:%s次', HtmlColorTxt( self.game_info.free_count, ColorUtil.GREEN_DARK))
- --self.free_num_tmp.text = self.game_info.free_count.."次"
- self.cur_cost_for_dice = 0
- self.throw_red_obj:SetActive(true)
- -- self.img_money_obj:SetActive(false)
- else
- local cost_cfg = stringtotable(Config.Latticekv["lattice_roll_cost"].val)
- self.cur_cost_for_dice = math.max(0, self.cur_cost_for_dice + cost_cfg[2][2][3])
-
-
- local color = RoleManager.Instance.mainRoleInfo:GetRealJin() < self.cur_cost_for_dice and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
- self.free_num_word_tmp.text = string.format(" 消耗:%s<color=%s>%s</color>",WordManager:GetMoneyFaceStr(1),color,self.cur_cost_for_dice)--钻石
-
- --self.img_money_obj:SetActive(true)
- --SetLocalPositionX(self.img_money, 15)
- -- self.free_num_tmp.text = ""
- end
- end
-
- if self.is_moved_last_grid then
- --lua_resM:setImageSprite(self, self.throw_die_img, "empower_asset", "gridwalk_txt_btn_reset")
- self.throw_die_txt_tmp.text = "重置"
- self.pic_throw_die_start_obj:SetActive(false)
- self.pic_throw_die_reset_obj:SetActive(true)
- self:ShowWaitResetView(true)
- else
- self.throw_die_txt_tmp.text = "开始"
- self.pic_throw_die_start_obj:SetActive(true)
- self.pic_throw_die_reset_obj:SetActive(false)
- self:ShowWaitResetView(false)
- end
- end
-
- function EmpowerGridWalkView:ShowWaitResetView(isShow)
- local reset_info = Config.Latticeresetinfo[self.game_info.reset_count+1]
- self.grid_con_obj:SetActive( not isShow)
- if not reset_info then
- self.resetCon_obj:SetActive(false)
- return
- end
-
- self.resetCon_obj:SetActive(isShow)
- -- self.grid_con_obj:SetActive( not isShow)
- self.grid_con_obj:SetActive( true)
- self.reset_reward_item = self.reset_reward_item or UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.reset_item_con)
- self.reset_reward_item:SetItemSize(62, 62)
- --self.reset_reward_item:SetPosition(pos.x-35, pos.y+52)
- --self.reset_reward_item:SetVisible(is_need_show_award_item)
- self.reset_good_list = stringtotable(reset_info.reward)[1]
-
- self.reset_get_num = self.reset_good_list[3]
- self.reset_reward_item:SetData(self.reset_good_list[2], self.reset_good_list[3])
-
- end
-
- function EmpowerGridWalkView:ResSetAnimation( )
- local new_pos = self.fly_con:InverseTransformPoint(Vector3(0,0,0)) -- 动画
- if self.reset_good_list then
- --for i=1,self.reset_good_list[3] do -- 只飞一个就行
- self:FlyAwardItemToBag(self.reset_good_list[2], new_pos, self.reset_good_list[3])
- --end
- end
- end
- function EmpowerGridWalkView:DestroySuccess( )
- self.model:SetIsShowingGameView(false)
-
- if self.on_ans_update_red_dot_id then
- self.model:UnBind(self.on_ans_update_red_dot_id)
- self.on_ans_update_red_dot_id = nil
- end
- if self.on_bag_change then
- GoodsModel:getInstance():UnBind(self.on_bag_change)
- self.on_bag_change = nil
- end
-
- if self.EMGRIDWALK_INFO_ID then
- self.model:UnBind(self.EMGRIDWALK_INFO_ID)
- self.EMGRIDWALK_INFO_ID = nil
- end
- if self.EMGRIDWALK_INFO_41410_ID then
- self.model:UnBind(self.EMGRIDWALK_INFO_41410_ID)
- self.EMGRIDWALK_INFO_41410_ID = nil
- end
-
-
- if self.RESET_EMGRIDWALK_SUCCESS_ID then
- self.model:UnBind(self.RESET_EMGRIDWALK_SUCCESS_ID)
- self.RESET_EMGRIDWALK_SUCCESS_ID = nil
- end
-
-
- cc.ActionManager:getInstance():removeAllActionsFromTarget(self.dice_img)
-
- -- for i,v in ipairs(self.reward_items) do
- -- if v.award_item then
- -- UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v.award_item)
- -- v.award_item = nil
- -- end
- -- end
- -- self.reward_items = nil
-
- if self.reset_reward_item then
- UIObjPool:PushItem(UIObjPool.UIType.AwardItem, self.reset_reward_item)
- self.reset_reward_item = nil
- end
-
-
- if self.on_grid_game_info_changed_id then
- self.model:UnBind(self.on_grid_game_info_changed_id)
- self.on_grid_game_info_changed_id = nil
- end
- cc.ActionManager:getInstance():removeAllActionsFromTarget(self.role_con)
- --self.role_node = nil
-
- if self.money_view then
- self.money_view:DeleteMe()
- self.money_view = nil
- end
-
- for i,v in pairs(self.item_pool) do
- v:DeleteMe()
- end
- self.item_pool = nil
-
- -- 清奖励浮动动画
- self:RemovellAwardAnim()
-
- -- 清底座浮动动画
- for k,v in pairs(self.circle_img_list) do
- cc.ActionManager:getInstance():removeAllActionsFromTarget(v)
- end
- end
-
- ----------双倍特效-start---------
- -- 添加动画
- function EmpowerGridWalkView:AddDoubleEffect( parent )
- local item
- -- 缓存池中找空闲item
- for i,v in ipairs(self.item_pool) do
- if v:CanUse() then
- item = v
- break
- end
- end
- -- 没找到那就创建
- if not item then
- item = EmpowerDoubleItem.New(self.effectCon)
- table.insert(self.item_pool, item)
- end
- -- 设置位置
- item:SetPosition(GetLocalPositionX(parent), GetLocalPositionY(parent))
- -- 开播
- item:SetData()
- end
- ----------双倍特效-end-----------
-
- ----------宝箱模型-start---------
- -- 添加宝箱模型
- function EmpowerGridWalkView:AddTreasureModel( parent )
- local res_data = {
- clothe_res_id = EmpowerConst.RewardModelID, -- 41000202 10020206
- -- weapon_res_id = monster.weapon_id,
- type = SceneBaseType.Monster,
- action_name_list = {"idle"},
- layer_name = self.layer_name,
- father_node = self,
- transform = parent,
- rotate = Vector3(18.5, 187.5, -6), -- Vector3(-17,36,-13) Vector3(19, 121.5, -24)
- fashion_type = FuncOpenModel.TypeId.Monster,
- position = Vector3(-4.5, 8, 0),
- -- shadow2_plane_pos = Vector4(0, 10, 0, 1),
- scale = 90, -- 80 65
- ui_model_type = UIModelCommon.ModelType.Model,
- show_shadow = false,
- green_screen_camera_type = 3, -- camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
- end
- ----------宝箱模型-end-----------
-
- ----------奖励item上下浮动动画-start---------
- function EmpowerGridWalkView:RemovellAwardAnim( )
- for k,v in pairs(self.reward_items) do
- if v.award_item then
- cc.ActionManager:getInstance():removeAllActionsFromTarget(v.award_item.transform)
- end
- end
- end
-
- function EmpowerGridWalkView:AddAwardAnim( parent, start_pos )
- local move_time = 1
- local start_pos = start_pos
- local move_dist = 10
- -- SetAnchoredPositionX(parent, 0)
- local function move_up(percent)
- SetAnchoredPositionY(parent, start_pos + move_dist * percent)
- end
- local action1 = cc.CustomUpdate.New(move_time, move_up)
-
- -- 移动
- local function move_down(percent)
- SetAnchoredPositionY(parent, start_pos + move_dist * (1-percent))
- end
- local action2 = cc.CustomUpdate.New(move_time, move_down)
- ------------------------------------------------
- local action3 = cc.Sequence.New( action1, action2)--顺序
- local action10 = cc.RepeatForever.New( action3 )
- cc.ActionManager:getInstance():addAction(action10, parent)
- end
- ----------奖励item上下浮动动画-end-----------
-
- ----------路过之后底座浮动动画-start---------
- function EmpowerGridWalkView:PlayGridFloatAnim( index, anim_type )
- local parent = self.circle_img_list[index]
- if not parent then return end
- cc.ActionManager:getInstance():removeAllActionsFromTarget(parent)
- -- local move_time = 0.3
- local move_dist = -10
- local pos = self.way_points[index]
- -- 设置起始位置(防止它动画没播完位置不对)
- if anim_type == FloatAnimType.UP then -- 下面
- SetLocalPosition(parent, pos.x-5, pos.y+10 + move_dist, pos.z+150)
- else -- 上面
- SetLocalPosition(parent, pos.x-5, pos.y+10, pos.z+150)
- end
- local _, start_pos_y = GetAnchoredPosition(parent)
-
- local anim_param = EmpowerConst.FloatAnimParam
-
- local function move_down(percent)
- SetAnchoredPositionY(parent, start_pos_y + move_dist * percent)
- end
- local action1 = cc.CustomUpdate.New(anim_param.down_time1, move_down)
-
- -- 移动
- local function move_up(percent)
- SetAnchoredPositionY(parent, start_pos_y + move_dist * (1-percent))
- end
- local action2 = cc.CustomUpdate.New(anim_param.up_time2, move_up)
-
- -- 上移2
- local function move_up2(percent)
- SetAnchoredPositionY(parent, start_pos_y - move_dist * percent)
- end
- local action3 = cc.CustomUpdate.New(anim_param.up_time1, move_up2)
-
-
- local function end_call()
- self.box_float_anim_state[index] = false -- 动画状态结束
- end
- local call_func1 = cc.CallFunc.New(end_call)
- ------------------------------------------------
-
- -- 动画
- if anim_type == FloatAnimType.UP then
- action4 = cc.Sequence.New( action3, call_func1 )
- elseif anim_type == FloatAnimType.DOWN then
- action4 = cc.Sequence.New( action1, call_func1)
- elseif anim_type == FloatAnimType.DOWN_AND_UP then
- action4 = cc.Sequence.New( action1, action2, call_func1)
- end
- self.box_float_anim_state[index] = true
- cc.ActionManager:getInstance():addAction(action4, parent)
- end
- ----------路过之后底座浮动动画-end-----------
|