Added hasUnclaimedFeature() and modified setPiecen() to do the right thing
if a piecen is placed on a feature that is already claimed (which happens when someone shows up halfway through a game and we reconstruct the board state). git-svn-id: https://samskivert.googlecode.com/svn/trunk@383 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: AtlantiTile.java,v 1.9 2001/10/17 23:27:52 mdb Exp $
|
// $Id: AtlantiTile.java,v 1.10 2001/10/18 20:56:45 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.venison;
|
package com.threerings.venison;
|
||||||
|
|
||||||
@@ -86,6 +86,18 @@ public class VenisonTile
|
|||||||
// nothing doing
|
// nothing doing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if this tile has at leats one unclaimed feature.
|
||||||
|
*/
|
||||||
|
public boolean hasUnclaimedFeature ()
|
||||||
|
{
|
||||||
|
boolean unclaimed = false;
|
||||||
|
for (int i = 0; i < claims.length; i++) {
|
||||||
|
unclaimed = (unclaimed || (claims[i] == 0));
|
||||||
|
}
|
||||||
|
return unclaimed;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks for a feature in this tile that matches the supplied feature
|
* Looks for a feature in this tile that matches the supplied feature
|
||||||
* edge mask and returns the index of that feature in this tile's
|
* edge mask and returns the index of that feature in this tile's
|
||||||
@@ -189,11 +201,22 @@ public class VenisonTile
|
|||||||
*/
|
*/
|
||||||
public void setPiecen (Piecen piecen, List tiles)
|
public void setPiecen (Piecen piecen, List tiles)
|
||||||
{
|
{
|
||||||
// are we sure about that?
|
int claimGroup = 0;
|
||||||
|
|
||||||
|
// if we're adding a piecen to a feature that's already claimed,
|
||||||
|
// we want to inherit the claim number (this could happen when we
|
||||||
|
// show up in an in progress game)
|
||||||
if (claims[piecen.featureIndex] != 0) {
|
if (claims[piecen.featureIndex] != 0) {
|
||||||
Log.warning("Aiya! Requested to add a piecen to a feature " +
|
Log.info("Requested to add a piecen to a feature " +
|
||||||
"that has already been claimed [tile=" + this +
|
"that has already been claimed [tile=" + this +
|
||||||
", piecen=" + piecen + "].");
|
", piecen=" + piecen + "]. Inheriting.");
|
||||||
|
claimGroup = claims[piecen.featureIndex];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// otherwise we generate a new claim group
|
||||||
|
claimGroup = TileUtil.nextClaimGroup();
|
||||||
|
Log.info("Creating claim group [cgroup=" + claimGroup +
|
||||||
|
", tile=" + this + ", fidx=" + piecen.featureIndex + "].");
|
||||||
}
|
}
|
||||||
|
|
||||||
// keep a reference to this piecen and configure its position
|
// keep a reference to this piecen and configure its position
|
||||||
@@ -204,9 +227,6 @@ public class VenisonTile
|
|||||||
// assign a brand spanking new claim group to the feature and the
|
// assign a brand spanking new claim group to the feature and the
|
||||||
// piecen and propagate it to neighboring features
|
// piecen and propagate it to neighboring features
|
||||||
if (tiles != null) {
|
if (tiles != null) {
|
||||||
int claimGroup = TileUtil.nextClaimGroup();
|
|
||||||
Log.info("Creating claim group [cgroup=" + claimGroup +
|
|
||||||
", tile=" + this + ", fidx=" + piecen.featureIndex + "].");
|
|
||||||
TileUtil.setClaimGroup(
|
TileUtil.setClaimGroup(
|
||||||
tiles, this, piecen.featureIndex, claimGroup);
|
tiles, this, piecen.featureIndex, claimGroup);
|
||||||
// update our piecen with the claim group as well
|
// update our piecen with the claim group as well
|
||||||
|
|||||||
Reference in New Issue
Block a user