public ScriptRoom(RoomInfo roomInfo) : base(roomInfo) { Commands = new Dictionary<string, CommandHandler>(); _sourceFile = roomInfo["Script"]; _host = new ScriptHost(this); _timer = Stopwatch.StartNew(); _references = new List<string>(); _references.AddRange((roomInfo["References"] ?? "").Split(',')); if (Util.IsRunningOnMono()) { _references.AddRange(new List<string> { "System", "System.Collections.Generic", "System.Linq", "System.Text" }); } _references.AddRange(new List<string> { "log4net", "Newtonsoft.Json", "Npgsql", "SteamKit2", "EzSteam" }); _references = _references.Distinct().ToList(); Recompile(); }
public Room(RoomInfo roomInfo) { RoomInfo = roomInfo; IsActive = true; _settings = RoomSettings.Get(RoomInfo.ShortName); if (_settings == null) { _settings = new RoomSettings { Room = RoomInfo.ShortName, Bans = new HashSet<string>(), Mods = new HashSet<string>() }; _settings.Insert(); } _history = new LinkedList<HistoryLine>(); var cmd = new SqlCommand("SELECT * FROM rohbot.chathistory WHERE chat=lower(:chat) ORDER BY date DESC LIMIT 100;"); cmd["chat"] = RoomInfo.ShortName; foreach (var line in cmd.Execute().Reverse().Select(r => HistoryLine.Read(r))) { _history.AddLast(line); } _showLinkTitles = (roomInfo["LinkTitles"] ?? "").ToLower() == "true"; IsWhitelisted = (roomInfo["Whitelist"] ?? "").ToLower() == "true"; IsHidden = (roomInfo["Hidden"] ?? "").ToLower() == "true"; IsPrivate = (roomInfo["Private"] ?? "").ToLower() == "true"; IsLogging = (roomInfo["Logging"] ?? "true").ToLower() == "true"; }
public SteamRoom(RoomInfo roomInfo) : base(roomInfo) { _lastMessage = Stopwatch.StartNew(); SteamId = new SteamID(ulong.Parse(RoomInfo["SteamId"])); EchoWebStates = (RoomInfo["EchoWebStates"] ?? "true").ToLower() == "true"; }
public ScriptRoom(RoomInfo roomInfo) : base(roomInfo) { Commands = new Dictionary<string, CommandHandler>(); _sourceFile = roomInfo["Script"]; _host = new ScriptHost(this); _timer = Stopwatch.StartNew(); Recompile(); }
public MafiaRoom(RoomInfo roomInfo) : base(roomInfo) { _players = new Dictionary<string, Player>(); }
public void Update() { lock (_rooms) { _rooms.RemoveAll(room => !room.Value.IsActive); var settings = Program.Settings; try { foreach (var room in _rooms.Values.Where(r1 => settings.Rooms.All(r2 => r2["ShortName"] != r1.RoomInfo.ShortName)).ToList()) { room.Leave(); } } catch (Exception e) { Program.Logger.Error("Failed to unload rooms", e); } try { foreach (var room in settings.Rooms.Where(r => !_rooms.ContainsKey(r["ShortName"])).ToList()) { var roomInfo = new RoomInfo(room); var roomObj = (Room)Activator.CreateInstance(RoomTypes[roomInfo.Type], roomInfo); _rooms.Add(room["ShortName"], roomObj); } } catch (Exception e) { Program.Logger.Error("Failed to load rooms", e); } foreach (var room in _rooms.Values) { room.Update(); } } }
public void Update() { lock (_rooms) { var deadRooms = _rooms.Where(kv => !kv.Value.IsActive); foreach (var dead in deadRooms) { Room removedRoom; _rooms.TryRemove(dead.Key, out removedRoom); } var settings = Program.Settings; try { var oldRooms = _rooms.Where(r1 => settings.Rooms.All(r2 => r2["ShortName"] != r1.Value.RoomInfo.ShortName)); foreach (var room in oldRooms) { room.Value.Leave(); } } catch (Exception e) { Program.Logger.Error("Failed to unload rooms", e); } try { var newRooms = settings.Rooms.Where(r => !_rooms.ContainsKey(r["ShortName"])); foreach (var room in newRooms) { var roomInfo = new RoomInfo(room); var roomObj = (Room)Activator.CreateInstance(RoomTypes[roomInfo.Type], roomInfo); _rooms.TryAdd(room["ShortName"], roomObj); } } catch (Exception e) { Program.Logger.Error("Failed to load rooms", e); } try { foreach (var room in _rooms) { room.Value.Update(); } } catch (Exception e) { Program.Logger.Error("Failed to update rooms", e); } } }
public SteamRoom(RoomInfo roomInfo) : base(roomInfo) { _lastMessage = Stopwatch.StartNew(); }