internal override Selection Transition(object input) { Controller control = Controller.DefaultInstance; if (input == null && _state == -1) return States[++_state]; Exception ex = TryValidateInput(input); if (ex != null) throw ex; switch (_state) { case 0: _player = (Player)input; if (_player != null) control.TileSet = _player.Hand.ToList(); return States[++_state]; case 1: _tile = input as Tile; _player.RemoveFromHand(_tile); _player.AddToHand(control.Deck.Pop()); return States[++_state]; case 2: var space = input as Space; control.PlaceTile(_tile, space, Authority); ++_state; return Controller.DefaultInstance.Activate(_tile); } throw new UnknownTransitionException("Thieves Guild"); }