/*
* Copyright (c) 2012. HappyDroids LLC, All rights reserved.
*/
package com.happydroids.droidtowers.grid;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector2;
import com.happydroids.droidtowers.actions.GameGridClickListener;
import com.happydroids.droidtowers.entities.GridObject;
import com.happydroids.droidtowers.math.GridPoint;
public class NeighborGameGrid extends GameGrid {
private GameGridClickListener clickListener;
private String ownerName;
public NeighborGameGrid(OrthographicCamera camera, GridPoint gridOrigin) {
super(camera);
setGridOrigin(gridOrigin);
setGridScale(0.3f);
gameGridRenderer.toggleGridLines();
}
public void findLimits() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int maxY = Integer.MIN_VALUE;
for (GridObject gridObject : getObjects()) {
GridPoint position = gridObject.getPosition();
GridPoint size = gridObject.getSize();
minX = Math.min(position.x, minX);
maxX = Math.max(position.x + size.x, maxX);
maxY = Math.max(position.y + size.y, maxY);
}
setGridSize(maxX - minX, gridSize.y);
updateWorldSize(false);
for (GridObject gridObject : getObjects()) {
GridPoint position = gridObject.getPosition();
gridObject.setPosition(position.x - minX, position.y);
}
}
public void addListener(GameGridClickListener clickListener) {
this.clickListener = clickListener;
}
@Override
public boolean touchDown(Vector2 worldPoint, int pointer) {
if (worldBounds.contains(worldPoint.x, worldPoint.y)) {
for (GridObject gridObject : getObjects()) {
if (gridObject.getWorldBounds().contains(worldPoint.x, worldPoint.y)) {
clickListener.click(this, gridObject, worldPoint.x, worldPoint.y);
return true;
}
}
}
return false;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public String getOwnerName() {
return ownerName;
}
}