CNCMaps.Engine.Map.Map.ApplyRemappables C# (CSharp) Метод

ApplyRemappables() приватный Метод

private ApplyRemappables ( ) : void
Результат void
        private void ApplyRemappables()
        {
            int before = _palettesToBeRecalculated.Count;

            foreach (OwnableObject obj in _structureObjects.Cast<OwnableObject>().Union(_unitObjects).Union(_aircraftObjects).Union(_infantryObjects)) {
                var g = obj as GameObject;
                if (g != null & g.Drawable != null && g.Drawable.IsRemapable) {
                    if (g.Palette.IsShared) // don't wanna touch somebody elses palette..
                        g.Palette = g.Palette.Clone();
                    var color = _countryColors.ContainsKey(obj.Owner) ? _countryColors[obj.Owner] : _countryColors.First().Value;
                    g.Palette.Remap(color);
                    _palettesToBeRecalculated.Add(g.Palette);
                }
            }

            // TS needs tiberium remapped
            if (Engine <= EngineType.Firestorm) {
                var tiberiums = _rules.GetSection("Tiberiums").OrderedEntries.Select(tib => tib.Value.ToString());
                var remaps = tiberiums.Select(tib => _rules.GetOrCreateSection(tib).ReadString("Color"));
                var tibRemaps = tiberiums.Zip(remaps, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v);

                foreach (var ovl in _overlayObjects) {
                    if (ovl == null) continue;
                    var tibType = SpecialOverlays.GetOverlayTibType(ovl, Engine);
                    if (tibType != OverlayTibType.NotSpecial) {
                        ovl.Palette = ovl.Palette.Clone();
                        string tibName = SpecialOverlays.GetTibName(ovl, Engine);
                        if (tibRemaps.ContainsKey(tibName) && _namedColors.ContainsKey(tibRemaps[tibName]))
                            ovl.Palette.Remap(_namedColors[tibRemaps[tibName]]);
                        _palettesToBeRecalculated.Add(ovl.Palette);
                    }
                }
            }
            Logger.Debug("Determined palettes to be recalculated due to remappables ({0})",
                        _palettesToBeRecalculated.Count - before);
        }