예제 #1
0
        /// <summary>
        /// Raised when a player leaves
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnLivePlayerLeft(object sender, GamerLeftEventArgs e)
        {
            IdentifiedPlayer identifiedPlayer = null;

            if (e.Gamer.IsLocal)
            {
                SignedInGamer signedInGamer = ((LocalNetworkGamer)e.Gamer).SignedInGamer;
                _localPlayers.ForEach(action =>
                {
                    if (action.UniqueId == signedInGamer.Gamertag)
                    {
                        identifiedPlayer = action;
                        _localPlayers.Remove(action);
                        _allPlayers.Remove(action);
                    }
                });
            }
            else
            {
                _remotePlayers.ForEach(action =>
                {
                    if (action.UniqueId == e.Gamer.Gamertag)
                    {
                        identifiedPlayer = action;
                        _remotePlayers.Remove(action);
                        _allPlayers.Remove(action);
                    }
                });
            }

            OnPlayerLeft(identifiedPlayer);
        }
예제 #2
0
 private void value_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     if (e.Gamer.IsLocal)
     {
         _dataWriters.Remove(e.Gamer.Id);
         _dataReaders.Remove(e.Gamer.Id);
     }
 }
예제 #3
0
 /// <summary>
 /// Handles a player leaving.  Any entities belongong to that player must
 /// have authority transferred to another player (this is the responsiblity
 /// of the host)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
 {
     if (session.IsHost)
     {
         // TODO: Transfer authority for the remote player's entities
         // to another player
     }
 }
        void GamerLeft(object sender, GamerLeftEventArgs e)
        {
            //dispose of network session
            networkSession.Dispose();
            networkSession = null;

            currentGameState = GameState.FindSession;
        }
예제 #5
0
 /// <summary>
 /// Event handler called when a gamer leaves the session.
 /// Displays a notification message.
 /// </summary>
 void GamerLeft(object sender, GamerLeftEventArgs e)
 {
     if (notifyWhenPlayersJoinOrLeave)
     {
         messageDisplay.ShowMessage(Resources.MessageGamerLeft,
                                    e.Gamer.Gamertag);
     }
 }
        /// <summary>
        /// Handle a player leaving the game.
        /// </summary>
        void networkSession_GamerLeft(object sender, GamerLeftEventArgs e)
        {
            PlayerData playerData = e.Gamer.Tag as PlayerData;

            if ((playerData != null) && (playerData.Ship != null))
            {
                playerData.Ship.Die(null, true);
            }
        }
예제 #7
0
            internal void Session_GamerLeft(object sender, GamerLeftEventArgs e)
            {
                UIGridShareFriendElement elem = FindFriendElement(e.Gamer.Gamertag);

                if (elem != null)
                {
                    elem.Friend.IsJoined = false;
                }
            }
        void Client_GamerLeft(object sender, GamerLeftEventArgs e)
        {
            _session.Dispose();

            if (_session.RemoteGamers.Count <= 0)
            {
                GameMain.ChangeState(GameState.TitleScreen);
            }
        }
예제 #9
0
 /* Event handler for gamer left; forward to the game if it's listening.
  */
 void session_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     Trace.WriteLine(String.Format("Gamer left: {0}", e.Gamer.Gamertag));
     joinedGamers.Remove(e.Gamer);
     if (GamerLeft != null)
     {
         gea.Gamer  = e.Gamer;
         gea.Joined = false;
         GamerLeft(this, gea);
     }
 }
예제 #10
0
        private static void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
        {
            NetworkGamer networkGamer = e.Gamer;
            Player       player       = networkGamer.Tag as Player;

            if (networkGamer.IsLocal)
            {
                UI uI = Main.ui[(int)((LocalNetworkGamer)networkGamer).SignedInGamer.PlayerIndex];
                if (Main.netMode == 0 && uI.wasRemovedFromSessionWithoutOurConsent)
                {
                    return;
                }
                uI.LeaveSession();
            }
            if (Main.netMode == 1)
            {
                return;
            }
            int whoAmI = player.whoAmI;

            player.active       = 0;
            playerSlots[whoAmI] = false;
            if (Main.netMode != 2)
            {
                return;
            }
            if (networkGamer.IsLocal)
            {
                if (UI.main.isInviteOnly)
                {
                    session.PrivateGamerSlots++;
                }
            }
            else
            {
                NetClient client = player.client;
                if (client.GamerLeft(player))
                {
                    clients.Remove(client);
                }
                else if (networkGamer == client.gamer)
                {
                    client.gamer = client.machine.Gamers[0];
                }
            }
            NetMessage.CreateMessage2(14, whoAmI, 0);
            NetMessage.SendMessage();
            if (player.announced)
            {
                player.announced = false;
                NetMessage.SendText(player.oldName, 33, 255, 240, 20, -1);
            }
        }
예제 #11
0
 private void netSession_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     if (e.Gamer.IsLocal)
     {
         _netSession.Dispose();
         _netSession    = null;
         _hasLeft       = true;
         _remoteMapName = "";
         _packetReader.Close();
         _packetWriter.Close();
     }
 }
예제 #12
0
 void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
 {
     if (e.Gamer.IsLocal)
     {
         LocalPlayer player = e.Gamer.Tag as LocalPlayer;
         Global.localPlayers.Remove(player);
     }
     else
     {
         RemotePlayer player = e.Gamer.Tag as RemotePlayer;
         Global.remotePlayers.Remove(player);
     }
 }
예제 #13
0
 /// <summary>
 /// Removes the assosciated network stream of the new gamer that left the network session.
 /// </summary>
 /// <param name="sender">The network.</param>
 /// <param name="e">Event arguments.</param>
 protected virtual void GamerLeft(object sender, GamerLeftEventArgs e)
 {
 }
 void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
 {
     log.Add(e.Gamer.Gamertag + " left the current session");
 }
예제 #15
0
 void Session_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     gamerList.Text.Replace(e.Gamer.Gamertag + Environment.NewLine, "");
     gamerList.Position = gamerList.GetCenterPosition(Graphics.Viewport);
 }
예제 #16
0
파일: LTO.cs 프로젝트: rdgoetz/LessThanOk
 void SessionGamerLeftHandler(object sender, GamerLeftEventArgs e)
 {
     //throw new NotImplementedException();
 }
예제 #17
0
 void session_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     message = "Gamer " + e.Gamer.Tag + " left the session!";
 }
예제 #18
0
 void session_GamerLeft(object sender, GamerLeftEventArgs e)
 {
 }
예제 #19
0
 void session_GamerLeft(object sender, GamerLeftEventArgs e)
 {
     sayMessage("Gamer " + e.Gamer.Tag + " left the session!");
 }
 void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
 {
     log.Add(e.Gamer.Gamertag + " left the current session");
     gamerTimes.Remove(e.Gamer.Gamertag);
     lastChatMessage.Remove(e.Gamer.Gamertag);
 }
예제 #21
0
 public void GamerLeftEventHandler(object sender, GamerLeftEventArgs e)
 {
     OnGamerLeft(e.Gamer, GetGamerIndex(e.Gamer));
 }