Esempio n. 1
0
        public void setUserState(int userId, RoomUserState roomUserState)
        {
            for (int i = 0; i < list_user.Count; i++)
            {
                if (list_user[i].userId == userId)
                {
                    list_user[i].roomUserState = roomUserState;

                    if (roomUserState == RoomUserState.Ready)
                    {
                        // 所有人准备好,开始游戏
                        if (checkIsAllReady())
                        {
                            S2C_GameMode2Start s2c = new S2C_GameMode2Start();
                            s2c.Tag  = CSParam.NetTag.GameMode2Start.ToString();
                            s2c.Code = (int)CSParam.CodeType.Ok;

                            for (int j = 0; j < list_user.Count; j++)
                            {
                                Socket_S.getInstance().Send(list_user[j].clientInfo, s2c);
                            }

                            TimerUtil.start(20, onFrame);
                        }
                    }
                    break;
                }
            }
        }
Esempio n. 2
0
        void onFrame(object source, System.Timers.ElapsedEventArgs e)
        {
            S2C_BroadcastState s2c = new S2C_BroadcastState();

            s2c.Tag  = CSParam.NetTag.BroadcastState.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;

            List <S2C_BroadcastState.BroadcastStateData> cmdList = new List <S2C_BroadcastState.BroadcastStateData>();

            for (int i = 0; i < list_user.Count; i++)
            {
                if (list_user[i].cmd != null)
                {
                    cmdList.Add(list_user[i].cmd);
                }
            }
            s2c.list = cmdList;

            if (cmdList.Count > 0)
            {
                for (int i = 0; i < list_user.Count; i++)
                {
                    Socket_S.getInstance().Send(list_user[i].clientInfo, s2c);
                }
                for (int i = 0; i < list_user.Count; i++)
                {
                    list_user[i].cmd = null;
                }
            }
        }
Esempio n. 3
0
        public void heroEnterNextMap(int userId)
        {
            for (int i = 0; i < list_user.Count; i++)
            {
                if (list_user[i].userId == userId)
                {
                    list_user[i].isTouchTP = true;
                    break;
                }
            }

            for (int i = 0; i < list_user.Count; i++)
            {
                if (!list_user[i].isTouchTP)
                {
                    return;
                }
            }

            S2C_EnterNextMap s2c = new S2C_EnterNextMap();

            s2c.Tag  = CSParam.NetTag.EnterNextMap.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;

            for (int i = 0; i < list_user.Count; i++)
            {
                list_user[i].isTouchTP = false;
                Socket_S.getInstance().Send(list_user[i].clientInfo, s2c);
            }
        }
Esempio n. 4
0
        public static void addUser(ClientInfo clientInfo, C2S_EnterGameMode2 c2s)
        {
            if (!checkIsExist(c2s.UserId))
            {
                waitUserList.Add(new WaitMatchUserInfo(clientInfo, c2s.UserId, c2s.HeroId));

                // 该房间需要的人数
                int needUserCount = 2;
                if (waitUserList.Count >= needUserCount)
                {
                    // 新建房间
                    List <WaitMatchUserInfo> userList = new List <WaitMatchUserInfo>();
                    for (int i = 0; i < needUserCount; i++)
                    {
                        userList.Add(waitUserList[i]);
                    }
                    RoomLogic roomLogic = new RoomLogic(userList);

                    S2C_CanEnterGameMode2 s2c = new S2C_CanEnterGameMode2();
                    s2c.Tag  = CSParam.NetTag.CanEnterGameMode2.ToString();
                    s2c.Code = (int)CSParam.CodeType.Ok;

                    // 所有玩家id
                    {
                        List <int> allUserId = new List <int>();
                        for (int i = 0; i < needUserCount; i++)
                        {
                            allUserId.Add(waitUserList[i].userId);
                        }
                        s2c.allUserId = allUserId;
                    }

                    // 所有玩家使用的角色id
                    {
                        List <int> allHeroId = new List <int>();
                        for (int i = 0; i < needUserCount; i++)
                        {
                            allHeroId.Add(waitUserList[i].heroId);
                        }
                        s2c.allHeroId = allHeroId;
                    }

                    for (int i = 0; i < needUserCount; i++)
                    {
                        Socket_S.getInstance().Send(waitUserList[i].clientInfo, s2c);
                    }

                    // 从等待队列移除
                    for (int i = 0; i < needUserCount; i++)
                    {
                        waitUserList.RemoveAt(0);
                    }
                }
            }
        }
Esempio n. 5
0
        public static void Do(ClientInfo clientInfo, string data)
        {
            S2C_EnterGameMode2 s2c = new S2C_EnterGameMode2();

            s2c.Tag  = CSParam.NetTag.EnterGameMode2.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;
            Socket_S.getInstance().Send(clientInfo, s2c);

            C2S_EnterGameMode2 c2s = JsonConvert.DeserializeObject <C2S_EnterGameMode2>(data);

            MatchLogic.addUser(clientInfo, c2s);
        }
Esempio n. 6
0
        public static void Do(ClientInfo clientInfo, string data)
        {
            S2C_Bag s2c = new S2C_Bag();

            s2c.Tag  = CSParam.NetTag.Bag.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;
            try
            {
                C2S_Bag c2s    = JsonConvert.DeserializeObject <C2S_Bag>(data);
                int     UserId = c2s.UserId;

                List <KeyData> keylist = new List <KeyData>()
                {
                    new KeyData("id", UserId)
                };

                MySqlUtil.getInstance().addCommand(CmdType.query, "bag", keylist, null, (CmdReturnData cmdReturnData) =>
                {
                    if (cmdReturnData.result == CmdResult.OK)
                    {
                        s2c.Code = (int)CSParam.CodeType.Ok;

                        List <Object> list        = cmdReturnData.listData;
                        List <Table_Bag> dataList = new List <Table_Bag>();
                        if (list != null && list.Count > 0)
                        {
                            dataList = Table_Bag.init(list);
                        }
                        s2c.data = JsonConvert.SerializeObject(dataList);
                        Socket_S.getInstance().Send(clientInfo, s2c);
                    }
                    else
                    {
                        s2c.Code = (int)CSParam.CodeType.ServerError;
                        Socket_S.getInstance().Send(clientInfo, s2c);
                        return;
                    }
                });
            }
            catch (Exception ex)
            {
                s2c.Code = (int)CSParam.CodeType.ParamError;
                Socket_S.getInstance().Send(clientInfo, s2c);
            }
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            // 读取文件
            {
                StreamReader sr     = new StreamReader("data/config.json", System.Text.Encoding.GetEncoding("utf-8"));
                string       config = sr.ReadToEnd().ToString();
                sr.Close();

                ConfigEntity.getInstance().data = JsonConvert.DeserializeObject <ConfigData>(config);
            }

            if (true)
            {
                var configData = ConfigEntity.getInstance().data;
                Socket_S.getInstance().Start("0.0.0.0", configData.server_port);
                Socket_S.getInstance().m_onSocketEvent_Receive = OnReceive;

                {
                    // 用API安装事件处理
                    ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine);
                    bool bRet = SetConsoleCtrlHandler(newDelegate, true);
                    if (bRet == false)
                    {
                        // 安装关闭事件失败
                    }
                    else
                    {
                        // 安装关闭事件成功
                    }
                }

                // 打开数据库
                // MySqlUtil.getInstance().openDatabase();
            }

            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
        }
Esempio n. 8
0
        public void getUserState(ClientInfo clientInfo, C2S_GetUserState c2s)
        {
            S2C_GetUserState s2c = new S2C_GetUserState();

            s2c.Tag  = CSParam.NetTag.GetUserState.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;

            List <S2C_BroadcastState.BroadcastStateData> cmdList = new List <S2C_BroadcastState.BroadcastStateData>();

            for (int i = 0; i < c2s.userId_list.Count; i++)
            {
                RoomUserInfo roomUserInfo = getUser(c2s.userId_list[i]);
                if (roomUserInfo != null && roomUserInfo.cmd != null)
                {
                    cmdList.Add(roomUserInfo.cmd);
                }
            }
            s2c.list = cmdList;

            if (cmdList.Count > 0)
            {
                Socket_S.getInstance().Send(clientInfo, s2c);
            }
        }
Esempio n. 9
0
        public static void Do(ClientInfo clientInfo, string data)
        {
            S2C_Register s2c = new S2C_Register();

            s2c.Tag  = CSParam.NetTag.Register.ToString();
            s2c.Code = (int)CSParam.CodeType.Ok;
            try
            {
                C2S_Register c2s      = JsonConvert.DeserializeObject <C2S_Register>(data);
                string       account  = c2s.Account;
                string       password = c2s.Password;

                // 先查询这个账号是否存在
                List <KeyData> keylist = new List <KeyData>()
                {
                    new KeyData("account", account)
                };
                MySqlUtil.getInstance().addCommand(CmdType.query, "user", keylist, null, (CmdReturnData cmdReturnData) =>
                {
                    if (cmdReturnData.result == CmdResult.OK)
                    {
                        List <Object> list = cmdReturnData.listData;

                        // 已存在,注册失败
                        if (list != null && list.Count > 0)
                        {
                            s2c.Code = (int)CSParam.CodeType.RegisterFail_Exist;
                            Socket_S.getInstance().Send(clientInfo, s2c);
                        }
                        // 不存在,先插入数据
                        else
                        {
                            List <KeyData> keylist2 = new List <KeyData>()
                            {
                                new KeyData("account", account),
                                new KeyData("password", password)
                            };
                            MySqlUtil.getInstance().addCommand(CmdType.insert, "user", null, keylist2, (CmdReturnData cmdReturnData2) =>
                            {
                                if (cmdReturnData2.result == CmdResult.OK)
                                {
                                    // 插完数据后再查询该账号,返回userId
                                    MySqlUtil.getInstance().addCommand(CmdType.query, "user", keylist, null, (CmdReturnData cmdReturnData3) =>
                                    {
                                        if (cmdReturnData3.result == CmdResult.OK)
                                        {
                                            List <Object> list3 = cmdReturnData3.listData;
                                            if (list3 != null && list3.Count > 0)
                                            {
                                                Table_User table_User = Table_User.init(list3);
                                                s2c.Code   = (int)CSParam.CodeType.Ok;
                                                s2c.UserId = table_User.id;
                                                Socket_S.getInstance().Send(clientInfo, s2c);
                                            }
                                            else
                                            {
                                                CommonUtil.Log("插入新用户数据后查询不到:account=" + account);
                                                s2c.Code = (int)CSParam.CodeType.ServerError;
                                                Socket_S.getInstance().Send(clientInfo, s2c);
                                            }
                                        }
                                        else
                                        {
                                            s2c.Code = (int)CSParam.CodeType.ServerError;
                                            Socket_S.getInstance().Send(clientInfo, s2c);
                                        }
                                    });
                                }
                                // 插入新用户数据失败
                                else
                                {
                                    CommonUtil.Log("插入新用户数据失败:account=" + account);
                                    s2c.Code = (int)CSParam.CodeType.ServerError;
                                    Socket_S.getInstance().Send(clientInfo, s2c);
                                }
                            });
                        }
                    }
                    else
                    {
                        s2c.Code = (int)CSParam.CodeType.ServerError;
                        Socket_S.getInstance().Send(clientInfo, s2c);
                        return;
                    }
                });
            }
            catch (Exception ex)
            {
                s2c.Code = (int)CSParam.CodeType.ParamError;
                Socket_S.getInstance().Send(clientInfo, s2c);
            }
        }
Esempio n. 10
0
        public static void Do(ClientInfo clientInfo, string data)
        {
            S2C_Login s2c = new S2C_Login();

            s2c.Tag    = CSParam.NetTag.Login.ToString();
            s2c.Code   = (int)CSParam.CodeType.Ok;
            s2c.UserId = RandomUtil.getRandom(1, 100);
            Socket_S.getInstance().Send(clientInfo, s2c);

            //S2C_Login s2c = new S2C_Login();
            //s2c.Tag = CSParam.NetTag.Login.ToString();
            //s2c.Code = (int)CSParam.CodeType.Ok;
            //try
            //{
            //    C2S_Login c2s = JsonConvert.DeserializeObject<C2S_Login>(data);
            //    string account = c2s.Account;
            //    string password = c2s.Password;

            //    List<KeyData> keylist = new List<KeyData>() { new KeyData("account", account) };

            //    MySqlUtil.getInstance().addCommand(CmdType.query, "user", keylist, null, (CmdReturnData cmdReturnData) =>
            //    {
            //        if (cmdReturnData.result == CmdResult.OK)
            //        {
            //            List<Object> list = cmdReturnData.listData;
            //            if (list != null && list.Count > 0)
            //            {
            //                Table_User table_User = Table_User.init(list);
            //                if (table_User.password == password)
            //                {
            //                    s2c.Code = (int)CSParam.CodeType.Ok;
            //                    s2c.UserId = table_User.id;
            //                    s2c.zhanshiLevel = table_User.zhanshilevel;
            //                    s2c.fashiLevel = table_User.fashilevel;
            //                    s2c.huanshiLevel = table_User.huanshilevel;
            //                    Socket_S.getInstance().Send(clientInfo, s2c);
            //                }
            //                else
            //                {
            //                    s2c.Code = (int)CSParam.CodeType.LoginFail;
            //                    Socket_S.getInstance().Send(clientInfo, s2c);
            //                }
            //            }
            //            else
            //            {
            //                s2c.Code = (int)CSParam.CodeType.LoginFail;
            //                Socket_S.getInstance().Send(clientInfo, s2c);
            //            }
            //        }
            //        else
            //        {
            //            s2c.Code = (int)CSParam.CodeType.ServerError;
            //            Socket_S.getInstance().Send(clientInfo, s2c);
            //            return;
            //        }
            //    });
            //}
            //catch (Exception ex)
            //{
            //    s2c.Code = (int)CSParam.CodeType.ParamError;
            //    Socket_S.getInstance().Send(clientInfo, s2c);
            //}
        }