Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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";
        }
Exemplo n.º 3
0
        public SteamRoom(RoomInfo roomInfo)
            : base(roomInfo)
        {
            _lastMessage = Stopwatch.StartNew();

            SteamId = new SteamID(ulong.Parse(RoomInfo["SteamId"]));
            EchoWebStates = (RoomInfo["EchoWebStates"] ?? "true").ToLower() == "true";
        }
Exemplo n.º 4
0
        public ScriptRoom(RoomInfo roomInfo)
            : base(roomInfo)
        {
            Commands = new Dictionary<string, CommandHandler>();

            _sourceFile = roomInfo["Script"];
            _host = new ScriptHost(this);
            _timer = Stopwatch.StartNew();

            Recompile();
        }
Exemplo n.º 5
0
 public MafiaRoom(RoomInfo roomInfo)
     : base(roomInfo)
 {
     _players = new Dictionary<string, Player>();
 }
Exemplo n.º 6
0
        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();
                }
            }
        }
Exemplo n.º 7
0
        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);
                }
            }
        }
Exemplo n.º 8
0
 public SteamRoom(RoomInfo roomInfo)
     : base(roomInfo)
 {
     _lastMessage = Stopwatch.StartNew();
 }