namespace Butterfly.HabboHotel.Habbo.Guilds { using Butterfly; using Butterfly.HabboHotel; using Database_Manager.Database.Session_Details.Interfaces; using System; using System.Collections; using System.Collections.Generic; using System.Data; internal class Guilds { public Queue deleteGuild = new Queue(); public Dictionary loadedGuilds = new Dictionary(); public Queue loadGuild = new Queue(); public MyGuild AddGuild(int id, string name, int ownerid, string ownername, string description, int roomid, string image, int customcolor1, int customcolor2, int guildbase, int guildbasecolor, List guildstates, string htmlcolor1, string htmlcolor2, string datecreated, List members, List petitions, int type, int rightstype) { Game game = ButterflyEnvironment.GetGame(); game.LastGuildId++; id = ButterflyEnvironment.GetGame().LastGuildId; MyGuild g = new MyGuild(id, name, ownerid, ownername, description, roomid, image, customcolor1, customcolor2, guildbase, guildbasecolor, guildstates, htmlcolor1, htmlcolor2, datecreated, members, petitions, type, rightstype, new Dictionary()); string str = ""; foreach (int num in guildstates) { str = str + num + ";"; } str = str.Substring(0, str.Length - 1); using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { adapter.runFastQuery(string.Concat(new object[] { "INSERT INTO groups (Id, Name, OwnerId, OwnerName, Description, RoomId, Image, CustomColor1, CustomColor2, GuildBase, GuildBaseColor, GuildStates, HtmlColor1, HtmlColor2, DateCreated) VALUES ('", id, "','", ButterflyEnvironment.FilterInjectionChars(name), "','", ownerid, "','", ownername, "','", ButterflyEnvironment.FilterInjectionChars(description), "','", roomid, "','", image, "','", customcolor1, "','", customcolor2, "','", guildbase, "','", guildbasecolor, "','", ButterflyEnvironment.FilterInjectionChars(str), "','", htmlcolor1, "','", htmlcolor2, "','", datecreated, "')" })); adapter.runFastQuery(string.Concat(new object[] { "UPDATE rooms SET GroupId = '", id, "' WHERE Id = '", roomid, "'" })); } this.QueueAddGuild(g); return g; } public string GenerateGuildImage(int GuildBase, int GuildBaseColor, List GStates) { List list = GStates; string str = ""; int num = 0; string str2 = "b"; if (GuildBase.ToString().Length >= 2) { str2 = str2 + GuildBase; } else { str2 = str2 + "0" + GuildBase; } str = GuildBaseColor.ToString(); if (str.Length >= 2) { str2 = str2 + str; } else if (str.Length <= 1) { str2 = str2 + "0" + str; } int num2 = 0; if (list[9] != 0) { num2 = 4; } else if (list[6] != 0) { num2 = 3; } else if (list[3] != 0) { num2 = 2; } else if (list[0] != 0) { num2 = 1; } int num3 = 0; for (int i = 0; i < num2; i++) { str2 = str2 + "s"; num = list[num3] - 20; if (num.ToString().Length >= 2) { str2 = str2 + num; } else { str2 = str2 + "0" + num; } int num5 = list[1 + num3]; str = num5.ToString(); if (str.Length >= 2) { str2 = str2 + str; } else if (str.Length <= 1) { str2 = str2 + "0" + str; } str2 = str2 + list[2 + num3].ToString(); switch (num3) { case 0: num3 = 3; break; case 3: num3 = 6; break; case 6: num3 = 9; break; } } return str2; } public MyGuild GetGuild(int GuildId) { if (this.loadedGuilds.ContainsKey(GuildId)) { return this.loadedGuilds[GuildId]; } return this.LoadGuild(GuildId); } public string GetHtmlColor(int Color) { using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { adapter.setQuery("SELECT ExtraData1 FROM groups_elements WHERE Id = '" + Color + "' AND Type = 'Color3'"); return adapter.getString(); } } public MyGuild LoadGuild(int GuildId) { using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { adapter.setQuery("SELECT * FROM groups WHERE Id = '" + GuildId + "' LIMIT 1"); DataRow row = adapter.getRow(); if (row == null) { return null; } List guildstates = new List(); foreach (string str in row["GuildStates"].ToString().Split(new char[] { ';' })) { try { guildstates.Add(int.Parse(str)); } catch { } } List petitions = new List(); foreach (string str2 in row["Petitions"].ToString().Split(new char[] { ';' })) { try { petitions.Add(int.Parse(str2)); } catch { } } Dictionary guildranks = new Dictionary(); List members = new List(); adapter.setQuery("SELECT * FROM user_groups WHERE GroupId = '" + GuildId + "'"); DataTable table = adapter.getTable(); foreach (DataRow row2 in table.Rows) { members.Add((int) row2["UserId"]); guildranks.Add((int) row2["UserId"], (int) row2["Rank"]); } MyGuild g = new MyGuild(GuildId, row["Name"].ToString(), (int) row["OwnerId"], row["OwnerName"].ToString(), row["Description"].ToString(), (int) row["RoomId"], row["Image"].ToString(), (int) row["CustomColor1"], (int) row["CustomColor2"], (int) row["GuildBase"], (int) row["GuildBaseColor"], guildstates, row["HtmlColor1"].ToString(), row["HtmlColor2"].ToString(), row["DateCreated"].ToString(), members, petitions, (int) row["Typee"], (int) row["RightsType"], guildranks); this.QueueAddGuild(g); return g; } } public void OnCycle() { this.WorkAddGuildQueue(); this.WorkGuildRemoveQueue(); } public void QueueAddGuild(MyGuild G) { lock (this.loadGuild.SyncRoot) { this.loadGuild.Enqueue(G); } } public void QueueDeleteGuild(MyGuild G) { lock (this.deleteGuild.SyncRoot) { this.deleteGuild.Enqueue(G); } } public void UnloadGuild(int GuildId) { MyGuild g = this.GetGuild(GuildId); if (g != null) { this.QueueDeleteGuild(g); } } private void WorkAddGuildQueue() { try { if (this.loadGuild.Count > 0) { lock (this.loadGuild.SyncRoot) { while (this.loadGuild.Count > 0) { MyGuild guild = (MyGuild) this.loadGuild.Dequeue(); if (!this.loadedGuilds.ContainsValue(guild)) { this.loadedGuilds.Add(guild.Id, guild); } else { this.loadedGuilds[guild.Id] = guild; } } } } } catch { } } private void WorkGuildRemoveQueue() { if (this.deleteGuild.Count > 0) { lock (this.deleteGuild.SyncRoot) { while (this.deleteGuild.Count > 0) { MyGuild guild = (MyGuild) this.deleteGuild.Dequeue(); this.loadedGuilds.Remove(guild.Id); } } } } } }