Made compiling process Python 3 compatible

This commit is contained in:
Sworddragon 2011-01-06 00:51:31 +01:00 committed by oy
parent b90a015daf
commit 4ff61fcdaa
5 changed files with 61 additions and 63 deletions

View file

@ -23,23 +23,22 @@ def create_flags_table(names):
return lines
def EmitEnum(names, num):
print "enum"
print "{"
print "\t%s=0,"%names[0]
print("enum")
print("{")
print("\t%s=0," % names[0])
for name in names[1:]:
print "\t%s,"%name
print "\t%s" % num
print "};"
print("\t%s," % name)
print("\t%s" % num)
print("};")
def EmitFlags(names, num):
print "enum"
print "{"
print("enum")
print("{")
i = 0
for name in names:
print "\t%s = 1<<%d," % (name,i)
print("\t%s = 1<<%d," % (name,i))
i += 1
print "};"
print("};")
gen_network_header = False
gen_network_source = False
@ -56,27 +55,27 @@ if "server_content_header" in sys.argv: gen_server_content_header = True
if "server_content_source" in sys.argv: gen_server_content_source = True
if gen_client_content_header:
print "#ifndef CLIENT_CONTENT_HEADER"
print "#define CLIENT_CONTENT_HEADER"
print("#ifndef CLIENT_CONTENT_HEADER")
print("#define CLIENT_CONTENT_HEADER")
if gen_server_content_header:
print "#ifndef SERVER_CONTENT_HEADER"
print "#define SERVER_CONTENT_HEADER"
print("#ifndef SERVER_CONTENT_HEADER")
print("#define SERVER_CONTENT_HEADER")
if gen_client_content_header or gen_server_content_header:
# emit the type declarations
contentlines = file("datasrc/content.py").readlines()
contentlines = open("datasrc/content.py", "rb").readlines()
order = []
for line in contentlines:
line = line.strip()
line = line.decode("iso8859-1").strip()
if line[:6] == "class " and '(Struct)' in line:
order += [line.split()[1].split("(")[0]]
for name in order:
EmitTypeDeclaration(content.__dict__[name])
# the container pointer
print 'extern DATACONTAINER *g_pData;';
print('extern DATACONTAINER *g_pData;')
# enums
EmitEnum(["IMAGE_%s"%i.name.value.upper() for i in content.container.images.items], "NUM_IMAGES")
@ -85,41 +84,41 @@ if gen_client_content_header or gen_server_content_header:
if gen_client_content_source or gen_server_content_source:
if gen_client_content_source:
print '#include "client_data.h"'
print('#include "client_data.h"')
if gen_server_content_source:
print '#include "server_data.h"'
print('#include "server_data.h"')
EmitDefinition(content.container, "datacontainer")
print 'DATACONTAINER *g_pData = &datacontainer;';
print('DATACONTAINER *g_pData = &datacontainer;')
# NETWORK
if gen_network_header:
print "#ifndef GAME_GENERATED_PROTOCOL_H"
print "#define GAME_GENERATED_PROTOCOL_H"
print network.RawHeader
print("#ifndef GAME_GENERATED_PROTOCOL_H")
print("#define GAME_GENERATED_PROTOCOL_H")
print(network.RawHeader)
for e in network.Enums:
for l in create_enum_table(["%s_%s"%(e.name, v) for v in e.values], 'NUM_%sS'%e.name): print l
print ""
for l in create_enum_table(["%s_%s"%(e.name, v) for v in e.values], 'NUM_%sS'%e.name): print(l)
print("")
for e in network.Flags:
for l in create_flags_table(["%s_%s" % (e.name, v) for v in e.values]): print l
print ""
for l in create_flags_table(["%s_%s" % (e.name, v) for v in e.values]): print(l)
print("")
for l in create_enum_table(["NETOBJ_INVALID"]+[o.enum_name for o in network.Objects], "NUM_NETOBJTYPES"): print l
print ""
for l in create_enum_table(["NETMSG_INVALID"]+[o.enum_name for o in network.Messages], "NUM_NETMSGTYPES"): print l
print ""
for l in create_enum_table(["NETOBJ_INVALID"]+[o.enum_name for o in network.Objects], "NUM_NETOBJTYPES"): print(l)
print("")
for l in create_enum_table(["NETMSG_INVALID"]+[o.enum_name for o in network.Messages], "NUM_NETMSGTYPES"): print(l)
print("")
for item in network.Objects + network.Messages:
for line in item.emit_declaration():
print line
print ""
print(line)
print("")
EmitEnum(["SOUND_%s"%i.name.value.upper() for i in content.container.sounds.items], "NUM_SOUNDS")
EmitEnum(["WEAPON_%s"%i.name.value.upper() for i in content.container.weapons.id.items], "NUM_WEAPONS")
print """
print("""
class CNetObjHandler
{
@ -147,9 +146,9 @@ public:
const char *FailedMsgOn();
};
"""
""")
print "#endif // GAME_GENERATED_PROTOCOL_H"
print("#endif // GAME_GENERATED_PROTOCOL_H")
if gen_network_source:
@ -228,13 +227,13 @@ if gen_network_source:
for l in lines:
print l
print(l)
if 0:
for item in network.Objects:
for line in item.emit_validate():
print line
print ""
print(line)
print("")
# create validate tables
lines = []
@ -271,8 +270,8 @@ if gen_network_source:
if 0:
for item in network.Messages:
for line in item.emit_unpack():
print line
print ""
print(line)
print("")
lines += ['static void *secure_unpack_invalid(CUnpacker *pUnpacker) { return 0; }']
lines += ['typedef void *(*SECUREUNPACKFUNC)(CUnpacker *pUnpacker);']
@ -313,7 +312,7 @@ if gen_network_source:
for l in lines:
print l
print(l)
if gen_client_content_header or gen_server_content_header:
print "#endif"
print("#endif")

View file

@ -169,7 +169,7 @@ class DataContainer(Struct):
self.weapons = Weapons()
def FileList(format, num):
return [format%(x+1) for x in xrange(0,num)]
return [format%(x+1) for x in range(0,num)]
container = DataContainer()
container.sounds.Add(SoundSet("gun_fire", FileList("audio/wp_gun_fire-%02d.wv", 3)))

View file

@ -1,4 +1,4 @@
import sys
GlobalIdCounter = 0
def GetID():
@ -33,7 +33,7 @@ class BaseType:
def __init__(self, type_name):
self._type_name = type_name
self._target_name = "INVALID"
self._id = GetID() # this is used to remeber what order the members have in structures etc
self._id = GetID() # this is used to remember what order the members have in structures etc
def Identifyer(self): return "x"+str(self._id)
def TargetName(self): return self._target_name
@ -57,18 +57,18 @@ class Struct(BaseType):
def __init__(self, type_name):
BaseType.__init__(self, type_name)
def Members(self):
def sorter(a,b):
return a.var.ID()-b.var.ID()
def sorter(a):
return a.var.ID()
m = []
for name in self.__dict__:
if name[0] == "_":
continue
m += [MemberType(name, self.__dict__[name])]
try:
m.sort(sorter)
m.sort(key = sorter)
except:
for v in m:
print v.name, v.var
print(v.name, v.var)
sys.exit(-1)
return m
@ -172,15 +172,15 @@ class Pointer(BaseType):
def EmitTypeDeclaration(root):
for l in root().EmitTypeDeclaration(""):
print l
print(l)
def EmitDefinition(root, name):
for l in root.EmitPreDefinition(name):
print l
print "%s %s = " % (root.TypeName(), name)
print(l)
print("%s %s = " % (root.TypeName(), name))
for l in root.EmitDefinition(name):
print l
print ";"
print(l)
print(";")
# Network stuff after this

View file

@ -4,7 +4,7 @@ Emotes = ["NORMAL", "PAIN", "HAPPY", "SURPRISE", "ANGRY", "BLINK"]
PlayerStates = ["UNKNOWN", "PLAYING", "IN_MENU", "CHATTING"]
GameFlags = ["TEAMS", "FLAGS"]
Emoticons = [str(x) for x in xrange(1,16)]
Emoticons = [str(x) for x in range(1,16)]
Powerups = ["HEALTH", "ARMOR", "WEAPON", "NINJA"]

View file

@ -26,12 +26,11 @@ def cstrip(lines):
f = ""
for filename in sys.argv[1:]:
f += cstrip([l.strip() for l in file(filename)])
f += cstrip([l.decode("iso8859-1").strip() for l in open(filename, "rb")])
hash = hashlib.md5(f).hexdigest().lower()[16:]
hash = hashlib.md5(f.encode()).hexdigest().lower()[16:]
# TODO: refactor hash that is equal to the 0.5 hash, remove when we
# TODO: remove when we don't need it any more
if hash == "026b8eceb4cdd369":
hash = "b67d1f1a1eea234e"
print '#define GAME_NETVERSION_HASH "%s"' % hash
print('#define GAME_NETVERSION_HASH "%s"' % hash)