示例#1
0
    /// <summary>
    /// 登录到大厅
    /// </summary>
    public void LoginToMainServer(string ip, int port)
    {
        LoginSR.SendLogin req = new LoginSR.SendLogin();
        req.token = PlayerModel.Inst.Token;
        if (string.IsNullOrEmpty(req.token))
        {
            return;
        }
        NetProcess.SendRequest <LoginSR.SendLogin>(req, ProtoIdMap.CMD_Login, (msg) =>
        {
            LoginSR.LoginBack data = msg.Read <LoginSR.LoginBack>();
            if (data.code == 1)
            {
                Scene now = SceneManager.GetActiveScene();
                if (now.name != "HALL" && now.name != "Start")
                {
                    SceneManager.LoadScene("HALL");
                    GC.Collect();
                    Resources.UnloadUnusedAssets();
                }

                MainViewModel.Inst.mNowIp   = ip;
                MainViewModel.Inst.mNowPort = port;

                PlayerModel.Inst.Token    = data.data.userInfo.token;
                PlayerModel.Inst.UserInfo = data.data.userInfo;
                SendGetNotice();
                OpenWindow();

                List <string> names = new List <string>();
                names.Add(typeof(MainView).Name);
                BaseView.CloseAllViewBut(names);
            }
            else
            {
                if (data.code == 2)
                {
                    Global.Inst.GetController <CommonTipsController>().ShowTips("您的登录已过期,请重新登录", "确定", true, () =>
                    {
                        Global.Inst.GetController <LoginController>().LoginOut();
                    }, null, null, "登录异常");
                }
                else
                {
                    GameUtils.ShowErrorTips(data.code);
                }
            }
        });
    }
示例#2
0
    /// <summary>
    /// 进入游戏
    /// </summary>
    /// <param name="data"></param>
    public void ServerCreateJoinGame(GoldFlowerCreateRoomData data)
    {
#if YYVOICE
        //登陆呀呀语音(step=2)
        YYsdkManager.instance.LoginVoiceServer(PlayerModel.Inst.UserInfo.userId);
#endif

        if (PlayerModel.Inst.address != null)
        {
            NetProcess.SendRequest <SendAddrReq>(PlayerModel.Inst.address, GoldFlowerProtoIdMap.CMD_SendAddress, (msgData) =>
            {
                SQDebug.Log("gps 返回");
            }, false);
        }

        XXGoldFlowerGameModel.Inst.mRoomRules          = data.roomInfo.rule;
        XXGoldFlowerGameModel.Inst.mDichi              = data.roomInfo.dichi;
        XXGoldFlowerGameModel.Inst.mDiFen              = data.roomInfo.difen;
        XXGoldFlowerGameModel.Inst.mSubGameId          = data.roomInfo.gameId;
        XXGoldFlowerGameModel.Inst.mRoomId             = data.roomInfo.roomId;
        XXGoldFlowerGameModel.Inst.mMySeatId           = data.roomInfo.mySeatId;
        XXGoldFlowerGameModel.Inst.mTurnSeatId         = data.roomInfo.turnSeatId;
        XXGoldFlowerGameModel.Inst.mZhuangSeatId       = data.roomInfo.zhuangSeatId;
        XXGoldFlowerGameModel.Inst.mRound              = data.roomInfo.round;
        XXGoldFlowerGameModel.Inst.mStartInfo          = new OnGoldFlowerGameStart();
        XXGoldFlowerGameModel.Inst.mStartInfo.lookRate = data.roomInfo.lookRate;
        XXGoldFlowerGameModel.Inst.mStartInfo.menRate  = data.roomInfo.menRate;
        XXGoldFlowerGameModel.Inst.mGoldPattern        = data.roomInfo.goldPattern;
        XXGoldFlowerGameModel.Inst.RoomState           = (eGFGameState)data.roomInfo.gameState;//房间状态

        for (int i = 0; i < data.roomInfo.playerList.Count; i++)
        {
            PlayerSeatDown(data.roomInfo.playerList[i]);
        }

        OpenWindow();

        List <string> names = new List <string>();
        names.Add(typeof(XXGoldFlowerGameView).Name);
        BaseView.CloseAllViewBut(names);
        mView.ServerCreateJoinGame(data);
        if (mView != null)
        {
            mView.mSelfPlayer.SetChanagDeskBtnState(true);
            mView.mSelfPlayer.SetReadyBtnState(true);
        }
    }
示例#3
0
    /// <summary>
    /// 关闭其他界面,回到登录界面
    /// </summary>
    private void CloseOtherViewOpenLogin()
    {
        Scene now = SceneManager.GetActiveScene();

        if (now.name != "HALL" && now.name != "Start")
        {
            SceneManager.LoadScene("HALL");
            System.GC.Collect();
            Resources.UnloadUnusedAssets();
        }
        OpenWindow();
        List <string> view = new List <string>();

        view.Add("LoginView");
        view.Add("CommonTipsView");
        BaseView.CloseAllViewBut(view);
    }
示例#4
0
    public void ShowRecord()
    {
        SQSceneLoader.It.LoadScene("PlayBackScene", () =>
        {
            List <string> views = new List <string>();
            views.Add("MJGameBackUI");
            views.Add("NetLoadingView");
            views.Add("SceneLoadingView");

            StartGameRespone data = new StartGameRespone();
            data.roomInfo         = mModel.CurRecordDetailData.roomInfo;
            data.startInfo        = mModel.CurRecordDetailData.startInfo;
            HandleStartGameData(data);//初始化数据
            BaseView.CloseAllViewBut(views);
            mGameUI = OpenWindow() as MJGameBackUI;
            mGameUI.InfoAllPlayerData(data);
        });
    }
示例#5
0
    /// <summary>
    /// 获取房间列表
    /// </summary>
    public void SendGetRoomList(CallBack <GamePatternView> call = null)
    {
        CommonSendProto req = new CommonSendProto();

        NetProcess.SendRequest <CommonSendProto>(req, ProtoIdMap.CMD_SendGetRoomList, (msg) => {
            SendGetRoomListAck ack = msg.Read <SendGetRoomListAck>();
            if (ack.code == 1)
            {
                //打开界面
                OpenWindow();
                List <string> names = new List <string>();
                names.Add(typeof(GamePatternView).Name);
                BaseView.CloseAllViewBut(names);

                GamePatternModel.Inst.mChouCheng = ack.data.chouCheng;
                GamePatternModel.Inst.mClubId    = ack.data.clubId;

                PlayerModel.Inst.UserInfo.gold     = ack.data.gold;
                PlayerModel.Inst.UserInfo.roomCard = ack.data.roomCard;

                //刷新界面
                if (ack.data.roomInfoList == null || ack.data.roomInfoList.Count == 0)
                {
                    GamePatternModel.Inst.mRoomList.Clear();
                }
                else
                {
                    GamePatternModel.Inst.mRoomList = ack.data.roomInfoList;
                }
                mView.SetData(ack.data.clubId, ack.data.totalNum, ack.data.onLineNum, ack.data.chouCheng, ack.data.clubName);
                if (call != null)
                {
                    call(mView);
                }
            }
        });
    }
示例#6
0
    private void HandleStartGameData(StartGameRespone data, bool isStart = false)
    {
        MJGameModel.Inst.mStartGameData = data;
        SQDebug.Log("准备房间 玩家数据移植:" + Time.deltaTime);
        MJGameModel.Inst.ReadyCountDownTime = 0;                      //准备倒计时
        mModel.mPlayCount              = data.roomInfo.maxGameCount;  //最大局数
        mModel.mCurPlayCount           = data.roomInfo.currGameCount; //当前局数
        MJGameModel.Inst.mRoomId       = data.roomInfo.roomId;        //房间号
        MJGameModel.Inst.mMySeatId     = data.roomInfo.mySeatId;      //我自己的座位号
        MJGameModel.Inst.mZhuangSeatId = data.startInfo.zhuangSeatId; //庄家座位号
        MJGameModel.Inst.TurnFixedTime = data.roomInfo.turnFixedTime; //操作固定时间
        MJGameModel.Inst.mRoomMgSeatId = 1;                           //房主座位号
        int totalPlayerCount = data.roomInfo.maxPlayer;               //房间总共人数

        MJGameModel.Inst.totalPlayerCount = totalPlayerCount;
        totalPlayerCount = totalPlayerCount == 2 ? 4 : totalPlayerCount;
        MJGameModel.Inst.mnewSeatToIndex       = new int[totalPlayerCount + 1];              //玩家座位号 数组
        MJGameModel.Inst.mSeatToDirectionIndex = new int[5];                                 //所有玩家座位号对应桌面东南西北高亮显示的index
        MJGameModel.Inst.mRoomPlayers          = new PlayerInfoStruct[totalPlayerCount + 1]; //玩家 数据缓存数组
        foreach (var itemRoomPlayer in data.roomInfo.playerList)                             //玩家信息数据
        {
            MJGameModel.Inst.mRoomPlayers[itemRoomPlayer.seatId]          = itemRoomPlayer;
            MJGameModel.Inst.mnewSeatToIndex[itemRoomPlayer.seatId]       = SeatIdToIndex(MJGameModel.Inst.mMySeatId, itemRoomPlayer.seatId, totalPlayerCount);
            MJGameModel.Inst.mSeatToDirectionIndex[itemRoomPlayer.seatId] = SeatIdToDirectionIndex(MJGameModel.Inst.mMySeatId, itemRoomPlayer.seatId, data.roomInfo.maxPlayer);
        }
        #endregion
        MJGameModel.Inst.isGetStartGameData        = true;
        MJGameModel.Inst.totalCardNum              = data.startInfo.totalCardNum;                                 //总共有多少张牌
        MJGameModel.Inst.leaveCardNum              = data.startInfo.leaveCardNum;                                 //剩余多少张牌
        MJGameModel.Inst.mCurInsSeatId             = data.startInfo.currTurnSeatId;                               //当前指针 指的玩家座位号
        MJGameModel.Inst.isMyHit                   = data.startInfo.currTurnSeatId == MJGameModel.Inst.mMySeatId; //是否轮到我操作
        MJGameModel.Inst.allPlayersCardsInfoStruct = new CardsInfoStruct[totalPlayerCount + 1];
        //可操作列表
        if (data.roomInfo.optList != null)
        {
            for (int i = 0; i < data.roomInfo.optList.Count; i++)
            {
                if (data.roomInfo.optList[i].ins == eMJInstructionsType.HIT)
                {
                    GetCanHuList(data.roomInfo.optList[i]);
                }
            }
        }
        //手牌信息
        if (data.startInfo.cardsInfoList != null)
        {
            foreach (var item in data.startInfo.cardsInfoList)
            {
                MJGameModel.Inst.allPlayersCardsInfoStruct[item.seatId] = item;
                //找出我定缺的类型
                if (item.seatId == MJGameModel.Inst.mMySeatId) //我自己
                {
                    if (item.isFixedColor)                     //已经定缺
                    {
                        MJGameModel.Inst.SetMyFixedType(item.fixedType);
                        if (item.handList != null)//手牌排序
                        {
                            item.handList = MJGameModel.Inst.ChangList(item.handList, item.fixedType);
                        }
                    }
                    else
                    {
                        MJGameModel.Inst.SetMyFixedType(0);
                    }
                }

                if (item.handList != null)
                {
                    foreach (var VARIABLE in item.handList)
                    {
                        MJGameModel.Inst.mySelfCards.Add(VARIABLE);
                    }
                    if (item.isHasCurrCard)
                    {
                        MJGameModel.Inst.mySelfCards.Add(item.currCard);
                    }

                    foreach (var oneItem in MJGameModel.Inst.mySelfCards)
                    {
                        if (oneItem < 10)
                        {
                            MJGameModel.Inst.handCardsTiao.Add(oneItem);
                        }
                        else if (oneItem < 20)
                        {
                            MJGameModel.Inst.handCardsTong.Add(oneItem);
                        }
                        else if (oneItem < 30)
                        {
                            MJGameModel.Inst.handCardsWan.Add(oneItem);
                        }
                    }
                }
            }
        }
        //MJGameModel.Inst.UpdataModelDada(data);

        if (isStart && !MJGameModel.Inst.IsContainsDingque && !MJGameModel.Inst.IsContainsChange)//如果开始发牌且没有定缺也没有换三张,房间状态改为开始
        {
            MJGameModel.Inst.mState = eMJRoomStatus.STARTE;
            MJGameModel.Inst.mStartGameData.roomInfo.roomState = eRoomState.START;//改变房间状态
        }
        ;

        if (mGameUI != null)
        {
            List <string> view = new List <string>();
            view.Add("GameUI");
            BaseView.CloseAllViewBut(view);
            mGameUI.GetGameStartFormCtr();
        }
        else
        {
            SQSceneLoader.It.LoadScene("mahjong_scenes", () =>
            {
                mGameUI            = OpenWindow() as MJGameUI;
                List <string> view = new List <string>();
                view.Add("GameUI");
                BaseView.CloseAllViewBut(view);
                mGameUI.GetGameStartFormCtr();
            });
        }
    }
示例#7
0
    /// <summary>
    /// 进入游戏
    /// </summary>
    /// <param name="data"></param>
    private void ServerCreateJoinRoom(TenCreateJoinRoomData data)
    {
#if YYVOICE
        //登陆呀呀语音(step=2)
        YYsdkManager.instance.LoginVoiceServer(PlayerModel.Inst.UserInfo.userId);
#endif

        if (PlayerModel.Inst.address != null)
        {
            NetProcess.SendRequest <SendAddrReq>(PlayerModel.Inst.address, TenProtoIdMap.CMD_SendAddress, (msgData) =>
            {
                SQDebug.Log("gps 返回");
            }, false);
        }

        Debug.Log("进入游戏");

        TenModel.Inst.mGameId       = (eGameType)data.roomInfo.gameId;
        TenModel.Inst.mSubGameId    = data.roomInfo.subGameId;
        TenModel.Inst.mRoomRules    = data.roomInfo.rule;
        TenModel.Inst.mZhuangSeatId = data.roomInfo.zhuangSeatId;
        TenModel.Inst.mMySeatId     = data.roomInfo.mySeatId;
        TenModel.Inst.mGoldPattern  = data.roomInfo.pt;
        TenModel.Inst.mGameState    = (eTenGameState)data.roomInfo.gameState;
        TenModel.Inst.mRoomId       = data.roomInfo.roomId;
        TenModel.Inst.mRoomState    = data.roomInfo.roomState;

        if (data.roomInfo.playerList != null)
        {
            for (int i = 0; i < data.roomInfo.playerList.Count; i++)
            {
                PlayerSeatDown(data.roomInfo.playerList[i]);
            }
        }

        if (data.roomInfo.handCardsList != null)
        {
            if (data.roomInfo.handCardsList.myCardsInfo != null)
            {
                TenModel.Inst.mQzListValue = data.roomInfo.handCardsList.myCardsInfo.qzListValue;
                TenModel.Inst.mXzListValue = data.roomInfo.handCardsList.myCardsInfo.xzListValue;
                if (data.roomInfo.handCardsList.myCardsInfo.qzListValue != null || data.roomInfo.handCardsList.myCardsInfo.xzListValue != null)
                {
                    TenModel.Inst.mGameed = true;
                    TenModel.Inst.mGameedSeatIdList.Add(data.roomInfo.mySeatId);
                }
            }
            if (data.roomInfo.handCardsList.otherCardsInfo != null)
            {
                for (int i = 0; i < data.roomInfo.handCardsList.otherCardsInfo.Count; i++)
                {
                    if (data.roomInfo.handCardsList.otherCardsInfo[i].qzListValue != null ||
                        data.roomInfo.handCardsList.otherCardsInfo[i].xzListValue != null)
                    {
                        TenModel.Inst.mGameedSeatIdList.Add(data.roomInfo.handCardsList.otherCardsInfo[i].seatId);
                    }
                }
            }
        }

        Debug.Log("进入游戏222");
        OpenWindow();

        Debug.Log("进入游戏3333");

        mView.ServerCreateJoinRoom(data);
        if (mView != null)
        {
            mView.mSelfPlayer.SetChanagDeskBtnState(true);
            mView.mSelfPlayer.SetReadyBtnState(true);
        }
        List <string> names = new List <string>();
        names.Add(typeof(TenGameView).Name);
        BaseView.CloseAllViewBut(names);
    }