194 lines
4.5 KiB
Plaintext
194 lines
4.5 KiB
Plaintext
autoImport("ZoneData")
|
|
|
|
ChangeZoneProxy = class('ChangeZoneProxy', pm.Proxy)
|
|
ChangeZoneProxy.Instance = nil;
|
|
ChangeZoneProxy.NAME = "ChangeZoneProxy"
|
|
|
|
ChangeZoneProxy.TypeEnum = {
|
|
ChangeLine = "ChangeLine",
|
|
BackGuildLine = "BackGuildLine",
|
|
ChangeGuildLine = "ChangeGuildLine",
|
|
}
|
|
|
|
CONFIG_ZONE_ID_SUF = {
|
|
"", "a", "c", "d", "e", "f", "g", "h", "k", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "aa", "cc", "dd", "ee", "ff", "gg", "hh", "kk"
|
|
}
|
|
|
|
INVERSE_CONFIG_ZONE_ID_SUF = {};
|
|
for i=1,#CONFIG_ZONE_ID_SUF do
|
|
local v = CONFIG_ZONE_ID_SUF[i];
|
|
INVERSE_CONFIG_ZONE_ID_SUF[v] = i;
|
|
end
|
|
|
|
function ChangeZoneProxy:ctor(proxyName, data)
|
|
self.proxyName = proxyName or ChangeZoneProxy.NAME
|
|
if(ChangeZoneProxy.Instance == nil) then
|
|
ChangeZoneProxy.Instance = self
|
|
end
|
|
if data ~= nil then
|
|
self:setData(data)
|
|
end
|
|
|
|
self:Init()
|
|
end
|
|
|
|
function ChangeZoneProxy:Init()
|
|
self.infos = {}
|
|
self.recents = {}
|
|
end
|
|
|
|
function ChangeZoneProxy:RecvQueryZoneStatus(data)
|
|
self:RecvInfos(data)
|
|
self:RecvRecents(data)
|
|
end
|
|
|
|
function ChangeZoneProxy:RecvInfos(data)
|
|
TableUtility.TableClear(self.infos)
|
|
|
|
if data.infos then
|
|
for i=1,#data.infos do
|
|
local zoneData = ZoneData.new(data.infos[i])
|
|
self.infos[zoneData.zoneid] = zoneData
|
|
end
|
|
|
|
if #data.infos > 0 then
|
|
self.minZoneId = data.infos[1].zoneid
|
|
self.maxZoneId = data.infos[#data.infos].zoneid
|
|
end
|
|
end
|
|
end
|
|
|
|
local tempRecentZoneInfo = {}
|
|
function ChangeZoneProxy:RecvRecents(data)
|
|
TableUtility.ArrayClear(self.recents)
|
|
|
|
if data.recents then
|
|
for i=1,#data.recents do
|
|
local recentData = ZoneData.new(data.recents[i])
|
|
TableUtility.ArrayPushBack(self.recents , recentData)
|
|
end
|
|
end
|
|
|
|
if GuildProxy.Instance:IHaveGuild() then
|
|
TableUtility.TableClear(tempRecentZoneInfo)
|
|
tempRecentZoneInfo.type = ZoneData.JumpZone.Guild
|
|
tempRecentZoneInfo.zoneid = GuildProxy.Instance.myGuildData.zoneid
|
|
|
|
local recentData = ZoneData.new(tempRecentZoneInfo)
|
|
TableUtility.ArrayPushBack(self.recents , recentData)
|
|
end
|
|
|
|
if TeamProxy.Instance:IHaveTeam() then
|
|
local leader = TeamProxy.Instance.myTeam:GetNowLeader();
|
|
if leader then
|
|
TableUtility.TableClear(tempRecentZoneInfo)
|
|
tempRecentZoneInfo.type = ZoneData.JumpZone.Team
|
|
|
|
tempRecentZoneInfo.zoneid = leader.zoneid
|
|
|
|
local recentData = ZoneData.new(tempRecentZoneInfo)
|
|
TableUtility.ArrayPushBack(self.recents , recentData)
|
|
end
|
|
end
|
|
|
|
table.sort(self.recents ,function(l,r)
|
|
if l.type == r.type then
|
|
return false
|
|
else
|
|
return l.type < r.type
|
|
end
|
|
end)
|
|
end
|
|
|
|
function ChangeZoneProxy:GetInfos(zoneid)
|
|
return self.infos[zoneid]
|
|
end
|
|
|
|
function ChangeZoneProxy:GetRecents()
|
|
return self.recents
|
|
end
|
|
|
|
function ChangeZoneProxy:GetMinZoneId()
|
|
return self.minZoneId or 1
|
|
end
|
|
|
|
function ChangeZoneProxy:GetMaxZoneId()
|
|
return self.maxZoneId or 1
|
|
end
|
|
|
|
function ChangeZoneProxy:ZoneNumToString(num, formatStr)
|
|
if(num)then
|
|
if(type(num) ~= "number")then
|
|
num = tonumber(num);
|
|
end
|
|
if(num and num > 0)then
|
|
if(num >= 9000)then
|
|
return ZhString.ChangeZoneProxy_PvpLine;
|
|
end
|
|
|
|
if UnionConfig then
|
|
if UnionConfig.Zone then
|
|
local unionZoneList = UnionConfig.Zone.zone_name
|
|
if unionZoneList then
|
|
for i=1,#unionZoneList do
|
|
local zone = unionZoneList[i]
|
|
if num >= zone.min and num <= zone.max then
|
|
return zone.name_prefix .. (num - zone.min + 1);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- local length = #CONFIG_ZONE_ID_SUF;
|
|
-- local n1 = math.ceil(num / length);
|
|
-- local n2 = num % length;
|
|
-- if(n2 == 0)then
|
|
-- n2 = n2 + length;
|
|
-- end
|
|
-- n2 = CONFIG_ZONE_ID_SUF[n2];
|
|
|
|
local n1 = num % 1000;
|
|
local n2 = "線";
|
|
|
|
if(formatStr)then
|
|
return string.format(formatStr, n1 .. n2);
|
|
else
|
|
return n1 .. n2;
|
|
end
|
|
end
|
|
end
|
|
|
|
errorLog( string.format("error when ZoneNumToString(%s)", tostring(num)) );
|
|
return "";
|
|
end
|
|
|
|
|
|
function ChangeZoneProxy:ZoneStringToNum( zoneStr )
|
|
if(zoneStr)then
|
|
-- local n1, n2 = "", "";
|
|
-- for i=1, string.len(zoneStr) do
|
|
-- local c = string.char(string.byte(zoneStr, i))
|
|
-- if(tonumber(c) == nil)then
|
|
-- n2 = n2..c;
|
|
-- else
|
|
-- n1 = n1..c;
|
|
-- end
|
|
-- end
|
|
-- if(n1 ~= nil and n1 ~="" and n2 ~= nil)then
|
|
-- n1 = tonumber(n1);
|
|
-- n2 = string.lower(n2);
|
|
-- if(INVERSE_CONFIG_ZONE_ID_SUF[n2])then
|
|
-- n2 = INVERSE_CONFIG_ZONE_ID_SUF[n2];
|
|
-- return (n1-1) * #CONFIG_ZONE_ID_SUF + n2;
|
|
-- end
|
|
-- end
|
|
|
|
local n1 = string.gsub(zoneStr, "線", "")
|
|
n1 = tonumber(n1);
|
|
return n1;
|
|
end
|
|
-- errorLog(string.format("ERROR FORMAT ZoneStr:%s ", zoneStr));
|
|
return 0;
|
|
end
|