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

helper.py (13487B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\spacecomponents\common\helper.py
      2 from __future__ import absolute_import
      3 from . import componentConst
      4 from spacecomponents.common.data import type_has_space_component
      5 from spacecomponents.common.data import get_type_ids_with_space_component
      6 from spacecomponents.common.data import get_space_component_for_type
      7 
      8 def GetComponentTypeAttributes(typeID, componentClassName):
      9     return get_space_component_for_type(typeID, componentClassName)
     10 
     11 
     12 def HasScoopComponent(typeID):
     13     return type_has_space_component(typeID, componentConst.SCOOP_CLASS)
     14 
     15 
     16 def HasActivateComponent(typeID):
     17     return type_has_space_component(typeID, componentConst.ACTIVATE_CLASS)
     18 
     19 
     20 def HasDeployComponent(typeID):
     21     return type_has_space_component(typeID, componentConst.DEPLOY_CLASS)
     22 
     23 
     24 def HasDecayComponent(typeID):
     25     return type_has_space_component(typeID, componentConst.DECAY_CLASS)
     26 
     27 
     28 def HasDogmaticComponent(typeID):
     29     return type_has_space_component(typeID, componentConst.DOGMATIC_CLASS)
     30 
     31 
     32 def HasFittingComponent(typeID):
     33     return type_has_space_component(typeID, componentConst.FITTING_CLASS)
     34 
     35 
     36 def HasCargoBayComponent(typeID):
     37     return type_has_space_component(typeID, componentConst.CARGO_BAY)
     38 
     39 
     40 def HasUnderConstructionComponent(typeID):
     41     return type_has_space_component(typeID, componentConst.UNDER_CONSTRUCTION)
     42 
     43 
     44 def HasReinforceComponent(typeID):
     45     return type_has_space_component(typeID, componentConst.REINFORCE_CLASS)
     46 
     47 
     48 def HasProximityLockComponent(typeID):
     49     return type_has_space_component(typeID, componentConst.PROXIMITY_LOCK_CLASS)
     50 
     51 
     52 def HasProximitySensorComponent(typeID):
     53     return type_has_space_component(typeID, componentConst.PROXIMITY_SENSOR_CLASS)
     54 
     55 
     56 def HasPhysicsComponent(typeID):
     57     return type_has_space_component(typeID, componentConst.PHYSICS_CLASS)
     58 
     59 
     60 def HasSiphonComponent(typeID):
     61     return type_has_space_component(typeID, componentConst.SIPHON_CLASS)
     62 
     63 
     64 def HasMicroJumpDriverComponent(typeID):
     65     return type_has_space_component(typeID, componentConst.MICRO_JUMP_DRIVER_CLASS)
     66 
     67 
     68 def HasTurboShieldComponent(typeID):
     69     return type_has_space_component(typeID, componentConst.TURBO_SHIELD_CLASS)
     70 
     71 
     72 def HasShipGroupComponent(typeID):
     73     return type_has_space_component(typeID, componentConst.SHIP_GROUP_CLASS)
     74 
     75 
     76 def HasShipcasterComponent(typeID):
     77     return type_has_space_component(typeID, componentConst.SHIPCASTER_LAUNCHER)
     78 
     79 
     80 def HasStarterShipcasterComponent(typeID):
     81     return type_has_space_component(typeID, componentConst.STARTER_SHIPCASTER)
     82 
     83 
     84 def HasAutoMoonMinerComponent(typeID):
     85     return type_has_space_component(typeID, componentConst.AUTO_MOON_MINER)
     86 
     87 
     88 def HasPresenceTrackerComponent(typeID):
     89     return type_has_space_component(typeID, componentConst.PILOT_PRESENCE_TRACKER)
     90 
     91 
     92 def HasBreachPointAsteroidComponent(typeID):
     93     return type_has_space_component(typeID, componentConst.BREACH_POINT_ASTEROID)
     94 
     95 
     96 def IsActiveComponent(componentRegistry, typeID, itemID):
     97     if HasActivateComponent(typeID):
     98         activateComponent = componentRegistry.GetComponentForItem(itemID, componentConst.ACTIVATE_CLASS)
     99         return activateComponent.IsActive()
    100     return True
    101 
    102 
    103 def is_character_authorized_to_skyhook_reagent_silo_component(component_registry, type_id, item_id, character_session):
    104     if not HasSkyhookReagentSiloComponent(type_id):
    105         return True
    106     silo_component = component_registry.GetComponentForItem(item_id, componentConst.SKYHOOK_REAGENT_SILO)
    107     skyhook_id = silo_component.get_parent_skyhook_id()
    108     if not instance_has_orbital_skyhook_component(component_registry, skyhook_id):
    109         return True
    110     skyhook_component = component_registry.GetComponentForItem(skyhook_id, componentConst.ORBITAL_SKYHOOK)
    111     return skyhook_component.IsCharacterAuthorised(character_session)
    112 
    113 
    114 def is_theft_vulnerable_skyhook_reagent_silo_component(component_registry, type_id, item_id):
    115     if not HasSkyhookReagentSiloComponent(type_id):
    116         return True
    117     silo_component = component_registry.GetComponentForItem(item_id, componentConst.SKYHOOK_REAGENT_SILO)
    118     skyhook_id = silo_component.get_parent_skyhook_id()
    119     if not instance_has_orbital_skyhook_component(component_registry, skyhook_id):
    120         return True
    121     skyhook_component = component_registry.GetComponentForItem(skyhook_id, componentConst.ORBITAL_SKYHOOK)
    122     return skyhook_component.is_vulnerable_to_theft()
    123 
    124 
    125 def IsReinforcedComponent(componentRegistry, typeID, itemID):
    126     if HasReinforceComponent(typeID):
    127         reinforceComponent = componentRegistry.GetComponentForItem(itemID, componentConst.REINFORCE_CLASS)
    128         return reinforceComponent.IsReinforced()
    129     return False
    130 
    131 
    132 def HasWarpDisruptionComponent(typeID):
    133     return type_has_space_component(typeID, componentConst.WARP_DISRUPTION_CLASS)
    134 
    135 
    136 def HasBehaviorComponent(typeID):
    137     return type_has_space_component(typeID, componentConst.BEHAVIOR)
    138 
    139 
    140 def HasNpcPilotComponent(typeID):
    141     return type_has_space_component(typeID, componentConst.NPC_PILOT)
    142 
    143 
    144 def HasTargetingComponent(typeID):
    145     return type_has_space_component(typeID, componentConst.TARGETING)
    146 
    147 
    148 def GetTargetingComponent(componentRegistry, item):
    149     if HasTargetingComponent(item.typeID):
    150         return componentRegistry.GetComponentForItem(item.itemID, componentConst.TARGETING)
    151 
    152 
    153 def GetTypesWithBehaviorComponent():
    154     return get_type_ids_with_space_component(componentConst.BEHAVIOR)
    155 
    156 
    157 def GetReinforcedComponent(componentRegistry, typeID, itemID):
    158     if HasReinforceComponent(typeID):
    159         return componentRegistry.GetComponentForItem(itemID, componentConst.REINFORCE_CLASS)
    160     elif HasTurboShieldComponent(typeID):
    161         return componentRegistry.GetComponentForItem(itemID, componentConst.TURBO_SHIELD_CLASS)
    162     elif HasFighterSquadronComponent(typeID):
    163         return componentRegistry.GetComponentForItem(itemID, componentConst.FIGHTER_SQUADRON_CLASS)
    164     else:
    165         return None
    166 
    167 
    168 def HasEntosisCommandNodeComponent(typeID):
    169     return type_has_space_component(typeID, componentConst.ENTOSIS_COMMAND_NODE)
    170 
    171 
    172 def HasEntosisLootTargetComponent(typeID):
    173     return type_has_space_component(typeID, componentConst.ENTOSIS_LOOT_TARGET)
    174 
    175 
    176 def HasEntosisSovereigntyHubComponent(typeID):
    177     return type_has_space_component(typeID, componentConst.ENTOSIS_SOVEREIGNTY_HUB)
    178 
    179 
    180 def GetEntosisTargetComponentClasses(typeID):
    181     componentClasses = []
    182     if HasEntosisCommandNodeComponent(typeID):
    183         componentClasses.append(componentConst.ENTOSIS_COMMAND_NODE)
    184     if HasEntosisLootTargetComponent(typeID):
    185         componentClasses.append(componentConst.ENTOSIS_LOOT_TARGET)
    186     if HasEntosisSovereigntyHubComponent(typeID):
    187         componentClasses.append(componentConst.ENTOSIS_SOVEREIGNTY_HUB)
    188     return componentClasses
    189 
    190 
    191 def HasNpcWarpBeacon(typeID):
    192     return type_has_space_component(typeID, componentConst.NPC_WARP_BEACON)
    193 
    194 
    195 def HasItemTrader(typeID):
    196     return type_has_space_component(typeID, componentConst.ITEM_TRADER)
    197 
    198 
    199 def HasJumpPolarizationComponent(typeID):
    200     return type_has_space_component(typeID, componentConst.JUMP_POLARIZATION_CLASS)
    201 
    202 
    203 def HasProximityUnlockComponent(typeID):
    204     return type_has_space_component(typeID, componentConst.PROXIMITY_LOCK_CLASS)
    205 
    206 
    207 def HasFighterSquadronComponent(typeID):
    208     return type_has_space_component(typeID, componentConst.FIGHTER_SQUADRON_CLASS)
    209 
    210 
    211 def HasEntityStandingsComponent(typeID):
    212     return type_has_space_component(typeID, componentConst.ENTITY_STANDINGS_CLASS)
    213 
    214 
    215 def HasDynamicEntityNameComponent(typeID):
    216     return type_has_space_component(typeID, componentConst.DYNAMIC_ENTITY_NAME_CLASS)
    217 
    218 
    219 def HasEntityBountyComponent(typeID):
    220     return type_has_space_component(typeID, componentConst.ENTITY_BOUNTY_CLASS)
    221 
    222 
    223 def HasFilamentSpoolupComponent(typeID):
    224     return type_has_space_component(typeID, componentConst.FILAMENT_SPOOLUP)
    225 
    226 
    227 def GetEntityBountyTypeAttributes(typeID):
    228     return GetComponentTypeAttributes(typeID, componentConst.ENTITY_BOUNTY_CLASS)
    229 
    230 
    231 def GetDeploymentComponentTypeAttributes(typeID):
    232     if HasDeployComponent(typeID):
    233         return GetComponentTypeAttributes(typeID, componentConst.DEPLOY_CLASS)
    234 
    235 
    236 def GetMineableComponentTypeAttributes(typeID):
    237     if HasMineableComponent(typeID):
    238         return GetComponentTypeAttributes(typeID, componentConst.MINEABLE)
    239 
    240 
    241 def HasIgnoreFittingRestrictionsComponent(typeID):
    242     return type_has_space_component(typeID, componentConst.IGNORE_FITTING_RESTRICTIONS_CLASS)
    243 
    244 
    245 def HasAdditionalLootComponent(typeID):
    246     return type_has_space_component(typeID, componentConst.ADDITIONAL_LOOT)
    247 
    248 
    249 def InstanceHasDogmaComponent(componentRegistry, itemId):
    250     return InstanceHasComponent(componentRegistry, itemId, componentConst.DOGMATIC_CLASS)
    251 
    252 
    253 def HasEnforceCriminalFlagComponent(typeID):
    254     return type_has_space_component(typeID, componentConst.ENFORCE_CRIMINAL_FLAG_CLASS)
    255 
    256 
    257 def HasStoreSlimItemFieldInItemSettingsComponent(typeID):
    258     return type_has_space_component(typeID, componentConst.STORE_SLIM_ITEM_FIELD_IN_ITEM_SETTINGS)
    259 
    260 
    261 def HasAlignmentBasedTollSpaceComponent(typeID):
    262     return type_has_space_component(typeID, componentConst.ALIGNMENT_BASED_TOLL)
    263 
    264 
    265 def GetAlignmentBasedTollSpaceComponent(componentRegistry, itemID):
    266     return componentRegistry.GetComponentForItem(itemID, componentConst.ALIGNMENT_BASED_TOLL)
    267 
    268 
    269 def HasStandingsRestrictionSpaceComponent(typeID):
    270     return type_has_space_component(typeID, componentConst.STANDINGS_RESTRICTIONS)
    271 
    272 
    273 def GetStandingsRestrictionSpaceComponent(componentRegistry, itemID):
    274     return componentRegistry.GetComponentForItem(itemID, componentConst.STANDINGS_RESTRICTIONS)
    275 
    276 
    277 def GetFilamentSpoolupSpaceComponent(componentRegistry, itemID):
    278     return componentRegistry.GetComponentForItem(itemID, componentConst.FILAMENT_SPOOLUP)
    279 
    280 
    281 def GetActivateSpaceComponent(componentRegistry, itemID):
    282     return componentRegistry.GetComponentForItem(itemID, componentConst.ACTIVATE_CLASS)
    283 
    284 
    285 def InstanceHasBehaviorComponent(componentRegistry, itemId):
    286     return InstanceHasComponent(componentRegistry, itemId, componentConst.BEHAVIOR)
    287 
    288 
    289 def InstanceHasEntityStandingComponent(componentRegistry, itemId):
    290     return InstanceHasComponent(componentRegistry, itemId, componentConst.ENTITY_STANDINGS_CLASS)
    291 
    292 
    293 def InstanceHasRoomCaptureComponent(componentRegistry, itemId):
    294     return InstanceHasComponent(componentRegistry, itemId, componentConst.ROOM_CAPTURE_PROXIMITY_TRIGGER)
    295 
    296 
    297 def instance_has_orbital_skyhook_component(componentRegistry, itemId):
    298     return InstanceHasComponent(componentRegistry, itemId, componentConst.ORBITAL_SKYHOOK)
    299 
    300 
    301 def InstanceHasComponent(componentRegistry, itemId, component):
    302     try:
    303         componentRegistry.GetComponentForItem(itemId, component)
    304         return True
    305     except KeyError:
    306         return False
    307 
    308 
    309 def GetEntityStandingsAttributes(typeID):
    310     return GetComponentTypeAttributes(typeID, componentConst.ENTITY_STANDINGS_CLASS)
    311 
    312 
    313 def HasDestinyServerBallClassComponent(typeID):
    314     return type_has_space_component(typeID, componentConst.DESTINY_SERVER_BALL_CLASS)
    315 
    316 
    317 def GetDestinyServerBallClassAttributes(typeID):
    318     return GetComponentTypeAttributes(typeID, componentConst.DESTINY_SERVER_BALL_CLASS)
    319 
    320 
    321 def HasEssRegistrationComponent(typeID):
    322     return type_has_space_component(typeID, componentConst.ESS_REGISTRATION_CLASS)
    323 
    324 
    325 def HasEssLinkComponent(typeID):
    326     return type_has_space_component(typeID, componentConst.ESS_LINK_CLASS)
    327 
    328 
    329 def HasLinkWithShipComponent(typeID):
    330     return type_has_space_component(typeID, componentConst.LINK_WITH_SHIP)
    331 
    332 
    333 def HasHostileBaiterComponent(typeID):
    334     return type_has_space_component(typeID, componentConst.HOSTILE_BAITER)
    335 
    336 
    337 def HasBoomboxComponent(typeID):
    338     return type_has_space_component(typeID, componentConst.BOOMBOX)
    339 
    340 
    341 def HasTowGameObjectiveComponent(typeID):
    342     return type_has_space_component(typeID, componentConst.TOW_GAME_OBJECTIVE)
    343 
    344 
    345 def HasSkyhookReagentSiloComponent(typeID):
    346     return type_has_space_component(typeID, componentConst.SKYHOOK_REAGENT_SILO)
    347 
    348 
    349 def HasMercenaryDenComponent(typeID):
    350     return type_has_space_component(typeID, componentConst.MERCENARY_DEN)
    351 
    352 
    353 def HasMineableComponent(typeID):
    354     return type_has_space_component(typeID, componentConst.MINEABLE)
    355 
    356 
    357 def HasPhaseStabilizerComponent(typeID):
    358     return type_has_space_component(typeID, componentConst.PHASE_STABILIZER)
    359 
    360 
    361 def GetPhaseStabilizerAttributes(typeID):
    362     return GetComponentTypeAttributes(typeID, componentConst.PHASE_STABILIZER)
    363 
    364 
    365 def HasJumpBridgeComponent(typeID):
    366     return type_has_space_component(typeID, componentConst.JUMP_BRIDGE)
    367 
    368 
    369 def GetJumpBridgeAttributes(typeID):
    370     return GetComponentTypeAttributes(typeID, componentConst.JUMP_BRIDGE)
    371 
    372 
    373 def GetItemTraderComponent(typeID):
    374     if HasItemTrader(typeID):
    375         return GetComponentTypeAttributes(typeID, componentConst.ITEM_TRADER)
    376 
    377 
    378 def GetClosestComponentWithinRange(ballID, ballpark, component_class, max_distance):
    379     closestDistance = max_distance
    380     closestComponentInstance = None
    381     componentInstances = ballpark.componentRegistry.GetInstancesWithComponentClass(component_class)
    382     for componentInstance in componentInstances:
    383         d = ballpark.DistanceBetween(ballID, componentInstance.itemID)
    384         if ballpark.IsBallDeparting(componentInstance.itemID):
    385             continue
    386         if d < closestDistance:
    387             closestDistance = d
    388             closestComponentInstance = componentInstance
    389 
    390     return closestComponentInstance