public void EnablePlayerPick(TradingViewController.OnPlayerSelect callback) { var gameController = GetComponent <GameController>(); var localplayer = gameController.GetPlayers(out var otherPlayers); tradingViewController.EnableClosability(false); tradingViewController.EnablePlayerSelect(otherPlayers, callback); }
public void OnSelected(GameController controller) { int newTileId = tileController.tile.id; controller.GetLocalPlayer().MoveThief(newTileId); foreach (var tile in controller.mapController.GetAllTileControllers()) { tile.SetSelectable(false); } TradingViewController.OnPlayerSelect onPlayerSelect = (State.Player player) => { var from = player.resources; if (from.IsEmpty()) { // Stealing from player with no resources... controller.GetLocalPlayer().CannotStealResources(player.name); return; } controller.GetLocalPlayer().StealResourceFromPlayer(player); controller.GetLocalPlayer().SetState(PlayerController.State.None); }; var locationsToStealFrom = tileController.tile.locations.Where(location => location.type != State.LocationType.Available && !PhotonNetwork.LocalPlayer.UserId.Equals(location.occupiedBy)); if (locationsToStealFrom.Count() != 0) { if (locationsToStealFrom.Count() == 1) { // Only one player to steal from // Init card choosing ui? or just select a random card // eks. 'The thief stole 1 *insert resource* from *player name*' // #1 Find player with id // #2 call OnPlayerSelect callback with player var playerId = locationsToStealFrom.First().occupiedBy; var onlyPlayerToStealFrom = controller.GetPlayerById(playerId); if (onlyPlayerToStealFrom != null) { onPlayerSelect(onlyPlayerToStealFrom); } } else { // More than one player to steal from, must select one // open ui to pick player and continue with same ui/resource text from player count 1 controller.uiController.EnablePlayerPick(onPlayerSelect); } } }