Add visualizing of flag castles
This commit is contained in:
parent
7f14dc6a42
commit
745b86a8f3
3 changed files with 49 additions and 1 deletions
|
|
@ -53,6 +53,14 @@ public class Game {
|
|||
this.goal = goal;
|
||||
this.goal.setGame(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current goal
|
||||
* @return The current goal
|
||||
*/
|
||||
public Goal getGoal() {
|
||||
return this.goal;
|
||||
}
|
||||
|
||||
/**
|
||||
* The round this game is currently in
|
||||
|
|
|
|||
|
|
@ -89,6 +89,12 @@ public class CaptureTheFlagGoal extends Goal {
|
|||
|
||||
}
|
||||
|
||||
public boolean isFlagCastle(Castle castle) {
|
||||
|
||||
return flagCastles.contains(castle);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Distribute the flag castles evenly to
|
||||
* all players
|
||||
|
|
@ -133,7 +139,7 @@ public class CaptureTheFlagGoal extends Goal {
|
|||
private List<Castle> pickRandomCastles(List<Castle> castles, int num) {
|
||||
|
||||
int min = 0;
|
||||
int max = castles.size();
|
||||
int max = castles.size() - 1;
|
||||
|
||||
List<Integer> nums = new ArrayList<Integer>();
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import game.AI;
|
|||
import game.Game;
|
||||
import game.map.PathFinding;
|
||||
import game.Player;
|
||||
import game.goals.CaptureTheFlagGoal;
|
||||
import game.map.Castle;
|
||||
import game.map.GameMap;
|
||||
import game.players.Human;
|
||||
|
|
@ -389,6 +390,7 @@ public class MapPanel extends JScrollPane {
|
|||
if (map != null) {
|
||||
g.drawImage(map.getBackgroundImage(), offset.x, offset.y, null);
|
||||
|
||||
// Draw the connections
|
||||
if (showConnections) {
|
||||
for (Edge<Castle> edge : map.getEdges()) {
|
||||
Point p1 = translate(edge.getNodeA().getValue().getLocationOnMap());
|
||||
|
|
@ -407,12 +409,31 @@ public class MapPanel extends JScrollPane {
|
|||
}
|
||||
}
|
||||
|
||||
// Draw the castles
|
||||
for (Castle region : map.getCastles()) {
|
||||
Color color = region.getOwner() == null ? Color.WHITE : region.getOwner().getColor();
|
||||
Point location = translate(region.getLocationOnMap());
|
||||
BufferedImage castle = resources.getCastle(color, region.getType());
|
||||
g.drawImage(castle, location.x, location.y, null);
|
||||
|
||||
// Capture the flag specific visuals
|
||||
if (game.getGoal() instanceof CaptureTheFlagGoal) {
|
||||
|
||||
CaptureTheFlagGoal goal = (CaptureTheFlagGoal) game.getGoal();
|
||||
if (goal.isFlagCastle(region)) {
|
||||
Color prevColor = g.getColor();
|
||||
Stroke prevStroke = g2.getStroke();
|
||||
|
||||
g.setColor(color.WHITE);
|
||||
g2.setStroke(new BasicStroke(6));
|
||||
g.drawRoundRect(location.x - 5, location.y - 5, CASTLE_SIZE + 10, CASTLE_SIZE + 10, 5, 5);
|
||||
|
||||
g.setColor(prevColor);
|
||||
g2.setStroke(prevStroke);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Draw troop count
|
||||
if(region.getTroopCount() > 0) {
|
||||
BufferedImage unitIcon = resources.getUnitIcon();
|
||||
|
|
@ -443,18 +464,31 @@ public class MapPanel extends JScrollPane {
|
|||
g.drawImage(icon, x, y, ICON_SIZE, ICON_SIZE, null);
|
||||
}
|
||||
|
||||
// Capture the flag specific visuals
|
||||
if (game.getGoal() instanceof CaptureTheFlagGoal) {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// HUD
|
||||
if (selectedCastle != null) {
|
||||
|
||||
// Draw rectangle around the selected castle
|
||||
Point location = translate(selectedCastle.getLocationOnMap());
|
||||
g.setColor(selectedCastle.getOwner() == null ? Color.WHITE : selectedCastle.getOwner().getColor());
|
||||
g.drawRect(location.x - 5, location.y - 5, CASTLE_SIZE + 10, CASTLE_SIZE + 10);
|
||||
|
||||
// Draw actions
|
||||
if(canPerformAction()) {
|
||||
|
||||
// Choose castle
|
||||
if (canChooseCastle()) {
|
||||
BufferedImage icon = resources.getCheckIcon();
|
||||
Rectangle bounds = getBoundsIconCheck(location);
|
||||
g.drawImage(icon, bounds.x, bounds.y, ICON_SIZE, ICON_SIZE, null);
|
||||
|
||||
// Use castle
|
||||
} else if (selectedCastle.getOwner() == game.getCurrentPlayer() && game.getRound() > 1) {
|
||||
boolean hasTroops = game.getCurrentPlayer().getRemainingTroops() > 0;
|
||||
boolean canMove = selectedCastle.getTroopCount() > 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue