public static void ChannelSelect(byte[] packet, SocketClient sockstate)
{
CMSG_CHANNEL_SELECT cpkt = (CMSG_CHANNEL_SELECT)packet;
String SqrName = cpkt.SqrName;
lock (Program.SquareList)
{
for (int i = 0; i < Program.SquareList.Count; ++i)
{
if (Program.SquareList[i].Name == SqrName)
{
SMSG_CHANNEL_SELECT spkt = new SMSG_CHANNEL_SELECT(Program.SquareList[i], sockstate.SelectedChar);
SMSG_SEND_SESSION sessionPkt = new SMSG_SEND_SESSION(sockstate.SelectedChar);
try
{
// notify world
Program.SquareList[i].Socket.Client.Socket.Send(sessionPkt.Stream);
}
catch(Exception)
{
Logger.Log(Logger.LogLevel.Access, "World Server", "Server {0} not responding", Program.SquareList[i].Name);
Program.SquareList.RemoveAt(i);
}
// notify client
sockstate.Client.PacketQueue.Enqueue(spkt.Stream);
break;
}
}
}
}