ro-table/Asstes/Resources/Script/Com/Data/Guild/Astrolabe_PlateData.txt
2025-06-04 05:02:57 +08:00

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