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

settings.py (2687B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\crimewatch\corp_aggression\settings.py
      2 import logging
      3 from ccpProfile import TimedFunction
      4 from eve.common.script.sys.idCheckers import IsNPCCorporation
      5 DEFAULT_AGGRESSION_ENABLED = True
      6 logger = logging.getLogger(__name__)
      7 
      8 class AggressionSettings:
      9     __passbyvalue__ = True
     10 
     11     def __init__(self, enableAfter, disableAfter):
     12         self._enableAfter = enableAfter
     13         self._disableAfter = disableAfter
     14 
     15     def __repr__(self):
     16         return 'AggressionSettings(enableAfter=%r,disableAfter=%r)' % (self._enableAfter, self._disableAfter)
     17 
     18     def __eq__(self, other):
     19         return self._enableAfter == other._enableAfter and self._disableAfter == other._disableAfter
     20 
     21     def __ne__(self, other):
     22         return self._enableAfter != other._enableAfter or self._disableAfter != other._disableAfter
     23 
     24     def HasPendingChangeAtTime(self, time):
     25         return self._IsDisableTimeInFuture(time) or self._IsEnableTimeInFuture(time)
     26 
     27     @TimedFunction('AggressionSettings::IsFriendlyFireLegalAtTime')
     28     def IsFriendlyFireLegalAtTime(self, time):
     29         if self._IsDisableTimeInPast(time) and self._IsEnableTimeInPast(time):
     30             return self._disableAfter < self._enableAfter
     31         elif self._IsDisableTimeInPast(time):
     32             return False
     33         elif self._IsEnableTimeInPast(time):
     34             return True
     35         else:
     36             return DEFAULT_AGGRESSION_ENABLED
     37 
     38     def _IsDisableTimeInPast(self, now):
     39         return self._disableAfter is not None and self._disableAfter < now
     40 
     41     def _IsEnableTimeInPast(self, now):
     42         return self._enableAfter is not None and self._enableAfter < now
     43 
     44     def _IsDisableTimeInFuture(self, now):
     45         return self._disableAfter is not None and self._disableAfter >= now
     46 
     47     def _IsEnableTimeInFuture(self, now):
     48         return self._enableAfter is not None and self._enableAfter >= now
     49 
     50     def GetNextPendingChangeTime(self, now):
     51         if self._IsDisableTimeInFuture(now):
     52             return self._disableAfter
     53         if self._IsEnableTimeInFuture(now):
     54             return self._enableAfter
     55 
     56     @staticmethod
     57     def CreateDefaultForCorp(corpID):
     58         if not IsNPCCorporation(corpID):
     59             return ALWAYS_ENABLED
     60         else:
     61             return ALWAYS_DISABLED
     62 
     63     @staticmethod
     64     def CreateFromDBRows(rows):
     65         if len(rows) == 1:
     66             return AggressionSettings.CreateFromDBRow(rows[0])
     67 
     68     @staticmethod
     69     def CreateFromDBRow(row):
     70         return AggressionSettings(row.enableAfter, row.disableAfter)
     71 
     72 
     73 ALWAYS_ENABLED = AggressionSettings(0, None)
     74 ALWAYS_DISABLED = AggressionSettings(None, 0)