コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: NetProcess.cs プロジェクト: blessnhs/blessnhs
        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());
                }
            }
        }
コード例 #3
0
        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();
            }
        }