public bool GameResult(GAME_RESULT_NTY nty) { try { if (User.Auto != true) { Navigation.PushPopupAsync(new GameResultPage(nty)); } User.IsMyTurn = false; if (User.Id == nty.VarIndex) { User.myInfo.win += 1; SQLite.InsertResultLog(DateTime.Now, User.OppInfo.NickName + " " + Helper.LevelConverter(User.OppInfo.level), 1); } else { User.myInfo.lose += 1; SQLite.InsertResultLog(DateTime.Now, User.OppInfo.NickName + " " + Helper.LevelConverter(User.OppInfo.level), 0); } return(true); } catch (Exception e) { return(false); } }
static public void Loop(Lobby page) { if (client.socket == null || client.socket.Connected == false) { return; } CompletePacket data; if (client.PacketQueue.TryDequeue(out data) == true) { try { switch (data.Protocol) { case (int)PROTOCOL.IdPktVersionRes: { VERSION_RES res = new VERSION_RES(); res = VERSION_RES.Parser.ParseFrom(data.Data); var currentVersion = VersionTracking.CurrentVersion; float myversion = float.Parse(currentVersion); const Double Eps = 0.000000000000001; if (Math.Abs(res.VarVersion - myversion) > Eps) { //첫 검수라 임시 주석 2번째 패치 부터는 활성화 // Xamarin.Essentials.Browser.OpenAsync("https://play.google.com/store/apps/details?id=com.companyname.OMOK"); // return; } NetProcess.SendLogin(User.Uid, User.Token); } break; case (int)PROTOCOL.IdPktLoginRes: { LOGIN_RES res = new LOGIN_RES(); res = LOGIN_RES.Parser.ParseFrom(data.Data); Device.BeginInvokeOnMainThread(() => { page.ClosePopup(); }); if (res.VarCode == ErrorCode.Success) { User.IsLogin = true; User.Id = res.VarIndex; User.myInfo.win = res.VarWin; User.myInfo.lose = res.VarLose; User.myInfo.draw = res.VarDraw; User.myInfo.score = res.VarScore; User.myInfo.rank = res.VarRank; User.myInfo.level = res.VarLevel; User.myInfo.NickName = Helper.ToStr(res.VarName.ToByteArray());; User.Locale = Helper.ToStr(res.VarLocale.ToByteArray()); User.state = PlayerState.Lobby; SendNoticeReq(); Device.BeginInvokeOnMainThread(() => { page.UpdatePlayerInfo(); page.UpdateLocalMenu(); if (User.myInfo.NickName == "") { page.NickNamePopup(); } else { if (User.Auto == true) { page.MatchAuto(); } } }); } else { //강제 exception 발생후 종료 후 재 실행 //System.Diagnostics.Process.GetCurrentProcess().Close(); //page.LoginInformation("Failed Login."); throw new NullReferenceException(); } } break; case (int)PROTOCOL.IdPktNoticeRes: { NOTICE_RES res = new NOTICE_RES(); res = NOTICE_RES.Parser.ParseFrom(data.Data); Device.BeginInvokeOnMainThread(() => { page.SetNotice(Helper.ToStr(res.VarMessage.ToByteArray())); }); } break; case (int)PROTOCOL.IdPktCheckNicknameRes: { CHECK_NICKNAME_RES res = new CHECK_NICKNAME_RES(); res = CHECK_NICKNAME_RES.Parser.ParseFrom(data.Data); Device.BeginInvokeOnMainThread(() => { if (res.VarCode != ErrorCode.Success) { page.SendNickNamePopupMessage(); } else { User.myInfo.NickName = Helper.ToStr(res.VarName.ToByteArray()); page.CloseAllPopup(); page.UpdatePlayerInfo(); } }); } break; case (int)PROTOCOL.IdPktCreateRoomRes: { CREATE_ROOM_RES res = new CREATE_ROOM_RES(); res = CREATE_ROOM_RES.Parser.ParseFrom(data.Data); if (res.VarCode == ErrorCode.Success) { Device.BeginInvokeOnMainThread(() => { page.ClosePopup(); User.Color = eTeam.Black; User.IsMyTurn = true; User.state = PlayerState.Room; pRoom = new Room(); page.PushRoomPopup(pRoom); }); } else { } } break; case (int)PROTOCOL.IdPktNewUserInRoomNty: { NEW_USER_IN_ROOM_NTY res = new NEW_USER_IN_ROOM_NTY(); res = NEW_USER_IN_ROOM_NTY.Parser.ParseFrom(data.Data); { //상대방이름 //나갈때 초기화한다. User.OppInfo.PhotoPath = Encoding.UTF8.GetString(res.VarRoomUser.PictureUri.ToByteArray()); User.OppInfo.NickName = Helper.ToStr(res.VarRoomUser.VarName.ToByteArray()); } Device.BeginInvokeOnMainThread(() => { pRoom.UpdateBattleInfo(); }); } break; case (int)PROTOCOL.IdPktBitmapMessageRes: { BITMAP_MESSAGE_RES res = new BITMAP_MESSAGE_RES(); res = BITMAP_MESSAGE_RES.Parser.ParseFrom(data.Data); foreach (var msg in res.VarMessage) { JpegStream.Enqueue(new MemoryStream(msg.ToByteArray())); } } break; case (int)PROTOCOL.IdPktRoomPassThroughRes: { ROOM_PASS_THROUGH_RES res = new ROOM_PASS_THROUGH_RES(); res = ROOM_PASS_THROUGH_RES.Parser.ParseFrom(data.Data); if (res.VarCode == ErrorCode.Success) { Device.BeginInvokeOnMainThread(() => { pRoom.ProcReceivePutStoneMessage(res); }); } } break; case (int)PROTOCOL.IdPktRoomListRes: { Device.BeginInvokeOnMainThread(() => { page.UpdateMessage(data); }); } break; case (int)PROTOCOL.IdPktAudioMessageRes: { AUDIO_MESSAGE_RES res = new AUDIO_MESSAGE_RES(); res = AUDIO_MESSAGE_RES.Parser.ParseFrom(data.Data); foreach (var msg in res.VarMessage) { AudioStream.Enqueue(new MemoryStream(msg.ToByteArray())); } } break; case (int)PROTOCOL.IdPktRankRes: { RANK_RES res = new RANK_RES(); res = RANK_RES.Parser.ParseFrom(data.Data); Device.BeginInvokeOnMainThread(() => { page.CreateRankPage(res.VarRankList); }); } break; case (int)PROTOCOL.IdPktLeaveRoomRes: { LEAVE_ROOM_RES res = new LEAVE_ROOM_RES(); res = LEAVE_ROOM_RES.Parser.ParseFrom(data.Data); if (res.VarIndex == User.Id) { User.state = PlayerState.Lobby; Device.BeginInvokeOnMainThread(() => { pRoom.ShowLeaveAd(); page.PopRoomPopup(); }); if (User.Auto == true) { Thread.Sleep(1000); Device.BeginInvokeOnMainThread(() => { page.MatchAuto(); }); } } Device.BeginInvokeOnMainThread(() => { page.UpdatePlayerInfo(); }); } break; case (int)PROTOCOL.IdPktEnterRoomRes: { ENTER_ROOM_RES res = new ENTER_ROOM_RES(); res = ENTER_ROOM_RES.Parser.ParseFrom(data.Data); if (res.VarCode == ErrorCode.Success) { Device.BeginInvokeOnMainThread(() => { page.ClosePopup(); pRoom = new Room(); User.Color = eTeam.White; User.IsMyTurn = false; User.state = PlayerState.Room; page.PushRoomPopup(pRoom); }); } } break; case (int)PROTOCOL.IdPktGameResultNty: { GAME_RESULT_NTY res = new GAME_RESULT_NTY(); res = GAME_RESULT_NTY.Parser.ParseFrom(data.Data); Device.BeginInvokeOnMainThread(() => { if (User.Auto == true) { pRoom.GameResult(res); pRoom.SendLeaveRoom(); } else { pRoom.GameResult(res); } }); } break; } } catch (Exception ex) { Console.Write(ex.ToString()); } } }
public GameResultPage(GAME_RESULT_NTY _nty) { InitializeComponent(); nty = _nty; if (User.Locale != "ko") { if (nty.VarIndex == User.Id) { Label1.Text = "Vectory"; } else { Label1.Text = "Defeat"; } if (nty.VarIndex1 == User.Id) { if (User.myInfo.level < nty.VarLevel1) { Label1.Text = "Congratulations. promotion "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel1); } else if (User.myInfo.level > nty.VarLevel1) { Label1.Text = "Relegation... "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel1); } Label3.Text = " Point " + User.myInfo.score + " => " + nty.VarLevelPoint1; User.myInfo.level = nty.VarLevel1; User.myInfo.score = nty.VarLevelPoint1; } else if (nty.VarIndex2 == User.Id) { if (User.myInfo.level < nty.VarLevel2) { Label1.Text = "Congratulations. promotion "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel2); } else if (User.myInfo.level > nty.VarLevel2) { Label1.Text = "Relegation... "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel2); } Label3.Text = " Point " + User.myInfo.score + " => " + nty.VarLevelPoint2; User.myInfo.level = nty.VarLevel2; User.myInfo.score = nty.VarLevelPoint2; } Label5.Text = "Level Point : " + User.myInfo.score; } else { if (nty.VarIndex == User.Id) { Label1.Text = "승리 하셨습니다."; } else { Label1.Text = "패배 하셨습니다."; } if (nty.VarIndex1 == User.Id) { if (User.myInfo.level < nty.VarLevel1) { Label1.Text = "축하합니다. 승급하셨습니다. "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel1); } else if (User.myInfo.level > nty.VarLevel1) { Label1.Text = "강등되셨습니다. "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel1); } Label3.Text = " 포인트 " + User.myInfo.score + " => " + nty.VarLevelPoint1; User.myInfo.level = nty.VarLevel1; User.myInfo.score = nty.VarLevelPoint1; } else if (nty.VarIndex2 == User.Id) { if (User.myInfo.level < nty.VarLevel2) { Label1.Text = "축하합니다. 승급하셨습니다. "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel2); } else if (User.myInfo.level > nty.VarLevel2) { Label1.Text = "강등되셨습니다. "; Label2.Text = Helper.LevelConverter(User.myInfo.level) + " => " + Helper.LevelConverter(nty.VarLevel2); } Label3.Text = " 포인트 " + User.myInfo.score + " => " + nty.VarLevelPoint2; User.myInfo.level = nty.VarLevel2; User.myInfo.score = nty.VarLevelPoint2; } Label5.Text = "승급 포인트 : " + User.myInfo.score; } if (User.Auto == true) { Navigation.PopAllPopupAsync(); } }