using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Data; using Ion.Storage; using System.Threading; namespace Holo.Source.Managers { public static class modeldataManager { //Most important one private static Hashtable Modeldata_heightmap; //UBER private static Hashtable Modeldata_publicroom_items; private static Hashtable Modeldata_door_x; private static Hashtable Modeldata_door_y; private static Hashtable Modeldata_door_h; private static Hashtable Modeldata_door_z; //Not so important xD private static Hashtable Modeldata_roomomatic_suscr; private static Hashtable Modeldata_swimmingpool; private static Hashtable Modeldata_specialcast_emitter; private static Hashtable Modeldata_specialcast_interval; private static Hashtable Modeldata_specialcast_rnd_min; private static Hashtable Modeldata_specialcast_rnd_max; private static Hashtable Modeldata_triggers; #region Startup internal static void Init(bool Update) { Out.WriteLine("Starting caching of room_modeldata..."); DataColumn dCol; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT model FROM room_modeldata ORDER BY modelID"); } Modeldata_triggers = new Hashtable(); Modeldata_heightmap = new Hashtable(); Modeldata_publicroom_items = new Hashtable(); Modeldata_door_x = new Hashtable(); Modeldata_door_y = new Hashtable(); Modeldata_door_h = new Hashtable(); Modeldata_door_z = new Hashtable(); Modeldata_roomomatic_suscr = new Hashtable(); Modeldata_swimmingpool = new Hashtable(); Modeldata_specialcast_emitter = new Hashtable(); Modeldata_specialcast_interval = new Hashtable(); Modeldata_specialcast_rnd_min = new Hashtable(); Modeldata_specialcast_rnd_max = new Hashtable(); Modeldata_triggers = new Hashtable(); foreach (DataRow dRow in dCol.Table.Rows) { ChacheData(dRow["model"].ToString()); } Out.WriteLine("Modeldata cached"); if (Update) Thread.CurrentThread.Abort(); } internal static void ChacheData(string _Model) { DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT room_modeldata.modelID, room_modeldata.model, room_modeldata.roomomatic_subscr_only, room_modeldata.door_x, room_modeldata.door_y, room_modeldata.door_h, room_modeldata.door_z, room_modeldata.heightmap, room_modeldata.publicroom_items, room_modeldata.swimmingpool, room_modeldata.specialcast_emitter, room_modeldata.specialcast_interval, room_modeldata.specialcast_rnd_min, room_modeldata.specialcast_rnd_max FROM room_modeldata WHERE model = '" + _Model + "' LIMIT 1"); } Modeldata_heightmap.Add(_Model, Convert.ToString(dRow["heightmap"])); Modeldata_publicroom_items.Add(_Model, Convert.ToString(dRow["publicroom_items"])); Modeldata_door_x.Add(_Model, Convert.ToInt32(dRow["door_x"])); Modeldata_door_y.Add(_Model, Convert.ToInt32(dRow["door_y"])); Modeldata_door_z.Add(_Model, Convert.ToByte(dRow["door_z"])); Modeldata_door_h.Add(_Model, Convert.ToInt32(dRow["door_h"])); Modeldata_roomomatic_suscr.Add(_Model, Convert.ToInt32(dRow["roomomatic_subscr_only"])); Modeldata_swimmingpool.Add(_Model, Convert.ToInt32(dRow["swimmingpool"])); Modeldata_specialcast_emitter.Add(_Model, dRow["specialcast_emitter"]); if (Convert.ToString(dRow["specialcast_interval"]).Length > 0) Modeldata_specialcast_interval.Add(_Model, Convert.ToInt32(dRow["specialcast_interval"])); if (Convert.ToString(dRow["specialcast_rnd_max"]).Length > 0) Modeldata_specialcast_rnd_max.Add(_Model, Convert.ToInt32(dRow["specialcast_rnd_max"])); if (Convert.ToString(dRow["specialcast_rnd_min"]).Length > 0) Modeldata_specialcast_rnd_min.Add(_Model, Convert.ToInt32(dRow["specialcast_rnd_min"])); } #endregion #region Return values internal static string Heightmap(string _Model) { return ((string)Modeldata_heightmap[_Model]); } internal static string publicroom_items(string _Model) { return ((string)Modeldata_publicroom_items[_Model]); } internal static int door_x(string _Model) { return ((int)Modeldata_door_x[_Model]); } internal static int door_y(string _Model) { return ((int)Modeldata_door_y[_Model]); } internal static int door_h(string _Model) { return ((int)Modeldata_door_h[_Model]); } internal static byte door_z(string _Model) { return ((byte)Modeldata_door_z[_Model]); } internal static int roomomatic_suscr(string _Model) { return ((int)Modeldata_roomomatic_suscr[_Model]); } internal static int swimmingpool(string _Model) { return ((int)Modeldata_swimmingpool[_Model]); } internal static string specialcast_emitter(string _Model) { return ((string)Modeldata_specialcast_emitter[_Model]); } internal static int specialcast_interval(string _Model) { return ((int)Modeldata_specialcast_interval[_Model]); } internal static int specialcast_rnd_min(string _Model) { return ((int)Modeldata_specialcast_rnd_min[_Model]); } internal static int specialcast_rnd_max(string _Model) { return ((int)Modeldata_specialcast_rnd_max[_Model]); } #endregion } }