class RoomController:BaseController
{
public RoomController(){}
//新建房间
public string CreateRoom(数据, 客户端, 系统){}
//房间列表
public string ListRoom(数据, 客户端, 系统){}
//加入房间
public string JoinRoom(数据, 客户端, 系统){}
//离开房间
public string QuitRoom(数据,客户端, 系统){}
}
class RoomController:BaseController
{
public RoomController(){}
//新建房间
public string CreateRoom(string data, Client client, Server server){}
//房间列表
public string ListRoom(string data, Client client, Server server){}
//加入房间
public string JoinRoom(string data, Client client, Server server){}
//离开房间
public string QuitRoom(string data, Client client, Server server){}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Common;
using GameServer.Servers;
namespace GameServer.Controller
{
class RoomController:BaseController
{
public RoomController()
{
requestCode = RequestCode.Room;
}
//新建房间
public string CreateRoom(string data, Client client, Server server)
{
server.CreateRoom(client);
return ((int)ReturnCode.Success).ToString()+","+ ((int)RoleType.Blue).ToString();
}
//房间列表
public string ListRoom(string data, Client client, Server server)
{
StringBuilder sb = new StringBuilder();
foreach(Room room in server.GetRoomList())
{
if (room.IsWaitingJoin())
{
sb.Append(room.GetHouseOwnerData()+"|");
}
}
if (sb.Length == 0)
{
sb.Append("0");//没有房间返回0
}
else
{
sb.Remove(sb.Length - 1, 1);//去掉中杠
}
return sb.ToString();
}
//加入房间
public string JoinRoom(string data, Client client, Server server)
{
int id = int.Parse(data);
Room room = server.GetRoomById(id);
if(room == null)
{
return ((int)ReturnCode.NotFound).ToString();
}
else if (room.IsWaitingJoin() == false)
{
return ((int)ReturnCode.Fail).ToString();
}
else
{
room.AddClient(client);
string roomData = room.GetRoomData();//"returncode,roletype-id,username,tc,wc|id,username,tc,wc"
room.BroadcastMessage(client, ActionCode.UpdateRoom, roomData);
return ((int)ReturnCode.Success).ToString() + "," + ((int)RoleType.Red).ToString()+ "-" + roomData;
}
}
//离开房间
public string QuitRoom(string data, Client client, Server server)
{
bool isHouseOwner = client.IsHouseOwner();
Room room = client.Room;
if (isHouseOwner)
{
room.BroadcastMessage(client, ActionCode.QuitRoom, ((int)ReturnCode.Success).ToString());
room.Close();
return ((int)ReturnCode.Success).ToString();
}
else
{
client.Room.RemoveClient(client);
room.BroadcastMessage(client, ActionCode.UpdateRoom, room.GetRoomData());
return ((int)ReturnCode.Success).ToString();
}
}
}
}