// Start is called before the first frame update void Start() { PlayerInputManager[] playerSlots = GetComponentsInChildren <PlayerInputManager>(true); joinedPlayers = FindObjectOfType <JoinedPlayers>(); const int joystickMax = 4; int joystickCount = Mathf.Clamp(Input.GetJoystickNames().Length, 0, joystickMax); if (playerSlots.Length < joystickMax + 1) { Debug.LogError("Not enough player slots"); return; } for (int i = 0; i < playerSlots.Length; i++) { inputManagers.Add(playerSlots[i]); inputManagers[i].gameObject.GetComponentInChildren <Animator>(true).gameObject.SetActive(false); if (i > 0) { inputManagers[i].SetJoystickController(i); } else { inputManagers[i].SetKeyboardControlled(); } } }
public override void Reward() { base.Reward(); AlmostNoNpcsLeft -= LowGate_AlmostNoNpcsLeft; var randomInstance = RandomInstance.getInstance(this); var num = randomInstance.NextDouble(); foreach (var joined in JoinedPlayers.Values) { var currencyReward = new Reward(new Dictionary <RewardType, int> { { RewardType.CREDITS, 1250000 }, { RewardType.URIDIUM, 12500 } }); var ammoReward = new Reward(RewardType.AMMO, Item.Find("ammunition_laser_ucb-100"), 12500); var specialReward = new characters.Reward(RewardType.ITEM, Item.Find("equipment_weapon_laser_lf-4"), 1); if (num < 0.03) { specialReward.ParseRewards(joined); } //TODO MoveOut(joined); ammoReward.ParseRewards(joined); currencyReward.ParseRewards(joined); if (joined.OwnedGates.ContainsKey(Id)) { joined.OwnedGates.TryRemove(Id, out _); } } JoinedPlayers.Clear(); }
/// <summary> /// Remove a list of players from the game. /// </summary> /// <param name="players">IEnumerable Players list to be removed from the game.</param> public void RemovePlayers(IEnumerable <Player> players) { if (CurrentPhase.CurrentPhase == Constant.FIRST_GAME_PHASE) { if (null == JoinedPlayers) { throw new PlayerNotInGameException("The player could not be Removed from the Game. No players are joined."); } try { foreach (Player player in players) { JoinedPlayers.Remove(player); } } catch (Exception) { throw new PlayerNotInGameException("The player could not be Removed from the Game. The player was not joined."); } } else { throw new ActiveGameException("The game is active. Players may not be removed from the game once it has started."); } }
public override void Reward() { AlmostNoNpcsLeft -= LowGate_AlmostNoNpcsLeft; Finished = true; var hit = Random.Next(0, 100); foreach (var joined in JoinedPlayers.Values) { var currencyReward = new Reward(new Dictionary <RewardType, int> { { RewardType.CREDITS, 2500000 }, { RewardType.URIDIUM, 25000 } }); var ammoReward = new Reward(RewardType.AMMO, new Item(-1, "ammunition_laser_ucb-100", 25000), 25000); var specialReward = new characters.Reward(RewardType.ITEM, new Item(-1, "equipment_weapon_laser_lf-4", 1), 1); if (joined?.GetGameSession() == null) { continue; } var joinedSession = joined.GetGameSession(); if (hit == 15) { //Packet.Builder.LegacyModule(joinedSession, "0|A|STD|You've won a LF4!"); specialReward.ParseRewards(joined); } //TODO MoveOut(joined); ammoReward.ParseRewards(joined); currencyReward.ParseRewards(joined); } JoinedPlayers.Clear(); }
/// <summary> /// Add a list of players to the current game. /// </summary> /// <param name="players">IEnumerable of Players to add to the game.</param> /// <exception cref="ActiveGameException">ActiveGameException can be thrown if the game is already started.</exception> public void AddPlayers(IEnumerable <Player> players) { if (CurrentPhase.CurrentPhase == Constant.FIRST_GAME_PHASE) { JoinedPlayers.AddRange(players); } else { throw new ActiveGameException("The game has already been started. Players can only be added to games before they are started."); } }
public override void ParseFromNetworkMessage(NetworkMessage message) { ChannelId = message.ReadUInt16(); ChannelName = message.ReadString(); JoinedPlayers.Capacity = message.ReadUInt16(); for (var i = 0; i < JoinedPlayers.Capacity; ++i) { JoinedPlayers.Add(message.ReadString()); } InvitedPlayers.Capacity = message.ReadUInt16(); for (var i = 0; i < InvitedPlayers.Capacity; ++i) { InvitedPlayers.Add(message.ReadString()); } }
public override void Reward() { base.Reward(); var currencyReward = new Reward(new Dictionary<RewardType, int> { { RewardType.CREDITS, 40000000 }, { RewardType.URIDIUM, 40000 }, { RewardType.EXPERIENCE, 8000000 }, { RewardType.HONOR, 200000 } }); var ammoReward = new Reward(RewardType.AMMO, Item.Find("ammunition_laser_ucb-100"), 42500); MoveOut(Owner); ammoReward.ParseRewards(Owner); currencyReward.ParseRewards(Owner); if (Owner.OwnedGates.ContainsKey(Id)) { Owner.OwnedGates.TryRemove(Id, out _); } Owner.Gates.BetaComplete++; Owner.Gates.BetaReady = false; Owner.Gates.Save(); JoinedPlayers.Clear(); Owner.RefreshPlayersView(); }
public Launcher(bool startServers) { DataContext = this; InitializeComponent(); CanResize = false; if (startServers) { //GameServer _serverThread = new Thread(() => { try { _logger.Info($"Running game server.."); _manager.StartServer(); _logger.Info($"Game server stopped."); } catch (Exception e) { _logger.Error(e, $"A critical error occurred on the game server."); } }); _serverThread.Start(); //CoordServer _coordServer.OnPlayerJoin += (player) => { _logger.Info($"Played joined {player.Name} from address {player.Address}."); var existing = Player.GetPlayerByAddressOrCreate(player.Address); player.Player.Address = player.Address; player.Player.ReIndex(); existing.ReplaceWith(player.Player); JoinedPlayers.Add(player); Dispatcher.UIThread.InvokeAsync(() => { ShowHosting(); }); }; _coordServer.OnPlayerLeave += (player) => { _logger.Info($"Played left {player.Name} from address {player.Address}."); JoinedPlayers.Remove(player); if (JoinedPlayers.Count == 0) { Dispatcher.UIThread.InvokeAsync(() => { ShowJoin(); }); } }; _coordThread = new Thread(() => { try { _logger.Info($"Starting coordination server.."); _coordServer.Start(); } catch (Exception e) { _logger.Error(e, $"A critical error occurred on the coordination server."); } }); _coordThread.Start(); Closed += (a, b) => { _manager.StopServer(); _logger.Info($"Stopped game server."); _coordServer.Stop(); _logger.Info($"Stopped coordination server."); if (_serverThread != null) { _serverThread.Join(); } if (_coordThread != null) { _coordThread.Join(); } }; } }
public GameTableState() { On((TableCreated e) => { TableId = e.Id; SmallBlind = e.SmallBlind; BuyIn = e.BuyIn; Dealer = null; JoinedPlayers = new Dictionary <string, TablePlayer>(); Players = new Dictionary <int, GamePlayer>(); }); On((GameFinished e) => { GameId = null; MaxBid = 0; CurrentBidding = null; foreach (var winner in e.Winners) { JoinedPlayers[winner.UserId].Cash += winner.Amount; } }); On((GameCreated e) => { GameId = e.GameId; Pack = new Pack(e.Cards); Deck = new List <Card>(); SitPlayers(e.Players); CurrentBidding = new BiddingInfo(e.Players.Count); MaxRaisedValue = 0; }); On((DealerAssigned e) => { Dealer = e.Dealer.Position; }); On((PlayerJoined e) => JoinedPlayers.Add(e.UserId, new TablePlayer() { Cash = e.Cash, Position = e.Position, UserId = e.UserId, })); On((CardsDealed e) => { foreach (var playerCard in e.Cards) { Pack.Remove(playerCard.Card); Players[playerCard.Position].Cards.Add(playerCard.Card); } }); On((BidMade e) => AddBidEvent(e.Bid)); On((BiddingFinished e) => { MaxRaisedValue = 0; }); On((NextPlayerTurned e) => { CurrentPlayer = e.Player.Position; MaxRaisedValue = e.MaxRaisedValue; }); On((DeckDealed e) => { foreach (var card in e.Cards) { Pack.Remove(card); Deck.Add(card); } CurrentBidding.NextStage(); }); }
public bool HasUser(string userId) { return(JoinedPlayers.ContainsKey(userId)); }