예제 #1
0
        /// <summary>
        /// Handle a new player joining the session.
        /// </summary>
        void networkSession_GamerJoined(object sender, GamerJoinedEventArgs e)
        {
            // make sure the data exists for the new gamer
            for (int i = 0; i < networkSession.AllGamers.Count; i++)
            {
                if (networkSession.AllGamers[i] == e.Gamer)
                {
                    PlayerData playerData = new PlayerData();
                    e.Gamer.Tag = playerData;
                    playerData.ShipVariation = (byte)(i % 4);
                    playerData.ShipColor     = (byte)i;
                }
            }

            // send my own data to the new gamer
            if ((networkSession.LocalGamers.Count > 0) && !e.Gamer.IsLocal)
            {
                PlayerData playerData = networkSession.LocalGamers[0].Tag as PlayerData;
                if (playerData != null)
                {
                    packetWriter.Write((int)World.PacketTypes.PlayerData);
                    playerData.Serialize(packetWriter);
                    networkSession.LocalGamers[0].SendData(packetWriter,
                                                           SendDataOptions.ReliableInOrder, e.Gamer);
                }
            }
        }
예제 #2
0
파일: Game1.cs 프로젝트: mohammedmjr/GLib
        void session_GamerJoined(object sender, GamerJoinedEventArgs e)
        {
            Screen    playerList    = allScreens["playerList"];
            Texture2D newGamerImage = new TextureFactory(GraphicsDevice).CreateSquare(64, Color.Red);

            try
            {
                newGamerImage = Texture2D.FromStream(GraphicsDevice, e.Gamer.GetProfile().GetGamerPicture());
            }
            catch { };
            Vector2 pos = new Vector2(100, 50);

            foreach (Sprite s in playerList.Sprites)
            {
                pos.Y += s.Height + 5;
            }
            Sprite gamerIcon = new Sprite(newGamerImage, pos, spriteBatch);

            playerList.Sprites.Add(gamerIcon);
            TextSprite gamerName = new TextSprite(spriteBatch, new Vector2(pos.X + gamerIcon.Width + 5, pos.Y), font, e.Gamer.Gamertag);

            allScreens["playerList"].AdditionalSprites.Add(gamerName);
            if (session.AllGamers.Count >= 2 && session.IsHost)
            {
                //TODO
                session.StartGame();
            }
        }
예제 #3
0
        private void netSession_GamerJoined(object sender, GamerJoinedEventArgs e)
        {
            SpaceMarine playerCharacter = new SpaceMarine(_assetManager);

            playerCharacter.PlayerName = e.Gamer.Gamertag;

            if (!e.Gamer.IsLocal)
            {
                playerCharacter.isRemote = true;
                e.Gamer.Tag = playerCharacter;
            }
            else
            {
                playerCharacter         = GetPlayer(e.Gamer.Gamertag);
                playerCharacter.isLocal = true;
                e.Gamer.Tag             = playerCharacter;
            }


            if ((_isHost) && _currWorldState != null)
            {
                WriteMapData(_currWorldState);
                WriteMatchData(_gameManager);
                WriteLocalItems(_currWorldState);
            }

            else if (_isClient)
            {
                _packetReader.BaseStream.Flush();
                if (doClientConnection() == false)
                {
                    _failure = true;
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Raised when a player joins the session
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnLivePlayerJoined(object sender, GamerJoinedEventArgs e)
        {
            IdentifiedPlayer identifiedPlayer = null;

            if (e.Gamer.IsLocal)
            {
                var localNetworkGamer = (LocalNetworkGamer)e.Gamer;

                IdentifiedPlayer[] localPlayersArray = new IdentifiedPlayer[SessionManager.LocalPlayers.Count];
                SessionManager.LocalPlayers.Values.CopyTo(localPlayersArray, 0);

                for (int i = 0; i < localPlayersArray.Length; i++)
                {
                    var localPlayer = localPlayersArray[i];

                    if (localPlayer.UniqueId == e.Gamer.Gamertag)
                    {
                        identifiedPlayer = new LiveIdentifiedPlayer(localPlayer.Input, localNetworkGamer);
                        _localPlayers.Add(identifiedPlayer);
                        _allPlayers.Add(identifiedPlayer);
                        break;
                    }
                }
            }
            else
            {
                NetworkGamer networkGamer = e.Gamer;
                identifiedPlayer = new LiveIdentifiedPlayer(networkGamer);
                _remotePlayers.Add(identifiedPlayer);
                _allPlayers.Add(identifiedPlayer);
            }

            OnPlayerJoined(identifiedPlayer);
        }
예제 #5
0
 void Session_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (!gamerList.Text.Contains(e.Gamer.Gamertag + Environment.NewLine))
     {
         gamerList.Text    += e.Gamer.Gamertag + Environment.NewLine;
         gamerList.Position = gamerList.GetCenterPosition(Graphics.Viewport);
     }
 }
예제 #6
0
 /// <summary>
 /// Event handler called when a gamer joins the session.
 /// Displays a notification message.
 /// </summary>
 void GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (notifyWhenPlayersJoinOrLeave)
     {
         messageDisplay.ShowMessage(Resources.MessageGamerJoined,
                                    e.Gamer.Gamertag);
     }
 }
예제 #7
0
 void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
 {
     if (!e.Gamer.IsLocal)
     {
         e.Gamer.Tag = new RemotePlayer(new Vector3(-5000, -5000, -5000), e.Gamer);
         Global.remotePlayers.Add((RemotePlayer)e.Gamer.Tag);
     }
 }
예제 #8
0
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);

            GamerGetTag(e.Gamer);

            ReturnOrbsToAI();
            game.OrbsPlaying = Math.Max(game.OrbsPlaying, networkSession.AllGamers.Count);
        }
예제 #9
0
 /// <summary>
 /// Event handler called when a gamer joins the session.
 /// Displays a notification message.
 /// </summary>
 void GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (e.Gamer != networkSession.LocalGamers[0])
     {
         networkHelper.ClientPacketWriter.Write('T');
         networkHelper.ClientPacketWriter.Write(localPlayer.TeamID);
         networkHelper.SendToAll(networkSession, networkHelper.ClientPacketWriter, SendDataOptions.ReliableInOrder);
     }
 }
예제 #10
0
 private void value_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (e.Gamer.IsLocal)
     {
         _dataWriters.Remove(e.Gamer.Id);
         _dataReaders.Remove(e.Gamer.Id);
         _dataWriters.Add(e.Gamer.Id, new PacketWriter());
         _dataReaders.Add(e.Gamer.Id, new PacketReader());
     }
 }
 void Host_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     /*if (GameMain.CurrentState == GameState.WaitingPlayers &&
      * _session.RemoteGamers.Count == GameMain.PlayerCount)*/
     if (_session.RemoteGamers.Count >= 1)
     {
         GameMain.ChangeState(GameState.PlayingHost);
         _session.StartGame();
     }
 }
예제 #12
0
            internal void Session_GamerJoined(object sender, GamerJoinedEventArgs e)
            {
                // If we invited this friend to our session, this is where we detect them arriving while we're at the share hub.
                UIGridShareFriendElement elem = FindFriendElement(e.Gamer.Gamertag);

                if (elem != null)
                {
                    elem.Friend.IsJoining = false;
                    elem.Friend.IsJoined  = true;
                }
            }
예제 #13
0
 void GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (e.Gamer.IsHost)
     {
         e.Gamer.Tag = CreateChasingSprite();
     }
     else
     {
         e.Gamer.Tag = CreateChasedSprite();
     }
 }
예제 #14
0
        /// <summary>
        /// This event handler will be called whenever a new gamer joins the session.
        /// We use it to allocate a Ship object, and associate it with the new gamer.
        /// </summary>
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            //int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);
            RacerType pType = RacerType.Remote;

            if (e.Gamer.IsLocal)
            {
                pType = RacerType.LocalHuman;
            }
            //TODO: uncomment this code and make it work//e.Gamer.Tag = Race.addPlayer(pType);
        }
예제 #15
0
        /// <summary>
        /// Event handler called when a gamer joins the session.
        /// Displays a notification message.
        /// </summary>
        void GamerJoined(object sender, GamerJoinedEventArgs e)
        {
            int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);

            e.Gamer.Tag = new Player(Game.Content, 0);

            if (notifyWhenPlayersJoinOrLeave)
            {
                messageDisplay.ShowMessage(Resources.MessageGamerJoined,
                                           e.Gamer.Gamertag);
            }
        }
예제 #16
0
 void session_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     if (e.Gamer.IsHost)
     {
         message = "The Host started the session!";
     }
     else
     {
         message = "Gamer " + e.Gamer.Tag + " joined the session!";
         // Other played joined, start the game!
         session.StartGame();
     }
 }
예제 #17
0
        /// <summary>
        /// Handles a player joining the game.  The new gamer should be sent
        /// all the entity components it will need to synchonize with this
        /// peer (i.e. all the components this peer has authority over)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            // We only need to update remote gamers - local ones will share
            // our local game state
            if (!e.Gamer.IsLocal)
            {
                // Send components for all entitys that we have authority over
                // (i.e. those with a local component)
                foreach (Local local in game.LocalComponent.All)
                {
                    // Send position
                    if (game.PositionComponent.Contains(local.EntityID))
                    {
                        Position position = game.PositionComponent[local.EntityID];
                        packetWriter.Write(position.EntityID);
                        packetWriter.Write((short)PacketTypes.Position);
                        packetWriter.Write(position.Center);
                        packetWriter.Write(position.Radius);
                    }

                    // Send sprite
                    if (game.SpriteComponent.Contains(local.EntityID))
                    {
                        Sprite sprite = game.SpriteComponent[local.EntityID];
                        packetWriter.Write(sprite.EntityID);
                        packetWriter.Write((short)PacketTypes.Sprite);
                        packetWriter.Write(sprite.SpriteSheet.Name);
                        packetWriter.Write(sprite.SpriteBounds.X);
                        packetWriter.Write(sprite.SpriteBounds.Y);
                        packetWriter.Write(sprite.SpriteBounds.Width);
                        packetWriter.Write(sprite.SpriteBounds.Height);
                    }

                    // Send movement sprite
                    if (game.MovementSpriteComponent.Contains(local.EntityID))
                    {
                        MovementSprite sprite = game.MovementSpriteComponent[local.EntityID];
                        packetWriter.Write(sprite.EntityID);
                        packetWriter.Write((short)PacketTypes.MovementSprite);
                        packetWriter.Write(sprite.SpriteSheet.Name);
                        packetWriter.Write(sprite.SpriteBounds.X);
                        packetWriter.Write(sprite.SpriteBounds.Y);
                        packetWriter.Write(sprite.SpriteBounds.Width);
                        packetWriter.Write(sprite.SpriteBounds.Height);
                    }

                    // Send the data
                    session.LocalGamers[0].SendData(packetWriter, SendDataOptions.InOrder, e.Gamer);
                }
            }
        }
예제 #18
0
        /// <summary>
        /// This event handler will be called whenever a new gamer joins the session.
        /// We use it to allocate a Tank object, and associate it with the new gamer.
        /// </summary>
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);

            Debug.WriteLine(" gamer join: {0} \n", gamerIndex);
            e.Gamer.Tag = new Ship(gamerIndex);

            InputQueue.pShip[gamerIndex] = e.Gamer.Tag as Ship;

            //if(e.Gamer.IsHost)
            //{
            //    Ship thisShip = e.Gamer.Tag as Ship;
            //    //this.tankTextureCurrent = thisTank.tankTextureGreen;
            //}
        }
예제 #19
0
        /// <summary>
        /// This event handler will be called whenever a new gamer joins the session.
        /// We use it to allocate a Tank object, and associate it with the new gamer.
        /// </summary>
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);

            if (Host == true && gamerIndex == 0)
            {
                e.Gamer.Tag = PlayerManager.getPlayer(PlayerID.one);
            }
            else if (Host == true && gamerIndex == 1)
            {
                e.Gamer.Tag = PlayerManager.getPlayer(PlayerID.two);
            }
            else if (Host == false && gamerIndex == 0)
            {
                e.Gamer.Tag = PlayerManager.getPlayer(PlayerID.two);
            }
            else if (Host == false && gamerIndex == 1)
            {
                e.Gamer.Tag = PlayerManager.getPlayer(PlayerID.one);
            }
        }
예제 #20
0
 /* Event handler for gamer joined; forward to the game if it's listening.
  */
 void session_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     Trace.WriteLine(String.Format("Gamer joined: {0}", e.Gamer.Gamertag));
     if (e.Gamer.IsLocal)
     {
         return;
     }
     if (session != null)
     {
         UpdateVoice();
         if (sessionType == SessionType.HighscoresOnly)
         {
             //  stay open for five minutes, or until the host kills it
             sessionCloseTime = Timing.NowTicks + 300 * 10000000L;
         }
         if (toSend.Count == 0 && storage.HasLoaded)
         {
             LoadHighscores();
         }
     }
     if (sessionType == SessionType.HighscoresAndGame ||
         sessionType == SessionType.HighscoresOnly)
     {
         if (e.Gamer is NetworkGamer)
         {
             NetworkGamer ng = e.Gamer as NetworkGamer;
             if (!ng.IsLocal)
             {
                 joinedGamers.Add(e.Gamer, new JoinedGamer(ng));
             }
         }
     }
     if (GamerJoined != null)
     {
         gea.Gamer  = e.Gamer;
         gea.Joined = true;
         GamerJoined(this, gea);
     }
 }
예제 #21
0
        private static void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            NetworkGamer networkGamer = e.Gamer;

            if (Main.netMode == 0)
            {
                for (int i = 0; i < 4; i++)
                {
                    UI uI = Main.ui[i];
                    if (uI.wasRemovedFromSessionWithoutOurConsent)
                    {
                        SignedInGamer signedInGamer = uI.signedInGamer;
                        if (signedInGamer != null && signedInGamer.Gamertag == networkGamer.Gamertag)
                        {
                            networkGamer.Tag = uI.player;
                            return;
                        }
                    }
                }
            }
            else if (!networkGamer.IsLocal)
            {
                Main.checkUserGeneratedContent = true;
            }
            int    j      = 0;
            Player player = null;

            if (Main.netMode != 1)
            {
                for (; playerSlots[j]; j++)
                {
                }
                playerSlots[j] = true;
            }
            if (networkGamer.IsLocal)
            {
                LocalNetworkGamer localNetworkGamer = (LocalNetworkGamer)networkGamer;
                SignedInGamer     signedInGamer2    = localNetworkGamer.SignedInGamer;
                UI uI2 = Main.ui[(int)signedInGamer2.PlayerIndex];
                uI2.localGamer = localNetworkGamer;
                if (Main.netMode != 1)
                {
                    uI2.JoinSession(j);
                    player        = (Player)(networkGamer.Tag = Main.player[j]);
                    player.client = null;
                    if (networkGamer.IsHost)
                    {
                        sessionReadyEvent.Set();
                    }
                    else
                    {
                        Main.JoinGame(uI2);
                    }
                }
                else
                {
                    gamersWaitingForPlayerId.Add(uI2);
                }
                if (gamer == null)
                {
                    gamer = localNetworkGamer;
                }
            }
            else if (Main.netMode == 2)
            {
                SetAsRemotePlayerSlot(j);
                NetClient netClient = null;
                for (int num = clients.Count - 1; num >= 0; num--)
                {
                    if (clients[num].machine == networkGamer.Machine)
                    {
                        netClient = clients[num];
                        break;
                    }
                }
                if (netClient == null)
                {
                    netClient = new NetClient(networkGamer);
                    clients.Add(netClient);
                    NetMessage.syncPlayers();
                }
                player = Main.player[j];
                netClient.GamerJoined(player);
                networkGamer.Tag = player;
                NetMessage.SendPlayerId(networkGamer, j);
            }
            else if (Main.netMode == 1 && gamer != null)
            {
                NetMessage.CreateMessage0(11);
                NetMessage.SendMessage();
            }
        }
예제 #22
0
        /// <summary>
        /// This event handler will be called whenever a new gamer joins the session.
        /// We use it to allocate a Tank object, and associate it with the new gamer.
        /// </summary>
        void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
        {
            int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);

            e.Gamer.Tag = new Tank(gamerIndex, Content, screenWidth, screenHeight);
        }
예제 #23
0
 /// <summary>
 /// Adds the assosciated network stream with the new gamer that joined the network session.
 /// </summary>
 /// <param name="sender">The network.</param>
 /// <param name="e">Event arguments.</param>
 protected virtual void GamerJoined(object sender, GamerJoinedEventArgs e)
 {
 }
예제 #24
0
파일: LTO.cs 프로젝트: rdgoetz/LessThanOk
 void SessionGamerJoinedHandler(object sender, GamerJoinedEventArgs e)
 {
     //throw new NotImplementedException();
 }
예제 #25
0
 public void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
 {
     OnNewGamer(e.Gamer, GetGamerIndex(e.Gamer));
     //int gamerIndex = networkSession.AllGamers.IndexOf(e.Gamer);
     //e.Gamer.Tag = new Player();
 }
예제 #26
0
 static void networkSession_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     GamerJoined(sender, e);
 }
 void _networkSession_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     throw new NotImplementedException();
 }
 void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
 {
     log.Add(e.Gamer.Gamertag + " joined the current session");
 }
 private static void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
 {
 }
예제 #30
0
 void session_GamerJoined(object sender, GamerJoinedEventArgs e)
 {
     throw new Exception("The method or operation is not implemented.");
 }