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()