/// <summary> /// Tuät s Biud durähäschä, luägt obs än Animazion uisleest odr Palettä setzt und macht das grad. /// </summary> /// <param name="planes">S Buid zum iberpriäfä</param> private void TriggerAnimation(byte[][] planes) { var mapping = FindMapping(planes); // Faus niid gfundä hemmr fertig if (mapping == null) { return; } // Wird ignoriärt ("irrelevant") if (mapping.Mode == SwitchMode.Event) { return; } // Faus scho eppis am laifä isch, ahautä _activeAnimation?.Stop(); _activeAnimation = null; // Palettä ladä var palette = _coloring.GetPalette(mapping.PaletteIndex); if (palette == null) { Logger.Warn("[colorize] No palette found at index {0}.", mapping.PaletteIndex); return; } Logger.Debug("[colorize] Setting palette {0} of {1} colors.", mapping.PaletteIndex, palette.Colors.Length); _paletteReset?.Dispose(); _paletteReset = null; SetPalette(palette, mapping.PaletteIndex); // Palettä risettä wenn ä Lengi gäh isch if (!mapping.IsAnimation && mapping.Duration > 0) { _paletteReset = Observable .Never <Unit>() .StartWith(Unit.Default) .Delay(TimeSpan.FromMilliseconds(mapping.Duration)).Subscribe(_ => { if (_defaultPalette != null) { Logger.Debug("[colorize] Resetting to default palette after {0} ms.", mapping.Duration); SetPalette(_defaultPalette, _defaultPaletteIndex); } _paletteReset = null; }); } // Animazionä if (mapping.IsAnimation) { // Luägä ob ibrhaipt äs VNI/FSQ Feil umä gsi isch if (_animations == null) { Logger.Warn("[colorize] Tried to load animation but no animation file loaded."); return; } _activeAnimation = _animations.Find(mapping.Offset); if (_activeAnimation == null) { Logger.Warn("[colorize] Cannot find animation at position {0}.", mapping.Offset); return; } _activeAnimation.Start(mapping.Mode, Render, AnimationFinished); } }