from .. import build_module_config, parse_modules from ..admin import section from ..effects.sprites import set_player_sprite from ..game_status import get_status, GameStatus, set_status from ..game_status import strings_module as strings_game_status from ..jail_menu import new_available_option from ..leaders import is_leader from ..overlays import show_overlay from ..players import player_manager, tell MIN_PLAYERS_IN_GAME = 2 MAX_PLAYERS_NAMES_LIST_LENGTH = 36 MAX_PLAYER_NAME_LENGTH = 10 strings_module = build_module_strings('games/common') strings_game_captions = BaseLangStrings(Path(info.basename) / "games") config_manager = build_module_config('games/common') config_manager.controlled_cvar( bool_handler, "enabled", default=1, description="Enable/Disable !games feature", ) config_manager.controlled_cvar( int_handler, "min_players_number", default=2, description="Minimum number of prisoners to be able to " "launch the game with", )
def build_module_strings(module): return BaseLangStrings(Path(info.basename) / 'modules' / module)
def reload_map_info(): MapData.reset() mapdata_json = MAPDATA_PATH / '{0}.json'.format(global_vars.map_name) if not mapdata_json.isfile(): return with open(mapdata_json) as f: try: data = json.load(f) except: raise CorruptMapData( "Can't load JSON for {0}!".format(mapdata_json)) for section_name, section in data.items(): if section_name == 'settings': for output_name, connections in section.get('connections', {}).items(): MapData.connections[output_name] = [] for connection_json in connections: connection = new_output_connection(connection_json) MapData.connections[output_name].append(connection) continue if section_name == 'areas': for area_name, area in section.items(): MapData.areas[area_name] = Area() for structure in area['structures']: sides = ConvexArea([ ConvexArea.ConvexAreaFace( map( lambda p: Point(map(float, p.split())), side[1:-1].split(') (') # TODO: Use regex here )) for side in structure ]) MapData.areas[area_name].structures.append(sides) continue if section_name == 'spawnpoints': for spawnpoint_name, spawnpoint in section.items(): origin = tuple(map(float, spawnpoint['origin'].split())) angles = tuple(map(float, spawnpoint['angles'].split())) MapData.spawnpoints[spawnpoint_name] = Spawnpoint( origin, angles) continue if section_name == 'lrs': for game_name, game in section.items(): MapData.lrs[game_name] = LRGame() MapData.lrs[game_name].module = game['module'] for output_name, connections in game['connections'].items(): for connection_json in connections: MapData.lrs[game_name].set_action( output_name, connection_json) for spawnpoint_name in game['spawnpoints']: MapData.lrs[game_name].spawnpoints.append(spawnpoint_name) continue if section_name == 'games': for game_name, game in section.items(): MapData.games[game_name] = Game() MapData.games[game_name].module = game['module'] MapData.games[game_name].slot_id = game['slot_id'] MapData.games[game_name].caption = game.get('caption') for output_name, connections in game['connections'].items(): for connection_json in connections: MapData.games[game_name].set_action( output_name, connection_json) for team, spawnpoints in game['spawnpoints'].items(): for spawnpoint_name in spawnpoints: MapData.games[game_name].add_spawnpoint( team, spawnpoint_name) if not game['areas']: raise CorruptMapData( "Game '{0}' lacks its game areas".format(game_name)) for area in game['areas']: MapData.games[game_name].add_area(area['areatype'], area['name']) for setting in _game_settings.values(): default_value = setting['default'] map_value = game['settings'].get(setting['fgd'], None) if map_value is None: value = default_value else: try: value = value_from_string(map_value, setting['type']) except TypeError: warn( InvalidValue( "Invalid setting value for '{0}': " "'{1}'".format(setting['name'], map_value))) value = default_value MapData.games[game_name][setting['name']] = value continue if section_name == 'cages': for cage_name in section: MapData.cages.append(cage_name) continue if section_name == 'jails': for jail_name in section: MapData.jails.append(jail_name) continue if section_name == 'shop_windows': MapData.shop_windows.extend(section) continue global _map_strings path = MAP_TRANSLATION_PATH / '{0}.ini'.format(global_vars.map_name) if path.isfile(): _map_strings = BaseLangStrings( Path(info.basename) / "maps" / global_vars.map_name) else: _map_strings = None
from ..info import info if GAME_NAME in ('csgo', ): COLOR_SCHEME = { 'color_tag': "\x01", 'color_highlight': "\x10", 'color_default': "\x01", 'color_error': "\x02", 'color_warning': "\x02", 'color_credits': "\x04", } else: # Map color variables in translation files to actual Color instances COLOR_SCHEME = { 'color_tag': Color(242, 242, 242), 'color_highlight': Color(255, 137, 0), 'color_default': Color(242, 242, 242), 'color_error': Color(255, 54, 54), 'color_warning': Color(255, 54, 54), 'color_credits': Color(0, 220, 55), } strings_common = BaseLangStrings(Path(info.basename) / "common") def build_module_strings(module): return BaseLangStrings(Path(info.basename) / 'modules' / module)
EDITOR_LINE_COLOR = GREEN EDITOR_LINE_MODEL = Model('sprites/laserbeam.vmt') EDITOR_LINE_WIDTH = 2 EDITOR_STEP_UNITS = 8 INSPECT_LINE_COLOR = BLUE INSPECT_LINE_MODEL = Model('sprites/laserbeam.vmt') INSPECT_LINE_WIDTH = 2 HIGHLIGHT_LINE_COLOR = ORANGE HIGHLIGHT_LINE_MODEL = Model('sprites/laserbeam.vmt') HIGHLIGHT_LINE_WIDTH = 4 MAPDATA_PATH = GAME_PATH / "mapdata" / "limit_zones" strings = BaseLangStrings(info.basename) MSG_ERR_INVALID_COORDINATES = SayText2(strings['error invalid_coordinates']) MSG_LZ_END_WRONG_ORDER = SayText2(strings['lz_end wrong_order']) MSG_LZ_START_WRONG_ORDER = SayText2(strings['lz_start wrong_order']) MSG_LZ_INSPECT_START = SayText2(strings['lz_inspect start']) MSG_LZ_INSPECT_STOP = SayText2(strings['lz_inspect stop']) MSG_ERR_NONE_HIGHLIGHTED = SayText2(strings['error none_highlighted']) MSG_ERR_INVALID_ATTACH_TO_ARG = SayText2( strings['error invalid_attach_to_arg']) class IncorrectEditOrder(Exception): pass