class mapSquare { sqType type; int x,y; int h; mapSquare(int _x, int _y, sqType _type) { x=_x; y=_y; type=_type; h=0; } void draw() { noStroke(); /* if(!HEIGHTMAP) { if(hlID!=type.id) fill(type.c); else fill(255,0,255); } else { fill(64+(1.3*h),64+(1.3*h),64+(1.3*h)); } rect(x,y,1,1);*/ // fill(0); fill(type.c); // gl.glMaterialfv(GL.GL_FRONT_AND_BACK,GL.GL_AMBIENT,new float[]{red(type.c)/255.0,green(type.c)/255.0,blue(type.c)/255.0,1},0); // gl.glMaterialfv(GL.GL_FRONT_AND_BACK,GL.GL_DIFFUSE,new float[]{0.2,0.5,0.2,1},0); gl.glPushMatrix(); gl.glTranslatef(x,y,h/32.0); gl.glDrawArrays(GL.GL_TRIANGLES,0,f.capacity()/3); // mybox(1,1,h/16.0); gl.glPopMatrix(); // pg3.rect(x,y,1,1); /* beginShape(QUADS); vertex(x,y,0); vertex(x+1,y,0); vertex(x+1,y+1,0); vertex(x,y+1,0); endShape();*/ } void calcHeight() { if(type.name.indexOf("Hill")>=0) { h+=8; m.bump(x,y,3,6); } if(type.name.indexOf("Valley")>=0) { h-=8; m.bump(x,y,3,-6); } if(type.name.indexOf("Mountain")>=0) { h+=16; m.bump(x,y,5,16); } if(type.name.indexOf("Crag")>=0) { h+=8; m.bump(x,y,2,6); } if(type.name.indexOf("Outcrop")>=0) { h+=8; m.bump(x,y,3,6); } } int getHeight() { return h; } void modHeight(int diff) { // println("["+x+","+y+"] being bumped by "+diff); h+=diff; } String name() { return type.name; } } class map { mapSquare[][] data; int xoff,yoff; int w,h; map(int _w, int _h, int _xoff, int _yoff) { w=_w; h=_h; data=new mapSquare[w][h]; xoff=_xoff; yoff=_yoff; } void addSquare(int x, int y, int type) { data[x+xoff][y+yoff]=new mapSquare(x,y,tm.lookup(type)); } void draw() { int l=xoff+xp-zoom; int r=xoff+xp+zoom; int t=yoff+yp+zoom; int b=yoff+yp-zoom; for(int y=b;y=0 && x=0 && y=0 && tmpx=0 && tmpy=0 && i=0 && j