Exemplo n.º 1
0
        // 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);
        }
Exemplo n.º 2
0
        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);
        }