CSMainMilitaryRanksDetailsView = CSMainMilitaryRanksDetailsView or BaseClass(BaseItem) local CSMainMilitaryRanksDetailsView = CSMainMilitaryRanksDetailsView function CSMainMilitaryRanksDetailsView:__init() self.base_file = "csMain" self.layout_file = "CSMainMilitaryRanksDetailsView" self.model = CSMainModel:getInstance() self.is_show_next = false self:Load() end function CSMainMilitaryRanksDetailsView:Load_callback() self.nodes = { "advanceBtn:obj:img", "advanceBtn/advanceRed:obj", "advanceBtn/advanceText:tmp", "awardCon:obj", "conditionCon1:obj", "noneTip:tmp", "conditionCon1/conditionDes1:tmp", "conditionCon1/conditionDot1:img", "conditionCon2/conditionDes2:tmp", "conditionCon2:obj", "conditionCon2/conditionDot2:obj:img", "militaryCon1/militaryRanksIcon1:img", "militaryCon1/fight1:txt", "militaryCon1/attrScrollView1/Viewport/attrContent1", "militaryCon1/attrScrollView1", "militaryCon2/militaryRanksIcon2:img", "militaryCon2/fight2:txt", "militaryCon2/attrScrollView2/Viewport/attrContent2", "militaryCon2/attrScrollView2", } self:GetChildren(self.nodes) self.cost_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon) self.cost_item:SetItemSize(78,78) self.cost_item:SetAnchoredPosition(0,0) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function CSMainMilitaryRanksDetailsView:AddEvents( ) local on_click = function ( click_obj ) if self.advanceBtn_obj == click_obj then if self.can_evolve_state then self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60305) else if self.is_show_next then Message.show("条件未达成") else Message.show("已升至满阶") end end end end AddClickEvent(self.advanceBtn_obj, on_click) --军衔进阶成功 local function on_update_military_details() self:UpdateView() end self:BindEvent(self.model, CSMainConst.CS_MAIN_MILITARY_ADVANCE_SUCCESE, on_update_military_details) --晋升令刷新 local function update_cs_main_goods_num() local military_ranks = self.model:GetCSMainMilitaryRanks() local next_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks+1) if next_military_cfg then self:UpdateEvolveState() end end self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_GOODS_NUM,update_cs_main_goods_num) local function update_power_change() self:UpdateEvolveState() end self.update_power_change_id = RoleManager.Instance.mainRoleInfo:BindOne("fighting", update_power_change) end function CSMainMilitaryRanksDetailsView:UpdateView( ) local military_ranks = self.model:GetCSMainMilitaryRanks() local next_military_ranks = military_ranks + 1 local now_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks) if not now_military_cfg then return end local next_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks+1) local have_next = next_military_cfg and true or false --左侧 lua_resM:setOutsideImageSprite(self, self.militaryRanksIcon1_img, GameResPath.GetMilitaryImage("military_ranks_"..military_ranks), true) local attr_data_left = stringtotable(now_military_cfg.attr) self.fight1_txt.text = "f"..GetFighting(attr_data_left) if not self.item_list_com_1 then self.item_list_com_1 = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = attr_data_left, item_con = self.attrContent1, item_class = CSMainMilitaryRanksAttrItem, item_width = 160, item_height = 30, -- space_x = 0, -- space_y = 0, start_x = 6, start_y = -5, scroll_view = self.attrScrollView1, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v) end, } self.item_list_com_1:UpdateItems(info) --右侧 if not next_military_cfg then--表示满级了,右侧也显示成当前军衔 next_military_cfg = now_military_cfg next_military_ranks = military_ranks self.is_show_next = false else self.is_show_next = true end lua_resM:setOutsideImageSprite(self, self.militaryRanksIcon2_img, GameResPath.GetMilitaryImage("military_ranks_"..next_military_ranks), true) local attr_data_right = stringtotable(next_military_cfg.attr) self.fight2_txt.text = "f"..GetFighting(attr_data_right) if not self.item_list_com_2 then self.item_list_com_2 = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = attr_data_right, item_con = self.attrContent2, item_class = CSMainMilitaryRanksAttrItem, item_width = 160, item_height = 30, -- space_x = 0, -- space_y = 0, start_x = 6, start_y = -5, scroll_view = self.attrScrollView2, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v,self.is_show_next) end, } self.item_list_com_2:UpdateItems(info) if have_next then self.conditionCon1_obj:SetActive(true) self.conditionCon2_obj:SetActive(true) self.noneTip_tmp.text = "" self.awardCon_obj:SetActive(true) self:UpdateEvolveState() else self.conditionCon1_obj:SetActive(false) self.conditionCon2_obj:SetActive(false) self.noneTip_tmp.text = "已升至满阶\n后续敬请期待" self.awardCon_obj:SetActive(false) SetImageGray(self.advanceBtn_img,true) SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) self.advanceRed_obj:SetActive(false) end end function CSMainMilitaryRanksDetailsView:UpdateEvolveState( ) local military_ranks = self.model:GetCSMainMilitaryRanks() local now_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks) if not now_military_cfg then return end --战力需达标 local enough_power = RoleManager.Instance.mainRoleInfo.fighting >= now_military_cfg.need if enough_power then lua_resM:setImageSprite(self, self.conditionDot2_img, "csMain_asset", "cs_main_condition_dot_true") self.conditionDes2_tmp.text = string.format("战力达到 <#2CF86F>%s<#a9c1e1>/<#fdffc2>%s", CalUnitNumWithMaxNum(RoleManager.Instance.mainRoleInfo.fighting), CalUnitNumWithMaxNum(now_military_cfg.need)) else lua_resM:setImageSprite(self, self.conditionDot2_img, "csMain_asset", "cs_main_condition_dot_false") self.conditionDes2_tmp.text = string.format("战力达到 <#ff203a>%s<#a9c1e1>/<#fdffc2>%s", CalUnitNumWithMaxNum(RoleManager.Instance.mainRoleInfo.fighting), CalUnitNumWithMaxNum(now_military_cfg.need)) end --晋升令 local cost_goods_data = stringtotable(now_military_cfg.cost) local no_need_cost = false if not cost_goods_data[1] or (cost_goods_data[1] and cost_goods_data[1][3] == 0)then cost_goods_data[1] = {0,100019,0} no_need_cost = true end if no_need_cost then self.conditionCon1_obj:SetActive(false) self.awardCon_obj:SetActive(false) else self.conditionCon1_obj:SetActive(true) self.awardCon_obj:SetActive(true) end local goods_type_id = cost_goods_data[1][2] local cost_need_num = cost_goods_data[1][3] local cost_have_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_type_id) local enough_cost = cost_have_num >= cost_need_num local cost_color = enough_cost and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK self.conditionDes1_tmp.text = string.format("持有晋升指令%s个<#a9c1e1>(<%s>%s/%s)",cost_need_num,cost_color,cost_have_num,cost_need_num) local cost_dot_res = enough_cost and "cs_main_condition_dot_true" or "cs_main_condition_dot_false" lua_resM:setImageSprite(self, self.conditionDot1_img, "csMain_asset",cost_dot_res) self.can_evolve_state = enough_power and enough_cost if self.cost_item then self.cost_item:SetData(goods_type_id) local num_str = HtmlColorTxt(cost_have_num, cost_have_num < cost_need_num and ColorUtil.RED_DARK or ColorUtil.GREEN_TIPS).."/".. cost_need_num self.cost_item:IsGetGoods(true,num_str,false) end if self.can_evolve_state then SetImageGray(self.advanceBtn_img,false) self.advanceRed_obj:SetActive(true) SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) else SetImageGray(self.advanceBtn_img,true) self.advanceRed_obj:SetActive(false) SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) end end function CSMainMilitaryRanksDetailsView:SetData( data ) self.data = data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function CSMainMilitaryRanksDetailsView:__delete( ) if self.cost_item then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.cost_item) self.cost_item = nil end if self.update_power_change_id then RoleManager.Instance.mainRoleInfo:UnBind(self.update_power_change_id) self.update_power_change_id = nil end end