Пример #1
0
    void OnRespPlazaList(Message msg)
    {
        //
        msgRespPlazaList plazaList = msgRespPlazaList.deserialize(msg);

        Lobby.Lobby.plazaList.Clear();         //首先清空
        // 转换存数据
        for (int i = 0; i < plazaList.plazaList.Count; i++)
        {
            LobbyEvent.Plaza plaza = new LobbyEvent.Plaza();
            plaza.lmtType    = (LobbyEvent.Plaza.LMT_TYPE)plazaList.plazaList[i].lmt_type;
            plaza.des        = plazaList.plazaList[i].des;
            plaza.star       = plazaList.plazaList[i].star;
            plaza.name       = plazaList.plazaList[i].name;
            plaza.plazaid    = plazaList.plazaList[i].plazaid;
            plaza.rule       = plazaList.plazaList[i].rule;
            plaza.roomType   = plazaList.plazaList[i].room_type;
            plaza.plazaLevel = new List <LobbyEvent.PlazaLevel> ();
            for (int j = 0; j < plazaList.plazaList [i].plazaLevel.Count; j++)
            {
                LobbyEvent.PlazaLevel pl = new LobbyEvent.PlazaLevel();
                pl.base_score = plazaList.plazaList [i].plazaLevel[j].base_score;
                pl.levelid    = plazaList.plazaList [i].plazaLevel[j].levelid;
                pl.minsr      = plazaList.plazaList [i].plazaLevel[j].minsr;
                pl.maxsr      = plazaList.plazaList [i].plazaLevel[j].maxsr;

                plaza.plazaLevel.Add(pl);
            }

            Lobby.Lobby.plazaList.Add(plaza);
        }

        //刷新界面
        onEventShowPlaza(null);
    }
Пример #2
0
    void onEnterRoomFinish(object data)
    {
        //刷新房间规则显示
        RoomEvent.sC2V_RoomRule rr;
        rr.playerNum   = Room.Room.roomRule.playerNum;
        rr.gameTime    = Room.Room.roomRule.gameTime;
        rr.gridLevel   = Room.Room.roomRule.gridLevel;
        rr.rule        = Room.Room.roomRule.rule;
        rr.lmtRound    = Room.Room.roomRule.lmtRound;
        rr.lmtTurnTime = Room.Room.roomRule.lmtTurnTime;
        rr.roomLevel   = Room.Room.roomLevel;
        rr.roomID      = 0;   //此处不需要,填0
        rr.plazaName   = Room.Room.plazaName;
        rr.tag         = Room.Room.tagId;
        rr.type        = (CommonDefine.eCreateRoomType)Room.Room.roomType;

        if (Room.Room.plazaid != 0)
        {
            LobbyEvent.Plaza plaza = getPlazaById(Room.Room.plazaid);
            rr.star = plaza.star;
        }
        else
        {
            rr.star = 0;
        }

        RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_ROOMRULE, (object)rr);

        if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_CLASSIC_PLAZA ||
            Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_PLAZA ||
            Room.Room.isRelink)
        {
            //完全进入游戏界面后,需要通知服务器可以发用户enter信息了,原则上来说,需要界面真正加载完成后再发,这里暂时直接发送
            msgNotifyEnterRoomFinish efmsg = new msgNotifyEnterRoomFinish();
            efmsg.isRelink = Room.Room.isRelink;
            ProtocolManager.getInstance().sendMsg(GameProtocol.P_GAME_ENTER_ROOM_FINISH, efmsg);
        }
        else
        {
            // 因为房间和组队模式,用户相关信息已经下发,所以需要手动驱动相关消息刷新游戏界面
            for (int i = 0; i < Room.Room.playerList.Count; i++)
            {
                /////////////////////////////enter/////////////////////////////////
                RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.PLAER_ENTER, Room.Room.playerList[i]);

                ///////////////////////state/////////////////////////////////
                RoomEvent.sC2V_PlayerState ps;
                ps.state      = (CommonDefine.PLAYER_STATE)Room.Room.playerList[i].state;
                ps.local      = Room.Room.getLocalBySeat(Room.Room.playerList[i].seat);
                ps.ifAllReady = true;

                RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_PLAER_STATE, (object)ps);
            }

            //进入游戏后的start game
            onEventStartGame(true);
        }
    }
Пример #3
0
    //----------------一些接口-------------------------------------

    public Plaza createPlaza(int index, LobbyEvent.Plaza data)
    {
        Plaza plaza = Instantiate(_plazaPrefab, new Vector3(0, 0, 0), Quaternion.identity);

        plaza.transform.SetParent(_plazaRoot.transform);

        plaza.transform.localPosition = new Vector3(index * _plazaInteral + _plazaInteral / 2, 0, 0);

        CommonUtil.RoomRule roomRule = CommonUtil.RoomRule.deserialize(data.rule);

        string rr;

        if (roomRule.lmtRound != 0)
        {
            rr = "回合限制" + roomRule.lmtRound;
        }
        else
        {
            rr = "回合无限制";
        }

        if (roomRule.lmtTurnTime != 0)
        {
            rr = rr + " 思考时间" + roomRule.lmtTurnTime + "秒";
        }
        else
        {
            rr = rr + " 思考时间无限制";
        }

        plaza.updatePlaza(index, data.plazaid, data.name, data.star, data.des, rr, this);

        plaza.transform.localScale = plaza.transform.localScale * CommonUtil.Util.getScreenScale();

        return(plaza);
    }
Пример #4
0
    void OnRespJoinRoom(Message msg)
    {
        ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_LOADING_ANI, false);

        msgRespJoinRoom resp = msgRespJoinRoom.deserialize(msg);
        //此处需要根据各种响应值,来给出友好提示
        string tip = "加入房间失败";

        //RESP_JOINROOM_FLAG
        if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_SUCCESS ||
            resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_ALREADY_IN_ROOM)
        {
            //规则应该一定不会为空的
            if (resp.rule == null || resp.rule.Length == 0)
            {
                //
                return;
            }

            if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_ALREADY_IN_ROOM)
            {
                //原则上此处可以直接进入房间,也可以是弹窗提示用户是否重新进入房间
                //
            }

            // 设置相关数据
            Room.Room.setRoomData(resp.roomId, resp.levelId, resp.plazaid, resp.roomType, resp.owner, resp.rule, resp.baseScore);
            Room.Room.isRelink = resp.isRelink;

            //这里需要判断是哪种类型的房间
            if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_ROOM)
            {
                msgNotifyEnterRoomFinish efmsg = new msgNotifyEnterRoomFinish();
                efmsg.isRelink = Room.Room.isRelink;
                ProtocolManager.getInstance().sendMsg(GameProtocol.P_GAME_ENTER_ROOM_FINISH, efmsg);


                if (!Room.Room.isRelink)
                {
                    //刷新房间规则显示
                    RoomEvent.sC2V_RoomRule rr;
                    rr.playerNum   = Room.Room.roomRule.playerNum;
                    rr.gameTime    = Room.Room.roomRule.gameTime;
                    rr.gridLevel   = Room.Room.roomRule.gridLevel;
                    rr.rule        = Room.Room.roomRule.rule;
                    rr.lmtRound    = Room.Room.roomRule.lmtRound;
                    rr.lmtTurnTime = Room.Room.roomRule.lmtTurnTime;
                    rr.roomLevel   = resp.levelId;
                    rr.roomID      = resp.roomId;
                    rr.plazaName   = Room.Room.plazaName;

                    if (Room.Room.plazaid != 0)
                    {
                        LobbyEvent.Plaza plaza = getPlazaById(Room.Room.plazaid);
                        rr.star = plaza.star;
                    }
                    else
                    {
                        rr.star = 0;
                    }

                    rr.tag  = Room.Room.tagId;
                    rr.type = Room.Room.roomType;

                    RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_ROOMRULE, (object)rr);
                }
                else
                {
                    //////
                    ViewManagerEvent.sShowView data;
                    data.fromView = ViewManagerEvent.VIEW_TYPE.LOBBY_VIEW;
                    data.toView   = ViewManagerEvent.VIEW_TYPE.GAME_VIEW;
                    ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_VIEW, (object)data);
                }
            }
            else if (Room.Room.roomType == CommonDefine.eCreateRoomType.ROOM_TEAM)
            {
            }
            else
            {
                //另外需要显示房间规则相关的信息在房间某个位置
                //进入房间成功,切换到游戏场景,这里应为主动操作,不需要事件通知请访问GameController来切换
                //或者这里直接切换也行
                //也可以事件通知,为了统一起见
                ViewManagerEvent.sShowView data;
                data.fromView = ViewManagerEvent.VIEW_TYPE.LOBBY_VIEW;
                data.toView   = ViewManagerEvent.VIEW_TYPE.GAME_VIEW;
                ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_VIEW, (object)data);
            }

            //结束处理
            return;
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINGROOM_FAIL_ROOM_NOT_EXIST)
        {
            tip = "房间不存在,请重试";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_ACCOUNT_ERR)
        {
            tip = "加入失败,用户异常";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_FAIL_NO_FREE_ROOM)
        {
            tip = "加入失败,没有可用的房间";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_FIAL_SYSERR)
        {
            tip = "加入失败,系统错误";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_GOLD_LESS)
        {
            tip = "加入失败,您的积分不足,请充值";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_GOLD_MORE)
        {
            tip = "加入失败,您太有钱了,请到其他模式游戏";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_LEVEL_LESS)
        {
            tip = "加入失败,您的级别太高了";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_LEVEL_MORE)
        {
            tip = "加入失败,您的级别太低了";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_PLAZA_ERR)
        {
            tip = "加入失败,参数错误";
        }
        else if (resp.flag == msgRespJoinRoom.RESP_JOINROOM_FLAG.JOINROOM_PWD_ERR)
        {
            tip = "加入失败,密码错误";
        }

        CommonUtil.Util.showDialog("系统提示", tip);
    }