Exemple #1
0
        public static void Load()
        {
            // Why wo uld you ever load more than once?
            if (Channels.Count > 0)
                return;

            using (var reader = new XmlTextReader("channel.xml"))
            {
                while (reader.Read())
                {
                    switch (reader.Name)
                    {
                        case "CHANNEL":
                            var channel = new ChannelTraits(Muids.GetNext());
                            channel.ChannelName = reader.GetAttribute("name");

                            if (!Int32.TryParse(reader.GetAttribute("levelmin"), out channel.MinLevel))
                                channel.MinLevel = 0;

                            channel.MaxUsers = Int32.Parse(reader.GetAttribute("maxplayers"));

                            switch (reader.GetAttribute("rule"))
                            {
                                case "elite":
                                    channel.Rule = ChannelRule.Elite;
                                    break;
                                case "duel":
                                    channel.Rule = ChannelRule.Elite;
                                    channel.Type = ChannelType.DuelTournament;
                                    break;
                            }
                            Add(channel);

                            break;
                    }
                }
            }
        }
Exemple #2
0
 public static void AddAndJoin(Client client, ChannelTraits channelTraits)
 {
     channelTraits.ChannelId = Muids.GetNext();
     Add(channelTraits);
     Find(channelTraits.ChannelId).Join(client);
 }
Exemple #3
0
 public static void Add(ChannelTraits c)
 {
     lock (ObjectLock)
         Channels.Add(new Channel(c));
 }
Exemple #4
0
 public static void Remove(ChannelTraits c)
 {
     lock(ObjectLock)
         Channels.Remove(Channels.Find(channel => channel.GetTraits().Equals(c)));
 }
Exemple #5
0
        public static void ResponseChannelJoinFromName(Client client, PacketReader packetReader)
        {
            var uid = packetReader.ReadUInt64();
            var type = packetReader.ReadInt32();
            var name = packetReader.ReadString();

            if (!Enum.IsDefined(typeof(ChannelType), (byte)type))
            {
                client.Disconnect();
                return;
            }

            Channels.Channel c = ChannelList.Find((ChannelType) type, name);
            if (c == null)
            {
                var channel = new ChannelTraits();
                channel.ChannelName = name;
                channel.Rule = ChannelRule.Elite;
                channel.Type = (ChannelType)type;
                channel.MaxLevel = 100;
                channel.MinLevel = 0;
                channel.MaxUsers = 100;

                ChannelList.AddAndJoin(client, channel);
                return;
            }
            client.ClientPlayer.PlayerChannel = c;
            c.Join(client);
        }
Exemple #6
0
 public Channel(ChannelTraits traits)
 {
     _traits = traits;
 }