factions.py (3653B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\characterdata\factions.py 2 from collections import namedtuple 3 from caching import Memoize 4 from eveprefs import boot 5 from fsdBuiltData.common.base import BuiltDataLoader 6 from inventorycommon.const import ownerNone 7 from npcs.npccorporations import get_corporation_faction_id 8 try: 9 import factionsLoader 10 except ImportError: 11 factionsLoader = None 12 13 Faction = namedtuple('Faction', ['nameID', 14 'descriptionID', 15 'shortDescriptionID', 16 'corporationID', 17 'iconID', 18 'uniqueName', 19 'militiaCorporationID', 20 'sizeFactor', 21 'solarSystemID', 22 'memberRaces', 23 'npcTag']) 24 25 class FactionsLoader(BuiltDataLoader): 26 __resBuiltFile__ = 'res:/staticData/factions.fsdbinary' 27 __clientAutobuildBuiltFile__ = 'eve/autobuild/staticData/client/factions.fsdbinary' 28 __serverAutobuildBuiltFile__ = 'eve/autobuild/staticData/server/factions.fsdbinary' 29 __loader__ = factionsLoader 30 31 32 def get_factions(): 33 return FactionsLoader.GetData() 34 35 36 def get_faction_data(faction_id): 37 return get_factions()[faction_id] 38 39 40 def get_faction(faction_id): 41 faction = get_factions()[faction_id] 42 return Faction(faction.nameID, faction.descriptionID, faction.shortDescriptionID, faction.corporationID or ownerNone, faction.iconID, faction.uniqueName, faction.militiaCorporationID, faction.sizeFactor, faction.solarSystemID, faction.memberRaces, faction.npcTag) 43 44 45 def iter_factions(): 46 for faction_id in iter_faction_ids(): 47 yield (faction_id, get_faction(faction_id)) 48 49 50 def iter_faction_ids(): 51 for faction_id in get_factions().iterkeys(): 52 yield faction_id 53 54 55 def get_faction_ids(): 56 return get_factions().keys() 57 58 59 def faction_exists(faction_id): 60 return faction_id in get_factions() 61 62 63 def get_faction_races(faction_id): 64 faction = get_faction(faction_id) 65 return faction.memberRaces 66 67 68 @Memoize 69 def get_station_count(faction_id): 70 return len({station.stationID for station in cfg.stations if get_corporation_faction_id(station.ownerID) == faction_id}) 71 72 73 @Memoize 74 def get_station_system_count(faction_id): 75 return len({station.solarSystemID for station in cfg.stations if get_corporation_faction_id(station.ownerID) == faction_id}) 76 77 78 def get_faction_name(faction_id, faction = None, language_id = None, important = False): 79 if not faction: 80 faction = get_faction(faction_id) 81 return _get_message(faction.nameID, language_id, important) 82 83 84 def get_faction_description(faction_id, faction = None): 85 if not faction: 86 faction = get_faction(faction_id) 87 return _get_message(faction.descriptionID) 88 89 90 def get_faction_short_description(faction_id, faction = None): 91 if not faction: 92 faction = get_faction(faction_id) 93 if faction.shortDescriptionID: 94 return _get_message(faction.shortDescriptionID) 95 96 97 def get_faction_logo_flat(faction_id): 98 import eveicon 99 if not faction_id: 100 return 101 logo_id = get_faction_data(faction_id).flatLogo 102 if logo_id: 103 return eveicon.get(logo_id) 104 105 106 def get_faction_logo_flat_with_name(faction_id, fallback_without_name = True): 107 import eveicon 108 if not faction_id: 109 return 110 faction_data = get_faction_data(faction_id) 111 logo_id = faction_data.flatLogoWithName or (faction_data.flatLogo if fallback_without_name else None) 112 if logo_id: 113 return eveicon.get(logo_id) 114 115 116 def _get_message(message_id, language_id = None, important = False): 117 import localization 118 if important and boot.role == 'client': 119 return localization.GetImportantByMessageID(message_id) 120 return localization.GetByMessageID(message_id, language_id)