public override void PlaceAttribute(EditorMazeTile tile) { if (tile.TileMainMaterial.GetType() != typeof(GroundMainMaterial)) { return; } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); ITileAttribute tileObstacle = (TileObstacle)tile.GetAttributes().FirstOrDefault(attribute => (attribute is TileObstacle && !(attribute is PlayerExit))); if (tileObstacle == null) { tileAttributeRemover.RemoveEnemySpawnpoint(); tileAttributeRemover.RemovePlayerExit(); tileAttributeRemover.RemovePlayerOnlyAttribute(); tileAttributeRemover.RemovePlayerSpawnpoint(); tileAttributeRemover.RemoveMusicInstrumentCase(); MazeTileBackgroundRemover tileBackgroundRemover = new MazeTileBackgroundRemover(tile); tileBackgroundRemover.RemovePath(); tileAttributePlacer.PlaceTileObstacle(ObstacleType.Bush); return; } // Tile is already blocked tileAttributeRemover.RemoveTileObstacle(); }
public override void PlaceAttribute(EditorMazeTile tile) { if (tile.TileMainMaterial.GetType() != typeof(GroundMainMaterial)) { return; } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); ITileAttribute playerOnlyAttribute = (PlayerOnly)tile.GetAttributes().FirstOrDefault(attribute => attribute is PlayerOnly); if (playerOnlyAttribute == null) { tileAttributeRemover.RemoveTileObstacle(); tileAttributeRemover.RemovePlayerExit(); tileAttributeRemover.RemoveEnemySpawnpoint(); tileAttributeRemover.RemoveMusicInstrumentCase(); tileAttributeRemover.RemovePlayerSpawnpoint(); Logger.Warning($"Now place player only attribute at {tile.GridLocation.X}, {tile.GridLocation.Y}"); tileAttributePlacer.PlacePlayerOnlyAttribute(PlayerOnlyType.Bush); return; } tileAttributeRemover.RemovePlayerOnlyAttribute(); }
public override void PlaceAttribute(EditorMazeTile tile) { if (tile.TileMainMaterial.GetType() == typeof(WaterMainMaterial)) { if (tile.TryGetBridgePiece() == null) { return; } } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); ITileAttribute musicInstrumentCase = (MusicInstrumentCase)tile.GetAttributes().FirstOrDefault(attribute => attribute is MusicInstrumentCase); if (musicInstrumentCase == null) { tileAttributeRemover.RemoveEnemySpawnpoint(); tileAttributeRemover.RemovePlayerExit(); tileAttributeRemover.RemovePlayerOnlyAttribute(); tileAttributeRemover.RemovePlayerSpawnpoint(); tileAttributeRemover.RemoveTileObstacle(); Logger.Warning(Logger.Editor, $"Now place music instrument case at {tile.GridLocation.X}, {tile.GridLocation.Y}"); tileAttributePlacer.PlaceMusicInstrumentCase(); return; } tileAttributeRemover.RemoveMusicInstrumentCase(); }
public override void PlaceAttribute(EditorMazeTile tile) { Logger.Log("Try place Enemy Spawnpoint"); if (tile.TileMainMaterial.GetType() != typeof(GroundMainMaterial)) { return; } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); ITileAttribute enemySpawnpoint = (EnemySpawnpoint)tile.GetAttributes().FirstOrDefault(attribute => attribute is EnemySpawnpoint); if (enemySpawnpoint == null) { tileAttributeRemover.RemovePlayerExit(); tileAttributeRemover.RemovePlayerOnlyAttribute(); tileAttributeRemover.RemovePlayerSpawnpoint(); tileAttributeRemover.RemoveTileObstacle(); tileAttributeRemover.RemoveMusicInstrumentCase(); tileAttributePlacer.PlaceEnemySpawnpoint(); TileAreaToEnemySpawnpointAssigner.Instance?.CheckForEnemySpawnpointOnTile(); return; } tileAttributeRemover.RemoveEnemySpawnpoint(); TileAreaToEnemySpawnpointAssigner.Instance?.CheckForEnemySpawnpointOnTile(); }