private void SchedulePiece(UnitSchedulable p) { int target; target = (this.time + UnitScheduler.MAX_SPEED - p.GetSpeed() + 1) % this.calendar.Length; this.calendar[target].Enqueue(p); }
public void TurnEnded(UnitSchedulable piece) { if (this.curr_unit != piece) { throw new System.MissingFieldException( string.Format("Expected {0}'s turn got {1}", this.curr_unit, piece)); } this.curr_unit.EndTurn(); /* reschedule for next turn */ this.SchedulePiece(piece); this.IterNext(); }
private void IterNext() { this.curr_unit = this.DequeueNext(); this.curr_unit.BeginTurn(); }
public void AddUnit(UnitSchedulable p) { this.units.Add(p); // just for debugging i guess this.SchedulePiece(p); }