ballRadius.py (1877B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\ballparkCommon\ballRadius.py 2 import math 3 import evetypes 4 from dogma.const import attributeAsteroidRadiusUnitSize, attributeAsteroidRadiusGrowthFactor, attributeAsteroidMaxRadius 5 from inventorycommon.const import categoryAsteroid, groupHarvestableCloud 6 ASTEROID_EXP_SCALE = 4e-05 7 8 def ComputeRadiusFromQuantity(categoryID, groupID, typeID, quantity, dogma): 9 if quantity < 0: 10 quantity = 1 11 if categoryID == categoryAsteroid: 12 return AsteroidQuantityToRadius(typeID, quantity, dogma) 13 if groupID == groupHarvestableCloud: 14 return quantity * evetypes.GetRadius(typeID) / 10.0 15 return quantity * evetypes.GetRadius(typeID) 16 17 18 def AsteroidQuantityToRadius(typeID, quantity, dogma): 19 unitSize = dogma.GetTypeAttribute2(typeID, attributeAsteroidRadiusUnitSize) 20 growthFactor = dogma.GetTypeAttribute2(typeID, attributeAsteroidRadiusGrowthFactor) 21 maxRadius = dogma.GetTypeAttribute2(typeID, attributeAsteroidMaxRadius) 22 quantity = max(1, quantity) 23 radius = unitSize * math.exp(ASTEROID_EXP_SCALE * (quantity - 1) * growthFactor) 24 return min(maxRadius, radius) 25 26 27 def ComputeQuantityFromRadius(categoryID, groupID, typeID, radius, dogma): 28 if categoryID == categoryAsteroid: 29 return AsteroidRadiusToQuantity(typeID, radius, dogma) 30 if groupID == groupHarvestableCloud: 31 quantity = radius * 10.0 / evetypes.GetRadius(typeID) 32 return quantity 33 return radius / evetypes.GetRadius(typeID) 34 35 36 def AsteroidRadiusToQuantity(typeID, radius, dogma): 37 unitSize = dogma.GetTypeAttribute2(typeID, attributeAsteroidRadiusUnitSize) 38 growthFactor = dogma.GetTypeAttribute2(typeID, attributeAsteroidRadiusGrowthFactor) 39 quantity = 1 + math.log(radius / unitSize) * (1.0 / ASTEROID_EXP_SCALE / growthFactor) 40 return quantity