From b5e7e32726ea13fa3459d7db20fa132ffe831ffe Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sun, 3 Dec 2017 09:52:17 +0100 Subject: [PATCH] commandline option to load picture file --- commandline.cpp | 3 +- mapeditor.cpp | 134 +++++++++++++++++++++++++----------------------- 2 files changed, 72 insertions(+), 65 deletions(-) diff --git a/commandline.cpp b/commandline.cpp index c2710ac2..29b8c27c 100644 --- a/commandline.cpp +++ b/commandline.cpp @@ -66,7 +66,8 @@ int arg::readCommon() { #if CAP_EDIT else if(argis("-lev")) { shift(); levelfile = args(); } else if(argis("-pic")) { shift(); picfile = args(); } - else if(argis("-load")) { PHASE(3); shift(); mapstream::loadMap(loadlevel); } + else if(argis("-load")) { PHASE(3); shift(); mapstream::loadMap(args()); } + else if(argis("-picload")) { PHASE(3); shift(); mapeditor::loadPicFile(args()); } #endif else if(argis("-canvas")) { firstland = specialland = laCanvas; diff --git a/mapeditor.cpp b/mapeditor.cpp index 40bf3896..5db9b857 100644 --- a/mapeditor.cpp +++ b/mapeditor.cpp @@ -1661,6 +1661,72 @@ namespace mapeditor { bool onelayeronly; + void loadPicFile(const string& s) { + FILE *f = fopen(picfile.c_str(), "rt"); + if(!f) { + addMessage(XLAT("Failed to load pictures from %1", picfile)); + return; + } + int err; + char buf[200]; + if(!fgets(buf, 200, f)) { + addMessage(XLAT("Failed to load pictures from %1", picfile)); + fclose(f); return; + } + int vernum; err = fscanf(f, "%x", &vernum); + printf("vernum = %x\n", vernum); + while(true) { + int i, j, l, sym, rots, color, siz; + err = fscanf(f, "%d%d%d%d%d%x%d", &i, &j, &l, &sym, &rots, &color, &siz); + if(i == -1 || err < 6) break; + if(siz < 0 || siz > 1000) break; + initShape(i, j); + usershapelayer& ds(usershapes[i][j]->d[l]); + ds.shift = readHyperpoint(f); + ds.spin = readHyperpoint(f); + ds.list.clear(); + for(int i=0; id[l].list)) { + usershapelayer& ds(us->d[l]); + fprintf(f, "\n%d %d %d %d %d %6x %d\n", + i, j, l, ds.sym, ds.rots, ds.color, int(size(ds.list))); + writeHyperpoint(f, ds.shift); + writeHyperpoint(f, ds.spin); + fprintf(f,"\n"); + for(int i=0; id[l].list)) { - usershapelayer& ds(us->d[l]); - fprintf(f, "\n%d %d %d %d %d %6x %d\n", - i, j, l, ds.sym, ds.rots, ds.color, int(size(ds.list))); - writeHyperpoint(f, ds.shift); - writeHyperpoint(f, ds.spin); - fprintf(f,"\n"); - for(int i=0; i 1000) break; - initShape(i, j); - usershapelayer& ds(usershapes[i][j]->d[l]); - ds.shift = readHyperpoint(f); - ds.spin = readHyperpoint(f); - ds.list.clear(); - for(int i=0; i