From 21f1e95fb8e935134a969bc3d729964d8d2aadfa Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Thu, 14 May 2020 23:06:10 -0400 Subject: rename Irc to IRC --- IRCStates/Channel.cs | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 IRCStates/Channel.cs (limited to 'IRCStates/Channel.cs') diff --git a/IRCStates/Channel.cs b/IRCStates/Channel.cs new file mode 100644 index 0000000..60ca3fb --- /dev/null +++ b/IRCStates/Channel.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace IRCStates +{ + public class Channel + { + public Channel() + { + Users = new Dictionary(); + ListModes = new Dictionary>(); + Modes = new Dictionary(); + } + + public string Name { get; set; } + public string NameLower { get; set; } + public Dictionary Users { get; set; } + public string Topic { get; set; } + public string TopicSetter { get; set; } + public DateTime TopicTime { get; set; } + public DateTime Created { get; set; } + public Dictionary> ListModes { get; set; } + public Dictionary Modes { get; set; } + + public override string ToString() + { + return $"Channel(name={Name})"; + } + + public void SetName(string name, string nameLower) + { + Name = name; + NameLower = nameLower; + } + + public void AddMode(string ch, string param, bool listMode) + { + if (listMode) + { + if (!ListModes.ContainsKey(ch)) ListModes[ch] = new List(); + + if (!ListModes[ch].Contains(param)) ListModes[ch].Add(param ?? string.Empty); + } + else + { + Modes[ch] = param; + } + } + + public void RemoveMode(string ch, string param) + { + if (ListModes.ContainsKey(ch)) + { + if (ListModes[ch].Contains(param)) + { + ListModes[ch].Remove(param); + if (!ListModes[ch].Any()) ListModes.Remove(ch); + } + } + else if (Modes.ContainsKey(ch)) + { + Modes.Remove(ch); + } + } + } +} -- cgit 1.4.1