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; } } }
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; } } }
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); } }
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); } } } }
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); }
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); } }
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(); }
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); } }
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); } }
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); //} }