public void RemoveCharacter(Character character)
 {
     using (var notifier = new TurnNotifier(this)) {
         normalTurn_.Remove(character);
         waiting_.Remove(character);
     }
 }
        public void Wait()
        {
            Debug.Assert(!IsEmpty());
            Debug.Assert(!IsWaitStage, "Cannot wait in wait stage");

            using (var notifier = new TurnNotifier(this)) {
                var character = RemoveLast(normalTurn_);
                waiting_.Add(character);
            }
        }
        public void DoAction()
        {
            Debug.Assert(!IsEmpty());

            using (var notifier = new TurnNotifier(this)) {
                if (IsWaitStage)
                {
                    RemoveLast(waiting_);
                    return;
                }
                RemoveLast(normalTurn_);
            }
        }