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

game_mode.py (3229B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\abyss\game_mode.py
      2 import abc
      3 from abyss.error import Error
      4 import evetypes
      5 import abyss.const
      6 
      7 class GameModeID(object):
      8     UNKNOWN = -1
      9     SOLO = 1
     10     COOP = 2
     11     TWO_PLAYER = 3
     12 
     13 
     14 class AbyssGameModeBase(object):
     15     __metaclass__ = abc.ABCMeta
     16 
     17     @abc.abstractproperty
     18     def id(self):
     19         pass
     20 
     21     @classmethod
     22     def get_allowed_ships(cls):
     23         return evetypes.GetTypeIDsByListID(cls.allowed_ships_list_id)
     24 
     25     @classmethod
     26     def is_ship_allowed(cls, type_id):
     27         if cls.allowed_ships_list_id == -1:
     28             return True
     29         return type_id in cls.get_allowed_ships()
     30 
     31     @abc.abstractproperty
     32     def allowed_ships_list_id(self):
     33         pass
     34 
     35     @abc.abstractproperty
     36     def content_type(self):
     37         pass
     38 
     39     @abc.abstractproperty
     40     def jump_description_label(self):
     41         pass
     42 
     43     @abc.abstractproperty
     44     def key_stack_size(self):
     45         pass
     46 
     47     @abc.abstractproperty
     48     def max_players(self):
     49         pass
     50 
     51     @abc.abstractproperty
     52     def ship_restriction_error_id(self):
     53         pass
     54 
     55     @abc.abstractproperty
     56     def should_jump_on_deploy(self):
     57         pass
     58 
     59     @property
     60     def is_fleet_required(self):
     61         return self.is_multiplayer
     62 
     63     @property
     64     def is_locked_to_creator(self):
     65         return True
     66 
     67     @property
     68     def is_multiplayer(self):
     69         return self.max_players > 1
     70 
     71 
     72 class AbyssSoloGameMode(AbyssGameModeBase):
     73     id = GameModeID.SOLO
     74     allowed_ships_list_id = 57
     75     content_type = abyss.const.CRUISER_SOLO_CONTENT
     76     max_players = 1
     77     key_stack_size = 1
     78     ship_restriction_error_id = Error.INVALID_SHIP_TYPE
     79     should_jump_on_deploy = True
     80     jump_description_label = 'UI/Abyss/AbyssSoloEntranceShortDescription'
     81 
     82 
     83 class AbyssCoOpGameMode(AbyssGameModeBase):
     84     id = GameModeID.COOP
     85     allowed_ships_list_id = 92
     86     content_type = abyss.const.FRIGATE_FLEET_CONTENT
     87     max_players = 3
     88     key_stack_size = 3
     89     ship_restriction_error_id = Error.INVALID_SHIP_TYPE_THREE_PLAYER
     90     should_jump_on_deploy = False
     91     jump_description_label = 'UI/Abyss/AbyssFleetEntranceShortDescription'
     92 
     93 
     94 class AbyssTwoPlayerGameMode(AbyssGameModeBase):
     95     id = GameModeID.TWO_PLAYER
     96     allowed_ships_list_id = 233
     97     content_type = abyss.const.TWO_PLAYER_DESTROYERS
     98     max_players = 2
     99     key_stack_size = 2
    100     ship_restriction_error_id = Error.INVALID_SHIP_TYPE_TWO_PLAYER
    101     should_jump_on_deploy = False
    102     jump_description_label = 'UI/Abyss/AbyssTwoPlayerEntranceShortDescription'
    103 
    104 
    105 class UnknownGameMode(AbyssGameModeBase):
    106     id = GameModeID.UNKNOWN
    107     allowed_ships_list_id = -1
    108     content_type = -1
    109     max_players = -1
    110     key_stack_size = -1
    111     ship_restriction_error_id = -1
    112     should_jump_on_deploy = False
    113     jump_description_label = 'UI/Abyss/AbyssFleetEntranceShortDescription'
    114 
    115 
    116 def get_game_mode(game_mode_id):
    117     if game_mode_id == GameModeID.SOLO:
    118         return AbyssSoloGameMode()
    119     if game_mode_id == GameModeID.COOP:
    120         return AbyssCoOpGameMode()
    121     if game_mode_id == GameModeID.TWO_PLAYER:
    122         return AbyssTwoPlayerGameMode()
    123     if game_mode_id == GameModeID.UNKNOWN:
    124         return UnknownGameMode()