156 lines
3.4 KiB
Plaintext
156 lines
3.4 KiB
Plaintext
Astrolabe_PlateData = class("Astrolabe_PlateData")
|
|
|
|
autoImport("Astrolabe_PointData");
|
|
|
|
local ASTROLABE_BORDER = 150;
|
|
|
|
function Astrolabe_PlateData:ctor(bordData)
|
|
self.bordData = bordData;
|
|
|
|
self.pointMap = {};
|
|
end
|
|
|
|
function Astrolabe_PlateData:ReInitData(sData)
|
|
TableUtility.TableClear(self.pointMap);
|
|
|
|
if(sData == nil)then
|
|
return;
|
|
end
|
|
|
|
self.staticData = sData;
|
|
|
|
self.id = sData.id;
|
|
self.pos = {sData.pos[1], sData.pos[2], sData.pos[3]};
|
|
self.unlock = sData.unlock;
|
|
|
|
local maxPointid = 0;
|
|
|
|
self.point_count = 0;
|
|
|
|
for pointid, connectData in pairs(sData.stars)do
|
|
local pointData = Astrolabe_PointData.new(self.id, pointid, self.bordData);
|
|
|
|
pointData:ReInitPosData(connectData, sData.pos);
|
|
|
|
self.pointMap[pointid] = pointData;
|
|
|
|
maxPointid = math.max(maxPointid, pointid);
|
|
|
|
self.point_count = self.point_count + 1;
|
|
end
|
|
|
|
self.plateWidth = math.floor((maxPointid-1)/6) + 1;
|
|
|
|
self.min_x = self.pos[1] - self.plateWidth * AstrolabeProxy_Plate_Length - ASTROLABE_BORDER;
|
|
self.min_y = self.pos[2] - self.plateWidth * AstrolabeProxy_Plate_Length - ASTROLABE_BORDER;
|
|
|
|
self.max_x = self.pos[1] + self.plateWidth * AstrolabeProxy_Plate_Length + ASTROLABE_BORDER;
|
|
self.max_y = self.pos[2] + self.plateWidth * AstrolabeProxy_Plate_Length + ASTROLABE_BORDER;
|
|
end
|
|
|
|
function Astrolabe_PlateData:SetProfession(profession)
|
|
self.profession = profession;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetProfession()
|
|
if(self.profession)then
|
|
return self.profession;
|
|
end
|
|
local userdata = Game.Myself and Game.Myself.data.userdata;
|
|
if(userdata)then
|
|
return userdata:Get(UDEnum.PROFESSION);
|
|
end
|
|
return 0;
|
|
end
|
|
|
|
function Astrolabe_PlateData:SetRoleLevel(rolelv)
|
|
self.rolelv = rolelv;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetRoleLevel()
|
|
if(self.rolelv)then
|
|
return self.rolelv;
|
|
end
|
|
local userdata = Game.Myself and Game.Myself.data.userdata;
|
|
if(userdata)then
|
|
return userdata:Get(UDEnum.ROLELEVEL);
|
|
end
|
|
return 0;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetPos_XYZ()
|
|
if(self.pos)then
|
|
return self.pos[1], self.pos[2], self.pos[3];
|
|
end
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetBound_Min_XY()
|
|
return self.min_x, self.min_y;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetBound_Max_XY()
|
|
return self.max_x, self.max_y;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetPointMap()
|
|
return self.pointMap;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetPointDataByPos(posid)
|
|
if(posid)then
|
|
return self.pointMap[posid];
|
|
end
|
|
end
|
|
|
|
function Astrolabe_PlateData:IsActive()
|
|
return true;
|
|
end
|
|
|
|
function Astrolabe_PlateData:GetUnlock()
|
|
if(self.staticData)then
|
|
return self.staticData.unlock;
|
|
end
|
|
end
|
|
|
|
function Astrolabe_PlateData:IsUnlock()
|
|
if(self.staticData)then
|
|
if(Game.Myself == nil)then
|
|
return true;
|
|
end
|
|
|
|
local unlock = self.staticData.unlock;
|
|
|
|
if(unlock.lv)then
|
|
local lv = self:GetRoleLevel();
|
|
if(lv < unlock.lv)then
|
|
return false;
|
|
end
|
|
end
|
|
if(unlock.evo)then
|
|
if(unlock.evo == 4)then
|
|
if(not FunctionUnLockFunc.Me():CheckCanOpen(5002))then
|
|
return;
|
|
end
|
|
end
|
|
if(unlock.evo == 3)then
|
|
if(not FunctionUnLockFunc.Me():CheckCanOpen(5001))then
|
|
return;
|
|
end
|
|
end
|
|
|
|
local myClass = self:GetProfession();
|
|
local depth = ProfessionProxy.Instance:GetDepthByClassId(myClass);
|
|
if(depth < unlock.evo)then
|
|
return false;
|
|
end
|
|
end
|
|
if(not GameConfig.SystemForbid.RuneUpgrade and unlock.menuid)then
|
|
if (not FunctionUnLockFunc.Me():CheckCanOpen(unlock.menuid)) then
|
|
return false;
|
|
end
|
|
end
|
|
return true;
|
|
end
|
|
return false;
|
|
end
|