源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

272 righe
8.7 KiB

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