protected override string DoExecuteEffect()
        {
            if (!Params.LocalContext.Map.ListTileSet.Contains(sprTileset))
            {
                Params.LocalContext.Map.ListTileSet.Add(sprTileset);
            }

            int TilesetIndex = Params.LocalContext.Map.ListTileSet.IndexOf(sprTileset);

            MapLayer ActiveLayer = Params.LocalContext.Map.ListLayer[Params.LocalContext.Map.ActiveLayerIndex];

            foreach (Vector3 ActivePosition in Params.LocalContext.ArrayAttackPosition)
            {
                int          X          = (int)ActivePosition.X;
                int          Y          = (int)ActivePosition.Y;
                DrawableTile ActiveTile = ActiveLayer.OriginalLayerGrid.GetTile(X, Y);
                ActiveTile.Origin  = TerrainAttribute.Origin;
                ActiveTile.Tileset = TilesetIndex;
                ActiveLayer.OriginalLayerGrid.ReplaceTile(X, Y, ActiveTile);
            }

            ActiveLayer.ResetGrid();

            return(TerrainAttribute.Tileset + " (" + TerrainAttribute.Origin.X + ", " + TerrainAttribute.Origin.Y + ")");
        }
示例#2
0
        protected override string DoExecuteEffect()
        {
            MapLayer ActiveLayer = Params.LocalContext.Map.ListLayer[Params.LocalContext.Map.ActiveLayerIndex];

            foreach (Vector3 ActivePosition in Params.LocalContext.ArrayAttackPosition)
            {
                for (int X = -_Radius; X <= _Radius; ++X)
                {
                    for (int Y = -_Radius; Y <= _Radius; ++Y)
                    {
                        int FinalX = (int)ActivePosition.X + X;
                        int FinalY = (int)ActivePosition.Y + Y;

                        if (Math.Abs(X) + Math.Abs(Y) > Radius || FinalX < 0 || FinalX >= Params.LocalContext.Map.MapSize.X || FinalY < 0 || FinalY >= Params.LocalContext.Map.MapSize.Y)
                        {
                            continue;
                        }

                        ActiveLayer.ArrayTerrain[FinalX, FinalY].Position.Z -= Depth;
                    }
                }
            }

            ActiveLayer.ResetGrid();
            return("Depth: " + _Depth + " - Radius: " + _Radius);
        }