// ------------------------------------------------------------------- // 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); } } } } } }
// ------------------------------------------------------------------- // 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)); }
// ------------------------------------------------------------------- // 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)); }