Beispiel #1
0
        public void StartDuel(Player player)
        {
            if (State != GameState.Lobby)
                return;
            if (!player.Equals(HostPlayer))
                return;
            for (int i = 0; i < Players.Length; i++)
            {
                if (!IsReady[i])
                    return;
                if (Players[i] == null)
                    return;
            }

            State = GameState.Hand;
            if (Program.Config.STDOUT == true) 
                Console.WriteLine("::::startduel");

            SendToAll(new GameServerPacket(StocMessage.DuelStart));

            SendHand();
        }
Beispiel #2
0
 public void KickPlayer(Player player, int pos)
 {
     if (State != GameState.Lobby)
         return;
     if (pos >= Players.Length || !player.Equals(HostPlayer) || player.Equals(Players[pos]) || Players[pos] == null)
         return;
     RemovePlayer(Players[pos]);
     if (Program.Config.STDOUT == true) 
         Console.WriteLine("::::left-slot|{1}|{0}", player.Name, pos);
 }
Beispiel #3
0
        public void RemovePlayer(Player player)
        {
            if (player.Equals(HostPlayer) && State == GameState.Lobby)
                m_room.Close();
            else if (player.Type == (int)PlayerType.Observer)
            {
                Observers.Remove(player);
                if (State == GameState.Lobby)
                {
                    GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange);
                    nwatch.Write((short)Observers.Count);
                    SendToAll(nwatch);
                    if (Program.Config.STDOUT == true)
                    Console.WriteLine("::::spectator|{0}", Observers.Count);
                }
             //   if (Program.Config.STDOUT == true)        
             //       Console.WriteLine("{0} - disconnected", player.Name); //Need API
                player.Disconnect();
            }
            else if (State == GameState.Lobby)
            {
                Players[player.Type] = null;
                IsReady[player.Type] = false;

                GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange);
                change.Write((byte)((player.Type << 4) + (int)PlayerChange.Leave));
                if (Program.Config.STDOUT == true)
                    Console.WriteLine("::::left-slot|{1}|{0}", player.Name, player.Type);

                SendToAll(change);
                player.Disconnect();
            }
            else
                Surrender(player, 4, true);
        }
Beispiel #4
0
		public void StartDuel(Player player)
		{
			if (State != GameState.Lobby)
				return;
			if (!player.Equals(HostPlayer))
				return;
			for (int i = 0; i < Players.Length; i++)
			{
				if (!IsReady[i]){
					return;
				}
				if (Players[i] == null){
					return;
				}
			}

			State = GameState.Hand;
			SendToAll(new GameServerPacket(StocMessage.DuelStart));

			SendHand();
		}
Beispiel #5
0
		public void KickPlayer(Player player, int pos)
		{
			if (State != GameState.Lobby)
				return;
			if (pos >= Players.Length || !player.Equals(HostPlayer) || player.Equals(Players[pos]) || Players[pos] == null)
				return;
			RemovePlayer(Players[pos]);
		}
Beispiel #6
0
		public void RemovePlayer(Player player)
		{
			if(player==null){
				return;
			}
			if (player.Equals(HostPlayer) && State == GameState.Lobby){
				//Logger.WriteLine("HostPlayer is leave", false);
				m_room.Close(true);
			}
			else if (player.Type == (int)PlayerType.Observer)
			{
				Observers.Remove(player);
				if (State == GameState.Lobby)
				{
					GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange);
					nwatch.Write((short) Observers.Count);
					SendToAll(nwatch);
				}
				player.Disconnect();
			}
			else if (State == GameState.Lobby)
			{
				Players[player.Type] = null;
				IsReady[player.Type] = false;
				GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange);
				change.Write((byte)((player.Type << 4) + (int) PlayerChange.Leave));
				SendToAll(change);
				player.Disconnect();
			}
			else{
//				if(CanPause){
//					if(State == GameState.Duel){
//						//断线重连
//						string name = player.Name;
//						int pos = player.Type;
//						if(pos != (int)PlayerType.Observer){
//							PlayerNames[pos] = name;
//							Players[pos] = null;
//							IsPause = true;
//							AutoEndTrun = false;
//							SendToAll(GameManager.getMessage(string.Format(Messages.MSG_DISCONECT
//							                                               , name, Config.GameTimer),PlayerType.Red));
//							return;
//						}
//					}else if(State == GameState.Side){
//						//断线重连
//						IsPause = true;
//					}
//				}
				if(IsEnd){
					return;
				}
				Surrender(player, 4, true);
			}
		}