void Update() { //发送心跳包 var nowTime = (uint)(DateTime.Now - startTime).TotalSeconds; // 相差秒数 if (heartTimeFlag == 0 && nowTime >= lastHeartTime + 2) { Debug.Log(rand.Next(10, 500)); Debug.Log(rand.Next(10, 500)); lastHeartTime = nowTime; heartTimeFlag = nowTime; NetSender.Send <ProtoProtocol.heartbeat>(null, (info) => { heartTimeFlag = 0; //var rsp = info as ProtoSprotoType.heartbeat.response; //Debug.Log(rsp.status); }); } //正常情况 没有收到心跳包的回包 开启重连 if (loginStatus && heartTimeFlag != 0 && nowTime >= heartTimeFlag + 2) { heartTimeFlag = 0; OnClickLogin(null, null); } }
//send find match msg to server public void FindRoom() { Debug.Log("FindRoom called"); MultiGameState = GameState.Game_Match; TheUserMatchState = UserMatchState.FindRoom; SprotoType.matchMsg.request req = new SprotoType.matchMsg.request(); req.matchMsgType = (int)MatchMsgType.Match_FindRoom; //mChen //switch (GameManager.TheGameMode) //{ // case GameMode.MultiGame_1v1: // req.matchInfo = ((int)MatchType.Normal_1v1).ToString(); // break; // case GameMode.MultiGame_2v2: // req.matchInfo = ((int)MatchType.Normal_2v2).ToString(); // break; // case GameMode.MultiGame_3v3: // req.matchInfo = ((int)MatchType.Normal_3v3).ToString(); // break; //} req.matchInfo = ((int)MatchType.Normal_1v1).ToString(); NetSender.Send <Protocol.matchMsg>(req); }
/** * 发送登录协议 **/ private void OnClickLogin(GameObject go, PointerEventData ed) { loginStatus = true; string host = "192.168.87.36"; int port = 9777; NetCore.Connect(host, port, () => NetCore.Receive()); _txtTips.text = "login .."; NetSender.Send <ProtoProtocol.travelerLogin>(null, (info) => { var res = info as ProtoSprotoType.travelerLogin.response; NetCore.Connect(res.ip, (int)res.port, () => NetCore.Receive()); var sendInfo = new ProtoSprotoType.login.request(); sendInfo.session = res.session; sendInfo.token = res.token; NetSender.Send <ProtoProtocol.login>(sendInfo, (loginInfo) => { var loginResInfo = loginInfo as ProtoSprotoType.login.response; Debug.Log(loginResInfo.status); if (!loginResInfo.status) { //账号密码错误 loginStatus = false; } }); }); }
private void txtToSend_KeyDown(object sender, KeyEventArgs e) { if (_sender.IsConnected) { if (e.KeyCode == Keys.Escape) { char esc = (char)27; bool sent = _sender.Send(esc.ToString()); // Esc if (!sent) { lblConnected.Text = "Not Connected"; lblConnected.ForeColor = Color.Red; } e.Handled = true; } } }
void Auth(byte[] etokens) { Debug.Log(etokens.ToString()); // 账号密码服务器验证 auth.request req = new auth.request(); req.etokens = Convert.ToBase64String(etokens); NetSender.Send <ClientProtocol.auth>(req); }
void MapReady() { NetSender.Send <ClientProtocol.mapready>(null, (_) => { mapready.response rsp = _ as mapready.response; Debug.Log("进入地图结果:" + rsp.ok); }); }
public void TryToJoinMatch() { Debug.Log("TryToJoinMatch called"); //TheUserMatchState = UserMatchState.JoinedRoom; SprotoType.matchMsg.request req = new SprotoType.matchMsg.request(); req.matchMsgType = (int)MatchMsgType.Match_TryToJoinMatch; NetSender.Send <Protocol.matchMsg>(req); }
//reset gameState public void Reset() { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_Skynet) { //NetCore.Reset(); MultiGameState = GameState.Game_NullState; //SprotoType.quit.request req = new SprotoType.quit.request(); NetSender.Send <Protocol.quit>(null); } }
public void EnterGame() { characterpick.request req = new characterpick.request(); req.uuid = PlayerInfo.Instance.UUID; NetSender.Send <ClientProtocol.characterpick>(req, (_) => { characterpick.response rsp = _ as characterpick.response; Debug.Log("选择角色结果:" + rsp.ok); LoadScene(); }); Debug.Log("选择角色唯一ID:" + PlayerInfo.Instance.UUID); }
void Challenge(byte[] hmac) { // 验证密钥 challenge.request req = new challenge.request(); req.hmac = Convert.ToBase64String(hmac); NetSender.Send <ClientProtocol.challenge>(req, (_) => { challenge.response rsp = _ as challenge.response; Debug.Log(rsp.result); string temp = EncodeToken(); byte[] etoken = desencode(PlayerInfo.Instance.Secret, Encoding.UTF8.GetBytes(temp)); Auth(etoken); }); }
public void LeaveMatchToRoom() { Debug.Log("LeaveMatchToRoom called"); if (TheUserMatchState == UserMatchState.PlayingMatch || TheUserMatchState == UserMatchState.WaitToJoinNextMatch) { MultiGameState = GameState.Game_Match; TheUserMatchState = UserMatchState.JoinedRoom; SprotoType.matchMsg.request req = new SprotoType.matchMsg.request(); req.matchMsgType = (int)MatchMsgType.Match_LeaveMatchToRoom; NetSender.Send <Protocol.matchMsg>(req); } }
public void CreateCharacter() { charactercreate.request req = new charactercreate.request(); req.name = CharacterNameInputField.text; req.job = job; req.sex = sex; NetSender.Send <ClientProtocol.charactercreate>(req, (_) => { Debug.Log("创建角色返回"); Login.Instance.GetCharacterList(); }); Debug.Log("创建角色 名称:" + CharacterNameInputField.text + " 职业:" + job + " 性别:" + sex); }
public void handleInput() { OptStruct optVer = new OptStruct { type = OptType.None }, optHor = new OptStruct { type = OptType.None }; if (InputManager.instance.isKeyPress(KeyCode.W)) { optVer.type = OptType.MoveVer; optVer.value = 1; } else if (InputManager.instance.isKeyPress(KeyCode.S)) { optVer.type = OptType.MoveVer; optVer.value = -1; } if (InputManager.instance.isKeyPress(KeyCode.A)) { optHor.type = OptType.MoveHor; optHor.value = -1; } else if (InputManager.instance.isKeyPress(KeyCode.D)) { optHor.type = OptType.MoveHor; optHor.value = 1; } if (optVer.type != OptType.None) { SprotoType.playopt.request opt = new SprotoType.playopt.request(); opt.optUnit = new SprotoType.optUnit { type = (int)optVer.type, param = optVer.value }; NetSender.Send <Protocol.playopt>(opt, OnRecvOpt); } if (optHor.type != OptType.None) { SprotoType.playopt.request opt = new SprotoType.playopt.request(); opt.optUnit = new SprotoType.optUnit { type = (int)optHor.type, param = optHor.value }; NetSender.Send <Protocol.playopt>(opt, OnRecvOpt); } }
void MoveTo() { if (lastPosition != gameObj.transform.position) { lastPosition = gameObj.transform.position; moveto.request req = new moveto.request(); req.pos = new character_pos(); req.pos.x = Convert.ToInt32(gameObj.transform.position.x) * 10; req.pos.y = Convert.ToInt32(gameObj.transform.position.y) * 10; req.pos.z = Convert.ToInt32(gameObj.transform.position.z) * 10; NetSender.Send <ClientProtocol.moveto>(req, (_) => { }); } }
public void Handshake() { // 生成私钥 clientkey = randomkey(); handshake.request req = new handshake.request(); // 发送公钥 req.clientkey = Convert.ToBase64String(dhexchange(clientkey)); NetSender.Send <ClientProtocol.handshake>(req, (_) => { // 返回消息 handshake.response rsp = _ as handshake.response; serverkey = Convert.FromBase64String(rsp.serverkey); PlayerInfo.Instance.Challenge = Convert.FromBase64String(rsp.challenge); PlayerInfo.Instance.Secret = dhsecret(serverkey, clientkey); Challenge(hmac64(PlayerInfo.Instance.Challenge, PlayerInfo.Instance.Secret)); }); }
public void NetSender_Send_TestMethodAttribute() { var settings = new ConfigurationSettings(); var sender = new NetSender(settings); var hash = HashFunction.Get("SecretWord"); var userName = SystemInfo.GetCurrentUserDomainName(); var photoImg = Image.FromFile("TestImages\\goodPhotoTest.jpg"); var scanImg = Image.FromFile("TestImages\\scanTest.jpg"); var dataPreview = new ArmDataPackage() { Type = ArmDataPackageType.Preview, IIN = 13543543L, Timestamp = DateTime.Now, Comment = "test", Token = hash, UserName = userName, WFMId = 56789L, CameraPicture = photoImg.ToBase64(), ScanPicture = scanImg.ToBase64() }; var dataFull = new ArmDataPackage() { Type = ArmDataPackageType.FullFrame, IIN = 13543543L, Timestamp = DateTime.Now, Comment = "test", Token = hash, UserName = userName, WFMId = 56789L, CameraPicture = photoImg.ToBase64(), ScanPicture = scanImg.ToBase64() }; var packets = new List <ArmDataPackage>(); packets.Add(dataFull); packets.Add(dataPreview); sender.Send(packets); }
public void TestMethod1() { //string Path = ""; var TimeStamp = DateTime.Now; List <string> FilesToSend = null; List <string> JpgFilesToDelete = null; SetJpgFileLists(out FilesToSend, out JpgFilesToDelete); var tempFolder = Path.Combine(Path.GetTempPath(), "ArchivesForPackages"); Directory.CreateDirectory(tempFolder); foreach (var item in FilesToSend) { if (File.Exists(item)) { FileHelper.CreateZip(item, Path.Combine(tempFolder, Path.GetFileNameWithoutExtension(item) + ".zip")); } } DirectoryInfo DI = new DirectoryInfo(tempFolder); var ZipCollection = DI.GetFiles("*.zip"); List <LogPackage> packets = new List <LogPackage>(); foreach (var item in ZipCollection) { var paket = CreateLogPacket(item.Name, item.FullName, TimeStamp); //paket.FileName = "some string"; packets.Add(paket); try { var json = Newtonsoft.Json.JsonConvert.SerializeObject(paket); } catch (Exception ex) { } } //ChangeWebCamFullImage(ii.FullImage); var config = new CommonLib.ConfigurationSettings(); var netSender = new NetSender(config); var sendedResult = netSender.Send(packets); }
public void GetCharacterList() { // 请求角色列表 NetSender.Send <ClientProtocol.getcharacterlist>(null, (_) => { getcharacterlist.response rsp = _ as getcharacterlist.response; PlayerInfo.Instance.CharacterList = rsp.character; Debug.Log("玩家角色数量:" + PlayerInfo.Instance.CharacterList.Count); if (PlayerInfo.Instance.CharacterList.Count == 0) { // 创建角色 LoadCreateCharacterScene(); } else { // 选择角色 LoadPickCharacterScene(); } }); }
//send and receive heart beat msg thread function public void SendHeartBeatMsg() { CheckConnectVar = true; while (NetCore.bConnected) { Debug.Log("heart beat send"); Loom.QueueOnMainThread(() => { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); Vector3 localPlayerPos = localHuman.transform.position; Vector3 eulerAngles = localHuman.transform.eulerAngles; SprotoType.heartbeat.request req = new heartbeat.request { posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0), posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0), posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0), angleX = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.x), 0), angleY = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.y), 0), angleZ = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.z), 0) }; //req.playerPosMsg = new SprotoType.PlayerPosMsg(); //req.playerPosMsg.playerIndex = (int)-1; //req.playerPosMsg.posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0); //req.playerPosMsg.posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0); //req.playerPosMsg.posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0); NetSender.Send <Protocol.heartbeat>(req, (_) => { CheckConnectVar = true; }); }); Thread.Sleep(5000);//5s } Debug.Log("SendHeartBeatMsg thread exit"); }
void QueryLogin() { //请求登陆gameserver string handshake = string.Format("{0}@{1}#{2}:{3}", Utilities.ToBase64String(PlayerInfo.Instance.Account), Utilities.ToBase64String(PlayerInfo.Instance.Server), Utilities.ToBase64String(PlayerInfo.Instance.Subid), PlayerInfo.Instance.Index); byte[] hmac = hmac64(hashkey(Encoding.UTF8.GetBytes(handshake)), PlayerInfo.Instance.Secret); login.request req = new login.request(); req.handshake = handshake + ":" + Convert.ToBase64String(hmac); NetSender.Send <ClientProtocol.login>(req, (_) => { login.response rsp = _ as login.response; Debug.Log(rsp.result); int code = Convert.ToInt32(rsp.result.Substring(0, 3)); if (code == 200) { Debug.Log("游戏服务器认证成功!"); GetCharacterList(); } }); }
private void SetupNetReceiverHandler() { NetReceiver.AddHandler <Protocol.handshake>((_) => { Debug.Log("handshake"); SprotoType.handshake.request req = _ as handshake.request; switch (TheUserLoginState) { case UserLoginState.LoginStart: { //Debug.Log("challenge receive "); _challengeStr = Convert.FromBase64String(req.msg); DH64 dhforKey = new DH64(); dhforKey.KeyPair(out _privateKey, out _publicKey); SprotoType.handshake.request clientkey = new handshake.request(); clientkey.msg = Convert.ToBase64String(BitConverter.GetBytes(_publicKey)); clientkey.socketfd = req.socketfd; NetSender.Send <Protocol.handshake>(clientkey); Debug.Log("challengeStr" + _challengeStr + " ori " + req.msg + " fd " + clientkey.socketfd); TheUserLoginState = UserLoginState.LoginPublicServerKey; } break; case UserLoginState.LoginPublicServerKey: { //string serverKey = System.Text.Encoding.Default.GetString(Convert.FromBase64String(req.msg)); byte[] ServerKey = Convert.FromBase64String(req.msg); ulong serverKey = BitConverter.ToUInt64(ServerKey, 0); _secretKey = DH64.Secret(_privateKey, serverKey); SprotoType.handshake.request challengeMsg = new handshake.request(); challengeMsg.msg = Convert.ToBase64String( BitConverter.GetBytes( HMac64.hmac( BitConverter.ToUInt64(_challengeStr, 0), _secretKey))); challengeMsg.socketfd = req.socketfd; NetSender.Send <Protocol.handshake>(challengeMsg); TheUserLoginState = UserLoginState.LoginCheckSecret; } break; case UserLoginState.LoginCheckSecret: { if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeSuccess)) == req.msg) { if (UserName != string.Empty) { Debug.Log("login " + UserName); string token = string.Format("{0}:{1}", Convert.ToBase64String(Encoding.UTF8.GetBytes(UserName)), Convert.ToBase64String(Encoding.UTF8.GetBytes(PassWord))); SprotoType.handshake.request tokenMsg = new handshake.request { msg = DesCrypt.desencode(_secretKey, token), socketfd = req.socketfd }; NetSender.Send <Protocol.handshake>(tokenMsg); TheUserLoginState = UserLoginState.LoginCheckTokenResult; } else { Debug.Log("register"); DisplayName = RandomName.GetRandomName(); string token = Convert.ToBase64String(Encoding.UTF8.GetBytes(DisplayName)); SprotoType.handshake.request tokenMsg = new handshake.request { msg = DesCrypt.desencode(_secretKey, token), socketfd = req.socketfd }; NetSender.Send <Protocol.handshake>(tokenMsg); TheUserLoginState = UserLoginState.LoginRegistResult; } } else if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeFailed)) == req.msg) { Debug.Log("sercet incorrect!"); //error handle TheUserLoginState = UserLoginState.LoginFailed; } } break; case UserLoginState.LoginRegistResult: { var msg = Encoding.UTF8.GetString(Convert.FromBase64String(req.msg)); var msgArray = msg.Split(':'); UserName = Encoding.UTF8.GetString(Convert.FromBase64String(msgArray[0])); PassWord = Encoding.UTF8.GetString(Convert.FromBase64String(msgArray[1])); Loom.QueueOnMainThread(() => { //save registed info PlayerPrefs.SetString("username", UserName); //GameManager.NetWorkClient.UserName = String.Empty; PlayerPrefs.SetString("password", PassWord); PlayerPrefs.SetString("displayname", DisplayName); Debug.Log("saving name " + UserName + " : " + PassWord); PlayerPrefs.Save(); }); Debug.Log("name " + UserName + " : " + PassWord); //Thread.Sleep(5); TheUserLoginState = UserLoginState.LoginSuccess; } break; case UserLoginState.LoginCheckTokenResult: case UserLoginState.LoginSuccess: { if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeSuccess)) == req.msg) { //Thread.Sleep(5); Debug.Log("token right"); TheUserLoginState = UserLoginState.LoginSuccess; // mChen //if(MultiGameState == GameState.Game_NullState) //{ // FindMatch(); //} } else if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeFailed)) == req.msg) { //error handle TheUserLoginState = UserLoginState.LoginFailed; } } break; } //NetSender.Send<Protocol.handshake>(req); //Debug.Log(TheUserLoginState.ToString()); return(null); }); NetReceiver.AddHandler <Protocol.matchMsg>((_) => { SprotoType.matchMsg.request req = _ as matchMsg.request; switch (req.matchMsgType) { case (Int64)MatchMsgType.Match_PlayerJoinedRoom: int playerTeamType = Convert.ToInt32(req.matchInfo); TheUserMatchState = UserMatchState.JoinedRoom; Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_PlayerJoinRoom: playerTeamType=" + playerTeamType); break; case (Int64)MatchMsgType.Match_CountDownTime: float countDowmTime = Convert.ToSingle(req.matchInfo) / 100; Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_CountDownTime =" + countDowmTime); // UI Loom.QueueOnMainThread(() => { UIManager.GetInstance().ShowMatchStartCountDown(countDowmTime); }); break; case (Int64)MatchMsgType.Match_TryToJoinMatch: int result = Convert.ToInt32(req.matchInfo); Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_TryToJoinMatch: result=" + result); MultiGameState = GameState.Game_Match; if (result == 0) { TheUserMatchState = UserMatchState.WaitToJoinNextMatch; Loom.QueueOnMainThread(() => { UIManager.GetInstance().ShowWaitToJoinNextMatchLabel(); }); } else if (result == 1) { TheUserMatchState = UserMatchState.PlayingMatch; Loom.QueueOnMainThread(() => { UIManager.GetInstance().HideWaitToJoinNextMatchLabel(); }); } else { Debug.Log("error TryToJoinMatch result from Server" + result); throw new Exception("error TryToJoinMatch result from Server"); } break; //case (Int64)MatchMsgType.Match_CancelMatching: // if (QuitMatchingMsg != null) // { // QuitMatchingMsg(this, EventArgs.Empty); // } // break; default: Debug.Log("error match type" + req.matchMsgType); throw new Exception("error msg type"); } return(null); }); NetReceiver.AddHandler <Protocol.usersInfoMsg>((_) => { if (MultiGameState == GameState.Game_NullState) { return(null); } Debug.Log("get usersInfoMsg"); SprotoType.usersInfoMsg.request req = _ as SprotoType.usersInfoMsg.request; GameObjectsManager.s_LocalPlayerIndexInGlobal = (int)req.curUserGlobalIndex; //Debug.Log("get player index in global: " + GameObjectsManager.s_LocalPlayerIndexInGlobal); //Create players Loom.QueueOnMainThread(() => { AllPlayers.Clear(); GameObjectsManager.GetInstance().ClearPlayers(); Debug.Log("received usersInfoMsg:"); foreach (SprotoType.UserInfo serverPlayerinfo in req.userArray) { PlayerTeam.PlayerTeamType teamType = (PlayerTeam.PlayerTeamType)serverPlayerinfo.playerTeamType; PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); int userState = (int)serverPlayerinfo.userState; Debug.Log(" UserIndexInGlobal=" + serverPlayerinfo.playerIndex + " UserName="******" userState=" + userState + " TeamType=" + teamType); if (serverPlayerinfo.playerIndex == req.curUserGlobalIndex) { // is local player if (userState == (int)UserMatchState.PlayingMatch) { GameObjectsManager.s_LocalHumanTeamType = teamType; } } int playerIndexInTeam = -1; if (userState == (int)UserMatchState.PlayingMatch) { // create a new player playerIndexInTeam = team.AddAPlayer(false); } // set AllPlayers AllPlayers.Add(new MultiPlayerInfo { PlayIndexInGlobal = serverPlayerinfo.playerIndex, PlayerName = serverPlayerinfo.username, SkinId = 0, PlayerId = 1, ThePlayerTeamType = teamType, PlayerIndexInTeam = playerIndexInTeam }); } }); //TheUserMatchState = UserMatchState.AllPlayersJoinedRoom; return(null); }); NetReceiver.AddHandler <Protocol.waitforstart>((_) => { Debug.Log("Second half start!!"); var res = _ as SprotoType.waitforstart.request; //mChen //switch (GameManager.GetInstance().TheGamePrePeriod) //{ // case GamePeriod.Opening: // break; // case GamePeriod.FirstHalf: // break; // case GamePeriod.Halftime: // break; // case GamePeriod.CutsceneAfterScoredOr24SecondsViolation: // break; // case GamePeriod.WairForGameToContinue: // break; // case GamePeriod.SecondHalf: // GameManager.GetInstance().HalfTimeReadyFrame = res.readyFrame; // break; // case GamePeriod.Ending: // break; // default: // throw new ArgumentOutOfRangeException(); //} return(null); }); NetReceiver.AddHandler <Protocol.gameTick>((_) => { //Debug.Log("response called"); if (false)//mChen if (GameManager.TheGameMode > GameMode.MultiGame_3v3) { //when single mode, do not handle this server tick return(null); } if (MultiGameState == GameState.Game_Match) { MultiGameState = GameState.Game_Running; Loom.QueueOnMainThread(() => { UIManager.GetInstance().HideMatchStartCountDown(); }); //mChen _sendHeartBeatThread = new Thread(SendHeartBeatMsg) { IsBackground = true }; //防止后台现成。相反需要后台线程就设为false _sendHeartBeatThread.Start(); while (_sendHeartBeatThread.IsAlive == false) { } } SprotoType.gameTick.request res = _ as gameTick.request; { // bool bOnlyFrameInfo = true; if (res.HasButtonMsg) { //mChen //foreach (var btnMsg in res.buttonMsg) //{ // ButtonInfo msg = new ButtonInfo // { // TeamType = // (PlayerTeamType)((btnMsg.playerIndex) / GameManager.TeamPlayerNum), // PlayerIndexInTeam = (btnMsg.playerIndex) % GameManager.TeamPlayerNum, // FrameNum = res.frame, // Action = (ButtonAction)btnMsg.btnAction, // Type = (ButtonType)btnMsg.btnType // }; // if (btnMsg.HasBtnValueX) // { // msg.Value.x = (float)BitConverter.ToDouble(BitConverter.GetBytes(btnMsg.btnValueX), 0); // msg.Value.y = (float)BitConverter.ToDouble(BitConverter.GetBytes(btnMsg.btnValueY), 0); ; // } // ControlManager.GetInstance().AddControlInfo(msg); // //Debug.Log("Button msg"); //} // bOnlyFrameInfo = false; } //_controllerMsg.Clear(); if (res.HasControlMsg) { //Debug.Log("controller called"); //List < ControlMsg > tempList = new List<ControlMsg>(); foreach (var resControl in res.controlMsg) { //mChen //DPadInfo msg = new DPadInfo //{ // FrameNum = res.frame, // TeamType = (PlayerTeamType)(resControl.playerIndex / GameManager.TeamPlayerNum), // PlayerIndexInTeam = resControl.playerIndex % GameManager.TeamPlayerNum, // //H = Convert.ToSingle(resControl.x), // //V = Convert.ToSingle(resControl.y) // H = (float)BitConverter.ToDouble(BitConverter.GetBytes(resControl.x), 0), // V = (float)BitConverter.ToDouble(BitConverter.GetBytes(resControl.y), 0) //}; //ControlManager.GetInstance().AddControlInfo(msg); #if false if (ControlManager.GetInstance().GameFrameNum % 150 == 1) { GameManager.GetInstance().InfoStr += string.Format("\n dpad info {0} {1} at frame {2}", msg.H, msg.V, ControlManager.GetInstance().GameFrameNum); } #endif // Debug.LogFormat("dpad msg frame {0} : h {1} v {2} ", res.frame, msg.H, msg.V); } // bOnlyFrameInfo = false; } if (res.HasPlayersGamePlayMsg) { Loom.QueueOnMainThread(() => { foreach (var playerGamePlayMsg in res.playersGamePlayMsg) { int playerIndex = (int)playerGamePlayMsg.playerIndex; float posX = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posX), 0); float posY = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posY), 0); float posZ = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posZ), 0); float angleX = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleX), 0); float angleY = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleY), 0); float angleZ = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleZ), 0); //Debug.Log("playerInfoMsg:" + playerGamePlayMsg.playerIndex + " pos:" + posX + posY + posZ); if (playerIndex == GameObjectsManager.s_LocalPlayerIndexInGlobal) { } else { PlayerTeam.PlayerTeamType teamType = AllPlayers[playerIndex].ThePlayerTeamType; int playerIndexInTeam = AllPlayers[playerIndex].PlayerIndexInTeam; PlayerBase player = GameObjectsManager.GetInstance().GetPlayer(teamType, playerIndexInTeam); if (player != null) { player.transform.position = new Vector3(posX, posY, posZ); player.transform.eulerAngles = new Vector3(angleX, angleY, angleZ); } } } }); } //添加一般帧信息 //if (bOnlyFrameInfo) { //mChen ControlManager.GetInstance().AddControlInfo(res.frame); } } return(null); }); NetReceiver.AddHandler <Protocol.restoreStates>((_) => { var req = _ as SprotoType.restoreStates.request; TheUserMatchState = (UserMatchState)req.serverState; Debug.Log("resotre user state now " + TheUserMatchState.ToString()); var infoArray = req.stateInfo.Split(':'); switch (req.serverState) { case (int)UserMatchState.FindRoom: ParseFindMatchMsg(infoArray); TheUserMatchState = UserMatchState.FindRoom; //mChen Loom.QueueOnMainThread(GameUIManager.GetInstance().UIChangeToMatching); //GameUIManager.GetInstance().UIChangeToMatching();//go to matching ui break; } return(null); }); }
//SprotoType.Handshake.request req = new SprotoType.Handshake.request(); //req.uid = uid; //req.token = token; //NetSender.Send<Protocol.Handshake>(req, (_) => //{ // SprotoType.Handshake.response rsp = _ as SprotoType.Handshake.response; // if (rsp.result == 0) // { // } //}); //SprotoTypeBase HeartbeatRsp(SprotoTypeBase _) //{ // SprotoType.Heartbeat.request req = _ as SprotoType.Heartbeat.request; // return null; // can return a response //} //NetReceiver.AddHandler<Protocol.Heartbeat>(HeartbeatRsp); public void Send <T>(SprotoTypeBase rpcReq = null, RpcRspHandler rpcRspHandler = null) { NetSender.Send <T>(rpcReq, rpcRspHandler); }
/// <summary> /// Handles preventing or allowing certain characters in the Rich Text Box /// destination field based on the user's preferences, and logs permitted /// characters. /// </summary> /// <param name="sender">The sender of this event.</param> /// <param name="e">The arguments for this event.</param> private void rtxTranscribed_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { switch (e.KeyChar) { case '\t': // Tab case '\n': // Enter case '\r': // Enter case '\x1B': // Esc (27) e.Handled = true; break; case '\x7F': // Ctrl+Bksp (127) e.Handled = true; break; case '\b': // Backspace (8) e.Handled = _o.NoBackspace; break; default: // some prevention preferences if (_o.NoCapitals && Char.IsUpper(e.KeyChar)) { char chLow = Char.ToLower(e.KeyChar); rtxTranscribed.Text += chLow; rtxTranscribed.Select(rtxTranscribed.TextLength, 0); _td.Add(new EntryData(chLow, TimeEx.NowTicks)); // forced to lowercase e.Handled = true; } if (_o.NoNumbers && Char.IsDigit(e.KeyChar)) { e.Handled = true; } if (_o.NoPunctuation && (Char.IsPunctuation(e.KeyChar) || Char.IsSymbol(e.KeyChar))) { e.Handled = true; } break; } // log the character if it wasn't prevented if (!e.Handled) { // all regular characters are logged here. we use a loop to handle // word-level backspacing where a word is selected and then backspaced // in a single key-press. for analysis reasons, such word-level backspaces // must be logged as individual backspaces, but their identical timestamps // belie their true nature as originating from a single keypress. do { _td.Add(new EntryData(e.KeyChar, TimeEx.NowTicks)); // send the character over TCP if desired if (_o.SendOnTcp && _sender != null && _sender.IsConnected) { _sender.Send(e.KeyChar.ToString()); } } while (--_bkspSelLength > 0); _bkspSelLength = 0; // reset } }