예제 #1
0
def write_library_constants():
    """Write libtcod constants into the tcod.constants module."""
    from tcod._libtcod import lib, ffi
    import tcod.color
    with open('tcod/constants.py', 'w') as f:
        f.write(CONSTANT_MODULE_HEADER)
        for name in dir(lib):
            value = getattr(lib, name)
            if name[:5] == 'TCOD_':
                if name.isupper():  # const names
                    f.write('%s = %r\n' % (name[5:], value))
            elif name.startswith('FOV'):  # fov const names
                f.write('%s = %r\n' % (name, value))
            elif name[:6] == 'TCODK_':  # key name
                f.write('KEY_%s = %r\n' % (name[6:], value))

        f.write('\n# --- colors ---\n')
        for name in dir(lib):
            if name[:5] != 'TCOD_':
                continue
            value = getattr(lib, name)
            if not isinstance(value, ffi.CData):
                continue
            if ffi.typeof(value) != ffi.typeof('TCOD_color_t'):
                continue
            color = tcod.color.Color._new_from_cdata(value)
            f.write('%s = %r\n' % (name[5:], color))
예제 #2
0
def write_library_constants():
    """Write libtcod constants into the tcod.constants module."""
    from tcod._libtcod import lib, ffi
    import tcod.color

    with open("tcod/constants.py", "w") as f:
        all_names = []
        f.write(CONSTANT_MODULE_HEADER)
        for name in dir(lib):
            value = getattr(lib, name)
            if name[:5] == "TCOD_":
                if name.isupper():  # const names
                    f.write("%s = %r\n" % (name[5:], value))
                    all_names.append(name[5:])
            elif name.startswith("FOV"):  # fov const names
                f.write("%s = %r\n" % (name, value))
                all_names.append(name)
            elif name[:6] == "TCODK_":  # key name
                f.write("KEY_%s = %r\n" % (name[6:], value))
                all_names.append("KEY_%s" % name[6:])

        f.write("\n# --- colors ---\n")
        for name in dir(lib):
            if name[:5] != "TCOD_":
                continue
            value = getattr(lib, name)
            if not isinstance(value, ffi.CData):
                continue
            if ffi.typeof(value) != ffi.typeof("TCOD_color_t"):
                continue
            color = tcod.color.Color._new_from_cdata(value)
            f.write("%s = %r\n" % (name[5:], color))
            all_names.append(name[5:])

        all_names = ",\n    ".join('"%s"' % name for name in all_names)
        f.write("\n__all__ = [\n    %s,\n]\n" % (all_names, ))

    with open("tcod/event_constants.py", "w") as f:
        all_names = []
        f.write(EVENT_CONSTANT_MODULE_HEADER)
        f.write("# --- SDL scancodes ---\n")
        f.write("%s\n_REVERSE_SCANCODE_TABLE = %s\n" %
                parse_sdl_attrs("SDL_SCANCODE", all_names))

        f.write("\n# --- SDL keyboard symbols ---\n")
        f.write("%s\n_REVERSE_SYM_TABLE = %s\n" %
                parse_sdl_attrs("SDLK", all_names))

        f.write("\n# --- SDL keyboard modifiers ---\n")
        f.write("%s\n_REVERSE_MOD_TABLE = %s\n" %
                parse_sdl_attrs("KMOD", all_names))

        f.write("\n# --- SDL wheel ---\n")
        f.write("%s\n_REVERSE_WHEEL_TABLE = %s\n" %
                parse_sdl_attrs("SDL_MOUSEWHEEL", all_names))
        all_names = ",\n    ".join('"%s"' % name for name in all_names)
        f.write("\n__all__ = [\n    %s,\n]\n" % (all_names, ))