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