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); } } }
public void onEventShowUserInfo(object data) { SelfData self = Account.getSelfData(); //已经可以更新用户相关界面信息 LobbyEvent.EM().InvokeEvent(LobbyEvent.EVENT.UPDATE_USER_INFO, (object)self); }
//--------------------------以下网络数据更新界面------------------------------ 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; }
//--------------------------以下网络数据更新界面------------------------------ void onUpdateUserInfo(object data) { //假设这里传递了整个account信息,实际上没有必要,也可以另外定义,其他均为相同做法 SelfData self = (SelfData)data; // 刷新所有用户相关的信息 //比如金币显示,昵称,头像等等 _userGold.text = "" + self.gold; _userDiamond.text = "" + self.diamond; //需要处理槽数和目前可安装+已安装不相等的情况 checkTalentSlotNum(self.talent); OnClickHighTalentBtn(); onUpdateTalentCost(); }
//玩家进入房间 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); }
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); }
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(); }
//玩家离开房间 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))); } } } }
private void Awake() { player = GetComponent <SelfData>(); messageBox = GameObject.Find("ChatBar").GetComponent <Chatbox>(); }
//-------------------------------以下为网络消息处理--------------------------------- 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); }