public void Update(UnitOperationType operation) { if (operation != UnitOperationType.None) { performingOperation = CreateUnitOperation(operation); performingOperation.StartOperation(); } if (performingOperation != null) { performingOperation.DoneAdd(); if (performingOperation.Done == performingOperation.NeedDone) { performingOperation.FinalizeOperation(); performingOperation = null; } } }
private UnitOperation CreateUnitOperation(UnitOperationType type) { switch (type) { case UnitOperationType.Move: return(new Move(this)); case UnitOperationType.Mine: return(new Mine(this)); case UnitOperationType.RangeHit: return(new RangeHit(this)); case UnitOperationType.MeleeHit: return(new MeleeHit(this)); case UnitOperationType.BuildStart: return(new BuildStart(this)); case UnitOperationType.Repair: return(new Repair(this)); } return(null); }