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

all_cso_alliance.py (4523B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\alliances\all_cso_alliance.py
      2 import blue
      3 import utillib
      4 from carbon.common.script.sys.crowset import CRowset
      5 from eve.client.script.ui.services.alliances.all_cso_base import BaseAllianceObject
      6 from eve.client.script.ui.shared.neocom.corporation import corpUISignals
      7 
      8 class AllianceO(BaseAllianceObject):
      9     __guid__ = 'allianceObject.alliance'
     10 
     11     def __init__(self, boundObject):
     12         BaseAllianceObject.__init__(self, boundObject)
     13         self.alliancesByAllianceID = None
     14         self.rankedAlliances = utillib.KeyVal(time=None, alliances=None, standings=None, maxLen=None)
     15 
     16     def DoSessionChanging(self, isRemote, session, change):
     17         pass
     18 
     19     def GetRankedAlliances(self, maxLen = 100):
     20         if self.rankedAlliances.time is not None:
     21             if self.rankedAlliances.maxLen != maxLen or blue.os.TimeDiffInMs(self.rankedAlliances.time, blue.os.GetWallclockTime()) > 5000:
     22                 self.rankedAlliances.time = None
     23         if self.rankedAlliances.time is None:
     24             self.rankedAlliances.time = blue.os.GetWallclockTime()
     25             self.rankedAlliances.maxLen = maxLen
     26             self.rankedAlliances.alliances = sm.RemoteSvc('allianceRegistry').GetRankedAlliances(maxLen)
     27             self.rankedAlliances.standings = {}
     28             for a in self.rankedAlliances.alliances:
     29                 s = sm.GetService('standing').GetStanding(session.corpid, a.allianceID)
     30                 self.rankedAlliances.standings[a.allianceID] = s
     31 
     32         return self.rankedAlliances
     33 
     34     def UpdateAlliance(self, description, url):
     35         return self.GetMoniker().UpdateAlliance(description, url)
     36 
     37     def GetAlliance(self, allianceID = None):
     38         if allianceID is None:
     39             allianceID = session.allianceid
     40         if allianceID is None:
     41             raise RuntimeError('NoSuchAlliance')
     42         if self.alliancesByAllianceID is not None and allianceID in self.alliancesByAllianceID:
     43             return self.alliancesByAllianceID[allianceID]
     44         alliance = None
     45         if allianceID == session.allianceid:
     46             alliance = self.GetMoniker().GetAlliance()
     47         else:
     48             alliance = sm.RemoteSvc('allianceRegistry').GetAlliance(allianceID)
     49         self.LoadAlliance(alliance)
     50         return self.alliancesByAllianceID[allianceID]
     51 
     52     def LoadAlliance(self, alliance):
     53         if self.alliancesByAllianceID is None:
     54             self.alliancesByAllianceID = CRowset(alliance.__header__, []).Index('allianceID')
     55         self.alliancesByAllianceID[alliance.allianceID] = alliance
     56 
     57     def OnAllianceChanged(self, allianceID, change):
     58         bAdd, bRemove = self.GetAddRemoveFromChange(change)
     59         if self.alliancesByAllianceID is not None:
     60             if bAdd:
     61                 if len(change) != len(self.alliancesByAllianceID.columns):
     62                     self.LogWarn('IncorrectNumberOfColumns ignoring change as Add change:', change)
     63                     return
     64                 line = []
     65                 for columnName in self.alliancesByAllianceID.columns:
     66                     line.append(change[columnName][1])
     67 
     68                 self.alliancesByAllianceID[allianceID] = blue.DBRow(self.alliancesByAllianceID.header, line)
     69             else:
     70                 if allianceID not in self.alliancesByAllianceID:
     71                     return
     72                 if bRemove:
     73                     del self.alliancesByAllianceID[allianceID]
     74                 else:
     75                     alliance = self.alliancesByAllianceID[allianceID]
     76                     for columnName in change.iterkeys():
     77                         setattr(alliance, columnName, change[columnName][1])
     78 
     79                     if allianceID in cfg.allianceshortnames.data:
     80                         header = cfg.allianceshortnames.header
     81                         line = cfg.allianceshortnames.data[allianceID]
     82                         i = -1
     83                         for columnName in header:
     84                             i = i + 1
     85                             if columnName not in change:
     86                                 continue
     87                             line[i] = change[columnName][1]
     88 
     89         corpUISignals.on_alliance_changed(allianceID, change)
     90 
     91     def ResetCacheForMyAlliance(self):
     92         allianceID = session.allianceid
     93         if not allianceID:
     94             return
     95         if self.alliancesByAllianceID and allianceID in self.alliancesByAllianceID:
     96             self.alliancesByAllianceID.pop(allianceID, None)