Moved the bits -> index reverse lookup from FringeConfiguration to

AutoFringer because our fringe tileset is hardcoded now.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1220 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2002-04-08 19:41:52 +00:00
parent 41185335c7
commit 94feee3436
2 changed files with 55 additions and 37 deletions
@@ -1,5 +1,5 @@
//
// $Id: AutoFringer.java,v 1.7 2002/04/08 18:41:58 ray Exp $
// $Id: AutoFringer.java,v 1.8 2002/04/08 19:41:52 ray Exp $
package com.threerings.miso.tile;
@@ -211,7 +211,7 @@ public class AutoFringer
*/
protected int[] getFringeIndexes (int bits)
{
int index = _fringeconf.getTileIndexFromFringeBits(bits);
int index = BITS_TO_INDEX[bits];
if (index != -1) {
int[] ret = new int[1];
ret[0] = index;
@@ -240,7 +240,7 @@ public class AutoFringer
if (((1 << ii) & bits) != 0) {
weebits |= (1 << ii);
} else if (weebits != 0) {
index = _fringeconf.getTileIndexFromFringeBits(weebits);
index = BITS_TO_INDEX[weebits];
if (index != -1) {
indexes.add(new Integer(index));
}
@@ -248,7 +248,7 @@ public class AutoFringer
}
}
if (weebits != 0) {
index = _fringeconf.getTileIndexFromFringeBits(weebits);
index = BITS_TO_INDEX[weebits];
if (index != -1) {
indexes.add(new Integer(index));
}
@@ -308,6 +308,56 @@ public class AutoFringer
{ NORTHWEST, (NORTHWEST | WEST | SOUTHWEST), SOUTHWEST }
};
/**
* The fringe tiles we use. These are the 17 possible tiles made
* up of continuous fringebits sections.
* Huh? see docs/miso/fringebits.png
*/
protected static final int[] FRINGETILES = {
SOUTHEAST,
SOUTHWEST | SOUTH | SOUTHEAST,
SOUTHWEST,
NORTHEAST | EAST | SOUTHEAST,
NORTHWEST | WEST | SOUTHWEST,
NORTHEAST,
NORTHWEST | NORTH | NORTHEAST,
NORTHWEST,
SOUTHWEST | WEST | NORTHWEST | NORTH | NORTHEAST,
NORTHWEST | NORTH | NORTHEAST | EAST | SOUTHEAST,
NORTHWEST | WEST | SOUTHWEST | SOUTH | SOUTHEAST,
SOUTHWEST | SOUTH | SOUTHEAST | EAST | NORTHEAST,
NORTHEAST | NORTH | NORTHWEST | WEST | SOUTHWEST | SOUTH | SOUTHEAST,
SOUTHEAST | EAST | NORTHEAST | NORTH | NORTHWEST | WEST | SOUTHWEST,
SOUTHWEST | SOUTH | SOUTHEAST | EAST | NORTHEAST | NORTH | NORTHWEST,
NORTHWEST | WEST | SOUTHWEST | SOUTH | SOUTHEAST | EAST | NORTHEAST,
// all the directions!
NORTH | NORTHEAST | EAST | SOUTHEAST |
SOUTH | SOUTHWEST | WEST | NORTHWEST
};
// A reverse map of the above array, for quickly looking up which tile
// we want.
protected static final int[] BITS_TO_INDEX;
// Construct the BITS_TO_INDEX array.
static {
int num = (1 << NUM_FRINGEBITS);
BITS_TO_INDEX = new int[num];
// first clear everything to -1 (meaning there is no tile defined)
for (int ii=0; ii < num; ii++) {
BITS_TO_INDEX[ii] = -1;
}
// then fill in with the defined tiles.
for (int ii=0; ii < FRINGETILES.length; ii++) {
BITS_TO_INDEX[FRINGETILES[ii]] = ii;
}
}
/** Our tile manager. */
protected TileManager _tmgr;
@@ -1,5 +1,5 @@
//
// $Id: FringeConfiguration.java,v 1.8 2002/04/06 20:50:30 ray Exp $
// $Id: FringeConfiguration.java,v 1.9 2002/04/08 19:41:52 ray Exp $
package com.threerings.miso.tile;
@@ -72,25 +72,6 @@ public class FringeConfiguration implements Serializable
_frecs.put(frec.base_tsid, frec);
}
/**
* During parsing we get an int[] representing the fringes we have
* defined.
*/
public void setTiles (int[] tiles)
{
// create an array of all possible tiles and set them all to invalid
_bits = new int[256];
for (int ii=0; ii < 256; ii++) {
_bits[ii] = -1;
}
// fill in the fringebit configurations we have tiles for with the
// index of the tiles
for (int ii=0; ii < tiles.length; ii++) {
_bits[tiles[ii]] = ii;
}
}
/**
* If the first base tileset fringes upon the second, return the
* fringe priority of the first base tileset, otherwise return -1.
@@ -118,16 +99,6 @@ public class FringeConfiguration implements Serializable
return -1;
}
/**
* Return the tile index of any fringing tileset that should be used
* if the following fringebits are turned on.
* @return -1 if not defined
*/
public int getTileIndexFromFringeBits (int bits)
{
return _bits[bits];
}
/**
* Get a random FringeTileSetRecord from amongst the ones
* listed for the specified base tileset.
@@ -142,7 +113,4 @@ public class FringeConfiguration implements Serializable
/** The mapping from base tileset id to fringerecord. */
protected HashIntMap _frecs = new HashIntMap();
/** An array that matches fringebits to fringe tile indexes. */
protected int[] _bits;
}