ChildTrainView = ChildTrainView or BaseClass(BaseView) local ChildTrainView = ChildTrainView local STAR_COUNT = 10 -- 星星数(每阶有多少级) function ChildTrainView:__init() self.base_file = "child" self.layout_file = "ChildTrainView" self.layer_name = "UI" self.destroy_imm = true self.use_background = G_USING_BG --全屏界面默认使用这个参数 self.hide_maincancas = true --全屏界面需要放开隐藏主UI self.change_scene_close = true self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.blur_activity_bg = true self.fire_change_visible_event = true self.close_fog = true self.model = ChildModel:getInstance() self.show_figure_id = -1 self.attr_item_list = {} -- 属性item self.img_moon_list = {} -- 进阶的星级 self.awardItems = {} -- 进阶展示的奖励 self.is_effect = false -- 是否正在播放逗BB特效 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.switch_callback = function(index) self:SwitchTab(index) end self.destroy_callback = function ( ) self:DestroySuccess() end end function ChildTrainView:Open( ) --self.data = data BaseView.Open(self) end function ChildTrainView:LoadSuccess() local nodes = { "bg:raw", "btn_doubaobao:obj", "btn_show:obj", "btn_nice:obj", "btn_rank:obj", "showBaby_con/tips_bg", "showBaby_con/tips_bg/showCSBtn:obj", "showBaby_con/tips_bg/showWorldBtn:obj", "showBaby_con/tips_bg/showGuildBtn:obj", "showBaby_con:obj", "rename_bg/btn_rename:obj", "rename_bg/text_name:tmp", "toggle_show:obj", "qiPao_bg/qipao_text:tmp", "qiPao_bg:obj", "effect_doubaobao","rt_image_show", "effectCon", "close_btn:obj", -------------------------------------------- "makeCon/btn_grow_all:obj", "makeCon/ScrollView_attr_make/Viewport/attrContent_make", "makeCon/itemCon", "makeCon/grow_loading_bg/grow_loading:img", "makeCon/grow_loading_bg/text_descr:tmp", "makeCon/fightNum:txt", "makeCon/levelText:tmp", "makeCon/btn_grow_all/btn_grow_all_red_dot:obj", } self:GetChildren(nodes) self.toggle_show_tog = self:GetChild("toggle_show"):GetComponent("Toggle") -- 培养星级 for i = 1, STAR_COUNT do self.img_moon_list[i] = {} local temp = self.img_moon_list[i] temp.transform = self:GetChild("makeCon/bg1/img_moon" .. i) -- temp.img = temp.transform:GetComponent("Image") temp.obj = temp.transform.gameObject end SetSizeDelta(self.showBaby_con, ScreenWidth, ScreenHeight) self:UpdateBaseView() end function ChildTrainView:UpdateBaseView( ) lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("child_train_bg_1173_663")) -- local close_callback = function() -- self:Close() -- end -- self.tab_win = UITabWindow.New(self.transform, nil, nil, -- close_callback, self.background_wnd, nil, UITabWindow.SizeSmallHallNoTab, false,nil,true) -- self.tab_win:SetBackgroundRes("child_train_bg_1173_663") -- self.tab_win:SetTitleText("宝宝培养") -- self.tab_win:ChangeShowFlag("Child") -- 培养奖励 self.feedList = self.model:GetChildFeedList() local start_x = 10 local start_y = -5 local item_width = 78 local inter_x = 29 for i = 1, #self.feedList do self.awardItems[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.itemCon) self.awardItems[i]:SetItemSize(item_width, item_width) self.awardItems[i]:SetAnchoredPosition((i - 1) * (inter_x + item_width) + start_x, start_y) -- SetLocalPosition(self.awardItems[i].transform, GetLocalPositionX(self.item_parent)+108*i,0, 0) if self.feedList[i] then self.awardItems[i]:SetData(self.feedList[i][1]) self.awardItems[i].ClickCallFun = function (target,target2,x,y) --覆盖AwardItem 的点击方法 local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(self.feedList[i][1]) or 0 if hadNum >=1 then self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16504,0,self.awardItems[i].type_id,1) else UIToolTipMgr.getInstance():AppendGoodsTips(self.awardItems[i].type_id) return end end end end self:UpdateFeedItemNum() 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) -- self:MoveUIToBack(self.tab_win.win_bg) end if self.background_wnd then bg_back_func() else self.bg_back_func = bg_back_func end --self.titleTmp_tmp.text = "宝宝培养" local pos_x,pos_y = GetAnchoredPosition(self.btn_show) SetAnchoredPosition(self.tips_bg, pos_x + 120, pos_y - 50) end function ChildTrainView:AddEvent() local onBtnClickHandler = function ( target ) if target == self.btn_rank_obj then -- 宝宝排行 self.model:Fire(ChildConst.OPEN_CHILD_RANK_VIEW,true) elseif target == self.btn_show_obj then -- 晒娃 self.model:Fire(ChildConst.OPEN_SHOW_BABY_VIEW, true) elseif target == self.btn_nice_obj then -- 点赞记录 self.model:Fire(ChildConst.OPEN_CHILD_NICE_RECORD_VIEW,true) elseif target == self.btn_doubaobao_obj then -- 逗娃 local function callback( ) if self.is_effect then self.qiPao_bg_obj:SetActive(false) self.is_effect = false end end local time = 1.5 if self.is_effect == false then self.is_effect = true self.qiPao_bg_obj:SetActive(true) local randomNum = math.random(1,#ChildConst.ChildMainViewDouBaoBaoSaying) self.qipao_text_tmp.text = ChildConst.ChildMainViewDouBaoBaoSaying[randomNum] or "宝宝无话可说" self.doubaobao_effect_id = self:AddUIEffect("ui_doubaobao", self.effect_doubaobao, "UI", Vector3(0,0,0), 1, false, time, nil, callback) end -- elseif target == self.showBaby_con_obj then -- 关闭晒娃 -- self.showBaby_con_obj:SetActive(false) -- elseif target == self.showWorldBtn_obj then -- 世界晒娃 -- self.showBaby_con_obj:SetActive(false) -- if RoleManager.Instance.mainRoleInfo.level >= Config.Moduleid[110].open_lv then -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_WORLD) -- else -- Message.show("等级不足"..Config.Moduleid[110].open_lv, "fault") -- end -- elseif target == self.showCSBtn_obj then -- 跨服晒 -- self.showBaby_con_obj:SetActive(false) -- if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.ChatOpenLevel.CROSS then -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_CROSS) -- else -- Message.show("等级不足"..Config.ConfigOpenLv.ChatOpenLevel.CROSS, "fault") -- end -- --Message.show("2") -- elseif target == self.showGuildBtn_obj then -- 社团晒 -- self.showBaby_con_obj:SetActive(false) -- if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.ChatOpenLevel.GUILD and ( RoleManager.Instance:GetMainRoleVo().guild_id and RoleManager.Instance:GetMainRoleVo().guild_id ~= 0) then -- self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16509,ChatModel.CHANNEL_GUILD) -- else -- Message.show("社团频道还未开启哦", "fault") -- end elseif target == self.btn_rename_obj then -- 宝宝改名 self.model:Fire(ChildConst.OPEN_CHILD_RENAME_VIEW, true) elseif target == self.toggle_show_obj then -- 宝宝跟随 self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16516) elseif target == self.btn_grow_all_obj then self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16504,1,0,0) -- 点击一键成长时要刷进度条和属性特效 self.has_click_all_need_effect = true elseif target == self.close_btn_obj then self:Close() end end -- 左侧按钮 AddClickEvent(self.btn_doubaobao_obj, onBtnClickHandler) AddClickEvent(self.btn_rank_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.btn_show_obj, onBtnClickHandler) AddClickEvent(self.btn_nice_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE) -- 晒娃按钮 -- AddClickEvent(self.showBaby_con_obj, onBtnClickHandler) -- AddClickEvent(self.showWorldBtn_obj, onBtnClickHandler) -- AddClickEvent(self.showCSBtn_obj, onBtnClickHandler) -- AddClickEvent(self.showGuildBtn_obj, onBtnClickHandler) -- 改名/跟随 AddClickEvent(self.btn_rename_obj, onBtnClickHandler) AddClickEvent(self.toggle_show_obj, onBtnClickHandler) -- 右边 AddClickEvent(self.btn_grow_all_obj, onBtnClickHandler) AddClickEvent(self.close_btn_obj, onBtnClickHandler) local function update_make_con(need_anim) self:UpdateView(need_anim) end self:BindEvent(self.model, ChildConst.UPDATA_CHILD_MAIN_INFO, update_make_con) end function ChildTrainView:OpenSuccess() self:UpdateView() end function ChildTrainView:UpdateView(need_anim) local list = self.model:GetChildInfo() self.text_name_tmp.text = list.child_name or "" self.toggle_show_tog.isOn = list.is_follow == 1 and true or false self.toggle_show_obj:SetActive(self.model:GetChildCurState( ) ~= ChildConst.BABY_STATE.BABY) self:UpdateMakeCon( need_anim ) end function ChildTrainView:UpdateFeedItemNum( ) local bool = self.model:GetChildRedDotList()[ChildConst.TabId.ChildTrain] self.btn_grow_all_red_dot_obj:SetActive(bool) for i = 1, #self.feedList do local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(self.feedList[i][1]) or 0 self.awardItems[i]:SetNumText(hadNum) end end function ChildTrainView:UpdateMakeCon( need_anim ) local list = self.model:GetChildInfo() local growUpList = self.model:GetChildNowGrowUpInfo() local growUpNextList = self.model:GetChildNextGrowUpInfo() if not growUpList then return end -- 下一阶级的属性 local attr_list_next = {} if growUpNextList then attr_list_next = stringtotable(growUpNextList.attr_list) --self.img_arrow_obj:SetActive(true) else --满级时 --self.img_arrow_obj:SetActive(false) end local yearNum = math.floor((growUpList.month) / STAR_COUNT) -- 进阶数 (原来叫法是年份) local monthNum = (growUpList.month) % STAR_COUNT -- 当前阶级星级数 (原来叫法的月份) -- 阶数 local last_num = tonumber(self.levelText_tmp.text) self.levelText_tmp.text = yearNum -- 当前阶级星星数 local is_up = false self.showing_star_effect = self.showing_star_effect or {} for i = 1, STAR_COUNT do if self.has_init_star_effect then -- 非第一次创建 if (i <= monthNum and self.img_moon_list[i].obj.activeSelf == false) or -- 由灰转亮 (i <= monthNum and last_num < yearNum) then -- 跳阶段 if not self.showing_star_effect[i] then local function call_back( ) self.showing_star_effect[i] = false end self:ClearUIEffect(self.img_moon_list[i].transform) self:AddUIEffect("ui_jinjiestar", self.img_moon_list[i].transform, self.layer_name, nil, 1, false, nil, nil, call_back) self.showing_star_effect[i] = true end is_up = true end end self.img_moon_list[i].obj:SetActive(i <= monthNum) end if not self.has_init_star_effect then self.has_init_star_effect = true end -- 属性 local attr_list = stringtotable(growUpList.attr_list) for k,v in pairs(attr_list) do local item = self.attr_item_list[k] if item == nil then item = ChildGrowItem.New(self.attrContent_make) self.attr_item_list[k] = item end local num2 = nil for k2,v_next_lv in pairs(attr_list_next) do if v[1] == v_next_lv[1] then num2 = v_next_lv[2] end end self.attr_item_list[k]:SetData(v[1],v[2],num2,k, is_up or self.has_click_all_need_effect) end -- 进阶进度条 local new_rate = list.child_age_exp/growUpList.need_exp local old_rate = tonumber(self.grow_loading_img.fillAmount) -- print('=======Msh:ChildTrainView.lua[310] =======', self.model:GetPreAgeMonth(), old_rate, new_rate, need_anim) -- PrintCallStack() if need_anim then local old_age_month = self.model:GetPreAgeMonth( ) local set_func = function( ) self.text_descr_tmp.text = string.format("%s/%s", list.child_age_exp, growUpList.need_exp) end local need_time local need_time_2 --print('Msh:ChildTrainView.lua[317] data', old_age_month, list.child_age_month) if old_age_month ~= -1 and old_age_month < list.child_age_month then -- 涨满再归零再涨 --logWarn('=======Msh:ChildTrainView.lua[318]=======') need_time = 1 * (1 - old_rate) need_time = need_time >= 0.3 and need_time or 0.3 need_time_2 = 1 * new_rate need_time_2 = need_time_2 >= 0.3 and need_time_2 or 0.3 local end_func = function () self:ShowFillAmountAnim(0, new_rate, set_func, need_time_2 ) end self:ShowFillAmountAnim( old_rate, 1, end_func, need_time ) else -- 直接涨 --logWarn('=======Msh:ChildTrainView.lua[328]=======') need_time = 1 * (new_rate - old_rate) need_time = need_time >= 0.3 and need_time or 0.3 self:ShowFillAmountAnim( old_rate, new_rate, set_func, need_time ) end else self.grow_loading_img.fillAmount = new_rate self.text_descr_tmp.text = string.format("%s/%s", list.child_age_exp, growUpList.need_exp) end -- 战力 self.fightNum_txt.text = "f" .. GetFighting(attr_list) self:UpdateRoleModel( ) -- 点击过一键成长的要强制播特效 if self.has_click_all_need_effect then self:PlayUpEffect(0) -- 进度条 else if is_up then self:PlayUpEffect(0) -- 进度条 self:PlayUpEffect(1) -- 模型 end end self.has_click_all_need_effect = false -- 重置点击状态 self:UpdateFeedItemNum( ) end -- 进度条动画 注意:new_rate > old_rate function ChildTrainView:ShowFillAmountAnim( old_rate, new_rate, end_fun, need_time ) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) if new_rate <= old_rate then self.grow_loading_img.fillAmount = new_rate if end_fun then end_fun() end return -- print('=======Msh:ChildTrainView.lua[363] ===有问题哟====', old_rate, new_rate) end -- 进度条 local function rotate_front2(percent) self.grow_loading_img.fillAmount = old_rate + (new_rate - old_rate) * percent end local action1 = cc.CustomUpdate.New(need_time, rotate_front2) -- 结束动画 local function callback_1() if end_fun then end_fun() end end local call_func_1 = cc.CallFunc.New(callback_1) local action9 = cc.Sequence.New( action1, call_func_1)--顺序 cc.ActionManager:getInstance():addAction(action9, self.transform) end function ChildTrainView:PlayUpEffect( id ) if id == 0 then -- 进度条 if not self.showing_effect_per_1 then local function call_back( ) self.showing_effect_per_1 = false end self:ClearUIEffect(self.grow_loading) self:AddUIEffect("ui_jinjiejindu", self.grow_loading, self.layer_name, Vector3(-120,0,0), 1, false, 0.6, nil, call_back) self.showing_effect_per_1 = true end elseif id == 1 then if not self.showing_effect_model then local function call_back( ) self.showing_effect_model = false end self:ClearUIEffect(self.effectCon) self:AddUIEffect("ui_jinjie", self.effectCon, self.layer_name, Vector3( 14, 80, 0), 1, false, 1.5, nil, call_back) self.showing_effect_model = true end end end function ChildTrainView:UpdateRoleModel(need_effect) local show_figure_id = self.model:GetChildCloth() -- if need_effect then -- self:ClearUIEffect(self.rt_image_show) -- self:AddUIEffect("ui_jinjie", self.rt_image_show, self.layer_name, nil, 1, false, 1.5, nil) -- end if self.show_figure_id == show_figure_id then return end self.show_figure_id = show_figure_id local res_data = { father_node = self, transform = self.rt_image_show, fashion_type = FuncOpenModel.TypeId.Child, figure_id = show_figure_id, ui_model_type = UIModelCommon.ModelType.BackModel, can_rotate = true, } FuncOpenModel:getInstance():SetModelRes(res_data) end function ChildTrainView:SwitchTab( index ) end function ChildTrainView:DestroySuccess( ) for i, v in pairs(self.attr_item_list) do v:DeleteMe() v = nil end self.attr_item_list = {} if self.doubaobao_effect_id then self.particle_mgr:DelEffect(self.doubaobao_effect_id) self.doubaobao_effect_id = false end for i=1,#self.awardItems do if self.awardItems[i] then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItems[i]) self.awardItems[i] = nil end end -- if self.tab_win then -- self.tab_win:DeleteMe() -- self.tab_win = nil -- end cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) end