示例#1
0
        public static void RejectFriendRequest(int _fromClient, Packet _packet)
        {
            int _toClientID   = _packet.ReadInt();
            int _fromClientID = _packet.ReadInt();

            using (SqliteDataAccess _db = new SqliteDataAccess())
            {
                if (_db.GetFriendRequest(_fromClientID, _toClientID))
                {
                    _db.RemoveFriendRequest(_fromClientID, _toClientID);

                    ServerSend.FriendshipRequestHandled(_fromClient, "Friend request removed.");
                }
            }
        }
示例#2
0
            public void Connect(TcpClient _socket)
            {
                socket = _socket;
                socket.ReceiveBufferSize = dataBufferSize;
                socket.SendBufferSize    = dataBufferSize;

                stream = socket.GetStream();

                receiveData   = new Packet();
                receiveBuffer = new byte[dataBufferSize];

                stream.BeginRead(receiveBuffer, 0, dataBufferSize, ReceiveCallback, null);
                ServerSend.Welcome(id, "Welcome to Laser Focus");
                Console.WriteLine("Connected sucessfully");
            }
 public void StartMatch()
 {
     foreach (Client client in clients)
     {
         if (!client.player.readyToStart)
         {
             Console.WriteLine($"Waiting for player {client.player.username} to finish loading");
             return;
         }
     }
     foreach (Client client in clients)
     {
         ServerSend.SendDeckToPlayer(client.id);
     }
     gameBegun = true;
     Console.WriteLine($"All players finished loading. Ready to start.");
     NextTurn();
 }
示例#4
0
        public static void AcceptFriendRequest(int _fromClient, Packet _packet)
        {
            int _toClientID   = _packet.ReadInt(); //User that received request
            int _fromClientID = _packet.ReadInt(); //User that sent request

            using (SqliteDataAccess _db = new SqliteDataAccess())
            {
                if (_db.GetFriendRequest(_fromClientID, _toClientID))
                {
                    Console.WriteLine($"User {_db.GetUserData(_toClientID).username} accepted friend request from {_db.GetUserData(_fromClientID).username}");
                    _db.AcceptFriendRequest(_fromClientID, _toClientID);
                    _db.AcceptFriendRequest(_toClientID, _fromClientID);
                    _db.RemoveFriendRequest(_fromClientID, _toClientID);

                    ServerSend.FriendshipRequestHandled(_fromClient, "Friend added.");
                }
            }
        }
示例#5
0
        public static void SendFriendRequest(int _fromClient, Packet _packet)
        {
            int _fromClientID = _packet.ReadInt();
            int _toClientID   = _packet.ReadInt();

            using (SqliteDataAccess _db = new SqliteDataAccess())
            {
                if (!_db.GetFriendRequest(_fromClientID, _toClientID))
                {
                    _db.SendFriendRequest(_fromClientID, _toClientID);

                    ServerSend.FriendshipRequestHandled(_fromClient, "Friend request sent.");
                }
                else
                {
                    ServerSend.FriendshipRequestHandled(_fromClient, "The ID you inserted doesn't belong to anyone. Please try again.");
                }
            }
        }
示例#6
0
        public static void CreateUser(int _fromClient, Packet _packet)
        {
            Console.WriteLine("Registering new User");

            string _username = _packet.ReadString();

            using (SqliteDataAccess _db = new SqliteDataAccess())
            {
                if (_db.GetUserData(_username).username != null)
                {
                    Console.WriteLine("Atempted to add user that already existed. Requesting new username.");
                    ServerSend.RequestNewUsername(_fromClient);
                }
                else
                {
                    _db.AddUser(_username);
                    Console.WriteLine($"Registered new user {_username}. Welcome to Laser Focus.");
                    Server.clients[_fromClient].ReturnNewUserData(_db.GetUserData(_username));
                }
            }
        }
        public void LeaveRoom(Client _client)
        {
            if (clients.Contains(_client))
            {
                clients.Remove(_client);
                if (gameBegun && !gameEnded)
                {
                    gameEnded = true;

                    //TELL REMAINING PLAYER OPONENT DISCONNECTED
                    //SEND TO WIN

                    winner = 0;

                    if (clients.Count > 0)
                    {
                        ServerSend.OpponentDisconnected(clients[0].id, "Opponent Connection Failed");
                        Console.WriteLine($"User {clients[winner].player.username} won the match.");
                    }
                }
                if (gameBegun && gameEnded)
                {
                    //TELL REMAINING PLAYER OPONENT FORFEITED
                    //SEND TO WIN

                    winner = 0;

                    if (clients.Count > 0)
                    {
                        ServerSend.OpponentDisconnected(clients[0].id, "Opponent Forfeited");
                        Console.WriteLine($"User {clients[winner].player.username} won the match.");
                    }
                }
                Console.WriteLine($"Player {_client.player.username} left room {id}.");
            }
            if (clients.Count <= 0)
            {
                CloseRoom();
            }
        }
示例#8
0
        public static void RequestAllFriendsList(int _fromClient, Packet _packet)
        {
            int          _fromClientID = _packet.ReadInt();
            List <Int64> list;

            PlayerInfo[] playerInfoArray;
            using (SqliteDataAccess _db = new SqliteDataAccess())
            {
                Console.WriteLine($"Getting friends of {_db.GetUserData(_fromClientID).username}");


                list            = _db.GetAllFriends(_fromClientID);
                playerInfoArray = new PlayerInfo[list.Count];

                for (int i = 0; i < list.Count; i++)
                {
                    playerInfoArray[i] = _db.GetUserData((int)list[i]);
                }

                ServerSend.FriendsListRequestHandled(_fromClient, playerInfoArray);
            }
        }
示例#9
0
        public void SendIntoGame(string _playerName)
        {
            //player = new Player(id, _playerName, new Vector3(0, 0, 0));

            foreach (Client _client in Server.clients.Values)
            {
                if (_client.player != null)
                {
                    if (_client.id != id)
                    {
                        ServerSend.SpawnPlayer(id, _client.player);
                    }
                }
            }

            foreach (Client _client in Server.clients.Values)
            {
                if (_client.player != null)
                {
                    ServerSend.SpawnPlayer(_client.id, player);
                }
            }
        }
示例#10
0
 public void LoadRoom()
 {
     ServerSend.SendPlayersIntoGame(id);
     Console.WriteLine($"Room {id} has enough players. Starting game between {clients[0].player.username} and {clients[1].player.username}");
     playerTurn = rnd.Next(0, maxPlayers);
 }
示例#11
0
 public void ReturnNewUserData(PlayerInfo _data)
 {
     ServerSend.SendUserDataToClient(id, _data);
 }
示例#12
0
 public void SendToRegisterMenu()
 {
     ServerSend.SendToRegisterMenu(id);
 }
示例#13
0
 public void SendToMainMenu()
 {
     ServerSend.SendToMainMenu(id);
 }
示例#14
0
        public static void RequestPlayer(int _fromClient, Packet _packet)
        {
            PlayerID _player = Server.activeRooms[Server.clients[_fromClient].player.currentRoomID].GetPlayer(_fromClient);

            ServerSend.SendPlayerNumber(_fromClient, _player);
        }