NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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