Skip to content

Commit

Permalink
fixed so that the .dat-files are compiled into the exes
Browse files Browse the repository at this point in the history
  • Loading branch information
Magnus Auvinen committed Jul 24, 2007
1 parent 1acc309 commit 52c987b
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 24 deletions.
38 changes: 28 additions & 10 deletions default.bam
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ function dc_data(output, data, script)
return os.execute(dc_compiler .. " " .. data .. " " .. script .. " -d " .. output)
end

function dc_cdata(output, data, script)
print("dc_cdata " .. PathFilename(output) .. " = " .. PathFilename(data) .. " ~ " .. PathFilename(script))
return os.execute(dc_compiler .. " " .. data .. " " .. script .. " -c " .. output)
end

function Dat2c(datafile, sourcefile, arrayname)
datafile = Path(datafile)
sourcefile = Path(sourcefile)
Expand All @@ -77,15 +82,15 @@ function DataCompile(datafile, scriptfile, headerfile, sourcefile, outputdatafil
outputdatafile = Path(outputdatafile)
bam_add_job("dc_source", sourcefile, datafile, scriptfile)
bam_add_job("dc_header", headerfile, datafile, scriptfile)
bam_add_job("dc_data", outputdatafile, datafile, scriptfile)
bam_add_job("dc_cdata", outputdatafile, datafile, scriptfile)
bam_add_dependency(sourcefile, datafile)
bam_add_dependency(sourcefile, scriptfile)
bam_add_dependency(sourcefile, headerfile)
bam_add_dependency(headerfile, datafile)
bam_add_dependency(headerfile, scriptfile)
bam_add_dependency(outputdatafile, datafile)
bam_add_dependency(outputdatafile, scriptfile)
return {data = outputdatafile, header=headerfile, source=sourcefile}
return {cdata = outputdatafile, header=headerfile, source=sourcefile}
end

config_name = "debug"
Expand Down Expand Up @@ -117,19 +122,32 @@ baselib.apply(server_settings, "network")
settings.cc.includes:add("src")
settings.cc.includes:add("../baselib/src/external/zlib")

serverdata = DataCompile("datasrc/teewars.ds", "datasrc/server.dts", "src/game/server/data.h", "src/game/server/data/server_data.cpp", "data/server.dat")
clientdata = DataCompile("datasrc/teewars.ds", "datasrc/client.dts", "src/game/client/data.h", "src/game/client/data/client_data.cpp", "data/client.dat")
internal_clientdata = Dat2c("data/client.dat", "src/game/client/data/client_internal.cpp", "internal_client_data");
internal_serverdata = Dat2c("data/server.dat", "src/game/server/data/server_internal.cpp", "internal_server_data");
serverdata = DataCompile(
"datasrc/teewars.ds",
"datasrc/server.dts",
"src/game/server/data.h",
"src/game/server/data/server_data.cpp",
"src/game/server/data/server_internal.cpp")

clientdata = DataCompile(
"datasrc/teewars.ds",
"datasrc/client.dts",
"src/game/client/data.h",
"src/game/client/data/server_data.cpp",
"src/game/client/data/server_internal.cpp")

--clientdata = DataCompile("datasrc/teewars.ds", "datasrc/client.dts", "src/game/client/data.h", "src/game/client/data/client_data.cpp", "datasrc/client.dat")
--internal_clientdata = Dat2c("datasrc/client.dat", "src/game/client/data/client_internal.cpp", "internal_client_data");
--internal_serverdata = Dat2c("datasrc/server.dat", "src/game/server/data/server_internal.cpp", "internal_server_data");

function build(config)
engine = Compile(settings, Collect("src/engine/*.cpp"))
client = Compile(settings, Collect("src/engine/client/*.cpp", "src/engine/client/pnglite/*.c"))
server = Compile(settings, Collect("src/engine/server/*.cpp"))
masterserver = Compile(settings, Collect("src/mastersrv/*.cpp"))
game_shared = Compile(settings, Collect("src/game/*.cpp"))
game_client = Compile(settings, Collect("src/game/client/*.cpp"), clientdata.source, internal_clientdata)
game_server = Compile(settings, Collect("src/game/server/*.cpp"), serverdata.source, internal_serverdata)
game_client = Compile(settings, Collect("src/game/client/*.cpp"), clientdata.source, clientdata.cdata)
game_server = Compile(settings, Collect("src/game/server/*.cpp"), serverdata.source, serverdata.cdata)
editor = Compile(settings, Collect("src/editor/*.cpp"))

-- build tools
Expand All @@ -146,8 +164,8 @@ function build(config)
server_exe = Link(server_settings, "teewars_srv"..config_ext, engine, server, game_shared, game_server)
masterserver_exe = Link(server_settings, "mastersrv"..config_ext, masterserver, engine)

Target(PseudoTarget("client", client_exe, clientdata.data))
Target(PseudoTarget("server", server_exe, serverdata.data))
Target(PseudoTarget("client", client_exe))
Target(PseudoTarget("server", server_exe))
Target(PseudoTarget("masterserver", masterserver_exe))
Target(PseudoTarget("tools", tools))
end
Expand Down
47 changes: 38 additions & 9 deletions scripts/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,8 @@ def emit_header_code(self, out):
for s in self.structs:
s.emit_header_code(out)
print >>out, ""
print >>out, "data_container *load_data_container(const char *filename);"
print >>out, "data_container *load_data_from_file(const char *filename);"
print >>out, "data_container *load_data_from_memory(unsigned char *filename);"
print >>out, ""


Expand All @@ -485,9 +486,18 @@ def emit_source_code(self, out):
for s in self.structs:
s.emit_source_code(out)
print >>out, '''
data_container *load_data_container(const char *filename)
data_container *load_data_from_memory(unsigned char *mem)
{
/* patch all pointers */
data_container *con = (data_container*)mem;
patch_ptr_data_container(con, (char *)con);
return con;
}
data_container *load_data_from_file(const char *filename)
{
data_container *con = 0;
unsigned char *data = 0;
int size;
/* open file */
Expand All @@ -499,13 +509,11 @@ def emit_source_code(self, out):
fseek(f, 0, SEEK_SET);
/* allocate, read data and close file */
con = (data_container*)malloc(size);
fread(con, 1, size, f);
data = (unsigned char *)malloc(size);
fread(data, 1, size, f);
fclose(f);
/* patch all pointers */
patch_ptr_data_container(con, (char *)con);
return con;
return load_data_from_memory(data);
}
'''
Expand Down Expand Up @@ -571,6 +579,7 @@ def validate_values(values, check):
script_filename = sys.argv[2]

output_filename = 0
coutput_filename = 0
header_filename = 0
source_filename = 0

Expand All @@ -580,6 +589,8 @@ def validate_values(values, check):
source_filename = sys.argv[4]
elif sys.argv[3] == '-d':
output_filename = sys.argv[4]
elif sys.argv[3] == '-c':
coutput_filename = sys.argv[4]

srcdata = parse_file(input_filename)
script = parse_file(script_filename)
Expand All @@ -594,4 +605,22 @@ def validate_values(values, check):
if output_filename:
rawdata = translator.emit_data()
file(output_filename, "wb").write(rawdata)
#print "filesize:", len(rawdata)
if coutput_filename:
i = 0
rawdata = translator.emit_data()
f = file(coutput_filename, "w")

print >>f,"unsigned char internal_data[] = {"
print >>f,str(ord(rawdata[0])),
for d in rawdata[1:]:
s = ","+str(ord(d))
print >>f,s,
i += len(s)+1

if i >= 70:
print >>f,""
i = 0
print >>f,""
print >>f,"};"
print >>f,""
f.close()
2 changes: 1 addition & 1 deletion scripts/dat2c.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
data = file(sys.argv[1], "rb").read()

i = 0
print "const char", sys.argv[2], "[] = {"
print "unsigned char", sys.argv[2], "[] = {"
print str(ord(data[0])),
for d in data[1:]:
s = ","+str(ord(d))
Expand Down
4 changes: 3 additions & 1 deletion src/game/client/game_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,12 @@ static const int killmsg_max = 5;
killmsg killmsgs[killmsg_max];
static int killmsg_current = 0;

extern unsigned char internal_data[];

void modc_init()
{
// load the data container
data = load_data_container("data/client.dat");
data = load_data_from_memory(internal_data);

// load sounds
for(int s = 0; s < data->num_sounds; s++)
Expand Down
2 changes: 0 additions & 2 deletions src/game/client/mapres_tilemap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ void tilemap_render(float scale, int fg)
float frac = (1.0f/1024.0f);//2.0f; //2.0f;
float texsize = 1024.0f;
float nudge = 0.5f/texsize;
float s = 1.0f;

for(int y = 0; y < tmap->height; y++)
for(int x = 0; x < tmap->width; x++)
Expand Down Expand Up @@ -80,7 +79,6 @@ void tilemap_render(float scale, int fg)
int py0 = ty*(1024/16);
int px1 = (tx+1)*(1024/16)-1;
int py1 = (ty+1)*(1024/16)-1;
float z = -5.0f;

gfx_quads_setsubset(
nudge + px0/texsize+frac,
Expand Down
4 changes: 3 additions & 1 deletion src/game/server/game_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1652,9 +1652,11 @@ void mods_message(int msg, int client_id)
}
}

extern unsigned char internal_data[];

void mods_init()
{
data = load_data_container("data/server.dat");
data = load_data_from_memory(internal_data);
col_init(32);

int start, num;
Expand Down

0 comments on commit 52c987b

Please sign in to comment.