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

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)