ro-table/Assets/Resources/Script/Com/Data/GuildBuildingData.txt
2025-06-04 05:12:01 +08:00

116 lines
3.2 KiB
Plaintext

local SingleBuildingMatData = class("SingleBuildingMatData")
function SingleBuildingMatData:ctor()
self.materials={};
self.rewardData={};
end
function SingleBuildingMatData:SetMaterialData(data)
self.csvID = data.id
self.partsCount=data.count
self.unitCount=data.itemcount
self.materials.id=data.itemid
self.materials.count=self.unitCount*self.partsCount
self.rewardData=data.rewardid
end
function SingleBuildingMatData:SetBuildingTypeLevel(type, level)
self.building_type = type
self.building_level = level
end
GuildBuildingData = class("GuildBuildingData")
function GuildBuildingData.GetComId(gtype, level)
return gtype * 1000 + level;
end
function GuildBuildingData:SetData(serviceData)
local staticID=GuildBuildingData.GetComId(serviceData.type, serviceData.level)
self.type = serviceData.type
self.level = serviceData.level
self.PartsRate = ServiceProxy.ServerToNumber(serviceData.progress)
self.isbuilding = serviceData.isbuilding
self.restMaterials = serviceData.restmaterials;
--下一次建造/升級時間
self.nextBuildTime = serviceData.nextbuildtime;
self.staticData=Table_GuildBuilding and Table_GuildBuilding[staticID]
self.uiMatData = {}
if(self.restMaterials)then
for i=1,#self.restMaterials do
local mData = SingleBuildingMatData.new()
mData:SetMaterialData(self.restMaterials[i]);
mData:SetBuildingTypeLevel(self.type, self.level);
self.uiMatData[#self.uiMatData+1]=mData;
end
end
end
function GuildBuildingData:LvlLimited()
if(not self.staticData)then
return true
end
local type = math.floor(self.staticData.id/1000)
local nextLvl = self.staticData.id%1000 + 1
return nil==Table_GuildBuilding[GuildBuildingData.GetComId(type,nextLvl)]
end
function GuildBuildingData:CanBuildByTime()
local curTime = ServerTime.CurServerTime()/1000
if nil~=self.nextBuildTime and ""~=self.nextBuildTime then
return curTime >= self.nextBuildTime;
end
return false;
end
function GuildBuildingData:GetCondMenu()
local lvUpCond = self.staticData.LevelUpCond
if(lvUpCond)then
local type = lvUpCond.buildingtype
local lv = lvUpCond.buildinglv
if(type and lv)then
local typeLv = GuildBuildingProxy.Instance:GetBuildingLevelByType(type)
if(not typeLv or typeLv<lv)then
return lvUpCond.menuDesc
end
end
end
return nil
end
------------ 顯示數據後端計算
-- function GuildBuildingData:ResetMaterialData(submitData)
-- self.uiMatData = {}
-- local material = self.staticData.Material;
-- if(material)then
-- local totalSubmitCount,totalCount = 0,0
-- for k,v in pairs(material) do
-- local submitPart = nil
-- totalCount=v+totalCount;
-- for i=1,#submitData do
-- if(submitData[i].id==k)then
-- submitPart=submitData[i].count
-- totalSubmitCount=submitPart+totalSubmitCount;
-- local parts = v-submitPart
-- if(parts>0)then
-- local mData = SingleBuildingMatData.new()
-- mData:SetMaterialData(k,parts);
-- self.uiMatData[k]=mData;
-- break;
-- end
-- end
-- end
-- if(not submitPart)then
-- local mData = SingleBuildingMatData.new()
-- mData:SetMaterialData(k,v);
-- self.uiMatData[k]=mData;
-- end
-- end
-- self.PartsRate=totalSubmitCount/totalCount
-- end
-- end