Пример #1
0
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",
)
Пример #2
0
def build_module_strings(module):
    return BaseLangStrings(Path(info.basename) / 'modules' / module)
Пример #3
0
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
Пример #4
0
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