123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace ET.Server
- {
- /// <summary>
- /// 创建房间
- /// </summary>
- [MessageHandler(SceneType.Game)]
- public class C2G_CreatRoomHandler : AMRpcHandler<C2G_CreatRoom, G2C_CreatRoom>
- {
- protected override async ETTask Run(Session session, C2G_CreatRoom request, G2C_CreatRoom response, Action reply)
- {
- Player player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
- if (player == null)
- {
- response.Error = ErrorCode.ERR_OperationError;
- response.Message = "玩家不存在或离线...";
- reply();
- return;
- }
-
- // 玩家是否在房间
- if (player.RoomID > 0)
- {
- response.Error = ErrorCode.ERR_OperationError;
- response.Message = "玩家已在房间,不可创建房间...";
- reply();
- return;
- }
-
- Scene scene = session.DomainScene();
-
- // 创建房间
- Room room = scene.GetComponent<GameRoomComponent>().AddChild<Room, Player>(player);
- if (room == null)
- {
- response.Error = ErrorCode.ERR_SystemError;
- response.Message = "创建房间失败...";
- reply();
- return;
- }
-
- // 返回房间数据
- response.OwnerId = room.OwnerId;
- response.PlayerList = new List<PlayerInfo>();
- foreach (Player p in room.Players.Where(p => p != null))
- {
- response.PlayerList.Add(PlayerHelper.PlayerToProto(p));
- }
-
- await ETTask.CompletedTask;
- }
- }
- }
|