From 0a2379a9ddfb41e8102a0829af7c628d2c6b23bb Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 14 Mar 2013 19:41:28 -0700 Subject: [PATCH] First public commit of v2.0 beta --- .gitignore | 18 + .hgignore | 4 - .hgtags | 8 - Makefile | 38 - MinutorMap/Makefile | 14 - MinutorMap/MinutorMap.c | 606 ----- MinutorMap/MinutorMap.h | 67 - MinutorMap/MinutorMap.vcxproj | 151 -- MinutorMap/blockInfo.h | 210 -- MinutorMap/cache.c | 189 -- MinutorMap/cache.h | 68 - MinutorMap/dllmain.c | 47 - MinutorMap/nbt.c | 417 --- MinutorMap/nbt.h | 55 - MinutorMap/region.c | 164 -- MinutorMap/region.h | 34 - MinutorMap/stdafx.c | 36 - MinutorMap/stdafx.h | 73 - MinutorMap/targetver.h | 36 - MinutorMap/zlibstat.lib | Bin 629258 -> 0 bytes Minutorwin.sln | 34 - OSX/ColorScheme.m | 259 -- OSX/English.lproj/InfoPlist.strings | 2 - OSX/English.lproj/MainMenu.xib | 2663 ------------------- OSX/Map.m | 267 -- OSX/MapViewer.m | 87 - OSX/background.png | Bin 72921 -> 0 bytes OSX/icon.icns | Bin 642676 -> 0 bytes OSX/minutor-Info.plist | 44 - OSX/minutor.xcodeproj/project.pbxproj | 402 --- OSX/minutorAppDelegate.m | 160 -- OSX/minutor_Prefix.pch | 7 - README | 57 +- Win/ColorSchemes.cpp | 384 --- Win/ColorSchemes.h | 50 - Win/Minutor.cpp | 812 ------ Win/Minutor.h | 30 - Win/Minutor.rc | Bin 15644 -> 0 bytes Win/Minutor.vcxproj | 110 - Win/Resource.h | 82 - Win/icon.ico | Bin 51262 -> 0 bytes Win/stdafx.cpp | 31 - Win/stdafx.h | 46 - Win/targetver.h | 35 - biomeidentifier.cpp | 86 + biomeidentifier.h | 56 + blockidentifier.cpp | 221 ++ blockidentifier.h | 75 + chunk.cpp | 88 + OSX/MapViewer.h => chunk.h | 74 +- chunkcache.cpp | 84 + chunkcache.h | 68 + OSX/minutorAppDelegate.h => chunkloader.cpp | 85 +- OSX/main.m => chunkloader.h | 42 +- colorschemes.c | 445 ---- colorschemes.h | 37 - definitionmanager.cpp | 512 ++++ definitionmanager.h | 112 + definitions/vanilla_biomes.json | 1 + definitions/vanilla_dims.json | 1 + definitions/vanilla_ids.json | 1 + definitionupdater.cpp | 89 + definitionupdater.h | 59 + dimensions.cpp | 207 ++ dimensions.h | 78 + json.cpp | 380 +++ json.h | 111 + labelledslider.cpp | 68 + OSX/Map.h => labelledslider.h | 69 +- OSX/ColorScheme.h => main.cpp | 55 +- mapview.cpp | 384 +++ mapview.h | 86 + mapviewer.c | 596 ----- mapviewer.h | 6 - minutor.c | 40 - minutor.cpp | 398 +++ minutor.h | 114 + minutor.pro | 36 + minutor.qrc | 7 + nbt.cpp | 416 +++ nbt.h | 188 ++ settings.cpp | 143 + settings.h | 58 + web/Makefile | 15 + web/color.js | 432 +++ web/display.js | 198 ++ web/editor.js | 171 ++ web/editor.min.js | 53 + web/generator.js | 361 +++ web/index.html | 10 + web/jquery_externs.js | 2243 ++++++++++++++++ web/main.css | 217 ++ web/mods.js | 1002 +++++++ web/mods/example_ids.json | 1 + web/mods/mods.json | 1 + web/mods/packs.json | 3 + web/zip.js | 186 ++ MinutorMap/zconf.h => zconf.h | 196 +- zipreader.cpp | 145 + zipreader.h | 56 + MinutorMap/zlib.h => zlib.h | 309 ++- zlibstat.lib | Bin 0 -> 57554 bytes 102 files changed, 9797 insertions(+), 9175 deletions(-) create mode 100644 .gitignore delete mode 100644 .hgignore delete mode 100644 .hgtags delete mode 100644 Makefile delete mode 100644 MinutorMap/Makefile delete mode 100644 MinutorMap/MinutorMap.c delete mode 100644 MinutorMap/MinutorMap.h delete mode 100644 MinutorMap/MinutorMap.vcxproj delete mode 100644 MinutorMap/blockInfo.h delete mode 100644 MinutorMap/cache.c delete mode 100644 MinutorMap/cache.h delete mode 100644 MinutorMap/dllmain.c delete mode 100644 MinutorMap/nbt.c delete mode 100644 MinutorMap/nbt.h delete mode 100644 MinutorMap/region.c delete mode 100644 MinutorMap/region.h delete mode 100644 MinutorMap/stdafx.c delete mode 100644 MinutorMap/stdafx.h delete mode 100644 MinutorMap/targetver.h delete mode 100644 MinutorMap/zlibstat.lib delete mode 100644 Minutorwin.sln delete mode 100644 OSX/ColorScheme.m delete mode 100644 OSX/English.lproj/InfoPlist.strings delete mode 100644 OSX/English.lproj/MainMenu.xib delete mode 100644 OSX/Map.m delete mode 100644 OSX/MapViewer.m delete mode 100644 OSX/background.png delete mode 100644 OSX/icon.icns delete mode 100644 OSX/minutor-Info.plist delete mode 100644 OSX/minutor.xcodeproj/project.pbxproj delete mode 100644 OSX/minutorAppDelegate.m delete mode 100644 OSX/minutor_Prefix.pch delete mode 100644 Win/ColorSchemes.cpp delete mode 100644 Win/ColorSchemes.h delete mode 100644 Win/Minutor.cpp delete mode 100644 Win/Minutor.h delete mode 100644 Win/Minutor.rc delete mode 100644 Win/Minutor.vcxproj delete mode 100644 Win/Resource.h delete mode 100644 Win/icon.ico delete mode 100644 Win/stdafx.cpp delete mode 100644 Win/stdafx.h delete mode 100644 Win/targetver.h create mode 100644 biomeidentifier.cpp create mode 100644 biomeidentifier.h create mode 100644 blockidentifier.cpp create mode 100644 blockidentifier.h create mode 100644 chunk.cpp rename OSX/MapViewer.h => chunk.h (61%) create mode 100644 chunkcache.cpp create mode 100644 chunkcache.h rename OSX/minutorAppDelegate.h => chunkloader.cpp (50%) rename OSX/main.m => chunkloader.h (65%) delete mode 100644 colorschemes.c delete mode 100644 colorschemes.h create mode 100644 definitionmanager.cpp create mode 100644 definitionmanager.h create mode 100644 definitions/vanilla_biomes.json create mode 100644 definitions/vanilla_dims.json create mode 100644 definitions/vanilla_ids.json create mode 100644 definitionupdater.cpp create mode 100644 definitionupdater.h create mode 100644 dimensions.cpp create mode 100644 dimensions.h create mode 100644 json.cpp create mode 100644 json.h create mode 100644 labelledslider.cpp rename OSX/Map.h => labelledslider.h (63%) rename OSX/ColorScheme.h => main.cpp (56%) create mode 100644 mapview.cpp create mode 100644 mapview.h delete mode 100644 mapviewer.c delete mode 100644 mapviewer.h delete mode 100644 minutor.c create mode 100644 minutor.cpp create mode 100644 minutor.h create mode 100644 minutor.pro create mode 100644 minutor.qrc create mode 100644 nbt.cpp create mode 100644 nbt.h create mode 100644 settings.cpp create mode 100644 settings.h create mode 100644 web/Makefile create mode 100644 web/color.js create mode 100644 web/display.js create mode 100644 web/editor.js create mode 100644 web/editor.min.js create mode 100644 web/generator.js create mode 100644 web/index.html create mode 100644 web/jquery_externs.js create mode 100644 web/main.css create mode 100644 web/mods.js create mode 100644 web/mods/example_ids.json create mode 100644 web/mods/mods.json create mode 100644 web/mods/packs.json create mode 100644 web/zip.js rename MinutorMap/zconf.h => zconf.h (73%) create mode 100644 zipreader.cpp create mode 100644 zipreader.h rename MinutorMap/zlib.h => zlib.h (85%) create mode 100644 zlibstat.lib diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..30c1beee --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Build results +[Dd]ebug/ +[Rr]elease/ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + +# Mac crap +.DS_Store + +Makefile.Debug +Makefile.Release + +*.pdb +*.user diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 8dcd9e48..00000000 --- a/.hgignore +++ /dev/null @@ -1,4 +0,0 @@ -syntax: glob -*.o -*.a -minutor diff --git a/.hgtags b/.hgtags deleted file mode 100644 index f7cec319..00000000 --- a/.hgtags +++ /dev/null @@ -1,8 +0,0 @@ -0000000000000000000000000000000000000000 0.2.3 -9a0e075066f1fdc72191a5e517c0457c98d9a582 0.3 -ce597867eb2da0c6b9ca76f01450742a349d2e88 1.1 -310f5c23f02e5e36eb910eac85275e4b6f007312 1.5 -310f5c23f02e5e36eb910eac85275e4b6f007312 1.5 -0000000000000000000000000000000000000000 1.5 -0000000000000000000000000000000000000000 1.5 -e184d35990a81b6fb2bf22f5ec83e12404f3292f 1.5 diff --git a/Makefile b/Makefile deleted file mode 100644 index 3988a3a9..00000000 --- a/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -GTK_INC=`pkg-config --cflags gtk+-2.0` -GTK_LIB=`pkg-config --libs gtk+-2.0` - -BIN=$(DESTDIR)/usr/bin -DESKTOP=$(DESTDIR)/usr/share/applications -PIXMAP=$(DESTDIR)/usr/share/pixmaps -OBJS=minutor.o mapviewer.o colorschemes.o -CC=gcc -MAKE=make -#CFLAGS=-Wall -std=c99 -O2 -CFLAGS=-Wall -std=c99 -g -INCLUDE=$(GTK_INC) -LIBS=$(GTK_LIB) - -EXEC=minutor - -all: $(EXEC) - -$(EXEC): $(OBJS) maplib - $(CC) -Wl,--as-needed -o $(EXEC) $(OBJS) $(LIBS) MinutorMap/MinutorMap.a - -install: $(EXEC) - install -d $(BIN) $(DESKTOP) $(PIXMAP) - install -s $(EXEC) $(BIN) - install minutor.desktop $(DESKTOP) - install minutor.png $(PIXMAP) - install minutor.xpm $(PIXMAP) - -maplib: - cd MinutorMap && $(MAKE) - -%.o: %.c - $(CC) -c $(CFLAGS) -o $@ $< $(INCLUDE) - -clean: cleanmaplib - rm -f $(EXEC) $(OBJS) -cleanmaplib: - cd MinutorMap && $(MAKE) clean \ No newline at end of file diff --git a/MinutorMap/Makefile b/MinutorMap/Makefile deleted file mode 100644 index 4d4086ed..00000000 --- a/MinutorMap/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -OBJS=MinutorMap.o cache.o nbt.o region.o -CC=gcc -AR=ar -#CFLAGS=-Wall -std=c99 -O2 -CFLAGS=-Wall -std=c99 -g - -LIB=MinutorMap.a - -$(LIB): $(OBJS) - $(AR) -cr $(LIB) $(OBJS) -%.o: %.c - $(CC) -c $(CFLAGS) -o $@ $< $(INCLUDE) -clean: - rm -f $(LIB) $(OBJS) diff --git a/MinutorMap/MinutorMap.c b/MinutorMap/MinutorMap.c deleted file mode 100644 index e8ead643..00000000 --- a/MinutorMap/MinutorMap.c +++ /dev/null @@ -1,606 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun - Parts Copyright (c) 2010, Ryan Hitchman -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// MinutorMap.cpp : Defines the exported functions for the DLL application. -// - -#include "stdafx.h" -#include "blockInfo.h" -#include - -static unsigned char* draw(const char *world,int bx,int bz,int y,int opts, - ProgressCallback callback,float percent); -static void blit(unsigned char *block,unsigned char *bits,int px,int py, - double zoom,int w,int h); -static Block *LoadBlock(char *directory,int bx,int bz); -static void initColors(); - -static int colorsInited=0; -static unsigned int blockColors[256*16]; -static unsigned char blank_tile[16*16*4]; - -static unsigned short colormap=0; -static long long mapSeed; - -#define clamp(v,a,b) ((v)a?(v):a):b) - - - - - - - -static long long randomSeed; -static void javaRandomSetSeed(long long seed){ - randomSeed = (seed ^ 0x5DEECE66DL) & ((1LL << 48) - 1); -} - -static long long javaRandomNext(int bits) { - long long r = randomSeed; - r = (r * 0x5DEECE66DL + 0xBL) & ((1LL << 48) - 1); - return (long long)(r >> (48 - bits)); -} -static int javaRandomNextInt(int n) { - long long bits,val; - if ((n & -n) == n) // i.e., n is a power of 2 - return (int)((n * (long long)javaRandomNext(31)) >> 31); - do { - bits = javaRandomNext(31); - val = bits % n; - } while(bits - val + (n-1) < 0); - return (int)val; -} - -static long long getChunkSeed(int xPosition, int zPosition){ - return (mapSeed + (long long) (xPosition * xPosition * 0x4c1906) + (long long) (xPosition * 0x5ac0db) + - (long long) (zPosition * zPosition) * 0x4307a7L + (long long) (zPosition * 0x5f24f)) ^ 0x3ad8025f; -} - -static int isSlimeChunk(int x, int z){ - long long nextSeed = getChunkSeed(x, z); - javaRandomSetSeed(nextSeed); - return javaRandomNextInt(10)==0; -} - -//world = path to world saves -//cx = center x world -//cz = center z world -//y = start depth -//w = output width -//h = output height -//zoom = zoom amount (1.0 = 100%) -//bits = byte array for output -//opts = bitmask of render options (see MinutorMap.h) -void DrawMap(const char *world,double cx,double cz,int y,int w,int h,double zoom,unsigned char *bits,int opts,ProgressCallback callback) -{ - /* Simplified coordinate system. - -world z N -screen y - | - | - | - -world x |(cx,cz) +world x - W--------------+----------------E - -screen x | +screen x - | - | - | - +world z N +screen y - */ - - unsigned char *blockbits; - int z,x,px,py; - int blockScale=(int)(16*zoom); - - // number of blocks to fill the screen (plus 2 blocks for floating point inaccuracy) - int hBlocks=(w+blockScale*2)/blockScale; - int vBlocks=(h+blockScale*2)/blockScale; - - - // cx/cz is the center, so find the upper left corner from that - double startx=cx-(double)w/(2*zoom); - double startz=cz-(double)h/(2*zoom); - int startxblock=(int)(startx/16); - int startzblock=(int)(startz/16); - int shiftx=(int)((startx-startxblock*16)*zoom); - int shifty=(int)((startz-startzblock*16)*zoom); - - if (shiftx<0) - { - startxblock--; - shiftx+=blockScale; - } - if (shifty<0) - { - startzblock--; - shifty+=blockScale; - } - - if (!colorsInited) - initColors(); - - // z increases south, decreases north - for (z=0,py=-shifty;z<=vBlocks;z++,py+=blockScale) - { - // x increases west, decreases east - for (x=0,px=-shiftx;x<=hBlocks;x++,px+=blockScale) - { - blockbits = draw(world,startxblock+x,startzblock+z,y,opts,callback,(float)(z*hBlocks+x)/(float)(vBlocks*hBlocks)); - blit(blockbits,bits,px,py,zoom,w,h); - } - } -} - -const char *biomes[]={ - "Ocean", "Plains", "Desert", "Extreme Hills", "Forest", - "Taiga", "Swampland", "River", "Hell", "Sky", "Frozen Ocean", - "Frozen River", "Ice Plains", "Ice Mountains", "Mushroom Island", - "Mushroom Island Shore", "Beach", "Desert Hills", "Forest Hills", - "Taiga Hills", "Extreme Hills Edge", "Jungle", "Jungle Hills" -}; - -//bx = x coord of pixel -//by = y coord of pixel -//cx = center x world -//cz = center z world -//w = output width -//h = output height -//zoom = zoom amount (1.0 = 100%) -//ox = world x at mouse -//oz = world z at mouse -//biome = biome name at mouse -const char *IDBlock(int bx, int by, double cx, double cz, int w, int h, double zoom,int *ox,int *oz,const char **biome) -{ - //WARNING: keep this code in sync with draw() - Block *block; - int x,y,z,px,py,xoff,zoff; - int blockScale=(int)(16*zoom); - - // cx/cz is the center, so find the upper left corner from that - double startx=cx-(double)w/(2*zoom); - double startz=cz-(double)h/(2*zoom); - int startxblock=(int)(startx/16); - int startzblock=(int)(startz/16); - int shiftx=(int)((startx-startxblock*16)*zoom); - int shifty=(int)((startz-startzblock*16)*zoom); - - if (shiftx<0) - { - startxblock--; - shiftx+=blockScale; - } - if (shifty<0) - { - startzblock--; - shifty+=blockScale; - } - - if (by<0) return ""; - - x=(bx+shiftx)/blockScale; - px=x*blockScale-shiftx; - z=(by+shifty)/blockScale; - py=z*blockScale-shifty; - - xoff=(int)((bx-px)/zoom); - zoff=(int)((by-py)/zoom); - - *ox=(startxblock+x)*16+xoff; - *oz=(startzblock+z)*16+zoff; - - *biome="Unknown Biome"; - - block=(Block *)Cache_Find(startxblock+x, startzblock+z); - - if (block==NULL) - return "Unknown"; - - y=block->heightmap[xoff+zoff*16]; - - if (block->biomes[xoff+zoff*16]<23) - *biome=biomes[block->biomes[xoff+zoff*16]]; - - if (y == (unsigned char)-1) - return "Empty"; // nothing was rendered here - - return blocks[block->grid[xoff+zoff*16+y*256]].name; -} - -//copy block to bits at px,py at zoom. bits is wxh -static void blit(unsigned char *block,unsigned char *bits,int px,int py, - double zoom,int w,int h) -{ - int x,y,yofs,bitofs; - int skipx=0,skipy=0; - int bw=(int)(16*zoom); - int bh=(int)(16*zoom); - if (px<0) skipx=-px; - if (px+bw>=w) bw=w-px; - if (bw<=0) return; - if (py<0) skipy=-py; - if (py+bh>=h) bh=h-py; - if (bh<=0) return; - bits+=py*w*4; - bits+=px*4; - for (y=0;yrendery==y && block->renderopts==opts && block->colormap==colormap) // already rendered - { - if (block->rendermissing // wait, the last render was incomplete - && Cache_Find(bx, bz+block->rendermissing) != NULL) - { - ; // we can do a better render now that the missing block is loaded - } else { - // there's no need to re-render, use cache - return block->rendercache; - } - } - - block->rendery=y; - block->renderopts=opts; - block->rendermissing=0; - block->colormap=colormap; - - bits = block->rendercache; - - // find the block to the west, so we can use its heightmap for shading - prevblock=(Block *)Cache_Find(bx-1, bz); - - if (prevblock==NULL) - block->rendermissing=1; //note no loaded block to west - else if (prevblock->rendery!=y || prevblock->renderopts!=opts) - { - block->rendermissing=1; //note improperly rendered block to west - prevblock = NULL; //block was rendered at a different y level, ignore - } - // z increases south, decreases north - for (z=0;z<16;z++) - { - if (prevblock!=NULL) - prevy = prevblock->heightmap[15+z*16]; - else - prevy=-1; - // x increases west, decreases east - for (x=0;x<16;x++) - { - bofs=((y*16+z)*16+x); - color=0; - r=g=b=0; - seenempty=(y==255?1:0); - alpha=0.0; - for (i=y;i>=0;i--,bofs-=16*16) - { - pixel=block->grid[bofs]; - if (pixel==BLOCK_AIR) - { - seenempty=1; - continue; - } - if (pixel==BLOCK_STATIONARY_WATER) - seenempty=1; - if ((showobscured || seenempty) && pixellight[(bofs+256)/2]; - if (bofs&1) light>>=4; - light&=0xf; - } else - light = 0; - - if (mob && blocks[pixel].type==BLOCK_TYPE_OPAQUE && light<8 && i<250) - { - int upone=block->grid[bofs+16*16]; - int uptwo=block->grid[bofs+16*16*2]; - //spawn on solid blocks. The "spawn block" must be transparent, not liquid, not solid. The block above - //the spawn block must be transparent and non solid, but could be liquid. - if ((blocks[upone].type&(BLOCK_TYPE_SOLID|BLOCK_TYPE_TRANSPARENT|BLOCK_TYPE_LIQUID))==BLOCK_TYPE_TRANSPARENT && - (blocks[uptwo].type&(BLOCK_TYPE_SOLID|BLOCK_TYPE_TRANSPARENT))==BLOCK_TYPE_TRANSPARENT) - { - r=0xff; - g=0; - b=0xff; - break; - } - } - if (!lighting) light=12; - } - - if (prevy==-1) - prevy=i; - else if (prevyi) - light-=5; - light=clamp(light,1,15); - color=blockColors[pixel*16+light]; - if (alpha==0.0) - { - alpha=blocks[pixel].alpha; - r=color>>16; - g=(color>>8)&0xff; - b=color&0xff; - } - else - { - r+=(unsigned char)((1.0-alpha)*(color>>16)); - g+=(unsigned char)((1.0-alpha)*((color>>8)&0xff)); - b+=(unsigned char)((1.0-alpha)*(color&0xff)); - alpha+=blocks[pixel].alpha*(1.0-alpha); - } - if (blocks[pixel].alpha==1.0) - break; - } - } - prevy=i; - if (depthshading) // darken deeper blocks - { - int num=prevy+50-(256-y)/10; - int denom=y+50-(256-y)/10; - r=r*num/denom; - g=g*num/denom; - b=b*num/denom; - } - if (hasSlime > 0) - { - if (y<=16) - g=clamp(g+20,0,255); - else if (x%15==0 || z%15==0) - g=clamp(g+20,0,255); - } - if (cavemode) - { - seenempty=0; - pixel=block->grid[bofs]; - if (pixel==BLOCK_LEAVES || pixel==BLOCK_LOG) //special case surface trees - for (; i>=1; i--,bofs-=16*16,pixel=block->grid[bofs]) - if (!(pixel==BLOCK_LOG||pixel==BLOCK_LEAVES||pixel==BLOCK_AIR)) - break; // skip leaves, wood, air - for (;i>=1;i--,bofs-=16*16) - { - pixel=block->grid[bofs]; - if (pixel==BLOCK_AIR) - { - seenempty=1; - continue; - } - if (seenempty && pixelheightmap[x+z*16] = prevy; - } - } - return bits; -} -Block *LoadBlock(char *directory, int cx, int cz) -{ - Block *block=block_alloc(); - block->rendery = -1; // force redraw - - if (regionGetBlocks(directory, cx, cz, block->grid, block->light, block->biomes)) { - return block; - } - - block_free(block); - return NULL; -} - -void GetSpawn(const char *world,int *x,int *y,int *z) -{ - bfFile bf; - char filename[256]; - strncpy_s(filename,256,world,256); - strncat_s(filename,256,"/level.dat",256); - bf=newNBT(filename); - nbtGetSpawn(bf,x,y,z); - nbtClose(bf); -} -void GetRandomSeed(const char *world,long long *seed) -{ - bfFile bf; - char filename[256]; - strncpy_s(filename,256,world,256); - strncat_s(filename,256,"/level.dat",256); - bf=newNBT(filename); - nbtGetRandomSeed(bf,seed); - mapSeed = *seed; - nbtClose(bf); - -} -void GetPlayer(const char *world,int *px,int *py,int *pz) -{ - bfFile bf; - char filename[256]; - strncpy_s(filename,256,world,256); - strncat_s(filename,256,"/level.dat",256); - bf=newNBT(filename); - nbtGetPlayer(bf,px,py,pz); - nbtClose(bf); -} -void GetPlayerSpawn(const char *world,int *px,int *py,int *pz) -{ - bfFile bf; - char filename[256]; - strncpy_s(filename,256,world,256); - strncat_s(filename,256,"/level.dat",256); - bf=newNBT(filename); - nbtGetPlayerSpawn(bf,px,py,pz); - nbtClose(bf); -} - -//palette should be in RGBA format -void SetMapPalette(unsigned int *palette,int num) -{ - unsigned char r,g,b; - double a; - int i; - - colormap++; - for (i=0;i>24; - g=palette[i]>>16; - b=palette[i]>>8; - a=((double)(palette[i]&0xff))/255.0; - r=(unsigned char)(r*a); //premultiply alpha - g=(unsigned char)(g*a); - b=(unsigned char)(b*a); - blocks[i].color=(r<<16)|(g<<8)|b; - blocks[i].alpha=a; - } - initColors(); -} - -// for each block color, calculate light levels 0-15 -static void initColors() -{ - unsigned r,g,b,i,shade; - double y,u,v,delta; - unsigned int color; - int rx, ry; - - colorsInited=1; - for (i=0;i>16; - g=(color>>8)&0xff; - b=color&0xff; - //we'll use YUV to darken the blocks.. gives a nice even - //coloring - y=0.299*r+0.587*g+0.114*b; - u=(b-y)*0.565; - v=(r-y)*0.713; - delta=y/15; - - for (shade=0;shade<16;shade++) - { - y=shade*delta; - r=(unsigned int)clamp(y+1.403*v,0,255); - g=(unsigned int)clamp(y-0.344*u-0.714*v,0,255); - b=(unsigned int)clamp(y+1.770*u,0,255); - blockColors[i*16+shade]=(r<<16)|(g<<8)|b; - } - } - - // also initialize the "missing tile" graphic - - for (rx = 0; rx < 16; ++rx) - { - for (ry = 0; ry < 16; ++ry) - { - int off = (rx+ry*16)*4; - int tone = 150; - if ((rx/4)%2 ^ (ry/4)%2) - tone=140; - blank_tile[off] = tone; - blank_tile[off+1] = tone; - blank_tile[off+2] = tone; - blank_tile[off+3] = 128; - } - } -} diff --git a/MinutorMap/MinutorMap.h b/MinutorMap/MinutorMap.h deleted file mode 100644 index d42d5cb8..00000000 --- a/MinutorMap/MinutorMap.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef __MINUTOR_MAP_H__ -#define __MINUTOR_MAP_H__ - -#ifndef WIN32 -#define __declspec(a) -#define dllexport 0 -#define __cdecl -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define CAVEMODE 0x01 -#define HIDEOBSCURED 0x02 -#define DEPTHSHADING 0x04 -#define LIGHTING 0x08 -#define HELL 0x10 -#define ENDER 0x20 -#define SLIME 0x40 -#define MOB 0x80 - -typedef void (*ProgressCallback)(float progress); - - __declspec(dllexport) void __cdecl DrawMap(const char *world,double cx,double cz,int y,int w,int h,double zoom,unsigned char *bits, int opts,ProgressCallback callback); - __declspec(dllexport) const char * __cdecl IDBlock(int bx, int by, double cx, double cz, int w, int h, double zoom,int *ox,int *oz, const char **biome); - __declspec(dllexport) void __cdecl CloseAll(); - __declspec(dllexport) void __cdecl GetSpawn(const char *world,int *x,int *y,int *z); - __declspec(dllexport) void __cdecl GetPlayer(const char *world,int *px,int *py,int *pz); - __declspec(dllexport) void __cdecl GetRandomSeed(const char *world,long long* pseed); - __declspec(dllexport) void __cdecl GetPlayerSpawn(const char *world,int *px,int *py,int *pz); - - // palette should be in RGBA format, num colors in the palette - __declspec(dllexport) void __cdecl SetMapPalette(unsigned int *palette,int num); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/MinutorMap/MinutorMap.vcxproj b/MinutorMap/MinutorMap.vcxproj deleted file mode 100644 index 8a175d08..00000000 --- a/MinutorMap/MinutorMap.vcxproj +++ /dev/null @@ -1,151 +0,0 @@ - - - - - Debug - Win32 - - - Release 64bit - Win32 - - - Release - Win32 - - - - {9E6153B8-20A1-42DC-B889-DAD936A8A786} - Win32Proj - MinutorMap - - - - StaticLibrary - true - Unicode - - - StaticLibrary - false - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - - - - - - - - - - - - - - true - - - false - - - false - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;MINUTORMAP_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDebug - - - Windows - true - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;MINUTORMAP_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - - - Windows - true - true - true - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - LIBCMT.lib - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;MINUTORMAP_EXPORTS;%(PreprocessorDefinitions) - - - Windows - true - true - true - zlibstat64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - LIBCMT.lib - MachineX64 - - - - - - - - - - - - - - - - false - - - false - false - - - - - - - - - - Create - Create - Create - - - - - - - - - diff --git a/MinutorMap/blockInfo.h b/MinutorMap/blockInfo.h deleted file mode 100644 index e450d1c8..00000000 --- a/MinutorMap/blockInfo.h +++ /dev/null @@ -1,210 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef __BLOCKINFO_H__ -#define __BLOCKINFO_H__ - -#include - -/* -We use pre-multiplied alpha. -That means that if the color is #ffffff, and alpha is 0.5, then the entry should be: -0x7f7f7f,0.5 -*/ - -#define BLOCK_TYPE_OPAQUE 0 -#define BLOCK_TYPE_TRANSPARENT 1 -#define BLOCK_TYPE_SOLID 2 -#define BLOCK_TYPE_LIQUID 4 - -static struct { - const char *name; - unsigned int color; - double alpha; - unsigned char type; // bitmask -} blocks[256]={ -{"Air", 0x000000,0.0,1}, //00 -{"Stone", 0x787878,1.0,0}, //01 -{"Grass", 0x78b34d,1.0,0}, //02 -{"Dirt", 0x8c6344,1.0,0}, //03 -{"Cobblestone", 0x828282,1.0,0}, //04 -{"Wooden Plank", 0x9f8150,1.0,0}, //05 -{"Sapling", 0x000000,0.0,1}, //06 -{"Bedrock", 0x565656,1.0,0}, //07 -{"Water", 0x163288,0.535,5}, //08 -{"Stationary Water", 0x163288,0.535,5}, //09 -{"Lava", 0xf56d00,1.0,5}, //0a -{"Stationary Lava", 0xf56d00,1.0,5}, //0b -{"Sand", 0xe0d8a6,1.0,0}, //0c -{"Gravel", 0x857b7b,1.0,0}, //0d -{"Gold Ore", 0xfcee4b,1.0,0}, //0e -{"Iron Ore", 0xbc9980,1.0,0}, //0f -{"Coal Ore", 0x343434,1.0,0}, //10 -{"Wood", 0xb1905a,1.0,0}, //11 -{"Leaves", 0x39ab27,1.0,3}, //12 -{"Sponge", 0xc7c743,1.0,0}, //13 -{"Glass", 0x607b7f,0.5,3}, //14 -{"Lapis Lazuli Ore", 0x143880,1.0,0}, //15 -{"Lapis Lazuli Block", 0x1b4ebb,1.0,0}, //16 -{"Dispenser", 0x6f6f6f,1.0,0}, //17 -{"Sandstone", 0xe0d8a6,1.0,0}, //18 -{"Note Block", 0x342017,1.0,0}, //19 -{"Bed", 0xff3333,1.0,3}, //1a -{"Powered Rail", 0x693838,1.0,1}, //1b -{"Detector Rail", 0x694d3a,1.0,1}, //1c -{"Sticky Piston", 0x719e60,1.0,3}, //1d -{"Cobweb", 0xeeeeee,1.0,1}, //1e -{"Tall Grass", 0x68a33d,1.0,1}, //1f -{"Dead Bush", 0x946428,1.0,1}, //20 -{"Piston", 0x95774b,1.0,3}, //21 -{"Piston Extension", 0x95774b,1.0,3}, //22 -{"Wool", 0xdcdcdc,1.0,0}, //23 -{"", 0x000000,0.0,0}, //24 -{"Dandelion", 0x000000,0.0,1}, //25 -{"Rose", 0x000000,0.0,1}, //26 -{"Brown Mushroom", 0x000000,0.0,1}, //27 -{"Red Mushroom", 0x000000,0.0,1}, //28 -{"Gold Block", 0xfef74e,1.0,0}, //29 -{"Iron Block", 0xeeeeee,1.0,0}, //2a -{"Double Slab", 0xa6a6a6,1.0,0}, //2b -{"Slab", 0xa5a5a5,1.0,3}, //2c -{"Brick", 0xa0807b,1.0,0}, //2d -{"TNT", 0xdb441a,1.0,3}, //2e -{"Bookshelf", 0x795a39,1.0,0}, //2f -{"Moss Stone", 0x627162,1.0,0}, //30 -{"Obsidian", 0x1b1729,1.0,0}, //31 -{"Torch", 0xfcfc00,1.0,1}, //32 -{"Fire", 0xfca100,1.0,1}, //33 -{"Monster Spawner", 0x254254,1.0,3}, //34 -{"Oak Wood Stairs", 0x9e804f,1.0,3}, //35 -{"Chest", 0xa06f23,1.0,3}, //36 -{"Redstone Wire", 0xd60000,1.0,1}, //37 -{"Diamond Ore", 0x5decf5,1.0,0}, //38 -{"Diamond Block", 0x7fe3df,1.0,0}, //39 -{"Crafting Table", 0x825432,1.0,0}, //3a -{"Wheat", 0x766615,1.0,1}, //3b -{"Farmland", 0x40220b,1.0,3}, //3c -{"Furnace", 0x767677,1.0,0}, //3d -{"Burning Furnace", 0x777676,1.0,0}, //3e -{"Sign Post", 0x9f814f,1.0,1}, //3f -{"Wooden Door", 0x000000,0.0,3}, //40 -{"Ladder", 0x000000,0.0,3}, //41 -{"Rail", 0x686868,1.0,1}, //42 -{"Cobblestone Stairs", 0x818181,1.0,3}, //43 -{"Wall Sign", 0x000000,0.0,1}, //44 -{"Lever", 0x000000,0.0,1}, //45 -{"Stone Pressure Plate", 0xa4a4a4,1.0,1}, //46 -{"Iron Door", 0x000000,0.0,3}, //47 -{"Wooden Pressure Plate", 0x9d7f4e,1.0,1}, //48 -{"Redstone Ore", 0x8f0303,1.0,0}, //49 -{"Glowing Redstone Ore", 0x900303,1.0,0}, //4a -{"Redstone Torch (off)", 0x560000,1.0,1}, //4b -{"Redstone Torch (on)", 0xfd0000,1.0,1}, //4c -{"Stone Button", 0x000000,0.0,1}, //4d -{"Snow", 0xf0fafa,1.0,1}, //4e -{"Ice", 0x4d6a9c,0.613,3}, //4f -{"Snow Block", 0xf1fafa,1.0,0}, //50 -{"Cactus", 0x0f791d,1.0,1}, //51 -{"Clay", 0xa2a7b4,1.0,0}, //52 -{"Sugar Cane", 0x72944e,1.0,1}, //53 -{"Jukebox", 0x8a5a40,1.0,0}, //54 -{"Fence", 0x9f814e,1.0,3}, //55 -{"Pumpkin", 0xc07615,1.0,0}, //56 -{"Netherrack", 0x723a38,1.0,0}, //57 -{"Soul Sand", 0x554134,1.0,0}, //58 -{"Glowstone", 0xf9d49c,1.0,3}, //59 -{"Nether Portal", 0xd67fff,1.0,1}, //5a -{"Jack-O-Lantern", 0xe9b416,1.0,0}, //5b -{"Cake", 0xffffff,1.0,3}, //5c -{"Redstone Repeater (off)",0x560000,1.0,3}, //5d -{"Redstone Repeater (on)", 0xee5555,1.0,3}, //5e -{"Locked Chest", 0xa06f23,1.0,3}, //5f -{"Trapdoor", 0x886634,1.0,3}, //60 -{"Monster Egg", 0x787878,1.0,0}, //61 -{"Stone Brick", 0x797979,1.0,0}, //62 -{"Huge Brown Mushroom", 0x654b39,1.0,0}, //63 -{"Huge Red Mushroom", 0xa91b19,1.0,0}, //64 -{"Iron Bars", 0xa3a4a4,1.0,3}, //65 -{"Glass Pane", 0x607b7f,0.5,3}, //66 -{"Melon", 0xaead27,1.0,0}, //67 -{"Pumpkin Stem", 0x000000,0.0,1}, //68 -{"Melon Stem", 0x000000,0.0,1}, //69 -{"Vines", 0x1e4c0a,1.0,1}, //6a -{"Fence Gate", 0xa88754,1.0,3}, //6b -{"Brick Stairs", 0xa0807b,1.0,3}, //6c -{"Stone Brick Stairs", 0x797979,1.0,3}, //6d -{"Mycelium", 0x685d69,1.0,0}, //6e -{"Lily Pad", 0x0c5f14,1.0,0}, //6f -{"Nether Brick", 0x32171c,1.0,0}, //70 -{"Nether Brick Fence", 0x241316,1.0,3}, //71 -{"Nether Brick Stairs", 0x32171c,1.0,3}, //72 -{"Nether Wart", 0x81080a,1.0,1}, //73 -{"Enchantment Table", 0x45dec3,1.0,1}, //74 -{"Brewing Stand", 0x77692e,1.0,1}, //75 -{"Cauldron", 0x323232,1.0,0}, //76 -{"End Portal", 0x000000,1.0,1}, //77 -{"End Portal Frame", 0x366059,1.0,0}, //78 -{"End Stone", 0xdadca6,1.0,0}, //79 -{"Dragon Egg", 0x1b1729,1.0,0}, //7a -{"Redstone Lamp (off)", 0xf9d49c,1.0,0}, //7b -{"Redstone Lamp (on)", 0xf9d49c,1.0,0}, //7c -{"Wooden Double Slab", 0x9f8150,1.0,0}, //7d -{"Wooden Slab", 0x9f8150,1.0,3}, //7e -{"Cocoa Plant", 0x79350d,1.0,0}, //7f -{"Sandstone Stairs", 0xe0d8a6,1.0,3}, //80 -{"Emerald Ore", 0x17ce5c,1.0,0}, //81 -{"Ender Chest", 0x2f4246,1.0,3}, //82 -{"Tripwire Hook", 0x343434,1.0,1}, //83 -{"Tripwire", 0xffeeee,1.0,1}, //84 -{"Emerald Block", 0x5edb81,1.0,0}, //85 -{"Spruce Wood Stairs", 0x4d3822,1.0,3}, //86 -{"Birch Wood Stairs", 0x897b55,1.0,3}, //87 -{"Jungle Wood Stairs", 0x66482f,1.0,3}, //88 -{"Command Block", 0xba764a,1.0,0}, //89 -{"Beacon", 0x9fdedb,1.0,0}, //8a -{"Cobblestone Wall", 0x828282,1.0,3}, //8b -{"Flower Pot", 0x5d3328,1.0,1}, //8c -{"Carrots", 0x08c400,1.0,1}, //8d -{"Potatoes", 0x00e01a,1.0,1}, //8e -{"Wooden Button", 0x9f8150,0.0,1}, //8f -{"Head", 0x000000,0.0,1}, //90 -{"Anvil", 0x393939,1.0,1} //91 -}; - -#define numBlocks 0x92 //number just after last block - -enum block_types { - BLOCK_AIR = 0x00, - BLOCK_STATIONARY_WATER = 0x09, - BLOCK_LOG = 0x11, - BLOCK_LEAVES = 0x12, - BLOCK_SNOW = 0x4e -}; - - -#endif diff --git a/MinutorMap/cache.c b/MinutorMap/cache.c deleted file mode 100644 index e9c89b41..00000000 --- a/MinutorMap/cache.c +++ /dev/null @@ -1,189 +0,0 @@ -/* -Copyright (c) 2011, Ryan Hitchman -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "stdafx.h" - -#include -#include -#include - -/* a simple cache based on a hashtable with separate chaining */ - -// these must be powers of two -#define HASH_XDIM 64 -#define HASH_ZDIM 64 -#define HASH_SIZE (HASH_XDIM * HASH_ZDIM) - -// arbitrary, let users tune this? -// 6000 entries translates to minutor using ~300MB of RAM (on x64) -#define HASH_MAX_ENTRIES 12000 - -typedef struct block_entry { - int x, z; - struct block_entry *next; - Block *data; -} block_entry; - -typedef struct { - int x, z; -} Point; - -static block_entry **blockCache=NULL; - -static Point *cacheHistory=NULL; -static int cacheN=0; - -static int hash_coord(int x, int z) { - return (x&(HASH_XDIM-1))*(HASH_ZDIM) + (z & (HASH_ZDIM - 1)); -} - -static block_entry* hash_new(int x, int z, void* data, block_entry* next) { - block_entry* ret = malloc(sizeof(block_entry)); - ret->x = x; - ret->z = z; - ret->data = data; - ret->next = next; - return ret; -} - -void Cache_Add(int bx, int bz, void *data) -{ - int hash; - block_entry *to_del=NULL; - - if (blockCache == NULL) { - blockCache = (block_entry**)malloc(sizeof(block_entry*) * HASH_SIZE); - memset(blockCache, 0, sizeof(block_entry*) * HASH_SIZE); - cacheHistory = (Point*)malloc(sizeof(Point) * HASH_MAX_ENTRIES); - cacheN = 0; - } - - hash = hash_coord(bx, bz); - - if (cacheN >= HASH_MAX_ENTRIES) { - // we need to remove an old entry - Point coord = cacheHistory[cacheN % HASH_MAX_ENTRIES]; - int oldhash = hash_coord(coord.x, coord.z); - - block_entry **cur = &blockCache[oldhash]; - while (*cur != NULL) { - if ((**cur).x == coord.x && (**cur).z == coord.z) { - to_del = *cur; - *cur = to_del->next; - block_free(to_del->data); - //free(to_del); // we will re-use this entry - break; - } - cur = &((**cur).next); - } - } - - if (to_del != NULL) { - // re-use the old entry for the new one - to_del->next = blockCache[hash]; - to_del->x = bx; - to_del->z = bz; - to_del->data = data; - blockCache[hash] = to_del; - } else { - blockCache[hash] = hash_new(bx, bz, data, blockCache[hash]); - } - - cacheHistory[cacheN % HASH_MAX_ENTRIES].x = bx; - cacheHistory[cacheN % HASH_MAX_ENTRIES].z = bz; - cacheN++; -} - -void *Cache_Find(int bx,int bz) -{ - block_entry *entry; - - if (blockCache == NULL) - return NULL; - - for (entry = blockCache[hash_coord(bx, bz)]; entry != NULL; entry = entry->next) - if (entry->x == bx && entry->z == bz) - return entry->data; - - return NULL; -} - -void Cache_Empty() -{ - int hash; - block_entry *entry,*next; - - if (blockCache == NULL) - return; - - for (hash = 0; hash < HASH_SIZE; hash++) { - entry = blockCache[hash]; - while (entry != NULL) { - next = entry->next; - free(entry->data); - free(entry); - entry = next; - } - } - - free(blockCache); - free(cacheHistory); - blockCache = NULL; -} - -/* a simple malloc wrapper, based on the observation that a common - * behavior pattern for Minutor when the cache is at max capacity - * is something like: - * - * newBlock = malloc(sizeof(Block)); - * cacheAdd(newBlock) - * free(oldBlock) // same size - * - * Repeatedly. Recycling the old block can prevent the need for - * malloc and free. - */ - -static Block* last_block = NULL; - -Block* block_alloc() -{ - if (last_block != NULL) - { - Block* ret = last_block; - last_block = NULL; - return ret; - } - return malloc(sizeof(Block)); -} - -void block_free(Block* block) -{ - if (last_block != NULL) - free(last_block); - - last_block = block; -} diff --git a/MinutorMap/cache.h b/MinutorMap/cache.h deleted file mode 100644 index 182b35df..00000000 --- a/MinutorMap/cache.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun - Parts Copyright (c) 2010-2011, Ryan Hitchman -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef __CACHE_H__ -#define __CACHE_H__ - -typedef struct Block { - unsigned char grid[16*16*256]; // blockid array [y+(z+x*16)*256] - unsigned char light[16*16*128]; - - unsigned char rendercache[16*16*4]; // bitmap of last render - unsigned char heightmap[16*16]; // height of rendered block [x+z*16] - unsigned char biomes[16*16]; //biome ids for block - - int rendery; // slice height for last render - int renderopts; // options bitmask for last render - char rendermissing; // the z-offset of a block that was missing - // when it was last rendered (for blocks on the - // left edge of the map, this might be +1) - unsigned short colormap; //color map when this was rendered -} Block; - -void *Cache_Find(int bx,int bz); -void Cache_Add(int bx,int bz,void *data); -void Cache_Empty(); - -/* a simple malloc wrapper, based on the observation that a common - * behavior pattern for Minutor when the cache is at max capacity - * is something like: - * - * newBlock = malloc(sizeof(Block)); - * cacheAdd(newBlock) - * free(oldBlock) // same size - * - * Repeated over and over. Recycling the most recently freed block - * prevents expensive reallocations. - */ - -Block* block_alloc(); // allocate memory for a block -void block_free(Block* block); // release memory for a block - -#endif diff --git a/MinutorMap/dllmain.c b/MinutorMap/dllmain.c deleted file mode 100644 index 4dc85ded..00000000 --- a/MinutorMap/dllmain.c +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// dllmain.cpp : Defines the entry point for the DLL application. -#include "stdafx.h" - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - diff --git a/MinutorMap/nbt.c b/MinutorMap/nbt.c deleted file mode 100644 index 8b5c2b50..00000000 --- a/MinutorMap/nbt.c +++ /dev/null @@ -1,417 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "stdafx.h" -#include - -static void skipType(bfFile bf, int type); -static void skipList(bfFile bf); -static void skipCompound(bfFile bf); - -void bfread(bfFile bf, void *target, int len) -{ - if (bf.type == BF_BUFFER) { - memcpy(target, bf.buf + *bf.offset, len); - *bf.offset += len; - } else if (bf.type == BF_GZIP) { - gzread(bf.gz, target, len); - } -} - -void bfseek(bfFile bf, int offset, int whence) -{ - if (bf.type == BF_BUFFER) { - if (whence == SEEK_CUR) - *bf.offset += offset; - else if (whence == SEEK_SET) - *bf.offset = offset; - } else if (bf.type == BF_GZIP) { - gzseek(bf.gz, offset, whence); - } -} - -bfFile newNBT(const char *filename) -{ - bfFile ret; - ret.type = BF_GZIP; - ret.gz = gzopen(filename,"rb"); - ret._offset = 0; - ret.offset = &ret._offset; - return ret; -} - -static unsigned short readWord(bfFile bf) -{ - unsigned char buf[2]; - bfread(bf,buf,2); - return (buf[0]<<8)|buf[1]; -} -static unsigned int readDword(bfFile bf) -{ - unsigned char buf[4]; - bfread(bf,buf,4); - return (buf[0]<<24)|(buf[1]<<16)|(buf[2]<<8)|buf[3]; -} -static unsigned long long readLong(bfFile bf) -{ - int i; - union { - double f; - unsigned long long l; - } fl; - unsigned char buf[8]; - bfread(bf,buf,8); - fl.l=0; - for (i=0;i<8;i++) - { - fl.l<<=8; - fl.l|=buf[i]; - } - return fl.l; -} -static double readDouble(bfFile bf) -{ - int i; - union { - double f; - unsigned long long l; - } fl; - unsigned char buf[8]; - bfread(bf,buf,8); - fl.l=0; - for (i=0;i<8;i++) - { - fl.l<<=8; - fl.l|=buf[i]; - } - return fl.f; -} -static void skipType(bfFile bf,int type) -{ - int len; - switch (type) - { - case 1: //byte - bfseek(bf,1,SEEK_CUR); - break; - case 2: //short - bfseek(bf,2,SEEK_CUR); - break; - case 3: //int - bfseek(bf,4,SEEK_CUR); - break; - case 4: //long - bfseek(bf,8,SEEK_CUR); - break; - case 5: //float - bfseek(bf,4,SEEK_CUR); - break; - case 6: //double - bfseek(bf,8,SEEK_CUR); - break; - case 7: //byte array - len=readDword(bf); - bfseek(bf,len,SEEK_CUR); - break; - case 8: //string - len=readWord(bf); - bfseek(bf,len,SEEK_CUR); - break; - case 9: //list - skipList(bf); - break; - case 10: //compound - skipCompound(bf); - break; - case 11: //int array - len=readDword(bf); - bfseek(bf,len*4,SEEK_CUR); - break; - } -} -static void skipList(bfFile bf) -{ - int len,i; - unsigned char type; - bfread(bf,&type,1); - len=readDword(bf); - switch (type) - { - case 1: //byte - bfseek(bf,len,SEEK_CUR); - break; - case 2: //short - bfseek(bf,len*2,SEEK_CUR); - break; - case 3: //int - bfseek(bf,len*4,SEEK_CUR); - break; - case 4: //long - bfseek(bf,len*8,SEEK_CUR); - break; - case 5: //float - bfseek(bf,len*4,SEEK_CUR); - break; - case 6: //double - bfseek(bf,len*8,SEEK_CUR); - break; - case 7: //byte array - for (i=0;i - -enum {BF_BUFFER, BF_GZIP}; - -// wraps gzFile and memory buffers with a consistent interface -typedef struct { - int type; - unsigned char *buf; - int *offset; - int _offset; - gzFile gz; -} bfFile; - -bfFile newNBT(const char *filename); -int nbtGetBlocks(bfFile bf, unsigned char *buff,unsigned char *blockLight,unsigned char *biomes); -void nbtGetSpawn(bfFile bf,int *x,int *y,int *z); -void nbtGetPlayer(bfFile bf,int *px,int *py,int *pz); -void nbtGetPlayerSpawn(bfFile bf,int *px,int *py,int *pz); -void nbtGetRandomSeed(bfFile bf,long long *seed); -void nbtClose(bfFile bf); - -#endif diff --git a/MinutorMap/region.c b/MinutorMap/region.c deleted file mode 100644 index fa5a9415..00000000 --- a/MinutorMap/region.c +++ /dev/null @@ -1,164 +0,0 @@ -/* -Copyright (c) 2011, Ryan Hitchman -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - -Region File Format - -Concept: The minimum unit of storage on hard drives is 4KB. 90% of Minecraft - chunks are smaller than 4KB. 99% are smaller than 8KB. Write a simple - container to store chunks in single files in runs of 4KB sectors. - -Each region file represents a 32x32 group of chunks. The conversion from -chunk number to region number is floor(coord / 32); a chunk at (30, -3) -would be in region (0, -1), and one at (70, -30) would be at (3, -1). -Region files are named "r.x.z.mcr", where x and z are the region coordinates. - -A region file begins with an 8KB header that describes where chunks are stored -in the file and when they were last modified. A 4-byte big-endian integer -represents sector offsets and sector counts. The chunk offset for a chunk -located at (x, z) begins at byte 4*(x+z*32) in the file. The bottom byte of -the chunk offset indicates the number of sectors the chunk takes up,and -the top 3 bytes represent the sector number of the chunk. Given a chunk -offset o, the chunk data begins at byte 4096*(o/256) and takes up at -most 4096*(o%256) bytes. A chunk cannot exceed 1MB in size. A chunk offset -of 0 indicates a missing chunk. - -The 4-byte big-endian modification time for a chunk (x,z) begins at byte -4096+4*(x+z*32) in the file. The time is stored as the number of seconds -since Jan 1, 1970 that the chunk was last written (aka Unix Time). - -Chunk data begins with a 4-byte big-endian integer representing the chunk data -length in bytes, not counting the length field. The length must be smaller than -4096 times the number of sectors. The next byte is a version number, to allow -backwards-compatible updates to how chunks are encoded. - -A version number of 1 is never used, for obscure historical reasons. - -A version number of 2 represents a deflated (zlib compressed) NBT file. The -deflated data is the chunk length - 1. - -*/ - -#include "stdafx.h" - -#define CHUNK_DEFLATE_MAX (1024 * 1024) // 1MB limit for compressed chunks -#define CHUNK_INFLATE_MAX (1024 * 2048) // 2MB limit for inflated chunks - -#define RERROR(x) if(x) { PortaClose(regionFile); return 0; } - - -// directory: the base world directory, e.g. "/home/ryan/.minecraft/saves/World1/" -// cx, cz: the chunk's x and z offset -// block: a 32KB buffer to write block data into -// blockLight: a 16KB buffer to write block light into (not skylight) -// -// returns 1 on success, 0 on error -int regionGetBlocks(char *directory, int cx, int cz, unsigned char *block, unsigned char *blockLight, unsigned char *biomes) -{ - char filename[256]; - PORTAFILE regionFile; - static unsigned char *buf=NULL,*out=NULL; - int br; - int sectorNumber, offset, chunkLength; - - int status; - bfFile bf; - - static z_stream strm; - static int strm_initialized = 0; - - if (buf==NULL) - { - buf=malloc(CHUNK_DEFLATE_MAX); - out=malloc(CHUNK_INFLATE_MAX); - } - - // open the region file - sprintf_s(filename,256,"%s/region/r.%d.%d.mca",directory,cx>>5,cz>>5); - - regionFile=PortaOpen(filename); - if (regionFile == NULL) - return 0; - - // seek to the chunk offset - RERROR(PortaSeek(regionFile, 4*((cx&31)+(cz&31)*32))); - - // get the chunk offset - RERROR(PortaRead(regionFile,buf, 4)); - - sectorNumber = buf[3]; // how many 4096B sectors the chunk takes up - offset = (buf[0]<<16)|(buf[1]<<8)|buf[2]; // 4KB sector the chunk is in - - RERROR(offset == 0); // an empty chunk - - RERROR(PortaSeek(regionFile, 4096*offset)); - - RERROR(sectorNumber * 4096 > CHUNK_DEFLATE_MAX); - - // read chunk in one shot - // this is faster than reading the header and data separately - RERROR(PortaRead(regionFile,buf, 4096 * sectorNumber)); - - chunkLength = (buf[0]<<24)|(buf[1]<<16)|(buf[2]<<8)|buf[3]; - - // sanity check chunk size - RERROR(chunkLength > sectorNumber * 4096 || chunkLength > CHUNK_DEFLATE_MAX); - - // only handle zlib-compressed chunks (v2) - RERROR(buf[4] != 2); - - PortaClose(regionFile); - - // decompress chunk - - - if (!strm_initialized) { - // we re-use dynamically allocated memory - strm.zalloc = (alloc_func)NULL; - strm.zfree = (free_func)NULL; - strm.opaque = NULL; - inflateInit(&strm); - strm_initialized = 1; - } - - strm.next_out = out; - strm.avail_out = CHUNK_INFLATE_MAX; - strm.avail_in = chunkLength - 1; - strm.next_in = buf + 5; - - inflateReset(&strm); - status = inflate(&strm, Z_FINISH); // decompress in one step - - if (status != Z_STREAM_END) // error inflating (not enough space?) - return 0; - - // the uncompressed chunk data is now in "out", with length strm.avail_out - - bf.type = BF_BUFFER; - bf.buf = out; - bf._offset = 0; - bf.offset = &bf._offset; - - return nbtGetBlocks(bf, block, blockLight, biomes); -} diff --git a/MinutorMap/region.h b/MinutorMap/region.h deleted file mode 100644 index 431aaa9e..00000000 --- a/MinutorMap/region.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright (c) 2010, Ryan Hitchman -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef __REGION_H__ -#define __REGION_H__ - -int regionGetBlocks(char *filename, int bx, int bz, unsigned char *block, unsigned char *blockLight, unsigned char *biomes); - -#endif diff --git a/MinutorMap/stdafx.c b/MinutorMap/stdafx.c deleted file mode 100644 index 6e0595cc..00000000 --- a/MinutorMap/stdafx.c +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// stdafx.cpp : source file that includes just the standard includes -// MinutorMap.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/MinutorMap/stdafx.h b/MinutorMap/stdafx.h deleted file mode 100644 index 2ddb6ce5..00000000 --- a/MinutorMap/stdafx.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#ifdef WIN32 -#include "targetver.h" - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -#endif - -#include "MinutorMap.h" -#include "nbt.h" -#include "region.h" -#include "cache.h" -#include -#include - -#ifdef WIN32 -#define PORTAFILE HANDLE -#define PortaOpen(fn) CreateFileA(fn,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL) -#define PortaSeek(h,ofs) SetFilePointer(h,ofs,NULL,FILE_BEGIN)==INVALID_SET_FILE_POINTER -#define PortaRead(h,buf,len) !ReadFile(h,buf,len,&br,NULL) -#define PortaClose(h) CloseHandle(h) -#endif - -#ifndef WIN32 -#define strncpy_s(f,n,w,m) strncpy(f,w,m) -#define strncat_s(f,n,w,m) strncat(f,w,m) -#define sprintf_s snprintf -#define PORTAFILE FILE* -#define PortaOpen(fn) fopen(fn,"rb") -#define PortaSeek(h,ofs) fseek(h,ofs,SEEK_SET) -#define PortaRead(h,buf,len) fread(buf,len,1,h)!=1 -#define PortaClose(h) fclose(h) -#endif - -#if __STDC_VERSION__ >= 199901L -#define C99 -#endif diff --git a/MinutorMap/targetver.h b/MinutorMap/targetver.h deleted file mode 100644 index f3273087..00000000 --- a/MinutorMap/targetver.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/MinutorMap/zlibstat.lib b/MinutorMap/zlibstat.lib deleted file mode 100644 index 88e3958012a43dbe2af47dae8a5fb74b7d9d84d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629258 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ï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 diff --git a/Minutorwin.sln b/Minutorwin.sln deleted file mode 100644 index 1e7ab5c4..00000000 --- a/Minutorwin.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C++ Express 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Minutor", "Win\Minutor.vcxproj", "{DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}" - ProjectSection(ProjectDependencies) = postProject - {9E6153B8-20A1-42DC-B889-DAD936A8A786} = {9E6153B8-20A1-42DC-B889-DAD936A8A786} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MinutorMap", "MinutorMap\MinutorMap.vcxproj", "{9E6153B8-20A1-42DC-B889-DAD936A8A786}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release 64bit|Win32 = Release 64bit|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Debug|Win32.ActiveCfg = Debug|Win32 - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Debug|Win32.Build.0 = Debug|Win32 - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Release 64bit|Win32.ActiveCfg = Release|Win32 - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Release 64bit|Win32.Build.0 = Release|Win32 - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Release|Win32.ActiveCfg = Release|Win32 - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655}.Release|Win32.Build.0 = Release|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Debug|Win32.ActiveCfg = Debug|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Debug|Win32.Build.0 = Debug|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Release 64bit|Win32.ActiveCfg = Release 64bit|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Release 64bit|Win32.Build.0 = Release 64bit|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Release|Win32.ActiveCfg = Release|Win32 - {9E6153B8-20A1-42DC-B889-DAD936A8A786}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/OSX/ColorScheme.m b/OSX/ColorScheme.m deleted file mode 100644 index 3ee43469..00000000 --- a/OSX/ColorScheme.m +++ /dev/null @@ -1,259 +0,0 @@ -/* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - */ -#import "ColorScheme.h" -#include "../MinutorMap/blockInfo.h" - -@interface ColorScheme : NSObject { - NSString *name; - unsigned int colors[256]; -} -@property (retain) NSString *name; -@end -@implementation ColorScheme -@synthesize name; -// creating a new color scheme always copies the currently selected one --(id)initWithName:(NSString *)theName -{ - if (self=[super init]) - { - name=[theName retain]; - for (int i=0;i>16; - g=color>>8; - b=color; - double alpha=blocks[i].alpha; - r/=alpha; - g/=alpha; - b/=alpha; - a=alpha*255; - color=(r<<24)|(g<<16)|(b<<8)|a; - colors[i]=color; - } - } - return self; -} --(void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:name forKey:@"name"]; - [encoder encodeArrayOfObjCType:"I" count:255 at:colors]; -} --(id)initWithCoder:(NSCoder *)decoder -{ - if (self=[super init]) - { - name=[[decoder decodeObjectForKey:@"name"] retain]; - [decoder decodeArrayOfObjCType:"I" count:255 at:colors]; - } - return self; - -} --(NSString *)getColorString:(int)idx -{ - return [NSString stringWithFormat:@"#%06x",(colors[idx]>>8)]; -} --(NSString *)getAlphaString:(int)idx -{ - return [NSString stringWithFormat:@"%d",colors[idx]&0xff]; -} --(void)setColor:(unsigned int)color forIndex:(int)idx -{ - colors[idx]&=0xff; - colors[idx]|=color<<8; -} --(void)setAlpha:(unsigned int)alpha forIndex:(int)idx -{ - colors[idx]&=~0xff; - colors[idx]|=alpha&0xff; -} --(unsigned int *)getColors -{ - return colors; -} --(void)dealloc -{ - [name release]; - [super dealloc]; -} -@end - - -@implementation ColorSchemes - --(void)readDefaults -{ - schemes=[[NSMutableArray array] retain]; - - NSArray *s=[[NSUserDefaults standardUserDefaults] arrayForKey:@"colorSchemes"]; - if (s) - { - for (NSData *data in s) - { - ColorScheme *cs=(ColorScheme *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; - [schemes addObject:cs]; - NSMenuItem *item=[[NSMenuItem alloc] initWithTitle:cs.name action:@selector(selectScheme:) keyEquivalent:@""]; - [menu insertItem:item atIndex:[schemes count]]; - [item release]; - } - } - - //setup standard colorscheme - standard=[[ColorScheme alloc] initWithName:@"Standard"]; - selected=0; -} - --(void)select:sender -{ - selected=[menu indexOfItem:sender]; - for (int i=0;i<[menu numberOfItems];i++) - { - [[menu itemAtIndex:i] setState:NSOffState]; - } - [[menu itemAtIndex:selected] setState:NSOnState]; -} --(unsigned int *)current -{ - if (selected==0) - return [standard getColors]; - ColorScheme *cs=[schemes objectAtIndex:selected-1]; - return [cs getColors]; -} - --(void)saveDefaults -{ - NSUserDefaults *def=[NSUserDefaults standardUserDefaults]; - NSMutableArray *encoded=[[NSMutableArray alloc] init]; - for (ColorScheme *cs in schemes) - { - [encoded addObject:[NSKeyedArchiver archivedDataWithRootObject:cs]]; - } - [def setObject:encoded forKey:@"colorSchemes"]; -} - --(IBAction)editColorSchemes:sender -{ - [schemesWin makeKeyAndOrderFront:sender]; -} - --(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tc row:(NSInteger)row -{ - if (tv==schemeList) - { - ColorScheme *cs=[schemes objectAtIndex:row]; - return cs.name; - } - if ([[tc identifier] isEqual:@"id"]) - return [NSString stringWithFormat:@"%d.",row+1]; - if ([[tc identifier] isEqual:@"name"]) - return [NSString stringWithCString:blocks[row].name encoding:NSASCIIStringEncoding]; - ColorScheme *cs=[schemes objectAtIndex:[schemeList selectedRow]]; - if ([[tc identifier] isEqual:@"color"]) - return [cs getColorString:row]; - if ([[tc identifier] isEqual:@"alpha"]) - return [cs getAlphaString:row]; - return nil; -} --(void)tableView:(NSTableView *)tv setObjectValue:obj forTableColumn:(NSTableColumn *)tc row:(NSInteger)row -{ - if (tv==schemeList) - { - ColorScheme *cs=[schemes objectAtIndex:row]; - cs.name=obj; - NSMenuItem *item=[menu itemAtIndex:1+row]; - [item setTitle:obj]; - } - else - { - ColorScheme *cs=[schemes objectAtIndex:[schemeList selectedRow]]; - NSString *str=obj; - NSUInteger range=[str rangeOfString:@"#"].location; - if (range!=NSNotFound) - str=[str substringFromIndex:range+1]; - - str=[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - if ([[tc identifier] isEqual:@"color"]) - { - - unsigned int color; - NSScanner *scan=[NSScanner scannerWithString:str]; - if ([scan scanHexInt:&color]) - [cs setColor:color forIndex:row]; - } - if ([[tc identifier] isEqual:@"alpha"]) - { - id f=[[NSNumberFormatter alloc] init]; - NSNumber *num=[f numberFromString:str]; - [cs setAlpha:[num unsignedIntValue] forIndex:row]; - [f release]; - } - } - [self saveDefaults]; -} --(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView -{ - if (tableView==schemeList) - return [schemes count]; - else - { - return numBlocks; - } -} - --(IBAction) addOrRemove:sender -{ - NSSegmentedControl *seg=sender; - if ([seg selectedSegment]==0) //add - { - ColorScheme *cs=[[ColorScheme alloc] initWithName:@"New Color Scheme"]; - [schemes addObject:cs]; - NSMenuItem *item=[[NSMenuItem alloc] initWithTitle:@"New Color Scheme" action:@selector(selectScheme:) keyEquivalent:@""]; - [menu insertItem:item atIndex:[schemes count]]; - [item release]; - [schemeList reloadData]; - [self saveDefaults]; - } - else - { - NSInteger num=[schemeList selectedRow]; - if (num==-1) - return; - [schemes removeObjectAtIndex:num]; - [menu removeItemAtIndex:num+1]; - [schemeList reloadData]; - [self saveDefaults]; - } -} - --(IBAction) edit:sender -{ - if ([schemeList selectedRow]==-1) return; - [schemeWin makeKeyAndOrderFront:sender]; -} - -@end diff --git a/OSX/English.lproj/InfoPlist.strings b/OSX/English.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff..00000000 --- a/OSX/English.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/OSX/English.lproj/MainMenu.xib b/OSX/English.lproj/MainMenu.xib deleted file mode 100644 index bb2796a2..00000000 --- a/OSX/English.lproj/MainMenu.xib +++ /dev/null @@ -1,2663 +0,0 @@ - - - - 1050 - 11E53 - 2549 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2549 - - - YES - NSButton - NSButtonCell - NSCustomObject - NSCustomView - NSMenu - NSMenuItem - NSProgressIndicator - NSScrollView - NSScroller - NSSegmentedCell - NSSegmentedControl - NSSlider - NSSliderCell - NSTableColumn - NSTableHeaderView - NSTableView - NSTextField - NSTextFieldCell - NSView - NSWindowTemplate - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - minutor - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - minutor - - YES - - - About minutor - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide minutor - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit minutor - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 2147483647 - - - submenuAction: - - File - - YES - - - Open World - - 2147483647 - - - submenuAction: - - Open World - - YES - - - - - - Open… - o - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - - - - View - - 2147483647 - - - submenuAction: - - View - - YES - - - Jump to Spawn - - 2147483647 - - - 101 - - - - Jump to Player - - 2147483647 - - - 102 - - - - YES - YES - - - 2147483647 - - - - - - Nether - - 2147483647 - - - - - - End - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Lighting - 1 - 262144 - 2147483647 - - - - - - Cave Mode - 2 - 262144 - 2147483647 - - - - - - Hide Obscured - 3 - 262144 - 2147483647 - - - - - - Depth Shading - 4 - 262144 - 2147483647 - - - - - - Show Mob Spawn - 5 - 262144 - 2147483647 - - - - - - - - - Colors - - 2147483647 - - - submenuAction: - - Colors - - YES - - - Standard - - 2147483647 - 1 - - - - - - YES - YES - - - 2147483647 - - - - - - Color Schemes... - - 2147483647 - - - - - - - - - Window - - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bring All to Front - - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - minutor Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - minutorAppDelegate - - - NSFontManager - - - 15 - 2 - {{612, 306}, {496, 453}} - 1685585920 - Window - NSWindow - - - {496, 431} - - - 274 - - YES - - - 266 - {{18, 424}, {419, 21}} - - YES - - -2079981824 - 0 - - - 255 - 0.0 - 0.0 - 0.0 - 0 - 1 - NO - NO - - - - - 274 - {{0, 20}, {496, 400}} - - Map - - - - 265 - {{443, 424}, {33, 22}} - - YES - - -2072904127 - 272630784 - 255 - - LucidaGrande - 13 - 1044 - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - - - - 258 - {{5, 2}, {494, 17}} - - YES - - 67239488 - 272631808 - Label - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - - - - 1313 - - {{381, 3}, {96, 12}} - - 24840 - 100 - - - {496, 453} - - {{0, 0}, {1680, 1028}} - {496, 453} - {10000000000000, 10000000000000} - YES - - - MapViewer - - - 15 - 2 - {{196, 287}, {363, 223}} - 1685585920 - Color Schemes - NSWindow - - - - - 256 - - YES - - - 268 - - YES - - - 2304 - - YES - - - 256 - {321, 152} - - YES - - - -2147483392 - {{224, 0}, {16, 17}} - - - YES - - 318 - 40 - 1000 - - 75628096 - 2048 - - - LucidaGrande - 11 - 3100 - - - 3 - MC4zMzMzMzI5ODU2AA - - - 6 - System - headerTextColor - - - - - 337772096 - 2048 - Text Cell - - - - 6 - System - controlBackgroundColor - - - - - 3 - YES - YES - - - - 3 - 2 - - - 6 - System - gridColor - - 3 - MC41AA - - - 17 - -700448768 - - - 4 - 15 - 0 - YES - 0 - 1 - - - {{1, 1}, {321, 152}} - - - - - 4 - - - - -2147483392 - {{224, 17}, {15, 102}} - - - _doScroller: - 0.99425292015075684 - - - - -2147483392 - {{1, 32}, {46, 15}} - - 1 - - _doScroller: - 0.99725282192230225 - - - {{20, 49}, {323, 154}} - - - 133682 - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 268 - {{20, 19}, {67, 23}} - - YES - - 67239424 - 0 - - LucidaGrande - 13 - 16 - - - - YES - - 32 - - NSImage - NSAddTemplate - - - 0 - - - 32 - - NSImage - NSRemoveTemplate - - - 1 - 0 - - - 1 - 2 - 6 - - - - - 268 - {{253, 12}, {96, 32}} - - YES - - 67239424 - 134217728 - Edit - - - -2038284033 - 129 - - - 200 - 25 - - - - {363, 223} - - {{0, 0}, {1680, 1028}} - {10000000000000, 10000000000000} - YES - - - 15 - 2 - {{196, 241}, {512, 269}} - 1685585920 - Color Scheme - NSWindow - - - - - 256 - - YES - - - 268 - - YES - - - 2304 - - YES - - - 256 - {512, 254} - - YES - - - 256 - {512, 17} - - - - - - -2147483392 - {{-26, 0}, {16, 17}} - - - - YES - - id - 40 - 40 - 1000 - - 75628096 - 2048 - ID - - - 3 - MC4zMzMzMzI5ODU2AA - - - - - 67239488 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - name - 300 - 40 - 1000 - - 75628096 - 2048 - Block Name - - - - - - 67239488 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - color - 83 - 10 - 3.4028230607370965e+38 - - 75628096 - 2048 - Color - - - 6 - System - headerColor - - - - - - 337772096 - 272630784 - Text - - - - - - 3 - YES - YES - - - - alpha - 77 - 10 - 3.4028230607370965e+38 - - 75628096 - 2048 - Alpha - - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - 3 - 2 - - - 17 - -163577856 - - - 2 - 4 - 15 - 0 - YES - 0 - 1 - - - {{1, 17}, {512, 254}} - - - - - 4 - - - - -2147483392 - {{498, 17}, {15, 238}} - - - _doScroller: - 0.94094491004943848 - - - - -2147483392 - {{1, 256}, {497, 15}} - - 1 - - _doScroller: - 0.99805068969726562 - - - - 2304 - - YES - - - {{1, 0}, {512, 17}} - - - - - 4 - - - - {{-1, -2}, {514, 272}} - - - 133682 - - - - - QSAAAEEgAABBmAAAQZgAAA - - - {512, 269} - - {{0, 0}, {1680, 1028}} - {10000000000000, 10000000000000} - YES - - - ColorSchemes - - - - - YES - - - terminate: - - - - 449 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 495 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - showHelp: - - - - 493 - - - - performClose: - - - - 609 - - - - performMiniaturize: - - - - 655 - - - - performZoom: - - - - 656 - - - - arrangeInFront: - - - - 659 - - - - mapViewer - - - - 567 - - - - openWorld: - - - - 628 - - - - jumpToSpawn: - - - - 657 - - - - jumpToPlayer: - - - - 658 - - - - toggleLighting: - - - - 665 - - - - toggleCaveMode: - - - - 666 - - - - toggleObscured: - - - - 667 - - - - toggleDepth: - - - - 668 - - - - selectScheme: - - - - 737 - - - - colorSchemes - - - - 744 - - - - toggleHell: - - - - 754 - - - - worldMenu - - - - 758 - - - - hellItem - - - - 761 - - - - enderItem - - - - 762 - - - - toggleEnder: - - - - 763 - - - - toggleMob: - - - - 768 - - - - window - - - - 566 - - - - map - - - - 573 - - - - slider - - - - 574 - - - - sliderChanged: - - - - 583 - - - - depthText - - - - 587 - - - - status - - - - 635 - - - - progressBar - - - - 756 - - - - dataSource - - - - 745 - - - - dataSource - - - - 748 - - - - menu - - - - 739 - - - - schemeList - - - - 740 - - - - schemesWin - - - - 741 - - - - addOrRemove: - - - - 742 - - - - editColorSchemes: - - - - 743 - - - - edit: - - - - 746 - - - - schemeWin - - - - 747 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - - 56 - - - YES - - - - - - 420 - - - - - 490 - - - YES - - - - - - 491 - - - YES - - - - - - 492 - - - - - 494 - - - - - 559 - - - YES - - - - - - 560 - - - YES - - - - - - - - - - 564 - - - - - 568 - - - YES - - - - - - 569 - - - - - 572 - - - YES - - - - - 576 - - - YES - - - - - - 577 - - - YES - - - - - 57 - - - YES - - - - - - - - - - - - - - 145 - - - - - 149 - - - - - 131 - - - YES - - - - - - 130 - - - - - 236 - - - - - 144 - - - - - 136 - - - - - 150 - - - - - 134 - - - - - 58 - - - - - 592 - - - YES - - - - - - 593 - - - YES - - - - - - - - - 595 - - - - - 597 - - - - - 598 - - - - - 616 - - - YES - - - - - - 617 - - - YES - - - - - 633 - - - YES - - - - - - 634 - - - - - 644 - - - YES - - - - - - 645 - - - YES - - - - - - - - - - - - - - - - 646 - - - - - 647 - - - - - 648 - - - YES - - - - - - 649 - - - YES - - - - - - - - - 650 - - - - - 651 - - - - - 652 - - - - - 653 - - - - - 660 - - - - - 661 - - - - - 662 - - - - - 663 - - - - - 664 - - - - - 669 - - - YES - - - - - - 670 - - - YES - - - - - - - - 671 - - - YES - - - - - - - - 672 - - - - - 673 - - - - - 674 - - - YES - - - - - - 676 - - - YES - - - - - - 679 - - - - - 690 - - - YES - - - - - - 691 - - - - - 692 - - - YES - - - - - - 693 - - - YES - - - - - - 694 - - - YES - - - - - - - - - 695 - - - - - 696 - - - - - 697 - - - YES - - - - - - - - - 698 - - - - - 699 - - - YES - - - - - - 700 - - - YES - - - - - - 701 - - - - - 702 - - - - - 703 - - - YES - - - - - - 709 - - - YES - - - - - - 710 - - - YES - - - - - - - - 711 - - - - - 712 - - - - - 713 - - - - - 714 - - - YES - - - - - - 715 - - - - - 738 - - - - - 749 - - - YES - - - - - - 750 - - - - - 751 - - - - - 752 - - - - - 753 - - - - - 755 - - - - - 760 - - - - - 767 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 130.IBPluginDependency - 131.IBPluginDependency - 134.IBPluginDependency - 136.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 149.IBPluginDependency - 150.IBPluginDependency - 236.IBPluginDependency - 29.IBPluginDependency - 420.IBPluginDependency - 490.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 494.IBPluginDependency - 559.IBPluginDependency - 559.IBWindowTemplateEditedContentRect - 559.NSWindowTemplate.visibleAtLaunch - 56.IBPluginDependency - 560.IBPluginDependency - 564.IBPluginDependency - 568.IBPluginDependency - 569.IBPluginDependency - 57.IBPluginDependency - 572.IBPluginDependency - 576.IBPluginDependency - 577.IBPluginDependency - 58.IBPluginDependency - 592.IBPluginDependency - 593.IBPluginDependency - 595.IBPluginDependency - 597.IBPluginDependency - 598.IBPluginDependency - 616.IBPluginDependency - 617.IBPluginDependency - 633.IBPluginDependency - 634.IBPluginDependency - 644.IBPluginDependency - 645.IBPluginDependency - 646.IBPluginDependency - 647.IBPluginDependency - 648.IBPluginDependency - 649.IBPluginDependency - 650.IBPluginDependency - 651.IBPluginDependency - 652.IBPluginDependency - 653.IBPluginDependency - 660.IBPluginDependency - 661.IBPluginDependency - 662.IBPluginDependency - 663.IBPluginDependency - 664.IBPluginDependency - 669.IBPluginDependency - 669.IBWindowTemplateEditedContentRect - 669.NSWindowTemplate.visibleAtLaunch - 670.IBPluginDependency - 671.IBPluginDependency - 672.IBPluginDependency - 673.IBPluginDependency - 674.IBPluginDependency - 676.IBPluginDependency - 679.IBPluginDependency - 690.IBPluginDependency - 691.IBPluginDependency - 691.IBSegmentedControlInspectorSelectedSegmentMetadataKey - 692.IBPluginDependency - 692.IBWindowTemplateEditedContentRect - 692.NSWindowTemplate.visibleAtLaunch - 693.IBPluginDependency - 694.IBPluginDependency - 695.IBPluginDependency - 696.IBPluginDependency - 697.IBPluginDependency - 698.IBPluginDependency - 699.IBPluginDependency - 700.IBPluginDependency - 701.IBPluginDependency - 702.IBPluginDependency - 703.IBPluginDependency - 709.IBPluginDependency - 710.IBPluginDependency - 711.IBPluginDependency - 712.IBPluginDependency - 713.IBPluginDependency - 714.IBPluginDependency - 715.IBPluginDependency - 738.IBPluginDependency - 749.IBPluginDependency - 750.IBPluginDependency - 751.IBPluginDependency - 752.IBPluginDependency - 753.IBPluginDependency - 755.IBPluginDependency - 760.IBPluginDependency - 767.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{371, 92}, {496, 453}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{783, 319}, {363, 223}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - {{306, 484}, {512, 269}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 768 - - - - YES - - ColorSchemes - NSObject - - YES - - YES - addOrRemove: - edit: - editColorSchemes: - - - YES - id - id - id - - - - YES - - YES - addOrRemove: - edit: - editColorSchemes: - - - YES - - addOrRemove: - id - - - edit: - id - - - editColorSchemes: - id - - - - - YES - - YES - menu - schemeList - schemeWin - schemesWin - - - YES - id - id - id - id - - - - YES - - YES - menu - schemeList - schemeWin - schemesWin - - - YES - - menu - id - - - schemeList - id - - - schemeWin - id - - - schemesWin - id - - - - - IBProjectSource - ./Classes/ColorSchemes.h - - - - Map - NSView - - IBProjectSource - ./Classes/Map.h - - - - MapViewer - NSObject - - sliderChanged: - NSSlider - - - sliderChanged: - - sliderChanged: - NSSlider - - - - YES - - YES - depthText - map - progressBar - slider - status - window - - - YES - id - Map - id - id - id - id - - - - YES - - YES - depthText - map - progressBar - slider - status - window - - - YES - - depthText - id - - - map - Map - - - progressBar - id - - - slider - id - - - status - id - - - window - id - - - - - IBProjectSource - ./Classes/MapViewer.h - - - - minutorAppDelegate - NSObject - - YES - - YES - jumpToPlayer: - jumpToSpawn: - openWorld: - selectScheme: - toggleCaveMode: - toggleDepth: - toggleEnder: - toggleHell: - toggleLighting: - toggleMob: - toggleObscured: - - - YES - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - jumpToPlayer: - jumpToSpawn: - openWorld: - selectScheme: - toggleCaveMode: - toggleDepth: - toggleEnder: - toggleHell: - toggleLighting: - toggleMob: - toggleObscured: - - - YES - - jumpToPlayer: - id - - - jumpToSpawn: - id - - - openWorld: - id - - - selectScheme: - id - - - toggleCaveMode: - id - - - toggleDepth: - id - - - toggleEnder: - id - - - toggleHell: - id - - - toggleLighting: - id - - - toggleMob: - id - - - toggleObscured: - id - - - - - YES - - YES - colorSchemes - enderItem - hellItem - mapViewer - worldMenu - - - YES - id - id - id - id - id - - - - YES - - YES - colorSchemes - enderItem - hellItem - mapViewer - worldMenu - - - YES - - colorSchemes - id - - - enderItem - id - - - hellItem - id - - - mapViewer - id - - - worldMenu - id - - - - - IBProjectSource - ./Classes/minutorAppDelegate.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSAddTemplate - NSMenuCheckmark - NSMenuMixedState - NSRemoveTemplate - - - YES - {8, 8} - {11, 11} - {10, 3} - {8, 8} - - - - diff --git a/OSX/Map.m b/OSX/Map.m deleted file mode 100644 index 67aa8658..00000000 --- a/OSX/Map.m +++ /dev/null @@ -1,267 +0,0 @@ -/* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "Map.h" -#include "MinutorMap.h" - -#define MINZOOM 1.0 -#define MAXZOOM 10.0 - - -@implementation Map - -- (id)initWithFrame:(NSRect)frame { - self = [super initWithFrame:frame]; - if (self) { - curX=0.0; - curZ=0.0; - curDepth=255; - curScale=1.0; - world=nil; - curWidth=496; - curHeight=400; - moving=0; - bits=malloc(curWidth*curHeight*4); - } - return self; -} - -static id progressBar; -- (void)setProgress:(id)progress -{ - progressBar=progress; -} - -void updateProgress(float progress) -{ - [progressBar setDoubleValue:progress*100.0]; - [progressBar displayIfNeeded]; -} - -- (void)drawRect:(NSRect)dirtyRect { - if (world==nil) return; - - if (curWidth!=dirtyRect.size.width || curHeight!=dirtyRect.size.height) - { - curWidth=dirtyRect.size.width; - curHeight=dirtyRect.size.height; - bits=realloc(bits, curWidth*curHeight*4); - } - - NSRect myRect = NSMakeRect(0,0,curWidth,curHeight); - - - DrawMap([world UTF8String], curX, curZ, curDepth, curWidth, curHeight, curScale, bits, opts, updateProgress); - NSBitmapImageRep *mapImage=[[NSBitmapImageRep alloc] - initWithBitmapDataPlanes:&bits - pixelsWide:curWidth - pixelsHigh:curHeight - bitsPerSample:8 - samplesPerPixel:4 - hasAlpha:YES - isPlanar:NO - colorSpaceName:NSCalibratedRGBColorSpace - bitmapFormat:NSAlphaNonpremultipliedBitmapFormat - bytesPerRow:curWidth*4 - bitsPerPixel:32]; - - [mapImage drawInRect: myRect]; - [mapImage release]; - updateProgress(0.0); -} - -- (BOOL)acceptsFirstResponder -{ - return YES; -} -- (void)mouseDragged:(NSEvent *)theEvent -{ - curX-=[theEvent deltaX]/curScale; - curZ-=[theEvent deltaY]/curScale; - [self setNeedsDisplay:YES]; -} -- (void)mouseMoved:(NSEvent *)theEvent -{ - NSPoint loc=[self convertPoint:[theEvent locationInWindow] fromView:nil]; - loc.y=curHeight-loc.y; - if (loc.y>=0 && loc.x>=0 && loc.y0.0) - { - curScale+=dy/10.0; - if (curScale>MAXZOOM) curScale=MAXZOOM; - [self setNeedsDisplay:YES]; - } -} - -- (void)keyDown:(NSEvent *)theEvent -{ - NSString *characters=[theEvent characters]; - unichar character=[characters characterAtIndex:0]; - BOOL changed=NO; - - switch (character) - { - case NSUpArrowFunctionKey: - case 'w': - moving|=1; - break; - case NSDownArrowFunctionKey: - case 's': - moving|=2; - break; - case NSLeftArrowFunctionKey: - case 'a': - moving|=4; - break; - case NSRightArrowFunctionKey: - case 'd': - moving|=8; - break; - case NSPageUpFunctionKey: - case 'e': - curScale+=0.5; - if (curScale>MAXZOOM) - curScale=MAXZOOM; - changed=YES; - break; - case NSPageDownFunctionKey: - case 'q': - curScale-=0.5; - if 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%0A=cV$^J};N7GR&41O<`J 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

Ns}1@2>j>ImrXd>||&00fpHZFueIa zc2Femu!G-{ZL`u5~k4q5gYd^_VW zMz69DOW?Eym~^Gdj)k9}-1?56^G!KO`^G4>oFMM`$jj*$09wqPkD z5c8^}w-sw7*aYFr7_r`w$!fM@;eO<5(;ym_;q}(b^>40+A()bNeI096-dS6CCeMx( zNShfbwl|gFqW0$^6dEuZ_0m+s#p4fQi9^`8dhfri)x?Gg^)L|&$HB#((-)jL?LcgH zEKvI&d!JZopUZ66UihVEHkK~}`o=IGaP(3y@G-VxD9#)9B5Wrcu(kaSr&n@ecSs)0 zYwO?*mXWZ4;{$l;;(=oD7(cfo{r@$U?XPXZAMAmyl5k#2d(y6fu* zjma)uhNHU|ok(X(7P35?{RLq6Ov12(yWK z2nr2f$pH&@uxr!|Y!{J!jGh%)rVYr!D%ht|Y*n{Qs4wit_FYV0Ed~dGqNK}!z|g(H zu1=2H&ZP9k6{wo8uKLbhFNzp@V}pU!WeGx; za{;zLW^dh!U!NovY7TFi3pnVw4ICg2_rToP1vevsHzI;k<{i-=YbV+DMi*|n1a|%0 zM)crjqG?+P?eh;dzNa8idMiijJbEyBkT{C(aIL`-hB?PL#_fK>ML$9zZHz;0j=6*R&3XtbmbADgx{9kOLKN{OZdVi)puw zVRx0u9Y{B*)2{(h>xDl^VWOzJRJe#KozJ-d@bFArTWeGxD29NDDVZTyfMfxRzZS~PLpN|z%GtuI z1N@)_v&0NHBds04QUr1-G9S!JsBC1{HK_4ArDW}uA!R@AV7`QP%4LWQ3wR9NOCDN= z*i0}r{nf+i0+&OXO>Wk`K%-VE=8m>6Y=jv9?#g-`NookJ2HGXE0b+xs0PBYBg{}sO zRLR9$RFXybp2<7pAl;BINKo>+Wm(veYY28MO;ua7e3Z&-Y+yPChlN36C9AjeUW(bj za1^mL%aSi`yKR-?;uC7pZSSM$wGDa6bx!0X3Y!h^L`Cb;yhI9K6wOHj}~DMM!^?T106V57zIJ)+5Ta578sQ zzj*}A-iecgzsuhe<^TX707*naRNb6Kk+Oj+2+X3%s^EQgogw;$L}6J`v)J^In=&N0 z4ps^R?1|~EBQx);WDlXYcGQy#{Uw|f^%|zqo^$GFp=Ci{K|t$tC%bP;4PY@`w0Auw zCbGG2x~o17;pj#EvNDB`7el&mV`)12A8y9)C0R*4ec0y zcTtH2#iMH-CgBHGJDG3?1&WIVn{L?N%!NK}?R*WgYOyh?!k+=~jU!r;lyZY;ZX?$k zyy;*%8{Co%bnt6|F4fXv7zR`W`V`$fyTUwNmx5^MnNmba)x5+|8C%w3?H+&ySwsdY zzV||?`xk?A-z3a&g%cp3B9WkLXYkvkW_e#)d`kjDdLEXHBRVqG_f-m914_YHZ4KR* zL3`J1Ei--bL?>}s)X_T-lAvDF99s3w09VbgRRU*wV{RjN=(?1{4l2Ju_1CMF_^frW zBG7@mqU%1Dn!zs}LdBSmHa#jqB4@eUISFyV7|Ga)uX#U0v3%X(M9f@2+g!%m2Cv($(%)9~^HO0RDwU7L+ z9+=`ja&7KEJ2J{1F)p9oPiH+<6XKkhK`@=A_}?2d@EY�S_|SND&OTdHT*nJs9SG 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 diff --git a/OSX/icon.icns b/OSX/icon.icns deleted file mode 100644 index 2d21c616d44ed1caba6ec79fe195b7525c3761e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 642676 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

6^ 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


&fvT2sW(A- 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

taX`>vNx%bI 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

LQeGz$OFu4yL^;wcXFrp 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

fvCvl*`Az4l-79 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 qeYOSyZ&SS9aJMqm_IKAKo9N`oFl=qv!*Xw6 - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - icon.icns - CFBundleIdentifier - com.seancode.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.6.3 - CFBundleSignature - ???? - CFBundleURLTypes - - CFBundleVersion - 1.6.3 - LSApplicationCategoryType - public.app-category.entertainment - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - NSServices - - UTExportedTypeDeclarations - - UTImportedTypeDeclarations - - - diff --git a/OSX/minutor.xcodeproj/project.pbxproj b/OSX/minutor.xcodeproj/project.pbxproj deleted file mode 100644 index fdda30bb..00000000 --- a/OSX/minutor.xcodeproj/project.pbxproj +++ /dev/null @@ -1,402 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 14A14F84124BD800002E2FA9 /* Map.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A14F83124BD800002E2FA9 /* Map.m */; }; - 14A14F99124BDC27002E2FA9 /* cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 14A14F92124BDC27002E2FA9 /* cache.c */; }; - 14A14F9A124BDC27002E2FA9 /* MinutorMap.c in Sources */ = {isa = PBXBuildFile; fileRef = 14A14F94124BDC27002E2FA9 /* MinutorMap.c */; }; - 14A14F9B124BDC27002E2FA9 /* nbt.c in Sources */ = {isa = PBXBuildFile; fileRef = 14A14F96124BDC27002E2FA9 /* nbt.c */; }; - 14A14FA2124BDCAA002E2FA9 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 14A14FA1124BDCAA002E2FA9 /* libz.dylib */; }; - 14A15134124C11F2002E2FA9 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 14A15133124C11F2002E2FA9 /* icon.icns */; }; - 14D1F3E2124ACEF8008A7C07 /* MapViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14D1F3E1124ACEF8008A7C07 /* MapViewer.m */; }; - 14EC3C4E127B5E33001B3B24 /* ColorScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EC3C4D127B5E33001B3B24 /* ColorScheme.m */; }; - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; - 256AC3DA0F4B6AC300CF3369 /* minutorAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* minutorAppDelegate.m */; }; - 31A4926613174ACB00719F98 /* region.c in Sources */ = {isa = PBXBuildFile; fileRef = 31A4926513174ACB00719F98 /* region.c */; }; - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; - 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; - 145BC0FA1251164B005AED91 /* MinutorMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MinutorMap.h; path = ../MinutorMap/MinutorMap.h; sourceTree = SOURCE_ROOT; }; - 14A14F82124BD800002E2FA9 /* Map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Map.h; sourceTree = ""; }; - 14A14F83124BD800002E2FA9 /* Map.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Map.m; sourceTree = ""; }; - 14A14F91124BDC27002E2FA9 /* blockInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blockInfo.h; path = ../MinutorMap/blockInfo.h; sourceTree = ""; }; - 14A14F92124BDC27002E2FA9 /* cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cache.c; path = ../MinutorMap/cache.c; sourceTree = ""; }; - 14A14F93124BDC27002E2FA9 /* cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cache.h; path = ../MinutorMap/cache.h; sourceTree = ""; }; - 14A14F94124BDC27002E2FA9 /* MinutorMap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MinutorMap.c; path = ../MinutorMap/MinutorMap.c; sourceTree = ""; }; - 14A14F96124BDC27002E2FA9 /* nbt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = nbt.c; path = ../MinutorMap/nbt.c; sourceTree = ""; }; - 14A14F97124BDC27002E2FA9 /* nbt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = nbt.h; path = ../MinutorMap/nbt.h; sourceTree = ""; }; - 14A14F98124BDC27002E2FA9 /* stdafx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stdafx.h; path = ../MinutorMap/stdafx.h; sourceTree = ""; }; - 14A14FA1124BDCAA002E2FA9 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - 14A15133124C11F2002E2FA9 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = ""; }; - 14D1F3E0124ACEF8008A7C07 /* MapViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewer.h; sourceTree = ""; }; - 14D1F3E1124ACEF8008A7C07 /* MapViewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewer.m; sourceTree = ""; }; - 14EC3C4C127B5E33001B3B24 /* ColorScheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorScheme.h; sourceTree = ""; }; - 14EC3C4D127B5E33001B3B24 /* ColorScheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColorScheme.m; sourceTree = ""; }; - 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; - 256AC3D80F4B6AC300CF3369 /* minutorAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minutorAppDelegate.h; sourceTree = ""; }; - 256AC3D90F4B6AC300CF3369 /* minutorAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = minutorAppDelegate.m; sourceTree = ""; }; - 256AC3F00F4B6AF500CF3369 /* minutor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minutor_Prefix.pch; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 31A4926513174ACB00719F98 /* region.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = region.c; path = ../MinutorMap/region.c; sourceTree = SOURCE_ROOT; }; - 31A4926713174AD600719F98 /* region.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = region.h; path = ../MinutorMap/region.h; sourceTree = SOURCE_ROOT; }; - 8D1107310486CEB800E47090 /* minutor-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minutor-Info.plist"; sourceTree = ""; }; - 8D1107320486CEB800E47090 /* minutor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minutor.app; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D11072E0486CEB800E47090 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, - 14A14FA2124BDCAA002E2FA9 /* libz.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - 145BC0FB12511655005AED91 /* MinutorMap */, - 256AC3D80F4B6AC300CF3369 /* minutorAppDelegate.h */, - 256AC3D90F4B6AC300CF3369 /* minutorAppDelegate.m */, - 14D1F3E0124ACEF8008A7C07 /* MapViewer.h */, - 14D1F3E1124ACEF8008A7C07 /* MapViewer.m */, - 14A14F82124BD800002E2FA9 /* Map.h */, - 14A14F83124BD800002E2FA9 /* Map.m */, - 14A14FA1124BDCAA002E2FA9 /* libz.dylib */, - 14EC3C4C127B5E33001B3B24 /* ColorScheme.h */, - 14EC3C4D127B5E33001B3B24 /* ColorScheme.m */, - ); - name = Classes; - sourceTree = ""; - }; - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 29B97324FDCFA39411CA2CEA /* AppKit.framework */, - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, - 29B97325FDCFA39411CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 145BC0FB12511655005AED91 /* MinutorMap */ = { - isa = PBXGroup; - children = ( - 31A4926713174AD600719F98 /* region.h */, - 31A4926513174ACB00719F98 /* region.c */, - 14A14F91124BDC27002E2FA9 /* blockInfo.h */, - 14A14F92124BDC27002E2FA9 /* cache.c */, - 14A14F93124BDC27002E2FA9 /* cache.h */, - 145BC0FA1251164B005AED91 /* MinutorMap.h */, - 14A14F94124BDC27002E2FA9 /* MinutorMap.c */, - 14A14F96124BDC27002E2FA9 /* nbt.c */, - 14A14F97124BDC27002E2FA9 /* nbt.h */, - 14A14F98124BDC27002E2FA9 /* stdafx.h */, - ); - name = MinutorMap; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D1107320486CEB800E47090 /* minutor.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* minutor */ = { - isa = PBXGroup; - children = ( - 14A15133124C11F2002E2FA9 /* icon.icns */, - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = minutor; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 256AC3F00F4B6AF500CF3369 /* minutor_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 8D1107310486CEB800E47090 /* minutor-Info.plist */, - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D1107260486CEB800E47090 /* minutor */ = { - isa = PBXNativeTarget; - buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "minutor" */; - buildPhases = ( - 8D1107290486CEB800E47090 /* Resources */, - 8D11072C0486CEB800E47090 /* Sources */, - 8D11072E0486CEB800E47090 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = minutor; - productInstallPath = "$(HOME)/Applications"; - productName = minutor; - productReference = 8D1107320486CEB800E47090 /* minutor.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0440; - ORGANIZATIONNAME = "Sean Kasun"; - }; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "minutor" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* minutor */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D1107260486CEB800E47090 /* minutor */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D1107290486CEB800E47090 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, - 14A15134124C11F2002E2FA9 /* icon.icns in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D11072C0486CEB800E47090 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072D0486CEB800E47090 /* main.m in Sources */, - 256AC3DA0F4B6AC300CF3369 /* minutorAppDelegate.m in Sources */, - 14D1F3E2124ACEF8008A7C07 /* MapViewer.m in Sources */, - 14A14F84124BD800002E2FA9 /* Map.m in Sources */, - 14A14F99124BDC27002E2FA9 /* cache.c in Sources */, - 14A14F9A124BDC27002E2FA9 /* MinutorMap.c in Sources */, - 14A14F9B124BDC27002E2FA9 /* nbt.c in Sources */, - 14EC3C4E127B5E33001B3B24 /* ColorScheme.m in Sources */, - 31A4926613174ACB00719F98 /* region.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C165DFE840E0CC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD58150DA1D0A300B32029 /* English */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 148DE24F1283497800B6DF83 /* Release Intel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CODE_SIGN_IDENTITY = "Don't Code Sign"; - CURRENT_PROJECT_VERSION = 0.9.3; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INSTALL_PATH = ""; - MACOSX_DEPLOYMENT_TARGET = 10.7; - PRODUCT_NAME = minutor; - SDKROOT = macosx; - VALID_ARCHS = "i386 x86_64"; - }; - name = "Release Intel"; - }; - 148DE2501283497800B6DF83 /* Release Intel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = minutor_Prefix.pch; - INFOPLIST_FILE = "minutor-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PRODUCT_NAME = minutor; - SDKROOT = macosx10.7; - }; - name = "Release Intel"; - }; - C01FCF4B08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = minutor_Prefix.pch; - INFOPLIST_FILE = "minutor-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PRODUCT_NAME = minutor; - SDKROOT = macosx10.7; - }; - name = Debug; - }; - C01FCF4C08A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = minutor_Prefix.pch; - INFOPLIST_FILE = "minutor-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.6; - PRODUCT_NAME = minutor; - SDKROOT = macosx10.7; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CODE_SIGN_IDENTITY = "Don't Code Sign"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CODE_SIGN_IDENTITY = "Don't Code Sign"; - CURRENT_PROJECT_VERSION = 0.9.3; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INSTALL_PATH = ""; - MACOSX_DEPLOYMENT_TARGET = 10.7; - PRODUCT_NAME = minutor; - SDKROOT = macosx10.7; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "minutor" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4B08A954540054247B /* Debug */, - C01FCF4C08A954540054247B /* Release */, - 148DE2501283497800B6DF83 /* Release Intel */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "minutor" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - 148DE24F1283497800B6DF83 /* Release Intel */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/OSX/minutorAppDelegate.m b/OSX/minutorAppDelegate.m deleted file mode 100644 index a4589845..00000000 --- a/OSX/minutorAppDelegate.m +++ /dev/null @@ -1,160 +0,0 @@ -/* - Copyright (c) 2011, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "minutorAppDelegate.h" -#import "MapViewer.h" -#include "MinutorMap.h" - -@implementation minutorAppDelegate - - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - opts=0; - [colorSchemes readDefaults]; - - worldPaths=[[NSMutableArray alloc] initWithCapacity:10]; - NSArray *paths=NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - NSString *root=[paths objectAtIndex:0]; - root=[root stringByAppendingPathComponent:@"minecraft/saves"]; - - id files=[NSFileManager defaultManager]; - id subs=[files contentsOfDirectoryAtPath:root error:NULL]; - for (NSString *f in subs) - { - NSString *path=[root stringByAppendingPathComponent:f]; - BOOL isDirectory; - BOOL exists=[files fileExistsAtPath:path isDirectory:&isDirectory]; - if (exists && isDirectory) - { - [worldPaths addObject:path]; - NSMenuItem *item=[[NSMenuItem alloc] initWithTitle:f action:@selector(openWorld:) keyEquivalent:@""]; - [item setTag:[worldPaths count]]; - [worldMenu insertItem:item atIndex:[worldPaths count]-1]; - [item release]; - } - } -} - -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem -{ - int tag=[menuItem tag]; - if (tag!=0) - { - if (tag>100) - return [mapViewer isVisible]; - id files=[NSFileManager defaultManager]; - BOOL isDirectory; - BOOL exists=[files fileExistsAtPath:[worldPaths objectAtIndex:tag-1] isDirectory:&isDirectory]; - if (exists && isDirectory) - return YES; - return NO; - } - return YES; -} - -- (IBAction) openWorld:sender -{ - NSString *world=nil; - int tag=[sender tag]; - if (tag==0) - { - id fileTypes=[NSArray arrayWithObject:@"dat"]; - id openDlg=[NSOpenPanel openPanel]; - [openDlg setCanChooseFiles:YES]; - [openDlg setAllowedFileTypes:fileTypes]; - if ([openDlg runModal]==NSOKButton) - world=[[openDlg filename] stringByDeletingLastPathComponent]; - } - else - world=[worldPaths objectAtIndex:tag-1]; - if (world!=nil) - [mapViewer openWorld:world]; -} --(IBAction) jumpToSpawn:sender -{ - [mapViewer jumpToSpawn]; -} --(IBAction) jumpToPlayer:sender -{ - [mapViewer jumpToPlayer]; -} --(IBAction) toggleLighting:sender -{ - opts^=LIGHTING; - [sender setState:((opts&LIGHTING)!=0)?NSOnState:NSOffState]; - [mapViewer setOpts:opts]; -} --(IBAction) toggleCaveMode:sender -{ - opts^=CAVEMODE; - [sender setState:((opts&CAVEMODE)!=0)?NSOnState:NSOffState]; - [mapViewer setOpts:opts]; -} --(IBAction) toggleObscured:sender -{ - opts^=HIDEOBSCURED; - [sender setState:((opts&HIDEOBSCURED)!=0)?NSOnState:NSOffState]; - [mapViewer setOpts:opts]; -} --(IBAction) toggleDepth:sender -{ - opts^=DEPTHSHADING; - [sender setState:((opts&DEPTHSHADING)!=0)?NSOnState:NSOffState]; - [mapViewer setOpts:opts]; -} --(IBAction) toggleMob:sender -{ - opts^=MOB; - [sender setState:((opts&MOB)!=0)?NSOnState:NSOffState]; - [mapViewer setOpts:opts]; -} --(IBAction) toggleHell:sender -{ - opts^=HELL; - opts&=~ENDER; - [sender setState:((opts&HELL)!=0)?NSOnState:NSOffState]; - [enderItem setState:NSOffState]; - CloseAll(); - [mapViewer setOpts:opts]; -} --(IBAction) toggleEnder:sender -{ - opts^=ENDER; - opts&=~HELL; - [sender setState:((opts&ENDER)!=0)?NSOnState:NSOffState]; - [hellItem setState:NSOffState]; - CloseAll(); - [mapViewer setOpts:opts]; -} - --(IBAction)selectScheme:sender -{ - [colorSchemes select:sender]; - [mapViewer setColorScheme:[colorSchemes current]]; -} - -@end diff --git a/OSX/minutor_Prefix.pch b/OSX/minutor_Prefix.pch deleted file mode 100644 index 24b0f271..00000000 --- a/OSX/minutor_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'Minutor' target -// - -#ifdef __OBJC__ - #import -#endif diff --git a/README b/README index b9f9197c..d1beb2e4 100644 --- a/README +++ b/README @@ -1,50 +1,17 @@ -All 3 platform source files are here. -MinutorMap/ contains the map generating code used by all 3 versions. (in C) -Win/ contains the Windows UI (in C++) -OSX/ contains the OSX UI (in ObjC) -./ contains the GTK UI. (in C) +This is the source code for Minutor 2.0 (beta) +web/ contains the source code for the web-based pack builder. The live version +can be found at http://seancode.com/minutor/packs + +The Makefile inside web/ will use the Closure Compiler to compile all the .js files +into a single editor.min.js. To host the pack builder on your own website, you +only need editor.min.js, index.html, main.css, and the mods/ folder. COMPILING: --------- -Windows - (You can compile this with Visual Studio Express 2010) - Open Minutorwin.sln in Visual C++, switch the target to Release, compile the solution to - generate Minutor.exe - Run make_installer.bat to make the minutor.msi installer. - (This part requires you to install WiX) - -OSX - - Open minutor.xcodeproj in XCode. Compile the solution to - generate minutor.app - Run DiskUtility to create a dmg. Put app in dmg. :) - -Linux - - $ make - $ sudo make install - -Linux .deb creation - - first you need to create a pbuilder environment for Lucid (10.04 LTS). - - $ pbuilder-dist lucid create - - if you're on amd64 and want to create an i386 version, do this too: - - $ pbuilder-dist lucid i386 create - - once that's done, you won't need to do that again, except maybe - to run pbuilder-dist lucid update to install new patches - Next we need to build the tar.gz and .dsc - - $ cd minutor - $ debuild -S -us - - (-us means don't sign the .dsc) - Finally we want to compile the .dsc and tar.gz into a .deb - - $ cd .. - $ pbuilder-dist lucid build *.dsc - - and if we want to do it for i386 on amd64: - - $ pbuilder-dist lucid i386 build *.dsc +All Platforms: +Use QtCreator (Qt5 version) and open minutor.pro. Change kit to Release. Build. +Linux: +If you'd rather use the command line, run qmake to generate a Makefile from +minutor.pro, then run make \ No newline at end of file diff --git a/Win/ColorSchemes.cpp b/Win/ColorSchemes.cpp deleted file mode 100644 index 409c9b62..00000000 --- a/Win/ColorSchemes.cpp +++ /dev/null @@ -1,384 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "stdafx.h" -#include -#include "Resource.h" -#include "../MinutorMap/blockInfo.h" -#include "ColorSchemes.h" - - -#define COLORKEY L"Software\\Sean Kasun\\Minutor\\ColorSchemes" - -ColorManager::ColorManager() -{ - RegCreateKeyEx(HKEY_CURRENT_USER,COLORKEY,0,NULL, - REG_OPTION_NON_VOLATILE,KEY_READ|KEY_WRITE,NULL,&key,NULL); -} -ColorManager::~ColorManager() -{ - RegCloseKey(key); -} - -void ColorManager::Init(ColorScheme *cs) -{ - for (int i=0;i>16; - g=color>>8; - b=color; - double alpha=blocks[i].alpha; - r=(unsigned char)(r/alpha); - g=(unsigned char)(g/alpha); - b=(unsigned char)(b/alpha); - a=(unsigned char)(alpha*255); - color=(r<<24)|(g<<16)|(b<<8)|a; - cs->colors[i]=color; - } -} -void ColorManager::create(ColorScheme *cs) -{ - DWORD schemeId,len; - len=sizeof(schemeId); - long result=RegQueryValueEx(key,L"schemeId",NULL,NULL,(LPBYTE)&schemeId,&len); - if (result==ERROR_FILE_NOT_FOUND) - schemeId=0; - schemeId++; - RegSetValueEx(key,L"schemeId",NULL,REG_DWORD,(LPBYTE)&schemeId,sizeof(schemeId)); - ColorManager::Init(cs); - cs->id=schemeId; - save(cs); -} -int ColorManager::next(int id,ColorScheme *cs) -{ - TCHAR name[50]; - DWORD nameLen; - DWORD type,csLen; - do { - nameLen=50; - csLen=sizeof(ColorScheme); - LONG result=RegEnumValue(key,id,name,&nameLen,NULL,&type,(LPBYTE)cs,&csLen); - id++; - if (result==ERROR_NO_MORE_ITEMS) - return 0; - if (type==REG_BINARY) - return id; - } while (1); -} -void ColorManager::save(ColorScheme *cs) -{ - wchar_t keyname[50]; - swprintf(keyname,50,L"scheme %d",cs->id); - RegSetValueEx(key,keyname,NULL,REG_BINARY,(LPBYTE)cs,sizeof(ColorScheme)); -} -void ColorManager::load(ColorScheme *cs) -{ - wchar_t keyname[50]; - swprintf(keyname,50,L"scheme %d",cs->id); - DWORD csLen=sizeof(ColorScheme); - RegQueryValueEx(key,keyname,NULL,NULL,(LPBYTE)cs,&csLen); -} -void ColorManager::remove(int id) -{ - wchar_t keyname[50]; - swprintf(keyname,50,L"scheme %d",id); - RegDeleteValue(key,keyname); -} - -INT_PTR CALLBACK ColorSchemes(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); -INT_PTR CALLBACK ColorSchemeEdit(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); - -void doColorSchemes(HINSTANCE hInst,HWND hWnd) -{ - DialogBox(hInst,MAKEINTRESOURCE(IDD_COLORSCHEMES),hWnd,ColorSchemes); -} - -static void validateButtons(HWND hDlg); -static ColorScheme curCS; - -INT_PTR CALLBACK ColorSchemes(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) -{ - HWND list; - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - ColorManager cm; - list=GetDlgItem(hDlg,IDC_SCHEMELIST); - int id=0; - ColorScheme cs; - while (id=cm.next(id,&cs)) - { - int pos=SendMessage(list,LB_ADDSTRING,0,(LPARAM)cs.name); - SendMessage(list,LB_SETITEMDATA,pos,cs.id); - } - validateButtons(hDlg); - } - return (INT_PTR)TRUE; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_SCHEMELIST: - switch (HIWORD(wParam)) - { - case LBN_SELCHANGE: - case LBN_SELCANCEL: - validateButtons(hDlg); - break; - } - break; - case IDC_EDIT: - { - list=GetDlgItem(hDlg,IDC_SCHEMELIST); - int item=(int)SendMessage(list,LB_GETCURSEL,0,0); - curCS.id=(int)SendMessage(list,LB_GETITEMDATA,item,0); - ColorManager cm; - cm.load(&curCS); - DialogBox(NULL,MAKEINTRESOURCE(IDD_COLORSCHEME),hDlg,ColorSchemeEdit); - cm.save(&curCS); - SendMessage(list,LB_DELETESTRING,item,0); - int pos=(int)SendMessage(list,LB_INSERTSTRING,item,(LPARAM)curCS.name); - SendMessage(list,LB_SETITEMDATA,pos,curCS.id); - } - break; - case IDC_ADD: - { - ColorManager cm; - ColorScheme cs; - wcsncpy_s(cs.name,255,L"Color Scheme",255); - cm.create(&cs); - list=GetDlgItem(hDlg,IDC_SCHEMELIST); - int pos=SendMessage(list,LB_ADDSTRING,0,(LPARAM)cs.name); - SendMessage(list,LB_SETITEMDATA,pos,cs.id); - validateButtons(hDlg); - } - break; - case IDC_REMOVE: - { - ColorManager cm; - list=GetDlgItem(hDlg,IDC_SCHEMELIST); - int item=(int)SendMessage(list,LB_GETCURSEL,0,0); - if (item!=LB_ERR) - { - int id=(int)SendMessage(list,LB_GETITEMDATA,item,0); - cm.remove(id); - SendMessage(list,LB_DELETESTRING,item,0); - } - validateButtons(hDlg); - } - break; - case IDCANCEL: - case IDOK: - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - break; - } - return (INT_PTR)FALSE; -} -static void validateButtons(HWND hDlg) -{ - HWND edit=GetDlgItem(hDlg,IDC_EDIT); - HWND remove=GetDlgItem(hDlg,IDC_REMOVE); - HWND list=GetDlgItem(hDlg,IDC_SCHEMELIST); - int item=(int)SendMessage(list,LB_GETCURSEL,0,0); - if (item==LB_ERR) - { - EnableWindow(edit,FALSE); - EnableWindow(remove,FALSE); - } - else - { - EnableWindow(edit,TRUE); - EnableWindow(remove,TRUE); - } -} - -INT_PTR CALLBACK ColorSchemeEdit(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) -{ - static int curSel; - static wchar_t row[255]; - NMLVDISPINFO *info; - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - SetDlgItemText(hDlg,IDC_SCHEMENAME,curCS.name); - - HWND ctl=GetDlgItem(hDlg,IDC_CURCOLOR); - EnableWindow(ctl,FALSE); - ctl=GetDlgItem(hDlg,IDC_CURALPHA); - EnableWindow(ctl,FALSE); - - HWND lv=GetDlgItem(hDlg,IDC_COLORLIST); - ListView_SetExtendedListViewStyle(lv,LVS_EX_FULLROWSELECT); - - LVCOLUMN lvc; - lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; - for (int i=0;i<4;i++) - { - lvc.iSubItem=i; - switch (i) - { - case 0: - lvc.pszText=L"Id"; - lvc.cx=30; - break; - case 1: - lvc.pszText=L"Name"; - lvc.cx=200; - break; - case 2: - lvc.pszText=L"Color"; - lvc.cx=80; - break; - case 3: - lvc.pszText=L"Alpha"; - lvc.cx=50; - break; - } - lvc.fmt=LVCFMT_LEFT; - ListView_InsertColumn(lv,i,&lvc); - } - LVITEM item; - item.mask=LVIF_TEXT|LVIF_STATE; - item.iSubItem=0; - item.state=0; - item.stateMask=0; - item.pszText=LPSTR_TEXTCALLBACK; - for (int i=0;icode) - { - case LVN_ITEMCHANGED: - { - LPNMLISTVIEW item=(LPNMLISTVIEW)lParam; - if (item->uNewState&LVIS_SELECTED) - { - curSel=item->iItem; - swprintf(row,255,L"#%06x",curCS.colors[item->iItem]>>8); - SetDlgItemText(hDlg,IDC_CURCOLOR,row); - swprintf(row,255,L"%d",curCS.colors[item->iItem]&0xff); - SetDlgItemText(hDlg,IDC_CURALPHA,row); - HWND ctl=GetDlgItem(hDlg,IDC_CURCOLOR); - EnableWindow(ctl,TRUE); - ctl=GetDlgItem(hDlg,IDC_CURALPHA); - EnableWindow(ctl,TRUE); - } - } - break; - case LVN_GETDISPINFO: - info=(NMLVDISPINFO*)lParam; - switch (info->item.iSubItem) - { - case 0: - swprintf(row,255,L"%d.",info->item.iItem); - break; - case 1: - swprintf(row,255,L"%S",blocks[info->item.iItem].name); - break; - case 2: - swprintf(row,255,L"#%06x",curCS.colors[info->item.iItem]>>8); - break; - case 3: - swprintf(row,255,L"%d",curCS.colors[info->item.iItem]&0xff); - break; - } - info->item.pszText=row; - break; - } - break; - case WM_COMMAND: - switch (HIWORD(wParam)) - { - case EN_CHANGE: - switch (LOWORD(wParam)) - { - case IDC_SCHEMENAME: - GetDlgItemText(hDlg,IDC_SCHEMENAME,curCS.name,255); - break; - case IDC_CURCOLOR: - { - HWND lv=GetDlgItem(hDlg,IDC_COLORLIST); - GetDlgItemText(hDlg,IDC_CURCOLOR,row,255); - unsigned int color=0; - for (int i=0;row[i];i++) - { - if (row[i]>='0' && row[i]<='9') - { - color<<=4; - color|=row[i]-'0'; - } - if (row[i]>='a' && row[i]<='f') - { - color<<=4; - color|=row[i]+10-'a'; - } - if (row[i]>='A' && row[i]<='F') - { - color<<=4; - color|=row[i]+10-'A'; - } - } - curCS.colors[curSel]&=0xff; - curCS.colors[curSel]|=color<<8; - ListView_RedrawItems(lv,curSel,curSel); - } - break; - case IDC_CURALPHA: - { - HWND lv=GetDlgItem(hDlg,IDC_COLORLIST); - curCS.colors[curSel]&=~0xff; - curCS.colors[curSel]|=GetDlgItemInt(hDlg,IDC_CURALPHA,NULL,FALSE)&0xff; - ListView_RedrawItems(lv,curSel,curSel); - } - } - break; - } - switch (LOWORD(wParam)) - { - case IDCANCEL: - case IDOK: - { - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - } - break; - } - return (INT_PTR)FALSE; -} \ No newline at end of file diff --git a/Win/ColorSchemes.h b/Win/ColorSchemes.h deleted file mode 100644 index 7b5be35c..00000000 --- a/Win/ColorSchemes.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -typedef struct -{ - int id; - wchar_t name[255]; - unsigned int colors[256]; -} ColorScheme; - -class ColorManager -{ -public: - ColorManager(); - ~ColorManager(); - static void Init(ColorScheme *cs); // initializes a colorscheme with default colors - void create(ColorScheme *cs); //creates a colorscheme, inits it and saves it - int next(int id,ColorScheme *cs); //enumerate colorschemes - void load(ColorScheme *cs); //loads a color scheme (id must be set) - void save(ColorScheme *cs); //saves a color scheme - void remove(int id); //remove a color scheme -private: - HKEY key; -}; - -void doColorSchemes(HINSTANCE hInst,HWND hWnd); \ No newline at end of file diff --git a/Win/Minutor.cpp b/Win/Minutor.cpp deleted file mode 100644 index c05acad2..00000000 --- a/Win/Minutor.cpp +++ /dev/null @@ -1,812 +0,0 @@ -/* -Copyright (c) 2011, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "stdafx.h" -#include "Minutor.h" -#include "ColorSchemes.h" -#include -#include -#include - -#define MAXZOOM 10.0 -#define MINZOOM 1.0 - -#define MAX_LOADSTRING 100 - - -// Global Variables: -HINSTANCE hInst; // current instance -TCHAR szTitle[MAX_LOADSTRING]; // The title bar text -TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name -TCHAR *worlds[1000]; // up to 1000 worlds - -static char world[MAX_PATH]; //path to currently loaded world -static BOOL loaded=FALSE; //world loaded? -static double curX,curZ; //current X and Z -static double curScale=1.0; //current scale -static int curDepth=255; //current depth - -static int spawnX,spawnY,spawnZ; -static int playerX,playerY,playerZ; - -static int opts=0; - -// Forward declarations of functions included in this code module: -ATOM MyRegisterClass(HINSTANCE hInstance); -BOOL InitInstance(HINSTANCE, int); -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); -static void loadWorld(); -static void worldPath(TCHAR *path); -static void validateItems(HMENU menu); -static void loadWorldList(HMENU menu); -static void draw(); -static void populateColorSchemes(HMENU menu); -static void useCustomColor(int wmId,HWND hWnd); - -int APIENTRY _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - // TODO: Place code here. - MSG msg; - HACCEL hAccelTable; - - // Initialize global strings - LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); - LoadString(hInstance, IDC_MINUTOR, szWindowClass, MAX_LOADSTRING); - MyRegisterClass(hInstance); - - // Perform application initialization: - if (!InitInstance (hInstance, nCmdShow)) - { - return FALSE; - } - - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MINUTOR)); - - // Main message loop: - while (GetMessage(&msg, NULL, 0, 0)) - { - if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return (int) msg.wParam; -} - - - -// -// FUNCTION: MyRegisterClass() -// -// PURPOSE: Registers the window class. -// -// COMMENTS: -// -// This function and its usage are only necessary if you want this code -// to be compatible with Win32 systems prior to the 'RegisterClassEx' -// function that was added to Windows 95. It is important to call this function -// so that the application will get 'well formed' small icons associated -// with it. -// -ATOM MyRegisterClass(HINSTANCE hInstance) -{ - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(WNDCLASSEX); - - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MINUTOR)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_MINUTOR); - wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); - - return RegisterClassEx(&wcex); -} - -// -// FUNCTION: InitInstance(HINSTANCE, int) -// -// PURPOSE: Saves instance handle and creates main window -// -// COMMENTS: -// -// In this function, we save the instance handle in a global variable and -// create and display the main program window. -// -BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) -{ - HWND hWnd; - - hInst = hInstance; // Store instance handle in our global variable - - hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, 0, 500, 450, NULL, NULL, hInstance, NULL); - - if (!hWnd) - { - return FALSE; - } - - ShowWindow(hWnd, nCmdShow); - UpdateWindow(hWnd); - - return TRUE; -} - -// -// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) -// -// PURPOSE: Processes messages for the main window. -// -// WM_COMMAND - process the application menu -// WM_PAINT - Paint the main window -// WM_DESTROY - post a quit message and return -// -// -static unsigned char *map; -static int bitWidth=0; -static int bitHeight=0; -static HWND progressBar=NULL; -static HBRUSH ctlBrush=NULL; -LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - int wmId, wmEvent; - PAINTSTRUCT ps; - HDC hdc; - static HWND hwndSlider,hwndLabel,hwndStatus; - static BITMAPINFO bmi; - static HBITMAP bitmap=NULL; - static HDC hdcMem=NULL; - static int oldX=0,oldY=0; - static const char *blockLabel=""; - static const char *biomeLabel=""; - static BOOL dragging=FALSE; - static int moving=0; - INITCOMMONCONTROLSEX ice; - DWORD pos; - wchar_t text[4]; - wchar_t buf[100]; - RECT rect; - TCHAR path[MAX_PATH]; - OPENFILENAME ofn; - - switch (message) - { - case WM_CREATE: - - validateItems(GetMenu(hWnd)); - loadWorldList(GetMenu(hWnd)); - populateColorSchemes(GetMenu(hWnd)); - CheckMenuItem(GetMenu(hWnd),IDM_CUSTOMCOLOR,MF_CHECKED); - - ctlBrush=CreateSolidBrush(GetSysColor(COLOR_WINDOW)); - - ice.dwSize=sizeof(INITCOMMONCONTROLSEX); - ice.dwICC=ICC_BAR_CLASSES; - InitCommonControlsEx(&ice); - GetClientRect(hWnd,&rect); - hwndSlider=CreateWindowEx( - 0,TRACKBAR_CLASS,L"Trackbar Control", - WS_CHILD | WS_VISIBLE | TBS_NOTICKS, - 10,0,rect.right-rect.left-50,30, - hWnd,(HMENU)ID_LAYERSLIDER,NULL,NULL); - SendMessage(hwndSlider,TBM_SETRANGE,TRUE,MAKELONG(0,255)); - SendMessage(hwndSlider,TBM_SETPAGESIZE,0,10); - EnableWindow(hwndSlider,FALSE); - - hwndLabel=CreateWindowEx( - 0,L"STATIC",NULL, - WS_CHILD | WS_VISIBLE | ES_RIGHT, - rect.right-40,5,30,20, - hWnd,(HMENU)ID_LAYERLABEL,NULL,NULL); - SetWindowText(hwndLabel,L"255"); - EnableWindow(hwndLabel,FALSE); - - hwndStatus=CreateWindowEx( - 0,STATUSCLASSNAME,NULL, - WS_CHILD | WS_VISIBLE | WS_BORDER, - -100,-100,10,10, - hWnd,(HMENU)ID_STATUSBAR,NULL,NULL); - { - int parts[]={300,400}; - RECT rect; - SendMessage(hwndStatus,SB_SETPARTS,2,(LPARAM)parts); - - progressBar=CreateWindowEx( - 0,PROGRESS_CLASS,NULL, - WS_CHILD | WS_VISIBLE, - 0,0,10,10,hwndStatus,(HMENU)ID_PROGRESS,NULL,NULL); - SendMessage(hwndStatus,SB_GETRECT,1,(LPARAM)&rect); - MoveWindow(progressBar,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,TRUE); - SendMessage(progressBar,PBM_SETSTEP,(WPARAM)5,0); - SendMessage(progressBar,PBM_SETPOS,0,0); - } - - rect.top+=30; - bitWidth=rect.right-rect.left; - bitHeight=rect.bottom-rect.top; - ZeroMemory(&bmi.bmiHeader,sizeof(BITMAPINFOHEADER)); - bmi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); - bmi.bmiHeader.biWidth=bitWidth; - bmi.bmiHeader.biHeight=-bitHeight; //flip - bmi.bmiHeader.biPlanes=1; - bmi.bmiHeader.biBitCount=32; - bmi.bmiHeader.biCompression=BI_RGB; - bitmap=CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,(void **)&map,NULL,0); - break; - case WM_LBUTTONDOWN: - dragging=TRUE; - SetFocus(hWnd); - SetCapture(hWnd); - oldX=LOWORD(lParam); - oldY=HIWORD(lParam); - break; - case WM_MOUSEWHEEL: - if (loaded) - { - int zDelta=GET_WHEEL_DELTA_WPARAM(wParam); - curScale+=(double)zDelta/WHEEL_DELTA; - if (curScaleMAXZOOM) - curScale=MAXZOOM; - draw(); - InvalidateRect(hWnd,NULL,FALSE); - UpdateWindow(hWnd); - } - break; - case WM_LBUTTONUP: - dragging=FALSE; - ReleaseCapture(); - break; - case WM_MOUSEMOVE: - if (loaded) - { - short bx=LOWORD(lParam); - short by=HIWORD(lParam); - if (dragging) - { - curZ-=(by-oldY)/curScale; - curX-=(bx-oldX)/curScale; - oldX=bx; - oldY=by; - draw(); - InvalidateRect(hWnd,NULL,FALSE); - UpdateWindow(hWnd); - } - else //don't update statusbar while dragging - { - int mx,mz; - blockLabel=IDBlock(bx,by-30,curX,curZ, - bitWidth,bitHeight,curScale,&mx,&mz,&biomeLabel); - wsprintf(buf,L"X:%d Z:%d %S - %S",mx,mz,biomeLabel,blockLabel); - SendMessage(hwndStatus,SB_SETTEXT,0,(LPARAM)buf); - } - } - break; - case WM_KEYDOWN: - // only care about keys hit when loaded, and control is up - if (loaded && GetKeyState(VK_CONTROL)>=0) - { - BOOL changed=FALSE; - switch (wParam) - { - case VK_UP: - case 'W': - moving|=1; - break; - case VK_DOWN: - case 'S': - moving|=2; - break; - case VK_LEFT: - case 'A': - moving|=4; - break; - case VK_RIGHT: - case 'D': - moving|=8; - break; - case VK_PRIOR: - case 'E': - curScale+=0.5; - if (curScale>MAXZOOM) - curScale=MAXZOOM; - changed=TRUE; - break; - case VK_NEXT: - case 'Q': - curScale-=0.5; - if (curScale=IDM_CUSTOMCOLOR && wmIdIDM_WORLD && wmIdIDM_CUSTOMCOLOR) - { - MENUITEMINFO info; - info.cbSize=sizeof(MENUITEMINFO); - info.fMask=MIIM_DATA; - GetMenuItemInfo(GetMenu(hWnd),wmId,FALSE,&info); - cs.id=info.dwItemData; - cm.load(&cs); - } - else - ColorManager::Init(&cs); - SetMapPalette(cs.colors,256); - draw(); - InvalidateRect(hWnd,NULL,TRUE); - UpdateWindow(hWnd); -} - -static void updateProgress(float progress) -{ - SendMessage(progressBar,PBM_SETPOS,(int)(progress*100),0); -} - -static void draw() -{ - if (loaded) - DrawMap(world,curX,curZ,curDepth,bitWidth,bitHeight,curScale,map,opts,updateProgress); - else - memset(map,0xff,bitWidth*bitHeight*4); - SendMessage(progressBar,PBM_SETPOS,0,0); - for (int i=0;i?z1QP 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 diff --git a/Win/Minutor.vcxproj b/Win/Minutor.vcxproj deleted file mode 100644 index dd80523a..00000000 --- a/Win/Minutor.vcxproj +++ /dev/null @@ -1,110 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {DFF5C3E2-4DE5-4C7D-8E85-D13ADED53655} - Win32Proj - Minutor - - - - Application - true - Unicode - Static - - - Application - false - true - Unicode - Static - - - - - - - - - - - - - true - - - false - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebug - - - Windows - true - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - LIBCMT.lib - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - - - Windows - true - true - true - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - Create - Create - - - - - - - - {9e6153b8-20a1-42dc-b889-dad936a8a786} - - - - - - \ No newline at end of file diff --git a/Win/Resource.h b/Win/Resource.h deleted file mode 100644 index e41ddcbd..00000000 --- a/Win/Resource.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#define IDS_APP_TITLE 100 - -#define IDR_MAINFRAME 128 -#define IDD_MINUTOR_DIALOG 101 -#define IDD_ABOUTBOX 102 -#define IDD_COLORSCHEMES 103 -#define IDD_COLORSCHEME 104 -#define IDM_ABOUT 500 -#define IDM_CLOSE 501 -#define IDM_OPEN 502 -#define IDM_JUMPSPAWN 508 -#define IDM_JUMPPLAYER 509 -#define IDM_LIGHTING 510 -#define IDM_CAVEMODE 511 -#define IDM_OBSCURED 512 -#define IDM_DEPTH 513 -#define IDM_COLOR 514 -#define IDM_HELL 515 -#define IDM_END 516 -#define IDM_MOB 517 -#define IDM_WORLD 2000 -#define IDM_CUSTOMCOLOR 3000 -#define IDI_MINUTOR 600 -#define IDI_SMALL 601 -#define IDC_MINUTOR 700 -#define IDC_MYICON 701 -#define IDC_SCHEMELIST 702 -#define IDC_ADD 703 -#define IDC_REMOVE 704 -#define IDC_EDIT 705 -#define IDC_COLORLIST 706 -#define IDC_SCHEMENAME 707 -#define IDC_CURCOLOR 708 -#define IDC_CURALPHA 709 -#define ID_LAYERSLIDER 1001 -#define ID_LAYERLABEL 1002 -#define ID_STATUSBAR 1003 -#define ID_PROGRESS 1004 - -#ifndef IDC_STATIC -#define IDC_STATIC -1 -#endif -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS - -#define _APS_NO_MFC 130 -#define _APS_NEXT_RESOURCE_VALUE 129 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif diff --git a/Win/icon.ico b/Win/icon.ico deleted file mode 100644 index ab6d2622b995d470e29e962ba08236925c1adaab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51262 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 -#include - -// C RunTime Header Files -#include -#include -#include -#include - - -// TODO: reference additional headers your program requires here diff --git a/Win/targetver.h b/Win/targetver.h deleted file mode 100644 index b5a7b335..00000000 --- a/Win/targetver.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/biomeidentifier.cpp b/biomeidentifier.cpp new file mode 100644 index 00000000..f03b808b --- /dev/null +++ b/biomeidentifier.cpp @@ -0,0 +1,86 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "biomeidentifier.h" +#include "json.h" + +static BiomeInfo unknownBiome; +BiomeIdentifier::BiomeIdentifier() +{ + unknownBiome.name="Unknown"; +} + +BiomeInfo &BiomeIdentifier::getBiome(int biome) +{ + QList &list=biomes[biome]; + //search backwards for priority sorting to work + for (int i=list.length()-1;i>=0;i--) + if (list[i]->enabled) + return *list[i]; + return unknownBiome; +} + +void BiomeIdentifier::enableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=true; +} +void BiomeIdentifier::disableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=false; +} + +int BiomeIdentifier::addDefinitions(JSONArray *defs,int pack) +{ + if (pack==-1) + { + pack=packs.length(); + packs.append(QList()); + } + + int len=defs->length(); + for (int i=0;i(defs->at(i)); + int id=b->at("id")->asNumber(); + + BiomeInfo *biome=new BiomeInfo(); + biome->enabled=true; + if (b->has("name")) + biome->name=b->at("name")->asString(); + else + biome->name="Unknown"; + biomes[id].append(biome); + packs[pack].append(biome); + } + return pack; +} diff --git a/biomeidentifier.h b/biomeidentifier.h new file mode 100644 index 00000000..7efc555a --- /dev/null +++ b/biomeidentifier.h @@ -0,0 +1,56 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __BIOMEIDENTIFIER_H__ +#define __BIOMEIDENTIFIER_H__ + +#include +#include +#include +class JSONArray; + +class BiomeInfo +{ +public: + BiomeInfo() {} + QString name; + bool enabled; +}; + +class BiomeIdentifier +{ +public: + BiomeIdentifier(); + int addDefinitions(JSONArray *,int pack=-1); + void enableDefinitions(int); + void disableDefinitions(int); + BiomeInfo &getBiome(int); +private: + QHash > biomes; + QList > packs; +}; + +#endif diff --git a/blockidentifier.cpp b/blockidentifier.cpp new file mode 100644 index 00000000..d7d55f6c --- /dev/null +++ b/blockidentifier.cpp @@ -0,0 +1,221 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "blockidentifier.h" +#include "json.h" +#include + +static BlockInfo unknownBlock; +BlockIdentifier::BlockIdentifier() +{ + for (int i=0;i<16;i++) + unknownBlock.colors[i]=0xff00ff; + unknownBlock.alpha=1.0; + unknownBlock.flags=0; + unknownBlock.name="Unknown"; +} + +// this routine is ridiculously slow +BlockInfo &BlockIdentifier::getBlock(int id, int data) +{ + quint32 bid=id|(data<<12); + //first check the cache + if (cache[bid]!=NULL) + return *cache[bid]; + + //first get the mask + if (blocks.contains(id)) + data&=blocks[id].first()->mask; + //now find the variant + if (blocks.contains(bid)) + { + QList &list=blocks[bid]; + //run backwards for priority sorting + for (int i=list.length()-1;i>=0;i--) + { + if (list[i]->enabled) + { + cache[bid]=list[i]; + return *list[i]; + } + } + } + //no enabled variant found + if (blocks.contains(id)) + { + QList &list=blocks[id]; + for (int i=list.length()-1;i>=0;i--) + { + if (list[i]->enabled) + { + cache[bid]=list[i]; + return *list[i]; + } + } + } + //no blocks at all found.. dammit + return unknownBlock; +} + +void BlockIdentifier::enableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=true; + //clear cache + for (int i=0;i<65536;i++) + cache[i]=NULL; +} + +void BlockIdentifier::disableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=false; + //clear cache + for (int i=0;i<65536;i++) + cache[i]=NULL; +} + +int BlockIdentifier::addDefinitions(JSONArray *defs,int pack) +{ + if (pack==-1) + { + pack=packs.length(); + packs.append(QList()); + } + int len=defs->length(); + for (int i=0;i(defs->at(i)),NULL,pack); + //clear cache + for (int i=0;i<65536;i++) + cache[i]=NULL; + return pack; +} + +static int clamp(int v,int min,int max) +{ + return (vmin?v:min):max); +} + +void BlockIdentifier::parseDefinition(JSONObject *b, BlockInfo *parent, int pack) +{ + int id; + if (parent==NULL) + id=b->at("id")->asNumber(); + else + { + id=parent->id; + int data=b->at("data")->asNumber(); + id|=data<<12; + } + BlockInfo *block=new BlockInfo(); + block->id=id; + + if (b->has("name")) + block->name=b->at("name")->asString(); + else if (parent!=NULL) + block->name=parent->name; + else + block->name="Unknown"; + block->enabled=true; + if (b->has("flags")) + block->flags=b->at("flags")->asNumber(); + else if (parent!=NULL) + block->flags=parent->flags; + else + block->flags=0; + if (b->has("color")) + { + QString color=b->at("color")->asString(); + quint32 col=0; + for (int h=0;h='0' && c<='9') + col|=c-'0'; + else if (c>='A' && c<='F') + col|=c-'A'+10; + else if (c>='a' && c<='f') + col|=c-'a'+10; + } + int rd=col>>16; + int gn=(col>>8)&0xff; + int bl=col&0xff; + + if (b->has("alpha")) + block->alpha=b->at("alpha")->asNumber(); + else if (parent!=NULL) + block->alpha=parent->alpha; + else + block->alpha=1.0; + + //pre multiply alphas + rd*=block->alpha; + gn*=block->alpha; + bl*=block->alpha; + + //pre-calculate light spectrum + double y=0.299*rd+0.587*gn+0.114*bl; + double u=(bl-y)*0.565; + double v=(rd-y)*0.713; + double delta=y/15; + for (int i=0;i<16;i++) + { + y=i*delta; + rd=(unsigned int)clamp(y+1.403*v,0,255); + gn=(unsigned int)clamp(y-0.344*u-0.714*v,0,255); + bl=(unsigned int)clamp(y+1.770*u,0,255); + block->colors[i]=(rd<<16)|(gn<<8)|bl; + } + + } + else if (parent!=NULL) + { + for (int i=0;i<16;i++) + block->colors[i]=parent->colors[i]; + block->alpha=parent->alpha; + } + else + block->alpha=0.0; + if (b->has("mask")) + block->mask=b->at("mask")->asNumber(); + else + block->mask=0xff; + if (b->has("variants")) + { + JSONArray *variants=dynamic_cast(b->at("variants")); + int vlen=variants->length(); + for (int j=0;j(variants->at(j)),block,pack); + } + blocks[id].append(block); + packs[pack].append(block); +} diff --git a/blockidentifier.h b/blockidentifier.h new file mode 100644 index 00000000..abcefad0 --- /dev/null +++ b/blockidentifier.h @@ -0,0 +1,75 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __BLOCKIDENTIFIER_H__ +#define __BLOCKIDENTIFIER_H__ + +#include +#include +#include +#include + +class JSONArray; +class JSONObject; + +// bit masks for the flags +#define BlockTransparent 1 +#define BlockSolid 2 +#define BlockLiquid 4 + +// mobs can't spawn on transparent, but need 2 blocks of transparent, +// non solid, non liquid above + +class BlockInfo +{ +public: + BlockInfo() {} + int id; + QString name; + double alpha; + quint8 flags; + quint8 mask; + bool enabled; + quint32 colors[16]; +}; + +class BlockIdentifier +{ +public: + BlockIdentifier(); + int addDefinitions(JSONArray *,int pack=-1); + void enableDefinitions(int); + void disableDefinitions(int); + BlockInfo &getBlock(int id,int data); +private: + void parseDefinition(JSONObject *block,BlockInfo *parent,int pack); + QMap > blocks; + QList > packs; + BlockInfo *cache[65536]; +}; + +#endif diff --git a/chunk.cpp b/chunk.cpp new file mode 100644 index 00000000..9a5db4d6 --- /dev/null +++ b/chunk.cpp @@ -0,0 +1,88 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "chunk.h" + +Chunk::Chunk() +{ + loaded=false; +} + +void Chunk::load(NBT &nbt) +{ + renderedAt=-1; //impossible. + memset(this->biomes,127,256); //init to unknown biome + for (int i=0;i<16;i++) + this->sections[i]=NULL; + highest=0; + + Tag *level=nbt.at("Level"); + Tag *biomes=level->at("Biomes"); + memcpy(this->biomes,biomes->toByteArray(),biomes->length()); + Tag *sections=level->at("Sections"); + int numSections=sections->length(); + for (int i=0;iat(i); + ChunkSection *cs=new ChunkSection(); + const quint8 *raw=section->at("Blocks")->toByteArray(); + for (int i=0;i<4096;i++) + cs->blocks[i]=raw[i]; + if (section->has("Add")) + { + raw=section->at("Add")->toByteArray(); + for (int i=0;i<2048;i++) + { + cs->blocks[i*2]|=(raw[i]&0xf)<<8; + cs->blocks[i*2+1]|=(raw[i]&0xf0)<<4; + } + } + memcpy(cs->data,section->at("Data")->toByteArray(),2048); + memcpy(cs->light,section->at("BlockLight")->toByteArray(),2048); + int idx=section->at("Y")->toInt(); + this->sections[idx]=cs; + } + loaded=true; + for (int i=15;i>=0;i--) //check for the highest block in this chunk + { + if (this->sections[i]) + for (int j=4095;j>=0;j--) + if (this->sections[i]->blocks[j]) + { + highest=i*16+(j>>8); + return; + } + } +} +Chunk::~Chunk() +{ + if (loaded) + for (int i=0;i<16;i++) + if (sections[i]) + delete sections[i]; +} diff --git a/OSX/MapViewer.h b/chunk.h similarity index 61% rename from OSX/MapViewer.h rename to chunk.h index f3a926d1..dc89e105 100644 --- a/OSX/MapViewer.h +++ b/chunk.h @@ -1,17 +1,17 @@ /* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -24,26 +24,38 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import -#import "Map.h" - -@interface MapViewer : NSObject { - - IBOutlet id window; - IBOutlet Map *map; - IBOutlet id slider; - IBOutlet id depthText; - IBOutlet id status; - IBOutlet id progressBar; - int curDepth; - int spawnX,spawnY,spawnZ; - int playerX,playerY,playerZ; -} --(void)openWorld:(NSString *)world; --(void)jumpToSpawn; --(void)jumpToPlayer; --(IBAction) sliderChanged:(NSSlider*)sender; --(void)setOpts:(int)options; --(void)setColorScheme:(unsigned int *)colors; - -@end + + +#ifndef __CHUNK_H__ +#define __CHUNK_H__ + +#include +#include "nbt.h" +class BlockIdentifier; + +class ChunkSection +{ +public: + quint16 blocks[4096]; + quint8 data[2048]; + quint8 light[2048]; +}; + +class Chunk +{ +public: + Chunk(); + void load(NBT &nbt); + ~Chunk(); +protected: + quint8 biomes[256]; + int highest; + ChunkSection *sections[16]; + int renderedAt; + bool loaded; + uchar image[16*16*4]; //cached render + friend class MapView; + friend class ChunkCache; +}; + +#endif diff --git a/chunkcache.cpp b/chunkcache.cpp new file mode 100644 index 00000000..a4d61be6 --- /dev/null +++ b/chunkcache.cpp @@ -0,0 +1,84 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "chunkcache.h" +#include "chunkloader.h" + +ChunkID::ChunkID(int x,int z) : x(x),z(z) +{ +} +bool ChunkID::operator==(const ChunkID &other) const +{ + return other.x==x && other.z==z; +} +uint qHash(const ChunkID &c) +{ + return c.x^c.z; //quick way to hash a pair of integers +} + +ChunkCache::ChunkCache() +{ + cache.setMaxCost(5000); // 5000 chunks, or 1600x1600 blocks +} + +ChunkCache::~ChunkCache() +{ +} + +void ChunkCache::clear() +{ + QThreadPool::globalInstance()->waitForDone(); + cache.clear(); +} + +void ChunkCache::setPath(QString path) +{ + this->path=path; +} + +Chunk *ChunkCache::fetch(int x, int z) +{ + ChunkID id(x,z); + if (cache.contains(id)) + { + if (cache[id]->loaded) + return cache[id]; + return NULL; //we're loading this chunk, or it's blank. + } + // launch background process to load this chunk + Chunk *chunk=new Chunk(); + cache.insert(id,chunk); + ChunkLoader *loader=new ChunkLoader(path,x,z,chunk); + connect(loader,SIGNAL(loaded(int,int)), + this,SLOT(gotChunk(int,int))); + QThreadPool::globalInstance()->start(loader); + return NULL; +} +void ChunkCache::gotChunk(int x,int z) +{ + emit chunkLoaded(x,z); +} diff --git a/chunkcache.h b/chunkcache.h new file mode 100644 index 00000000..ec9b5742 --- /dev/null +++ b/chunkcache.h @@ -0,0 +1,68 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __CHUNKCACHE_H__ +#define __CHUNKCACHE_H__ + +#include +#include +#include "chunk.h" + +class ChunkID +{ +public: + ChunkID(int x,int z); + bool operator==(const ChunkID &) const; + friend uint qHash(const ChunkID &); +protected: + int x,z; +}; + +class ChunkCache : public QObject +{ + Q_OBJECT + +public: + ChunkCache(); + ~ChunkCache(); + void clear(); + void setPath(QString path); + Chunk *fetch(int x,int z); + +signals: + void chunkLoaded(int x,int z); + +private slots: + void gotChunk(int x,int z); + +private: + QString path; + QCache cache; +}; + +#endif diff --git a/OSX/minutorAppDelegate.h b/chunkloader.cpp similarity index 50% rename from OSX/minutorAppDelegate.h rename to chunkloader.cpp index 6a23ac9a..3c1ca420 100644 --- a/OSX/minutorAppDelegate.h +++ b/chunkloader.cpp @@ -1,17 +1,17 @@ /* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -25,31 +25,46 @@ THE POSSIBILITY OF SUCH DAMAGE. */ -#import -#import "ColorScheme.h" - -@interface minutorAppDelegate : NSObject { - NSWindow *window; - NSMutableArray *worldPaths; - NSString *customWorld; - IBOutlet id mapViewer; - int opts; - IBOutlet id colorSchemes; - IBOutlet id worldMenu; - IBOutlet id hellItem; - IBOutlet id enderItem; +#include "chunkloader.h" +#include "chunk.h" + +ChunkLoader::ChunkLoader(QString path,int x,int z,Chunk *chunk) : path(path),x(x),z(z),chunk(chunk) +{ +} +ChunkLoader::~ChunkLoader() +{ +} + +void ChunkLoader::run() +{ + int rx=x>>5; + int rz=z>>5; + + QFile f(path+QDir::toNativeSeparators("/region/r.")+QString::number(rx)+"."+QString::number(rz)+".mca"); + if (!f.open(QIODevice::ReadOnly)) //no chunks in this region + { + emit loaded(x,z); + return; + } + //map header into memory + uchar *header=f.map(0,4096); + int offset=4*((x&31)+(z&31)*32); + int coffset=(header[offset]<<16)|(header[offset+1]<<8)|header[offset+2]; + int numSectors=header[offset+3]; + f.unmap(header); + + if (coffset==0) // no chunk + { + f.close(); + emit loaded(x,z); + return; + } + + uchar *raw=f.map(coffset*4096,numSectors*4096); + NBT nbt(raw); + chunk->load(nbt); + f.unmap(raw); + f.close(); + + emit loaded(x,z); } -- (IBAction) openWorld: sender; -- (IBAction) jumpToSpawn: sender; -- (IBAction) jumpToPlayer: sender; -- (IBAction) toggleLighting: sender; -- (IBAction) toggleCaveMode: sender; -- (IBAction) toggleObscured: sender; -- (IBAction) toggleDepth: sender; -- (IBAction) toggleMob: sender; -- (IBAction) toggleHell: sender; -- (IBAction) toggleEnder: sender; -- (IBAction) selectScheme: sender; - - -@end diff --git a/OSX/main.m b/chunkloader.h similarity index 65% rename from OSX/main.m rename to chunkloader.h index 32bce55a..896a6c33 100644 --- a/OSX/main.m +++ b/chunkloader.h @@ -1,17 +1,17 @@ /* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -25,9 +25,27 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import +#ifndef __CHUNKLOADER_H__ +#define __CHUNKLOADER_H__ + +#include +#include +class Chunk; -int main(int argc, char *argv[]) +class ChunkLoader : public QObject, public QRunnable { - return NSApplicationMain(argc, (const char **) argv); -} + Q_OBJECT +public: + ChunkLoader(QString path,int x,int z,Chunk *chunk); + ~ChunkLoader(); +signals: + void loaded(int x,int z); +protected: + void run(); +private: + QString path; + int x,z; + Chunk *chunk; +}; + +#endif diff --git a/colorschemes.c b/colorschemes.c deleted file mode 100644 index 9bc69eac..00000000 --- a/colorschemes.c +++ /dev/null @@ -1,445 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include "MinutorMap/blockInfo.h" - -extern void selectColorScheme(GtkMenuItem *menuItem,gpointer user_data); - -static void renameScheme(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model); -static void editScheme(GtkButton *widget,GtkListStore *store); -static void addScheme(GtkButton *widget,GtkListStore *store); -static void removeScheme(GtkButton *widget,GtkListStore *store); -static void updateColor(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model); -static void updateAlpha(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model); -static void renderId(GtkTreeViewColumn *column,GtkCellRenderer *cell, - GtkTreeModel *model,GtkTreeIter *iter,gpointer data); -static void renderColor(GtkTreeViewColumn *column,GtkCellRenderer *cell, - GtkTreeModel *model,GtkTreeIter *iter,gpointer data); - -typedef struct -{ - int id; - char name[256]; - uint32_t colors[256]; -} ColorScheme; - -GArray *schemes=NULL; - -static void destroy() -{ -} - -GArray *menuitems=NULL; - -#define COLORGROUP "ColorSchemes" - -static GtkMenuShell *menu; -static int menupos; -static GSList *itemgroup; -void initColorSchemes(GtkMenuShell *menushell,int startpos,GSList *group) -{ - menu=menushell; - menupos=startpos; - itemgroup=group; - - menuitems=g_array_new(FALSE,TRUE,sizeof(GtkWidget *)); - schemes=g_array_new(FALSE,TRUE,sizeof(ColorScheme)); - - GKeyFile *keyfile=g_key_file_new(); - gchar *filename=g_strdup_printf("%s/.minutor",g_get_home_dir()); - if (g_key_file_load_from_file(keyfile,filename,G_KEY_FILE_NONE,NULL)) - { - ColorScheme cs; - int num=g_key_file_get_integer(keyfile,COLORGROUP,"count",NULL); - for (int i=0;ilen; - g_array_append_val(schemes,cs); - GtkWidget *item=gtk_radio_menu_item_new_with_label(itemgroup,cs.name); - itemgroup=gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(item)); - g_array_append_val(menuitems,item); - gtk_menu_shell_insert(menu,item,menupos); - g_signal_connect(G_OBJECT(item),"activate", - G_CALLBACK(selectColorScheme),GINT_TO_POINTER(cs.id)); - } - } - g_key_file_free(keyfile); - g_free(filename); -} -static void saveSchemes() -{ - GKeyFile *keyfile=g_key_file_new(); - gchar *filename=g_strdup_printf("%s/.minutor",g_get_home_dir()); - g_key_file_load_from_file(keyfile,filename,G_KEY_FILE_NONE,NULL); - - //should delete all existing colorschemes - g_key_file_remove_group(keyfile,COLORGROUP,NULL); - - ColorScheme *cs; - int num=0; - gint list[256]; - for (int i=0;ilen;i++) - { - cs=&g_array_index(schemes,ColorScheme,i); - if (cs->id==-1) continue; - gchar *key=g_strdup_printf("name%d",num); - g_key_file_set_string(keyfile,COLORGROUP,key,cs->name); - g_free(key); - key=g_strdup_printf("color%d",num); - for (int j=0;j<256;j++) - list[j]=cs->colors[j]; - g_key_file_set_integer_list(keyfile,COLORGROUP,key,list,256); - g_free(key); - num++; - } - g_key_file_set_integer(keyfile,COLORGROUP,"count",num); - - gsize len; - gchar *data=g_key_file_to_data(keyfile,&len,NULL); - GFile *f=g_file_new_for_path(filename); - g_file_replace_contents(f,data,len,NULL,FALSE,G_FILE_CREATE_NONE,NULL,NULL,NULL); - g_free(data); - g_free(filename); - g_key_file_free(keyfile); - g_object_unref(G_OBJECT(f)); -} - -ColorScheme *newScheme(char *name) -{ - ColorScheme cs; - g_memmove(cs.name,name,256); - cs.id=schemes->len; - g_array_append_val(schemes,cs); - GtkWidget *item=gtk_radio_menu_item_new_with_label(itemgroup,cs.name); - itemgroup=gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(item)); - g_array_append_val(menuitems,item); - gtk_menu_shell_insert(menu,item,menupos); - g_signal_connect(G_OBJECT(item),"activate", - G_CALLBACK(selectColorScheme),GINT_TO_POINTER(cs.id)); - gtk_widget_show(item); - return &g_array_index(schemes,ColorScheme,cs.id); -} -static void initScheme(ColorScheme *cs) -{ - for (int i=0;i>16; - g=color>>8; - b=color; - double alpha=blocks[i].alpha; - r/=alpha; - g/=alpha; - b/=alpha; - a=alpha*255; - color=(r<<24)|(g<<16)|(b<<8)|a; - cs->colors[i]=color; - } - for (int i=numBlocks;i<256;i++) - cs->colors[i]=0; -} - -static GtkWidget *schemeList; -static GtkWidget *colorList; - -void editColorSchemes(GtkMenuItem *menuItem,gpointer user_data) -{ - GtkWidget *win=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(win),"Color Schemes"); - gtk_window_set_default_size(GTK_WINDOW(win),300,300); - g_signal_connect(G_OBJECT(win),"destroy", - G_CALLBACK(destroy),NULL); - - //main hbox - GtkWidget *hbox=gtk_hbox_new(FALSE,5); - gtk_container_add(GTK_CONTAINER(win),hbox); - - GtkListStore *store=gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_INT); - - ColorScheme *cs; - GtkTreeIter iter; - for (int i=0;ilen;i++) - { - cs=&g_array_index(schemes,ColorScheme,i); - if (cs->id==-1) continue; - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, - 0,cs->name,1,cs->id,-1); - } - - schemeList=gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); - GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(schemeList)); - gtk_tree_selection_set_mode(sel,GTK_SELECTION_SINGLE); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - renderer=gtk_cell_renderer_text_new(); - g_object_set(renderer,"editable",TRUE,NULL); - g_signal_connect(G_OBJECT(renderer),"edited", - G_CALLBACK(renameScheme),GTK_TREE_MODEL(store)); - column=gtk_tree_view_column_new_with_attributes(NULL, - renderer,"text",0,NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(schemeList),column); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(schemeList),FALSE); - gtk_box_pack_start(GTK_BOX(hbox),schemeList,TRUE,TRUE,0); - - //button box - GtkWidget *vbox=gtk_vbox_new(FALSE,5); - gtk_box_pack_start(GTK_BOX(hbox),vbox,FALSE,FALSE,0); - - GtkWidget *edit=gtk_button_new_with_label("Edit"); - gtk_box_pack_start(GTK_BOX(vbox),edit,FALSE,FALSE,0); - g_signal_connect(G_OBJECT(edit),"clicked", - G_CALLBACK(editScheme),store); - - GtkWidget *add=gtk_button_new_with_label("Add"); - gtk_box_pack_start(GTK_BOX(vbox),add,FALSE,FALSE,0); - g_signal_connect(G_OBJECT(add),"clicked", - G_CALLBACK(addScheme),store); - - GtkWidget *remove=gtk_button_new_with_label("Remove"); - gtk_box_pack_start(GTK_BOX(vbox),remove,FALSE,FALSE,0); - g_signal_connect(G_OBJECT(remove),"clicked", - G_CALLBACK(removeScheme),store); - - gtk_widget_show_all(win); -} -static void renameScheme(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model) -{ - GtkTreeIter iter; - gtk_tree_model_get_iter_from_string(model,&iter,path); - gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,text,-1); - int id; - gtk_tree_model_get(model,&iter,1,&id,-1); - ColorScheme *cs=&g_array_index(schemes,ColorScheme,id); - g_stpcpy(cs->name,text); - GtkWidget *item=g_array_index(menuitems,GtkWidget *,id); - gtk_menu_item_set_label(GTK_MENU_ITEM(item),text); - saveSchemes(); -} -static void addScheme(GtkButton *widget,GtkListStore *store) -{ - ColorScheme *cs=newScheme("Color Scheme"); - initScheme(cs); - - GtkTreeIter iter; - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, - 0,cs->name,1,cs->id,-1); - saveSchemes(); -} -static void removeScheme(GtkButton *widget,GtkListStore *store) -{ - GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(schemeList)); - GtkTreeIter iter; - if (gtk_tree_selection_get_selected(sel,NULL,&iter)) - { - int id; - gtk_tree_model_get(GTK_TREE_MODEL(store),&iter,1,&id,-1); - gtk_list_store_remove(store,&iter); - ColorScheme *cs=&g_array_index(schemes,ColorScheme,id); - GtkWidget *w=g_array_index(menuitems,GtkWidget *,id); - gtk_container_remove(GTK_CONTAINER(menu),w); - cs->id=-1; - saveSchemes(); - } - -} - -static void closeScheme() -{ -} - -uint32_t *getColorScheme(int id) -{ - static ColorScheme standard; - if (id==-1) - { - initScheme(&standard); - return standard.colors; - } - ColorScheme *cs=&g_array_index(schemes,ColorScheme,id); - return cs->colors; -} -static ColorScheme *curScheme; -static void editScheme(GtkButton *widget,GtkListStore *store) -{ - GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(schemeList)); - GtkTreeIter iter; - if (gtk_tree_selection_get_selected(sel,NULL,&iter)) - { - int id; - gtk_tree_model_get(GTK_TREE_MODEL(store),&iter,1,&id,-1); - curScheme=&g_array_index(schemes,ColorScheme,id); - - GtkWidget *win=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(win),"Color Scheme"); - gtk_window_set_default_size(GTK_WINDOW(win),350,400); - g_signal_connect(G_OBJECT(win),"destroy", - G_CALLBACK(closeScheme),NULL); - - //main vbox - GtkWidget *vbox=gtk_vbox_new(FALSE,5); - gtk_container_add(GTK_CONTAINER(win),vbox); - - GtkListStore *substore=gtk_list_store_new(4,G_TYPE_INT,G_TYPE_STRING,G_TYPE_INT,G_TYPE_INT); - - GtkTreeIter iter; - for (int i=0;icolors[i]>>8, - 3,curScheme->colors[i]&0xff, - -1); - } - - - colorList=gtk_tree_view_new_with_model(GTK_TREE_MODEL(substore)); - GtkWidget *scroll=gtk_scrolled_window_new(gtk_tree_view_get_hadjustment(GTK_TREE_VIEW(colorList)),gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(colorList))); - gtk_box_pack_start(GTK_BOX(vbox),scroll,TRUE,TRUE,0); - gtk_container_add(GTK_CONTAINER(scroll),colorList); - - GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(colorList)); - gtk_tree_selection_set_mode(sel,GTK_SELECTION_SINGLE); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - renderer=gtk_cell_renderer_text_new(); - column=gtk_tree_view_column_new_with_attributes("Id", - renderer,"text",0,NULL); - gtk_tree_view_column_set_cell_data_func(column,renderer, - renderId,NULL,NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(colorList),column); - renderer=gtk_cell_renderer_text_new(); - column=gtk_tree_view_column_new_with_attributes("Name", - renderer,"text",1,NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(colorList),column); - renderer=gtk_cell_renderer_text_new(); - column=gtk_tree_view_column_new_with_attributes("Color", - renderer,"text",2,NULL); - gtk_tree_view_column_set_cell_data_func(column,renderer, - renderColor,NULL,NULL); - g_object_set(renderer,"editable",TRUE,NULL); - g_signal_connect(G_OBJECT(renderer),"edited", - G_CALLBACK(updateColor),GTK_TREE_MODEL(substore)); - gtk_tree_view_append_column(GTK_TREE_VIEW(colorList),column); - renderer=gtk_cell_renderer_text_new(); - column=gtk_tree_view_column_new_with_attributes("Alpha", - renderer,"text",3,NULL); - g_object_set(renderer,"editable",TRUE,NULL); - g_signal_connect(G_OBJECT(renderer),"edited", - G_CALLBACK(updateAlpha),GTK_TREE_MODEL(substore)); - gtk_tree_view_append_column(GTK_TREE_VIEW(colorList),column); - - gtk_widget_show_all(win); - } -} -static void updateColor(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model) -{ - GtkTreeIter iter; - gtk_tree_model_get_iter_from_string(model,&iter,path); - int id; - gtk_tree_model_get(model,&iter,0,&id,-1); - uint32_t color=0; - for (int i=0;text[i];i++) - { - if (text[i]>='0' && text[i]<='9') - { - color<<=4; - color|=text[i]-'0'; - } - if (text[i]>='a' && text[i]<='f') - { - color<<=4; - color|=text[i]+10-'a'; - } - if (text[i]>='A' && text[i]<='F') - { - color<<=4; - color|=text[i]+10-'A'; - } - } - gtk_list_store_set(GTK_LIST_STORE(model),&iter,2,color,-1); - curScheme->colors[id]&=0xff; - curScheme->colors[id]|=color<<8; - saveSchemes(); -} -static void updateAlpha(GtkCellRendererText *renderer,gchar *path,gchar *text,GtkTreeModel *model) -{ - GtkTreeIter iter; - gtk_tree_model_get_iter_from_string(model,&iter,path); - int id; - gtk_tree_model_get(model,&iter,0,&id,-1); - uint8_t alpha=0; - for (int i=0;text[i];i++) - { - if (text[i]>='0' && text[i]<='9') - { - alpha*=10; - alpha+=text[i]-'0'; - } - } - gtk_list_store_set(GTK_LIST_STORE(model),&iter,3,alpha,-1); - curScheme->colors[id]&=~0xff; - curScheme->colors[id]|=alpha; - saveSchemes(); -} -static void renderId(GtkTreeViewColumn *column,GtkCellRenderer *cell, - GtkTreeModel *model,GtkTreeIter *iter,gpointer data) -{ - int id; - gtk_tree_model_get(model,iter,0,&id,-1); - gchar *name=g_strdup_printf("%d.",id); - g_object_set(G_OBJECT(cell),"text",name,NULL); - g_free(name); -} -static void renderColor(GtkTreeViewColumn *column,GtkCellRenderer *cell, - GtkTreeModel *model,GtkTreeIter *iter,gpointer data) -{ - uint32_t color; - gtk_tree_model_get(model,iter,2,&color,-1); - gchar *name=g_strdup_printf("#%06x",color); - g_object_set(G_OBJECT(cell),"text",name,NULL); - g_free(name); -} diff --git a/colorschemes.h b/colorschemes.h deleted file mode 100644 index 8e3d8d1a..00000000 --- a/colorschemes.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef __COLORSCHEMES_H__ -#define __COLORSCHEMES_H__ - -#include - -void initColorSchemes(GtkMenuShell *menushell,int startpos,GSList *group); -void editColorSchemes(GtkMenuItem *menuItem,gpointer user_data); -uint32_t *getColorScheme(int id); - -#endif diff --git a/definitionmanager.cpp b/definitionmanager.cpp new file mode 100644 index 00000000..e2b312f8 --- /dev/null +++ b/definitionmanager.cpp @@ -0,0 +1,512 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + + +#include "definitionmanager.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "biomeidentifier.h" +#include "blockidentifier.h" +#include "dimensions.h" +#include "mapview.h" +#include "json.h" +#include "zipreader.h" +#include "definitionupdater.h" + +DefinitionManager::DefinitionManager(QWidget *parent) : QWidget(parent) +{ + setWindowFlags(Qt::Window); + setWindowTitle(tr("Definitions")); + + QVBoxLayout *layout=new QVBoxLayout; + QStringList labels; + labels<setHorizontalHeaderLabels(labels); + table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + table->horizontalHeader()->setSectionResizeMode(0,QHeaderView::Stretch); + table->horizontalHeader()->setHighlightSections(false); + table->verticalHeader()->hide(); + table->setShowGrid(false); + table->setSelectionBehavior(QAbstractItemView::SelectRows); + layout->addWidget(table,1); + + QWidget *buttonBar=new QWidget; + QHBoxLayout *buttons=new QHBoxLayout; + QPushButton *add=new QPushButton(tr("Add Pack...")); + connect(add,SIGNAL(clicked()), + this,SLOT(addPack())); + buttons->addWidget(add); + QPushButton *remove=new QPushButton(tr("Remove Pack")); + connect(remove,SIGNAL(clicked()), + this,SLOT(removePack())); + connect(this,SIGNAL(packSelected(bool)), + remove,SLOT(setEnabled(bool))); + buttons->addWidget(remove); + QPushButton *save=new QPushButton(tr("Export Pack...")); + connect(save,SIGNAL(clicked()), + this,SLOT(exportPack())); + connect(this,SIGNAL(packSelected(bool)), + save,SLOT(setEnabled(bool))); + buttons->addWidget(save); + buttonBar->setLayout(buttons); + layout->addWidget(buttonBar,0); + + emit packSelected(false); + setLayout(layout); + + dimensionList = new Dimensions; + blocks=new BlockIdentifier; + biomes=new BiomeIdentifier; + + QSettings settings; + sorted=settings.value("packs").toList(); + + //copy over built-in definitions if necessary + QString defdir=QStandardPaths::writableLocation(QStandardPaths::DataLocation); + QDir dir; + dir.mkpath(defdir); + QDirIterator it(":/definitions",QDir::Files|QDir::Readable); + while (it.hasNext()) + { + it.next(); + installJson(it.filePath(),false,false); + } + settings.setValue("packs",sorted); + // we load the definitions backwards for priority. + for (int i=sorted.length()-1;i>=0;i--) + loadDefinition(sorted[i].toString()); + + //hook up table selection signal + connect(table,SIGNAL(currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)), + this, SLOT(selectedPack(QTableWidgetItem*,QTableWidgetItem*))); + //fill out table + refresh(); +} + +BlockIdentifier *DefinitionManager::blockIdentifier() +{ + return blocks; +} +BiomeIdentifier *DefinitionManager::biomeIdentifier() +{ + return biomes; +} +Dimensions *DefinitionManager::dimensions() +{ + return dimensionList; +} + +void DefinitionManager::refresh() +{ + table->clearContents(); + table->setRowCount(0); + QStringList types; + types<rowCount(); + table->insertRow(row); + QTableWidgetItem *name=new QTableWidgetItem(def.name); + name->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); + name->setData(Qt::UserRole,def.path); + table->setItem(row,0,name); + QTableWidgetItem *ver=new QTableWidgetItem(def.version); + ver->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); + ver->setData(Qt::UserRole,def.path); + table->setItem(row,1,ver); + QTableWidgetItem *type=new QTableWidgetItem(types[def.type]); + type->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); + type->setData(Qt::UserRole,def.path); + table->setItem(row,2,type); + QCheckBox *active=new QCheckBox; + active->setChecked(def.enabled); + connect(active,SIGNAL(toggled(bool)), + this,SLOT(toggledPack(bool))); + checks.append(active); + table->setCellWidget(row,3,active); + } +} + +void DefinitionManager::selectedPack(QTableWidgetItem *item,QTableWidgetItem *) +{ + emit packSelected(item!=NULL); + if (item!=NULL) + selected=item->data(Qt::UserRole).toString(); + else + selected=QString(); +} + +void DefinitionManager::toggledPack(bool) +{ + qDebug()<<"toggled pack"; + //we disable the pack + //emit packsChanged() +} + +void DefinitionManager::addPack() +{ + QString packName=QFileDialog::getOpenFileName(this,tr("Open Pack"),QString(),tr("Definitions (*.zip *.json)")); + if (!packName.isEmpty()) + { + if (packName.endsWith(".json",Qt::CaseInsensitive)) //raw json + installJson(packName); + else + installZip(packName); + emit packsChanged(); + QSettings settings; + settings.setValue("packs",sorted); + refresh(); + } +} +void DefinitionManager::installJson(QString path,bool overwrite,bool install) +{ + QString destdir=QStandardPaths::writableLocation(QStandardPaths::DataLocation); + + JSONData *def; + QFile f(path); + f.open(QIODevice::ReadOnly); + try { + def=JSON::parse(f.readAll()); + f.close(); + } catch (JSONParseException e) { + f.close(); + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + e.reason, + QMessageBox::Cancel); + return; + } + + QString key=def->at("name")->asString()+def->at("type")->asString(); + delete def; + QString dest=QDir::toNativeSeparators(destdir+"/"+QString("%1").arg(qHash(key))+".json"); + if (!QFile::exists(dest) || overwrite) + { + if (QFile::exists(dest) && install) + removeDefinition(dest); + if (!QFile::copy(path,dest)) + { + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + tr("Copy error"), + QMessageBox::Cancel); + return; + } + sorted.prepend(dest); + if (install) + loadDefinition(dest); + } +} +void DefinitionManager::installZip(QString path,bool overwrite,bool install) +{ + QString destdir=QStandardPaths::writableLocation(QStandardPaths::DataLocation); + ZipReader zip(path); + if (!zip.open()) + { + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + tr("Corrupt zip"), + QMessageBox::Cancel); + return; + } + //fetch the pack info + JSONData *info; + try { + info=JSON::parse(zip.get("pack_info.json")); + } catch (JSONParseException e) { + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + tr("pack_info.json : %1").arg(e.reason), + QMessageBox::Cancel); + zip.close(); + return; + } + // let's verify all the jsons in the pack + for (int i=0;iat("data")->length();i++) + { + JSONData *def; + try { + def=JSON::parse(zip.get(info->at("data")->at(i)->asString())); + } catch (JSONParseException e) { + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + tr("%1: %2").arg(info->at("data")->at(i)->asString(),e.reason), + QMessageBox::Cancel); + delete def; + delete info; + zip.close(); + return; + } + } + + QString key=info->at("name")->asString()+info->at("type")->asString(); + delete info; + QString dest=QDir::toNativeSeparators(destdir+"/"+QString("%1").arg(qHash(key))+".zip"); + if (!QFile::exists(dest) || overwrite) + { + if (QFile::exists(dest) && install) + removeDefinition(dest); + if (!QFile::copy(path,dest)) + { + QMessageBox::warning(this, + tr("Couldn't install %1").arg(path), + tr("Copy error"), + QMessageBox::Cancel); + return; + } + sorted.prepend(dest); + if (install) + loadDefinition(dest); + } +} +void DefinitionManager::removePack() +{ + //find selected pack + if (definitions.contains(selected)) + { + int ret=QMessageBox::question(this, + tr("Delete Pack"), + tr("Are you sure you want to delete %1?").arg(definitions[selected].name), + QMessageBox::Yes|QMessageBox::No, + QMessageBox::No); + if (ret==QMessageBox::Yes) + removeDefinition(selected); + } +} + +void DefinitionManager::exportPack() +{ + //find selected pack + if (definitions.contains(selected)) + { + QString fname=definitions[selected].name; + switch (definitions[selected].type) + { + case Definition::Block: fname+="_blocks"; break; + case Definition::Biome: fname+="_biomes"; break; + case Definition::Dimension: fname+="_dims"; break; + default: break; + } + if (selected.endsWith(".zip")) + fname+=".zip"; + else + fname+=".json"; + QString dest=QFileDialog::getSaveFileName(this,tr("Save Pack As"),fname,tr("Definitions (*.zip *.json)")); + if (!dest.isEmpty()) + { + if (!QFile::copy(selected,dest)) + { + QMessageBox::warning(this, + tr("Couldn't write to %1").arg(dest), + tr("Copy error"), + QMessageBox::Cancel); + } + } + } +} + +QSize DefinitionManager::minimumSizeHint() const +{ + return QSize(300,300); +} +QSize DefinitionManager::sizeHint() const +{ + return QSize(400,300); +} + +void DefinitionManager::loadDefinition(QString path) +{ + //determine if we're loading a single json or a pack + if (path.endsWith(".json",Qt::CaseInsensitive)) + { + JSONData *def; + QFile f(path); + f.open(QIODevice::ReadOnly); + try { + def=JSON::parse(f.readAll()); + f.close(); + } catch (JSONParseException e) { + return; + } + Definition d; + d.name=def->at("name")->asString(); + d.version=def->at("version")->asString(); + d.path=path; + d.update=def->at("update")->asString(); + QString type=def->at("type")->asString(); + QString key=d.name+type; + d.enabled=true; //should look this up + if (type=="block") + { + d.id=blocks->addDefinitions(dynamic_cast(def->at("data"))); + d.type=Definition::Block; + } else if (type=="biome") { + d.id=biomes->addDefinitions(dynamic_cast(def->at("data"))); + d.type=Definition::Biome; + } else if (type=="dimension") { + d.id=dimensionList->addDefinitions(dynamic_cast(def->at("data"))); + d.type=Definition::Dimension; + } + definitions.insert(path,d); + delete def; + } + else + { + ZipReader zip(path); + if (!zip.open()) + return; + JSONData *info; + try { + info=JSON::parse(zip.get("pack_info.json")); + } catch (JSONParseException e) { + return; + } + Definition d; + d.name=info->at("name")->asString(); + d.version=info->at("version")->asString(); + d.update=info->at("update")->asString(); + d.path=path; + d.enabled=true; + d.id=0; + d.type=Definition::Pack; + d.blockid=-1; + d.biomeid=-1; + d.dimensionid=-1; + QString key=d.name+"pack"; + for (int i=0;iat("data")->length();i++) + { + JSONData *def; + try { + def=JSON::parse(zip.get(info->at("data")->at(i)->asString())); + } catch (JSONParseException e) { + continue; + } + QString type=def->at("type")->asString(); + if (type=="block") + d.blockid=blocks->addDefinitions(dynamic_cast(def->at("data")),d.blockid); + else if (type=="biome") + d.biomeid=biomes->addDefinitions(dynamic_cast(def->at("data")),d.biomeid); + else if (type=="dimension") + d.dimensionid=dimensionList->addDefinitions(dynamic_cast(def->at("data")),d.dimensionid); + delete def; + } + definitions.insert(path,d); + delete info; + zip.close(); + } +} +void DefinitionManager::removeDefinition(QString path) +{ + + //find the definition and remove it from disk + Definition &def=definitions[path]; + if (def.path==path) + { + switch (def.type) + { + case Definition::Block: + blocks->disableDefinitions(def.id); + break; + case Definition::Biome: + biomes->disableDefinitions(def.id); + break; + case Definition::Dimension: + dimensionList->disableDefinitions(def.id); + break; + case Definition::Pack: + blocks->disableDefinitions(def.blockid); + biomes->disableDefinitions(def.biomeid); + dimensionList->disableDefinitions(def.dimensionid); + break; + } + definitions.remove(path); + QFile::remove(path); + sorted.removeOne(path); + QSettings settings; + settings.setValue("packs",sorted); + emit packsChanged(); + refresh(); + } + +} + +void DefinitionManager::checkForUpdates() +{ + // show update dialog + if (!isUpdating) + autoUpdate(); + if (!isUpdating) // nothing needs updating + { + //hide update dialog + //show completion + } +} + +void DefinitionManager::autoUpdate() +{ + for (int i=0;iupdate(); + } + } +} + +void DefinitionManager::updatePack(DefinitionUpdater *updater,QString filename, QDateTime timestamp) +{ + updateQueue.removeOne(updater); + delete updater; + if (lastUpdated[filename]!=timestamp) + { + // updated + } + lastUpdated[filename]=timestamp; + if (updateQueue.isEmpty()) + emit updateFinished(); +} diff --git a/definitionmanager.h b/definitionmanager.h new file mode 100644 index 00000000..8bbe84a5 --- /dev/null +++ b/definitionmanager.h @@ -0,0 +1,112 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __DEFINITIONMANAGER_H__ +#define __DEFINITIONMANAGER_H__ + +#include +#include +#include +#include +#include +#include + +class QTableWidget; +class QTableWidgetItem; +class QCheckBox; +class BiomeIdentifier; +class BlockIdentifier; +class Dimensions; +class MapView; +class JSONData; +class DefinitionUpdater; + +struct Definition +{ + QString name; + QString version; + QString path; + QString update; + enum {Block,Biome,Dimension,Pack} type; + int id; + bool enabled; + // for packs only + int blockid,biomeid,dimensionid; +}; + +class DefinitionManager : public QWidget +{ + Q_OBJECT +public: + explicit DefinitionManager(QWidget *parent = 0); + void attachMapView(MapView *mapview); + QSize minimumSizeHint() const; + QSize sizeHint() const; + + BlockIdentifier *blockIdentifier(); + BiomeIdentifier *biomeIdentifier(); + Dimensions *dimensions(); + + void autoUpdate(); + +signals: + void packSelected(bool); + void packsChanged(); + void updateFinished(); + +public slots: + void selectedPack(QTableWidgetItem *,QTableWidgetItem *); + void toggledPack(bool); + void addPack(); + void removePack(); + void exportPack(); + void checkForUpdates(); + void updatePack(DefinitionUpdater *updater,QString filename,QDateTime timestamp); + +private: + QTableWidget *table; + QListchecks; + void installJson(QString path,bool overwrite=true,bool install=true); + void installZip(QString path,bool overwrite=true,bool install=true); + void loadDefinition(QString path); + void loadDefinition(JSONData *,int pack=-1); + void removeDefinition(QString path); + void refresh(); + QHash definitions; + BiomeIdentifier *biomes; + BlockIdentifier *blocks; + Dimensions *dimensionList; + QString selected; + QList sorted; + + bool isUpdating; + QList updateQueue; + QHash lastUpdated; +}; + +#endif diff --git a/definitions/vanilla_biomes.json b/definitions/vanilla_biomes.json new file mode 100644 index 00000000..be6494b9 --- /dev/null +++ b/definitions/vanilla_biomes.json @@ -0,0 +1 @@ +{"name":"Vanilla","type":"biome","version":"1.4.5","data":[{"id":0,"name":"Ocean"},{"id":1,"name":"Plains"},{"id":2,"name":"Desert"},{"id":3,"name":"Extreme Hills"},{"id":4,"name":"Forest"},{"id":5,"name":"Taiga"},{"id":6,"name":"Swampland"},{"id":7,"name":"River"},{"id":8,"name":"Hell"},{"id":9,"name":"Sky"},{"id":10,"name":"Frozen Ocean"},{"id":11,"name":"Frozen River"},{"id":12,"name":"Ice Plains"},{"id":13,"name":"Ice Mountains"},{"id":14,"name":"Mushroom Island"},{"id":15,"name":"Mushroom Island Shore"},{"id":16,"name":"Beach"},{"id":17,"name":"Desert Hills"},{"id":18,"name":"Forest Hills"},{"id":19,"name":"Taiga Hills"},{"id":20,"name":"Extreme Hills Edge"},{"id":21,"name":"Jungle"},{"id":22,"name":"Jungle Hills"}],"update":"http://seancode.com/minutor/packs/vanilla_biomes.json"} \ No newline at end of file diff --git a/definitions/vanilla_dims.json b/definitions/vanilla_dims.json new file mode 100644 index 00000000..f15bdf37 --- /dev/null +++ b/definitions/vanilla_dims.json @@ -0,0 +1 @@ +{"name":"Vanilla","type":"dimension","version":"1.4.5","data":[{"name":"Overworld","path":".","scale":1},{"name":"Nether","path":"DIM-1","scale":8},{"name":"End","path":"DIM1","scale":0}],"update":"http://seancode.com/minutor/packs/vanilla_dims.json"} \ No newline at end of file diff --git a/definitions/vanilla_ids.json b/definitions/vanilla_ids.json new file mode 100644 index 00000000..df926728 --- /dev/null +++ b/definitions/vanilla_ids.json @@ -0,0 +1 @@ +{"name":"Vanilla","type":"block","version":"1.4.5","data":[{"id":0,"name":"Air","flags":1},{"id":1,"name":"Stone","color":"747474"},{"id":2,"name":"Grass","color":"78bf64"},{"id":3,"name":"Dirt","color":"966c4a"},{"id":4,"name":"Cobblestone","color":"8f8f8f"},{"id":5,"name":"Oak Plank","color":"b4905a","variants":[{"data":1,"name":"Spruce Plank","color":"805e36"},{"data":2,"name":"Birch Plank","color":"c8b77a"},{"data":3,"name":"Jungle Plank","color":"b1805c"}]},{"id":6,"name":"Oak Sapling","color":"1f6519","mask":3,"flags":1,"variants":[{"data":1,"name":"Spruce Sapling","color":"395a39"},{"data":2,"name":"Birch Sapling","color":"51742d"},{"data":3,"name":"Jungle Sapling","color":"2c6c18"}]},{"id":7,"name":"Bedrock","color":"333333"},{"id":8,"name":"Water","color":"1f55ff","alpha":0.53,"flags":5},{"id":9,"name":"Water","color":"1f55ff","alpha":0.53,"flags":5},{"id":10,"name":"Lava","color":"fc5700","flags":5},{"id":11,"name":"Lava","color":"fc5700","flags":5},{"id":12,"name":"Sand","color":"d6cf97"},{"id":13,"name":"Gravel","color":"817f7f"},{"id":14,"name":"Gold Ore","color":"fcee4b"},{"id":15,"name":"Iron Ore","color":"af8e77"},{"id":16,"name":"Coal Ore","color":"454545"},{"id":17,"name":"Oak Wood","color":"665130","mask":3,"variants":[{"data":1,"name":"Spruce Wood","color":"2e1d0a"},{"data":2,"name":"Birch Wood","color":"d6dad6"},{"data":3,"name":"Jungle Wood","color":"584219"}]},{"id":18,"name":"Oak Leaves","color":"3d9b3d","flags":3,"mask":3,"variants":[{"data":1,"name":"Spruce Leaves","color":"519b5a"},{"data":2,"name":"Birch Leaves","color":"6faa3b"},{"data":3,"name":"Jungle Leaves","color":"649642"}]},{"id":19,"name":"Sponge","color":"d3d34b"},{"id":20,"name":"Glass","color":"c0f5fe","alpha":0.5,"flags":3},{"id":21,"name":"Lapis Lazuli Ore","color":"1b43ad"},{"id":22,"name":"Lapis Lazuli Block","color":"0f26b8"},{"id":23,"name":"Dispenser","color":"848484"},{"id":24,"name":"Sandstone","color":"dfd7a5","variants":[{"data":1,"name":"Chiseled Sandstone","color":"ddd8ab"},{"data":2,"name":"Smooth Sandstone","color":"d9d29a"}]},{"id":25,"name":"Note Block","color":"915840"},{"id":26,"name":"Bed","color":"8c1616","flags":3},{"id":27,"name":"Powered Rail","color":"ab0301","flags":1},{"id":28,"name":"Detector Rail","color":"7d7171","flags":1},{"id":29,"name":"Sticky Piston","color":"7bc070","flags":3},{"id":30,"name":"Cobweb","color":"ededed","flags":1},{"id":31,"name":"Dead Shrub","color":"946428","flags":1,"variants":[{"data":1,"name":"Tall Grass","color":"83bf54"},{"data":2,"name":"Fern","color":"8fbb64"}]},{"id":32,"name":"Dead Bush","color":"946428","flags":1},{"id":33,"name":"Piston","color":"9f844d","flags":3},{"id":34,"name":"Piston Extension","color":"b4905a"},{"id":35,"name":"White Wool","color":"eaeaea","variants":[{"data":1,"name":"Orange Wool","color":"db7b3b"},{"data":2,"name":"Magenta Wool","color":"af44b8"},{"data":3,"name":"Light Blue Wool","color":"7e99d0"},{"data":4,"name":"Yellow Wool","color":"bcb02a"},{"data":5,"name":"Lime Wool","color":"44b93b"},{"data":6,"name":"Pink Wool","color":"d28a9e"},{"data":7,"name":"Gray Wool","color":"454545"},{"data":8,"name":"Light Gray Wool","color":"909898"},{"data":9,"name":"Cyan Wool","color":"30728e"},{"data":10,"name":"Purple Wool","color":"7737ad"},{"data":11,"name":"Blue Wool","color":"2b3585"},{"data":12,"name":"Brown Wool","color":"563822"},{"data":13,"name":"Green Wool","color":"314119"},{"data":14,"name":"Red Wool","color":"91312f"},{"data":15,"name":"Black Wool","color":"1d1b1b"}]},{"id":37,"name":"Dandelion","color":"f1f902","flags":1},{"id":38,"name":"Rose","color":"d10609","flags":1},{"id":39,"name":"Brown Mushroom","color":"916d55","flags":1},{"id":40,"name":"Red Mushroom","color":"e21212","flags":1},{"id":41,"name":"Gold Block","color":"fdfb4f"},{"id":42,"name":"Iron Block","color":"e6e6e6"},{"id":43,"name":"Double Stone Slab","color":"a3a3a3","variants":[{"data":1,"name":"Double Sandstone Slab","color":"d7ce95"},{"data":2,"name":"Double Wooden Slab","color":"b4905a"},{"data":3,"name":"Double Cobblestone Slab","color":"8f8f8f"},{"data":4,"name":"Double Brick Slab","color":"7c4536"},{"data":5,"name":"Double Stone Brick Slab","color":"797979"}]},{"id":44,"name":"Stone Slab","color":"a3a3a3","mask":7,"flags":3,"variants":[{"data":1,"name":"Sandstone Slab","color":"d7ce95"},{"data":2,"name":"Wooden Slab","color":"b4905a"},{"data":3,"name":"Cobblestone Slab","color":"8f8f8f"},{"data":4,"name":"Brick Slab","color":"7c4536"},{"data":5,"name":"Stone Brick Slab","color":"797979"}]},{"id":45,"name":"Bricks","color":"6a3b2e"},{"id":46,"name":"TNT","color":"a83414","flags":3},{"id":47,"name":"Bookshelf","color":"9f844d"},{"id":48,"name":"Moss Stone","color":"3a623a"},{"id":49,"name":"Obsidian","color":"0e0e16"},{"id":50,"name":"Torch","color":"ffd800","flags":1},{"id":51,"name":"Fire","color":"ff8f00","flags":1},{"id":52,"name":"Monster Spawner","color":"1b2a35","flags":3},{"id":53,"name":"Oak Wood Stairs","color":"9f844d","flags":3},{"id":54,"name":"Chest","color":"976b20","flags":3},{"id":55,"name":"Redstone Wire","color":"d60000","flags":1},{"id":56,"name":"Diamond Ore","color":"5decf5"},{"id":57,"name":"Diamond Block","color":"91e8e4"},{"id":58,"name":"Crafting Table","color":"a0693c"},{"id":59,"name":"Immature Wheat","color":"8ba803","flags":1,"variants":[{"data":7,"name":"Grown Wheat","color":"8e7c10"}]},{"id":60,"name":"Wet Farmland","color":"43240b","flags":3,"variants":[{"data":0,"name":"Dry Farmland","color":"633f24"}]},{"id":61,"name":"Furnace","color":"535353"},{"id":62,"name":"Burning Furnace","color":"535353"},{"id":63,"name":"Sign Post","color":"9f844d","flags":1},{"id":64,"name":"Wooden Door","color":"b0572a","flags":3},{"id":65,"name":"Ladder","color":"8e733c","flags":3},{"id":66,"name":"Rail","color":"a4a4a4","flags":1},{"id":67,"name":"Cobblestone Stairs","color":"565656","flags":3},{"id":68,"name":"Wall Sign","color":"b4905a","flags":1},{"id":69,"name":"Lever","color":"735e39","flags":1},{"id":70,"name":"Stone Pressure Plate","color":"8f8f8f","flags":1},{"id":71,"name":"Iron Door","color":"b6b6b6","flags":3},{"id":72,"name":"Wooden Pressure Plate","color":"bc9862","flags":1},{"id":73,"name":"Redstone Ore","color":"8f0303"},{"id":74,"name":"Redstone Ore","color":"8f0303"},{"id":75,"name":"Redstone Torch (off)","color":"480000","flags":1},{"id":76,"name":"Redstone Torch (on)","color":"fd0000","flags":1},{"id":77,"name":"Stone Button","color":"a8a8a8","flags":1},{"id":78,"name":"Snow","color":"eeffff","flags":1},{"id":79,"name":"Ice","color":"77a9ff","alpha":0.62,"flags":3},{"id":80,"name":"Snow Block","color":"eeffff"},{"id":81,"name":"Cactus","color":"107e1d","flags":1},{"id":82,"name":"Clay Block","color":"9da3ae"},{"id":83,"name":"Sugar Cane","color":"aadb74","flags":1},{"id":84,"name":"Jukebox","color":"945f44"},{"id":85,"name":"Fence","color":"735e39","flags":3},{"id":86,"name":"Pumpkin","color":"e3901d"},{"id":87,"name":"Netherrack","color":"955744"},{"id":88,"name":"Soul Sand","color":"554134"},{"id":89,"name":"Glowstone Block","color":"f9d49c","flags":3},{"id":90,"name":"Nether Portal","color":"d67fff","flags":1},{"id":91,"name":"Jack o' Lantern","color":"e9b416"},{"id":92,"name":"Cake Block","color":"eae9eb","flags":3},{"id":93,"name":"Redstone Repeater (off)","color":"2a0002","flags":3},{"id":94,"name":"Redstone Repeater (on)","color":"fd0101","flags":3},{"id":95,"name":"Locked Chest","color":"976b20","flags":3},{"id":96,"name":"Trapdoor","color":"8f6b35","flags":3},{"id":97,"name":"Monster Egg","color":"767676","variants":[{"data":1,"color":"919191"},{"data":2,"color":"7b7b7b"}]},{"id":98,"name":"Stone Brick","color":"797979","variants":[{"data":1,"name":"Mossy Stone Brick","color":"637049"},{"data":2,"name":"Cracked Stone Brick","color":"656565"},{"data":3,"name":"Chiseled Stone Brick","color":"9c9c9c"}]},{"id":99,"name":"Huge Brown Mushroom","color":"d2b17d","variants":[{"data":1,"color":"8f6b53"},{"data":2,"color":"8f6b53"},{"data":3,"color":"8f6b53"},{"data":4,"color":"8f6b53"},{"data":5,"color":"8f6b53"},{"data":6,"color":"8f6b53"},{"data":7,"color":"8f6b53"},{"data":8,"color":"8f6b53"},{"data":9,"color":"8f6b53"}]},{"id":100,"name":"Huge Red Mushroom","color":"d2b17d","variants":[{"data":1,"color":"b51d1b"},{"data":2,"color":"b51d1b"},{"data":3,"color":"b51d1b"},{"data":4,"color":"b51d1b"},{"data":5,"color":"b51d1b"},{"data":6,"color":"b51d1b"},{"data":7,"color":"b51d1b"},{"data":8,"color":"b51d1b"},{"data":9,"color":"b51d1b"}]},{"id":101,"name":"Iron Bars","color":"6d6e6e","flags":3},{"id":102,"name":"Glass Pane","color":"c0f5fe","alpha":0.5,"flags":3},{"id":103,"name":"Melon","color":"adb82c"},{"id":104,"name":"Pumpkin Stem","color":"6b6b0b","flags":1},{"id":105,"name":"Melon Stem","color":"6b6b0b","flags":1},{"id":106,"name":"Vines","color":"6cc44a","flags":1},{"id":107,"name":"Fence Gate","color":"9f844d","flags":3},{"id":108,"name":"Brick Stairs","color":"7c4536","flags":3},{"id":109,"name":"Stone Brick Stairs","color":"727272","flags":3},{"id":110,"name":"Mycelium","color":"806b6f"},{"id":111,"name":"Lily Pad","color":"88bf54"},{"id":112,"name":"Nether Brick","color":"30181c"},{"id":113,"name":"Nether Brick Fence","color":"1c0e10","flags":3},{"id":114,"name":"Nether Brick Stairs","color":"381a1f","flags":3},{"id":115,"name":"Immature Nether Wart","color":"70081c","flags":1,"variants":[{"data":3,"name":"Mature Nether Wart","color":"8e181b"}]},{"id":116,"name":"Enchantment Table","color":"3c3056","flags":1},{"id":117,"name":"Brewing Stand","color":"bea84a","flags":1},{"id":118,"name":"Cauldron","color":"4d4d4d"},{"id":119,"name":"End Portal","color":"0c0b0a","flags":1},{"id":120,"name":"End Portal Frame","color":"2f5754","mask":4,"variants":[{"data":4,"name":"End Portal Frame (on)","color":"406852"}]},{"id":121,"name":"End Stone","color":"d9dc9e"},{"id":122,"name":"Dragon Egg","color":"2d0133"},{"id":123,"name":"Redstone Lamp (off)","color":"b0744c"},{"id":124,"name":"Redstone Lamp (on)","color":"f1d1af"},{"id":125,"name":"Double Oak Slab","color":"b4905a","variants":[{"data":1,"name":"Double Spruce Slab","color":"664f2f"},{"data":2,"name":"Double Birch Slab","color":"d7cb8d"},{"data":3,"name":"Double Jungle Slab","color":"b1805c"}]},{"id":126,"name":"Oak Slab","color":"b4905a","mask":7,"flags":3,"variants":[{"data":1,"name":"Spruce Slab","color":"664f2f"},{"data":2,"name":"Birch Slab","color":"d7cb8d"},{"data":3,"name":"Jungle Slab","color":"b1805c"}]},{"id":127,"name":"Immature Cocoa Pod","color":"929943","mask":12,"variants":[{"data":8,"name":"Mature Cocoa Pod","color":"d4924c"}]},{"id":128,"name":"Sandstone Stairs","color":"e9e0b3","flags":3},{"id":129,"name":"Emerald Ore","color":"17dd62"},{"id":130,"name":"Ender Chest","color":"2d4042","flags":3},{"id":131,"name":"Tripwire Hook","color":"6e6e6e","flags":1},{"id":132,"name":"Tripwire","color":"ebebeb","flags":1},{"id":133,"name":"Emerald Block","color":"64ea8a"},{"id":134,"name":"Spruce Wood Stairs","color":"664f2f","flags":3},{"id":135,"name":"Birch Wood Stairs","color":"d7cb8d","flags":3},{"id":136,"name":"Jungle Wood Stairs","color":"b1805c","flags":3},{"id":137,"name":"Command Block","color":"cfa68b"},{"id":138,"name":"Beacon","color":"c4fffe"},{"id":139,"name":"Cobblestone Wall","color":"505050","flags":3},{"id":140,"name":"Flower Pot (empty)","color":"7c4536","flags":1,"variants":[{"data":1,"name":"Flower Pot (rose)","color":"910205"},{"data":2,"name":"Flower Pot (dandelion)","color":"f1f902"},{"data":3,"name":"Flower Pot (oak)","color":"408f2f"},{"data":4,"name":"Flower Pot (spruce)","color":"395a39"},{"data":5,"name":"Flower Pot (birch)","color":"cfe3ba"},{"data":6,"name":"Flower Pot (jungle)","color":"2c6c18"},{"data":7,"name":"Flower Pot (red mushroom)","color":"9a171c"},{"data":8,"name":"Flower Pot (brown mushroom)","color":"725643"},{"data":9,"name":"Flower Pot (cactus)","color":"128a20"},{"data":10,"name":"Flower Pot (dead bush)","color":"946428"},{"data":11,"name":"Flower Pot (fern)","color":"315e05"}]},{"id":141,"name":"Immature Carrots","color":"00c617","flags":1,"variants":[{"data":7,"name":"Mature Carrots","color":"004e00"}]},{"id":142,"name":"Immature Potatoes","color":"00c617","flags":1,"variants":[{"data":7,"name":"Mature Potatoes","color":"3aa649"}]},{"id":143,"name":"Wooden Button","color":"b4905a","flags":1},{"id":144,"name":"Head","color":"1a1a1a","flags":1},{"id":145,"name":"Anvil","color":"474747"}],"update":"http://seancode.com/minutor/packs/vanilla_ids.json"} \ No newline at end of file diff --git a/definitionupdater.cpp b/definitionupdater.cpp new file mode 100644 index 00000000..598250c8 --- /dev/null +++ b/definitionupdater.cpp @@ -0,0 +1,89 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "definitionupdater.h" +#include +#include +#include +#include + +DefinitionUpdater::DefinitionUpdater(QString filename, + QString url, + QDateTime timestamp) : filename(filename), url(url), timestamp(timestamp) +{ + save=NULL; +} + +void DefinitionUpdater::update() +{ + reply=qnam.head(QNetworkRequest(url)); + connect(reply,SIGNAL(finished()), + this,SLOT(checkTime())); +} + +void DefinitionUpdater::checkTime() +{ + QVariant redir=reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + if (!redir.isNull()) + { + reply->deleteLater(); + url=redir.toUrl(); + update(); + return; + } + QVariant lmod=reply->header(QNetworkRequest::LastModifiedHeader); + if (lmod.isValid() && lmod.toDateTime()>timestamp) + { + timestamp=lmod.toDateTime(); + qDebug()<<"timestamp:"<deleteLater(); + reply=qnam.get(QNetworkRequest(url)); + save=new QFile(filename); + save->open(QIODevice::WriteOnly); + connect(reply,SIGNAL(finished()), + this,SLOT(didUpdate())); + connect(reply,SIGNAL(readyRead()), + this,SLOT(saveFile())); + return; + } + reply->deleteLater(); + // no need to update + emit updated(this,filename,timestamp); +} +void DefinitionUpdater::didUpdate() +{ + save->flush(); + save->close(); + delete save; + save=NULL; + emit updated(this,filename,timestamp); +} +void DefinitionUpdater::saveFile() +{ + if (save) + save->write(reply->readAll()); +} diff --git a/definitionupdater.h b/definitionupdater.h new file mode 100644 index 00000000..10f1970d --- /dev/null +++ b/definitionupdater.h @@ -0,0 +1,59 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __DEFINITIONUPDATER_H__ +#define __DEFINITIONUPDATER_H__ + +#include +#include +#include +#include + +class QFile; +class QNetworkReply; + +class DefinitionUpdater : public QObject +{ + Q_OBJECT +public: + DefinitionUpdater(QString filename,QString url,QDateTime timestamp); + void update(); +signals: + void updated(DefinitionUpdater *,QString filename,QDateTime timestamp); +private slots: + void checkTime(); + void didUpdate(); + void saveFile(); +private: + QString filename; + QUrl url; + QDateTime timestamp; + QNetworkAccessManager qnam; + QNetworkReply *reply; + QFile *save; +}; + +#endif diff --git a/dimensions.cpp b/dimensions.cpp new file mode 100644 index 00000000..fec45206 --- /dev/null +++ b/dimensions.cpp @@ -0,0 +1,207 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "dimensions.h" +#include +#include +#include "json.h" + +class DimensionDef +{ +public: + DimensionDef() {} + QString name; + QString path; + int scale; + bool regex; + bool enabled; +}; + +Dimensions::Dimensions() +{ + group=NULL; +} +Dimensions::~Dimensions() +{ +} + +void Dimensions::enableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=true; +} +void Dimensions::disableDefinitions(int pack) +{ + if (pack<0) return; + int len=packs[pack].length(); + for (int i=0;ienabled=false; +} + +int Dimensions::addDefinitions(JSONArray *defs,int pack) +{ + if (pack==-1) + { + pack=packs.length(); + packs.append(QList()); + } + + int len=defs->length(); + for (int i=0;i(defs->at(i)); + DimensionDef *dim=new DimensionDef(); + dim->enabled=true; + if (d->has("name")) + dim->name=d->at("name")->asString(); + else + dim->name="Unknown"; + if (d->has("path")) + dim->path=d->at("path")->asString(); + else + dim->path="."; + if (d->has("scale")) + dim->scale=d->at("scale")->asNumber(); + else + dim->scale=1; + if (d->has("regex")) + dim->regex=d->at("regex")->asBool(); + else + dim->regex=false; + definitions.append(dim); + packs[pack].append(dim); + } + return pack; +} + +void Dimensions::removeDimensions(QMenu *menu) +{ + for (int i=0;iremoveAction(items[i]); + delete items[i]; + } + items.clear(); + dimensions.clear(); + foundDimensions.clear(); + menu->setEnabled(false); + if (group!=NULL) + { + delete group; + group=NULL; + } +} +void Dimensions::getDimensions(QDir path,QMenu *menu,QObject *parent) +{ + //first get the currently selected dimension so it doesn't change + QString current; + for (int i=0;iisChecked()) + current=dimensions[i].path; + removeDimensions(menu); + group=new QActionGroup(parent); + + for (int i=0;ienabled) + { + //check path for regex + if (definitions[i]->regex) + { + QDirIterator it(path.absolutePath(),QDir::Dirs); + QRegExp rx(definitions[i]->path); + while (it.hasNext()) + { + it.next(); + if (rx.indexIn(it.fileName())!=-1) + { + QString name=definitions[i]->name; + for (int c=0;cscale,parent); + } + } + } + else + addDimension(path,definitions[i]->path,definitions[i]->name,definitions[i]->scale,parent); + } + } + menu->addActions(items); + if (items.count()>0) + { + bool changed=true; + //locate our old selected item + for (int i=0;idata().toInt()].path==current) + { + items[i]->setChecked(true); + changed=false; + break; + } + if (changed) + { + items.first()->setChecked(true); + emit dimensionChanged(dimensions[items.first()->data().toInt()]); + } + menu->setEnabled(true); + } +} + +void Dimensions::addDimension(QDir path,QString dir,QString name,int scale,QObject *parent) +{ + if (!path.exists(dir)) + return; + + if (foundDimensions.contains(dir)) + return; + + path.cd(dir); + if (path.exists("region")) //is it a used dimension? + { + QAction *d=new QAction(parent); + d->setText(name); + d->setData(dimensions.count()); + dimensions.append(Dimension(path.absolutePath(),scale)); + d->setCheckable(true); + parent->connect(d, SIGNAL(triggered()), + this, SLOT(viewDimension())); + group->addAction(d); + items.append(d); + foundDimensions.insert(dir,true); + } + path.cdUp(); +} + +void Dimensions::viewDimension() +{ + QAction *action=qobject_cast(sender()); + if (action) + emit dimensionChanged(dimensions[action->data().toInt()]); +} diff --git a/dimensions.h b/dimensions.h new file mode 100644 index 00000000..b2efbe9b --- /dev/null +++ b/dimensions.h @@ -0,0 +1,78 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __DIMENSIONS_H__ +#define __DIMENSIONS_H__ + +#include +#include +#include +#include + +class QMenu; +class QAction; +class QActionGroup; +class JSONArray; + +class Dimension +{ +public: + Dimension(QString path,int scale):path(path),scale(scale) {} + QString path; + int scale; +}; + +class DimensionDef; + +class Dimensions : public QObject +{ + Q_OBJECT +public: + Dimensions(); + ~Dimensions(); + int addDefinitions(JSONArray *,int pack=-1); + void enableDefinitions(int); + void disableDefinitions(int); + void getDimensions(QDir path,QMenu *menu,QObject *parent); + void removeDimensions(QMenu *menu); +signals: + void dimensionChanged(Dimension &dim); +private slots: + void viewDimension(); +private: + void addDimension(QDir path,QString dir,QString name,int scale,QObject *parent); + QList items; + QList dimensions; + QList definitions; + QList > packs; + QActionGroup *group; + + QHash foundDimensions; +}; + +#endif diff --git a/json.cpp b/json.cpp new file mode 100644 index 00000000..17038caa --- /dev/null +++ b/json.cpp @@ -0,0 +1,380 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "json.h" +#include + +enum Token { + TokenNULL, + TokenTRUE, + TokenFALSE, + TokenString, + TokenNumber, + TokenObject, + TokenArray, + TokenObjectClose, + TokenArrayClose, + TokenKeySeparator, + TokenValueSeparator +}; + +class JSONHelper +{ +public: + JSONHelper(QString data) : data(data) {pos=0;len=data.length();} + ~JSONHelper() {} + Token nextToken() + { + while (pos='0' && c<='9') + num|=c-'0'; + else if (c>='a' && c<='f') + num|=c-'a'+10; + else if (c>='A' && c<='F') + num|=c-'A'+10; + else throw JSONParseException("Invalid hex code",location()); + } + r+=QChar(num); + } + break; + default: throw JSONParseException("Unknown escape sequence",location()); + } + } + else + r+=data.at(pos++); + } + pos++; + return r; + } + double readDouble() + { + double sign=1.0; + if (data.at(pos)=='-') + { + sign=-1.0; + pos++; + } + else if (data.at(pos)=='+') + pos++; + double value=0.0; + while (pos308) expon=308; + while (expon>=50) {scale *= 1E50; expon-=50; } + while (expon>=8) {scale *=1E8; expon-=8; } + while (expon>0) {scale*=10.0; expon-=1;} + } + return sign*(frac?(value/scale):(value*scale)); + } + QString location() + { + int line=1; + int col=0; + int cpos=pos; + bool doneCol=false; + while (cpos>=0) + { + if (data.at(cpos)=='\n') + { + doneCol=true; + line++; + } + if (!doneCol) col++; + cpos--; + } + return QString("Line: %1, Offset: %2").arg(line).arg(col); + } +private: + int pos,len; + QString data; +}; + +JSONData *JSON::parse(const QString data) +{ + JSONHelper reader(data); + Token type=reader.nextToken(); + switch (type) + { + case TokenObject: //hash + return new JSONObject(reader); + case TokenArray: //array + return new JSONArray(reader); + default: + throw JSONParseException("Doesn't start with object or array",reader.location()); + break; + } + return NULL; +} +static JSONData Null; +JSONData::JSONData() +{ +} +JSONData::~JSONData() +{ +} +bool JSONData::has(const QString) +{ + return false; +} +JSONData *JSONData::at(const QString) +{ + return &Null; +} +JSONData *JSONData::at(int) +{ + return &Null; +} +int JSONData::length() +{ + return 0; +} +QString JSONData::asString() +{ + return ""; +} +double JSONData::asNumber() +{ + return 0.0; +} +bool JSONData::asBool() +{ + return false; +} + +JSONBool::JSONBool(bool val) +{ + data=val; +} +bool JSONBool::asBool() +{ + return data; +} + +JSONString::JSONString(QString val) +{ + data=val; +} +QString JSONString::asString() +{ + return data; +} + +JSONNumber::JSONNumber(double val) +{ + data=val; +} +double JSONNumber::asNumber() +{ + return data; +} + +JSONObject::JSONObject(JSONHelper &reader) +{ + while (true) + { + Token type=reader.nextToken(); + if (type==TokenObjectClose) + break; + if (type!=TokenString) + throw JSONParseException("Expected quoted string",reader.location()); + QString key=reader.readString(); + if (key.length()==0) throw JSONParseException("Empty object key",reader.location()); + if (reader.nextToken()!=TokenKeySeparator) throw JSONParseException("Expected ':'",reader.location()); + JSONData *value; + switch (reader.nextToken()) + { + case TokenNULL: value=NULL; break; + case TokenTRUE: value=new JSONBool(true); break; + case TokenFALSE: value=new JSONBool(false); break; + case TokenString: value=new JSONString(reader.readString()); break; + case TokenNumber: value=new JSONNumber(reader.readDouble()); break; + case TokenObject: value=new JSONObject(reader); break; + case TokenArray: value=new JSONArray(reader); break; + default: throw JSONParseException("Expected value",reader.location()); + } + children[key]=value; + type=reader.nextToken(); //comma or end + if (type==TokenObjectClose) + break; + if (type!=TokenValueSeparator) + throw JSONParseException("Expected ',' or '}'",reader.location()); + } +} +JSONObject::~JSONObject() +{ + QHash::const_iterator i; + for (i=children.constBegin();i!=children.constEnd();i++) + delete i.value(); +} +bool JSONObject::has(QString key) +{ + return children.contains(key); +} +JSONData *JSONObject::at(QString key) +{ + if (children.contains(key)) + return children[key]; + return &Null; +} + +JSONArray::JSONArray(JSONHelper &reader) +{ + while (true) + { + Token type=reader.nextToken(); + if (type==TokenArrayClose) + break; + JSONData *value; + switch (type) + { + case TokenNULL: value=NULL; break; + case TokenTRUE: value=new JSONBool(true); break; + case TokenFALSE: value=new JSONBool(false); break; + case TokenString: value=new JSONString(reader.readString()); break; + case TokenNumber: value=new JSONNumber(reader.readDouble()); break; + case TokenObject: value=new JSONObject(reader); break; + case TokenArray: value=new JSONArray(reader); break; + default: throw JSONParseException("Expected Value",reader.location()); + } + data.append(value); + type=reader.nextToken(); //comma or end + if (type==TokenArrayClose) + break; + if (type!=TokenValueSeparator) + throw JSONParseException("Expected ',' or ']'",reader.location()); + } +} +JSONArray::~JSONArray() +{ + QList::const_iterator i; + for (i=data.constBegin();i!=data.constEnd();i++) + delete *i; +} +int JSONArray::length() +{ + return data.length(); +} +JSONData *JSONArray::at(int index) +{ + if (index +#include + +class JSONHelper; + +class JSONData +{ +public: + JSONData(); + virtual ~JSONData(); + virtual bool has(const QString key); + virtual JSONData *at(const QString key); + virtual JSONData *at(int index); + virtual int length(); + virtual QString asString(); + virtual double asNumber(); + virtual bool asBool(); +}; + +class JSONBool : public JSONData +{ +public: + JSONBool(bool val); + bool asBool(); +private: + bool data; +}; + +class JSONString : public JSONData +{ +public: + JSONString(QString val); + QString asString(); +private: + QString data; +}; + +class JSONNumber : public JSONData +{ +public: + JSONNumber(double val); + double asNumber(); +private: + double data; +}; + +class JSONObject : public JSONData +{ +public: + JSONObject(JSONHelper &); + ~JSONObject(); + bool has(const QString key); + JSONData *at(const QString key); +private: + QHashchildren; +}; +class JSONArray : public JSONData +{ +public: + JSONArray(JSONHelper &); + ~JSONArray(); + JSONData *at(int index); + int length(); +private: + QListdata; +}; + +class JSONParseException +{ +public: + JSONParseException(QString reason,QString at) : reason(QString("%1 at %2").arg(reason).arg(at)) {} + QString reason; +}; + +class JSON +{ +public: + static JSONData *parse(const QString data); +}; + +#endif diff --git a/labelledslider.cpp b/labelledslider.cpp new file mode 100644 index 00000000..1cb7f430 --- /dev/null +++ b/labelledslider.cpp @@ -0,0 +1,68 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "labelledslider.h" +#include +#include +#include + +LabelledSlider::LabelledSlider(QWidget *parent) : QWidget(parent) +{ + slider = new QSlider(Qt::Horizontal); + slider->setRange(0,255); + + label = new QLabel(); + label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + label->setFixedWidth(label->fontMetrics().width("888")); + label->setNum(255); + + connect(slider, SIGNAL(valueChanged(int)), + this, SLOT(invValueChanged(int))); + + QHBoxLayout *myLayout = new QHBoxLayout; + myLayout->addWidget(slider); + myLayout->addWidget(label); + setLayout(myLayout); + setFocusProxy(slider); +} + +int LabelledSlider::value() const +{ + return 255-slider->value(); +} + +void LabelledSlider::setValue(int v) +{ + slider->setValue(255-v); +} + +void LabelledSlider::invValueChanged(int v) +{ + label->setNum(255-v); + emit valueChanged(255-v); +} diff --git a/OSX/Map.h b/labelledslider.h similarity index 63% rename from OSX/Map.h rename to labelledslider.h index 7fc72935..20b3a272 100644 --- a/OSX/Map.h +++ b/labelledslider.h @@ -1,17 +1,17 @@ /* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -25,25 +25,34 @@ THE POSSIBILITY OF SUCH DAMAGE. */ -#import - - -@interface Map : NSView { - int curDepth; - double curX,curZ,curScale; - NSString *world; - unsigned char *bits; - int curWidth,curHeight; - int moving; - id status; - int opts; -} --(void)setX:(double)x andZ:(double)z; --(void)setDepth:(int)depth; --(void)setWorld:(NSString *)newWorld; --(void)setStatus:(id)status; --(void)setOptions:(int)options; --(void)setColorScheme:(unsigned int *)colors; --(void)setProgress:(id)progress; - -@end + +#ifndef __LABELLEDSLIDER_H__ +#define __LABELLEDSLIDER_H__ + +#include + +class QSlider; +class QLabel; + +class LabelledSlider : public QWidget +{ + Q_OBJECT +public: + explicit LabelledSlider(QWidget *parent = 0); + int value() const; + +signals: + void valueChanged(int); + +public slots: + void setValue(int); + +private slots: + void invValueChanged(int); + +private: + QSlider *slider; + QLabel *label; +}; + +#endif diff --git a/OSX/ColorScheme.h b/main.cpp similarity index 56% rename from OSX/ColorScheme.h rename to main.cpp index f79c6c2a..4b9d1c93 100644 --- a/OSX/ColorScheme.h +++ b/main.cpp @@ -1,17 +1,17 @@ /* - Copyright (c) 2010, Sean Kasun - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -25,28 +25,27 @@ THE POSSIBILITY OF SUCH DAMAGE. */ -#import +#include +#include +#include +#include "minutor.h" -@interface ColorSchemes : NSObject { - NSMutableArray *schemes; - IBOutlet id menu; - IBOutlet id schemeList; - IBOutlet id schemesWin; - IBOutlet id schemeWin; - id standard; - int selected; -} --(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tc row:(NSInteger)row; --(void)tableView:(NSTableView *)tv setObjectValue:obj forTableColumn:(NSTableColumn *)tc row:(NSInteger)row; --(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView; +int main(int argc,char *argv[]) +{ + QApplication app(argc,argv); + + QString locale = QLocale::system().name(); --(void)readDefaults; --(void)select:sender; --(unsigned int *)current; + QTranslator translator; + translator.load(QString("minutor_")+locale); + app.installTranslator(&translator); --(IBAction)editColorSchemes:sender; --(IBAction)addOrRemove:sender; --(IBAction)edit:sender; + app.setApplicationName("Minutor"); + app.setApplicationVersion("2.0 beta"); + app.setOrganizationName("seancode"); -@end + Minutor minutor; + minutor.show(); + return app.exec(); +} diff --git a/mapview.cpp b/mapview.cpp new file mode 100644 index 00000000..cc42e799 --- /dev/null +++ b/mapview.cpp @@ -0,0 +1,384 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "mapview.h" +#include "definitionmanager.h" +#include "blockidentifier.h" +#include "biomeidentifier.h" +#include +#include + +MapView::MapView(QWidget *parent) : QWidget(parent) +{ + depth=255; + scale=1; + zoom=1.0; + connect(&cache, SIGNAL(chunkLoaded(int,int)), + this, SLOT(chunkUpdated(int,int))); + setMouseTracking(true); + + int offset=0; + for (int y=0;y<16;y++) + for (int x=0;x<16;x++) + { + uchar color=((x&8)^(y&8))==0?0x44:0x88; + placeholder[offset++]=color; + placeholder[offset++]=color; + placeholder[offset++]=color; + placeholder[offset++]=0xff; + } +} + +QSize MapView::minimumSizeHint() const +{ + return QSize(300,300); +} +QSize MapView::sizeHint() const +{ + return QSize(400,400); +} + +void MapView::attach(DefinitionManager *dm) +{ + this->dm=dm; + connect(dm,SIGNAL(packsChanged()), + this,SLOT(redraw())); + this->blocks=dm->blockIdentifier(); + this->biomes=dm->biomeIdentifier(); +} + +void MapView::setLocation(double x, double z) +{ + this->x=x/scale; + this->z=z/scale; + + redraw(); +} + +void MapView::setDimension(QString path, int scale) +{ + if (scale>0) + { + this->x*=this->scale; + this->z*=this->scale; //undo current scale transform + this->scale=scale; + this->x/=scale; //and do the new scale transform + this->z/=scale; + } + else + { + this->scale=1; //no scaling because no relation to overworld + this->x=0; //and we jump to the center spawn automatically + this->z=0; + } + cache.clear(); + cache.setPath(path); + redraw(); +} + +void MapView::setDepth(int depth) +{ + this->depth=depth; + redraw(); +} + +void MapView::chunkUpdated(int x, int z) +{ + drawChunk(x,z); + update(); +} + +static int lastX=-1,lastY=-1; +static bool dragging=false; +void MapView::mousePressEvent(QMouseEvent *event) +{ + lastX=event->x(); + lastY=event->y(); + dragging=true; +} +void MapView::mouseMoveEvent(QMouseEvent *event) +{ + if (!dragging) + { + int centerblockx=floor(this->x); + int centerblockz=floor(this->z); + + int centerx=image.width()/2; + int centery=image.height()/2; + + centerx-=(this->x-centerblockx)*zoom; + centery-=(this->z-centerblockz)*zoom; + + int mx=floor(centerblockx-(centerx-event->x())/zoom); + int mz=floor(centerblockz-(centery-event->y())/zoom); + + getToolTip(mx,mz); + return; + } + x+=(lastX-event->x())/zoom; + z+=(lastY-event->y())/zoom; + lastX=event->x(); + lastY=event->y(); + redraw(); +} +void MapView::mouseReleaseEvent(QMouseEvent *) +{ + dragging=false; +} +void MapView::wheelEvent(QWheelEvent *event) +{ + zoom+=floor(event->delta()/90.0); + if (zoom<1.0) zoom=1.0; + if (zoom>20.0) zoom=20.0; + redraw(); +} + +void MapView::resizeEvent(QResizeEvent *event) +{ + image=QImage(event->size(),QImage::Format_RGB32); + redraw(); +} +void MapView::paintEvent(QPaintEvent *) +{ + QPainter p(this); + p.drawImage(QPoint(0,0),image); + p.end(); +} + +void MapView::redraw() +{ + if (!this->isEnabled()) + return; + + double chunksize=16*zoom; + + //first find the center block position + int centerchunkx=floor(x/16); + int centerchunkz=floor(z/16); + // and the center of the screen + int centerx=image.width()/2; + int centery=image.height()/2; + // and align for panning + centerx-=(x-centerchunkx*16)*zoom; + centery-=(z-centerchunkz*16)*zoom; + // now calculate the topleft block on the screen + int startx=centerchunkx-floor(centerx/chunksize)-1; + int startz=centerchunkz-floor(centery/chunksize)-1; + // and the dimensions of the screen in blocks + int blockswide=image.width()/chunksize+3; + int blockstall=image.height()/chunksize+3; + + for (int z=startz;zisEnabled()) + return; + + uchar *src=placeholder; + //fetch the chunk + Chunk *chunk=cache.fetch(x,z); + + if (chunk && chunk->renderedAt!=depth) + renderChunk(chunk); + + //this figures out where on the screen this chunk should be drawn + + + // first find the center chunk + int centerchunkx=floor(this->x/16); + int centerchunkz=floor(this->z/16); + // and the center chunk screen coordinates + int centerx=image.width()/2; + int centery=image.height()/2; + // which need to be shifted to account for panning inside that chunk + centerx-=(this->x-centerchunkx*16)*zoom; + centery-=(this->z-centerchunkz*16)*zoom; + // centerx,y now points to the top left corner of the center chunk + // so now calculate our x,y in relation + double chunksize=16*zoom; + centerx+=(x-centerchunkx)*chunksize; + centery+=(z-centerchunkz)*chunksize; + + int srcoffset=0; + uchar *bits=image.bits(); + int imgstride=image.bytesPerLine(); + + int skipx=0,skipy=0; + int blockwidth=chunksize,blockheight=chunksize; + // now if we're off the screen we need to crop + if (centerx<0) + { + skipx=-centerx; + centerx=0; + } + if (centery<0) + { + skipy=-centery; + centery=0; + } + // or the other side, we need to trim + if (centerx+blockwidth>image.width()) + blockwidth=image.width()-centerx; + if (centery+blockheight>image.height()) + blockheight=image.height()-centery; + if (blockwidth<=0 || skipx>=blockwidth) return; + int imgoffset=centerx*4+centery*imgstride; + if (chunk) + src=chunk->image; + //blit (or scale blit) + for (int z=skipy;zimage; + for (int z=0;z<16;z++) //n->s + { + int lasty=-1; + for (int x=0;x<16;x++,offset++) //e->w + { + uchar r=0,g=0,b=0; + double alpha=0.0; + int top=depth; + if (top>chunk->highest) + top=chunk->highest; + int highest=0; + for (int y=top;y>=0;y--) + { + int sec=y>>4; + ChunkSection *section=chunk->sections[sec]; + if (!section) + { + y=(sec<<4)-1; //skip whole section + continue; + } + int yoffset=(y&0xf)<<8; + int data=section->data[(offset+yoffset)/2]; + if (x&1) data>>=4; + BlockInfo &block=blocks->getBlock(section->blocks[offset+yoffset],data&0xf); + if (block.alpha==0.0) continue; + int light=12; + if (alpha==0.0) + { + if (lasty!=-1 && lastyy) + light-=5; + } + quint32 color=block.colors[light]; + if (alpha==0.0) + { + alpha=block.alpha; + r=color>>16; + g=(color>>8)&0xff; + b=color&0xff; + highest=y; + } + else + { + r+=(quint8)((1.0-alpha)*(color>>16)); + g+=(quint8)((1.0-alpha)*((color>>8)&0xff)); + b+=(quint8)((1.0-alpha)*(color&0xff)); + alpha+=block.alpha*(1.0-alpha); + } + if (block.alpha==1.0 || alpha>0.9) + break; + } + lasty=highest; + *bits++=b; + *bits++=g; + *bits++=r; + *bits++=0xff; + } + } + chunk->renderedAt=depth; +} + +void MapView::getToolTip(int x, int z) +{ + int cx=floor(x/16.0); + int cz=floor(z/16.0); + Chunk *chunk=cache.fetch(cx,cz); + int offset=(x&0xf)+(z&0xf)*16; + int id,bd; + + QString name="Unknown"; + QString biome="Unknown Biome"; + + if (chunk) + { + int top=depth; + if (top>chunk->highest) + top=chunk->highest; + for (int y=top;y>=0;y--) + { + int sec=y>>4; + ChunkSection *section=chunk->sections[sec]; + if (!section) + { + y=(sec<<4)-1; //skip entire section + continue; + } + int yoffset=(y&0xf)<<8; + int data=section->data[(offset+yoffset)/2]; + if (x&1) data>>=4; + BlockInfo &block=blocks->getBlock(section->blocks[offset+yoffset],data&0xf); + if (block.alpha==0.0) continue; + //found block + name=block.name; + id=section->blocks[offset+yoffset]; + bd=data&0xf; + break; + } + BiomeInfo &bi=biomes->getBiome(chunk->biomes[(x&0xf)+(z&0xf)*16]); + biome=bi.name; + } + emit hoverTextChanged(tr("X:%1 Z:%2 - %3 - %4 (%5:%6)") + .arg(x) + .arg(z) + .arg(biome) + .arg(name) + .arg(id) + .arg(bd)); +} diff --git a/mapview.h b/mapview.h new file mode 100644 index 00000000..72f1bbd1 --- /dev/null +++ b/mapview.h @@ -0,0 +1,86 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __MAPVIEW_H__ +#define __MAPVIEW_H__ + +#include +#include "chunkcache.h" +class DefinitionManager; +class BiomeIdentifier; +class BlockIdentifier; + +class MapView : public QWidget +{ + Q_OBJECT +public: + MapView(QWidget *parent=0); + + QSize minimumSizeHint() const; + QSize sizeHint() const; + + void attach(DefinitionManager *); + + void setLocation(double x,double z); + void setDimension(QString path,int scale); + +public slots: + void setDepth(int depth); + void chunkUpdated(int x,int z); + void redraw(); + +signals: + void hoverTextChanged(QString text); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *); + void wheelEvent(QWheelEvent *event); + void resizeEvent(QResizeEvent *); + void paintEvent(QPaintEvent *); + +private: + + void drawChunk(int x,int z); + void renderChunk(Chunk *chunk); + void getToolTip(int x,int z); + + int depth; + double x,z; + int scale; + double zoom; + ChunkCache cache; + QImage image; + DefinitionManager *dm; + BlockIdentifier *blocks; + BiomeIdentifier *biomes; + uchar placeholder[16*16*4]; // no chunk found placeholder +}; + +#endif diff --git a/mapviewer.c b/mapviewer.c deleted file mode 100644 index a59db8e0..00000000 --- a/mapviewer.c +++ /dev/null @@ -1,596 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include "MinutorMap/MinutorMap.h" -#include "minutor.xpm" -#include "colorschemes.h" - -#define MINZOOM 1.0 -#define MAXZOOM 10.0 - -static GtkWidget *win; -static GtkWidget *slider,*da,*status,*progressbar; -static GtkWidget *jumpplayer,*jumpspawn; -static GtkWidget *lighting, *cavemode, *hideobscured, *depthshading, *mob, *hell, *ender; -static GtkWidget *standard; -static double curX,curZ; -static int curDepth=255; -static double curScale=1.0; -static char *world=NULL; -static unsigned char *bits; -static int curWidth,curHeight; -static int spawnX,spawnY,spawnZ; -static int playerX,playerY,playerZ; -static long long randomSeed; -static gboolean mouseUp(GtkWidget *widget,GdkEventButton *event); - -static void destroy() -{ - gtk_main_quit(); -} - -static void updateProgress(float progress) -{ - if (progress>1.0) progress=1.0; - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progressbar),progress); -} - - -static gboolean drawMap(GtkWidget *widget) -{ - // don't do anything if we haven't loaded a world - if (world==NULL) return FALSE; - // don't draw anything for a disabled widget - if (!gtk_widget_get_sensitive(widget)) return FALSE; - int w=da->allocation.width; - int h=da->allocation.height; - if (w!=curWidth || h!=curHeight) - { - curWidth=w; - curHeight=h; - bits=g_realloc(bits,curWidth*curHeight*4); - } - int opts=0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(cavemode))?CAVEMODE:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(hideobscured))?HIDEOBSCURED:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(depthshading))?DEPTHSHADING:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(lighting))?LIGHTING:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(mob))?MOB:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(hell))?HELL:0; - opts|=gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(ender))?ENDER:0; - - DrawMap(world,curX,curZ,curDepth,curWidth,curHeight,curScale,bits,opts,updateProgress); - - gdk_draw_rgb_32_image( - da->window, - da->style->white_gc, - 0,0,curWidth,curHeight, - GDK_RGB_DITHER_NONE, - bits, - curWidth*4); - updateProgress(0.0); - return TRUE; -} - -static gchar *getSliderText(GtkScale *scale,gdouble value) -{ - return g_strdup_printf("%d",255-(int)value); -} -static void adjustMap(GtkRange *range,gpointer user_data) -{ - curDepth=255-(int)gtk_range_get_value(range); - gdk_window_invalidate_rect(GTK_WIDGET(user_data)->window,NULL,FALSE); -} -static gboolean tracking=FALSE; -static double oldX,oldY; -static gboolean mouseDown(GtkWidget *widget,GdkEventButton *event) -{ - gtk_widget_grab_focus(widget); - oldX=event->x; - oldY=event->y; - tracking=TRUE; - return TRUE; -} -static gboolean mouseUp(GtkWidget *widget,GdkEventButton *event) -{ - tracking=FALSE; - return TRUE; -} -static gboolean mouseMove(GtkWidget *widget,GdkEventMotion *event) -{ - if (tracking) - { - curX+=(oldX-event->x)/curScale; - curZ+=(oldY-event->y)/curScale; - oldX=event->x; - oldY=event->y; - gdk_window_invalidate_rect(widget->window,NULL,FALSE); - } - int mx,mz; - const char *biome; - const char *blockLabel=IDBlock(event->x,event->y,curX,curZ, - curWidth,curHeight,curScale,&mx,&mz,&biome); - char *buf=g_strdup_printf("X:%d Z:%d %s - %s",mx,mz,biome,blockLabel); - gtk_statusbar_pop(GTK_STATUSBAR(status),1); - gtk_statusbar_push(GTK_STATUSBAR(status),1,buf); - g_free(buf); - return TRUE; -} -static gboolean mouseWheel(GtkWidget *widget,GdkEventScroll *event) -{ - if (event->direction==GDK_SCROLL_DOWN) - { - curScale-=0.2; - if (curScalewindow,NULL,FALSE); - } - if (event->direction==GDK_SCROLL_UP) - { - curScale+=0.2; - if (curScale>MAXZOOM) curScale=MAXZOOM; - gdk_window_invalidate_rect(widget->window,NULL,FALSE); - } - return TRUE; -} -static int moving=0; -static gboolean keyDown(GtkWidget *widget,GdkEventKey *event) -{ - gboolean changed=FALSE; - switch (event->keyval) - { - case GDK_Up: - case GDK_w: - moving|=1; - break; - case GDK_Down: - case GDK_s: - moving|=2; - break; - case GDK_Left: - case GDK_a: - moving|=4; - break; - case GDK_Right: - case GDK_d: - moving|=8; - break; - case GDK_Page_Up: - case GDK_e: - curScale+=0.5; - if (curScale>MAXZOOM) - curScale=MAXZOOM; - changed=TRUE; - break; - case GDK_Page_Down: - case GDK_q: - curScale-=0.5; - if (curScalewindow,NULL,FALSE); - return TRUE; - } - return FALSE; -} -static gboolean keyUp(GtkWidget *widget,GdkEventKey *event) -{ - switch (event->keyval) - { - case GDK_Up: - case GDK_w: - moving&=~1; - break; - case GDK_Down: - case GDK_s: - moving&=~2; - break; - case GDK_Left: - case GDK_a: - moving&=~4; - break; - case GDK_Right: - case GDK_d: - moving&=~8; - break; - } - return FALSE; -} - -static void loadMap(const gchar *path) -{ - //clear cache - if (world!=NULL) - g_free(world); - CloseAll(); - world=g_strdup(path); - GFile *file=g_file_new_for_path(path); - char *title=g_file_get_basename(file); - char *titlestr=g_strdup_printf("Minutor - %s",title); - gtk_window_set_title(GTK_WINDOW(win),titlestr); - g_free(titlestr); - g_free(title); - g_object_unref(file); - - GetSpawn(path,&spawnX,&spawnY,&spawnZ); - GetPlayer(path,&playerX,&playerY,&playerZ); - curX=spawnX; - curZ=spawnZ; - GetRandomSeed(path, &randomSeed); - - gtk_widget_set_sensitive(jumpspawn,TRUE); - gtk_widget_set_sensitive(jumpplayer,TRUE); - gtk_widget_set_sensitive(slider,TRUE); - gtk_widget_set_sensitive(da,TRUE); - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} - -static void reloadWorld(void* data) -{ - CloseAll(); -} - -static gchar *getSavePath() -{ - return g_strdup_printf("%s/.minecraft/saves/",g_get_home_dir()); -} - -static void openWorld(GtkMenuItem *menuItem,gpointer user_data) -{ - loadMap(user_data); -} - -static void openCustom(GtkMenuItem *menuItem,gpointer user_data) -{ - GtkWidget *chooser=gtk_file_chooser_dialog_new("Open World", - GTK_WINDOW(win),GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN,GTK_RESPONSE_ACCEPT, - NULL); - GtkFileFilter *filter=gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter,"level.dat"); - gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(chooser),filter); - if (gtk_dialog_run(GTK_DIALOG(chooser))==GTK_RESPONSE_ACCEPT) - { - GFile *file=gtk_file_chooser_get_file(GTK_FILE_CHOOSER(chooser)); - GFile *parent=g_file_get_parent(file); - if (parent!=NULL) - { - loadMap(g_file_get_path(parent)); - g_object_unref(parent); - } - else - loadMap("/"); - g_object_unref(file); - } - gtk_widget_destroy(chooser); -} - -static void jumpToSpawn(GtkMenuItem *menuItem,gpointer user_data) -{ - curX=spawnX; - curZ=spawnZ; - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(hell))) - { - curX/=8.0; - curZ/=8.0; - } - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} - -static void jumpToPlayer(GtkMenuItem *menuItem,gpointer user_data) -{ - curX=playerX; - curZ=playerZ; - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(hell))) - { - curX/=8.0; - curZ/=8.0; - } - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} - -static void toggleHell(GtkMenuItem *menuItem,gpointer user_data) -{ - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(hell))) - { - curX/=8.0; - curZ/=8.0; - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ender),FALSE); - } - else - { - curX*=8.0; - curZ*=8.0; - } - CloseAll(); - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} - -static void toggleEnd(GtkMenuItem *menuItem,gpointer user_data) -{ - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(ender))) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(hell),FALSE); - CloseAll(); - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} -void selectColorScheme(GtkMenuItem *menuItem,gpointer user_data) -{ - int id=GPOINTER_TO_INT(user_data); - uint32_t *colors=getColorScheme(id); - SetMapPalette(colors,256); - gdk_window_invalidate_rect(da->window,NULL,FALSE); -} - -void createMapViewer() -{ - //map window - win=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(win),"Minutor"); - gtk_window_set_icon(GTK_WINDOW(win),gdk_pixbuf_new_from_xpm_data(icon)); - g_signal_connect(G_OBJECT(win),"destroy", - G_CALLBACK(destroy),NULL); - - //main vbox - GtkWidget *vbox=gtk_vbox_new(FALSE,0); - gtk_container_add(GTK_CONTAINER(win),vbox); - - //menu bar - GtkWidget *menubar=gtk_menu_bar_new(); - gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE,FALSE,0); - GtkAccelGroup *menuGroup=gtk_accel_group_new(); - //file menu - GtkWidget *filemenu=gtk_menu_item_new_with_mnemonic("_File"); - gtk_menu_shell_append(GTK_MENU_SHELL(menubar),filemenu); - GtkWidget *fileitems=gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(filemenu),fileitems); - - GtkWidget *openworld=gtk_menu_item_new_with_label("Open World"); - gtk_menu_shell_append(GTK_MENU_SHELL(fileitems),openworld); - GtkWidget *openitems=gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(openworld),openitems); - - gchar *save_dir = getSavePath(); - DIR* save_dirp = opendir(save_dir); - - int n = 0; - if (save_dirp) - { - gchar *level_dat; - struct dirent *world_dir; - while ((world_dir = readdir(save_dirp)) != NULL) { - level_dat = g_strdup_printf("%s%s/level.dat", save_dir, world_dir->d_name); - if (g_file_test(level_dat, G_FILE_TEST_IS_REGULAR)) { - GtkWidget *w=gtk_menu_item_new_with_label(world_dir->d_name); - if (n < 9) { - gtk_widget_add_accelerator(w,"activate",menuGroup, - GDK_1+n,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE); - n++; - } - gtk_menu_shell_append(GTK_MENU_SHELL(openitems),w); - g_signal_connect(G_OBJECT(w),"activate", - G_CALLBACK(openWorld),g_strdup_printf("%s%s", save_dir, world_dir->d_name)); - } - g_free(level_dat); - } - - closedir(save_dirp); - } - - g_free(save_dir); - - GtkWidget *open=gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN,menuGroup); - gtk_menu_shell_append(GTK_MENU_SHELL(fileitems),open); - g_signal_connect(G_OBJECT(open),"activate", - G_CALLBACK(openCustom),NULL); - - GtkWidget *reload=gtk_image_menu_item_new_with_mnemonic("_Reload"); - gtk_widget_add_accelerator(reload,"activate",menuGroup, - GDK_R,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(fileitems),reload); - g_signal_connect(G_OBJECT(reload),"activate", - G_CALLBACK(reloadWorld),NULL); - - GtkWidget *sep=gtk_separator_menu_item_new(); - gtk_menu_shell_append(GTK_MENU_SHELL(fileitems),sep); - - GtkWidget *quit=gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT,menuGroup); - gtk_menu_shell_append(GTK_MENU_SHELL(fileitems),quit); - g_signal_connect(G_OBJECT(quit),"activate", - G_CALLBACK(destroy),NULL); - - GtkWidget *viewmenu=gtk_menu_item_new_with_mnemonic("_View"); - gtk_menu_shell_append(GTK_MENU_SHELL(menubar),viewmenu); - GtkWidget *viewitems=gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(viewmenu),viewitems); - - jumpspawn=gtk_menu_item_new_with_label("Jump to Spawn"); - gtk_widget_add_accelerator(jumpspawn,"activate",menuGroup, - GDK_F2,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),jumpspawn); - g_signal_connect(G_OBJECT(jumpspawn),"activate", - G_CALLBACK(jumpToSpawn),NULL); - gtk_widget_set_sensitive(jumpspawn,FALSE); - - jumpplayer=gtk_menu_item_new_with_label("Jump to Player"); - gtk_widget_add_accelerator(jumpplayer,"activate",menuGroup, - GDK_F3,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),jumpplayer); - g_signal_connect(G_OBJECT(jumpplayer),"activate", - G_CALLBACK(jumpToPlayer),NULL); - gtk_widget_set_sensitive(jumpplayer,FALSE); - - GtkWidget *sep2=gtk_separator_menu_item_new(); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),sep2); - - hell=gtk_check_menu_item_new_with_label("Nether"); - gtk_widget_add_accelerator(hell,"activate",menuGroup, - GDK_F5,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),hell); - g_signal_connect(G_OBJECT(hell),"activate", - G_CALLBACK(toggleHell),NULL); - - ender=gtk_check_menu_item_new_with_label("End"); - gtk_widget_add_accelerator(ender,"activate",menuGroup, - GDK_F6,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),ender); - g_signal_connect(G_OBJECT(ender),"activate", - G_CALLBACK(toggleEnd),NULL); - GtkWidget *sep3=gtk_separator_menu_item_new(); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),sep3); - - - GtkWidget *colormenu=gtk_menu_item_new_with_mnemonic("_Colors"); - gtk_menu_shell_append(GTK_MENU_SHELL(menubar),colormenu); - GtkWidget *coloritems=gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(colormenu),coloritems); - - standard=gtk_radio_menu_item_new_with_label(NULL,"Standard"); - GSList *group=gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(standard)); - gtk_menu_shell_append(GTK_MENU_SHELL(coloritems),standard); - g_signal_connect(G_OBJECT(standard),"activate", - G_CALLBACK(selectColorScheme),GINT_TO_POINTER(-1)); - GtkWidget *sep4=gtk_separator_menu_item_new(); - gtk_menu_shell_append(GTK_MENU_SHELL(coloritems),sep4); - - GtkWidget *colorschemes=gtk_menu_item_new_with_label("Color Schemes..."); - gtk_menu_shell_append(GTK_MENU_SHELL(coloritems),colorschemes); - g_signal_connect(G_OBJECT(colorschemes),"activate", - G_CALLBACK(editColorSchemes),NULL); - - gtk_window_add_accel_group(GTK_WINDOW(win),menuGroup); - - //control hbox - GtkWidget *hbox=gtk_hbox_new(FALSE,5); - gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,TRUE,0); - - //slider - slider=gtk_hscale_new_with_range(0.0,255.0,1.0); - gtk_widget_set_sensitive(slider,FALSE); - gtk_box_pack_start(GTK_BOX(hbox),slider,TRUE,TRUE,0); - g_signal_connect(G_OBJECT(slider),"format-value", - G_CALLBACK(getSliderText),NULL); - - //map - da=gtk_drawing_area_new(); - gtk_widget_set_sensitive(da,FALSE); - curWidth=496; - curHeight=400; - gtk_drawing_area_size(GTK_DRAWING_AREA(da),curWidth,curHeight); - gtk_box_pack_start(GTK_BOX(vbox),da,TRUE,TRUE,0); - gtk_widget_add_events(da,GDK_SCROLL_MASK|GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|GDK_POINTER_MOTION_MASK|GDK_KEY_PRESS_MASK); - g_signal_connect(G_OBJECT(da),"expose-event", - G_CALLBACK(drawMap),NULL); - g_signal_connect(G_OBJECT(da),"button-press-event", - G_CALLBACK(mouseDown),NULL); - g_signal_connect(G_OBJECT(da),"button-release-event", - G_CALLBACK(mouseUp),NULL); - g_signal_connect(G_OBJECT(da),"motion-notify-event", - G_CALLBACK(mouseMove),NULL); - g_signal_connect(G_OBJECT(da),"scroll-event", - G_CALLBACK(mouseWheel),NULL); - g_signal_connect(G_OBJECT(da),"key-press-event", - G_CALLBACK(keyDown),NULL); - g_signal_connect(G_OBJECT(da),"key-release-event", - G_CALLBACK(keyUp),NULL); - gtk_widget_set_can_focus(da,TRUE); - gtk_widget_grab_focus(da); - - g_signal_connect(G_OBJECT(slider),"value-changed", - G_CALLBACK(adjustMap),G_OBJECT(da)); - - //view menu > rendering options - lighting=gtk_check_menu_item_new_with_mnemonic("_Lighting"); - gtk_widget_add_accelerator(lighting,"activate",menuGroup, - GDK_1,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),lighting); - g_signal_connect(G_OBJECT(lighting),"toggled", - G_CALLBACK(drawMap),NULL); - - - cavemode=gtk_check_menu_item_new_with_mnemonic("_Cave Mode"); - gtk_widget_add_accelerator(cavemode,"activate",menuGroup, - GDK_2,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),cavemode); - g_signal_connect(G_OBJECT(cavemode),"toggled", - G_CALLBACK(drawMap),NULL); - - hideobscured=gtk_check_menu_item_new_with_mnemonic("Hide _Obscured"); - gtk_widget_add_accelerator(hideobscured,"activate",menuGroup, - GDK_3,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),hideobscured); - g_signal_connect(G_OBJECT(hideobscured),"toggled", - G_CALLBACK(drawMap),NULL); - - depthshading=gtk_check_menu_item_new_with_mnemonic("_Depth Shading"); - gtk_widget_add_accelerator(depthshading,"activate",menuGroup, - GDK_4,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),depthshading); - g_signal_connect(G_OBJECT(depthshading),"toggled", - G_CALLBACK(drawMap),NULL); - - mob=gtk_check_menu_item_new_with_mnemonic("Show _Mob Spawn"); - gtk_widget_add_accelerator(mob,"activate",menuGroup, - GDK_5,0,GTK_ACCEL_VISIBLE); - gtk_menu_shell_append(GTK_MENU_SHELL(viewitems),mob); - g_signal_connect(G_OBJECT(mob),"toggled", - G_CALLBACK(drawMap),NULL); - - //statusbar - status=gtk_statusbar_new(); - gtk_box_pack_end(GTK_BOX(vbox),status,FALSE,TRUE,0); - //progressbar - progressbar=gtk_progress_bar_new(); - gtk_box_pack_start(GTK_BOX(status),progressbar,FALSE,TRUE,0); - - - bits=g_malloc(curWidth*curHeight*4); - - // 2 = position to start inserting color schemes - initColorSchemes(GTK_MENU_SHELL(coloritems),1,group); - - //and show it - gtk_widget_show_all(win); -} diff --git a/mapviewer.h b/mapviewer.h deleted file mode 100644 index 5c8cf71b..00000000 --- a/mapviewer.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __MAPVIEWER_H__ -#define __MAPVIEWER_H__ - -void createMapViewer(); - -#endif diff --git a/minutor.c b/minutor.c deleted file mode 100644 index e87bf83f..00000000 --- a/minutor.c +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright (c) 2010, Sean Kasun -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -*/ -#include -#include -#include -#include "mapviewer.h" - -int main(int argc,char *argv[]) -{ - gtk_init(&argc,&argv); - - //main window - createMapViewer(); - gtk_main(); - return 0; -} diff --git a/minutor.cpp b/minutor.cpp new file mode 100644 index 00000000..8cf50cfb --- /dev/null +++ b/minutor.cpp @@ -0,0 +1,398 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "minutor.h" +#include "mapview.h" +#include "labelledslider.h" +#include "nbt.h" +#include "json.h" +#include "definitionmanager.h" +#include "settings.h" +#include "dimensions.h" + +Minutor::Minutor() +{ + mapview = new MapView; + connect(mapview,SIGNAL(hoverTextChanged(QString)), + statusBar(),SLOT(showMessage(QString))); + dm=new DefinitionManager(this); + mapview->attach(dm); + connect(dm,SIGNAL(packsChanged()), + this,SLOT(updateDimensions())); + dimensions=dm->dimensions(); + connect(dimensions,SIGNAL(dimensionChanged(Dimension &)), + this,SLOT(viewDimension(Dimension &))); + settings = new Settings(this); + connect(settings,SIGNAL(settingsUpdated()), + this,SLOT(rescanWorlds())); + + if (settings->update) + dm->autoUpdate(); + + createActions(); + createMenus(); + createStatusBar(); + + depth = new LabelledSlider; + depth->setValue(255); + + connect(depth, SIGNAL(valueChanged(int)), + mapview, SLOT(setDepth(int))); + connect(this, SIGNAL(worldLoaded(bool)), + mapview, SLOT(setEnabled(bool))); + connect(this, SIGNAL(worldLoaded(bool)), + depth, SLOT(setEnabled(bool))); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(depth); + mainLayout->addWidget(mapview,1); + mainLayout->setSpacing(0); + mainLayout->setContentsMargins(0,0,0,0); + + QWidget *central=new QWidget; + central->setLayout(mainLayout); + + setCentralWidget(central); + layout()->setContentsMargins(0,0,0,0); + + setWindowTitle(qApp->applicationName()); + + emit worldLoaded(false); +} + +void Minutor::openWorld() +{ + QAction *action=qobject_cast(sender()); + if (action) + loadWorld(action->data().toString()); +} + +void Minutor::open() +{ + QString dirName = QFileDialog::getExistingDirectory(this,tr("Open World")); + if (!dirName.isEmpty()) + { + QDir path(dirName); + if (!path.exists("level.dat")) + { + QMessageBox::warning(this, + tr("Couldn't open world"), + tr("%1 is not a valid Minecraft world").arg(dirName), + QMessageBox::Cancel); + return; + } + loadWorld(dirName); + } +} + +void Minutor::reload() +{ +} + +void Minutor::closeWorld() +{ + locations.clear(); + for (int i=0;iremoveAction(players[i]); + delete players[i]; + } + players.clear(); + jumpMenu->setEnabled(false); + dimensions->removeDimensions(dimMenu); + currentWorld=QString(); + emit worldLoaded(false); +} + +void Minutor::jumpToLocation() +{ + QAction *action=qobject_cast(sender()); + if (action) + { + Location loc=locations[action->data().toInt()]; + mapview->setLocation(loc.x,loc.z); + } +} + +void Minutor::toggleLighting() +{ +} +void Minutor::toggleCaveMode() +{ +} + +void Minutor::viewDimension(Dimension &dim) +{ + mapview->setDimension(dim.path,dim.scale); +} + +void Minutor::about() +{ + QMessageBox::about(this,tr("About %1").arg(qApp->applicationName()), + tr("%1 v%2
\n" + "© Copyright %3, %4").arg(qApp->applicationName()) + .arg(qApp->applicationVersion()) + .arg(2013) + .arg(qApp->organizationName())); +} + +void Minutor::updateDimensions() +{ + dimensions->getDimensions(currentWorld,dimMenu,this); +} + +void Minutor::createActions() +{ + getWorldList(); + + openAct=new QAction(tr("&Open..."),this); + openAct->setShortcut(tr("Ctrl+O")); + openAct->setStatusTip(tr("Open a world")); + connect(openAct, SIGNAL(triggered()), + this, SLOT(open())); + + reloadAct=new QAction(tr("&Reload"),this); + reloadAct->setShortcut(tr("F5")); + reloadAct->setStatusTip(tr("Reload current world")); + connect(reloadAct, SIGNAL(triggered()), + this, SLOT(reload())); + connect(this, SIGNAL(worldLoaded(bool)), + reloadAct, SLOT(setEnabled(bool))); + + exitAct=new QAction(tr("E&xit"),this); + exitAct->setShortcut(tr("Ctrl+Q")); + exitAct->setStatusTip(tr("Exit %1").arg(qApp->applicationName())); + connect(exitAct, SIGNAL(triggered()), + this, SLOT(close())); + + jumpSpawnAct=new QAction(tr("Jump to &Spawn"),this); + jumpSpawnAct->setShortcut(tr("F1")); + jumpSpawnAct->setStatusTip(tr("Jump to world spawn")); + connect(jumpSpawnAct, SIGNAL(triggered()), + this, SLOT(jumpToLocation())); + connect(this, SIGNAL(worldLoaded(bool)), + jumpSpawnAct, SLOT(setEnabled(bool))); + + + lightingAct=new QAction(tr("&Lighting"),this); + lightingAct->setCheckable(true); + lightingAct->setShortcut(tr("Ctrl+L")); + lightingAct->setStatusTip(tr("Toggle lighting on/off")); + connect(lightingAct, SIGNAL(triggered()), + this, SLOT(toggleLighting())); + + caveModeAct=new QAction(tr("&Cave Mode"),this); + caveModeAct->setCheckable(true); + caveModeAct->setShortcut(tr("Ctrl+I")); + caveModeAct->setStatusTip(tr("Toggle cave mode on/off")); + connect(caveModeAct, SIGNAL(triggered()), + this, SLOT(toggleCaveMode())); + + + manageDefsAct=new QAction(tr("Manage &Definitions..."),this); + manageDefsAct->setStatusTip(tr("Manage block and biome definitions")); + connect(manageDefsAct, SIGNAL(triggered()), + dm, SLOT(show())); + + aboutAct=new QAction(tr("&About"),this); + aboutAct->setStatusTip(tr("About %1").arg(qApp->applicationName())); + connect(aboutAct, SIGNAL(triggered()), + this, SLOT(about())); + + settingsAct=new QAction(tr("Settings..."),this); + settingsAct->setStatusTip(tr("Change %1 Settings").arg(qApp->applicationName())); + connect(settingsAct, SIGNAL(triggered()), + settings, SLOT(show())); + + updatesAct=new QAction(tr("Check for updates..."),this); + updatesAct->setStatusTip(tr("Check for updated packs")); + connect(updatesAct, SIGNAL(triggered()), + dm, SLOT(checkForUpdates())); +} + +void Minutor::createMenus() +{ + fileMenu=menuBar()->addMenu(tr("&File")); + worldMenu=fileMenu->addMenu(tr("&Open World")); + + worldMenu->addActions(worlds); + if (worlds.size()==0) //no worlds found + worldMenu->setEnabled(false); + + fileMenu->addAction(openAct); + fileMenu->addAction(reloadAct); + fileMenu->addSeparator(); + fileMenu->addAction(exitAct); + + viewMenu=menuBar()->addMenu(tr("&View")); + viewMenu->addAction(jumpSpawnAct); + jumpMenu=viewMenu->addMenu(tr("&Jump to Player")); + jumpMenu->setEnabled(false); + dimMenu=viewMenu->addMenu(tr("&Dimension")); + dimMenu->setEnabled(false); + viewMenu->addSeparator(); + viewMenu->addAction(lightingAct); + viewMenu->addAction(caveModeAct); + viewMenu->addSeparator(); + viewMenu->addAction(manageDefsAct); + + menuBar()->addSeparator(); + + helpMenu=menuBar()->addMenu(tr("&Help")); + helpMenu->addAction(aboutAct); + helpMenu->addSeparator(); + helpMenu->addAction(settingsAct); + helpMenu->addAction(updatesAct); +} + +void Minutor::createStatusBar() +{ + statusBar()->showMessage(tr("Ready")); +} + +QString Minutor::getWorldName(QDir path) +{ + if (!path.exists("level.dat")) //no level.dat? no world + return QString(); + + NBT level(path.filePath("level.dat")); + return level.at("Data")->at("LevelName")->toString(); +} + + +void Minutor::getWorldList() +{ + QDir mc(settings->mcpath); + if (!mc.cd("saves")) + return; + + QDirIterator it(mc); + int key=1; + while (it.hasNext()) + { + it.next(); + if (it.fileInfo().isDir()) + { + QString name=getWorldName(it.filePath()); + if (!name.isNull()) + { + QAction *w=new QAction(this); + w->setText(name); + w->setData(it.filePath()); + if (key<10) + { + w->setShortcut("Ctrl+"+QString::number(key)); + key++; + } + connect(w, SIGNAL(triggered()), + this, SLOT(openWorld())); + worlds.append(w); + } + } + } +} + +void Minutor::loadWorld(QDir path) +{ + closeWorld(); //just in case + currentWorld=path; + + NBT level(path.filePath("level.dat")); + + Tag *data=level.at("Data"); + //add level name to window title + setWindowTitle(qApp->applicationName()+" - "+data->at("LevelName")->toString()); + //save world spawn + jumpSpawnAct->setData(locations.count()); + locations.append(Location(data->at("SpawnX")->toDouble(), + data->at("SpawnZ")->toDouble())); + //show saved players + if (path.exists("players")) + { + path.cd("players"); + QDirIterator it(path); + bool hasPlayers=false; + while (it.hasNext()) + { + it.next(); + if (it.fileInfo().isFile()) + { + hasPlayers=true; + NBT player(it.filePath()); + Tag *pos=player.at("Pos"); + QAction *p=new QAction(this); + p->setText(it.fileInfo().completeBaseName()); + p->setData(locations.count()); + locations.append(Location(pos->at(0)->toDouble(), + pos->at(2)->toDouble())); + connect(p, SIGNAL(triggered()), + this, SLOT(jumpToLocation())); + players.append(p); + if (player.has("SpawnX")) //player has a bed + { + p=new QAction(this); + p->setText(it.fileInfo().completeBaseName()+"'s Bed"); + p->setData(locations.count()); + locations.append(Location(player.at("SpawnX")->toDouble(), + player.at("SpawnZ")->toDouble())); + connect(p, SIGNAL(triggered()), + this, SLOT(jumpToLocation())); + players.append(p); + } + } + } + jumpMenu->addActions(players); + jumpMenu->setEnabled(hasPlayers); + path.cdUp(); + } + + //show dimensions + dimensions->getDimensions(path,dimMenu,this); + emit worldLoaded(true); + mapview->setLocation(locations.first().x,locations.first().z); + +} + +void Minutor::rescanWorlds() +{ + worlds.clear(); + getWorldList(); + worldMenu->clear(); + worldMenu->addActions(worlds); + worldMenu->setEnabled(worlds.count()!=0); + //we don't care about the auto-update toggle, since that only happens + //on startup anyway. +} diff --git a/minutor.h b/minutor.h new file mode 100644 index 00000000..3c1dfaa4 --- /dev/null +++ b/minutor.h @@ -0,0 +1,114 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __MINUTOR_H__ +#define __MINUTOR_H__ + +#include +#include + +class QAction; +class QActionGroup; +class QMenu; +class MapView; +class LabelledSlider; +class DefinitionManager; +class Settings; +class BiomeIdentifier; +class BlockIdentifier; +class Dimensions; +class Dimension; + +class Location +{ +public: + Location(double x,double z):x(x),z(z) {} + double x,z; +}; + +class Minutor : public QMainWindow +{ + Q_OBJECT +public: + Minutor(); + +private slots: + void openWorld(); + void open(); + void closeWorld(); + void reload(); + + void jumpToLocation(); + void viewDimension(Dimension &dim); + void toggleLighting(); + void toggleCaveMode(); + + void about(); + + void updateDimensions(); + void rescanWorlds(); + +signals: + void worldLoaded(bool isLoaded); + +private: + void createActions(); + void createMenus(); + void createStatusBar(); + + QString getWorldName(QDir path); + void getWorldList(); + + void loadWorld(QDir path); + + MapView *mapview; + LabelledSlider *depth; + + QMenu *fileMenu, *worldMenu; + QMenu *viewMenu, *jumpMenu, *dimMenu; + QMenu *helpMenu; + + QListworlds; + QAction *openAct, *reloadAct, *exitAct; + QAction *jumpSpawnAct; + QListplayers; + QAction *lightingAct, *caveModeAct; + QAction *manageDefsAct; + QAction *aboutAct; + QAction *settingsAct; + QAction *updatesAct; + + //loaded world data + QList locations; + DefinitionManager *dm; + Settings *settings; + Dimensions *dimensions; + QDir currentWorld; +}; + +#endif diff --git a/minutor.pro b/minutor.pro new file mode 100644 index 00000000..61490f0a --- /dev/null +++ b/minutor.pro @@ -0,0 +1,36 @@ +TEMPLATE = app +TARGET = minutor +DEPENDPATH += . +INCLUDEPATH += . +QT += widgets network +unix:LIBS += -lz +win32:LIBS+= $$PWD/zlibstat.lib + +# Input +HEADERS += mapview.h minutor.h nbt.h zlib.h zconf.h \ + labelledslider.h \ + chunk.h \ + chunkcache.h \ + json.h \ + blockidentifier.h \ + biomeidentifier.h \ + dimensions.h \ + definitionmanager.h \ + zipreader.h \ + settings.h \ + chunkloader.h \ + definitionupdater.h +SOURCES += mapview.cpp main.cpp minutor.cpp nbt.cpp \ + labelledslider.cpp \ + chunk.cpp \ + chunkcache.cpp \ + json.cpp \ + blockidentifier.cpp \ + biomeidentifier.cpp \ + dimensions.cpp \ + definitionmanager.cpp \ + zipreader.cpp \ + settings.cpp \ + chunkloader.cpp \ + definitionupdater.cpp +RESOURCES = minutor.qrc diff --git a/minutor.qrc b/minutor.qrc new file mode 100644 index 00000000..71f0a888 --- /dev/null +++ b/minutor.qrc @@ -0,0 +1,7 @@ + + + definitions/vanilla_biomes.json + definitions/vanilla_ids.json + definitions/vanilla_dims.json + + diff --git a/nbt.cpp b/nbt.cpp new file mode 100644 index 00000000..e3c08310 --- /dev/null +++ b/nbt.cpp @@ -0,0 +1,416 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include +#include +#include + +#include "nbt.h" +#include + +// this handles decoding the gzipped level.dat +NBT::NBT(const QString level) +{ + root=&NBT::Null; //just in case we die + + QFile f(level); + f.open(QIODevice::ReadOnly); + QByteArray data=f.readAll(); + f.close(); + + QByteArray nbt; + z_stream strm; + static const int CHUNK_SIZE = 8192; + char out[CHUNK_SIZE]; + strm.zalloc=Z_NULL; + strm.zfree=Z_NULL; + strm.opaque=Z_NULL; + strm.avail_in=data.size(); + strm.next_in=(Bytef*)data.data(); + + inflateInit2(&strm,15+32); + do { + strm.avail_out=CHUNK_SIZE; + strm.next_out=(Bytef*)out; + inflate(&strm,Z_NO_FLUSH); + nbt.append(out,CHUNK_SIZE-strm.avail_out); + } while (strm.avail_out==0); + inflateEnd(&strm); + + TagDataStream s(nbt.constData(),nbt.size()); + + if (s.r8()==10) //compound + { + s.skip(s.r16()); //skip name + root=new Tag_Compound(s); + } +} + + +//this handles decoding a compressed() section of a region file +NBT::NBT(const uchar *chunk) +{ + root=&NBT::Null; //just in case + + // find chunk size + int length=(chunk[0]<<24)|(chunk[1]<<16)|(chunk[2]<<8)|chunk[3]; + if (chunk[4]!=2) //rfc1950 + return; + + z_stream strm; + static const int CHUNK_SIZE = 8192; + char out[CHUNK_SIZE]; + strm.zalloc=Z_NULL; + strm.zfree=Z_NULL; + strm.opaque=Z_NULL; + strm.avail_in=length-1; + strm.next_in=(Bytef*)chunk+5; + + QByteArray nbt; + + inflateInit(&strm); + do { + strm.avail_out=CHUNK_SIZE; + strm.next_out=(Bytef*)out; + inflate(&strm,Z_NO_FLUSH); + nbt.append(out,CHUNK_SIZE-strm.avail_out); + } while (strm.avail_out==0); + inflateEnd(&strm); + + TagDataStream s(nbt.constData(),nbt.size()); + + if (s.r8()==10) //compound + { + s.skip(s.r16()); //skip name + root=new Tag_Compound(s); + } +} + +Tag NBT::Null; + +bool NBT::has(const QString key) +{ + return root->has(key); +} + +Tag *NBT::at(const QString key) +{ + return root->at(key); +} + +NBT::~NBT() +{ + if (root!=&NBT::Null) + delete root; +} + +/********** TAGS ****************/ + +Tag::Tag() +{ +} +Tag::~Tag() +{ +} +int Tag::length() +{ + qWarning()<<"Unhandled length"; + return 0; +} +bool Tag::has(const QString) +{ + return false; +} +Tag *Tag::at(const QString) +{ + return &NBT::Null; +} +Tag *Tag::at(int) +{ + return &NBT::Null; +} +QString Tag::toString() +{ + qWarning()<<"Unhandled toString"; + return ""; +} +qint32 Tag::toInt() +{ + qWarning()<<"Unhandled toInt"; + return 0; +} +double Tag::toDouble() +{ + qWarning()<<"Unhandled toDouble"; + return 0.0; +} +const quint8 *Tag::toByteArray() +{ + qWarning()<<"Unhandled toByteArray"; + return NULL; +} +const qint32 *Tag::toIntArray() +{ + qWarning()<<"Unhandled toIntArray"; + return NULL; +} + +Tag_Byte::Tag_Byte(TagDataStream &s) +{ + data=s.r8(); +} +int Tag_Byte::toInt() +{ + return data; +} + +Tag_Short::Tag_Short(TagDataStream &s) +{ + data=s.r16(); +} + +Tag_Int::Tag_Int(TagDataStream &s) +{ + data=s.r32(); +} +qint32 Tag_Int::toInt() +{ + return data; +} +double Tag_Int::toDouble() +{ + return (double)data; +} + +Tag_Long::Tag_Long(TagDataStream &s) +{ + data=s.r64(); +} + +Tag_Float::Tag_Float(TagDataStream &s) +{ + union {qint32 d; float f;} fl; + fl.d=s.r32(); + data=fl.f; +} + +Tag_Double::Tag_Double(TagDataStream &s) +{ + union {qint64 d; double f;} fl; + fl.d=s.r64(); + data=fl.f; +} +double Tag_Double::toDouble() +{ + return data; +} + +Tag_Byte_Array::Tag_Byte_Array(TagDataStream &s) +{ + len=s.r32(); + data=s.r(len); +} +Tag_Byte_Array::~Tag_Byte_Array() +{ + delete[] data; +} +int Tag_Byte_Array::length() +{ + return len; +} +const quint8 *Tag_Byte_Array::toByteArray() +{ + return data; +} + +Tag_String::Tag_String(TagDataStream &s) +{ + int len=s.r16(); + data=s.utf8(len); +} +QString Tag_String::toString() +{ + return data; +} + + template +static void setListData(QList &data,int len,TagDataStream &s) +{ + for (int i=0;i(data,len,s); break; + case 2: setListData(data,len,s); break; + case 3: setListData(data,len,s); break; + case 4: setListData(data,len,s); break; + case 5: setListData(data,len,s); break; + case 6: setListData(data,len,s); break; + case 7: setListData(data,len,s); break; + case 8: setListData(data,len,s); break; + case 9: setListData(data,len,s); break; + case 10: setListData(data,len,s); break; + case 11: setListData(data,len,s); break; + default: + throw "Unknown type"; + } +} + +Tag_List::~Tag_List() +{ + QList::const_iterator i; + for (i=data.constBegin();i!=data.constEnd();i++) + delete *i; +} +int Tag_List::length() +{ + return data.count(); +} +Tag *Tag_List::at(int index) +{ + return data[index]; +} + +Tag_Compound::Tag_Compound(TagDataStream &s) +{ + quint8 type; + while ((type=s.r8())!=0) //until tag_end + { + quint16 len=s.r16(); + QString key=s.utf8(len); + Tag *child; + switch (type) + { + case 1: child=new Tag_Byte(s); break; + case 2: child=new Tag_Short(s); break; + case 3: child=new Tag_Int(s); break; + case 4: child=new Tag_Long(s); break; + case 5: child=new Tag_Float(s); break; + case 6: child=new Tag_Double(s); break; + case 7: child=new Tag_Byte_Array(s); break; + case 8: child=new Tag_String(s); break; + case 9: child=new Tag_List(s); break; + case 10: child=new Tag_Compound(s); break; + case 11: child=new Tag_Int_Array(s); break; + default: throw "Unknown tag"; + } + children[key]=child; + } +} +Tag_Compound::~Tag_Compound() +{ + QHash::const_iterator i; + for (i=children.constBegin();i!=children.constEnd();i++) + delete i.value(); +} +bool Tag_Compound::has(const QString key) +{ + return children.contains(key); +} +Tag *Tag_Compound::at(const QString key) +{ + if (!children.contains(key)) + return &NBT::Null; + return children[key]; +} + +Tag_Int_Array::Tag_Int_Array(TagDataStream &s) +{ + len=s.r32(); + data=new qint32[len]; + for (int i=0;idata=(const quint8 *)data; + this->len=len; + pos=0; +} + +quint8 TagDataStream::r8() +{ + return data[pos++]; +} +quint16 TagDataStream::r16() +{ + quint16 r=data[pos++]<<8; + r|=data[pos++]; + return r; +} +quint32 TagDataStream::r32() +{ + quint32 r=data[pos++]<<24; + r|=data[pos++]<<16; + r|=data[pos++]<<8; + r|=data[pos++]; + return r; +} +quint64 TagDataStream::r64() +{ + quint64 r=(quint64)r32()<<32; + r|=r32(); + return r; +} +quint8 *TagDataStream::r(int len) //you need to free anything read with this +{ + quint8 *r=new quint8[len]; + memcpy(r,data+pos,len); + pos+=len; + return r; +} +QString TagDataStream::utf8(int len) +{ + int old=pos; + pos+=len; + return QString::fromUtf8((const char *)data+old,len); +} +void TagDataStream::skip(int len) +{ + pos+=len; +} diff --git a/nbt.h b/nbt.h new file mode 100644 index 00000000..dbb98400 --- /dev/null +++ b/nbt.h @@ -0,0 +1,188 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __NBT_H__ +#define __NBT_H__ + +class QString; +class QByteArray; + +class TagDataStream +{ +public: + TagDataStream(const char *data,int len); + quint8 r8(); + quint16 r16(); + quint32 r32(); + quint64 r64(); + quint8 *r(int len); + QString utf8(int len); + void skip(int len); +private: + const quint8 *data; + int pos,len; +}; + +class Tag +{ +public: + Tag(); + virtual ~Tag(); + virtual bool has(const QString key); + virtual int length(); + virtual Tag *at(const QString key); + virtual Tag *at(int index); + virtual QString toString(); + virtual qint32 toInt(); + virtual double toDouble(); + virtual const quint8 *toByteArray(); + virtual const qint32 *toIntArray(); +}; + +class NBT +{ +public: + NBT(const QString level); + NBT(const uchar *chunk); + ~NBT(); + + bool has(const QString key); + Tag *at(const QString key); + + static Tag Null; +private: + Tag *root; +}; + +class Tag_Byte : public Tag +{ +public: + Tag_Byte(TagDataStream &s); + int toInt(); +private: + quint8 data; +}; + +class Tag_Short : public Tag +{ +public: + Tag_Short(TagDataStream &s); +private: + qint16 data; +}; + +class Tag_Int : public Tag +{ +public: + Tag_Int(TagDataStream &s); + qint32 toInt(); + double toDouble(); +private: + qint32 data; +}; + +class Tag_Long : public Tag +{ +public: + Tag_Long(TagDataStream &s); +private: + qint64 data; +}; + +class Tag_Float : public Tag +{ +public: + Tag_Float(TagDataStream &s); +private: + float data; +}; + +class Tag_Double : public Tag +{ +public: + Tag_Double(TagDataStream &s); + double toDouble(); +private: + double data; +}; + +class Tag_Byte_Array : public Tag +{ +public: + Tag_Byte_Array(TagDataStream &s); + ~Tag_Byte_Array(); + int length(); + const quint8 *toByteArray(); +private: + const quint8 *data; + int len; +}; + +class Tag_String : public Tag +{ +public: + Tag_String(TagDataStream &s); + QString toString(); +private: + QString data; +}; + +class Tag_List : public Tag +{ +public: + Tag_List(TagDataStream &s); + ~Tag_List(); + Tag *at(int index); + int length(); +private: + QList data; +}; + +class Tag_Compound : public Tag +{ +public: + Tag_Compound(TagDataStream &s); + ~Tag_Compound(); + bool has(const QString key); + Tag *at(const QString key); +private: + QHash children; +}; + +class Tag_Int_Array : public Tag +{ +public: + Tag_Int_Array(TagDataStream &s); + ~Tag_Int_Array(); + int length(); + const qint32 *toIntArray(); +private: + int len; + qint32 *data; +}; + +#endif diff --git a/settings.cpp b/settings.cpp new file mode 100644 index 00000000..1ee5b1b9 --- /dev/null +++ b/settings.cpp @@ -0,0 +1,143 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "settings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +Settings::Settings(QWidget *parent) : QWidget(parent) +{ + setWindowFlags(Qt::Window); + setWindowTitle(tr("%1 Settings").arg(qApp->applicationName())); + + QVBoxLayout *layout=new QVBoxLayout; + + QGroupBox *paths=new QGroupBox("Minecraft Location"); + QVBoxLayout *pathlayout=new QVBoxLayout; + QCheckBox *def=new QCheckBox("Use Default Location"); + connect(def,SIGNAL(toggled(bool)), + this,SLOT(chooseDefault(bool))); + pathlayout->addWidget(def); + + QSettings info; + + QHBoxLayout *custlayout=new QHBoxLayout; + QLineEdit *le=new QLineEdit(); + connect(this,SIGNAL(locationChanged(QString)), + le,SLOT(setText(const QString &))); + connect(le,SIGNAL(textChanged(const QString &)), + this,SLOT(pathChanged(const QString &))); + //after the connection to set defaults + le->setText(info.value("mcdir","").toString()); + custlayout->addWidget(le); + QPushButton *browse=new QPushButton("Browse"); + connect(browse,SIGNAL(clicked(bool)), + this,SLOT(chooseLocation(bool))); + custlayout->addWidget(browse); + QWidget *custom=new QWidget; + custom->setLayout(custlayout); + pathlayout->addWidget(custom); + + connect(def,SIGNAL(toggled(bool)), + custom,SLOT(setDisabled(bool))); + //after connection to set defaults + def->setChecked(info.value("usedefault",true).toBool()); + + paths->setLayout(pathlayout); + layout->addWidget(paths); + + QCheckBox *update=new QCheckBox("Auto-check for updates"); + connect(update,SIGNAL(toggled(bool)), + this,SLOT(autoUpdate(bool))); + //after connection to set defaults + update->setChecked(info.value("autoupdate",true).toBool()); + layout->addWidget(update); + + setLayout(layout); +} + +QSize Settings::minimumSizeHint() const +{ + return QSize(400,150); +} +QSize Settings::sizeHint() const +{ + return QSize(400,150); +} + +void Settings::autoUpdate(bool up) +{ + update=up; + QSettings info; + info.setValue("autoupdate",up); + emit settingsUpdated(); +} +void Settings::chooseLocation(bool) +{ + QString dirName=QFileDialog::getExistingDirectory(this,tr("Find Minecraft")); + if (!dirName.isEmpty()) + emit locationChanged(dirName); +} +void Settings::pathChanged(const QString &path) +{ + mcpath=path; + QSettings info; + info.setValue("mcdir",path); + //save settings + emit settingsUpdated(); +} +void Settings::chooseDefault(bool def) +{ + QSettings info; + info.setValue("usedefault",def); + if (!def) //we unchecked default.. but we're still technically default + return; + + QString mc; +#ifdef Q_OS_MAC + mc=QDir::homePath()+QDir::toNativeSeparators("/Library/Application Support/minecraft"); +#elif defined Q_OS_WIN32 + //pretend to be minecraft + QSettings ini(QSettings::IniFormat,QSettings::UserScope, + ".minecraft","minecraft1"); + mc=QFileInfo(ini.fileName()).absolutePath(); +#else + mc=QDir::homePath()+QDir::toNativeSeparators("/.minecraft"); +#endif + + emit locationChanged(mc); +} diff --git a/settings.h b/settings.h new file mode 100644 index 00000000..79a4bf20 --- /dev/null +++ b/settings.h @@ -0,0 +1,58 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SETTINGS_H +#define SETTINGS_H + +#include + +class Settings : public QWidget +{ + Q_OBJECT +public: + explicit Settings(QWidget *parent = 0); + + QSize minimumSizeHint() const; + QSize sizeHint() const; + + bool update; + QString mcpath; + +signals: + void settingsUpdated(); + +signals: + void locationChanged(const QString &); + +private slots: + void autoUpdate(bool); + void chooseLocation(bool); + void chooseDefault(bool); + void pathChanged(const QString &); +}; + +#endif // SETTINGS_H diff --git a/web/Makefile b/web/Makefile new file mode 100644 index 00000000..5d9cad14 --- /dev/null +++ b/web/Makefile @@ -0,0 +1,15 @@ +# closure compiler +COMPILER=~/compiler.jar +COMPLEVEL=ADVANCED_OPTIMIZATIONS + +.DELETE_ON_ERROR: + +JS=color.js editor.js zip.js mods.js display.js generator.js + +all: editor.min.js + +editor.min.js: $(JS) + java -jar $(COMPILER) --warning_level VERBOSE --compilation_level $(COMPLEVEL) $(addprefix --js=,$^) --externs jquery_externs.js --js_output_file $@ + +clean: + rm -f editor.min.js diff --git a/web/color.js b/web/color.js new file mode 100644 index 00000000..2bf7b78e --- /dev/null +++ b/web/color.js @@ -0,0 +1,432 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +//HSV color wheel popup + +/** + * @param {Element} src + * @param {Number} color + * @param {Function} cb + */ +function pickColor(src,color,cb) +{ + var curR=(color>>16)&0xff; + var curG=(color>>8)&0xff; + var curB=color&0xff; + var wheelSize=200; //width and height of color wheel + var wheelThickness=10; //thickness of the color ring + var wheelGap=2; //gap between wheel and SV square + var wheelBg=[0,0,0,0]; //transparent black background (rgba) + + var diam=wheelSize-wheelThickness*2-wheelGap; + var side=Math.sqrt(diam*diam/2); + + // all numbers scaled 0-255, returns hsv scaled 0-1 + /** + * @param {number} r + * @param {number} g + * @param {number} b + * @returns {Array.} + */ + function rgb2hsv(r,g,b) + { + var h,s,v; + var min=Math.min(r,g,b); + v=Math.max(r,g,b); + if (v==0) // 0,0,0 = 0,0,0 + return [0,0,0]; + var delta=v-min; + s=delta/v; + if (s==0) // grey + return [0,s,v/255]; + if (r==v) //yellow to magenta + h=(g-b)/delta; + else if (g==v) //cyan to yellow + h=2+(b-r)/delta; + else // magenta to cyan + h=4+(r-g)/delta; + h/=6; + if (h<0) + h+=1; + return [h,s,v/255]; + } + // all numbers scaled 0-1.. returns rgb scaled 0-255 + /** + * @param {number} h + * @param {number} s + * @param {number} v + * @returns {Array.} + */ + function hsv2rgb(h,s,v) + { + var r,g,b; + h*=6; + var i=Math.floor(h); + var f=h-i; + var p=v*(1-s); + var q=v*(1-f*s); + var t=v*(1-(1-f)*s); + switch (i%6) + { + case 0: r=v; g=t; b=p; break; + case 1: r=q; g=v; b=p; break; + case 2: r=p; g=v; b=t; break; + case 3: r=p; g=q; b=v; break; + case 4: r=t; g=p; b=v; break; + case 5: r=v; g=p; b=q; break; + } + return [Math.round(r*255),Math.round(g*255),Math.round(b*255)]; + } + + var picker=$(document.createElement('div')); + picker.addClass('picker'); + var pos=src.offset(); + picker.css('top',pos.top+'px'); + picker.css('left',pos.left+'px'); + $(document.body).append(picker); + var canvas=$(document.createElement('canvas')); + canvas.attr('width',wheelSize); + canvas.attr('height',wheelSize); + canvas.css('float','left'); + picker.append(canvas); + var controls=$(document.createElement('div')); + controls.css('float','left'); + picker.append(controls); + var colorswatch=$(document.createElement('div')); + colorswatch.addClass('swatch'); + controls.append(colorswatch); + var hexcolor=$(document.createElement('input')); + hexcolor.attr('type','text'); + hexcolor.addClass('hexcolor'); + hexcolor.keyup(keyhc); + controls.append(hexcolor); + + controls.append($(document.createElement('div')).addClass('colorlabel').text('R:')); + var red=$(document.createElement('input')); + red.attr('type','text'); + red.addClass('colorinput'); + red.keyup(keyred); + controls.append(red); + controls.append($(document.createElement('div')).addClass('colorlabel').text('G:')); + var green=$(document.createElement('input')); + green.attr('type','text'); + green.addClass('colorinput'); + green.keyup(keygreen); + controls.append(green); + controls.append($(document.createElement('div')).addClass('colorlabel').text('B:')); + var blue=$(document.createElement('input')); + blue.attr('type','text'); + blue.addClass('colorinput'); + blue.keyup(keyblue); + controls.append(blue); + + var buttons=$(document.createElement('div')); + buttons.css('clear','left'); + buttons.css('padding-top','10px'); + controls.append(buttons); + var okay=$(document.createElement('button')); + okay.css('float','right'); + okay.text('Okay'); + okay.click(function(){ + picker.remove(); + cb((curR<<16)|(curG<<8)|curB); + }); + buttons.append(okay); + var cancel=$(document.createElement('button')); + cancel.css('float','right'); + cancel.text('Cancel'); + cancel.click(function(){picker.remove();}); + buttons.append(cancel); + + + var clr=$(document.createElement('br')); + clr.css('clear','left'); + picker.append(clr); + + + hexcolor.focus(); + picker.keyup(function(e) { + if (e.keyCode==13) { okay.click(); return false; } + if (e.keyCode==27) { cancel.click(); return false; } + return true; + }); + + canvas.mousedown(function(e){ + var x=e.offsetX; + var y=e.offsetY; + var start=Math.round(wheelSize/2-side/2); + var end=Math.round(wheelSize/2+side/2); + //inside square? + if (x>=start && x=start && y=inner && distanceend) x=end; + if (yend) y=end; + hsv[1]=(x-start)/side; + hsv[2]=1-((y-start)/side); + drawHSV(); + hsvChanged(); + return false; + }); + $(canvas).mouseup(function(){ + $(canvas).unbind("mousemove"); + $(canvas).unbind("mouseup"); + return false + }); + } + + function createHueWheel() + { + //we just loop through all the pixels, figure out if each pixel + //is inside the ring or not, and then calculate the hue if it is. + //This is pretty fast, but only needs to run + //once, since we'll use it as a backdrop buffer for all + //future drawing. + var d=ctx.createImageData(wheelSize,wheelSize); + var offset=0; + var outer=wheelSize/2; + var inner=wheelSize/2-wheelThickness; + for (var y=0;y=inner && distance>16)&0xff; + curG=(color>>8)&0xff; + curB=color&0xff; + hsv=rgb2hsv(curR,curG,curB); + updateRGB(); + updateSwatch(); + drawHSV(); + } + function keyred() + { + curR=parseInt(red.val(),10)&0xff; + color&=0xffff; + color|=curR<<16; + updateHex(); + rgbChanged(); + } + function keygreen() + { + curG=parseInt(green.val(),10)&0xff; + color&=0xff00ff; + color|=curG<<8; + updateHex(); + rgbChanged(); + } + function keyblue() + { + curB=parseInt(blue.val(),10)&0xff; + color&=0xffff00; + color|=curB; + updateHex(); + rgbChanged(); + } + + var colorWheel=createHueWheel(); + var hsv=rgb2hsv(curR,curG,curB); + hsvChanged(); + drawHSV(); +} diff --git a/web/display.js b/web/display.js new file mode 100644 index 00000000..5e954efd --- /dev/null +++ b/web/display.js @@ -0,0 +1,198 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @constructor + */ +function Display() +{ + /** @type {jQuery} */ + var dom=$(document.createElement('div')); + $(document.body).append(dom); + + + var types=['select','button','option','h1','h4','div','br','input','dl','dt','dd','table','tr','td','th','span','a','label']; + + // hides the old screen, creates a new one + this.save=function() + { + var oldDom=dom; + oldDom.hide(); + dom=$(document.createElement('div')); + $(document.body).append(dom); + return oldDom; + } + // destroys current screen, unhides old one + this.restore=function(el) + { + dom.remove(); + dom=el; + dom.show(); + } + // clears current screen + this.clear=function() + { + dom.empty(); + } + + /** + * @param {Object} obj + * @returns {jQuery} + */ + this.toDOM=function(obj) + { + /** @type {string|undefined} */ + var type=undefined; + for (var i=0;i} btns + * @param {Function} cb + */ +function Dialog(display,btns,cb) +{ + var bg=display.toDOM({'div':null,'class':'dialogbg'}); + display.draw(bg); + + var win=display.toDOM({'div':null,'class':'content'}); + var buttons=[]; + for (var i=0;i0); + }); + + /** @type {jQuery} */ + var localmods=display.toDOM({'select':null,'size':'6'}); + /** @type {jQuery} */ + var addmod=display.toDOM({'button':'Add Mod'}); + addmod.click(mods.add); + /** @type {jQuery} */ + var modifymod=display.toDOM({'button':'Modify Mod','disabled':'true'}); + modifymod.click(function(){ + mods.modify(localmods.children(':selected').val()); + }); + /** @type {jQuery} */ + var removemod=display.toDOM({'button':'Remove Mod','disabled':'true'}); + removemod.click(function(){ + mods.remove(localmods.children(':selected').val()); + }); + var exportmod=display.toDOM({'button':'Export Mod','disabled':'true'}); + exportmod.click(function(){ + mods.exportMod(localmods.children(':selected').val()); + }); + localmods.change(function(){ + activate([modifymod,removemod,exportmod],localmods.children(':selected').length>0); + }); + + /** @type {jQuery} */ + var localpacks=display.toDOM({'select':null,'size':'6'}); + /** @type {jQuery} */ + var addpack=display.toDOM({'button':'Add Pack'}); + addpack.click(mods.addPack); + /** @type {jQuery} */ + var modifypack=display.toDOM({'button':'Modify Pack','disabled':'true'}); + modifypack.click(function(){ + mods.modifyPack(localpacks.children(':selected').val()); + }); + /** @type {jQuery} */ + var generatelocal=display.toDOM({'button':'Generate','disabled':'true'}); + generatelocal.click(function(){ + generator.generate(localpacks.children(':selected').val(),true); + }); + /** @type {jQuery} */ + var removepack=display.toDOM({'button':'Remove Pack','disabled':'true'}); + removepack.click(function() { + mods.removePack(localpacks.children(':selected').val()); + }); + localpacks.change(function(){ + activate([modifypack,generatelocal,removepack],localpacks.children(':selected').length>0); + }); + + display.draw([ + {'h1':'Minutor Pack Builder'}, + {'div':[ + {'h4':'Pre-made Packs'}, + packs + ],'css':{'float':'left'}}, + {'div':[ + {'h4':' '}, + generate + ],'css':{'float':'left'}}, + {'div':[ + {'h4':'Your Mods'}, + localmods + ],'css':{'clear':'left','float':'left'}}, + {'div':[ + {'h4':' '}, + addmod, + modifymod, + removemod, + exportmod + ],'css':{'float':'left'}}, + {'div':[ + {'h4':'Your Packs'}, + localpacks + ],'css':{'float':'left'}}, + {'div':[ + {'h4':' '}, + addpack, + modifypack, + removepack, + generatelocal + ],'css':{'float':'left'}} + ]); + + + + /** + * @param {Array.} els + * @param {boolean} onoff + */ + function activate(els,onoff) + { + for (var i=0;ia&&(a+=1);return[a,d,e/255]}function o(a,b,g){var d,e,r,a=6*a,c=Math.floor(a),h=a-c,a=g*(1-b),y=g*(1-h*b),b=g*(1-(1-h)*b);switch(c%6){case 0:d=g;e=b;r=a;break;case 1:d=y;e=g;r=a;break;case 2:d=a;e=g;r=b;break;case 3:d=a;e=y;r=g;break;case 4:d=b;e=a;r=g;break;case 5:d=g,e=a,r=y}return[Math.round(255*d),Math.round(255* +e),Math.round(255*r)]}function t(a,b,g){for(var d=4*(g-3)*h+4*(b-3),e=0,g=0;7>g;g++,d+=4*h-28)for(b=0;7>b;b++,e++)if("."=="..111...10001.10...0110...0110...01.10001...111.."[e])d+=4;else{var r;r="1"=="..111...10001.10...0110...0110...01.10001...111.."[e]?0:255;a.data[d++]=r;a.data[d++]=r;a.data[d++]=r;a.data[d++]=255}}function k(){G.putImageData(H,0,0);for(var a=G.getImageData(0,0,h,h),b=Math.round(h/2-j/2),g=Math.round(h/2+j/2),d=b;da.length;)a="0"+a;I.val(a)}function w(){g.val(String(l));K.val(String(e));L.val(String(d))} +function a(){u.css("background","rgb("+l+","+e+","+d+")")}var l=c>>16&255,e=c>>8&255,d=c&255,h=200,P=10,Q=[0,0,0,0],b=h-2*P-2,j=Math.sqrt(b*b/2),C=$(document.createElement("div"));C.addClass("picker");f=f.offset();C.css("top",f.top+"px");C.css("left",f.left+"px");$(document.body).append(C);var A=$(document.createElement("canvas"));A.attr("width",h);A.attr("height",h);A.css("float","left");C.append(A);f=$(document.createElement("div"));f.css("float","left");C.append(f);var u=$(document.createElement("div")); +u.addClass("swatch");f.append(u);var I=$(document.createElement("input"));I.attr("type","text");I.addClass("hexcolor");I.keyup(function(){c=parseInt(I.val(),16);l=c>>16&255;e=c>>8&255;d=c&255;z=m(l,e,d);w();a();k()});f.append(I);f.append($(document.createElement("div")).addClass("colorlabel").text("R:"));var g=$(document.createElement("input"));g.attr("type","text");g.addClass("colorinput");g.keyup(function(){l=parseInt(g.val(),10)&255;c&=65535;c|=l<<16;q();i()});f.append(g);f.append($(document.createElement("div")).addClass("colorlabel").text("G:")); +var K=$(document.createElement("input"));K.attr("type","text");K.addClass("colorinput");K.keyup(function(){e=parseInt(K.val(),10)&255;c&=16711935;c|=e<<8;q();i()});f.append(K);f.append($(document.createElement("div")).addClass("colorlabel").text("B:"));var L=$(document.createElement("input"));L.attr("type","text");L.addClass("colorinput");L.keyup(function(){d=parseInt(L.val(),10)&255;c&=16776960;c|=d;q();i()});f.append(L);b=$(document.createElement("div"));b.css("clear","left");b.css("padding-top", +"10px");f.append(b);var E=$(document.createElement("button"));E.css("float","right");E.text("Okay");E.click(function(){C.remove();p(l<<16|e<<8|d)});b.append(E);var F=$(document.createElement("button"));F.css("float","right");F.text("Cancel");F.click(function(){C.remove()});b.append(F);f=$(document.createElement("br"));f.css("clear","left");C.append(f);I.focus();C.keyup(function(a){return 13==a.keyCode?(E.click(),B):27==a.keyCode?(F.click(),B):s});A.mousedown(function(a){var b=a.offsetX,a=a.offsetY, +d=Math.round(h/2-j/2),g=Math.round(h/2+j/2);if(b>=d&&b=d&&ay&&(e=y);ry&&(r=y);z[1]=(e-c)/j;z[2]=1-(r-c)/j;k();x();return B});$(A).mouseup(function(){$(A).unbind("mousemove");$(A).unbind("mouseup");return B})}else{var d=h/2,f=a-h/2,l=b-h/2,b=Math.sqrt(l*l+f*f);b>=h/2-P&&b=O&&MD-M?f.data[b++]=255*(D-M):1>M-O?f.data[b++]=255*(M-O):f.data[b++]= +255):(f.data[b++]=Q[0],f.data[b++]=Q[1],f.data[b++]=Q[2],f.data[b++]=Q[3])}H=f;var z=m(l,e,d);x();k()};function S(){function f(a,d){for(var b=0;be.length;)e="0"+e;g.data[a].color=e;1!=b?g.data[a].alpha=b:delete g.data[a].alpha}else delete g.data[a].color,delete g.data[a].alpha;for(e=b=0;e>16)+","+(j>>8&255)+","+(j&255)+")");i.click(function(){N(i,j,function(a){j=a;i.css("background","rgb("+(a>>16)+","+(a>>8&255)+","+(a&255)+")")})});e=100;-1!=a&&(g.data[a].color===n?e=0:g.data[a].alpha!==n&&(e=Math.round(100*g.data[a].alpha)));var q=c.b({input:v,type:"text",size:"4",val:String(e)}),k=[c.b({input:v,type:"checkbox",val:1}),c.b({input:v,type:"checkbox",val:2}),c.b({input:v,type:"checkbox",val:4})];if(-1!=a)for(e=0;e< +k.length;e++)g.data[a].flags&k[e].val()&&k[e].attr("checked","checked");b.c([{dl:[{dt:"ID:"},{dd:h},{dt:"Name:"},{dd:f},{dt:"Color:"},{dd:i},{dt:"Alpha:"},{dd:q},{dt:"Flags:"},{dd:[{label:[k[0],"Transparent"]},{label:[k[1],"Transp. Solid"]},{label:[k[2],"Fluid"]}]},{dt:"Damage Mask:"},{dd:p}]}]);h.focus()}function p(a,b){var e=new X(c,["Save","Cancel"],function(e){if(0==e&&$.isNumeric(h.val())){g.data[a].variants===n&&(g.data[a].variants=[]);-1==b&&(b=g.data[a].variants.length,g.data[a].variants[b]= +{});g.data[a].variants[b].data=parseInt(h.val(),10);e=j.val().trim();e!==g.data[a].name&&""!=e?g.data[a].variants[b].name=e:delete g.data[a].variants[b].name;for(e=l.toString(16);6>e.length;)e="0"+e;g.data[a].color==n||e!==g.data[a].color?g.data[a].variants[b].color=e:delete g.data[a].variants[b].color;u();d()}}),h=c.b({input:v,type:"text",val:-1!=b?g.data[a].variants[b].data:"",size:"4"}),f=g.data[a].name,l=0;g.data[a].color!==n&&(l=parseInt(g.data[a].color,16));-1!=b&&(g.data[a].variants[b].name!== +n&&(f=g.data[a].variants[b].name),g.data[a].variants[b].color!==n&&(l=parseInt(g.data[a].variants[b].color,16)));var j=c.b({input:v,type:"text",val:f,size:"40"}),i=c.b({div:v,"class":"color",css:{background:"rgb("+(l>>16)+","+(l>>8&255)+","+(l&255)+")"}});i.click(function(){N(i,l,function(a){l=a;i.css("background","rgb("+(a>>16)+","+(a>>8&255)+","+(a&255)+")")})});e.c([{dl:[{dt:"Damage:"},{dd:h},{dt:"Name:"},{dd:j},{dt:"Color:"},{dd:i}]}]);h.focus()}function b(){for(var a=[],b=0;bb.config?1:-1});for(var a=0;aO?H.css({position:"fixed"}):H.css({position:"relative"})})};this.remove=function(a){confirm("Are you sure you wish to delete "+w[a].name+"?")&&(delete w[a],o(),f())};this.j=function(a){var d=new Blob([window.JSON.stringify(w[a])],{type:"application/octet-stream"}),c=window.URL.createObjectURL(d),d=$(document.createElement("a"));d.attr("href",c);d.attr("download",a);a=document.createEvent("MouseEvents");a.initMouseEvent("click",s,B,window, +1,0,0,0,0,B,B,B,0,v);d[0].dispatchEvent(a);setTimeout(function(){window.URL.revokeObjectURL(c)},5E3)};this.i=function(){var e=new X(c,["Create","Cancel"],function(e){1==e||""==d.val().trim()||(a.push({name:d.val().trim(),type:"pack",version:"v1",data:[]}),k(),f())}),d=c.b({input:v,type:"text",size:"30"});e.c([{h4:"Add Pack"},{dl:[{dt:"Name:"},{dd:d}]}]);d.focus()};this.k=function(e){var d=c.save(),h=a[e],l=c.b({input:v,type:"text",val:h.name,size:"30"}),p=c.b({input:v,type:"text",val:h.version,size:"8"}), +e="";h.update!=n&&(e=h.update);var b=c.b({input:v,type:"text",val:e,size:"50"}),e=c.b({button:"Save",css:{"float":"right"}});e.click(function(){var a=l.val().trim();if(""==a)alert("You must give this pack a name");else{h.name=a;h.version=p.val().trim();a=b.val().trim();""!=a?h.update=a:delete h.update;h.data.splice(0,h.data.length);for(a=0;ab.id?1:-1:"pre"==a.type?1:-1});for(b=0;bm?q.css({position:"fixed"}):q.css({position:"relative"})});var u};this.l=function(e){confirm("Are you sure you wish to delete "+a[e].name+"?")&&(a.splice(e,1),k(),f())}};function U(){var f=$(document.createElement("div"));$(document.body).append(f);var c="select button option h1 h4 div br input dl dt dd table tr td th span a label".split(" ");this.save=function(){var c=f;c.hide();f=$(document.createElement("div"));$(document.body).append(f);return c};this.restore=function(c){f.remove();f=c;f.show()};this.clear=function(){f.empty()};this.b=function(f){for(var m=n,o=0;od;d++){a=d;for(var f=0;8>f;f++)a=a&1?a>>>1^3988292384:a>>>1;e[d]=a}a=new Date;var k=a.getFullYear()-1980<<9|a.getMonth()+1<<5|a.getDate(), +m=[];a=[];for(var b=0,d=0;d>8&255;for(var f=c[d].file,j=-1,p=0;p>>8^e[(j^f.charCodeAt(p))&255];m[d]=~j;a[b++]=m[d]&255;a[b++]=m[d]>>8&255;a[b++]=m[d]>>16&255;a[b++]=m[d]>>24&255;j=c[d].file.length;a[b++]=j&255;a[b++]=j>>8&255;a[b++]=j>>16&255;a[b++]=j>>24&255;a[b++]=j&255;a[b++]=j>>8&255;a[b++]=j>>16&255;a[b++]=j>>24&255; +a[b++]=c[d].name.length;a[b++]=0;a[b++]=0;for(f=a[b++]=0;f>8&255;a[b++]=m[d]&255;a[b++]=m[d]>>8&255;a[b++]=m[d]>>16&255;a[b++]=m[d]>>24&255;j=c[d].file.length;a[b++]=j&255;a[b++]=j>>8&255;a[b++]=j>>16&255;a[b++]=j>>24&255; +a[b++]=j&255;a[b++]=j>>8&255;a[b++]=j>>16&255;a[b++]=j>>24&255;a[b++]=c[d].name.length;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;a[b++]=0;f=c[d].offset;a[b++]=f&255;a[b++]=f>>8&255;a[b++]=f>>16&255;a[b++]=f>>24&255;for(f=0;f>8&255;a[b++]=c&255;a[b++]=c>>8&255;a[b++]=d& +255;a[b++]=d>>8&255;a[b++]=d>>16&255;a[b++]=d>>24&255;a[b++]=e&255;a[b++]=e>>8&255;a[b++]=e>>16&255;a[b++]=e>>24&255;a[b++]=0;a[b++]=0;a=new Uint8Array(a);c=q.name.toLowerCase().replace(/[^a-z0-9]/g,"")+".zip";a=new Blob([a],{type:"application/zip"});var o=window.URL.createObjectURL(a);a=$(document.createElement("a"));a.attr("href",o);a.attr("download",c);c=document.createEvent("MouseEvents");c.initMouseEvent("click",s,B,window,1,0,0,0,0,B,B,B,0,v);a[0].dispatchEvent(c);setTimeout(function(){window.URL.revokeObjectURL(o)}, +5E3)}var i,q;this.g=function(a,l){i={"pack_info.json":{type:"pack",data:[]}};q=i["pack_info.json"];if(l){var e=f.e[a];q.name=e.name;q.version=e.version;e.update!=n&&(q.update=e.update);for(var d=0;d} */ + var pack; + /** @type {Object} */ + var packInfo; + + /** + * @param {string} key + * @param {boolean} islocal + */ + this.generate=function(key,islocal) + { + pack={'pack_info.json':{'type':'pack','data':[]}}; + packInfo=pack['pack_info.json']; + if (islocal) + { + var p=mods.localPacks[key]; + packInfo['name']=p['name']; + packInfo['version']=p['version']; + if (p['update']!=undefined) + packInfo['update']=p['update']; + for (var i=0;i} + */ + function parseConfig(cfg) + { + var hash={}; + var prefix=[]; + var pendingsymbol=''; + var lines=cfg.split(/\n|\r/); + for (var i=0;i} prefix + * @param {Object.} hash + * @param {string} line + */ + function addConfigLine(prefix,hash,line) + { + if (!line.match(/=/)) + return; + var parts=line.split(/=/); + var key=parts[0]; + if (key.match(/:/)) + { + var kparts=key.split(/:/); + key=kparts[1]; + } + prefix.push(toSymbol(key)); + var val=toSymbol(parts[1]); + if ($.isNumeric(val)) + hash[prefix.join('.')]=parseInt(val,10); + prefix.pop(); + } + /** + * @param {string} sym + * @returns {string} + */ + function toSymbol(sym) + { + sym=sym.trim(); + while (sym.match(/"/)) + sym=sym.replace(/^"(.*)"$/,'$1'); + return sym; + } + + /** + * @param {string} name + * @param {string} type + * @returns {string} + */ + function makeFilename(name,type) + { + var pre=name.toLowerCase().replace(/[^a-z0-9]/g,''); + var post; + switch (type) + { + case 'block': post="_ids.json"; break; + case 'biome': post="_biomes.json"; break; + case 'dimension': post="_dims.json"; break; + } + var fn=pre+post; + var mid=1; + while (fn in pack) + { + mid++; + fn=pre+mid+post; + } + return fn; + } + + function zipPack() + { + // remove any unconfigured lines from the pack + // we do this because the pack might be using an older config + for (var f in pack) + { + if (pack[f]['type']=='pack') continue; + for (var i=pack[f]['data'].length-1;i>=0;i--) + if (pack[f]['data'][i]['config']!==undefined) + pack[f]['data'].splice(i,1); //remove it + if (pack[f]['data'].length==0) //no data? remove entire mod + { + delete pack[f]; + for (var i=0;i + +Minutor Pack Builder + + + + + + + \ No newline at end of file diff --git a/web/jquery_externs.js b/web/jquery_externs.js new file mode 100644 index 00000000..4cc2dea2 --- /dev/null +++ b/web/jquery_externs.js @@ -0,0 +1,2243 @@ +/* + * Copyright 2011 The Closure Compiler Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Externs for jQuery 1.7.2 + * + * Note that some functions use different return types depending on the number + * of parameters passed in. In these cases, you may need to annotate the type + * of the result in your code, so the JSCompiler understands which type you're + * expecting. For example: + * var elt = /** @type {Element} * / (foo.get(0)); + * + * @see http://api.jquery.com/ + * @externs + */ + +/** + * @typedef {(Window|Document|Element|Array.|string|jQuery| + * NodeList)} + */ +var jQuerySelector; + +/** + * @constructor + * @param {(jQuerySelector|Element|Object|Array.|jQuery|string| + * function())=} arg1 + * @param {(Element|jQuery|Document| + * Object.)=} arg2 + * @return {!jQuery} + */ +function jQuery(arg1, arg2) {} + +/** + * @constructor + * @extends {jQuery} + * @param {(jQuerySelector|Element|Array.|Object|jQuery|string| + * function())} arg1 + * @param {(Element|jQuery|Document| + * Object.)=} arg2 + * @return {!jQuery} + */ +function $(arg1, arg2) {} + +/** + * @param {(jQuerySelector|Array.|string|jQuery)} arg1 + * @param {Element=} context + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.add = function(arg1, context) {}; + +/** + * @param {(string|function(number,String))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.addClass = function(arg1) {}; + +/** + * @param {(string|Element|jQuery|function(number))} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.after = function(arg1, content) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {Object.=} settings + * @return {jQuery.jqXHR} + */ +jQuery.ajax = function(arg1, settings) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {Object.=} settings + * @return {jQuery.jqXHR} + */ +$.ajax = function(arg1, settings) {}; + +/** + * @param {function(!jQuery.event,XMLHttpRequest,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxComplete = function(handler) {}; + +/** + * @param {function(!jQuery.event,jQuery.jqXHR,Object.,*)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxError = function(handler) {}; + +/** + * @param {(string| + * function(Object.,Object.,jQuery.jqXHR))} dataTypes + * @param {function(Object.,Object.,jQuery.jqXHR)=} handler + */ +jQuery.ajaxPrefilter = function(dataTypes, handler) {}; + +/** + * @param {(string| + * function(Object.,Object.,jQuery.jqXHR))} dataTypes + * @param {function(Object.,Object.,jQuery.jqXHR)=} handler + */ +$.ajaxPrefilter = function(dataTypes, handler) {}; + +/** + * @param {function(!jQuery.event,jQuery.jqXHR,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxSend = function(handler) {}; + +/** @const */ +jQuery.ajaxSettings = {}; + +/** @const */ +$.ajaxSettings = {}; + +/** @type {Object.} */ +jQuery.ajaxSettings.accepts = {}; + +/** @type {Object.} */ +$.ajaxSettings.accepts = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.async; + +/** @type {boolean} */ +$.ajaxSettings.async; + +/** @type {Object.} */ +jQuery.ajaxSettings.contents = {}; + +/** @type {Object.} */ +$.ajaxSettings.contents = {}; + +/** @type {string} */ +jQuery.ajaxSettings.contentType; + +/** @type {string} */ +$.ajaxSettings.contentType; + +/** @type {Object.} */ +jQuery.ajaxSettings.converters = {}; + +/** @type {Object.} */ +$.ajaxSettings.converters = {}; + +/** @type {Object.} */ +jQuery.ajaxSettings.flatOptions = {}; + +/** @type {Object.} */ +$.ajaxSettings.flatOptions = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.global; + +/** @type {boolean} */ +$.ajaxSettings.global; + +/** @type {boolean} */ +jQuery.ajaxSettings.isLocal; + +/** @type {boolean} */ +$.ajaxSettings.isLocal; + +/** @type {boolean} */ +jQuery.ajaxSettings.processData; + +/** @type {boolean} */ +$.ajaxSettings.processData; + +/** @type {Object.} */ +jQuery.ajaxSettings.responseFields = {}; + +/** @type {Object.} */ +$.ajaxSettings.responseFields = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.traditional; + +/** @type {boolean} */ +$.ajaxSettings.traditional; + +/** @type {string} */ +jQuery.ajaxSettings.type; + +/** @type {string} */ +$.ajaxSettings.type; + +/** @type {string} */ +jQuery.ajaxSettings.url; + +/** @type {string} */ +$.ajaxSettings.url; + +/** @return {XMLHttpRequest|ActiveXObject} */ +jQuery.ajaxSettings.xhr = function() {}; + +/** @return {XMLHttpRequest|ActiveXObject} */ +$.ajaxSettings.xhr = function() {}; + +/** @param {Object.} options */ +jQuery.ajaxSetup = function(options) {}; + +/** @param {Object.} options */ +$.ajaxSetup = function(options) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxStart = function(handler) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxStop = function(handler) {}; + +/** + * @param {function(!jQuery.event,XMLHttpRequest,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxSuccess = function(handler) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.andSelf = function() {}; + +/** + * @param {Object.} properties + * @param {(string|number|function()|Object.)=} arg2 + * @param {(string|function())=} easing + * @param {function()=} complete + * @return {!jQuery} + */ +jQuery.prototype.animate = function(properties, arg2, easing, complete) {}; + +/** + * @param {(string|Element|jQuery|function(number,string))} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.append = function(arg1, content) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.appendTo = function(target) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|function(number,string))=} arg2 + * @return {(string|!jQuery)} + */ +jQuery.prototype.attr = function(arg1, arg2) {}; + +/** + * @param {(string|Element|jQuery|function())} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.before = function(arg1, content) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(Object.|function(!jQuery.event=)|boolean)=} eventData + * @param {(function(!jQuery.event=)|boolean)=} arg3 + * @return {!jQuery} + */ +jQuery.prototype.bind = function(arg1, eventData, arg3) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.blur = function(arg1, handler) {}; + +/** @type {boolean} */ +jQuery.boxModel; + +/** @type {boolean} */ +$.boxModel; + +/** @type {Object.} */ +jQuery.browser; + +/** @type {Object.} */ +$.browser; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.mozilla; + +/** + * @type {boolean} + * @const + */ +$.browser.mozilla; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.msie; + +/** + * @type {boolean} + * @const + */ +$.browser.msie; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.opera; + +/** + * @type {boolean} + * @const + */ +$.browser.opera; + +/** + * @deprecated + * @type {boolean} + * @const + */ +jQuery.browser.safari; + +/** + * @deprecated + * @type {boolean} + * @const + */ +$.browser.safari; + +/** @type {string} */ +jQuery.browser.version; + +/** @type {string} */ +$.browser.version; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.webkit; + +/** + * @type {boolean} + * @const + */ +$.browser.webkit; + +/** + * @constructor + * @private + */ +jQuery.callbacks = function () {}; + +/** + * @param {string=} flags + * @return {jQuery.callbacks} + */ +jQuery.Callbacks = function (flags) {}; + +/** @param {function()} callbacks */ +jQuery.callbacks.prototype.add = function(callbacks) {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.disable = function() {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.empty = function() {}; + +/** @param {...*} var_args */ +jQuery.callbacks.prototype.fire = function(var_args) {}; + +/** @return {boolean} */ +jQuery.callbacks.prototype.fired = function() {}; + +/** @param {...*} var_args */ +jQuery.callbacks.prototype.fireWith = function(var_args) {}; + +/** + * @param {function()} callback + * @return {boolean} + * @nosideeffects + */ +jQuery.callbacks.prototype.has = function(callback) {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.lock = function() {}; + +/** @return {boolean} */ +jQuery.callbacks.prototype.locked = function() {}; + +/** @param {function()} callbacks */ +jQuery.callbacks.prototype.remove = function(callbacks) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.change = function(arg1, handler) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.children = function(selector) {}; + +/** + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.clearQueue = function(queueName) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.click = function(arg1, handler) {}; + +/** + * @param {boolean=} withDataAndEvents + * @param {boolean=} deepWithDataAndEvents + * @return {!jQuery} + * @suppress {checkTypes} see issue 583 + */ +jQuery.prototype.clone = function(withDataAndEvents, deepWithDataAndEvents) {}; + +/** + * @param {(jQuerySelector|jQuery|Element|string|Array.)} arg1 + * @param {Element=} context + * @return {(!jQuery|Array.)} + * @nosideeffects + */ +jQuery.prototype.closest = function(arg1, context) {}; + +/** + * @param {Element} container + * @param {Element} contained + * @return {boolean} + */ +jQuery.contains = function(container, contained) {}; + +/** + * @param {Element} container + * @param {Element} contained + * @return {boolean} + */ +$.contains = function(container, contained) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.contents = function() {}; + +/** @type {Element} */ +jQuery.prototype.context; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|function(number,*))=} arg2 + * @return {(string|!jQuery)} + */ +jQuery.prototype.css = function(arg1, arg2) {}; + +/** @type {Object.} */ +jQuery.cssHooks; + +/** @type {Object.} */ +$.cssHooks; + +/** + * @param {Element} elem + * @param {string=} key + * @param {*=} value + * @return {*} + */ +jQuery.data = function(elem, key, value) {}; + +/** + * @param {(string|Object.)=} arg1 + * @param {*=} value + * @return {*} + */ +jQuery.prototype.data = function(arg1, value) {}; + +/** + * @param {Element} elem + * @param {string=} key + * @param {*=} value + * @return {*} + */ +$.data = function(elem, key, value) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.dblclick = function(arg1, handler) {}; + +/** + * @constructor + * @param {function()=} opt_fn + * @see http://api.jquery.com/category/deferred-object/ + */ +jQuery.deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @return {jQuery.Deferred} + */ +jQuery.Deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @see http://api.jquery.com/category/deferred-object/ + */ +$.deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @return {jQuery.deferred} + */ +$.Deferred = function(opt_fn) {}; + +/** + * @param {function()} alwaysCallbacks + * @param {function()=} alwaysCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.always + = function(alwaysCallbacks, alwaysCallbacks2) {}; + +/** + * @param {function()} doneCallbacks + * @param {function()=} doneCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.done = function(doneCallbacks, doneCallbacks2) {}; + +/** + * @param {function()} failCallbacks + * @param {function()=} failCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.fail = function(failCallbacks, failCallbacks2) {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.deferred.prototype.isRejected = function() {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.deferred.prototype.isResolved = function() {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.notify = function(var_args) {}; + +/** + * @param {Object} context + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.notifyWith = function(context, var_args) {}; + +/** + * @param {function()=} doneFilter + * @param {function()=} failFilter + * @param {function()=} progressFilter + * @return {jQuery.Promise} + */ +jQuery.deferred.prototype.pipe + = function(doneFilter, failFilter, progressFilter) {}; + +/** + * @param {function()} progressCallbacks + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.progress = function(progressCallbacks) {}; + +/** + * @param {Object=} target + * @return {jQuery.Promise} + */ +jQuery.deferred.prototype.promise = function(target) {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.reject = function(var_args) {}; + +/** + * @param {Object} context + * @param {Array.<*>=} args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.rejectWith = function(context, args) {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.resolve = function(var_args) {}; + +/** + * @param {Object} context + * @param {Array.<*>=} args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.resolveWith = function(context, args) {}; + +/** @return {string} */ +jQuery.deferred.prototype.state = function() {}; + +/** + * @param {function()} doneCallbacks + * @param {function()} failCallbacks + * @param {function()=} progressCallbacks + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.then + = function(doneCallbacks, failCallbacks, progressCallbacks) {}; + +/** + * @param {number} duration + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.delay = function(duration, queueName) {}; + +/** + * @param {string} selector + * @param {(string|Object.)} arg2 + * @param {(function(!jQuery.event=)|Object.)=} arg3 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.delegate = function(selector, arg2, arg3, handler) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + */ +jQuery.dequeue = function(elem, queueName) {}; + +/** + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.dequeue = function(queueName) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + */ +$.dequeue = function(elem, queueName) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + */ +jQuery.prototype.detach = function(selector) {}; + +/** + * @deprecated + * @param {(string|Object.)=} arg1 + * @param {string=} handler + * @return {!jQuery} + */ +jQuery.prototype.die = function(arg1, handler) {}; + +/** + * @param {Object} collection + * @param {function(number,?)} callback + * @return {Object} + */ +jQuery.each = function(collection, callback) {}; + +/** + * @param {function(number,Element)} fnc + * @return {!jQuery} + */ +jQuery.prototype.each = function(fnc) {}; + +/** + * @param {Object} collection + * @param {function(number,?)} callback + * @return {Object} + */ +$.each = function(collection, callback) {}; + +/** @return {!jQuery} */ +jQuery.prototype.empty = function() {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.end = function() {}; + +/** + * @param {number} arg1 + * @return {!jQuery} + */ +jQuery.prototype.eq = function(arg1) {}; + +/** @param {string} message */ +jQuery.error = function(message) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.error = function(arg1, handler) {}; + +/** @param {string} message */ +$.error = function(message) {}; + +/** + * @constructor + * @param {string} eventType + */ +jQuery.event = function(eventType) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + * @param {Object=} properties + * @return {jQuery.Event} + */ +jQuery.Event = function(eventType, properties) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + */ +$.event = function(eventType) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + * @param {Object=} properties + * @return {$.Event} + */ +$.Event = function(eventType, properties) {}; + +/** @type {Element} */ +jQuery.event.prototype.currentTarget; + +/** @type {Object.} */ +jQuery.event.prototype.data; + +/** @type {Element} */ +jQuery.event.prototype.delegateTarget; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isDefaultPrevented = function() {}; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isImmediatePropagationStopped = function() {}; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isPropagationStopped = function() {}; + +/** @type {string} */ +jQuery.event.prototype.namespace; + +/** @type {Event} */ +jQuery.event.prototype.originalEvent; + +/** @type {number} */ +jQuery.event.prototype.pageX; + +/** @type {number} */ +jQuery.event.prototype.pageY; + +/** @return {undefined} */ +jQuery.event.prototype.preventDefault = function() {}; + +/** @type {Object.} */ +jQuery.event.prototype.props; + +/** @type {Element} */ +jQuery.event.prototype.relatedTarget; + +/** @type {*} */ +jQuery.event.prototype.result; + +/** @return {undefined} */ +jQuery.event.prototype.stopImmediatePropagation = function() {}; + +/** @return {undefined} */ +jQuery.event.prototype.stopPropagation = function() {}; + +/** @type {Element} */ +jQuery.event.prototype.target; + +/** @type {number} */ +jQuery.event.prototype.timeStamp; + +/** @type {string} */ +jQuery.event.prototype.type; + +/** @type {number} */ +jQuery.event.prototype.which; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +jQuery.extend = function(arg1, var_args) {}; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +jQuery.prototype.extend = function(arg1, var_args) {}; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +$.extend = function(arg1, var_args) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeIn = function(duration, arg2, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeOut = function(duration, arg2, callback) {}; + +/** + * @param {(string|number)} duration + * @param {number} opacity + * @param {(function()|string)=} arg3 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeTo = function(duration, opacity, arg3, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(string|function())=} easing + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeToggle = function(duration, easing, callback) {}; + +/** + * @param {(jQuerySelector|function(number)|Element|jQuery)} arg1 + * @return {!jQuery} + */ +jQuery.prototype.filter = function(arg1) {}; + +/** + * @param {(jQuerySelector|jQuery|Element)} arg1 + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.find = function(arg1) {}; + +/** @return {!jQuery} */ +jQuery.prototype.first = function() {}; + +/** @see http://docs.jquery.com/Plugins/Authoring */ +jQuery.fn; + +/** @see http://docs.jquery.com/Plugins/Authoring */ +$.fn; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focus = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focusin = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focusout = function(arg1, handler) {}; + +/** @const */ +jQuery.fx = {}; + +/** @const */ +$.fx = {}; + +/** @type {number} */ +jQuery.fx.interval; + +/** @type {number} */ +$.fx.interval; + +/** @type {boolean} */ +jQuery.fx.off; + +/** @type {boolean} */ +$.fx.off; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +jQuery.get = function(url, data, success, dataType) {}; + +/** + * @param {number=} index + * @return {(Element|Array.)} + * @nosideeffects + */ +jQuery.prototype.get = function(index) {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +$.get = function(url, data, success, dataType) {}; + +/** + * @param {string} url + * @param {(Object.|function(string,string,jQuery.jqXHR))=} data + * @param {function(string,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +jQuery.getJSON = function(url, data, success) {}; + +/** + * @param {string} url + * @param {(Object.|function(string,string,jQuery.jqXHR))=} data + * @param {function(string,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +$.getJSON = function(url, data, success) {}; + +/** + * @param {string} url + * @param {function(Node,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +jQuery.getScript = function(url, success) {}; + +/** + * @param {string} url + * @param {function(Node,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +$.getScript = function(url, success) {}; + +/** @param {string} code */ +jQuery.globalEval = function(code) {}; + +/** @param {string} code */ +$.globalEval = function(code) {}; + +/** + * @param {Array.<*>} arr + * @param {function(*,number)} fnc + * @param {boolean=} invert + * @return {Array.<*>} + */ +jQuery.grep = function(arr, fnc, invert) {}; + +/** + * @param {Array.<*>} arr + * @param {function(*,number)} fnc + * @param {boolean=} invert + * @return {Array.<*>} + */ +$.grep = function(arr, fnc, invert) {}; + +/** + * @param {(string|Element)} arg1 + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.has = function(arg1) {}; + +/** + * @param {string} className + * @return {boolean} + * @nosideeffects + */ +jQuery.prototype.hasClass = function(className) {}; + +/** + * @param {Element} elem + * @return {boolean} + * @nosideeffects + */ +jQuery.hasData = function(elem) {}; + +/** + * @param {Element} elem + * @return {boolean} + * @nosideeffects + */ +$.hasData = function(elem) {}; + +/** + * @param {(string|number|function(number,number))=} arg1 + * @return {(number|!jQuery)} + */ +jQuery.prototype.height = function(arg1) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.hide = function(duration, arg2, callback) {}; + +/** @param {boolean} hold */ +jQuery.holdReady = function(hold) {}; + +/** @param {boolean} hold */ +$.holdReady = function(hold) {}; + +/** + * @param {function(!jQuery.event=)} arg1 + * @param {function(!jQuery.event=)=} handlerOut + * @return {!jQuery} + */ +jQuery.prototype.hover = function(arg1, handlerOut) {}; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {(string|!jQuery)} + */ +jQuery.prototype.html = function(arg1) {}; + +/** + * @param {*} value + * @param {Array.<*>} arr + * @param {number=} fromIndex + * @return {number} + * @nosideeffects + */ +jQuery.inArray = function(value, arr, fromIndex) {}; + +/** + * @param {*} value + * @param {Array.<*>} arr + * @param {number=} fromIndex + * @return {number} + * @nosideeffects + */ +$.inArray = function(value, arr, fromIndex) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)=} arg1 + * @return {number} + */ +jQuery.prototype.index = function(arg1) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.innerHeight = function() {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.innerWidth = function() {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.insertAfter = function(target) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.insertBefore = function(target) {}; + +/** + * @param {(jQuerySelector|function(number)|jQuery|Element)} arg1 + * @return {boolean} + */ +jQuery.prototype.is = function(arg1) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isArray = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isArray = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isEmptyObject = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +$.isEmptyObject = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isFunction = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isFunction = function(obj) {}; + +/** + * @param {*} value + * @return {boolean} + * @nosideeffects + */ +jQuery.isNumeric = function(value) {}; + +/** + * @param {*} value + * @return {boolean} + * @nosideeffects + */ +$.isNumeric = function(value) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isPlainObject = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +$.isPlainObject = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isWindow = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isWindow = function(obj) {}; + +/** + * @param {Element} node + * @return {boolean} + * @nosideeffects + */ +jQuery.isXMLDoc = function(node) {}; + +/** + * @param {Element} node + * @return {boolean} + * @nosideeffects + */ +$.isXMLDoc = function(node) {}; + +/** @type {string} */ +jQuery.prototype.jquery; + +/** + * @constructor + * @extends {XMLHttpRequest} + * @implements {jQuery.Promise} + * @private + * @see http://api.jquery.com/jQuery.ajax/#jqXHR + */ +jQuery.jqXHR = function () {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.complete = function (callback) {}; + +/** + * @override + * @param {function()} doneCallbacks + * @return {jQuery.Promise} + */ +jQuery.jqXHR.prototype.done = function(doneCallbacks) {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.error = function (callback) {}; + +/** + * @override + * @param {function()} failCallbacks + * @return {jQuery.Promise} + */ +jQuery.jqXHR.prototype.fail = function(failCallbacks) {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.jqXHR.prototype.isRejected = function() {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.jqXHR.prototype.isResolved = function() {}; + +/** + * @deprecated + * @override + */ +jQuery.jqXHR.prototype.onreadystatechange = function (callback) {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.success = function (callback) {}; + +/** + * @override + * @param {function()} doneCallbacks + * @param {function()} failCallbacks + * @return {jQuery.Promise} + */ +jQuery.jqXHR.prototype.then = function(doneCallbacks, failCallbacks) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keydown = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keypress = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keyup = function(arg1, handler) {}; + +/** @return {!jQuery} */ +jQuery.prototype.last = function() {}; + +/** @type {number} */ +jQuery.prototype.length; + +/** + * @deprecated + * @param {(string|Object)} arg1 + * @param {(function(!jQuery.event=)|Object)=} arg2 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.live = function(arg1, arg2, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.|string)} arg1 + * @param {(function(!jQuery.event=)|Object.|string)=} arg2 + * @param {function(string,string,XMLHttpRequest)=} complete + * @return {!jQuery} + */ +jQuery.prototype.load = function(arg1, arg2, complete) {}; + +/** + * @param {*} obj + * @return {Array.<*>} + */ +jQuery.makeArray = function(obj) {}; + +/** + * @param {*} obj + * @return {Array.<*>} + */ +$.makeArray = function(obj) {}; + +/** + * @param {(Array.<*>|Object.)} arg1 + * @param {(function(*,number)|function(*,(string|number)))} callback + * @return {Array.<*>} + */ +jQuery.map = function(arg1, callback) {}; + +/** + * @param {function(number,Element)} callback + * @return {!jQuery} + */ +jQuery.prototype.map = function(callback) {}; + +/** + * @param {(Array.<*>|Object.)} arg1 + * @param {(function(*,number)|function(*,(string|number)))} callback + * @return {Array.<*>} + */ +$.map = function(arg1, callback) {}; + +/** + * @param {Array.<*>} first + * @param {Array.<*>} second + * @return {Array.<*>} + */ +jQuery.merge = function(first, second) {}; + +/** + * @param {Array.<*>} first + * @param {Array.<*>} second + * @return {Array.<*>} + */ +$.merge = function(first, second) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mousedown = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseenter = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseleave = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mousemove = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseout = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseover = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseup = function(arg1, handler) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.next = function(selector) {}; + +/** + * @param {string=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.nextAll = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.nextUntil = function(arg1, filter) {}; + +/** + * @param {boolean=} removeAll + * @return {Object} + */ +jQuery.noConflict = function(removeAll) {}; + +/** + * @param {boolean=} removeAll + * @return {Object} + */ +$.noConflict = function(removeAll) {}; + +/** + * @return {function()} + * @nosideeffects + */ +jQuery.noop = function() {}; + +/** + * @return {function()} + * @nosideeffects + */ +$.noop = function() {}; + +/** + * @param {(jQuerySelector|Array.|function(number)|jQuery)} arg1 + * @return {!jQuery} + */ +jQuery.prototype.not = function(arg1) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.now = function() {}; + +/** + * @return {number} + * @nosideeffects + */ +$.now = function() {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|function(!jQuery.event=))=} selector + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.off = function(arg1, selector, handler) {}; + +/** + * @param {({left:number,top:number}| + * function(number,{top:number,left:number}))=} arg1 + * @return {({left:number,top:number}|!jQuery)} + */ +jQuery.prototype.offset = function(arg1) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.offsetParent = function() {}; + +/** + * @param {(string|Object.)} arg1 + * @param {*=} selector + * @param {*=} data + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.on = function(arg1, selector, data, handler) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {*=} arg2 + * @param {*=} arg3 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.one = function(arg1, arg2, arg3, handler) {}; + +/** + * @param {boolean=} includeMargin + * @return {number} + * @nosideeffects + */ +jQuery.prototype.outerHeight = function(includeMargin) {}; + +/** + * @param {boolean=} includeMargin + * @return {number} + * @nosideeffects + */ +jQuery.prototype.outerWidth = function(includeMargin) {}; + +/** + * @param {(Object.|Array.>)} obj + * @param {boolean=} traditional + * @return {string} + */ +jQuery.param = function(obj, traditional) {}; + +/** + * @param {(Object.|Array.>)} obj + * @param {boolean=} traditional + * @return {string} + */ +$.param = function(obj, traditional) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parent = function(selector) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parents = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parentsUntil = function(arg1, filter) {}; + +/** + * @param {string} json + * @return {Object.} + */ +jQuery.parseJSON = function(json) {}; + +/** + * @param {string} json + * @return {Object.} + */ +$.parseJSON = function(json) {}; + +/** + * @param {string} data + * @return {Document} + */ +jQuery.parseXML = function(data) {}; + +/** + * @param {string} data + * @return {Document} + */ +$.parseXML = function(data) {}; + +/** + * @return {{left:number,top:number}} + * @nosideeffects + */ +jQuery.prototype.position = function() {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +jQuery.post = function(url, data, success, dataType) {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +$.post = function(url, data, success, dataType) {}; + +/** + * @param {(string|Element|jQuery|function(number,string))} arg1 + * @param {(string|Element|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.prepend = function(arg1, content) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.prependTo = function(target) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prev = function(selector) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prevAll = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prevUntil = function(arg1, filter) {}; + +/** + * @param {(string|Object)=} type + * @param {Object=} target + * @return {jQuery.Promise} + */ +jQuery.prototype.promise = function(type, target) {}; + +/** + * @interface + * @private + * @see http://api.jquery.com/Types/#Promise + */ +jQuery.Promise = function () {}; + +/** + * @param {function()} doneCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.done = function(doneCallbacks) {}; + +/** + * @param {function()} failCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.fail = function(failCallbacks) {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.Promise.prototype.isRejected = function() {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.Promise.prototype.isResolved = function() {}; + +/** + * @param {function()} doneCallbacks + * @param {function()} failCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.then = function(doneCallbacks, failCallbacks) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|boolean|function(number,String))=} arg2 + * @return {(string|!jQuery)} + */ +jQuery.prototype.prop = function(arg1, arg2) {}; + +/** + * @param {...*} var_args + * @return {function()} + */ +jQuery.proxy = function(var_args) {}; + +/** + * @param {...*} var_args + * @return {function()} + */ +$.proxy = function(var_args) {}; + +/** + * @param {Array.} elements + * @param {string=} name + * @param {Array.<*>=} args + * @return {!jQuery} + */ +jQuery.prototype.pushStack = function(elements, name, args) {}; + +/** + * @param {(string|Array.|function(function()))=} queueName + * @param {(Array.|function(function()))=} arg2 + * @return {(Array.|!jQuery)} + */ +jQuery.prototype.queue = function(queueName, arg2) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + * @param {(Array.|function())=} arg3 + * @return {(Array.|!jQuery)} + */ +jQuery.queue = function(elem, queueName, arg3) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + * @param {(Array.|function())=} arg3 + * @return {(Array.|!jQuery)} + */ +$.queue = function(elem, queueName, arg3) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ready = function(handler) {}; + +/** + * @param {string=} selector + * @return {!jQuery} + */ +jQuery.prototype.remove = function(selector) {}; + +/** + * @param {string} attributeName + * @return {!jQuery} + */ +jQuery.prototype.removeAttr = function(attributeName) {}; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {!jQuery} + */ +jQuery.prototype.removeClass = function(arg1) {}; + +/** + * @param {(string|Array.)=} arg1 + * @return {!jQuery} + */ +jQuery.prototype.removeData = function(arg1) {}; + +/** + * @param {Element} elem + * @param {string=} name + * @return {!jQuery} + */ +jQuery.removeData = function(elem, name) {}; + +/** + * @param {Element} elem + * @param {string=} name + * @return {!jQuery} + */ +$.removeData = function(elem, name) {}; + +/** + * @param {string} propertyName + * @return {!jQuery} + */ +jQuery.prototype.removeProp = function(propertyName) {}; + +/** + * @param {jQuerySelector} target + * @return {!jQuery} + */ +jQuery.prototype.replaceAll = function(target) {}; + +/** + * @param {(string|Element|jQuery|function())} arg1 + * @return {!jQuery} + */ +jQuery.prototype.replaceWith = function(arg1) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.resize = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.scroll = function(arg1, handler) {}; + +/** + * @param {number=} value + * @return {(number|!jQuery)} + */ +jQuery.prototype.scrollLeft = function(value) {}; + +/** + * @param {number=} value + * @return {(number|!jQuery)} + */ +jQuery.prototype.scrollTop = function(value) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.select = function(arg1, handler) {}; + +/** + * @return {string} + * @nosideeffects + */ +jQuery.prototype.serialize = function() {}; + +/** + * @return {Array.>} + * @nosideeffects + */ +jQuery.prototype.serializeArray = function() {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.show = function(duration, arg2, callback) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.siblings = function(selector) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.size = function() {}; + +/** + * @param {number} start + * @param {number=} end + * @return {!jQuery} + */ +jQuery.prototype.slice = function(start, end) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.slideDown = function(duration, arg2, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.slideToggle = function(duration, arg2, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.slideUp = function(duration, arg2, callback) {}; + +/** + * @param {(boolean|string)=} arg1 + * @param {boolean=} arg2 + * @param {boolean=} jumpToEnd + * @return {!jQuery} + */ +jQuery.prototype.stop = function(arg1, arg2, jumpToEnd) {}; + +/** + * @deprecated + * @return {!jQuery} + * @nosideeffects + */ +jQuery.sub = function() {}; + +/** + * @deprecated + * @return {!jQuery} + * @nosideeffects + */ +$.sub = function() {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.submit = function(arg1, handler) {}; + +/** @type {Object.} */ +jQuery.support; + +/** @type {Object.} */ +$.support; + +/** @type {boolean} */ +jQuery.support.boxModel; + +/** @type {boolean} */ +$.support.boxModel; + +/** @type {boolean} */ +jQuery.support.changeBubbles; + +/** @type {boolean} */ +$.support.changeBubbles; + +/** @type {boolean} */ +jQuery.support.cssFloat; + +/** @type {boolean} */ +$.support.cssFloat; + +/** @type {boolean} */ +jQuery.support.fixedPosition; + +/** @type {boolean} */ +$.support.fixedPosition; + +/** @type {boolean} */ +jQuery.support.hrefNormalized; + +/** @type {boolean} */ +$.support.hrefNormalized; + +/** @type {boolean} */ +jQuery.support.htmlSerialize; + +/** @type {boolean} */ +$.support.htmlSerialize; + +/** @type {boolean} */ +jQuery.support.leadingWhitespace; + +/** @type {boolean} */ +$.support.leadingWhitespace; + +/** @type {boolean} */ +jQuery.support.noCloneEvent; + +/** @type {boolean} */ +$.support.noCloneEvent; + +/** @type {boolean} */ +jQuery.support.opacity; + +/** @type {boolean} */ +$.support.opacity; + +/** @type {boolean} */ +jQuery.support.scriptEval; + +/** @type {boolean} */ +$.support.scriptEval; + +/** @type {boolean} */ +jQuery.support.style; + +/** @type {boolean} */ +$.support.style; + +/** @type {boolean} */ +jQuery.support.submitBubbles; + +/** @type {boolean} */ +$.support.submitBubbles; + +/** @type {boolean} */ +jQuery.support.tbody; + +/** @type {boolean} */ +$.support.tbody; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {(string|!jQuery)} + */ +jQuery.prototype.text = function(arg1) {}; + +/** + * @return {Array.} + * @nosideeffects + */ +jQuery.prototype.toArray = function() {}; + +/** + * @param {(function(!jQuery.event=)|string|number|function()|boolean)=} arg1 + * @param {(function(!jQuery.event=)|function()|string)=} arg2 + * @param {(function(!jQuery.event=)|function())=} arg3 + * @return {!jQuery} + */ +jQuery.prototype.toggle = function(arg1, arg2, arg3) {}; + +/** + * @param {(string|boolean|function(number,string,boolean))=} arg1 + * @param {boolean=} flag + * @return {!jQuery} + */ +jQuery.prototype.toggleClass = function(arg1, flag) {}; + +/** + * @param {(string|jQuery.event)} arg1 + * @param {...*} var_args + * @return {!jQuery} + */ +jQuery.prototype.trigger = function(arg1, var_args) {}; + +/** + * @param {string} eventType + * @param {Array.<*>=} extraParameters + * @return {*} + */ +jQuery.prototype.triggerHandler = function(eventType, extraParameters) {}; + +/** + * @param {string} str + * @return {string} + * @nosideeffects + */ +jQuery.trim = function(str) {}; + +/** + * @param {string} str + * @return {string} + * @nosideeffects + */ +$.trim = function(str) {}; + +/** + * @param {*} obj + * @return {string} + * @nosideeffects + */ +jQuery.type = function(obj) {}; + +/** + * @param {*} obj + * @return {string} + * @nosideeffects + */ +$.type = function(obj) {}; + +/** + * @param {(string|function(!jQuery.event=)|jQuery.event)=} arg1 + * @param {(function(!jQuery.event=)|boolean)=} arg2 + * @return {!jQuery} + */ +jQuery.prototype.unbind = function(arg1, arg2) {}; + +/** + * @param {string=} arg1 + * @param {(string|Object.)=} arg2 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.undelegate = function(arg1, arg2, handler) {}; + +/** + * @param {Array.} arr + * @return {Array.} + */ +jQuery.unique = function(arr) {}; + +/** + * @param {Array.} arr + * @return {Array.} + */ +$.unique = function(arr) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.unload = function(arg1, handler) {}; + +/** @return {!jQuery} */ +jQuery.prototype.unwrap = function() {}; + +/** + * @param {(string|Array.|function(number,*))=} arg1 + * @return {(string|number|Array.|!jQuery)} + */ +jQuery.prototype.val = function(arg1) {}; + +/** + * @param {jQuery.deferred} deferred + * @param {...jQuery.deferred} deferreds + * @return {jQuery.Promise} + */ +jQuery.when = function(deferred, deferreds) {}; + +/** + * @param {jQuery.deferred} deferred + * @param {...jQuery.deferred} deferreds + * @return {jQuery.Promise} + */ +$.when = function(deferred, deferreds) {}; + +/** + * @param {(string|number|function(number,number))=} arg1 + * @return {(number|!jQuery)} + */ +jQuery.prototype.width = function(arg1) {}; + +/** + * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.wrap = function(arg1) {}; + +/** + * @param {(string|jQuerySelector|Element|jQuery)} wrappingElement + * @return {!jQuery} + */ +jQuery.prototype.wrapAll = function(wrappingElement) {}; + +/** + * @param {(string|function(number))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.wrapInner = function(arg1) {}; diff --git a/web/main.css b/web/main.css new file mode 100644 index 00000000..9fbfc6ed --- /dev/null +++ b/web/main.css @@ -0,0 +1,217 @@ +body { + background: #444; + color: #ddd; + margin: 0; + font-family: sans-serif; + font-size: 12pt; +} + +h1 { + color: #dfd; + margin-left: 40px; + margin-bottom: 5px; +} + +h4 { + margin-left: 20px; + margin-bottom: 5px; +} +select { + margin-left: 10px; + background: #000; + color: #dde; + border: 1px solid #889; + width: 20em; +} +select option { + background: #000; + color: #dde; +} +input[type='text'] { + margin-left: 10px; + background: #003; + color: #dde; + border: 1px solid #88a; +} +input[type='checkbox'] { + margin-left: 10px; +} +input[type='radio'] { + margin-left: 10px; +} +button { + border: 1px solid #004; + background: #889; + font-weight: bold; + margin-left: 10px; + display: block; +} +button[disabled=true] { + color: #888; +} +div.dropbg { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + background: #004; + opacity: 0.6; + z-index: 1000; +} +div.dropbg.hover { + background: #008; +} +div.dropmsg { + position: fixed; + width: 100%; + height: 100%; + top: 40%; + left: 0px; + color: #ccd; + font-weight: bold; + text-align: center; + vertical-align: middle; + font-size: 24pt; + z-index: 1001; +} +div.dropmsg div { + color: #caa; + font-weight: bold; + text-decoration: none; + font-size: 12pt; +} +div.dropbox { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + z-index: 1002; +} +div.dialogbg { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + background: #404; + opacity: 0.6; + z-index: 1000; +} +div.dialog { + position: fixed; + width: 50%; + top: 25%; + left: 25%; + background: #444; + border: 1px solid #222; + border-radius: 10px; + color: #eee; + z-index: 1001; +} +div.dialog div.buttons { + border-top: 1px solid #222; + padding-right: 10px; + background: #888; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; +} +div.dialog div.buttons button { + float: right; +} +div.dialog dl { + margin-left: 10px; +} +div.picker { + position: absolute; + width: 420px; + z-index: 100000; + background: #222; + border: 1px solid #eef; +} +div.picker canvas { + margin: 5px; +} +div.swatch { + width: 80px; + height: 40px; + margin-top: 20px; + margin-left: 10px; + margin-bottom: 20px; + border: 1px solid #eef; + background: #000; + float: left +} +input.hexcolor { + float: left; + width: 80px; + margin-top: 30px; + font-family: monospace; +} +div.colorlabel { + width: 30px; + float: left; + clear: left; + margin-top: 2px; + text-align: right; +} +input.colorinput { + width: 40px; + float: left; + margin-left: 5px; + font-family: monospace; +} +table { + margin-left: 10px; +} +th { + text-align: right; + font-weight: normal; +} +td + td { + color: #cac; +} +tr.variant td { + font-size: 0.8em; + text-align: right; +} +tr.variant td + td { + text-align: left; + color: #aac; +} +a { + text-decoration: none; + color: #aac; + font-weight: bold; +} +div.buttonbar { + width: 50%; + background: #668; + border: 1px solid #444; + z-index: 100; + position: relative; + top: 0; + left: 0; +} +div.color { + width: 20px; + height: 20px; + background: #000; + border: 1px solid #eee; +} +div.droptarget { + background: #222; + border: 1px solid #aac; + padding: 10px; + margin: 10px; + color: #aac; + text-align: center; +} +div.droptarget.active { + background: #228; +} +label.checked { + font-weight: bold; + color: #ece; +} diff --git a/web/mods.js b/web/mods.js new file mode 100644 index 00000000..8f463048 --- /dev/null +++ b/web/mods.js @@ -0,0 +1,1002 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/** + * @constructor + * @param {Function} updatecb + * @param {Display} display + */ +function Mods(updatecb,display) +{ + /** @type {Object.} */ + var mods={}; + this.mods=mods; + /** @type {Array.} */ + var packs=[]; + this.packs=packs; + /** @type {Object.} */ + var locals={} + this.locals=locals; + /** @type {Array.} */ + var localPacks=[]; + this.localPacks=localPacks; + + /** @type {number} */ + var loading=1; + + $.getJSON("mods/mods.json",function(m) { + loading+=m.length; + for (var i=0;i0) + { + mod['configs']=[]; + for (var i=0;ibuttonTop) + buttons.css({'position':'fixed'}); + else + buttons.css({'position':'relative'}); + }); + + + function makeBlockData() + { + var tbl=[]; + for (var i=0;i>16)+','+((curC>>8)&0xff)+','+(curC&0xff)+')'); + color.click(function(){ + pickColor(color,curC,function(c){ + curC=c; + color.css('background','rgb('+(c>>16)+','+((c>>8)&0xff)+','+(c&0xff)+')'); + }); + }); + var alp=100; + if (idx!=-1) + { + if (mod['data'][idx]['color']===undefined) + alp=0; + else if (mod['data'][idx]['alpha']!==undefined) + alp=Math.round(100*mod['data'][idx]['alpha']); + } + var alpha=display.toDOM({'input':null,'type':'text','size':'4', + 'val':String(alp)}); + var flags=[ + display.toDOM({'input':null,'type':'checkbox','val':1}), + display.toDOM({'input':null,'type':'checkbox','val':2}), + display.toDOM({'input':null,'type':'checkbox','val':4}) + ]; + if (idx!=-1) + for (var i=0;i>16)+','+((curC>>8)&0xff)+','+(curC&0xff)+')'}}); + color.click(function(){ + pickColor(color,curC,function(c){ + curC=c; + color.css('background','rgb('+(c>>16)+','+((c>>8)&0xff)+','+(c&0xff)+')'); + }); + }); + dialog.draw([ + {'dl':[ + {'dt':'Damage:'}, + {'dd':dtxt}, + {'dt':'Name:'}, + {'dd':nmtxt}, + {'dt':'Color:'}, + {'dd':color} + ]} + ]); + dtxt.focus(); + function editResponse(btnidx) + { + if (btnidx==0) //save + { + if ($.isNumeric(dtxt.val())) + { + if (mod['data'][idx]['variants']===undefined) + mod['data'][idx]['variants']=[]; + if (v==-1) + { + v=mod['data'][idx]['variants'].length; + mod['data'][idx]['variants'][v]={}; + } + mod['data'][idx]['variants'][v]['data']=parseInt(dtxt.val(),10); + var nm=nmtxt.val().trim(); + if (nm!==mod['data'][idx]['name'] && nm!='') + mod['data'][idx]['variants'][v]['name']=nm; + else + delete mod['data'][idx]['variants'][v]['name']; + var c=curC.toString(16); + while (c.length<6) + c='0'+c; + if (mod['data'][idx]['color']==undefined || + c!==mod['data'][idx]['color']) + mod['data'][idx]['variants'][v]['color']=c; + else + delete mod['data'][idx]['variants'][v]['color']; + sortMod(); + refresh(); + } + } + } + } + function deleteVariant(idx,v) + { + if (confirm("Are you sure you wish to delete this variant?")) + { + mod['data'][idx]['variants'].splice(v,1); + if (mod['data'][idx]['variants'].length==0) + delete mod['data'][idx]['variants']; + refresh(); + } + } + function makeBiomeData() + { + var tbl=[]; + for (var i=0;ib['config']?1:-1; + }); + for (var i=0;ibuttonTop) + buttons.css({'position':'fixed'}); + else + buttons.css({'position':'relative'}); + }); + + var allmods; + function makePackData() + { + var tbl=[]; + allmods=[]; + for (var m in mods) + allmods.push({'type':'pre','id':m,'checked':false}); + for (var m in locals) + allmods.push({'type':'local','id':m,'checked':false}); + allmods.sort(function(a,b) { + if (a['type']==b['type']) + { + if (a['id']==b['id']) + return 0; + return a['id']>b['id']?1:-1; + } + return a['type']=='pre'?1:-1; + }); + for (var i=0;i} files + * @returns {Uint8Array} + */ +function Zip(files) +{ + var crctable=[]; + for (var i=0;i<256;i++) + { + var c=i; + for (var j=0;j<8;j++) + if (c&1) + c=(c>>>1)^0xedb88320; + else + c=(c>>>1); + crctable[i]=c; + } + function crc32(msg) + { + var c=-1; + for (var i=0;i>>8)^crctable[(c^msg.charCodeAt(i))&0xff]; + return ~c; + } + + var date=new Date(); + var dosdate=((date.getFullYear()-1980)<<9)|((date.getMonth()+1)<<5)|date.getDate(); + var crcs=[]; + var data=[]; + + var offset=0; + //local files + for (var i=0;i>8)&0xff; + //crc32 + crcs[i]=crc32(files[i].file); + data[offset++]=crcs[i]&0xff; data[offset++]=(crcs[i]>>8)&0xff; + data[offset++]=(crcs[i]>>16)&0xff; data[offset++]=(crcs[i]>>24)&0xff; + //compressed size + var size=files[i].file.length; + data[offset++]=size&0xff; data[offset++]=(size>>8)&0xff; + data[offset++]=(size>>16)&0xff; data[offset++]=(size>>24)&0xff; + //uncompressed size + data[offset++]=size&0xff; data[offset++]=(size>>8)&0xff; + data[offset++]=(size>>16)&0xff; data[offset++]=(size>>24)&0xff; + //file name length + data[offset++]=files[i].name.length; data[offset++]=0; + //extra field length + data[offset++]=0; data[offset++]=0; + //file name + for (var j=0;j>8)&0xff; + //crc-32 + data[offset++]=crcs[i]&0xff; data[offset++]=(crcs[i]>>8)&0xff; + data[offset++]=(crcs[i]>>16)&0xff; data[offset++]=(crcs[i]>>24)&0xff; + //compressed size + var size=files[i].file.length; + data[offset++]=size&0xff; data[offset++]=(size>>8)&0xff; + data[offset++]=(size>>16)&0xff; data[offset++]=(size>>24)&0xff; + //uncompressed size + data[offset++]=size&0xff; data[offset++]=(size>>8)&0xff; + data[offset++]=(size>>16)&0xff; data[offset++]=(size>>24)&0xff; + //file name length + data[offset++]=files[i].name.length; data[offset++]=0; + //extra field length + data[offset++]=0; data[offset++]=0; + //file comment length + data[offset++]=0; data[offset++]=0; + //disk number start + data[offset++]=0; data[offset++]=0; + //internal file attributes + data[offset++]=0; data[offset++]=0; + //external file attributes + data[offset++]=0; data[offset++]=0; + data[offset++]=0; data[offset++]=0; + //relative offset of local header + var ofs=files[i].offset; + data[offset++]=ofs&0xff; data[offset++]=(ofs>>8)&0xff; + data[offset++]=(ofs>>16)&0xff; data[offset++]=(ofs>>24)&0xff; + //filename + for (var j=0;j>8)&0xff; + //number of entries on all disks + data[offset++]=num&0xff; data[offset++]=(num>>8)&0xff; + //size of central directory + data[offset++]=cdlen&0xff; data[offset++]=(cdlen>>8)&0xff; + data[offset++]=(cdlen>>16)&0xff; data[offset++]=(cdlen>>24)&0xff; + //central directory start offset + data[offset++]=cdstart&0xff; data[offset++]=(cdstart>>8)&0xff; + data[offset++]=(cdstart>>16)&0xff; data[offset++]=(cdstart>>24)&0xff; + //comment length + data[offset++]=0; data[offset++]=0; + //zip comment is blank + + return new Uint8Array(data); +} diff --git a/MinutorMap/zconf.h b/zconf.h similarity index 73% rename from MinutorMap/zconf.h rename to zconf.h index 02ce56c4..8a46a58b 100644 --- a/MinutorMap/zconf.h +++ b/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2010 Jean-loup Gailly. + * Copyright (C) 1995-2012 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -15,6 +15,7 @@ * this permanently in zconf.h using "./configure --zprefix". */ #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET /* all linked symbols */ # define _dist_code z__dist_code @@ -27,9 +28,11 @@ # define adler32 z_adler32 # define adler32_combine z_adler32_combine # define adler32_combine64 z_adler32_combine64 -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 @@ -40,44 +43,52 @@ # define deflateInit2_ z_deflateInit2_ # define deflateInit_ z_deflateInit_ # define deflateParams z_deflateParams +# define deflatePending z_deflatePending # define deflatePrime z_deflatePrime # define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# define gzprintf z_gzprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif # define inflate z_inflate # define inflateBack z_inflateBack # define inflateBackEnd z_inflateBackEnd @@ -95,13 +106,18 @@ # define inflateSync z_inflateSync # define inflateSyncPoint z_inflateSyncPoint # define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table -# define uncompress z_uncompress +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif # define zError z_zError -# define zcalloc z_zcalloc -# define zcfree z_zcfree +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif # define zlibCompileFlags z_zlibCompileFlags # define zlibVersion z_zlibVersion @@ -111,7 +127,9 @@ # define alloc_func z_alloc_func # define charf z_charf # define free_func z_free_func -# define gzFile z_gzFile +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif # define gz_header z_gz_header # define gz_headerp z_gz_headerp # define in_func z_in_func @@ -197,6 +215,12 @@ # endif #endif +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + /* Some Mac compilers merge all .h files incorrectly: */ #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) # define NO_DUMMY_DECL @@ -243,6 +267,14 @@ # endif #endif +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have @@ -356,12 +388,45 @@ typedef uLong FAR uLongf; typedef Byte *voidp; #endif +/* ./configure may #define Z_U4 here */ + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# else +# if (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# else +# if (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +# endif +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + #ifdef STDC -# include /* for off_t */ +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#ifdef _WIN32 +# include /* for wchar_t */ #endif /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and @@ -370,21 +435,38 @@ typedef uLong FAR uLongf; * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as * equivalently requesting no 64-bit operations */ -#if -_LARGEFILE64_SOURCE - -1 == 1 +#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 # undef _LARGEFILE64_SOURCE #endif -#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_* and off_t */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif # endif #endif -#ifndef SEEK_SET +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ @@ -394,18 +476,14 @@ typedef uLong FAR uLongf; # define z_off_t long #endif -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t #else -# define z_off64_t z_off_t -#endif - -#if defined(__OS400__) -# define NO_vsnprintf -#endif - -#if defined(__MVS__) -# define NO_vsnprintf +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/zipreader.cpp b/zipreader.cpp new file mode 100644 index 00000000..d861baf8 --- /dev/null +++ b/zipreader.cpp @@ -0,0 +1,145 @@ +/* + Copyright (c) 2013, Sean Kasun + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "zipreader.h" +#include "zlib.h" + +ZipReader::ZipReader(const QString filename) : f(filename) +{ +} + +bool ZipReader::open() +{ + if (!f.open(QIODevice::ReadOnly)) + return false; + + //locate end of central directory record + qint64 ziplen=f.size(); + qint64 maxECDlen=0xffff+22; //max comment len + ECD + if (maxECDlen>ziplen) //zip is shorter? + maxECDlen=ziplen; + + f.seek(ziplen-maxECDlen); //ECD must be after this + + QByteArray data=f.read(maxECDlen); + const quint8 *p=(const quint8 *)data.constData(); + + bool found=false; + //now scan this data for the ECD signature + for (qint64 i=0;i +#include +#include +#include + +struct ZipFileHeader +{ + qint32 compressed,uncompressed; + qint16 compression; + qint64 offset; +}; + +class ZipReader +{ +public: + ZipReader(const QString filename); + bool open(); + void close(); + QByteArray get(const QString filename); +private: + QFile f; + QHash files; +}; + +#endif diff --git a/MinutorMap/zlib.h b/zlib.h similarity index 85% rename from MinutorMap/zlib.h rename to zlib.h index bfbba83e..3edf3acd 100644 --- a/MinutorMap/zlib.h +++ b/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.5, April 19th, 2010 + version 1.2.7, May 2nd, 2012 - Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,8 +24,8 @@ The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H @@ -37,11 +37,11 @@ extern "C" { #endif -#define ZLIB_VERSION "1.2.5" -#define ZLIB_VERNUM 0x1250 +#define ZLIB_VERSION "1.2.7" +#define ZLIB_VERNUM 0x1270 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 5 +#define ZLIB_VER_REVISION 7 #define ZLIB_VER_SUBREVISION 0 /* @@ -83,15 +83,15 @@ typedef void (*free_func) OF((voidpf opaque, voidpf address)); struct internal_state; typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ + z_const Bytef *next_in; /* next input byte */ uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ + uLong total_in; /* total number of input bytes read so far */ Bytef *next_out; /* next output byte should be put there */ uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ + uLong total_out; /* total number of bytes output so far */ - char *msg; /* last error message, NULL if no error */ + z_const char *msg; /* last error message, NULL if no error */ struct internal_state FAR *state; /* not visible by applications */ alloc_func zalloc; /* used to allocate the internal state */ @@ -327,8 +327,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); Z_FINISH can be used immediately after deflateInit if all the compression is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). If deflate does not return - Z_STREAM_END, then it must be called again as described above. + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. deflate() sets strm->adler to the adler32 checksum of all input read so far (that is, total_in bytes). @@ -451,23 +452,29 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); error. However if all decompression is to be performed in a single step (a single call of inflate), the parameter flush should be set to Z_FINISH. In this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all the uncompressed data. (The size - of the uncompressed data may have been saved by the compressor for this - purpose.) The next operation on this stream must be inflateEnd to deallocate - the decompression state. The use of Z_FINISH is never required, but can be - used to inform inflate that a faster approach may be used for the single - inflate() call. + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. In this implementation, inflate() always flushes as much output as possible to the output buffer, and always uses the faster approach on the - first call. So the only effect of the flush parameter in this implementation - is on the return value of inflate(), as noted below, or when it returns early - because Z_BLOCK or Z_TREES is used. + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the adler32 checksum of the dictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the adler32 checksum of all output produced so far (that is, + strm->adler to the Adler-32 checksum of all output produced so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described below. At the end of the stream, inflate() checks that its computed adler32 checksum is equal to that saved by the compressor and returns Z_STREAM_END @@ -478,7 +485,9 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); initializing with inflateInit2(). Any information contained in the gzip header is not retained, so applications that need that information should instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. inflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if the end of the compressed data has @@ -580,10 +589,15 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, uInt dictLength)); /* Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit, deflateInit2 or deflateReset, before any call - of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly @@ -610,8 +624,8 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, @@ -688,8 +702,28 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, deflation of sourceLen bytes. It must be called after deflateInit() or deflateInit2(), and after deflateSetHeader(), if used. This would be used to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). -*/ + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, int bits, @@ -703,8 +737,9 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, than or equal to 16, and that many of the least significant bits of value will be inserted in the output. - deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. */ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, @@ -790,10 +825,11 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, if that call returned Z_NEED_DICT. The dictionary chosen by the compressor can be determined from the adler32 value returned by that call of inflate. The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called - immediately after inflateInit2() or inflateReset() and before any call of - inflate() to set the dictionary. The application must insure that the - dictionary that was used for compression is provided. + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is @@ -805,17 +841,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); /* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all available input is skipped. No output is provided. - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been - found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the - success case, the application may save the current current value of total_in - which indicates where valid compressed data was found. In the error case, - the application may repeatedly call inflateSync, providing more input each - time, until success or end of the input data. + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. */ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, @@ -962,7 +1002,7 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, See inflateBack() for the usage of these routines. inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the paramaters are invalid, Z_MEM_ERROR if the internal state could not be + the parameters are invalid, Z_MEM_ERROR if the internal state could not be allocated, or Z_VERSION_ERROR if the version of the library does not match the version of the header file. */ @@ -1088,6 +1128,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); 27-31: 0 (reserved) */ +#ifndef Z_SOLO /* utility functions */ @@ -1149,10 +1190,11 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. */ - /* gzip file access functions */ /* @@ -1162,7 +1204,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, wrapper, documented in RFC 1952, wrapped around a deflate stream. */ -typedef voidp gzFile; /* opaque gzip file descriptor */ +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ /* ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); @@ -1172,13 +1214,28 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) Also "a" - can be used instead of "w" to request that the gzip stream that will be - written be appended to the file. "+" will result in an error, since reading - and writing to the same gzip file is not supported. + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. gzopen returns NULL if the file could not be opened, if there was insufficient memory to allocate the gzFile state, or if an invalid mode was @@ -1197,7 +1254,11 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. gzdopen returns NULL if there was insufficient memory to allocate the gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not @@ -1235,14 +1296,26 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); /* Reads the given number of uncompressed bytes from the compressed file. If - the input file was not in gzip format, gzread copies the given number of - bytes into the buffer. + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream, or failing that, reading the rest - of the input file directly without decompression. The entire input file - will be read if gzread is called until it returns less than the requested - len. + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. @@ -1256,7 +1329,7 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, error. */ -ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); /* Converts, formats, and writes the arguments to the compressed file under control of the format string, as in fprintf. gzprintf returns the number of @@ -1301,7 +1374,10 @@ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); /* Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. */ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); @@ -1397,9 +1473,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file)); ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); /* Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. This state can change from - false to true while reading the input file if the end of a gzip stream is - reached, but is followed by data that is not another gzip stream. + (0) if file is a gzip stream being decompressed. If the input file is empty, gzdirect() will return true, since the input does not contain a gzip stream. @@ -1408,6 +1482,13 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); cause buffers to be allocated to allow reading the file to determine if it is a gzip file. Therefore if gzbuffer() is used, it should be called before gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) */ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); @@ -1419,7 +1500,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); must not be called more than once on the same allocation. gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, or Z_OK on success. + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. */ ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); @@ -1457,6 +1539,7 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); file that is being written concurrently. */ +#endif /* !Z_SOLO */ /* checksum functions */ @@ -1492,16 +1575,17 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. */ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); /* Update a running CRC-32 with the bytes buf[0..len-1] and return the updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the for the crc. Pre- and post-conditioning (one's - complement) is performed within this function so it shouldn't be done by the - application. + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. Usage example: @@ -1544,17 +1628,42 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, const char *version, int stream_size)); #define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) #define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) #define inflateBackInit(strm, windowBits, window) \ inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, sizeof(z_stream)) + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if @@ -1562,7 +1671,7 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, * functions are changed to 64 bits) -- in case these are set on systems * without large file support, _LFS64_LARGEFILE must also be true */ -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#ifdef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); @@ -1571,14 +1680,23 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); #endif -#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0 -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# ifdef _LARGEFILE64_SOURCE +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); @@ -1595,6 +1713,13 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); #endif +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + /* hack for buggy compilers */ #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) struct internal_state {int dummy;}; @@ -1603,8 +1728,14 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, /* undocumented functions */ ZEXTERN const char * ZEXPORT zError OF((int)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif #ifdef __cplusplus } diff --git a/zlibstat.lib b/zlibstat.lib new file mode 100644 index 0000000000000000000000000000000000000000..d814218c84c3b596969d940a45b0b1502a299833 GIT binary patch literal 57554 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 LGW9FFu2KFA$pDvF literal 0 HcmV?d00001