namespace Holo.Managers { using Holo; using System; using System.Collections; public static class recyclerManager { private static int itemMinOwnershipLength; private static int sessionExpireLength; private static int sessionLength; private static Hashtable sessionRewards; public static string setupString; public static void createSession(int userID, int itemCount) { int num = (int) sessionRewards[itemCount]; DB.runQuery(string.Concat(new object[] { "INSERT INTO users_recycler(userid,session_started,session_reward) VALUES ('", userID, "','", DateTime.Now.ToString(), "','", num, "')" })); } public static void dropSession(int userID, bool dropItems) { DB.runQuery("DELETE FROM users_recycler WHERE userid = '" + userID + "' LIMIT 1"); if (dropItems) { DB.runQuery("DELETE FROM furniture WHERE ownerid = '" + userID + "' AND roomid = '-2'"); } else { DB.runQuery("UPDATE furniture SET roomid = '0' WHERE ownerid = '" + userID + "' AND roomid = '-2'"); } } public static void Init() { if (Config.getTableEntry("recycler_enable") == "1") { Config.enableRecycler = true; Out.WriteLine("Carico il reciclaggio..."); int[] numArray = DB.runReadColumn("SELECT rclr_cost FROM system_recycler", 0, null); int[] numArray2 = DB.runReadColumn("SELECT rclr_reward FROM system_recycler", 0, null); sessionLength = int.Parse(Config.getTableEntry("recycler_session_length")); sessionExpireLength = int.Parse(Config.getTableEntry("recycler_session_expirelength")); itemMinOwnershipLength = int.Parse(Config.getTableEntry("recycler_minownertime")); sessionRewards = new Hashtable(); recyclerManager.setupString = "I" + Encoding.encodeVL64(itemMinOwnershipLength) + Encoding.encodeVL64(sessionLength) + Encoding.encodeVL64(sessionExpireLength) + Encoding.encodeVL64(numArray.Length); for (int i = 0; i < numArray.Length; i++) { catalogueManager.itemTemplate template = catalogueManager.getTemplate(numArray2[i]); if (template.Sprite != "") { sessionRewards.Add(numArray[i], numArray2[i]); object setupString = recyclerManager.setupString; recyclerManager.setupString = string.Concat(new object[] { setupString, Encoding.encodeVL64(numArray[i]), "H", template.Sprite, Convert.ToChar(2), "H", Encoding.encodeVL64(template.Length), Encoding.encodeVL64(template.Width), Convert.ToChar(2) }); } } Out.WriteLine("Reciclaggio abilitato"); } else { recyclerManager.setupString = "H"; Out.WriteLine("Reciclaggio disabilitato"); } } public static int passedMinutes(int userID) { try { TimeSpan span = (TimeSpan) (DateTime.Now - DateTime.Parse(DB.runRead("SELECT session_started FROM users_recycler WHERE userid = '" + userID + "'"))); return Convert.ToInt32(span.TotalMinutes); } catch { return 0; } } public static bool rewardExists(int itemCount) { return sessionRewards.ContainsKey(itemCount); } public static void rewardSession(int userID) { int templateID = sessionRewardID(userID); DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture(tid,ownerid) VALUES ('", sessionRewardID(userID), "','", userID, "')" })); catalogueManager.handlePurchase(templateID, userID, 0, 0, 0); } public static bool sessionExists(int userID) { return DB.checkExists("SELECT userid FROM users_recycler WHERE userid = '" + userID + "'"); } public static bool sessionReady(int userID) { if (sessionExists(userID)) { int num = passedMinutes(userID); if ((num > sessionLength) & (num < sessionExpireLength)) { return true; } } return false; } private static int sessionRewardID(int userID) { return DB.runRead("SELECT session_reward FROM users_recycler WHERE userid = '" + userID + "'", null); } public static string sessionString(int userID) { if (Config.enableRecycler) { if (!DB.checkExists("SELECT * FROM users_recycler WHERE userid = '" + userID + "'")) { return "H"; } int num = passedMinutes(userID); if (num < sessionLength) { return string.Concat(new object[] { "IH", catalogueManager.getTemplate(sessionRewardID(userID)).Sprite, Convert.ToChar(2), Encoding.encodeVL64(sessionLength - num) }); } if (num > sessionLength) { return ("JH" + catalogueManager.getTemplate(sessionRewardID(userID)).Sprite + Convert.ToChar(2)); } if (num > sessionExpireLength) { return "K"; } } return "H"; } } }