CSMainAppointView = CSMainAppointView or BaseClass(BaseView) local CSMainAppointView = CSMainAppointView function CSMainAppointView:__init() self.base_file = "csMain" self.layout_file = "CSMainAppointView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.change_scene_close = true self.hide_maincancas = true --是否隐藏主界面 self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.is_set_zdepth = true self.model = CSMainModel:getInstance() self.tab_item_list = {} self.current_index = nil 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 CSMainAppointView:Open(index) self.current_index = index or 1 BaseView.Open(self) end function CSMainAppointView:LoadSuccess() local nodes = { "bg:raw", "closeBtn:obj", "tabCon", "rankCon:obj", "roleScrollView:obj", "roleScrollView/Viewport/roleContent", "allRoleScrollView:obj", "allRoleScrollView/Viewport/allRoleContent", "rankCon/titleCon/Text_3:tmp", "rankCon/titleCon/Text_2:tmp", "rankCon/rankScrollView", "rankCon/rankScrollView/Viewport/rankContent", "helpBtn:obj", "des:tmp", "empty:obj", "empty/emptyGirl:raw", "rankCon/rankBg:img", "lastRankBtn:obj", "sandBtn:obj", "csWarBtn:obj", "rankConBlock:obj", "rankTitleImg:img", } self:GetChildren(nodes) SetSizeDelta(self.rankConBlock,ScreenWidth, ScreenHeight) self.rankCon_obj:SetActive(false) lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("cs_main_appoint_bg")) lua_resM:setOutsideRawImage(self, self.emptyGirl_raw, GameResPath.GetRoleBg("setting_girl")) lua_resM:setOutsideImageSprite(self, self.rankBg_img, GameResPath.GetCSMainImage("cs_main_last_rank_bg")) end function CSMainAppointView:AddEvent() local on_click = function ( click_obj ) if self.closeBtn_obj == click_obj then self:Close() elseif self.helpBtn_obj == click_obj then EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 60303) elseif self.lastRankBtn_obj == click_obj then local is_show = self.rankCon_obj.activeSelf self.rankCon_obj:SetActive(not is_show) self.rankConBlock_obj:SetActive(not is_show) elseif self.rankConBlock_obj == click_obj then self.rankCon_obj:SetActive(false) self.rankConBlock_obj:SetActive(false) elseif self.sandBtn_obj == click_obj then SandTableModel:getInstance():Fire(SandTableConst.OPEN_MAIN_VIEW) self:Close() elseif self.csWarBtn_obj == click_obj then --本国团战根据开服天数不同,可能会在同的星期里开,所以要判断一下 local jump_wday = 6 for i=1,7 do local act_list = GuildModel:getInstance():GetGuildEventByWday(i) for k,v in pairs(act_list) do if v.module_id == 410 then jump_wday = i break end end end GuildModel:getInstance():Fire(GuildModel.OPEN_GUILD_EVENT_VIEW,410,jump_wday) self:Close() end end AddClickEvent(self.closeBtn_obj, on_click) AddClickEvent(self.helpBtn_obj, on_click) AddClickEvent(self.lastRankBtn_obj, on_click) AddClickEvent(self.rankConBlock_obj, on_click) AddClickEvent(self.sandBtn_obj, on_click) AddClickEvent(self.csWarBtn_obj, on_click) --上期本国团战排行榜 local function on_update_last_guild_rank_view() self:UpdateRankCon(1) end self:BindEvent(self.model, CSMainConst.UPDATE_LAST_GUILD_WAR_SCORE_RANK_VIEW, on_update_last_guild_rank_view) --上期军功排行榜 local function on_update_last_military_score_rank_view() self:UpdateRankCon(2) end self:BindEvent(self.model, CSMainConst.UPDATE_LAST_MILITARY_SCORE_RANK_VIEW, on_update_last_military_score_rank_view) --任命记录 local function on_update_appoint_data_view(opty) if opty == 1 or opty == 2 then self:UpdateRoleList(opty) elseif opty == 0 then self:UpdateAllRoleList(opty) end end self:BindEvent(self.model, CSMainConst.UPDATE_APPOINT_DATA_VIEW, on_update_appoint_data_view) end function CSMainAppointView:OpenSuccess() self:InitTab() end function CSMainAppointView:InitTab( ) local tab_data = { [1] = {name = "官员一览"}, [2] = {name = "执政官员"}, [3] = {name = "指挥官员"}, } local function call_back(tab_index) self:SwitchTab(tab_index) end for k,v in pairs(self.tab_item_list) do v:SetVisible(false) end for i,v in ipairs(tab_data) do local item = self.tab_item_list[i] if not item then item = CSMainAppointTab.New(self.tabCon) self.tab_item_list[i] = item end item:SetVisible(true) item:SetData(v,i,call_back) item:SetAnchoredPosition(-2, 41-(i-1)*(74-5)) end for k,v in pairs(self.tab_item_list) do v:OnClick(self.current_index) end end function CSMainAppointView:UpdateRoleList(opty) local appoint_data = self.model:GetAppointData(opty) self.empty_obj:SetActive(#appoint_data == 0) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.item_list_com:Reset() local info = { data_list = appoint_data, item_con = self.roleContent, item_class = CSMainAppointRoleListItem, item_width = 777, item_height = 110, space_y = 31, start_x = 9, start_y = -40, scroll_view = self.roleScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v,opty) end, } self.item_list_com:UpdateItems(info) end function CSMainAppointView:UpdateAllRoleList(opty) local appoint_data = self.model:GetAppointData(opty) self.empty_obj:SetActive(#appoint_data == 0) if not self.all_role_item_list_com then self.all_role_item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.all_role_item_list_com:Reset() local info = { data_list = appoint_data, item_con = self.allRoleContent, item_class = CSMainAppointAllRoleListItem, item_width = 777, item_height = 349, space_y = 24, start_x = 9, start_y = -14, scroll_view = self.allRoleScrollView, create_frequency = 0.01, reuse_item_num = 2, on_update_item = function(item, i, v) item:SetData(v) end, } self.all_role_item_list_com:UpdateItems(info) end function CSMainAppointView:UpdateRankCon(rank_type) local rank_data = {} if rank_type == 1 then--上期团战成绩排行 rank_data = self.model:GetLastGuildWarScoreRankData() elseif rank_type == 2 then--上期沙盘结算军功排名 rank_data = self.model:GetLastMilitaryScoreRankData() end if not self.rank_list_com then self.rank_list_com = self:AddUIComponent(UI.ItemListCreator) end self.rank_list_com:Reset() local info = { data_list = rank_data, item_con = self.rankContent, item_class = CSMainAppointRankItem, item_width = 316, item_height = 45, -- space_x = 0, -- space_y = 0, start_x = 1, start_y = 0, scroll_view = self.rankScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v,rank_type) end, } self.rank_list_com:UpdateItems(info) end function CSMainAppointView:SwitchTab( index ) self.current_index = index if index == 1 then lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_1",true)) self.sandBtn_obj:SetActive(false) self.csWarBtn_obj:SetActive(false) self.lastRankBtn_obj:SetActive(false) self.roleScrollView_obj:SetActive(false) self.allRoleScrollView_obj:SetActive(true) self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,0)--全部 elseif index == 2 then lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_2",true)) self.Text_2_tmp.text = "社团名" self.Text_3_tmp.text = "上期伤害" -- self.des_tmp.text = "伤害总量为上期本国团战成绩" self.sandBtn_obj:SetActive(false) self.csWarBtn_obj:SetActive(true) self.lastRankBtn_obj:SetActive(true) self.roleScrollView_obj:SetActive(true) self.allRoleScrollView_obj:SetActive(false) self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,1)--前三主官 if self.model.has_request_60314 then self:UpdateRankCon(1) else self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60314)--打开界面只请求一次 end elseif index == 3 then lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_3",true)) self.Text_2_tmp.text = "角色名" self.Text_3_tmp.text = "上期战功" -- self.des_tmp.text = "战功为上期沙盘结算时累计军功" self.sandBtn_obj:SetActive(true) self.csWarBtn_obj:SetActive(false) self.lastRankBtn_obj:SetActive(true) self.roleScrollView_obj:SetActive(true) self.allRoleScrollView_obj:SetActive(false) self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,2)--指挥官 if self.model.has_request_60311 then self:UpdateRankCon(2) else self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60311)--打开界面只请求一次 end end end function CSMainAppointView:DestroySuccess( ) self.model.has_request_60314 = false self.model.has_request_60311 = false for i, v in ipairs(self.tab_item_list) do v:DeleteMe() end self.tab_item_list = {} end