public override VikingState TakeSeat(Chair chair) { // Reserve the chair viking.CurrentChair = chair; chair.OnVikingTakeChair(viking); viking.TakingSeat?.Invoke(); return(new TakingSeatVikingState(viking, chair)); }
private VikingState TakeRandomSeat() { Chair chair = Table.GetRandomEmptyChair(); if (chair != null) { viking.CurrentChair = chair; chair.OnVikingTakeChair(viking); return(new TakingSeatVikingState(viking, chair)); } return(this); }