Ejemplo n.º 1
0
        public void ApplyChange(int pairIndex, TriviaData data)
        {
            Contract.ThrowIfNull(data);
            Contract.ThrowIfFalse(0 <= pairIndex && pairIndex < this.TokenCount - 1);

            // do reference equality check
            var sameAsOriginal = GetOriginalTriviaData(pairIndex) == data;

            if (_changes.Contains(pairIndex))
            {
                if (sameAsOriginal)
                {
                    _changes.Remove(pairIndex);
                    return;
                }

                // okay it already exist.
                // replace existing one
                _changes.Replace(pairIndex, data);
                return;
            }

            // triviaInfo is same as original, nothing to do here.
            if (sameAsOriginal)
            {
                return;
            }

            _changes.Add(pairIndex, data);
        }
Ejemplo n.º 2
0
 protected void AddChange(Control control)
 {
     if (!Changes.Contains(control))
     {
         Changes.Add(control);
     }
 }
Ejemplo n.º 3
0
        private void TrackChanges(ITrackedEntry trackedEntry)
        {
            if (Changes.Contains(trackedEntry))
            {
                return;
            }

            Changes.Add(trackedEntry);

            foreach (var reference in trackedEntry.References.Union(trackedEntry.Collections))
            {
                TrackChanges(reference);
            }
        }
Ejemplo n.º 4
0
        private void SyncTimerCallback(object _)
        {
            lock (Locker)
            {
                if (Changes.Count == 0)
                {
                    return;
                }

                var dataForUpdate = Counter.Where(o => Changes.Contains(o.Key)).ToDictionary(o => o.Key, o => o.Value);

                using (var repository = new GrillBotRepository(Config))
                {
                    repository.EmoteStats.UpdateEmoteStatistics(dataForUpdate);
                }

                Changes.Clear();
                LoggingService.Write($"Emote statistics was synchronized with database. (Updated {dataForUpdate.Count} records)");
            }
        }
Ejemplo n.º 5
0
        private void SyncTimerCallback(object _)
        {
            lock (Locker)
            {
                CleanInvalidWebTokens();

                if (Changes.Count == 0)
                {
                    return;
                }

                var itemsForUpdate = Counters.Where(o => Changes.Contains(o.Key)).Select(o => o.Value).ToList();
                using (var repository = new GrillBotRepository(Config))
                {
                    repository.ChannelStats.UpdateChannelboard(itemsForUpdate);
                }

                Changes.Clear();
                LoggingService.Write($"Channel statistics was synchronized with database. (Updated {itemsForUpdate.Count} records)");
            }
        }
Ejemplo n.º 6
0
        public Color GetColor(int x, int y)
        {
            if (x < 0 || x >= Width)
            {
                throw new ArgumentException("X given is out of bounds: " + x);
            }
            if (y < 0 || y >= Height)
            {
                throw new ArgumentException("Y given is out of bounds: " + y);
            }

            int     tileX = x / 16;
            int     tileY = y / 16;
            MapTile combo;
            int     index = -1;

            for (int i = 0; i < ShowChanges.Length; i++)
            {
                if (ShowChanges[i] && Changes.Contains(i, tileX, tileY))
                {
                    index = i;
                }
            }
            if (index == -1)
            {
                combo = Tileset.Tiles[Layout[tileX, tileY]];
            }
            else
            {
                int tile_index = Changes.GetTile(index, tileX, tileY);
                if (tile_index == 0)
                {
                    combo = Tileset.Tiles[Layout[tileX, tileY]];
                }
                else
                {
                    combo = Tileset.Tiles[tile_index];
                    if (ShowChanges_TileBorders && (
                            x % 16 == 0 || x % 16 == 15 ||
                            y % 16 == 0 || y % 16 == 15))
                    {
                        return(new Color(0x7FFF));
                    }
                }
            }
            tileX = x % 16;
            tileY = y % 16;
            int tileIndex;
            int palette;

            if (tileX < 8 && tileY < 8)
            {
                palette   = combo.Palette_00;
                tileIndex = combo.ComboTile_00;
                if (combo.FlipH_00)
                {
                    tileX = 7 - tileX;
                }
                if (combo.FlipV_00)
                {
                    tileY = 7 - tileY;
                }
            }
            else if (tileX < 8)
            {
                palette   = combo.Palette_01;
                tileIndex = combo.ComboTile_01;
                tileY    -= 8;
                if (combo.FlipH_01)
                {
                    tileX = 7 - tileX;
                }
                if (combo.FlipV_01)
                {
                    tileY = 7 - tileY;
                }
            }
            else if (tileY < 8)
            {
                palette   = combo.Palette_10;
                tileIndex = combo.ComboTile_10;
                tileX    -= 8;
                if (combo.FlipH_10)
                {
                    tileX = 7 - tileX;
                }
                if (combo.FlipV_10)
                {
                    tileY = 7 - tileY;
                }
            }
            else
            {
                palette   = combo.Palette_11;
                tileIndex = combo.ComboTile_11;
                tileX    -= 8;
                tileY    -= 8;
                if (combo.FlipH_11)
                {
                    tileX = 7 - tileX;
                }
                if (combo.FlipV_11)
                {
                    tileY = 7 - tileY;
                }
            }
            if (ShowFog)
            {
                palette += 5;
            }
            Tile tile = (Tileset.Tileset2 == null) ?
                        Tileset.Tileset1[tileIndex] :
                        (tileIndex < 512) ?
                        Tileset.Tileset1[tileIndex] :
                        Tileset.Tileset2[tileIndex - 512];

            return(Tileset.Palettes[palette][tile[tileX, tileY]]);
        }