If we're not able to use Arrays.hashCode(), let's not add a whole separate
method and bloat up the code a bunch, let's just do the brief, inline thing we were doing in the first place. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@567 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
@@ -51,7 +51,6 @@ import com.threerings.miso.data.MisoSceneModel;
|
|||||||
*/
|
*/
|
||||||
public class AutoFringer
|
public class AutoFringer
|
||||||
{
|
{
|
||||||
|
|
||||||
public static class FringeTile extends BaseTile
|
public static class FringeTile extends BaseTile
|
||||||
{
|
{
|
||||||
public FringeTile (long[] fringeId, boolean passable)
|
public FringeTile (long[] fringeId, boolean passable)
|
||||||
@@ -73,32 +72,16 @@ public class AutoFringer
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
int result = arrayHashCode(_fringeId);
|
int result = 33; // can't use Arrays.hashCode(long) as it's 1.5 only
|
||||||
|
for (long key : _fringeId) {
|
||||||
|
result = result * 37 + (int)(key ^ (key >>> 32));
|
||||||
|
}
|
||||||
if (_passable) {
|
if (_passable) {
|
||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replaces Arrays.hashCode(long a[]) in AutoFringer.hashCode().
|
|
||||||
* Arrays.hashCode(long a[]) is undefined for Java 1.4, and this is client code.
|
|
||||||
*/
|
|
||||||
protected int arrayHashCode (long a[])
|
|
||||||
{
|
|
||||||
if (a == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int result = 1;
|
|
||||||
for (long element : a) {
|
|
||||||
int elementHash = (int)(element ^ (element >>> 32));
|
|
||||||
result = 31 * result + elementHash;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** The fringe keys of the tiles that went into this tile in the order they were drawn. */
|
/** The fringe keys of the tiles that went into this tile in the order they were drawn. */
|
||||||
protected long[] _fringeId;
|
protected long[] _fringeId;
|
||||||
}
|
}
|
||||||
@@ -171,7 +154,7 @@ public class AutoFringer
|
|||||||
BaseTile bt = (BaseTile)_tmgr.getTile(btid);
|
BaseTile bt = (BaseTile)_tmgr.getTile(btid);
|
||||||
passable = bt.isPassable();
|
passable = bt.isPassable();
|
||||||
} catch (NoSuchTileSetException nstse) {
|
} catch (NoSuchTileSetException nstse) {
|
||||||
log.warning("Autofringer couldn't find a base set while attempting to " +
|
log.warning("Autofringer couldn't find a base set while attempting to " +
|
||||||
"figure passability", nstse);
|
"figure passability", nstse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user