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); }
protected void AddChange(Control control) { if (!Changes.Contains(control)) { Changes.Add(control); } }
private void TrackChanges(ITrackedEntry trackedEntry) { if (Changes.Contains(trackedEntry)) { return; } Changes.Add(trackedEntry); foreach (var reference in trackedEntry.References.Union(trackedEntry.Collections)) { TrackChanges(reference); } }
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)"); } }
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)"); } }
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]]); }