Exemple #1
0
    void UndoHistoryEvent(BaseHistoryEvent baseHistoryEvent)
    {
        if (baseHistoryEvent.GetType() == typeof(ResizeHistoryEvent))
        {
            var he = (ResizeHistoryEvent)baseHistoryEvent;
            this.map.size = he.oldSize;

            foreach (var tileOverride in he.removedTiles)
            {
                this.map.tileOverrides.Add(tileOverride);
            }

            foreach (var entity in he.removedEntities)
            {
                this.map.entities.Add(entity);
            }

            this.RebuildMapDisplay();

            foreach (var pos in he.deselectedTiles)
            {
                this.selectedTiles.Add(this.mapDisplay.GetTile(pos));
            }
            this.mapDisplay.SetSelectedTiles(this.selectedTiles);
        }
        else if (baseHistoryEvent.GetType() == typeof(SelectionChangeHistoryEvent))
        {
            var he = (SelectionChangeHistoryEvent)baseHistoryEvent;
            this.selectedTiles = new List <MapTile>(he.oldSelectedTiles.Select(x => this.mapDisplay.GetTile(x)));
            this.mapDisplay.SetSelectedTiles(this.selectedTiles);
        }
        else if (baseHistoryEvent.GetType() == typeof(TileChangeHistoryEvent))
        {
            var he = (TileChangeHistoryEvent)baseHistoryEvent;

            foreach (var tileOverride in he.oldTiles)
            {
                this.map.tileOverrides.RemoveAll(x => x.pos == tileOverride.pos);
                if (tileOverride.name != "")
                {
                    this.map.tileOverrides.Add(tileOverride);
                }
            }

            this.RebuildMapDisplay();
        }
        else if (baseHistoryEvent.GetType() == typeof(EntityChangeHistoryEvent))
        {
            var he = (EntityChangeHistoryEvent)baseHistoryEvent;

            foreach (var entity in he.oldEntities)
            {
                this.map.entities.RemoveAll(x => x.pos == entity.pos);
                if (entity.name != "None")
                {
                    this.map.entities.Add(entity);
                }
            }

            this.RebuildMapDisplay();
        }
    }
Exemple #2
0
    void DoHistoryEvent(BaseHistoryEvent baseHistoryEvent)
    {
        if (baseHistoryEvent.GetType() == typeof(ResizeHistoryEvent))
        {
            var he = (ResizeHistoryEvent)baseHistoryEvent;
            this.map.size = he.newSize;

            he.removedTiles = new List <BattleMap.TileOverride>();
            for (int n = this.map.tileOverrides.Count; n-- > 0;)
            {
                bool isOutsideBounds = (
                    this.map.tileOverrides[n].pos.x >= he.newSize.x ||
                    this.map.tileOverrides[n].pos.y >= he.newSize.y
                    );
                if (isOutsideBounds)
                {
                    he.removedTiles.Add(this.map.tileOverrides[n]);
                    this.map.tileOverrides.RemoveAt(n);
                }
            }

            he.removedEntities = new List <BattleMap.Entity>();
            for (int n = this.map.entities.Count; n-- > 0;)
            {
                bool isOutsideBounds = (
                    this.map.entities[n].pos.x >= he.newSize.x ||
                    this.map.entities[n].pos.y >= he.newSize.y
                    );
                if (isOutsideBounds)
                {
                    he.removedEntities.Add(this.map.entities[n]);
                    this.map.entities.RemoveAt(n);
                }
            }

            he.deselectedTiles = new List <Vector2i>();
            for (int n = this.selectedTiles.Count; n-- > 0;)
            {
                var  tile            = this.selectedTiles[n];
                bool isOutsideBounds = (
                    tile.pos.x >= he.newSize.x ||
                    tile.pos.y >= he.newSize.y
                    );
                if (isOutsideBounds)
                {
                    he.deselectedTiles.Add(tile.pos);
                    this.selectedTiles.RemoveAt(n);
                }
            }

            this.RebuildMapDisplay();
        }
        else if (baseHistoryEvent.GetType() == typeof(SelectionChangeHistoryEvent))
        {
            var he = (SelectionChangeHistoryEvent)baseHistoryEvent;
            this.selectedTiles = new List <MapTile>(he.newSelectedTiles.Select(x => this.mapDisplay.GetTile(x)));
            this.mapDisplay.SetSelectedTiles(this.selectedTiles);
        }
        else if (baseHistoryEvent.GetType() == typeof(TileChangeHistoryEvent))
        {
            var he = (TileChangeHistoryEvent)baseHistoryEvent;

            foreach (var tileOverride in he.newTiles)
            {
                this.map.tileOverrides.RemoveAll(x => x.pos == tileOverride.pos);
                if (tileOverride.name != "")
                {
                    this.map.tileOverrides.Add(tileOverride);
                }
            }

            this.RebuildMapDisplay();
        }
        else if (baseHistoryEvent.GetType() == typeof(EntityChangeHistoryEvent))
        {
            var he = (EntityChangeHistoryEvent)baseHistoryEvent;

            foreach (var entity in he.newEntities)
            {
                this.map.entities.RemoveAll(x => x.pos == entity.pos);
                if (entity.name != "None")
                {
                    this.map.entities.Add(entity);
                }
            }

            this.RebuildMapDisplay();
        }
    }