// Hakee kaikki tiedot layeristä luomista varten. private List <MapObjectArguments> GetContainingObjectsParameters(SerializedObjectLayer serializedObjectLayer) { List <MapObjectArguments> parameters = new List <MapObjectArguments>(); serializedObjectLayer.Tiles.ForEach(t => { parameters.Add(new MapObjectArguments(new Index(t.PositionIndexX, t.PositionIndexY), t.MapObject)); }); return(parameters); }
public GameObjectManager Process(SerializedObjectLayer serializedObjectLayer, Layer <ObjectTile> layer, TileMap tileMap) { #region Object parsing and creation GameObjectManager objectManager = new GameObjectManager(layer); List <MapObjectArguments> parameters = GetContainingObjectsParameters(serializedObjectLayer); // Loopataan jokainen parametri läpi. foreach (MapObjectArguments parameter in parameters) { Type objectType = null; GameObject mapObject = null; // Loopataan jokainen userin syöttämä nimiavaruus. foreach (string objectNamespace in objectNamespaces) { // Koitetaan saada tyyppiä nimiavaruudesta. objectType = Type.GetType(objectNamespace + "." + parameter.SerializedData.Name); // Jos tyyppi löytyi, yrittää luoda uuden kartta objectin, jos tämä ei onnistu ja // debugataan, heittää poikkeuksen. if (objectType != null) { parameter.MapContainedIn = tileMap.Name; parameter.Origin = layer.Tiles[parameter.OriginTileIndex.Y][parameter.OriginTileIndex.X].Position; mapObject = CreateObject(game, objectType, parameter); objectManager.AddGameObject(mapObject); break; } } // Heittää poikkeuksen jos debugataan ja // olio jää nulliksi. #region Debug exception #if DEBUG if (mapObject == null) { ThrowFailedToResolve(parameter); } #endif #endregion } #endregion return(objectManager); }