示例#1
0
    void OnRespPlayerAct(Message msg)
    {
        // 自己只收到一个简单的响应,别人准备收到的是 playerstate
        //ret:
        msgSimpleResp resp = msgSimpleResp.deserialize(msg);
        SelfData      self = Account.getSelfData();

        if (resp.ret == 0)
        {
            //自己准备成功
            if (Room.Room.updatePlayerStateByUserID(self.userID, CommonDefine.PLAYER_STATE.STATE_TYPE_ROOMREADY))
            {
                RoomEvent.sC2V_PlayerState ps;
                ps.state      = CommonDefine.PLAYER_STATE.STATE_TYPE_ROOMREADY;
                ps.local      = Room.Room.getLocalBySeat(Room.Room.selfSeat);
                ps.ifAllReady = Room.Room.getIfAllPlayerReady();

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

                //准备成功,上报天赋列表
                RoomEvent.sV2C_PlayerTalentList ptl;
                ptl.local = ps.local;

                Room.Player?player = Room.Room.getPlayerBySeat(Room.Room.selfSeat);

                ptl.talentList = new List <int>();
                for (int i = 0; i < player.Value.talentList.Count; i++)
                {
                    ptl.talentList.Add((int)player.Value.talentList[i]);
                }

                onEventReportTalent((object)ptl);
            }
        }
    }
示例#2
0
    public void onEventShowUserInfo(object data)
    {
        SelfData self = Account.getSelfData();

        //已经可以更新用户相关界面信息
        LobbyEvent.EM().InvokeEvent(LobbyEvent.EVENT.UPDATE_USER_INFO, (object)self);
    }
示例#3
0
    //--------------------------以下网络数据更新界面------------------------------

    void onUpdataUserInfo(object data)
    {
        //假设这里传递了整个account信息,实际上没有必要,也可以另外定义,其他均为相同做法
        SelfData self = (SelfData)data;

        // 刷新所有用户相关的信息
        //比如金币显示,昵称,头像等等

        setHead(self.head, _userHead);       //设置头像

        _userName.text    = self.name;
        _userGold.text    = "" + self.gold;
        _userDiamond.text = "" + self.diamond;
    }
示例#4
0
    //--------------------------以下网络数据更新界面------------------------------

    void onUpdateUserInfo(object data)
    {
        //假设这里传递了整个account信息,实际上没有必要,也可以另外定义,其他均为相同做法
        SelfData self = (SelfData)data;

        // 刷新所有用户相关的信息
        //比如金币显示,昵称,头像等等
        _userGold.text    = "" + self.gold;
        _userDiamond.text = "" + self.diamond;


        //需要处理槽数和目前可安装+已安装不相等的情况
        checkTalentSlotNum(self.talent);
        OnClickHighTalentBtn();

        onUpdateTalentCost();
    }
示例#5
0
    //玩家进入房间
    void OnPlayerEnter(Message msg)
    {
        msgPlayerInfo resp = msgPlayerInfo.deserialize(msg);

        SelfData self = Account.getSelfData();

        if (resp.userID != self.userID && Room.Room.playerList.Count == 0)
        {
            Debug.Log("第一个进来的玩家不是自己,这会导致座位错误,无法处理,出错!");
            return;
        }

        //将数据写入游戏房间数据
        Room.Player player = new Room.Player();
        player.charm   = resp.charm;
        player.draw    = resp.draw;
        player.escapse = resp.escape;
        player.vip     = resp.vip;
        player.gold    = resp.gold;
        player.head    = resp.headUrl;
        player.lose    = resp.lose;
        player.name    = resp.name;
        player.score   = resp.score;
        player.seat    = resp.seat;
        player.sex     = resp.sex;
        player.state   = CommonDefine.PLAYER_STATE.STATE_TYPE_SITDOWN;      // 默认坐下状态,接下来要准备
        player.userID  = resp.userID;
        player.win     = resp.win;
        player.isOwner = Room.Room.owner == resp.userID;

        player.talentList = new List <eTalentType> ();
        //进来的如果是自己,则初始化天赋列表
        //从自己的数据中获取
        if (resp.userID == self.userID)
        {
            //self
            player.talentList.AddRange(self.talentList);
        }

        //原则上来说,第一个进入的必须是自己,否则不应该处理
        Room.Room.addPlayer(player);

        //显示用户, 此处需要将seat转为local
        RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.PLAER_ENTER, player);
    }
示例#6
0
    void onEventGetRoomList(object data)
    {
        SelfData self = Account.getSelfData();

        RoomEvent.sV2C_GetRoomList getRoom = (RoomEvent.sV2C_GetRoomList)data;

        msgReqRoomList rl = new msgReqRoomList();

        rl.areaID = self.area;

        //原则上来说,以后这两个数据需要传过来
        rl.begin  = getRoom.currentPage * getRoom.perCnt;
        rl.reqCnt = getRoom.perCnt;        //所有

        rl.game = GameType.GAME_LIANQI;
        ProtocolManager.getInstance().sendMsg(GameProtocol.P_GAME_REQ_ROOMLIST, rl, OnRespRoomList);

        ViewManagerEvent.EM().InvokeEvent(ViewManagerEvent.EVENT.SHOW_LOADING_ANI, true);
    }
示例#7
0
    public static void onLoginSuccess(SelfData playerData, NowAccount.eLoginType loginBy)
    {
        selfData = playerData;

        _nowAccount.area   = selfData.area;
        _nowAccount.userID = selfData.userID;
        //_nowAccount.pwd = selfData.pwd;

        _nowAccount.lastLoginType = loginBy;

        if (_nowAccount.lastLoginType == NowAccount.eLoginType.LOGIN_TYPE_QQ ||
            _nowAccount.lastLoginType == NowAccount.eLoginType.LOGIN_TYPE_WX)
        {
            _nowAccount.token  = thirdToken;
            _nowAccount.openid = thirdOpenID;
        }
        //填写now account,并保存到本地
        saveNowAccount();
    }
示例#8
0
    //玩家离开房间
    void OnPlayerLeave(Message msg)
    {
        //自己离开收到的是另外一个消息:msgRespLeaveRoom,如果是非请求离开,则会收到这个,需要根据id判断是否是自己。
        //目前不支持t人,所以自己一般不会收到这个消息
        msgPlayerLeave resp = msgPlayerLeave.deserialize(msg);

        SelfData self = Account.getSelfData();

        if (resp.userID == self.userID)
        {
            if (resp.type == msgPlayerLeave.PLAYER_LEAVE_ROOM_TYPE.LEAVE_ROOM_GAMEEND)
            {
                //此时清空房间缓存数据
                Room.Room.reset();
            }
            else if (resp.type == msgPlayerLeave.PLAYER_LEAVE_ROOM_TYPE.LEAVE_ROOM_REMOVED)
            {
            }
        }
        else
        {
            if (msgPlayerLeave.PLAYER_LEAVE_ROOM_TYPE.LEAVE_ROOM_OWNER_DISSOLVE == resp.type)
            {
                //解散房间 相当于自己退出
                ////切换面板
                RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_DISSOLVE_ROOM, null);
                Room.Room.reset();
            }
            else
            {
                //别人退出
                if (Room.Room.removePlayerBySeat(resp.seat))
                {
                    RoomEvent.EM().InvokeEvent(RoomEvent.EVENT.UPDATE_LEAVE_ROOM, (object)(Room.Room.getLocalBySeat(resp.seat)));
                }
            }
        }
    }
示例#9
0
 private void Awake()
 {
     player     = GetComponent <SelfData>();
     messageBox = GameObject.Find("ChatBar").GetComponent <Chatbox>();
 }
示例#10
0
    //-------------------------------以下为网络消息处理---------------------------------
    public void onAccountLoginSuccess(object data)
    {
        //此时需要加载动画,大厅界面不可点击,数据全部收到或者部分收到时,可以点击。
        SelfData self = Account.getSelfData();

        onEventShowUserInfo(null);

        //为了节省服务器压力,以下数据后续需要实现md5方式请求,如果数据未发生变动,则不需要请求。to do
        //请求大厅数据
        msgReqPlazaList plaza = new msgReqPlazaList();

        plaza.game = GameType.GAME_LIANQI;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_PLAZA_LIST, plaza, OnRespPlazaList);

        msgReqPropList prop = new msgReqPropList();

        prop.game = GameType.GAME_LIANQI;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_PROP_LIST, prop, OnRespPropList);

        msgReqPackageList package = new msgReqPackageList();

        package.game = GameType.GAME_LIANQI;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_PACKAGE_LIST, package, OnRespPackageList);

        msgReqSysMsgList sysmsg = new msgReqSysMsgList();

        sysmsg.game      = GameType.GAME_LIANQI;
        sysmsg.channelId = ChannelType.CHANNEL_APPSTORE;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_SYSMSG, sysmsg, OnRespSysMsgList);

        //
        msgReqPrivateMsgList primsg = new msgReqPrivateMsgList();

        primsg.game  = GameType.GAME_LIANQI;
        primsg.begin = 0;
        primsg.cnt   = 20;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_PRIVATEMSG, primsg, OnRespPrivateMsgList);

        msgReqStoreList store = new msgReqStoreList();

        store.game      = GameType.GAME_LIANQI;
        store.channelID = ChannelType.CHANNEL_APPSTORE;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_STORE_LIST, store, OnRespStoreList);

        msgReqFriendList friend = new msgReqFriendList();

        friend.game = GameType.GAME_LIANQI;
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_FRIEND_LIST, friend, OnRespFriendList);


        /////新增 2017-04-05
        //请求签到和抽奖数据
        msgReqSignInLuckDrawData sild = new msgReqSignInLuckDrawData();

        sild.game     = GameType.GAME_LIANQI;
        sild.areaID   = self.area;
        sild.deviceID = "deviceID";
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_SIGNIN_LUCKDRAW_DATA, sild, OnRespSignInLuckDrawList);
        //请求签到
        msgReqSignIn signin = new msgReqSignIn();

        signin.game     = GameType.GAME_LIANQI;
        signin.areaID   = self.area;
        signin.deviceID = "deviceID";
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_SIGNIN, signin, OnRespSignIn);
        //请求抽奖
        msgReqLuckDraw luckdraw = new msgReqLuckDraw();

        luckdraw.game     = GameType.GAME_LIANQI;
        luckdraw.areaID   = self.area;
        luckdraw.deviceID = "deviceID";
        ProtocolManager.getInstance().sendMsg(LobbyProtocol.P_LOBBY_REQ_LUCKDRAW, luckdraw, OnRespLuckDraw);
    }