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(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) { 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(GroundMainMaterial)) { return; } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); ITileAttribute playerSpawnpoint = (PlayerSpawnpoint)tile.GetAttributes().FirstOrDefault(attribute => attribute is PlayerSpawnpoint); if (playerSpawnpoint == null) { tileAttributeRemover.RemoveEnemySpawnpoint(); tileAttributeRemover.RemovePlayerExit(); tileAttributeRemover.RemovePlayerOnlyAttribute(); tileAttributeRemover.RemoveTileObstacle(); tileAttributePlacer.PlacePlayerSpawnpoint(); return; } tileAttributeRemover.RemovePlayerSpawnpoint(); }
public override void PlaceAttribute(EditorMazeTile tile) { if (tile.TileMainMaterial.GetType() != typeof(WaterMainMaterial)) { Logger.Log("TODO: Check if this works. Bridge can also be placed on any tile with a coastline"); return; } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); MazeTileAttributeRemover tileAttributeRemover = new MazeTileAttributeRemover(tile); BridgePiece bridgePiece = (BridgePiece)tile.GetAttributes().FirstOrDefault(attribute => (attribute is BridgePiece)); if (bridgePiece == null) { tileAttributePlacer.PlaceBridgePiece(BridgePieceDirection.Horizontal); } else if (bridgePiece.BridgePieceDirection == BridgePieceDirection.Horizontal) { tileAttributeRemover.RemoveBridgePiece(); tileAttributePlacer.PlaceBridgePiece(BridgePieceDirection.Vertical); } else { tileAttributeRemover.RemoveBridgePiece(); } }
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(); }
public override void PlaceAttributeVariation(EditorMazeTile tile) { ITileAttribute tileObstacle = (TileObstacle)tile.GetAttributes().FirstOrDefault(attribute => attribute is TileObstacle); if (tileObstacle == null) { return; // only place variation if there is already an obstacle } EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); tileAttributePlacer.PlaceTileObstacleVariation((TileObstacle)tileObstacle); }
private void AddTileAttributes(SerialisableTile serialisableTile, EditorMazeTile tile) { EditorMazeTileAttributePlacer tileAttributePlacer = new EditorMazeTileAttributePlacer(tile); foreach (SerialisableTileAttribute serialisableTileAttribute in serialisableTile.TileAttributes) { Type type = Type.GetType(serialisableTileAttribute.AttributeType); if (type.Equals(typeof(SerialisableTileObstacleAttribute))) { SerialisableTileObstacleAttribute serialisableTileObstacleAttribute = (SerialisableTileObstacleAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); tileAttributePlacer.PlaceTileObstacle(ObstacleType.Bush, new TileConnectionScoreInfo(serialisableTileObstacleAttribute.ConnectionScore, serialisableTileObstacleAttribute.SpriteNumber)); } else if (type.Equals(typeof(SerialisablePlayerExitAttribute))) { SerialisablePlayerExitAttribute serialisablePlayerExitAttribute = (SerialisablePlayerExitAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); tileAttributePlacer.PlacePlayerExit(ObstacleType.Bush, new TileConnectionScoreInfo(serialisablePlayerExitAttribute.ConnectionScore, serialisablePlayerExitAttribute.SpriteNumber)); } else if (type.Equals(typeof(SerialisablePlayerSpawnpointAttribute))) { tileAttributePlacer.PlacePlayerSpawnpoint(); } else if (type.Equals(typeof(SerialisablePlayerOnlyAttribute))) { tileAttributePlacer.PlacePlayerOnlyAttribute(PlayerOnlyType.Bush); } else if (type.Equals(typeof(SerialisableEnemySpawnpointAttribute))) { SerialisableEnemySpawnpointAttribute serialisableEnemySpawnpointAttribute = (SerialisableEnemySpawnpointAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); tileAttributePlacer.PlaceEnemySpawnpoint(serialisableEnemySpawnpointAttribute.TileAreaIds, TileAreas); } else if (type.Equals(typeof(SerialisableBridgePieceAttribute))) { SerialisableBridgePieceAttribute serialisableBridgePieceAttribute = (SerialisableBridgePieceAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); if (Enum.TryParse(serialisableBridgePieceAttribute.BridgePieceDirection, out BridgePieceDirection bridgePieceDirection)) { tileAttributePlacer.PlaceBridgePiece(BridgeType.Wooden, bridgePieceDirection); } else { Logger.Error($"Could not parse the BridgePieceDirection value{serialisableBridgePieceAttribute.BridgePieceDirection}"); } } else if (type.Equals(typeof(SerialisableBridgeEdgeAttribute))) { SerialisableBridgeEdgeAttribute serialisableBridgeEdgeAttribute = (SerialisableBridgeEdgeAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); if (Enum.TryParse(serialisableBridgeEdgeAttribute.BridgeEdgeSide, out Direction bridgeEdgeSide)) { tileAttributePlacer.PlaceBridgeEdge(BridgeType.Wooden, bridgeEdgeSide); } else { Logger.Error($"Could not parse the BridgeEdgeSide value{serialisableBridgeEdgeAttribute.BridgeEdgeSide}"); } } else if (type.Equals(typeof(SerialisableMusicInstrumentCaseAttribute))) { tileAttributePlacer.PlaceMusicInstrumentCase(); } else { Logger.Error($"Unknown tile attribute with type {type}"); } } }