CNCMaps.Engine.Map.Map.LoadPalettes C# (CSharp) Méthode

LoadPalettes() private méthode

private LoadPalettes ( ) : void
Résultat void
        private void LoadPalettes()
        {
            int before = _palettesToBeRecalculated.Count;

            // get the default palettes
            var pc = _theater.GetPalettes();
            foreach (var p in pc) _palettesToBeRecalculated.Add(p);

            foreach (var tile in _tiles) {
                if (tile == null) continue;

                // TODO: move this to a more sensible place
                /*var tse = _theater.GetTileCollection().GetTileSetEntry(tile);
                if (tse != null && tse.AnimationSubtile == tile.SubTile) {
                    var anim = new AnimationObject(tse.AnimationDrawable.Name, tse.AnimationDrawable);
                    tile.AddObject(anim);
                    _animationObjects.Add(anim);
                }*/

                foreach (var obj in tile.AllObjects.Union(new[] { tile }).ToList()) {
                    if (obj == null) continue;

                    Palette p;
                    LightingType lt;
                    PaletteType pt;

                    if (obj is MapTile) {
                        lt = LightingType.Full;
                        pt = PaletteType.Iso;
                    }
                    else {
                        obj.Collection = _theater.GetObjectCollection(obj);
                        pt = obj.Drawable.Props.PaletteType;
                        lt = obj.Drawable.Props.LightingType;
                    }

                    // level, ambient and full benefit from sharing
                    if (lt == LightingType.Full && pt == PaletteType.Iso) {
                        // bridges are attached to a low tile, but their height-offset should be taken into account
                        int z = obj.Tile.Z + (obj.Drawable != null ? obj.Drawable.TileElevation : 0);
                        p = _palettePerLevel[z];
                    }
                    else if (lt >= LightingType.Level) {
                        // when applying lighting to its palette
                        p = _theater.GetPalette(obj.Drawable).Clone();
                        int z = obj.Tile.Z + (obj.Drawable != null ? obj.Drawable.TileElevation : 0);
                        p.ApplyLighting(_lighting, z, lt == LightingType.Full);
                    }
                    else {
                        p = _theater.GetPalette(obj.Drawable).Clone();
                    }
                    _palettesToBeRecalculated.Add(p);
                    obj.Palette = p;
                }
            }
            Logger.Debug("Loaded {0} different palettes", _palettesToBeRecalculated.Count - before);
        }