diff options
| author | MichaelTheShifter <[email protected]> | 2016-06-25 08:10:03 -0400 |
|---|---|---|
| committer | MichaelTheShifter <[email protected]> | 2016-06-25 08:10:03 -0400 |
| commit | 84f689b91a73e512b035df40bbcf556b008a3b81 (patch) | |
| tree | da1020b2b5866c7ce300ac7b9c97112fe80fa1b3 /source/WindowsFormsApplication1/HoloChat.cs | |
| parent | 6707e2076a63dafab686fd533c95fb8ceb6c23fa (diff) | |
| download | shiftos-c-_theultimatehacker-84f689b91a73e512b035df40bbcf556b008a3b81.tar.gz shiftos-c-_theultimatehacker-84f689b91a73e512b035df40bbcf556b008a3b81.tar.bz2 shiftos-c-_theultimatehacker-84f689b91a73e512b035df40bbcf556b008a3b81.zip | |
Sort source code into folders.
It feels better to know what's responsible for what... Plus I removed
some un-needed C# stuff.
Diffstat (limited to 'source/WindowsFormsApplication1/HoloChat.cs')
| -rw-r--r-- | source/WindowsFormsApplication1/HoloChat.cs | 666 |
1 files changed, 0 insertions, 666 deletions
diff --git a/source/WindowsFormsApplication1/HoloChat.cs b/source/WindowsFormsApplication1/HoloChat.cs deleted file mode 100644 index 1795d7b..0000000 --- a/source/WindowsFormsApplication1/HoloChat.cs +++ /dev/null @@ -1,666 +0,0 @@ -using NetSockets; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ShiftOS -{ - public partial class HoloChat : Form - { - /// <summary> - /// Front-end for the HoloChat chat system. - /// </summary> - public HoloChat() - { - InitializeComponent(); - } - - public ChatClient Client = null; - public Dictionary<string, string> IPs = null; - - private void HoloChat_Load(object sender, EventArgs e) - { - SetupUI(); - tmrui.Start(); - } - - /// <summary> - /// Sets up the HoloCHat UI. - /// </summary> - public void SetupUI() - { - if (!API.LimitedMode) - { - IPs = new Dictionary<string, string>(); - lbrooms.Items.Clear(); - this.Invoke(new Action(() => - { - if (API.Upgrades["networkbrowser"] == false) - { - lbrooms.Items.Add(Hacker_Alliance.Name); - } - })); - - foreach (var client in Package_Grabber.clients) - { - if (client.Value.IsConnected) - { - client.Value.OnReceived += (object s, NetReceivedEventArgs<NetObject> a) => - { - try - { - if (!IPs.ContainsKey(client.Key)) - { - var obj = (ObjectModel)a.Data.Object; - if (obj.Command == "name") - { - string name = (string)obj.OptionalObject; - IPs.Add(client.Key, name); - } - } - else - { - var obj = (ObjectModel)a.Data.Object; - if (obj.Command == "name") - { - string name = (string)obj.OptionalObject; - IPs[client.Key] = name; - } - } - this.Invoke(new Action(() => - { - string r = ""; - foreach (string room in lbrooms.Items) - { - if (room == IPs[client.Key]) - { - r = room; - } - } - if (r == "") - { - lbrooms.Items.Add(IPs[client.Key]); - } - })); - } - catch - { - - } - }; - Package_Grabber.SendMessage(client.Key, "chat get_name"); - } - } - - } - else - { - if (FinalMission.EndGameHandler.FakeHoloChatRoom != null) - { - lbrooms.Items.Clear(); - lbrooms.Items.Add(FinalMission.EndGameHandler.FakeHoloChatRoom.Name); - } - } - } - - private FakeChatClient Hacker_Alliance - { - get - { - var r = new FakeChatClient(); - r.Name = "The Hacker Alliance"; - r.OtherCharacters = new List<string>(); - if (!API.Upgrades["networkbrowser"]) - { - r.OtherCharacters.Add("Richard Ladouceur"); //Dear djdeedahx0 and other non-ShiftOS members: DEAL with the last name - I'm not creative. - Michael - r.OtherCharacters.Add("Hacker101"); - r.Messages = JsonConvert.DeserializeObject<Dictionary<string, string>>(Properties.Resources.MidGame_Holochat); - r.Topic = "The Hacker Alliance - Please welcome our newest user!"; - } - return r; - - } - } - - private void btnconnect_Click(object sender, EventArgs e) - { - if(lbrooms.SelectedItem != null) - { - if (!API.LimitedMode) - { - string topic = (string)lbrooms.SelectedItem; - if (topic == Hacker_Alliance.Name) - { - SetupFakeClient(Hacker_Alliance); - } - else - { - string ip = ""; - foreach (var obj in IPs) - { - if (obj.Value == topic) - { - ip = obj.Key; - } - } - if (ip != "") - { - API.CreateInfoboxSession("Choose a Nickname", "Please enter a nick name.", infobox.InfoboxMode.TextEntry); - API.InfoboxSession.FormClosing += (object s, FormClosingEventArgs a) => - { - var res = API.GetInfoboxResult(); - if (res != "fail") - { - SetupClient(ip, res); - } - }; - } - } - } - else - { - if((string)lbrooms.SelectedItem == FinalMission.EndGameHandler.FakeHoloChatRoom.Name) - { - SetupFakeClient(FinalMission.EndGameHandler.FakeHoloChatRoom); - } - } - } - } - - /// <summary> - /// Set up a new client. - /// </summary> - /// <param name="address">IP address.</param> - /// <param name="nick">User nickname.</param> - public void SetupClient(string address, string nick) - { - var c = new ChatClient(address, nick); - c.OnMessageReceive += (object s, EventArgs a) => - { - var obj = (ChatMessage)s; - this.Invoke(new Action(() => - { - txtchat.AppendText(Environment.NewLine + $"<{obj.User.Name}> {obj.Text}"); - })); - c.GetUsers(); - }; - c.OnUserListReceived += (object s, EventArgs a) => - { - var obj = (List<ChatUser>)s; - this.Invoke(new Action(() => - { - lbusers.Items.Clear(); - foreach (var user in obj) - { - lbusers.Items.Add(user.Name); - } - })); - }; - c.OnUserJoin += (object s, EventArgs a) => - { - var obj = (ChatUser)s; - this.Invoke(new Action(() => - { - - txtchat.AppendText(Environment.NewLine + $"{obj.Name} has joined this room."); - })); - c.GetUsers(); - }; - c.OnTopicReceived += (object s, EventArgs a) => - { - string topic = (string)s; - this.Invoke(new Action(() => - { - lbtopic.Text = topic; - })); - }; - c.OnUserLeave += (object s, EventArgs a) => - { - var obj = (ChatUser)s; - this.Invoke(new Action(() => - { - txtchat.AppendText(Environment.NewLine + $"{obj.Name} has left this room."); - })); - c.GetUsers(); - }; - c.GetUsers(); - c.GetTopic(); - Client = c; - - } - - public void SetupFakeClient(FakeChatClient fClient) - { - lbtopic.Text = fClient.Topic; - var t = new System.Windows.Forms.Timer(); - t.Interval = 500; - t.Tick += (object s, EventArgs a) => - { - //userlist - lbusers.Items.Clear(); - foreach (var user in fClient.OtherCharacters) - { - lbusers.Items.Add(user); - } - }; - t.Start(); - - int m = 0; - //message buffer - var mb = new System.Windows.Forms.Timer(); - mb.Tick += (object s, EventArgs a) => - { - string message = fClient.Messages.Keys.ElementAt(m); - string user = fClient.Messages[message]; - //show message on textbox - if (message.StartsWith("install:")) - { - try - { - string upg = message.Remove(0, 8); - API.Upgrades[upg] = true; - API.CurrentSession.SetupDesktop(); - } - catch - { - - } - } - else - { - txtchat.AppendText(Environment.NewLine + $"<{user}> {message}"); - } - if (m < fClient.Messages.Count - 1) - { - m += 1; - } - else - { - mb.Stop(); - //Completed the objective! - FinalMission.EndGameHandler.GoToNextObjective(); - } - }; - mb.Interval = 4000; - mb.Start(); - tmrui.Stop(); - pnlintro.Hide(); - } - - private void txtsend_KeyDown(object sender, KeyEventArgs e) - { - if(e.KeyCode == Keys.Enter) - { - e.SuppressKeyPress = true; - if (txtsend.Text != "") - { - if (txtsend.Text.ToLower() == "/disconnect") - { - Client.Leave(); - Client = null; - txtsend.Text = ""; - } - else { - Client.Send(txtsend.Text); - txtsend.Text = ""; - } - } - } - } - - private void me_Closing(object sender, FormClosingEventArgs e) - { - if(Client != null) - { - Client.Leave(); - } - } - - private void tmrui_Tick(object sender, EventArgs e) - { - if(Client == null) - { - pnlintro.Show(); - txtsend.Enabled = false; - } - else - { - pnlintro.Hide(); - txtsend.Enabled = true; - } - } - - private void btnrefresh_Click(object sender, EventArgs e) - { - SetupUI(); - } - - private void txtchat_TextChanged(object sender, EventArgs e) - { - txtchat.Select(txtchat.TextLength, 0); - txtchat.ScrollToCaret(); - txtsend.Focus(); - } - } - - public class ChatClient - { - #region Constructors - - /// <summary> - /// Creates a new chat client. - /// </summary> - /// <param name="IP">IP address</param> - /// <param name="nick">User nickname</param> - public ChatClient(string IP, string nick) - { - NetObjectClient c = null; - foreach(var client in Package_Grabber.clients) - { - if(client.Key == IP) - { - if(client.Value.IsConnected == true) - { - c = client.Value; - IP_Address = IP; - } - } - } - if(c != null) - { - c.OnReceived += (object s, NetReceivedEventArgs<NetObject> a) => - { - try { - var obj = (ObjectModel)a.Data.Object; - string[] args = obj.Command.Split(' '); - if (args[0] == "chat") - { - switch (args[1]) - { - case "userbanned": - try - { - var usr = (ChatUser)obj.OptionalObject; - if(usr.Name == nick) - { - API.CurrentSession.Invoke(new Action(() => - { - API.CreateInfoboxSession("You're banned.", "You have been banned from this chat.", infobox.InfoboxMode.Info); - Leave(); - })); - } - } - catch - { - - } - break; - case "auth_req": - try - { - var usr = (ChatUser)obj.OptionalObject; - if (usr.Name == nick) - { - Thread.Sleep(1000); - API.CurrentSession.Invoke(new Action(() => - { - API.CreateInfoboxSession("Enter Password", "Please enter your password.", infobox.InfoboxMode.TextEntry); - API.InfoboxSession.FormClosing += (object sen, FormClosingEventArgs arg) => - { - var result = API.GetInfoboxResult(); - AuthenticateWithServer(usr.Name, result); - }; - })); - } - } - catch - { - - } - break; - case "auth_fail": - try - { - var usr = (ChatUser)obj.OptionalObject; - if (usr.Name == nick) - { - API.CurrentSession.Invoke(new Action(() => - { - API.CreateInfoboxSession("Error", "You have entered an incorrect password.", infobox.InfoboxMode.Info); - })); - } - } - catch - { - - } - - break; - case "joined": - try - { - var usr = (ChatUser)obj.OptionalObject; - if (usr.Name == nick) - { - if (_User == null) - { - _User = usr; - } - } - if (_User != usr) - { - var h = OnUserJoin; - if (h != null) - { - h(usr, new EventArgs()); - } - } - } - catch - { - - } - break; - case "userlist": - try - { - var lst = (List<ChatUser>)obj.OptionalObject; - var h = OnUserListReceived; - if (h != null) - { - h(lst, new EventArgs()); - } - } - catch - { - - } - break; - case "left": - try - { - var usr = (ChatUser)obj.OptionalObject; - var h = OnUserLeave; - if (h != null) - { - h(usr, new EventArgs()); - } - } - catch - { - - } - break; - case "message_received": - try - { - var usr = (ChatMessage)obj.OptionalObject; - var h = OnMessageReceive; - if (h != null) - { - h(usr, new EventArgs()); - } - } - catch - { - - } - break; - } - } - else if (args[0] == "topic") - { - try - { - string name = (string)obj.OptionalObject; - var h = OnTopicReceived; - if(h != null) - { - h(name, new EventArgs()); - } - } - catch - { - - } - } - } - catch - { - - } - }; - Join(nick); - } - else - { - throw new ArgumentException("IP Address not found."); - } - } - #endregion - - #region Events - - public event EventHandler OnUserJoin; - public event EventHandler OnUserLeave; - public event EventHandler OnMessageReceive; - public event EventHandler OnUserListReceived; - public event EventHandler OnTopicReceived; - - - #endregion - - #region Variables - - private string IP_Address = null; - public ChatUser User { get { return _User; } } - private ChatUser _User = null; - #endregion - - #region Methods - - /// <summary> - /// Authenticates with the server. - /// </summary> - /// <param name="password">Password to authenticate using.</param> - public void AuthenticateWithServer(string nick, string password) - { - var usr = new ChatUser(); - usr.Name = nick; - var msg = new ChatMessage(); - msg.Text = password; - msg.User = usr; - Package_Grabber.SendMessage(IP_Address, "chat authenticate", msg); - } - - /// <summary> - /// Joins the server. - /// </summary> - /// <param name="nick">Nickname.</param> - public void Join(string nick) - { - var usr = new ChatUser(); - usr.Name = nick; - var msg = new ChatMessage(); - msg.User = usr; - Package_Grabber.SendMessage(IP_Address, "chat join", msg); - } - - /// <summary> - /// Leaves the server. - /// </summary> - public void Leave() - { - if (_User != null) - { - var msg = new ChatMessage(); - msg.User = _User; - Package_Grabber.SendMessage(IP_Address, "chat leave", msg); - } - } - - /// <summary> - /// Requests a list of online users. - /// </summary> - public void GetUsers() - { - try - { - Package_Grabber.SendMessage(IP_Address, "chat get_users"); - } - catch - { - - } - } - - /// <summary> - /// Requests the topic string of the server. - /// </summary> - public void GetTopic() - { - try - { - Package_Grabber.SendMessage(IP_Address, "chat get_topic"); - } - catch - { - - } - } - - /// <summary> - /// Sends a message to the server. - /// </summary> - /// <param name="Text">Message text.</param> - public void Send(string Text) - { - if (_User != null) - { - var msg = new ChatMessage(); - msg.User = _User; - msg.Text = Text; - Package_Grabber.SendMessage(IP_Address, "chat normal", msg); - - } - } - - #endregion - } - - public class FakeChatClient - { - public string Name { get; set; } - public string Topic { get; set; } - public List<string> OtherCharacters { get; set; } - public Dictionary<string, string> Messages { get; set; } - } -} |
