220 lines
5.4 KiB
Plaintext
220 lines
5.4 KiB
Plaintext
AstrolabeProxy = class('AstrolabeProxy', pm.Proxy)
|
|
AstrolabeProxy.Instance = nil;
|
|
AstrolabeProxy.NAME = "AstrolabeProxy"
|
|
|
|
autoImport("Astrolabe_BordData");
|
|
|
|
local TableClear = TableUtility.TableClear
|
|
|
|
function AstrolabeProxy:ctor(proxyName, data)
|
|
self.proxyName = proxyName or AstrolabeProxy.NAME
|
|
if(AstrolabeProxy.Instance == nil) then
|
|
AstrolabeProxy.Instance = self
|
|
end
|
|
|
|
self:Init();
|
|
end
|
|
|
|
function AstrolabeProxy:Init()
|
|
self.curBord = Astrolabe_BordData.new();
|
|
end
|
|
|
|
function AstrolabeProxy:GetActiveStarPoints()
|
|
local total = 0;
|
|
for k,pointData in pairs(self:GetActivePointsMap())do
|
|
total = total + 1;
|
|
end
|
|
return total;
|
|
|
|
end
|
|
function AstrolabeProxy:GetActivePointsMap()
|
|
return self.curBord:GetActivePointsMap();
|
|
end
|
|
|
|
function AstrolabeProxy:GetTotalPointCount(rolelv, profession)
|
|
if(rolelv == nil)then
|
|
rolelv = MyselfProxy.Instance:RoleLevel();
|
|
end
|
|
if(profession == nil)then
|
|
profession = MyselfProxy.Instance:GetMyProfession();
|
|
end
|
|
return self.curBord:GetTotalPointCount(rolelv, profession);
|
|
end
|
|
|
|
function AstrolabeProxy:InitProfessionPlate_PropData(profession)
|
|
self.curBord:InitPlates_Prop(profession);
|
|
end
|
|
|
|
function AstrolabeProxy:GetCurBordData()
|
|
return self.curBord;
|
|
end
|
|
|
|
function AstrolabeProxy:Server_SetActivePoints(pids)
|
|
self.curBord:Server_SetActivePoints(pids);
|
|
end
|
|
|
|
function AstrolabeProxy:Server_ResetPoints(server_stars, noReset)
|
|
self.curBord:Server_ResetPoints(server_stars);
|
|
end
|
|
|
|
function AstrolabeProxy:ResetPlate()
|
|
self.curBord:Reset();
|
|
end
|
|
|
|
function AstrolabeProxy:GetEffectMap(plate)
|
|
return self.curBord:GetAdd_EffectMap();
|
|
end
|
|
|
|
function AstrolabeProxy:GetSkill_SpecialEffect(skillid)
|
|
return self.curBord:GetSkill_SpecialEffect(skillid);
|
|
end
|
|
|
|
function AstrolabeProxy:GetSpecialEffectCount(specialEffectId)
|
|
return self.curBord:GetSpecialEffectCount(specialEffectId);
|
|
end
|
|
|
|
function AstrolabeProxy:SkillSetSpecialEnable(specialEffectId, enabled)
|
|
self.curBord:SkillSetSpecialEnable(specialEffectId, enabled);
|
|
end
|
|
|
|
function AstrolabeProxy:CheckNeed_DoServer_InitPlate()
|
|
self.curBord:CheckNeed_DoServer_InitPlate();
|
|
end
|
|
|
|
|
|
function AstrolabeProxy:CheckCanActive_AnyAstrolabePoint()
|
|
|
|
local userdata = Game.Myself and Game.Myself.data.userdata;
|
|
local left_slivernum = userdata:Get(UDEnum.SILVER) or 0;
|
|
local left_contributenum = userdata:Get(UDEnum.CONTRIBUTE) or 0;
|
|
local cost_slivernum, cost_contributenum, cost_goldawardnum = 0, 0, 0;
|
|
|
|
local pointData, cost;
|
|
|
|
local hasOff = false;
|
|
|
|
local bagProxy = BagProxy.Instance
|
|
local offMap = self.curBord:GetOffPointsIDMap();
|
|
for guid,_ in pairs(offMap)do
|
|
hasOff = true;
|
|
|
|
pointData = self:GetPoint(nil, guid);
|
|
cost = pointData:GetCost();
|
|
for j=1,#cost do
|
|
if(cost[j][1] == 100)then
|
|
if(left_slivernum < cost[j][2])then
|
|
return false;
|
|
end
|
|
elseif(cost[j][1] == 140)then
|
|
if(left_contributenum < cost[j][2])then
|
|
return false;
|
|
end
|
|
elseif(cost[j][1] == 5261)then
|
|
local leftNum = bagProxy:GetItemNumByStaticID(cost[j][1]);
|
|
if(leftNum < cost[j][2])then
|
|
return false;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if(hasOff)then
|
|
return true;
|
|
end
|
|
|
|
return false;
|
|
end
|
|
|
|
function AstrolabeProxy:CheckPlateIsUnlock(plateid, bordData)
|
|
bordData = bordData or self.curBord;
|
|
return bordData:CheckPlateIsUnlock(plateid);
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 星盤存檔相關 begin
|
|
function AstrolabeProxy:GetBordData_BySaveInfo(saveInfoData, useBranch)
|
|
if(saveInfoData == nil)then
|
|
return;
|
|
end
|
|
local bordData = Astrolabe_BordData.new();
|
|
|
|
local professionId;
|
|
if(useBranch)then
|
|
professionId = saveInfoData:GetProfession();
|
|
else
|
|
professionId = saveInfoData:GetProfession();
|
|
end
|
|
|
|
bordData:InitPlates_Prop(professionId);
|
|
-- 目前星盤解鎖沒有等級限制
|
|
bordData:InitUnlockParam(saveInfoData:GetProfession(), 200);
|
|
|
|
local astrolabeSaveData = saveInfoData:GetAstroble();
|
|
if(astrolabeSaveData == nil)then
|
|
return bordData;
|
|
end
|
|
|
|
local server_stars = astrolabeSaveData:GetActiveStars();
|
|
local temp = {};
|
|
TableUtility.ArrayShallowCopy(temp, server_stars);
|
|
if(#temp == 0)then
|
|
table.insert(temp, Astrolabe_Origin_PointID);
|
|
end
|
|
bordData:Server_SetActivePoints(temp);
|
|
return bordData;
|
|
end
|
|
|
|
|
|
function AstrolabeProxy:GetStorageActivePointsCost(storageId)
|
|
local server_stars = MultiProfessionSaveProxy.Instance:GetActiveStars(storageId);
|
|
return self:GetPoints_ActiveCosts(server_stars);
|
|
end
|
|
|
|
function AstrolabeProxy:GetStorageActivePointsCost_BySaveInfo(saveInfoData)
|
|
local server_stars = saveInfoData:GetActiveStars();
|
|
return self:GetPoints_ActiveCosts(server_stars);
|
|
end
|
|
|
|
function AstrolabeProxy:GetPoints_ActiveCosts(active_stars)
|
|
local resultCost = {};
|
|
for i=1,#active_stars do
|
|
local cost = Astrolabe_GetPointCost(active_stars[i]);
|
|
if(cost)then
|
|
for k,v in pairs(cost)do
|
|
local itemid, num = v[1], v[2];
|
|
if(resultCost[ itemid ] == nil)then
|
|
resultCost[ itemid ] = num;
|
|
else
|
|
resultCost[ itemid ] = resultCost[ itemid ] + num;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return resultCost;
|
|
end
|
|
|
|
|
|
-- !!!!!!!!! Get My ActivePoints Cost !!!!!!!!!
|
|
function AstrolabeProxy:GetStorageActivePointsCost_ByPlate()
|
|
local activePointsMap = self:GetActivePointsMap();
|
|
|
|
local resultCost = {};
|
|
for k,pointData in pairs(activePointsMap)do
|
|
local cost = pointData:GetCost();
|
|
for k,v in pairs(cost)do
|
|
local itemid, num = v[1], v[2];
|
|
if(resultCost[ itemid ] == nil)then
|
|
resultCost[ itemid ] = num;
|
|
else
|
|
resultCost[ itemid ] = resultCost[ itemid ] + num;
|
|
end
|
|
end
|
|
end
|
|
return resultCost;
|
|
end
|
|
-- !!!!!!!!! Get My ActivePoints Cost !!!!!!!!!
|
|
|
|
-- 星盤存檔相關 end
|