|
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 <u>【点击前往】</u>", 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 <u>【点击前往】</u>", 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
|