View Javadoc

1   package cz.cuni.amis.pogamut.defcon.utils.quadtree;
2   
3   import java.util.logging.Logger;
4   
5   import cz.cuni.amis.pogamut.defcon.communication.worldview.DefConWorldView;
6   
7   /**
8    * Relabels quadtree specifically for a simple fleet placement points lookup.
9    * 
10   * @author Radek 'Black_Hand' Pibil
11   * 
12   */
13  public class UnitPlacementQuadTreeLabellingMethod implements
14  		IQuadTreeLabelingMethod {
15  
16  	private DefConWorldView worldview;
17  	private Logger log;
18  
19  	public UnitPlacementQuadTreeLabellingMethod(DefConWorldView worldview,
20  			Logger log) {
21  		this.worldview = worldview;
22  		this.log = log;
23  	}
24  
25  	@Override
26  	public boolean label(QuadTreeNode node) {
27  
28  		if (node.isLabeled()) {
29  			if (node.getNodes() != null &&
30  					(node.getFirst().isLabeled() ||
31  							node.getSecond().isLabeled() ||
32  							node.getThird().isLabeled() ||
33  					node.getFourth().isLabeled())) {
34  				return true;
35  			}
36  
37  			node.setLabel(false);
38  
39  			return false;
40  		}
41  
42  		boolean b = node.getNodes() == null && worldview.getGameInfo()
43  				.isValidShipPlacementLocation(
44  						node.getCenter().getX(),
45  						node.getCenter().getY());
46  
47  		return b;
48  
49  	}
50  }