static void Main(string[] args) { var systemsCollection = new SystemsCollection(); systemsCollection.Add(new MoveSystem()); var world = new World(); var player = new Entity(); player.AddComponent(new PositionComponent()); world.AddEntity(player); while (true) { systemsCollection.Update(world, 0); } }
public override void Install(CommandsManager manager) { LoadSystemsDictionary(); // Setup the one time listener for adding systems. manager.Client.MessageCreated += async( e) => { if (WaitingOnInput) { if (WaitingOnInputFrom.Id == e.Author.Id && WaitingChannel.Id == e.Channel.Id) { if (!e.Message.Content.Contains("addsystem")) //skip because this has already been handled. { Console.WriteLine($"[SystemsModule] Got input from correct person in correct channel {WaitingOnInputFrom.Id} == {e.Author.Id}"); try { if (SystemsDatabase.ContainsKey(e.Author.Id)) //we already have a systems collection for this user. { Console.WriteLine("[SystemsModule] Already had one, added"); SystemsDatabase[e.Author.Id].Add("System " + (SystemsDatabase[e.Author.Id].Count + 1), e.Message.Content); } else { Console.WriteLine("[SystemsModule] Created one"); SystemsCollection <string, string> collection = new SystemsCollection <string, string>(); collection.UserSnowflake = e.Author.Id; string systemName = "System 1"; if (!String.IsNullOrEmpty(PotentialSystemName)) { systemName = PotentialSystemName.Trim(); PotentialSystemName = null; } collection.Add(systemName, e.Message.Content); SystemsDatabase.Add(e.Author.Id, collection); } //SystemsDatabase[e.Author.Id] = collection; WaitingOnInput = false; WaitingOnInputFrom = null; Console.WriteLine("[SystemsModule] Flushing"); //Might as well save after write, I don't pay for the SSD on the VPS... FlushSystemsModule(); await e.Channel.SendMessageAsync("👌"); } catch (Exception ex) { await e.Channel.SendMessageAsync("bro something is royally f****d: " + ex.Message); Console.WriteLine("[SystemsModule] Exception details\n\n" + ex.Message + "\n\n" + ex.StackTrace + "\n\n"); WaitingOnInput = false; WaitingOnInputFrom = null; } } } } }; manager.AddCommand(new CommandStub("addsystem", "Adds your system to the database, simply follow the prompts. ", "addsystem", cmdArgs => { if (cmdArgs.Args.Count > 1) { PotentialSystemName = cmdArgs.Args[1]; } else { PotentialSystemName = null; } var m = cmdArgs.Channel.SendMessageAsync($"Please enter system specs"); Console.WriteLine($"[SystemsModule] Waiting on input from {cmdArgs.Message.Author.Username}"); WaitingOnInput = true; WaitingOnInputFrom = cmdArgs.Message.Author; WaitingChannel = cmdArgs.Message.Channel; }, argCount: 1), this); manager.AddCommand(new CommandStub("system", "get someone's specs (mention is optional)", "system <user>", cmdArgs => { if (cmdArgs.Args.Count == 1) { // Check if it's a mention and handle nicely if (cmdArgs.Args[0].StartsWith("<@") && (cmdArgs.Args[0].EndsWith(">"))) { ulong ID = ulong.Parse(cmdArgs.Args[0].Trim(new char[] { '<', '>', '@', '!' })); List <DiscordMember> membersListAsList = new List <DiscordMember>(cmdArgs.Channel.Guild.Members); DiscordMember member = membersListAsList.Find(x => x.Id == ID); if (SystemsDatabase.ContainsKey(ID)) { SystemsCollection <string, string> collection = SystemsDatabase[ID]; var first = collection.First(); string system = first.Value; // TODO come back in a sec DiscordEmbedBuilder b = new DiscordEmbedBuilder(); b.WithAuthor(member.DisplayName, icon_url: member.AvatarUrl); b.WithColor(DiscordColor.Purple); b.AddField("System", system); cmdArgs.Channel.SendMessageAsync(embed: b.Build()); } else { cmdArgs.Channel.SendMessageAsync("Sorry! You're not in the database :c"); } } else { IReadOnlyList <DiscordMember> membersList = cmdArgs.Channel.Guild.Members; if (membersList != null) { List <DiscordMember> membersListAsList = new List <DiscordMember>(membersList); DiscordMember member = membersListAsList.Find(x => x.Username.Trim('@') == cmdArgs.Args[0].Trim()); if (member != null) { if (SystemsDatabase.ContainsKey(member.Id)) { SystemsCollection <string, string> collection = SystemsDatabase[member.Id]; var first = collection.First(); string system = first.Value; //cmdArgs.Channel.SendMessageAsync($"**System for {member.DisplayName}**:\n\n{system}"); DiscordEmbedBuilder b = new DiscordEmbedBuilder(); b.WithAuthor(member.DisplayName, icon_url: member.AvatarUrl); b.WithColor(DiscordColor.Purple); b.AddField(first.Key, system); cmdArgs.Channel.SendMessageAsync(embed: b.Build()); } else { cmdArgs.Channel.SendMessageAsync("Sorry! Not in the database :c"); } } } } } else //do it for self { ulong ID = cmdArgs.Author.Id; List <DiscordMember> membersListAsList = new List <DiscordMember>(cmdArgs.Channel.Guild.Members); DiscordMember member = membersListAsList.Find(x => x.Id == ID); if (SystemsDatabase.ContainsKey(ID)) { SystemsCollection <string, string> collection = SystemsDatabase[ID]; var first = collection.First(); string system = first.Value; // TODO come back in a sec DiscordEmbedBuilder b = new DiscordEmbedBuilder(); b.WithAuthor(member.DisplayName, icon_url: member.AvatarUrl); b.WithColor(DiscordColor.Purple); b.AddField(first.Key, system); cmdArgs.Channel.SendMessageAsync(embed: b.Build()); } else { cmdArgs.Channel.SendMessageAsync("Sorry! You're not in the database :c"); } } }, PermissionType.User, 1), this); manager.AddCommand(new CommandStub("removesystem", "remove your system", "removesystem", cmdArgs => { ulong userID = cmdArgs.Message.Author.Id; try { SystemsDatabase.Remove(userID); cmdArgs.Channel.SendMessageAsync("👌"); } catch (Exception ex) { cmdArgs.Channel.SendMessageAsync("Unable to remove your system. Please tell an admin immediately, something is royally borked.\n\n```\n" + ex.Message + "\n```"); } }, PermissionType.User, 0), this); }