示例#1
0
    private void SchedulePiece(UnitSchedulable p)
    {
        int target;

        target = (this.time + UnitScheduler.MAX_SPEED - p.GetSpeed() + 1) % this.calendar.Length;
        this.calendar[target].Enqueue(p);
    }
示例#2
0
    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();
    }
示例#3
0
 private void IterNext()
 {
     this.curr_unit = this.DequeueNext();
     this.curr_unit.BeginTurn();
 }
示例#4
0
 public void AddUnit(UnitSchedulable p)
 {
     this.units.Add(p);          // just for debugging i guess
     this.SchedulePiece(p);
 }