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

ship_skin_design_link_handler.py (1597B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\cosmetics\client\ships\link\ship_skin_design_link_handler.py
      2 import uuid
      3 from cosmetics.client.ships.link.scheme import LinkScheme
      4 from cosmetics.client.shipSkinDesignSvc import get_ship_skin_design_svc
      5 from cosmetics.client.ships.skins.errors import SkinDesignSharingError
      6 from player_messaging.client.ui_message import message_player
      7 from eve.client.script.ui.cosmetics.ship.shipSKINRWindow import ShipSKINRWindow
      8 from localization import GetByLabel
      9 
     10 def register_link_handlers(registry):
     11     registry.register(scheme=LinkScheme.SHIP_SKIN_DESIGN, handler=handle_link, hint='UI/Personalization/ShipSkins/LinkHint')
     12 
     13 
     14 def handle_link(url):
     15     design_data = None
     16     error = None
     17     character_id, design_id = _parse_url(url)
     18     design_data, error = get_ship_skin_design_svc().get_shared_design(character_id, design_id, force_refresh=True)
     19     if design_data is not None:
     20         ShipSKINRWindow.open_external_design(character_id, design_id)
     21     if design_data is None:
     22         if error == SkinDesignSharingError.DESIGN_NOT_FOUND:
     23             message_player(GetByLabel('UI/Personalization/ShipSkins/DesignLinkNotFound'))
     24         else:
     25             message_player(GetByLabel('UI/Personalization/ShipSkins/DesignLinkFailed'))
     26 
     27 
     28 def _parse_url(url):
     29     _, identifiers = url.split(':')
     30     character_id, design_id = identifiers.split('/')
     31     character_id = int(character_id)
     32     try:
     33         design_id = uuid.UUID(design_id)
     34     except ValueError:
     35         return (None, None)
     36 
     37     return (character_id, design_id)