CSGWarCityItem = CSGWarCityItem or BaseClass(BaseItem) local CSGWarCityItem = CSGWarCityItem local math_floor = math.floor function CSGWarCityItem:__init() self.base_file = "CSGWar" self.layout_file = "CSGWarCityItem" self.model = CSGWarModel:GetInstance() self.gray_mat = ShaderTools.gray_mat self:Load() self.is_selected = false end function CSGWarCityItem:Load_callback() self.nodes = { "city_image:imgex", "bg:obj:imgex", "name_text:tmp", "progress_text:tmp", "progress_image:img", "click_con:obj", "near_image:obj", "pic_select:obj", } self:GetChildren(self.nodes) self.country = KfWorldModel:GetInstance():GetMyCountryId() self:AddEvents() if self.need_refreshData then self:UpdateView() end end function CSGWarCityItem:AddEvents( ) function on_click( ) -- if self.call_back then -- self.call_back(self.data, self.index) -- end if not self.has_city and self.index == 1 then Message.show("必须占领据点才能抢夺主城") return end if self.cfg then local city_pos = self.cfg.city_pos if not city_pos then city_pos = stringtotable(self.cfg.flag) end local function call_back( ... ) GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT) end local findVo = FindVo.New() findVo.sceneId = SceneManager.Instance:GetSceneId() findVo.type = FindVo.POINT findVo.x = city_pos[2]/ SceneObj.LogicRealRatio.x findVo.y = city_pos[3]/ SceneObj.LogicRealRatio.y findVo.call_back = call_back GlobalEventSystem:Fire(EventName.FIND,findVo) if self.select_callback then self.select_callback(self.index) end end end AddClickEvent(self.click_con_obj, on_click) end function CSGWarCityItem:UpdateView( ) self.bg_obj:SetActive(self.index == 1) if not self.cfg then self.cfg = Config.Crossguildwarscene[self.index] end self.has_central = false--是否占据中心城 self.bg_imgex.gray = false self.city_image_imgex.gray = false if self.data then local color = ColorUtil.WHITE_DARK if tonumber(self.country) == tonumber(self.data.group) and self.data.group ~= 0 then color = ColorUtil.GREEN_DARK lua_resM:setImageSprite(self, self.progress_image_img, "CSGWar_asset", "CSGWar_item19") elseif self.data.guild_id ~= 0 then color = ColorUtil.RED_DARK lua_resM:setImageSprite(self, self.progress_image_img, "CSGWar_asset", "CSGWar_item14") else lua_resM:setImageSprite(self, self.progress_image_img, "CSGWar_asset", "CSGWar_item14") end if self.data.guild_id ~= 0 then self.name_text_tmp.text = string.format("%s %s", self.cfg.name, HtmlColorTxt(self.data.guild_name, color)) else self.name_text_tmp.text = HtmlColorTxt(string.format("%s 【点击前往】", self.cfg.name), color) end local precent = self.data.blood/self.data.max_blood self.progress_image_img.fillAmount = precent self.progress_text_tmp.text = string.format("%s/100", math_floor(precent*100)) if not self.has_city and self.index == 1 then self.name_text_tmp.text = HtmlColorTxt("(请先占领一个据点)", color) self.bg_imgex.gray = true self.city_image_imgex.gray = true self.progress_image_img.material = self.gray_mat else self.progress_image_img.material = nil end else local color = ColorUtil.WHITE_DARK self.progress_image_img.fillAmount = 1 self.progress_text_tmp.text = "100/100" self.name_text_tmp.text = HtmlColorTxt(string.format("%s 【点击前往】", self.cfg.name), color) if not self.has_city and self.index == 1 then self.name_text_tmp.text = HtmlColorTxt("(请先占领一个据点)", color) self.bg_imgex.gray = true self.city_image_imgex.gray = true self.progress_image_img.material = self.gray_mat else self.progress_image_img.material = nil end end lua_resM:setImageSprite(self, self.city_image_imgex, "CSGWar_asset", "CSGWar_city"..self.index) if self.near_index == self.index then self.near_image_obj:SetActive(true) self:StartNearImageShowTime(30) self.near_index = nil end -- 选中 self:SetSelected(self.is_selected) end function CSGWarCityItem:SetCallBackFunc( func ) self.call_back = func end function CSGWarCityItem:StartNearImageShowTime( time ) local function on_show_time() time = time - 1 if time > 0 then else self.near_image_obj:SetActive(false) GlobalTimerQuest:CancelQuest(self.show_timer_id) self.show_timer_id = nil end end self.show_timer_id = GlobalTimerQuest:AddPeriodQuest(on_show_time, 1, -1) end function CSGWarCityItem:SetData( data, index, has_city, near_index, select_callback) self.data = data self.index = index self.has_city = has_city self.near_index = self.near_index or near_index self.select_callback = select_callback if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function CSGWarCityItem:SetSelected(is_selected) self.is_selected = is_selected if self.is_loaded then self.pic_select_obj:SetActive(self.is_selected) end end function CSGWarCityItem:__delete( ) if self.show_timer_id then GlobalTimerQuest:CancelQuest(self.show_timer_id) self.show_timer_id = nil end end