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

activity.py (2120B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\industry\activity.py
      2 import math
      3 import operator
      4 import immutable
      5 import industry
      6 import structures
      7 from functools import reduce
      8 
      9 class Activity(industry.Base):
     10     __metaclass__ = immutable.Immutable
     11     REQUIRES_ORIGINAL = False
     12     REQUIRES_COPY = False
     13     MAX_RUNS = industry.MAX_RUNS_HARD_CAP
     14 
     15     def __new__(cls, *args, **kwargs):
     16         obj = industry.Base.__new__(cls)
     17         obj.time = 0
     18         obj.materials = []
     19         obj.skills = []
     20         obj.products = []
     21         return obj
     22 
     23     def job_modifiers(self, job):
     24         return []
     25 
     26     def job_probability(self, job):
     27         return 1.0
     28 
     29     def job_time(self, job):
     30         return self.time * job.runs
     31 
     32     def job_cost(self, job):
     33         return 0
     34 
     35     def job_max_runs(self, job):
     36         modifiers = [ modifier.amount for modifier in job.input_modifiers if isinstance(modifier, industry.TimeModifier) and modifier.activity in (None, job.activityID) ]
     37         return min(int(math.ceil(industry.MAX_RUN_LENGTH / float(self.time) / reduce(operator.mul, modifiers, 1.0))), self.MAX_RUNS)
     38 
     39     def job_material_runs(self, job):
     40         return job.runs
     41 
     42     def job_output_products(self, job):
     43         return []
     44 
     45     def job_output_extras(self, job):
     46         return []
     47 
     48     def job_validate(self, job):
     49         pass
     50 
     51     def activity_tax(self, facility):
     52         if facility.tax is not None:
     53             return facility.tax
     54         typeID = None
     55         if self.activityID in (industry.MANUFACTURING, industry.REACTION):
     56             typeID = self.products[0].typeID
     57         serviceID = structures.GetServiceID(self.activityID, typeID)
     58         return facility.serviceAccess.get(serviceID, 0) or 0
     59 
     60     def is_compatible(self, blueprint):
     61         if self.REQUIRES_ORIGINAL is True and not blueprint.original:
     62             return False
     63         if self.REQUIRES_COPY is True and blueprint.original:
     64             return False
     65         return True
     66 
     67     def _get_activityID(self):
     68         return industry.ACTIVITY_IDS[self.__class__]
     69 
     70     activityID = property(_get_activityID)