namespace Holo.Managers { using Holo; using Holo.Virtual.Rooms; using Ion.Storage; using System; using System.Collections; using System.Data; public static class roomManager { private static int _peakRoomCount; public static Hashtable _roomLayOut = new Hashtable(); private static Hashtable _Rooms = new Hashtable(); public static void addRoom(int roomID, virtualRoom Room) { if (!_Rooms.ContainsKey(roomID)) { _Rooms.Add(roomID, Room); Out.WriteLine(string.Concat(new object[] { "Room [", roomID, ", publicroom: ", Room.isPublicroom.ToString().ToLower(), "] loaded." }), Out.logFlags.StandardAction); if (_Rooms.Count > _peakRoomCount) { _peakRoomCount = _Rooms.Count; } } } public static bool containsRoom(int roomID) { return _Rooms.ContainsKey(roomID); } public static virtualRoom getRoom(int roomID) { return (virtualRoom) _Rooms[roomID]; } public static string getRoomState(int State) { if (State == 1) { return "closed"; } if (State == 2) { return "password"; } return "open"; } public static int getRoomState(string State) { if (State == "closed") { return 1; } if (State == "password") { return 2; } return 0; } public static void Init() { } public static void refreshWallitem(int roomID, int itemID, string cctName, string wallPosition, string itemVariable) { getRoom(roomID).sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), cctName, Convert.ToChar(9), " ", wallPosition, Convert.ToChar(9), itemVariable })); } public static void removeRoom(int roomID) { if (_Rooms.ContainsKey(roomID)) { bool boolPublicroom = ((virtualRoom) _Rooms[roomID]).isPublicroom; _Rooms.Remove(roomID); updateRoomVisitorCount(roomID, 0); Out.WriteLine(string.Concat(new object[] { "Room [", roomID, ", publicroom: ", boolPublicroom.ToString().ToLower(), "] destroyed." }), Out.logFlags.StandardAction); GC.Collect(); } } public static void updateRoomVisitorCount(int roomID, int visitorCount) { using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE rooms SET visitors_now = '", visitorCount, "' WHERE id = '", roomID, "' LIMIT 1" })); } } public static int peakRoomCount { get { return _peakRoomCount; } } public static int roomCount { get { return _Rooms.Count; } } public static class moodlight { public static string getSettings(int roomID) { try { DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT preset_cur,preset_1,preset_2,preset_3 FROM furniture_moodlight WHERE roomid = '" + roomID + "'"); } string settingPack = Encoding.encodeVL64(3) + Encoding.encodeVL64(Convert.ToInt32(dRow["preset_cur"])); for (int i = 1; i <= 3; i++) { string[] curPresetData = dRow[i].ToString().Split(new char[] { char.Parse(",") }); object CS$0$0003 = settingPack; settingPack = string.Concat(new object[] { CS$0$0003, Encoding.encodeVL64(i), Encoding.encodeVL64(int.Parse(curPresetData[0])), curPresetData[1], Convert.ToChar(2), Encoding.encodeVL64(int.Parse(curPresetData[2])) }); } return settingPack; } catch { return null; } } public static void setSettings(int roomID, bool isEnabled, int presetID, int bgState, string presetColour, int alphaDarkF) { int itemID; DatabaseClient dbClient; string newPresetValue; string wallPosition; using (dbClient = Eucalypt.dbManager.GetClient()) { itemID = dbClient.getInt("SELECT id FROM furniture_moodlight WHERE roomid = '" + roomID + "'"); } if (!isEnabled) { string curPresetValue; using (dbClient = Eucalypt.dbManager.GetClient()) { curPresetValue = dbClient.getString("SELECT var FROM furniture WHERE id = '" + itemID + "'"); } if (curPresetValue.Substring(0, 1) == "2") { newPresetValue = "1" + curPresetValue.Substring(1); } else { newPresetValue = "2" + curPresetValue.Substring(1); } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE furniture SET var = '" + newPresetValue + "' WHERE id = '" + itemID.ToString() + "' LIMIT 1"); } } else { newPresetValue = "2," + presetID.ToString() + "," + bgState.ToString() + "," + presetColour + "," + alphaDarkF.ToString(); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("var", newPresetValue); dbClient.AddParamWithValue("preset", bgState.ToString() + ", " + presetColour + ", " + alphaDarkF.ToString()); dbClient.runQuery("UPDATE furniture SET var = @var WHERE id = '" + itemID.ToString() + "' LIMIT 1"); dbClient.runQuery("UPDATE furniture_moodlight SET preset_cur = '" + presetID.ToString() + "',preset_" + presetID.ToString() + "= @preset WHERE id = '" + itemID.ToString() + "' LIMIT 1"); } } using (dbClient = Eucalypt.dbManager.GetClient()) { wallPosition = dbClient.getString("SELECT wallpos FROM furniture WHERE id = '" + itemID + "'"); } roomManager.refreshWallitem(roomID, itemID, "roomdimmer", wallPosition, newPresetValue); } } } }