Esempio n. 1
0
        public void AcceptCallback(IAsyncResult ar)
        {
            // Signal the main thread to continue.
            accpeting.Set();

            try
            {
                Socket listener = (Socket)ar.AsyncState;
                Socket handler  = listener.EndAccept(ar);

                NetworkPlayer player = new NetworkPlayer();
                player.id         = rand.Next(int.MaxValue);
                player.workSocket = handler;

                lock (players)
                {
                    players.Add(player);
                }

                PlayerConnected?.Invoke(player);

                handler.BeginReceive(player.buffer, 0, NetworkPlayer.BufferSize, 0, new AsyncCallback(ReadCallback), player);
            }
            catch (Exception e)
            {
                Logger.Debug(e.ToString());
            }
        }
    private void Update()
    {
        if (exitMenu)
        {
            float alpha = title.color.a - 0.05f;
            if (alpha <= 0)
            {
                alpha = 0;
            }
            title.color = new Color(1, 1, 1, alpha);
            if (alpha == 0)
            {
                this.enabled = false;
            }
            return;
        }

        float horizMove = PlayerConnected.getSingularity().getPlayer(playerID).GetAxis("Move Horizontal");
        float vertiMove = PlayerConnected.getSingularity().getPlayer(playerID).GetAxis("Move Vertical");

        if (horizMove != 0 || horizMove != 0)
        {
            ActiveLevel();
        }
    }
Esempio n. 3
0
        private void AddPlayerReceived(Player player)
        {
            State.Players.Add(player);
            NotifyPropertyChanged(nameof(State));

            PlayerConnected?.Invoke(player);
        }
        public async Task AddPlayer(Player player)
        {
            lock (State)
            {
                State.Players.Add(player);
            }

            var @event = new Event
            {
                player_added_event = new Event.PlayerAddedEvent
                {
                    Player = player
                }
            };

            await Broadcast(new Packet
            {
                Event = @event
            });

            if (PlayerConnected != null)
            {
                await PlayerConnected.Invoke(player);
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Handles connecting player message.
 /// </summary>
 /// <param name="msg">Annoted player request.</param>
 protected virtual void ConnectPlayer(AnnotedPlayerRequest msg)
 {
     // Check if it good time
     if (Executor.CurrentPhase != GamePhase.BEFORE_START && !_Loaded)
     {
         throw new WrongGamePhaseException();
     }
     // Check if there is empty seat
     if (_PlayerLimit == PlayersInGame.Count)
     {
         throw new PlayerLimitException();
     }
     // Check if color is enabled for the game
     if (!_EnabledColors.Contains(msg.Request.Color))
     {
         throw new ColorDisabledException();
     }
     // Check if color is already selected
     if (PlayersInGame.ContainsKey(msg.Request.Color))
     {
         throw new ColorAlreadySelectedException();
     }
     // Check if client is already connected
     if (PlayersInGame.ContainsValue(msg.HandlerSocket))
     {
         throw new AlreadyConnectedException();
     }
     // Connect the player
     PlayersInGame.Add(msg.Request.Color, msg.HandlerSocket);
     PlayersNames.Add(msg.Request.Color, msg.Request.Name);
     PlayerConnected.Invoke(msg.Request.Color, msg.Request.Name, msg.HandlerSocket);
 }
Esempio n. 6
0
    /// <summary>
    /// gère les inputs du jeu
    /// </summary>
    private void InputGame()
    {
        //if we win, just accept the changement scene
        if (winned)
        {
            if (idLevel == idLevelMax && readyToRestart)    //if this is the end and we can restart
            {
                if (PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("FireB"))
                {
                    SceneChangeManager.getSingleton().JumpToSceneWithFade("Level 1");
                }
            }
            return;
        }
        if (loosed)
        {
            //if we loose, 1 inputs
            if (PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("FireA"))
            {
                if (gameover_retryText.color.a != 1)
                {
                    gameover_canvas.GetComponent <Animator>().enabled = false;
                    gameover_trappedText.color = new Color(gameover_trappedText.color.r, gameover_trappedText.color.g, gameover_trappedText.color.b, 1);
                    gameover_retryText.color   = new Color(gameover_trappedText.color.r, gameover_trappedText.color.g, gameover_trappedText.color.b, 1);
                }
                else
                {
                    SceneChangeManager.getSingleton().JumpToSceneWithFade(SceneManager.GetActiveScene().name);
                }
            }
        }
        else
        {
            if (Time.unscaledTime < timeTmpForPauseEscape + 0.3f /* || transitionState*/)
            {
                return;
            }

            if (!paused && (PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("Start") || PlayerConnected.getSingularity().getPlayer(0).GetButtonDown(0) || PlayerConnected.getSingularity().getPlayer(0).GetButtonDown(4) ||
                            PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("Escape") || PlayerConnected.getSingularity().getPlayer(0).GetButtonDown(4)))
            {
                Paused();
            }
            else if (paused)
            {
                if (PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("FireA") ||
                    PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("Start"))
                {
                    Resume();
                }
                if (PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("FireB") ||
                    PlayerConnected.getSingularity().getPlayer(0).GetButtonDown("Escape"))
                {
                    Time.timeScale = 1;
                    SceneChangeManager.getSingleton().JumpToSceneWithFade("Level 1");
                }
            }
        }
    }
Esempio n. 7
0
    //references
    private void Awake()
    {
        setSingularity();
        playerConnected = PlayerConnected.getSingularity();                              //récupère les infos inputs

        startPlayer();
        updatePlayer();
    }
Esempio n. 8
0
 public void AddPlayer(string playPath, Guid sessionId)
 {
     if (!Players.TryGetValue(playPath, out var players))
     {
         players = new List <Guid>();
         Players.Add(playPath, players);
     }
     players.Add(sessionId);
     PlayerConnected?.Invoke(this, new RtmpEventArgs(sessionId, playPath));
 }
        private void AddPlayerRecieved(Player player)
        {
            var newPlayers = State.Players.ToList();

            newPlayers.Add(player);
            State.Players = newPlayers.ToArray();
            NotifyPropertyChanged(nameof(State));

            PlayerConnected?.Invoke(player);
        }
Esempio n. 10
0
 /// <summary>
 /// test si on met le script en UNIQUE
 /// </summary>
 private void setSingleton()
 {
     if (playerConnected == null)
     {
         playerConnected = this;
     }
     else if (playerConnected != this)
     {
         Destroy(gameObject);
     }
 }
Esempio n. 11
0
        private IEnumerator ConnectedEventHandler()
        {
            Entity player = null;

            while (true)
            {
                yield return(WaitTill("connected", new Action <Parameter[]>(param => player = param[0].As <Entity>())));

                PlayerConnected?.Invoke(player);
            }
        }
Esempio n. 12
0
 /// <summary>
 /// test si on met le script en UNIQUE
 /// </summary>
 public void SetSingleton()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(gameObject);
     }
 }
Esempio n. 13
0
        private void PacketReceived(PlayerConnected packet)
        {
            if (PlayerId == packet.playerId)
            {
                return;
            }

            var p = CreatePlayer(packet.playerId);

            UnityEngine.Debug.Log($"Id: {p.Id} joined");
        }
Esempio n. 14
0
    public void RegisterPlayerClient(ulong pid, ulong steamid)
    {
        NetworkedObject netObj = SpawnManager.GetPlayerObject(pid);

        if (netObj.IsOwnedByServer)
        {
            return;
        }

        AddPlayer(netObj, steamid);
        PlayerConnected?.Invoke(pid);
    }
Esempio n. 15
0
        //"Name<uid><wonid><>" connected, address "ip:port"  [50]
        protected virtual void OnConnection(DateTime Timestamp, string[] info)
        {
            string[]         s         = info[2].Split(':');
            ConnectEventArgs eventArgs = new ConnectEventArgs()
            {
                Timestamp = Timestamp,
                Player    = GetPlayerInfo(info[0]),
                Ip        = s[0],
                Port      = ushort.Parse(s[1])
            };

            PlayerConnected.Fire(ServerEndPoint, eventArgs);
        }
Esempio n. 16
0
        //"Name<uid><wonid><>" connected, address "ip:port"  [50]
        /// <summary>
        /// Raises the <see cref="PlayerConnected"/> event.
        /// </summary>
        /// <param name="timestamp">Time at which <see cref="PlayerConnected"/> event was fired.</param>
        /// <param name="info">Information about <see cref="PlayerConnected"/> event.</param>
        protected virtual void OnConnection(DateTime timestamp, string[] info)
        {
            var s         = info[2].Split(':');
            var eventArgs = new ConnectEventArgs
            {
                Timestamp = timestamp,
                Player    = GetPlayerInfo(info[0]),
                Ip        = s[0],
                Port      = ushort.Parse(s[1], CultureInfo.InvariantCulture)
            };

            PlayerConnected.Fire(ServerEndPoint, eventArgs);
        }
Esempio n. 17
0
        /// <summary>
        /// Method called when the server sends a message that another player connected
        /// </summary>
        /// <param name="parts"></param>
        private void PlayerConnectedResolve(string[] parts)
        {
            if (_serverStage != ServerStage.Lobby)
            {
                _pingTimer.Stop();
                _pingTimer.Dispose();
                throw new OutOfSyncException();
            }
            PlayerColor color = Enum.Parse <PlayerColor>(parts[1]);
            string      name  = parts[2];

            PlayerInfos[color] = new PlayerInfo(color, name, false);
            PlayerConnected?.Invoke(this, new PlayerConnectedEventArgs(name, color));
        }
Esempio n. 18
0
        private void OnDataMessage(NetIncomingMessage msg)
        {
            var type = (PacketType)msg.ReadByte();

            if (type == PacketType.Connected)
            {
                InitializeFromServer(Packets.Connected.Read(msg));
            }

            if (!Loaded)
            {
                return;
            }

            switch (type)
            {
            case PacketType.PlayerPreferences:
                PacketReceived(PlayerPreferences.Read(msg));
                break;

            case PacketType.PlayerConnected:
                PacketReceived(PlayerConnected.Read(msg));
                break;

            case PacketType.PlayerDisconnected:
                PacketReceived(PlayerDisconnected.Read(msg));
                break;

            case PacketType.WorldState:
                AddWorldState(WorldState.Read(msg).worldState);
                break;

            case PacketType.PlayerDeath:
                PacketReceived(Packets.PlayerDeath.Read(msg));
                break;

            case PacketType.PlayerShoot:
                PacketReceived(PlayerShoot.Read(msg));
                break;

            case PacketType.ChangeLevel:
                PacketReceived(ChangeLevel.Read(msg));
                break;

            case PacketType.GameOver:
                PacketReceived(Packets.GameOver.Read(msg));
                break;
            }
        }
Esempio n. 19
0
 private void Awake()
 {
     SetSingleton();
     playerControllers = new PlayerController[4];
     playersInGame     = new bool[4];
     playerConnect     = PlayerConnected.GetSingleton;
     tutoStart         = GetComponent <TutoStart>();
     winManager        = GetComponent <WinManager>();
     scoreManager      = GetComponent <ScoreManager>();
     itemManager       = GetComponent <ItemManager>();
     if (!objectDynamiclyCreated)
     {
         Debug.LogError("error");
     }
 }
Esempio n. 20
0
    /// <summary>
    /// gère les inputs des manettes/clavier du joueurs en update
    /// et défini si oui ou non on a bougé
    /// </summary>
    private void InputPlayer()
    {
        horizMove = PlayerConnected.getSingularity().getPlayer(idPlayer).GetAxis("Move Horizontal");
        vertiMove = PlayerConnected.getSingularity().getPlayer(idPlayer).GetAxis("Move Vertical");
        isJumping = PlayerConnected.getSingularity().getPlayer(idPlayer).GetButtonDown("FireA");

        if (horizMove != 0 || vertiMove != 0)
        {
            hasMoved = true;
        }
        else
        {
            hasMoved = false;
        }
    }
Esempio n. 21
0
        public void Start(int port)
        {
            if (manager != null)
            {
                throw new InvalidOperationException();
            }

            var listener = new EventBasedNetListener();

            manager = new NetManager(listener);
            manager.Start(port);

            listener.ConnectionRequestEvent += request =>
            {
                if (manager.GetPeersCount(ConnectionState.Any) < MaxConnections)
                {
                    request.AcceptIfKey(nameof(MultiplayerTest));
                }
                else
                {
                    request.Reject();
                }
            };

            listener.PeerConnectedEvent += peer =>
            {
                PlayerConnected?.Invoke(peer.Id);
            };

            listener.NetworkReceiveEvent += (fromPeer, dataReader, deliveryMethod) =>
            {
                orders.Add(new Order()
                {
                    Player  = fromPeer.Id,
                    TargetX = dataReader.GetDouble(),
                    TargetY = dataReader.GetDouble(),
                });
            };

            thread = new Thread(Run)
            {
                IsBackground = true
            };

            thread.Start();
        }
Esempio n. 22
0
 internal void RegisterPlayer(ulong playerId)
 {
     try
     {
         playerForId.Clear();
         MyAPIGateway.Multiplayer.Players.GetPlayers(playerForId, p => p.SteamUserId == playerId);
         var player = playerForId.Count > 0 ? playerForId[0] : null;
         playerForId.Clear();
         players[playerId] = player;
         PlayerConnected?.Invoke(playerId, player);
         player.IdentityChanged += Player_IdentityChanged;
         Player_IdentityChanged(player, player.Identity);
     }
     catch
     {
     }
 }
Esempio n. 23
0
    /// <summary>
    /// Registra um novo jogador dentro do servidor
    /// </summary>
    /// <param name="newId"></param>
    private void NewPlayerOnServer(int newId)
    {
        if (_showDebugMessages)
        {
            Debug.Log("Registrando novo jogador com id: " + newId);
        }
        int             myNewId   = PlayersGamingNow;
        PlayerConnected newPlayer = new PlayerConnected();

        newPlayer.PlayerId     = myNewId;
        newPlayer.GameInstance = this.gameObject;
        newPlayer.PlayerName   = GetRandomName(myNewId);
        newPlayer.IsConnected  = true;
        PlayersConnectedsList.Add(newPlayer);
        CopyOfPlayersConnectedsList = PlayersConnectedsList;

        _setupLocalPlayer.PlayerIdentity.SetPlayerId(myNewId);
    }
        private void OnConnected(SocketEndpoint obj)
        {
            string playerId = string.Empty;

            lock (playerIds)
            {
                if (!playerIds.ContainsKey(obj.Address))
                {
                    playerIds.Add(obj.Address, Guid.NewGuid().ToString());
                }

                playerId = playerIds[obj.Address];
            }

            if (playerId != string.Empty)
            {
                PlayerConnected?.Invoke(playerId);
            }
        }
Esempio n. 25
0
    /// <summary>
    /// met en pause le jeu (affiche l'image selon si la manette / clavier est connecté)
    /// </summary>
    private void Paused()
    {
        timeTmpForPauseEscape = Time.unscaledTime;

        if (PlayerConnected.getSingularity().playerArrayConnected[0])
        {
            canvasPause.transform.GetChild(0).gameObject.SetActive(false);
            canvasPause.transform.GetChild(1).gameObject.SetActive(true);
        }
        else
        {
            canvasPause.transform.GetChild(0).gameObject.SetActive(true);
            canvasPause.transform.GetChild(1).gameObject.SetActive(false);
        }
        canvasPause.SetActive(true);

        paused         = true;
        Time.timeScale = 0;
    }
Esempio n. 26
0
        public void AddPlayer(Player player)
        {
            lock (State)
            {
                var newPlayers = State.Players.ToList();
                newPlayers.Add(player);
                State.Players = newPlayers.ToArray();
            }

            NotifyPropertyChanged(nameof(State));

            var @event = new Event();

            @event.Type          = Event.EventType.PlayerAdded;
            @event.ChangedObject = player;
            BroadcastToAllClients(new Packet(@event));

            PlayerConnected?.Invoke(player);
        }
Esempio n. 27
0
    private void OnDataRetrieved(AbstractDatagram datagram)
    {
        switch (datagram.GetDatagramId())
        {
        case RequestIdentifiers.PlayerConnected:
        {
            var userInfo = (datagram as PlayerConnectedRequestBody).UserInformation;
            PlayerConnected?.Invoke(userInfo);
            break;
        }

        case RequestIdentifiers.PlayerDisconnected:
        {
            var id = (datagram as PlayerDisconnectedRequestBody).UserIdentifier;
            PlayerDisconnected?.Invoke(id);
        }
        break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Esempio n. 28
0
        protected override void UpdateAfterSim(int tick)
        {
            for (int i = (JoinedIdentities.Count - 1); i >= 0; i--)
            {
                long identityId = JoinedIdentities[i];

                IMyPlayer player = Utils.GetPlayerByIdentityId(identityId);
                if (player == null)
                {
                    ulong steamId = MyAPIGateway.Players.TryGetSteamId(identityId);
                    Log.Info($"Unknown player connected, identityId={identityId.ToString()}; alternate identifier: '{Utils.PrintPlayerName(Utils.GetPlayerByIdentityId(identityId))}' (steamId={steamId.ToString()}); trying again next tick...");
                    continue;
                }

                JoinedIdentities.RemoveAtFast(i);
                OnlinePlayers.Add(player);

                if (DebugLog)
                {
                    Log.Info($"DEBUG: PlayerHandler :: {Utils.PrintPlayerName(player)} joined.");
                }

                try
                {
                    PlayerConnected?.Invoke(player);
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            }

            if (JoinedIdentities.Count <= 0)
            {
                SetUpdateMethods(UpdateFlags.UPDATE_AFTER_SIM, false);
            }
        }
Esempio n. 29
0
        public void SendGameState(Game.Models.Player[] playerModels, Game.Models.Blip[] blips)
        {
            //Send gamestate to all connected players
            players.ForEach(x =>
            {
                if (x.id != 0) //If not the local player...
                {
                    var gameState     = new GameState();
                    gameState.blips   = blips.ToArray();
                    gameState.players = playerModels.ToArray();
                    var packet        = new Packet(gameState);

                    Send(x.id, packet.ToBytes());
                }
            });

            //Remove the players that were marked for removal
            players.RemoveAll(x => x.flagForRemoval);

            //Add players who are waiting in the queue
            players.AddRange(playersInQueue);
            playersInQueue.Clear();
            players.ForEach(x => PlayerConnected?.Invoke(x));
        }
Esempio n. 30
0
 public void Lose(Transform ennemy)
 {
     if (loosed)
     {
         return;
     }
     loosed = true;
     gameover_canvas.SetActive(true);
     if (PlayerConnected.getSingularity().playerArrayConnected[0])
     {
         gameover_input_keyboard.gameObject.SetActive(false);
         gameover_input_pad.gameObject.SetActive(true);
         //textRestart.text = "Press A to restart";
     }
     else
     {
         gameover_input_keyboard.gameObject.SetActive(true);
         gameover_input_pad.gameObject.SetActive(false);
         //textRestart.text = "Press Space to restart";
     }
     cam.transform.SetParent(ennemy);  //set la caméra à la racine
     //cam.gameObject.GetComponent<PostProcessingBehaviour>().enabled = false;
     cam.gameObject.GetComponent <ScreenShake>().Shake();
 }