All pastes #359284 Raw Edit

Unnamed

public java v1 · immutable
·published 2007-02-16 18:19 UTC
rendered paste body
public boolean checkPoint(int x, int y, boolean[][] miniMap,			short[][][] colormap) {		int size = 1;		int r = colormap[x + MiniMap.minX][y + MiniMap.minY][0];		int g = colormap[x + MiniMap.minX][y + MiniMap.minY][1];		int b = colormap[x + MiniMap.minX][y + MiniMap.minY][2];		boolean run = true;		while (true) {			for (int xPos = 0; xPos < size; xPos++) {				int relX = x + MiniMap.minX + xPos;				int relY = y + MiniMap.minY + size;				if (!inMiniMap(miniMap, x + xPos, y + size)						|| colormap[relX][relY][0] != r						|| colormap[relX][relY][1] != g						|| colormap[relX][relY][2] != b) {					size--;					run = false;					break;				}			}			if (!run)				break;			for (int yPos = 0; yPos < size; yPos++) {				int relX = x + MiniMap.minX + size;				int relY = y + MiniMap.minY + yPos;				if (!inMiniMap(miniMap, x + size, y + yPos)						|| colormap[relX][relY][0] != r						|| colormap[relX][relY][1] != g						|| colormap[relX][relY][2] != b) {					size--;					run = false;					break;				}			}			if (!run)				break;			int relX = x + MiniMap.minX + size;			int relY = y + MiniMap.minY + size;			if (!inMiniMap(miniMap, x + size, y + size)					|| colormap[relX][relY][0] != r					|| colormap[relX][relY][1] != g					|| colormap[relX][relY][2] != b) {				size--;				run = false;				break;			}			size++;		}		for (int xPos = 0; xPos < size; xPos++) {			for (int yPos = 0; yPos < size; yPos++) {				int relX = x + xPos;				int relY = y + yPos;				miniMap[relX][relY] = false;			}		}		// tiles are 4x4's therefore size 3		return size == 3;	}	public boolean inMiniMap(boolean[][] miniMap, int x, int y) {		return x < miniMap.length && y < miniMap[x].length && miniMap[x][y];	}	public void countTiles() {		Timer time = new Timer(20000);		boolean[][] miniMap = new boolean[MiniMap.maxX - MiniMap.minX][MiniMap.maxY				- MiniMap.minY];		for (int x = 0; x < miniMap.length; x++) {			for (int y = 0; y < miniMap[x].length; y++) {				miniMap[x][y] = MiniMap.inMiniMap(x + MiniMap.minX, y						+ MiniMap.minY);			}		}		int count = 0;		short[][][] colorMap = getColorArray2d();		for (int x = 0; x < miniMap.length; x++) {			for (int y = 0; y < miniMap[x].length; y++) {				if (checkPoint(x, y, miniMap, colorMap)) {					count++;				}			}		}		log("count=" + count + " in " + time.timePassed());	}