Exemple #1
0
        public ResponseMessage GetPlayerInRoom(int ID_room)
        {
            string    query = "SELECT * from room_list where id =" + ID_room;
            room_list room_ = db.Database.SqlQuery <room_list>(query).FirstOrDefault();

            return(new ResponseMessage("Lấy dữ liêu thành công", db.GetListPlayerInRoom(ID_room).ToList(), room_.owner_id));
        }
Exemple #2
0
        private void DoInBackground()
        {
            DatabaseGameBaiEntities db = new DatabaseGameBaiEntities();

            try
            {
                while (true)
                {
                    string nhan = reader.ReadLine();
                    if (nhan.ToLower() == "cmd_exit")
                    {
                        //var client = new RestClient("");
                        Console.WriteLine("Disconnect " + socket.RemoteEndPoint);
                        socket.Close();
                        break;
                    }
                    PlayerModel playerModel = JsonConvert.DeserializeObject <PlayerModel>(nhan);
                    UServer     server      = new UServer();
                    room_list   room        = db.room_list.Where(e => e.id == id_room).FirstOrDefault();
                    switch (playerModel.cmd.ToLower())
                    {
                    //làm mới lại danh sách phòng chơi
                    case "refresh_listroom":
                        server.ID    = ID;
                        server.key   = "refresh_listroom";
                        server.value = JsonConvert.SerializeObject(playerModel);
                        SendAllNotInRoom(JsonConvert.SerializeObject(server));
                        break;

                    case "join_room":
                        if (Program.inRooms.ContainsKey(playerModel.ID_room))
                        {
                            Program.inRooms[playerModel.ID_room].listPlayer.Add(ID);
                            Console.WriteLine(ID + " da vào phong " + playerModel.ID_room);
                        }
                        else
                        {
                            //List<int> players = new List<int>();
                            Program.inRooms.Add(playerModel.ID_room, new Room(new List <int>()
                            {
                                ID
                            }));
                            Console.WriteLine(ID + " da tao phong " + playerModel.ID_room);
                        }
                        server.ID    = ID;
                        server.key   = "join_room";
                        server.value = JsonConvert.SerializeObject(playerModel);
                        id_room      = playerModel.ID_room;
                        SendAllRoom(playerModel.ID_room, JsonConvert.SerializeObject(server));

                        server.key   = "refresh_listroom";
                        server.value = JsonConvert.SerializeObject(playerModel);
                        SendAllNotInRoom(JsonConvert.SerializeObject(server));
                        break;

                    //case "update":
                    //    server.ID = ID;
                    //    server.key = "update";
                    //    server.value = JsonConvert.SerializeObject(playerModel);
                    //    SendAllRoom(id_room, JsonConvert.SerializeObject(server));
                    //    break;
                    case "leave_room":
                        if (Program.inRooms.ContainsKey(playerModel.ID_room))
                        {
                            Program.inRooms[playerModel.ID_room].listPlayer.Remove(playerModel.ID_player);
                            server.ID = ID;

                            server.value = JsonConvert.SerializeObject(playerModel);
                            id_room      = playerModel.ID_room;

                            if (Program.inRooms[playerModel.ID_room].isPlaying)
                            {
                                db.truTien(room.bet_money * room.current_player, playerModel.ID_player);
                                db.SaveChanges();
                                foreach (var item in Program.inRooms[id_room].listPlayer)
                                {
                                    db.congTien(room.bet_money + (int)(room.bet_money * 10 / 100), item);
                                    db.SaveChanges();
                                    player player = db.players.Where(e => e.id == item).FirstOrDefault();
                                }
                                server.key = "end_game";
                            }
                            else
                            {
                                server.key = "leave_room";
                            }
                            SendAllRoom(playerModel.ID_room, JsonConvert.SerializeObject(server));

                            server.key   = "refresh_listroom";
                            server.value = JsonConvert.SerializeObject(playerModel);
                            SendAllNotInRoom(JsonConvert.SerializeObject(server));
                        }
                        if (Program.inRooms[playerModel.ID_room].listPlayer.Count < 1)
                        {
                            Program.inRooms.Remove(playerModel.ID_room);
                        }
                        break;

                    case "login":
                        if (!Program.clients.ContainsKey(ID))
                        {
                            Console.WriteLine("login succses!: " + socket.RemoteEndPoint);
                            ID = playerModel.ID_player;
                            Program.clients.Add(ID, this);
                            Console.WriteLine(ID + ":" + nhan);
                            //Console.WriteLine("pos:" + Program.clients[ID].ID);
                        }
                        server.ID    = ID;
                        server.key   = "succses";
                        server.value = "true";
                        Send(JsonConvert.SerializeObject(server));
                        //Console.WriteLine(JsonConvert.SerializeObject(server));
                        //SendAll(JsonConvert.SerializeObject(server));
                        stream.ReadTimeout = -1;
                        break;

                    case "chat_all":
                        server.ID    = ID;
                        server.key   = "chat_all";
                        server.value = JsonConvert.SerializeObject(playerModel);
                        Send(JsonConvert.SerializeObject(server));
                        SendAll(JsonConvert.SerializeObject(server));
                        break;

                    case "checkroom":
                        server.ID    = ID;
                        server.key   = "checkroom";
                        server.value = "true";
                        Send(JsonConvert.SerializeObject(server));
                        //Console.WriteLine(JsonConvert.SerializeObject(server));
                        //SendAll(JsonConvert.SerializeObject(server));
                        break;

                    case "win":
                        if (Program.inRooms[id_room].isPlaying)
                        {
                            db.congTien(room.bet_money * room.current_player, playerModel.ID_player);
                            db.SaveChanges();
                        }
                        server.ID    = ID;
                        server.key   = playerModel.cmd.ToLower();
                        server.value = JsonConvert.SerializeObject(playerModel);
                        SendAllRoom(id_room, JsonConvert.SerializeObject(server));

                        Program.inRooms[playerModel.ID_room].isPlaying = false;

                        //List<PlayerMoneyModel> listMoneywin = new List<PlayerMoneyModel>();
                        //foreach (var item in Program.inRooms[id_room].listPlayer)
                        //{
                        //    player player = db.players.Where(e => e.id == item).FirstOrDefault();
                        //    listMoneywin.Add(new PlayerMoneyModel(player.id, player.money));
                        //}
                        DataPackedPlayerMoney dataPackedWin = new DataPackedPlayerMoney();
                        //dataPackedWin.message = listMoneywin;
                        dataPackedWin.sumMoneyWin = (double)(room.bet_money * room.current_player);

                        server.ID    = ID;
                        server.key   = "update";
                        server.value = JsonConvert.SerializeObject(dataPackedWin);
                        SendAllRoom(id_room, JsonConvert.SerializeObject(server));
                        break;

                    case "start_game":
                        if (ID == room.owner_id && Program.inRooms.ContainsKey(id_room))
                        {
                            List <PlayerMoneyModel> listMoney = new List <PlayerMoneyModel>();
                            foreach (var item in Program.inRooms[id_room].listPlayer)
                            {
                                db.truTien(room.bet_money, item);
                                db.SaveChanges();
                                player player = db.players.Where(e => e.id == item).FirstOrDefault();
                                listMoney.Add(new PlayerMoneyModel(player.id, player.money));
                            }
                            //playerModel.message = JsonConvert.SerializeObject(listMoney);
                            server.ID    = ID;
                            server.key   = playerModel.cmd.ToLower();
                            server.value = JsonConvert.SerializeObject(playerModel);
                            SendAllRoom(id_room, JsonConvert.SerializeObject(server));
                            Program.inRooms[playerModel.ID_room].isPlaying = true;
                            //cập nhập tiền của player
                            DataPackedPlayerMoney dataPacked = new DataPackedPlayerMoney();
                            dataPacked.message = listMoney;

                            server.ID    = ID;
                            server.key   = "update";
                            server.value = JsonConvert.SerializeObject(dataPacked);
                            SendAllRoom(id_room, JsonConvert.SerializeObject(server));
                        }
                        break;

                    default:
                        server.ID    = ID;
                        server.key   = playerModel.cmd.ToLower();
                        server.value = JsonConvert.SerializeObject(playerModel);
                        if (playerModel.cmd.StartsWith("all_"))
                        {
                            SendAll(JsonConvert.SerializeObject(server));
                        }
                        else if (playerModel.cmd.StartsWith("lby_"))
                        {
                            SendAllNotInRoom(JsonConvert.SerializeObject(server));
                        }
                        else
                        {
                            SendAllRoom(id_room, JsonConvert.SerializeObject(server));
                        }
                        break;
                    }
                    //SendAll(nhan);
                    Program.Logs(JsonConvert.SerializeObject(Program.inRooms));
                    //writer.WriteLine("hello " + nhan);
                }
            }
            catch (Exception e)
            {
                Program.ErrorLogs(e);

                Program.clients.Remove(ID);
                Program.inRooms.Remove(id_room);
                Console.WriteLine("Disconnect " + socket.RemoteEndPoint);
                if (socket.Connected)
                {
                    socket.Close();
                    Console.WriteLine("stop:" + ID);
                }
                Program.Logs(JsonConvert.SerializeObject(Program.inRooms));
            }
        }