源战役客户端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

241 linhas
8.6 KiB

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</color><#a9c1e1>/</color><#fdffc2>%s</color>", 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</color><#a9c1e1>/</color><#fdffc2>%s</color>", 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</color>/%s)</color>",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