コード例 #1
0
        // -------------------------------------------------------------------
        // UpdateAround
        // -------------------------------------------------------------------

        public void UpdateAround(int x, int y1, int y2, int z, bool update)
        {
            int[] portion = MapEditor.Control.GetPortion(x, z); // portion where you are setting autotile
            for (int X = x - 1; X <= x + 1; X++)
            {
                for (int Z = z - 1; Z <= z + 1; Z++)
                {
                    int[]    coords         = new int[] { X, y1, y2, Z };
                    Autotile autotileAround = TileOnWhatever(coords);
                    if (autotileAround != null)
                    {
                        if (update)
                        {
                            autotileAround.Update(this, coords, portion);
                        }
                        else
                        {
                            int[] newPortion = MapEditor.Control.GetPortion(X, Z);
                            if (WANOK.IsInPortions(newPortion))
                            {
                                MapEditor.Control.AddPortionsAutotileToUpdate(newPortion);
                                WANOK.AddPortionsToAddCancel(MapEditor.Control.Map.MapInfos.RealMapName, MapEditor.Control.GetGlobalPortion(newPortion));
                            }
                            else
                            {
                                autotileAround.Update(this, coords, portion);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        // -------------------------------------------------------------------
        // Update
        // -------------------------------------------------------------------

        public void Update(Mountains mountains, int[] coords, int[] portion, int height)
        {
            DrawTop   = !CanDraw(mountains.TileOnTop(coords, portion, height));
            DrawBot   = !CanDraw(mountains.TileOnBottom(coords, portion, height));
            DrawLeft  = !CanDraw(mountains.TileOnLeft(coords, portion, height));
            DrawRight = !CanDraw(mountains.TileOnRight(coords, portion, height));

            // Update & save update
            int[] portionToUpdate = MapEditor.Control.GetPortion(coords[0], coords[3]);
            MapEditor.Control.AddPortionToUpdate(portionToUpdate);
            MapEditor.Control.AddPortionToSave(portionToUpdate);
            WANOK.AddPortionsToAddCancel(MapEditor.Control.Map.MapInfos.RealMapName, MapEditor.Control.GetGlobalPortion(portionToUpdate));
        }
コード例 #3
0
        // -------------------------------------------------------------------
        // Update
        // -------------------------------------------------------------------

        public void Update(Autotiles autotiles, int[] coords, int[] portion)
        {
            int[] tiles = new int[4];
            int   num   = 0;

            // Top left
            if (!autotiles.TileOnLeft(coords, portion) && !autotiles.TileOnTop(coords, portion))
            {
                num = 2;
            }
            else if (!autotiles.TileOnTop(coords, portion) && autotiles.TileOnLeft(coords, portion))
            {
                num = 4;
            }
            else if (!autotiles.TileOnLeft(coords, portion) && autotiles.TileOnTop(coords, portion))
            {
                num = 5;
            }
            else if (autotiles.TileOnLeft(coords, portion) && autotiles.TileOnTop(coords, portion) && autotiles.TileOnTopLeft(coords, portion))
            {
                num = 3;
            }
            else
            {
                num = 1;
            }
            tiles[0] = num - 1;

            // Top right
            if (!autotiles.TileOnRight(coords, portion) && !autotiles.TileOnTop(coords, portion))
            {
                num = 2;
            }
            else if (!autotiles.TileOnTop(coords, portion) && autotiles.TileOnRight(coords, portion))
            {
                num = 4;
            }
            else if (!autotiles.TileOnRight(coords, portion) && autotiles.TileOnTop(coords, portion))
            {
                num = 5;
            }
            else if (autotiles.TileOnRight(coords, portion) && autotiles.TileOnTop(coords, portion) && autotiles.TileOnTopRight(coords, portion))
            {
                num = 3;
            }
            else
            {
                num = 1;
            }
            tiles[1] = num - 1;

            // Bottom left
            if (!autotiles.TileOnLeft(coords, portion) && !autotiles.TileOnBottom(coords, portion))
            {
                num = 2;
            }
            else if (!autotiles.TileOnBottom(coords, portion) && autotiles.TileOnLeft(coords, portion))
            {
                num = 4;
            }
            else if (!autotiles.TileOnLeft(coords, portion) && autotiles.TileOnBottom(coords, portion))
            {
                num = 5;
            }
            else if (autotiles.TileOnLeft(coords, portion) && autotiles.TileOnBottom(coords, portion) && autotiles.TileOnBottomLeft(coords, portion))
            {
                num = 3;
            }
            else
            {
                num = 1;
            }
            tiles[2] = num - 1;

            // Bottom right
            if (!autotiles.TileOnRight(coords, portion) && !autotiles.TileOnBottom(coords, portion))
            {
                num = 2;
            }
            else if (!autotiles.TileOnBottom(coords, portion) && autotiles.TileOnRight(coords, portion))
            {
                num = 4;
            }
            else if (!autotiles.TileOnRight(coords, portion) && autotiles.TileOnBottom(coords, portion))
            {
                num = 5;
            }
            else if (autotiles.TileOnRight(coords, portion) && autotiles.TileOnBottom(coords, portion) && autotiles.TileOnBottomRight(coords, portion))
            {
                num = 3;
            }
            else
            {
                num = 1;
            }
            tiles[3] = num - 1;

            // Update tileId
            TilesId = (tiles[0] * 125) + (tiles[1] * 25) + (tiles[2] * 5) + tiles[3];

            // Update & save update
            int[] portionToUpdate = MapEditor.Control.GetPortion(coords[0], coords[3]);
            MapEditor.Control.AddPortionToUpdate(portionToUpdate);
            MapEditor.Control.AddPortionToSave(portionToUpdate);
            WANOK.AddPortionsToAddCancel(MapEditor.Control.Map.MapInfos.RealMapName, MapEditor.Control.GetGlobalPortion(portionToUpdate));
        }