def main():
    steam_path = "steam/"

    steamworksparser.Settings.fake_gameserver_interfaces = True
    ___parser = steamworksparser.parse(steam_path)

    interfaces.main(___parser)
    constants.main(___parser)
    enums.main(___parser)
    structs.main(___parser)
    typedefs.main(___parser)
Example #2
0
def main():
    if len(sys.argv) == 2:
        path = sys.argv[1]
    elif len(sys.argv) == 1:
        path = "steam"
    else:
        print("Usage: Steamworks.NET_CodeGen.py [path/to/sdk/public/steam]")
        print("       If a path is not included then a steam/ folder must exist within the cwd.")
        return

    steamworksparser.Settings.fake_gameserver_interfaces = True
    ___parser = steamworksparser.parse(path)

    interfaces.main(___parser)
    constants.main(___parser)
    enums.main(___parser)
    structs.main(___parser)
    typedefs.main(___parser)
    output_dummy_files.main()
Example #3
0
    if field.arraysize and fieldtype == "string[]":
        lines.append("\t\tprivate byte[] " + field.name + "_;")
        lines.append("\t\tpublic string " + field.name + comment)
        lines.append("\t\t{")
        lines.append("\t\t\tget { return InteropHelp.ByteArrayToStringUTF8(" + field.name + "_); }")
        lines.append("\t\t\tset { InteropHelp.StringToByteArrayUTF8(value, " + field.name + "_, " + constantsstr + field.arraysize + "); }")
        lines.append("\t\t}")
    else:
        lines.append("\t\tpublic " + fieldtype + " " + field.name + ";" + comment)

    return lines

def insert_constructors(name):
    lines = []
    if name == "MatchMakingKeyValuePair_t":
        lines.append("\t\tMatchMakingKeyValuePair_t(string strKey, string strValue) {")
        lines.append("\t\t\tm_szKey = strKey;")
        lines.append("\t\t\tm_szValue = strValue;")
        lines.append("\t\t}")
        lines.append("")

    return lines

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("TODO: Usage Instructions")
        exit()

    steamworksparser.Settings.fake_gameserver_interfaces = True
    main(steamworksparser.parse(sys.argv[1]))
            state = State()
            print("[INFO] Parsing Interface: {}".format(interface.name))
            state.interfacename = interface.name[1:]
            if not state.LoadConfig(configDir):
                print_warning(
                    "Interface config does not exist: {}.json".format(
                        state.interfacename))
                continue
            state.ParseConstants()
            state.ParseVariables()
            state.ParseOnEnableCode()
            state.ParseExtraFunctions()
            state.ParseFunctions(interface)

            state.ParseCallbacks(f.callbacks)

            state.OutputCSharpFile(outputDir)


if __name__ == '__main__':
    if len(sys.argv) != 4:
        print(
            ' generate.py "path/to/sdk/public/steam" "configDir/" "outputDir/"'
        )
        exit()

    steamSDKPath = sys.argv[1]
    configDir = sys.argv[2]
    outputDir = sys.argv[3]
    main(steamworksparser.parse(steamSDKPath), configDir, outputDir)
                    line += value
                if field.c.rawlinecomment:
                    line += field.c.rawlinecomment
                lines.append(line)

            for comment in enum.endcomments.rawprecomments:
                if type(comment) is steamworksparser.BlankLine:
                    lines.append("")
                else:
                    lines.append("\t" + comment)

            lines.append("\t}")
            lines.append("")

    with open("autogen/SteamEnums.cs", "wb") as out:
        with open("header.txt", "r") as f:
            out.write(bytes(f.read(), "utf-8"))
        for line in lines:
            out.write(bytes(line + "\n", "utf-8"))
        out.write(bytes("}\n\n", "utf-8"))
        out.write(bytes("#endif // !DISABLESTEAMWORKS\n", "utf-8"))

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("TODO: Usage Instructions")
        exit()

    steamworksparser.Settings.fake_gameserver_interfaces = True
    main(steamworksparser.parse(sys.argv[1]))
Example #6
0
            return

        for interface in f.interfaces:
            with open(configDir + '/' + interface.name[1:] + '.json',
                      'w') as out:
                out.write('{\n')
                out.write('\t"functions":\n')
                out.write('\t[\n')
                for func in interface.functions:
                    out.write('\t\t{\n')
                    out.write('\t\t\t"name": "{}"\n'.format(func.name))
                    out.write('\t\t},\n')
                out.write('\t]\n')
                out.write('}\n')

        print('Success!')
        return

    print("[ERROR] Could not find file: {}".format(headerName))


if __name__ == '__main__':
    if len(sys.argv) != 4:
        print(' generate.py "path/to/sdk/public/steam" "isteam*.h" "configs"')
        exit()

    steamSDKPath = sys.argv[1]
    headerName = sys.argv[2]
    configDir = sys.argv[3]
    main(steamworksparser.parse(steamSDKPath), headerName, configDir)
Example #7
0
def main():
    entrypoints = []
    cppfilenames = []

    try:
        os.makedirs("wrapper/")
    except OSError:
        pass

    with open("wrapper/steam_api_c.h", "w") as header:
    	header.write(CPP_HEADER)
    	header.write("#pragma once\n\n")
    	header.write("#include \"CSteamworks.h\"\n\n")

    # steamworksparser.Settings.warn_utf8bom = True
    # steamworksparser.Settings.warn_includeguardname = True
    # steamworksparser.Settings.print_unuseddefines = True
    steamworksparser.Settings.fake_gameserver_interfaces = True
    parser = steamworksparser.parse("steam/")

    for f in parser.files:
        if f.name in g_SkippedFiles:
            continue

        print("File: " + f.name)
        if not f.interfaces:
        	continue
        	
        with open("wrapper/" + os.path.splitext(f.name)[0] + ".cpp", "w") as out, open ("wrapper/steam_api_c.h", "a") as header:
            out.write(CPP_HEADER)
            cppfilenames.append(os.path.splitext(f.name)[0] + ".cpp")

            lastIfBlock = None
            for i in f.interfaces:
                print(" - " + i.name)
                for func in i.functions:
                    if lastIfBlock is not None and lastIfBlock != func.ifstatements:
                        out.write("#endif\n")
                        lastIfBlock = None

                    if func.ifstatements and func.ifstatements != lastIfBlock:
                        out.write("#if " + func.ifstatements + "\n")
                        lastIfBlock = func.ifstatements

                    args = ""
                    argnames = ""
                    for arg in func.args:
                        argtype = g_TypeDict.get(arg.type, arg.type)

                        spaceHACK = " "
                        if argtype.endswith("*") and " " in argtype:
                            spaceHACK = ""  # TODO: REMOVE THIS HACK
                        args += argtype + spaceHACK + arg.name
                        if arg.default:
                            args += " = " + arg.default
                        args += ", "
                        argnames += arg.name + ", "
                    args = args[:-2]
                    argnames = argnames[:-2]

                    returntype = func.returntype
                    ConvertToUint64 = ""
                    if returntype == "CSteamID":
                        returntype = "SteamID_t"
                        ConvertToUint64 = ".ConvertToUint64()"

                    # If a function overrides another with the same name but different args, we fix it up here so that it can be properly exposed.
                    strEntryPoint = i.name + "_" + func.name
                    if strEntryPoint in entrypoints:
                        strEntryPoint += "_"
                    entrypoints.append(strEntryPoint)

                    declaration = "SB_API " + returntype + " S_CALLTYPE " + strEntryPoint + "(" + args + ")"
                    header.write(declaration + ";\n")
                    out.write(declaration + " {\n")
                    out.write("\treturn " + i.name[1:] + "()->" + func.name + "(" + argnames + ")" + ConvertToUint64 + ";\n")
                    out.write("}\n")
                    out.write("\n")

            if lastIfBlock:
                out.write("#endif\n")

    if cppfilenames:
        with open("wrapper/unitybuild.cpp", "w") as out:
            out.write(CPP_HEADER)
            for filename in cppfilenames:
                out.write("#include \"" + filename + "\"\n")