summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/rustanddust
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/rustanddust')
-rw-r--r--core/src/ch/asynk/rustanddust/game/Order.java48
1 files changed, 34 insertions, 14 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/Order.java b/core/src/ch/asynk/rustanddust/game/Order.java
index aac0825..b959628 100644
--- a/core/src/ch/asynk/rustanddust/game/Order.java
+++ b/core/src/ch/asynk/rustanddust/game/Order.java
@@ -7,12 +7,17 @@ import ch.asynk.rustanddust.engine.Move;
public class Order implements Disposable, Pool.Poolable, Comparable<Unit>
{
+ public static int orderId = 1;
+
+ public static final Order END = new Order(OrderType.END);
+
public enum OrderType
{
NONE,
MOVE,
ENGAGE,
- PROMOTE;
+ PROMOTE,
+ END,
}
private static final Pool<Order> orderPool = new Pool<Order>()
@@ -30,23 +35,32 @@ public class Order implements Disposable, Pool.Poolable, Comparable<Unit>
public static Order get()
{
- Order c = orderPool.obtain();
- return c;
+ Order o = orderPool.obtain();
+ o.id = orderId;
+ orderId += 1;
+ return o;
}
public int id;
public int cost;
- public Unit unit;
+ public boolean replay;
+ public Unit leader;
public OrderType type;
public Move move;
public Engagement engagement;
- public UnitList activable = new UnitList(4);
+ public UnitList activables = new UnitList(4);
private Order()
{
reset();
}
+ private Order(OrderType type)
+ {
+ this();
+ this.type = type;
+ }
+
@Override
public void dispose()
{
@@ -56,9 +70,12 @@ public class Order implements Disposable, Pool.Poolable, Comparable<Unit>
@Override
public void reset()
{
+ this.id = -1;
+ this.cost = 1;
+ this.replay = false;
+ this.leader = null;
this.type = OrderType.NONE;
- this.unit = null;
- this.activable.clear();
+ this.activables.clear();
if (this.move != null) {
this.move.dispose();
this.move = null;
@@ -72,7 +89,7 @@ public class Order implements Disposable, Pool.Poolable, Comparable<Unit>
@Override
public int compareTo(Unit other)
{
- if (unit == other)
+ if (leader == other)
return 0;
return 1;
}
@@ -85,32 +102,35 @@ public class Order implements Disposable, Pool.Poolable, Comparable<Unit>
@Override
public String toString()
{
- return String.format("[%d] %s : %s", id, type, unit.code);
+ if (type == OrderType.END)
+ return String.format("[00] END");
+ else
+ return String.format("[%d] %s(%d) : %s", id, type, cost, leader.code);
}
public void setMove(Unit unit, Move move)
{
+ this.leader = unit;
this.type = OrderType.MOVE;
this.move = move;
- this.unit = unit;
}
public void setPromote(Unit unit)
{
+ this.leader = unit;
this.type = OrderType.PROMOTE;
- this.unit = unit;
}
public void setEngage(Unit unit, Unit target)
{
+ this.leader = unit;
this.type = OrderType.ENGAGE;
this.engagement = Engagement.get(unit, target);
- this.unit = unit;
}
- public void setActivable(UnitList l)
+ public void setActivables(UnitList l)
{
for(Unit u : l)
- activable.add(u);
+ activables.add(u);
}
}