public void AddTileAttributes(SerialisableTile serialisableTile, EditorOverworldTile tile) { EditorOverworldTileAttributePlacer tileAttributePlacer = new EditorOverworldTileAttributePlacer(tile); foreach (SerialisableTileAttribute serialisableTileAttribute in serialisableTile.TileAttributes) { Type type = Type.GetType(serialisableTileAttribute.AttributeType); //if (tileAttributeId == SerialisableTileAttribute.ObstacleAttributeCode) //{ // tileAttributePlacer.PlaceTileObstacle(ObstacleType.Bush, new TileConnectionScoreInfo(serialisableTileAttribute.ObstacleConnectionScore, serialisableTileAttribute.SpriteNumber)); //TODO, find a way to use polymorphism so we can cast as SerialisableTileObstacleAttribute instead of a general //} //else if (tileAttributeId == SerialisableTileAttribute.PlayerExitCode) //{ // tileAttributePlacer.PlacePlayerExit(ObstacleType.Bush, new TileConnectionScoreInfo(serialisableTileAttribute.ObstacleConnectionScore, serialisableTileAttribute.SpriteNumber)); //} if (type.Equals(typeof(SerialisablePlayerSpawnpointAttribute))) { tileAttributePlacer.PlacePlayerSpawnpoint(); } else if (type.Equals(typeof(SerialisableMazeLevelEntryAttribute))) { SerialisableMazeLevelEntryAttribute serialisableMazeLevelEntryAttribute = (SerialisableMazeLevelEntryAttribute)JsonUtility.FromJson(serialisableTileAttribute.SerialisedData, type); MazeLevelEntry mazeLevelEntry = tileAttributePlacer.PlaceMazeLevelEntry(serialisableMazeLevelEntryAttribute.MazeLevelName); MazeEntries.Add(mazeLevelEntry); } //else if (tileAttributeId == SerialisableTileAttribute.PlayerOnlyAttributeCode) //{ // tileAttributePlacer.PlacePlayerOnlyAttribute(PlayerOnlyType.Bush); //} //else if (tileAttributeId == SerialisableTileAttribute.EnemySpawnpointCode) //{ // tileAttributePlacer.PlaceEnemySpawnpoint(); //} else { Logger.Error($"Unknown tile attribute of the type {type}"); } } }
public override void PlaceAttribute(EditorOverworldTile tile) { if (tile.TileMainMaterial.GetType() != typeof(GroundMainMaterial)) { return; } EditorOverworldTileAttributePlacer tileAttributePlacer = new EditorOverworldTileAttributePlacer(tile); OverworldTileAttributeRemover tileAttributeRemover = new OverworldTileAttributeRemover(tile); ITileAttribute playerSpawnpoint = (PlayerSpawnpoint)tile.GetAttributes().FirstOrDefault(attribute => attribute is PlayerSpawnpoint); if (playerSpawnpoint == null) { //tileAttributeRemover.RemoveTileObstacle(); tileAttributePlacer.PlacePlayerSpawnpoint(); return; } tileAttributeRemover.RemovePlayerSpawnpoint(); }
public override void PlaceAttribute(EditorOverworldTile tile) { if (tile.TileMainMaterial.GetType() != typeof(GroundMainMaterial)) { return; } EditorOverworldTileAttributePlacer tileAttributePlacer = new EditorOverworldTileAttributePlacer(tile); OverworldTileAttributeRemover tileAttributeRemover = new OverworldTileAttributeRemover(tile); ITileAttribute MazeLevelEntry = (MazeLevelEntry)tile.GetAttributes().FirstOrDefault(attribute => attribute is MazeLevelEntry); if (MazeLevelEntry == null) { tileAttributeRemover.RemovePlayerSpawnpoint(); tileAttributeRemover.RemoveTileObstacle(); Logger.Log(Logger.Editor, $"Now place maze entry at {tile.GridLocation.X}, {tile.GridLocation.Y}"); tileAttributePlacer.PlaceMazeLevelEntry(); return; } tileAttributeRemover.RemoveMazeLevelEntry(); }