diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2010-05-29 07:25:38 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2010-05-29 07:25:38 +0000 |
| commit | 72c06a258940696093f255fb1061beb58e1cdd0b (patch) | |
| tree | 36b9a7712eec2d4f07837eab9c38ef1c5af85319 /src/tools | |
| parent | e56feb597bc743677633432f77513b02907fd169 (diff) | |
| download | zcatch-72c06a258940696093f255fb1061beb58e1cdd0b.tar.gz zcatch-72c06a258940696093f255fb1061beb58e1cdd0b.zip | |
copied refactor to trunk
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/crapnet.cpp | 204 | ||||
| -rw-r--r-- | src/tools/dilate.c | 2 | ||||
| -rw-r--r-- | src/tools/fake_server.c | 232 | ||||
| -rw-r--r-- | src/tools/fake_server.cpp | 211 | ||||
| -rw-r--r-- | src/tools/map_resave.c | 36 | ||||
| -rw-r--r-- | src/tools/map_resave.cpp | 44 | ||||
| -rw-r--r-- | src/tools/tileset_borderfix.c | 2 |
7 files changed, 359 insertions, 372 deletions
diff --git a/src/tools/crapnet.cpp b/src/tools/crapnet.cpp index 888f3b2e..e05cc237 100644 --- a/src/tools/crapnet.cpp +++ b/src/tools/crapnet.cpp @@ -1,167 +1,167 @@ -/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ +// copyright (c) 2007 magnus auvinen, see licence.txt for more info #include <base/system.h> #include <cstdlib> -struct PACKET +struct CPacket { - PACKET *prev; - PACKET *next; + CPacket *m_pPrev; + CPacket *m_pNext; - NETADDR send_to; - int64 timestamp; - int id; - int data_size; - char data[1]; + NETADDR m_SendTo; + int64 m_Timestamp; + int m_Id; + int m_DataSize; + char m_aData[1]; }; -static PACKET *first = (PACKET *)0; -static PACKET *last = (PACKET *)0; -static int current_latency = 0; +static CPacket *m_pFirst = (CPacket *)0; +static CPacket *m_pLast = (CPacket *)0; +static int m_CurrentLatency = 0; -struct PINGCONFIG +struct CPingConfig { - int base; - int flux; - int spike; - int loss; - int delay; - int delay_freq; + int m_Base; + int m_Flux; + int m_Spike; + int m_Loss; + int m_Delay; + int m_DelayFreq; }; -static PINGCONFIG config_pings[] = { +static CPingConfig m_aConfigPings[] = { // base flux spike loss delay delayfreq {0, 0, 0, 0, 0, 0}, {40, 20, 100, 0, 0, 0}, {140, 40, 200, 0, 0, 0}, }; -static int config_numpingconfs = sizeof(config_pings)/sizeof(PINGCONFIG); -static int config_interval = 10; /* seconds between different pingconfigs */ -static int config_log = 0; -static int config_reorder = 0; +static int m_ConfigNumpingconfs = sizeof(m_aConfigPings)/sizeof(CPingConfig); +static int m_ConfigInterval = 10; // seconds between different pingconfigs +static int m_ConfigLog = 0; +static int m_ConfigReorder = 0; -int run(int port, NETADDR dest) +void Run(int Port, NETADDR Dest) { - NETADDR src = {NETTYPE_IPV4, {0,0,0,0},port}; - NETSOCKET socket = net_udp_create(src); + NETADDR Src = {NETTYPE_IPV4, {0,0,0,0}, Port}; + NETSOCKET Socket = net_udp_create(Src); - char buffer[1024*2]; - int id = 0; - int delaycounter = 0; + char aBuffer[1024*2]; + int Id = 0; + int Delaycounter = 0; while(1) { - static int lastcfg = 0; - int n = ((time_get()/time_freq())/config_interval) % config_numpingconfs; - PINGCONFIG ping = config_pings[n]; + static int Lastcfg = 0; + int n = ((time_get()/time_freq())/m_ConfigInterval) % m_ConfigNumpingconfs; + CPingConfig Ping = m_aConfigPings[n]; - if(n != lastcfg) + if(n != Lastcfg) dbg_msg("crapnet", "cfg = %d", n); - lastcfg = n; + Lastcfg = n; // handle incomming packets while(1) { // fetch data - int data_trash = 0; - NETADDR from; - int bytes = net_udp_recv(socket, &from, buffer, 1024*2); - if(bytes <= 0) + int DataTrash = 0; + NETADDR From; + int Bytes = net_udp_recv(Socket, &From, aBuffer, 1024*2); + if(Bytes <= 0) break; - if((rand()%100) < ping.loss) // drop the packet + if((rand()%100) < Ping.m_Loss) // drop the packet { - if(config_log) + if(m_ConfigLog) dbg_msg("crapnet", "dropped packet"); continue; } // create new packet - PACKET *p = (PACKET *)mem_alloc(sizeof(PACKET)+bytes, 1); + CPacket *p = (CPacket *)mem_alloc(sizeof(CPacket)+Bytes, 1); - if(net_addr_comp(&from, &dest) == 0) - p->send_to = src; // from the server + if(net_addr_comp(&From, &Dest) == 0) + p->m_SendTo = Src; // from the server else { - src = from; // from the client - p->send_to = dest; + Src = From; // from the client + p->m_SendTo = Dest; } // queue packet - p->prev = last; - p->next = 0; - if(last) - last->next = p; + p->m_pPrev = m_pLast; + p->m_pNext = 0; + if(m_pLast) + m_pLast->m_pNext = p; else { - first = p; - last = p; + m_pFirst = p; + m_pLast = p; } - last = p; + m_pLast = p; // set data in packet - p->timestamp = time_get(); - p->data_size = bytes; - p->id = id++; - mem_copy(p->data, buffer, bytes); + p->m_Timestamp = time_get(); + p->m_DataSize = Bytes; + p->m_Id = Id++; + mem_copy(p->m_aData, aBuffer, Bytes); - if(id > 20 && bytes > 6 && data_trash) + if(Id > 20 && Bytes > 6 && DataTrash) { - p->data[6+(rand()%(bytes-6))] = rand()&255; // modify a byte + p->m_aData[6+(rand()%(Bytes-6))] = rand()&255; // modify a byte if((rand()%10) == 0) { - p->data_size -= rand()%32; - if(p->data_size < 6) - p->data_size = 6; + p->m_DataSize -= rand()%32; + if(p->m_DataSize < 6) + p->m_DataSize = 6; } } - if(delaycounter <= 0) + if(Delaycounter <= 0) { - if(ping.delay) - p->timestamp += (time_freq()*1000)/ping.delay; - delaycounter = ping.delay_freq; + if(Ping.m_Delay) + p->m_Timestamp += (time_freq()*1000)/Ping.m_Delay; + Delaycounter = Ping.m_DelayFreq; } - delaycounter--; + Delaycounter--; - if(config_log) - dbg_msg("crapnet", "<< %08d %d.%d.%d.%d:%5d (%d)", p->id, from.ip[0], from.ip[1], from.ip[2], from.ip[3], from.port, p->data_size); + if(m_ConfigLog) + dbg_msg("crapnet", "<< %08d %d.%d.%d.%d:%5d (%d)", p->m_Id, From.ip[0], From.ip[1], From.ip[2], From.ip[3], From.port, p->m_DataSize); } // /*while(1) {*/ - PACKET *p = 0; - PACKET *next = first; + CPacket *p = 0; + CPacket *pNext = m_pFirst; while(1) { - p = next; + p = pNext; if(!p) break; - next = p->next; + pNext = p->m_pNext; - if((time_get()-p->timestamp) > current_latency) + if((time_get()-p->m_Timestamp) > m_CurrentLatency) { - char flags[] = " "; + char aFlags[] = " "; - if(config_reorder && (rand()%2) == 0 && p->next) + if(m_ConfigReorder && (rand()%2) == 0 && p->m_pNext) { - flags[0] = 'R'; - p = first->next; + aFlags[0] = 'R'; + p = m_pFirst->m_pNext; } - if(p->next) - p->next->prev = p->prev; + if(p->m_pNext) + p->m_pNext->m_pPrev = p->m_pPrev; else - last = p->prev; + m_pLast = p->m_pPrev; - if(p->prev) - p->prev->next = p->next; + if(p->m_pPrev) + p->m_pPrev->m_pNext = p->m_pNext; else - first = p->next; + m_pFirst = p->m_pNext; - /*PACKET *cur = first; + /*CPacket *cur = first; while(cur) { dbg_assert(cur != p, "p still in list"); @@ -170,27 +170,27 @@ int run(int port, NETADDR dest) // send and remove packet //if((rand()%20) != 0) // heavy packetloss - net_udp_send(socket, &p->send_to, p->data, p->data_size); + net_udp_send(Socket, &p->m_SendTo, p->m_aData, p->m_DataSize); // update lag - double flux = rand()/(double)RAND_MAX; - int ms_spike = ping.spike; - int ms_flux = ping.flux; - int ms_ping = ping.base; - current_latency = ((time_freq()*ms_ping)/1000) + (int64)(((time_freq()*ms_flux)/1000)*flux); // 50ms + double Flux = rand()/(double)RAND_MAX; + int MsSpike = Ping.m_Spike; + int MsFlux = Ping.m_Flux; + int MsPing = Ping.m_Base; + m_CurrentLatency = ((time_freq()*MsPing)/1000) + (int64)(((time_freq()*MsFlux)/1000)*Flux); // 50ms - if(ms_spike && (p->id%100) == 0) + if(MsSpike && (p->m_Id%100) == 0) { - current_latency += (time_freq()*ms_spike)/1000; - flags[1] = 'S'; + m_CurrentLatency += (time_freq()*MsSpike)/1000; + aFlags[1] = 'S'; } - if(config_log) + if(m_ConfigLog) { - dbg_msg("crapnet", ">> %08d %d.%d.%d.%d:%5d (%d) %s", p->id, - p->send_to.ip[0], p->send_to.ip[1], - p->send_to.ip[2], p->send_to.ip[3], - p->send_to.port, p->data_size, flags); + dbg_msg("crapnet", ">> %08d %d.%d.%d.%d:%5d (%d) %s", p->m_Id, + p->m_SendTo.ip[0], p->m_SendTo.ip[1], + p->m_SendTo.ip[2], p->m_SendTo.ip[3], + p->m_SendTo.port, p->m_DataSize, aFlags); } @@ -202,10 +202,10 @@ int run(int port, NETADDR dest) } } -int main(int argc, char **argv) +int main(int argc, char **argv) // ignore_convention { - NETADDR a = {NETTYPE_IPV4, {127,0,0,1},8303}; + NETADDR Addr = {NETTYPE_IPV4, {127,0,0,1},8303}; dbg_logger_stdout(); - run(8302, a); + Run(8302, Addr); return 0; } diff --git a/src/tools/dilate.c b/src/tools/dilate.c index 57dce705..a8b28fc4 100644 --- a/src/tools/dilate.c +++ b/src/tools/dilate.c @@ -1,6 +1,6 @@ /* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -#include "../engine/external/pnglite/pnglite.c" +#include "./engine/external/pnglite/pnglite.c" typedef struct pixel_t { diff --git a/src/tools/fake_server.c b/src/tools/fake_server.c deleted file mode 100644 index 04eeac4d..00000000 --- a/src/tools/fake_server.c +++ /dev/null @@ -1,232 +0,0 @@ -/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -#include <base/system.h> -#include <engine/e_config.h> -#include <engine/e_network.h> -#include <mastersrv/mastersrv.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -/* - 32 version - 64 servername - 32 mapname - 2 gametype - 2 flags - 4 progression - 3 num players - 3 max players - { - 48 name - 6 score - } * players - - 111111111122222222223333333333444444444 -123456789012345678901234567890123456789012345678 -0.3 2d82e361de24cb25 -my own private little server -magnus.auvinen@teeworlds.somehost-strage-host.com -*/ - -NETSERVER *net; - -int progression = 50; -int game_type = 0; -int flags = 0; - -const char *version = "0.3.0 2d82e361de24cb25"; -const char *map = "somemap"; -const char *server_name = "unnamed server"; -NETADDR master_servers[16] = {{0,{0},0}}; -int num_masters = 0; - -const char *player_names[16] = {0}; -int player_scores[16] = {0}; -int num_players = 0; -int max_players = 0; - - - -static void send_heartbeats() -{ - static unsigned char data[sizeof(SERVERBROWSE_HEARTBEAT) + 2]; - NETCHUNK packet; - int i; - - mem_copy(data, SERVERBROWSE_HEARTBEAT, sizeof(SERVERBROWSE_HEARTBEAT)); - - packet.client_id = -1; - packet.flags = NETSENDFLAG_CONNLESS; - packet.data_size = sizeof(SERVERBROWSE_HEARTBEAT) + 2; - packet.data = &data; - - /* supply the set port that the master can use if it has problems */ - data[sizeof(SERVERBROWSE_HEARTBEAT)] = 0; - data[sizeof(SERVERBROWSE_HEARTBEAT)+1] = 0; - - for(i = 0; i < num_masters; i++) - { - packet.address = master_servers[i]; - netserver_send(net, &packet); - } -} - -char infomsg[1024]; -int infomsg_size; - -static void writestr(const char *str) -{ - int l = strlen(str)+1; - memcpy(&infomsg[infomsg_size], str, l); - infomsg_size += l; -} - -static void writeint(int i) -{ - char buf[64]; - sprintf(buf, "%d", i); - writestr(buf); -} - -static void build_infomessage() -{ - int i; - infomsg_size = sizeof(SERVERBROWSE_OLD_INFO); - memcpy(infomsg, SERVERBROWSE_OLD_INFO, infomsg_size); - - writestr(version); - writestr(server_name); - writestr(map); - writeint(game_type); - writeint(flags); - writeint(progression); - writeint(num_players); - writeint(max_players); - for(i = 0; i < num_players; i++) - { - writestr(player_names[i]); - writeint(player_scores[i]); - } -} - -static void send_serverinfo(NETADDR *addr) -{ - NETCHUNK p; - p.client_id = -1; - p.address = *addr; - p.flags = NETSENDFLAG_CONNLESS; - p.data_size = infomsg_size; - p.data = infomsg; - netserver_send(net, &p); -} - -static void send_fwcheckresponse(NETADDR *addr) -{ - NETCHUNK p; - p.client_id = -1; - p.address = *addr; - p.flags = NETSENDFLAG_CONNLESS; - p.data_size = sizeof(SERVERBROWSE_FWRESPONSE); - p.data = SERVERBROWSE_FWRESPONSE; - netserver_send(net, &p); -} - -static int run() -{ - int64 next_heartbeat = 0; - NETADDR bindaddr = {NETTYPE_IPV4, {0},0}; - net = netserver_open(bindaddr, 0, 0); - if(!net) - return -1; - - while(1) - { - NETCHUNK p; - netserver_update(net); - while(netserver_recv(net, &p)) - { - if(p.client_id == -1) - { - if(p.data_size == sizeof(SERVERBROWSE_OLD_GETINFO) && - memcmp(p.data, SERVERBROWSE_OLD_GETINFO, sizeof(SERVERBROWSE_OLD_GETINFO)) == 0) - { - send_serverinfo(&p.address); - } - else if(p.data_size == sizeof(SERVERBROWSE_FWCHECK) && - memcmp(p.data, SERVERBROWSE_FWCHECK, sizeof(SERVERBROWSE_FWCHECK)) == 0) - { - send_fwcheckresponse(&p.address); - } - } - } - - /* send heartbeats if needed */ - if(next_heartbeat < time_get()) - { - next_heartbeat = time_get()+time_freq()*(15+(rand()%15)); - send_heartbeats(); - } - - thread_sleep(100); - } -} - -int main(int argc, char **argv) -{ - net_init(); - - while(argc) - { - if(strcmp(*argv, "-m") == 0) - { - argc--; argv++; - net_host_lookup(*argv, &master_servers[num_masters], NETTYPE_IPV4); - argc--; argv++; - master_servers[num_masters].port = atoi(*argv); - num_masters++; - } - else if(strcmp(*argv, "-p") == 0) - { - argc--; argv++; - player_names[num_players++] = *argv; - argc--; argv++; - player_scores[num_players] = atoi(*argv); - } - else if(strcmp(*argv, "-a") == 0) - { - argc--; argv++; - map = *argv; - } - else if(strcmp(*argv, "-x") == 0) - { - argc--; argv++; - max_players = atoi(*argv); - } - else if(strcmp(*argv, "-t") == 0) - { - argc--; argv++; - game_type = atoi(*argv); - } - else if(strcmp(*argv, "-g") == 0) - { - argc--; argv++; - progression = atoi(*argv); - } - else if(strcmp(*argv, "-f") == 0) - { - argc--; argv++; - flags = atoi(*argv); - } - else if(strcmp(*argv, "-n") == 0) - { - argc--; argv++; - server_name = *argv; - } - - argc--; argv++; - } - - build_infomessage(); - return run(); -} - diff --git a/src/tools/fake_server.cpp b/src/tools/fake_server.cpp new file mode 100644 index 00000000..b833c1b1 --- /dev/null +++ b/src/tools/fake_server.cpp @@ -0,0 +1,211 @@ +/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ +#include <stdlib.h> //rand +#include <base/system.h> +#include <engine/shared/config.h> +#include <engine/shared/network.h> +#include <mastersrv/mastersrv.h> + +CNetServer *pNet; + +int Progression = 50; +int GameType = 0; +int Flags = 0; + +const char *pVersion = "trunk"; +const char *pMap = "somemap"; +const char *pServerName = "unnamed server"; + +NETADDR aMasterServers[16] = {{0,{0},0}}; +int NumMasters = 0; + +const char *PlayerNames[16] = {0}; +int PlayerScores[16] = {0}; +int NumPlayers = 0; +int MaxPlayers = 0; + +char aInfoMsg[1024]; +int aInfoMsgSize; + +static void SendHeartBeats() +{ + static unsigned char aData[sizeof(SERVERBROWSE_HEARTBEAT) + 2]; + CNetChunk Packet; + + mem_copy(aData, SERVERBROWSE_HEARTBEAT, sizeof(SERVERBROWSE_HEARTBEAT)); + + Packet.m_ClientID = -1; + Packet.m_Flags = NETSENDFLAG_CONNLESS; + Packet.m_DataSize = sizeof(SERVERBROWSE_HEARTBEAT) + 2; + Packet.m_pData = &aData; + + /* supply the set port that the master can use if it has problems */ + aData[sizeof(SERVERBROWSE_HEARTBEAT)] = 0; + aData[sizeof(SERVERBROWSE_HEARTBEAT)+1] = 0; + + for(int i = 0; i < NumMasters; i++) + { + Packet.m_Address = aMasterServers[i]; + pNet->Send(&Packet); + } +} + +static void WriteStr(const char *pStr) +{ + int l = str_length(pStr)+1; + mem_copy(&aInfoMsg[aInfoMsgSize], pStr, l); + aInfoMsgSize += l; +} + +static void WriteInt(int i) +{ + char aBuf[64]; + str_format(aBuf, sizeof(aBuf), "%d", i); + WriteStr(aBuf); +} + +static void BuildInfoMsg() +{ + aInfoMsgSize = sizeof(SERVERBROWSE_OLD_INFO); + mem_copy(aInfoMsg, SERVERBROWSE_OLD_INFO, aInfoMsgSize); + + WriteStr(pVersion); + WriteStr(pServerName); + WriteStr(pMap); + WriteInt(GameType); + WriteInt(Flags); + WriteInt(Progression); + WriteInt(NumPlayers); + WriteInt(MaxPlayers); + + for(int i = 0; i < NumPlayers; i++) + { + WriteStr(PlayerNames[i]); + WriteInt(PlayerScores[i]); + } +} + +static void SendServerInfo(NETADDR *pAddr) +{ + CNetChunk p; + p.m_ClientID = -1; + p.m_Address = *pAddr; + p.m_Flags = NETSENDFLAG_CONNLESS; + p.m_DataSize = aInfoMsgSize; + p.m_pData = aInfoMsg; + pNet->Send(&p); +} + +static void SendFWCheckResponse(NETADDR *pAddr) +{ + CNetChunk p; + p.m_ClientID = -1; + p.m_Address = *pAddr; + p.m_Flags = NETSENDFLAG_CONNLESS; + p.m_DataSize = sizeof(SERVERBROWSE_FWRESPONSE); + p.m_pData = SERVERBROWSE_FWRESPONSE; + pNet->Send(&p); +} + +static int Run() +{ + int64 NextHeartBeat = 0; + NETADDR BindAddr = {NETTYPE_IPV4, {0},0}; + + if(!pNet->Open(BindAddr, 0, 0)) + return 0; + + while(1) + { + CNetChunk p; + pNet->Update(); + while(pNet->Recv(&p)) + { + if(p.m_ClientID == -1) + { + if(p.m_DataSize == sizeof(SERVERBROWSE_OLD_GETINFO) && + mem_comp(p.m_pData, SERVERBROWSE_OLD_GETINFO, sizeof(SERVERBROWSE_OLD_GETINFO)) == 0) + { + SendServerInfo(&p.m_Address); + } + else if(p.m_DataSize == sizeof(SERVERBROWSE_FWCHECK) && + mem_comp(p.m_pData, SERVERBROWSE_FWCHECK, sizeof(SERVERBROWSE_FWCHECK)) == 0) + { + SendFWCheckResponse(&p.m_Address); + } + } + } + + /* send heartbeats if needed */ + if(NextHeartBeat < time_get()) + { + NextHeartBeat = time_get()+time_freq()*(15+(rand()%15)); + SendHeartBeats(); + } + + thread_sleep(100); + } +} + +int main(int argc, char **argv) +{ + pNet = new CNetServer; + + while(argc) + { + // ? + /*if(str_comp(*argv, "-m") == 0) + { + argc--; argv++; + net_host_lookup(*argv, &aMasterServers[NumMasters], NETTYPE_IPV4); + argc--; argv++; + aMasterServers[NumMasters].port = str_toint(*argv); + NumMasters++; + } + else */if(str_comp(*argv, "-p") == 0) + { + argc--; argv++; + PlayerNames[NumPlayers++] = *argv; + argc--; argv++; + PlayerScores[NumPlayers] = str_toint(*argv); + } + else if(str_comp(*argv, "-a") == 0) + { + argc--; argv++; + pMap = *argv; + } + else if(str_comp(*argv, "-x") == 0) + { + argc--; argv++; + MaxPlayers = str_toint(*argv); + } + else if(str_comp(*argv, "-t") == 0) + { + argc--; argv++; + GameType = str_toint(*argv); + } + else if(str_comp(*argv, "-g") == 0) + { + argc--; argv++; + Progression = str_toint(*argv); + } + else if(str_comp(*argv, "-f") == 0) + { + argc--; argv++; + Flags = str_toint(*argv); + } + else if(str_comp(*argv, "-n") == 0) + { + argc--; argv++; + pServerName = *argv; + } + + argc--; argv++; + } + + BuildInfoMsg(); + int RunReturn = Run(); + + delete pNet; + return RunReturn; +} + diff --git a/src/tools/map_resave.c b/src/tools/map_resave.c deleted file mode 100644 index 37e00904..00000000 --- a/src/tools/map_resave.c +++ /dev/null @@ -1,36 +0,0 @@ -/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -#include <engine/e_datafile.h> - -int main(int argc, char **argv) -{ - int i, id, type, size; - void *ptr; - DATAFILE *df; - DATAFILE_OUT *df_out; - - if(argc != 3) - return -1; - - df = datafile_load(argv[1]); - df_out = datafile_create(argv[2]); - - /* add all items */ - for(i = 0; i < datafile_num_items(df); i++) - { - ptr = datafile_get_item(df, i, &type, &id); - size = datafile_get_itemsize(df, i); - datafile_add_item(df_out, type, id, size, ptr); - } - - /* add all data */ - for(i = 0; i < datafile_num_data(df); i++) - { - ptr = datafile_get_data(df, i); - size = datafile_get_datasize(df, i); - datafile_add_data(df_out, size, ptr); - } - - datafile_unload(df); - datafile_finish(df_out); - return 0; -} diff --git a/src/tools/map_resave.cpp b/src/tools/map_resave.cpp new file mode 100644 index 00000000..a6c55c43 --- /dev/null +++ b/src/tools/map_resave.cpp @@ -0,0 +1,44 @@ +// copyright (c) 2007 magnus auvinen, see licence.txt for more info +#include <base/system.h> +#include <engine/shared/datafile.h> +#include <engine/storage.h> + +int main(int argc, const char **argv) +{ + IStorage *pStorage = CreateStorage("Teeworlds", argv[0]); + int Index, Id = 0, Type = 0, Size; + void *pPtr; + char aFileName[1024]; + CDataFileReader DataFile; + CDataFileWriter df; + + if(argc != 3) + return -1; + + str_format(aFileName, sizeof(aFileName), "maps/%s", argv[2]); + + if(!DataFile.Open(pStorage, argv[1])) + return -1; + if(!df.Open(pStorage, aFileName)) + return -1; + + // add all items + for(Index = 0; Index < DataFile.NumItems(); Index++) + { + pPtr = DataFile.GetItem(Index, &Type, &Id); + Size = DataFile.GetItemSize(Index); + df.AddItem(Type, Id, Size, pPtr); + } + + // add all data + for(Index = 0; Index < DataFile.NumData(); Index++) + { + pPtr = DataFile.GetData(Index); + Size = DataFile.GetDataSize(Index); + df.AddData(Size, pPtr); + } + + DataFile.Close(); + df.Finish(); + return 0; +} diff --git a/src/tools/tileset_borderfix.c b/src/tools/tileset_borderfix.c index 945f2832..90e512eb 100644 --- a/src/tools/tileset_borderfix.c +++ b/src/tools/tileset_borderfix.c @@ -1,6 +1,6 @@ /* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -#include "../engine/external/pnglite/pnglite.c" +#include "./engine/external/pnglite/pnglite.c" typedef struct pixel_t { |