shipInfoConst.py (9849B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\info\shipInfoConst.py 2 import eveicon 3 import evetypes 4 import localization 5 import mathext 6 import math 7 from eve.client.script.ui.shared.cloneGrade import open_omega_upgrade_window, ORIGIN_SHOWINFO 8 from eve.client.script.ui.shared.tooltip.itemObject import ItemObject 9 from eve.common.lib import appConst 10 TAB_OVERVIEW = 1 11 TAB_ATTRIBUTES = 2 12 TAB_FITTING = 3 13 TAB_SKILLS = 4 14 TAB_VARIATIONS = 5 15 TAB_INDUSTRY = 6 16 TAB_SKINS = 7 17 INFO_TABS = [TAB_OVERVIEW, 18 TAB_ATTRIBUTES, 19 TAB_FITTING, 20 TAB_SKILLS, 21 TAB_VARIATIONS, 22 TAB_INDUSTRY, 23 TAB_SKINS] 24 FULLY_MINIMIZED = 0 25 MINIMIZED = 1 26 EXPANDED = 2 27 CONTENT_PADDING = {FULLY_MINIMIZED: 8, 28 MINIMIZED: 8, 29 EXPANDED: 24} 30 LIGHT_RIG_GRAPHIC_ID = 27949 31 ANIM_DURATION_SMALL = 0.8 32 ANIM_DURATION_MID = 0.9 33 ANIM_DURATION_LONG = 2.5 34 MAX_MASS = 2500000000L 35 LOCKED_ICON = eveicon.mastery_locked 36 UNLOCKED_ICON = eveicon.mastery_level_0 37 MASTERY_ICONS = {1: eveicon.mastery_level_1, 38 2: eveicon.mastery_level_2, 39 3: eveicon.mastery_level_3, 40 4: eveicon.mastery_level_4, 41 5: eveicon.mastery_level_5} 42 43 def GetAnimDuration(mass): 44 return GetMassBasedLerp(mass, ANIM_DURATION_SMALL, ANIM_DURATION_LONG) 45 46 47 def GetMassBasedSoundOffset(mass, soundOffsetMin = 0.4, soundOffsetMax = 0.55): 48 return GetMassBasedLerp(mass, soundOffsetMin, soundOffsetMax) 49 50 51 def GetMassBasedLerp(mass, a, b): 52 ratio = mass / MAX_MASS 53 ratio = 1 - ratio 54 ratio = mathext.pow(ratio, 5) 55 ratio = 1 - ratio 56 return mathext.lerp(a, b, ratio) 57 58 59 SOUND_PANEL_FADE_IN = 'ship_info_window_fade_in_play' 60 SOUND_INSURANCE = 'ship_info_window_button_insurance_play' 61 SOUND_INSURANCE_SELECT = 'ship_info_window_button_select_play' 62 SOUND_ROTATION_SMALL = ('ship_info_window_ship_small_move_play', 'ship_info_window_ship_small_move_stop') 63 SOUND_ROTATION_MEDIUM = ('ship_info_window_ship_medium_move_play', 'ship_info_window_ship_medium_move_stop') 64 SOUND_ROTATION_LARGE = ('ship_info_window_ship_large_move_play', 'ship_info_window_ship_large_move_stop') 65 SOUND_GROUP_SMALL = [appConst.groupCapsule, 66 appConst.groupCorvette, 67 appConst.groupShuttle, 68 appConst.groupFrigate, 69 appConst.groupAssaultFrigate, 70 appConst.groupLogisticsFrigate, 71 appConst.groupExpeditionFrigate, 72 appConst.groupInterceptor, 73 appConst.groupElectronicAttackShips, 74 appConst.groupCovertOps, 75 appConst.groupStealthBomber, 76 appConst.groupDestroyer, 77 appConst.groupCommandDestroyer, 78 appConst.groupTacticalDestroyer, 79 appConst.groupInterdictor] 80 SOUND_GROUP_MEDIUM = [appConst.groupCruiser, 81 appConst.groupCombatReconShip, 82 appConst.groupForceReconShip, 83 appConst.groupHeavyAssaultCruiser, 84 appConst.groupHeavyInterdictors, 85 appConst.groupLogistics, 86 appConst.groupStrategicCruiser, 87 appConst.groupBattlecruiser, 88 appConst.groupAttackBattlecruiser, 89 appConst.groupCommandShip, 90 appConst.groupIndustrial, 91 appConst.groupTransportShip, 92 appConst.groupMiningBarge, 93 appConst.groupExhumer, 94 appConst.groupIndustrialCommandShip, 95 appConst.groupFlagCruiser, 96 appConst.groupExpeditionCommandShip, 97 appConst.groupSpecialEditionYacht] 98 SOUND_GROUP_LARGE = [appConst.groupCapitalIndustrialShip, 99 appConst.groupFreighter, 100 appConst.groupJumpFreighter, 101 appConst.groupDreadnought, 102 appConst.groupLancerDreadnought, 103 appConst.groupForceAux, 104 appConst.groupCarrier, 105 appConst.groupCommandCarrier, 106 appConst.groupSupercarrier, 107 appConst.groupTitan, 108 appConst.groupBattleship, 109 appConst.groupBlackOps, 110 appConst.groupMarauders] 111 112 def get_sound_by_type_id(typeID): 113 groupID = evetypes.GetGroupID(typeID) 114 if groupID in SOUND_GROUP_SMALL: 115 return SOUND_ROTATION_SMALL 116 if groupID in SOUND_GROUP_MEDIUM: 117 return SOUND_ROTATION_MEDIUM 118 if groupID in SOUND_GROUP_LARGE: 119 return SOUND_ROTATION_LARGE 120 121 122 FRONT = 0 123 REAR = 1 124 RIGHT = 2 125 LEFT = 3 126 FRONT_RIGHT = 4 127 FRONT_LEFT = 5 128 REAR_RIGHT = 6 129 REAR_LEFT = 7 130 DOWN_FRONT = 8 131 DOWN_REAR = 9 132 DOWN_RIGHT = 10 133 DOWN_LEFT = 11 134 DOWN_FRONT_LEFT = 12 135 DOWN_FRONT_RIGHT = 13 136 DOWN_REAR_LEFT = 14 137 DOWN_REAR_RIGHT = 15 138 TOP_DOWN_NOSE_UP = 16 139 TOP_DOWN_NOSE_DOWN = 17 140 TOP_DOWN_NOSE_RIGHT = 18 141 TOP_DOWN_NOSE_LEFT = 19 142 TOP_DOWN_NOSE_UP_ALT = 20 143 UP_FRONT_LEFT = 21 144 ANGLE_FITTING = 22 145 ANGLE_SKILLS = 23 146 ANGLE_SKINS = 24 147 TALL_SHIP_POSITION_REPLACEMENTS = {TOP_DOWN_NOSE_UP: LEFT, 148 TOP_DOWN_NOSE_LEFT: LEFT, 149 TOP_DOWN_NOSE_RIGHT: RIGHT, 150 TOP_DOWN_NOSE_DOWN: RIGHT, 151 TOP_DOWN_NOSE_UP_ALT: LEFT} 152 WIDE_SHIP_POSITION_REPLACEMENTS = {TOP_DOWN_NOSE_UP: TOP_DOWN_NOSE_RIGHT, 153 TOP_DOWN_NOSE_DOWN: TOP_DOWN_NOSE_LEFT, 154 TOP_DOWN_NOSE_UP_ALT: TOP_DOWN_NOSE_LEFT} 155 SHIP_POSITIONS = {FRONT: (90, 180), 156 REAR: (90, 0), 157 RIGHT: (90, 90), 158 LEFT: (90, 270), 159 FRONT_LEFT: (90, 135), 160 FRONT_RIGHT: (90, 45), 161 DOWN_FRONT: (72, 180), 162 DOWN_REAR: (72, 0), 163 DOWN_RIGHT: (72, 45), 164 DOWN_LEFT: (72, 135), 165 DOWN_FRONT_LEFT: (65, -225), 166 DOWN_FRONT_RIGHT: (72, 205), 167 DOWN_REAR_LEFT: (72, -20), 168 DOWN_REAR_RIGHT: (72, 20), 169 TOP_DOWN_NOSE_UP: (0, 0), 170 TOP_DOWN_NOSE_DOWN: (0, 180), 171 TOP_DOWN_NOSE_RIGHT: (0, 90), 172 TOP_DOWN_NOSE_LEFT: (0, 270), 173 TOP_DOWN_NOSE_UP_ALT: (0, 0), 174 UP_FRONT_LEFT: (120, 135), 175 ANGLE_FITTING: (35, -225), 176 ANGLE_SKILLS: (35, 225), 177 ANGLE_SKINS: (72, -205)} 178 NO_FACTION_BACKGROUND = 99 179 FACTION_BACKGROUND_LOGOS_IDS = {appConst.factionAmarrEmpire: 0, 180 appConst.factionCaldariState: 1, 181 appConst.factionMinmatarRepublic: 2, 182 appConst.factionGallenteFederation: 3, 183 appConst.factionGuristasPirates: 4, 184 appConst.factionSistersOfEVE: 5, 185 appConst.factionAngelCartel: 6, 186 appConst.factionSanshasNation: 7, 187 appConst.factionTheBloodRaiderCovenant: 8, 188 appConst.factionTriglavian: 9, 189 appConst.factionSerpentis: 10, 190 appConst.factionORE: 11, 191 appConst.factionMordusLegion: 12, 192 appConst.factionEDENCOM: 13, 193 appConst.factionTheSyndicate: 14, 194 appConst.factionAmmatar: 15, 195 appConst.factionDeathless: 16, 196 appConst.factionCONCORDAssembly: 17, 197 appConst.factionKhanidKingdom: 18, 198 appConst.factionSocietyOfConsciousThought: 19, 199 appConst.factionInterBus: 20, 200 appConst.factionJoveEmpire: 21} 201 202 def get_faction_background(factionID): 203 if factionID in FACTION_BACKGROUND_LOGOS_IDS: 204 return FACTION_BACKGROUND_LOGOS_IDS[factionID] 205 return NO_FACTION_BACKGROUND 206 207 208 def get_mastery_level_icon_and_message(typeID): 209 skillSvc = sm.GetService('skills') 210 certSvc = sm.GetService('certificates') 211 unlocked = skillSvc.IsSkillRequirementMet(typeID) 212 masteryLevel = certSvc.GetCurrCharMasteryLevel(typeID) 213 itemObject = ItemObject(typeID) 214 on_click = None 215 if itemObject.NeedsOmegaUpgrade(): 216 texturePath = eveicon.mastery_omega_locked 217 message = localization.GetByLabel('UI/InfoWindow/OmegaRequired') 218 on_click = lambda *args, **kwargs: open_omega_upgrade_window(origin=ORIGIN_SHOWINFO) 219 elif not unlocked: 220 texturePath = LOCKED_ICON 221 message = localization.GetByLabel('UI/InfoWindow/SkillRequirementsNotMet') 222 elif masteryLevel == 0: 223 texturePath = UNLOCKED_ICON 224 message = localization.GetByLabel('UI/InfoWindow/SkillRequirementsMet') 225 else: 226 texturePath = MASTERY_ICONS[masteryLevel] 227 message = localization.GetByLabel('UI/InfoWindow/MasteryLevelUnlocked', level=masteryLevel) 228 return (texturePath, message, on_click) 229 230 231 KILLMARKS_AMARR = (eveicon.killmarks_amarr_1, eveicon.killmarks_amarr_2, eveicon.killmarks_amarr_3) 232 KILLMARKS_GALLENTE = (eveicon.killmarks_gallente_1, eveicon.killmarks_gallente_2, eveicon.killmarks_gallente_3) 233 KILLMARKS_CALDARI = (eveicon.killmarks_caldari_1, eveicon.killmarks_caldari_2, eveicon.killmarks_caldari_3) 234 KILLMARKS_MINMATAR = (eveicon.killmarks_minmatar_1, eveicon.killmarks_minmatar_2, eveicon.killmarks_minmatar_3) 235 KILLMARKS_ANGEL = (eveicon.killmarks_angel_cartel_1, eveicon.killmarks_angel_cartel_2, eveicon.killmarks_angel_cartel_3) 236 KILLMARKS_SANSHA = (eveicon.killmarks_sansha_1, eveicon.killmarks_sansha_2, eveicon.killmarks_sansha_3) 237 KILLMARKS_SOE = (eveicon.killmarks_soe_1, eveicon.killmarks_soe_2, eveicon.killmarks_soe_3) 238 KILLMARKS_CONCORD = (eveicon.killmarks_concord_1, eveicon.killmarks_concord_2, eveicon.killmarks_concord_3) 239 KILLMARKS_TRIGLAVIAN = (eveicon.killmarks_triglavian_1, eveicon.killmarks_triglavian_2, eveicon.killmarks_triglavian_3) 240 KILLMARKS_MORDUS = (eveicon.killmarks_mordus_legion_1, eveicon.killmarks_mordus_legion_2, eveicon.killmarks_mordus_legion_3) 241 KILLMARKS_JOVE = (eveicon.killmarks_jove_1, eveicon.killmarks_jove_2, eveicon.killmarks_jove_3) 242 KILLMARKS_SOCT = (eveicon.killmarks_soct_1, eveicon.killmarks_soct_2, eveicon.killmarks_soct_3) 243 DEFAULT_KILLMARKS = KILLMARKS_JOVE 244 KILLMARKS_BY_FACTION = {appConst.factionAmarrEmpire: KILLMARKS_AMARR, 245 appConst.factionCaldariState: KILLMARKS_CALDARI, 246 appConst.factionMinmatarRepublic: KILLMARKS_MINMATAR, 247 appConst.factionGallenteFederation: KILLMARKS_GALLENTE, 248 appConst.factionGuristasPirates: KILLMARKS_CALDARI, 249 appConst.factionSistersOfEVE: KILLMARKS_SOE, 250 appConst.factionAngelCartel: KILLMARKS_ANGEL, 251 appConst.factionSanshasNation: KILLMARKS_SANSHA, 252 appConst.factionTheBloodRaiderCovenant: KILLMARKS_AMARR, 253 appConst.factionTriglavian: KILLMARKS_TRIGLAVIAN, 254 appConst.factionSerpentis: KILLMARKS_GALLENTE, 255 appConst.factionORE: KILLMARKS_JOVE, 256 appConst.factionMordusLegion: KILLMARKS_MORDUS, 257 appConst.factionEDENCOM: KILLMARKS_JOVE, 258 appConst.factionTheSyndicate: KILLMARKS_GALLENTE, 259 appConst.factionAmmatar: KILLMARKS_AMARR, 260 appConst.factionDeathless: KILLMARKS_JOVE, 261 appConst.factionCONCORDAssembly: KILLMARKS_CONCORD, 262 appConst.factionKhanidKingdom: KILLMARKS_AMARR, 263 appConst.factionSocietyOfConsciousThought: KILLMARKS_SOCT, 264 appConst.factionInterBus: KILLMARKS_JOVE} 265 266 def get_killmark_for_faction(faction_id, tier = 2, default = DEFAULT_KILLMARKS): 267 return KILLMARKS_BY_FACTION.get(faction_id, default)[tier] 268 269 270 def get_killmarks_for_faction(faction_id, default = DEFAULT_KILLMARKS): 271 return KILLMARKS_BY_FACTION.get(faction_id, default)