|
PKStatusMainUI = PKStatusMainUI or BaseClass(BaseView)
|
|
|
|
--[[
|
|
--这个界面整个用的顺序数字,在PKStatusModel.Status加了枚举,但是这边改枚举的话,改的有点多,
|
|
有需要再界面转枚举,这边少量更改,记得把枚举也对应改下,方便其它功能使用
|
|
--]]
|
|
PKStatusMainUI.STATUS_TEXT_LIST = {
|
|
[0] = {name = "和平", outline_color = "#008769BA"},
|
|
[1] = {name = "强制", outline_color = "#E86D00BA"},
|
|
[2] = {name = "杀戮", outline_color = "#A40A0ABA"},
|
|
[3] = {name = "社团", outline_color = "#322ED7BA"},
|
|
[4] = {name = "跨服", outline_color = "#B52ED7BA"},
|
|
}
|
|
|
|
PKStatusMainUI.STATS_IMAGE_LIST = {
|
|
[0] = "zjmui_je_004a",
|
|
[1] = "zjmui_je_004b",
|
|
[2] = "zjmui_je_004c",
|
|
[3] = "zjmui_je_004d",
|
|
[4] = "zjmui_je_004e",
|
|
[5] = "zjmui_je_004f",
|
|
[9] = "zjmui_je_004a",
|
|
}
|
|
|
|
PKStatusMainUI.STATUS_TIP_CONTENT_LIST = {
|
|
[0] = "只可以攻击红名玩家",
|
|
[1] = "不可攻击组队和社团",
|
|
[2] = "可以攻击任何玩家",
|
|
[3] = "可以攻击任何非本社团玩家",
|
|
[4] = "可以攻击所有外服玩家",
|
|
}
|
|
PKStatusMainUI.STATUS_POS_LIST = {[0] = {x = 34, y = 1}, [1] = {x = 4, y = -43}, [2] = {x = 75, y = -43}}
|
|
function PKStatusMainUI:__init()
|
|
self.base_file = "pkstatus"
|
|
self.layout_file = "PKStatusMainUI"
|
|
self.layer_name = "Main"
|
|
self.is_spread = false --是否展开
|
|
self.change_scene_close = true
|
|
-- self.use_local_view = true
|
|
|
|
self.btn_list = {} --数据列表
|
|
self.cur_index = 0 --当前下标
|
|
|
|
self.model = PKStatusModel:getInstance()
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:InitEvent()
|
|
self:SetCurrStatus(RoleManager.Instance.mainRoleInfo.pk_status)
|
|
-- local time = self.model.pk_cd - TimeUtil:getServerTime()
|
|
-- if time > 0 then
|
|
-- self:StartPeaceCd(time)
|
|
-- end
|
|
end
|
|
self.open_callback = function ()
|
|
if self.model.pk_view_visible == false then
|
|
self:Hide()
|
|
end
|
|
end
|
|
self.close_callback = function ()
|
|
self:Remove()
|
|
end
|
|
end
|
|
|
|
function PKStatusMainUI:Remove()
|
|
if self.orientation_change_id then
|
|
GlobalEventSystem:UnBind(self.orientation_change_id)
|
|
self.orientation_change_id = nil
|
|
end
|
|
|
|
if self.show_server_mode_id then
|
|
GlobalEventSystem:UnBind(self.show_server_mode_id)
|
|
self.show_server_mode_id = nil
|
|
end
|
|
|
|
if self.pk_status_change_id then
|
|
RoleManager.Instance.mainRoleInfo:UnBind(self.pk_status_change_id)
|
|
self.pk_status_change_id = nil
|
|
end
|
|
|
|
if self.peace_cd_time_id then
|
|
RoleManager.Instance.mainRoleInfo:UnBind(self.peace_cd_time_id)
|
|
self.peace_cd_time_id = nil
|
|
end
|
|
|
|
|
|
if self.pk_visible_id then
|
|
GlobalEventSystem:UnBind(self.pk_visible_id)
|
|
self.pk_visible_id = nil
|
|
end
|
|
-- self:RemovePeaceCdTimer()
|
|
end
|
|
|
|
function PKStatusMainUI:LoadSuccess()
|
|
for i=0,4 do
|
|
local t = {}
|
|
t.btn = self:GetChild("btnCon/btn_"..i).gameObject
|
|
-- t.mask = self:GetChild("btnCon/btn_"..i.."/mask"):GetComponent("Image")
|
|
t.text = self:GetChild("btnCon/btn_"..i.."/text"):GetComponent(typeof(TMPro.TextMeshProUGUI))
|
|
t.text.text = PKStatusMainUI.STATUS_TIP_CONTENT_LIST[i]
|
|
self.btn_list[i] = t
|
|
end
|
|
-- self.btn_list[0].mask.fillAmount = 0
|
|
--偏移
|
|
-- self.transform:GetComponent("RectTransform").anchoredPosition = Vector3(10,-105)
|
|
self.transform.sizeDelta = Vector3.one
|
|
self.transform.anchoredPosition = Vector2(ClientConfig.iphone_x_offset_left,0)
|
|
self.mask = self:GetChild("mask").gameObject
|
|
self.mask.transform.sizeDelta = Vector2(ScreenWidth,ScreenHeight)
|
|
self.mask.transform.pivot = Vector2(0,1)
|
|
self.mask.transform.localPosition = Vector2.zero
|
|
|
|
self.bg = self:GetChild("bg"):GetComponent("RectTransform")
|
|
|
|
|
|
-- if SceneManager:getInstance():InServerScene() or self.model.show_server_mode_pk then
|
|
-- self.btn_list[3].btn:SetActive(true)
|
|
-- self.bg.sizeDelta = Vector2(365,294.65)
|
|
-- else
|
|
-- self.btn_list[3].btn:SetActive(false)
|
|
-- self.bg.sizeDelta = Vector2(365,240.87)
|
|
-- end
|
|
end
|
|
|
|
function PKStatusMainUI:InitEvent()
|
|
|
|
local function onOrientationChange()
|
|
self.transform.anchoredPosition = Vector2(ClientConfig.iphone_x_offset_left, 0)
|
|
end
|
|
self.orientation_change_id = GlobalEventSystem:Bind(EventName.ORIENTATION_DID_CHANGE, onOrientationChange)
|
|
|
|
|
|
local function onClickHandler(target)
|
|
if self.btn_list[0].btn == target then
|
|
-- if not self.peace_cd_is_playing then
|
|
-- if SceneManager:getInstance():IsWorldBeastScene() then
|
|
-- Message.show("幻兽之域中无法选择和平模式")
|
|
-- else
|
|
self:ClickStatus(0)
|
|
-- end
|
|
-- else
|
|
-- Message.show("处于冷却时间")
|
|
-- local time = math.ceil(self.left_time - self.curr_show_time)
|
|
-- Message.show("还有".. time .."s才能切换模式")
|
|
-- end
|
|
elseif self.btn_list[1].btn == target then
|
|
-- if SceneManager:getInstance():IsNoonQuizScene() then
|
|
-- Message.show("答题场景只能是和平模式")
|
|
-- else
|
|
self:ClickStatus(1)
|
|
-- end
|
|
|
|
elseif self.btn_list[2].btn == target then
|
|
-- if SceneManager:getInstance():IsNoonQuizScene() then
|
|
-- Message.show("答题场景只能是和平模式")
|
|
-- else
|
|
self:ClickStatus(2)
|
|
-- end
|
|
elseif self.btn_list[3].btn == target then
|
|
self:ClickStatus(3)
|
|
elseif self.btn_list[4].btn == target then
|
|
self:ClickStatus(4)
|
|
elseif self.mask == target then
|
|
self:Close()
|
|
end
|
|
end
|
|
for _,toggle in pairs(self.btn_list) do
|
|
AddClickEvent(toggle.btn, onClickHandler)
|
|
end
|
|
AddClickEvent(self.mask,onClickHandler)
|
|
|
|
local function onPkStatusChangeHandler()
|
|
self:SetCurrStatus(RoleManager.Instance.mainRoleInfo.pk_status)
|
|
self:Close()
|
|
end
|
|
self.pk_status_change_id = RoleManager.Instance.mainRoleInfo:BindOne("pk_status", onPkStatusChangeHandler)
|
|
|
|
-- local function onPeaceCdTimeChangeHandler(var, value)
|
|
-- -- self:StartPeaceCd(value)
|
|
-- --成功切换到自由模式并记录时间后才关闭界面
|
|
-- self:Close()
|
|
-- end
|
|
-- self.peace_cd_time_id = RoleManager.Instance.mainRoleInfo:BindOne("peace_cd_time", onPeaceCdTimeChangeHandler)
|
|
|
|
local function onPkStatusVisible(isShow)
|
|
if isShow == false then
|
|
self:Close()
|
|
end
|
|
end
|
|
self.pk_visible_id = GlobalEventSystem:Bind(EventName.CHANGE_PKSTATUS_VISIBLE, onPkStatusVisible)
|
|
|
|
end
|
|
|
|
-- function PKStatusMainUI:StartPeaceCd(left_time)
|
|
-- self:RemovePeaceCdTimer()
|
|
-- self.model.pk_cd = TimeUtil:getServerTime() + left_time
|
|
-- self.all_time = 45
|
|
-- self.left_time = left_time or 0
|
|
-- self.curr_show_time = 0
|
|
|
|
-- if self.left_time > self.all_time or self.left_time <= 0 then
|
|
-- self.btn_list[0].mask.fillAmount = 0
|
|
-- return
|
|
-- end
|
|
-- local cur_percent = self.left_time / self.all_time
|
|
-- self.btn_list[0].mask.fillAmount = cur_percent
|
|
-- self:AddPeaceCdTimer()
|
|
-- end
|
|
|
|
-- function PKStatusMainUI:AddPeaceCdTimer()
|
|
-- Runner.Instance:AddRunObj(self,3)
|
|
-- self.peace_cd_is_playing = true
|
|
-- end
|
|
|
|
-- function PKStatusMainUI:RemovePeaceCdTimer()
|
|
-- Runner.Instance:RemoveRunObj(self)
|
|
-- self.peace_cd_is_playing = false
|
|
-- end
|
|
|
|
-- function PKStatusMainUI:Update(now_time, elapse_time)
|
|
-- self.curr_show_time = elapse_time + self.curr_show_time
|
|
-- local cur_percent = (self.left_time - self.curr_show_time) / self.all_time
|
|
-- if cur_percent <= 0 then
|
|
-- cur_percent = 0
|
|
-- self:RemovePeaceCdTimer()
|
|
-- self.btn_list[0].mask.fillAmount = 0
|
|
-- return
|
|
-- end
|
|
-- self.btn_list[0].mask.fillAmount = cur_percent
|
|
-- end
|
|
|
|
function PKStatusMainUI:ClickStatus(index)
|
|
-- if self.model.last_change_pk_state_time and TimeUtil:getServerTime() - self.model.last_change_pk_state_time < 30 then
|
|
-- Message.show("状态切换需要30s冷却时间~")
|
|
-- return
|
|
-- end
|
|
--能切换才关闭界面
|
|
if RoleManager.Instance.mainRoleInfo.pk_status ~= index then
|
|
if index ~= 0 and SceneManager:getInstance():IsMainCityAndFieldScene() then
|
|
local ok = function ( )
|
|
self.model:Fire(PKStatusModel.CHANGE_PK_STATUS, index)
|
|
self.model.last_change_pk_state_time = TimeUtil:getServerTime()
|
|
end
|
|
local show_str = string.format("当前场景每击杀1个非红名玩家将增加<color=%s>1点善恶值</color>\n(需保持在线<color=%s>3小时</color>或消耗<color=%s>免罪卡</color>消除)",ColorUtil.RED_DARK,ColorUtil.GREEN_DARK,ColorUtil.GREEN_DARK)
|
|
local cost = 10
|
|
local data = {
|
|
titleText = "提示",
|
|
nameText = "红名状态下野外被击杀将损失",
|
|
price = cost,
|
|
priceText = HtmlColorTxt(cost.."红钻\n", ColorUtil.YELLOW_DARK)..show_str,
|
|
ok_callback = ok,
|
|
rechanger_callback = ok,
|
|
no_need_toggle = true,
|
|
gold_res = "ui_momey_icon_2",
|
|
}
|
|
GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data)
|
|
else
|
|
self.model:Fire(PKStatusModel.CHANGE_PK_STATUS, index)
|
|
self.model.last_change_pk_state_time = TimeUtil:getServerTime()
|
|
end
|
|
else
|
|
self:SetCurrStatus(RoleManager.Instance.mainRoleInfo.pk_status)
|
|
self:Close()
|
|
end
|
|
end
|
|
|
|
function PKStatusMainUI:SetCurrStatus(status)
|
|
if not status then return end
|
|
local data = self.btn_list[status]
|
|
if not data then return end
|
|
-- data.mask.fillAmount = 0
|
|
self.cur_index = status
|
|
end
|