Ejemplo n.º 1
0
        public IScene GetScene(string objectTypeName, IFactoryManager manager, Module.Module module, XElement xmlNode)
        {
            IScene scene = null;

            if (manager is OrionEngine)
            {
                OrionEngine engine = (OrionEngine)manager;
                Camera2D    camera = engine.GetComponent <Camera2D>();

                if (camera != null)
                {
                    if (objectTypeName.Equals("Scene"))
                    {
                        scene = new Scene(engine.GraphicsDM.GraphicsDevice, camera);
                    }
                    else if (objectTypeName.Equals("ParallaxScene"))
                    {
                        scene = new ParallaxScene(engine.GraphicsDM.GraphicsDevice, camera);
                    }
                }

                if (scene != null)
                {
                    foreach (XElement sceneNode in xmlNode.Elements())
                    {
                        switch (sceneNode.Name.LocalName)
                        {
                        case "Header":
                            if (scene is Scene)
                            {
                                LoadHeader(module, sceneNode, scene as Scene);
                            }
                            else if (scene is ParallaxScene)
                            {
                                LoadHeader(module, sceneNode, scene as ParallaxScene);
                            }
                            break;

                        case "EntityList":
                            LoadEntityList(module, manager, sceneNode, scene);
                            break;
                        }
                    }
                }
            }

            return(scene);
        }
Ejemplo n.º 2
0
        private void LoadParallaxSurfaces(XElement xmlNode, ParallaxScene scene)
        {
            foreach (XElement element in xmlNode.Elements())
            {
                if (element.Name.LocalName == "ParallaxSurface")
                {
                    string  textureRef   = string.Empty;
                    Vector2 scrollVec    = Vector2.Zero;
                    float   scrollFactor = 0.0f;

                    foreach (XElement childElement in element.Elements())
                    {
                        switch (childElement.Name.LocalName)
                        {
                        case "Texture":
                            textureRef = childElement.Attribute("Ref").Value;
                            break;

                        case "ScrollVector":
                        {
                            float x = XmlConvert.ToSingle(childElement.Attribute("X").Value);
                            float y = XmlConvert.ToSingle(childElement.Attribute("Y").Value);
                            scrollVec = new Vector2(x, y);
                        }
                        break;

                        case "ScrollFactor":
                            scrollFactor = XmlConvert.ToSingle(childElement.Value);
                            break;
                        }
                    }

                    ParallaxSurface surface = new ParallaxSurface(textureRef);
                    surface.Scroll       = scrollVec;
                    surface.ScrollFactor = scrollFactor;
                    scene.ParallaxLayers.Add(surface);
                }
            }
        }
Ejemplo n.º 3
0
        public void LoadHeader(Module.Module module, XElement xmlNode, ParallaxScene scene)
        {
            float width  = 0.0f;
            float height = 0.0f;

            foreach (XElement headerNode in xmlNode.Elements())
            {
                switch (headerNode.Name.LocalName)
                {
                case "Name":
                    scene.Name = headerNode.Value;
                    break;

                case "Width":
                    width = XmlConvert.ToSingle(headerNode.Value);
                    break;

                case "Height":
                    height = XmlConvert.ToSingle(headerNode.Value);
                    break;

                case "Background":
                {
                    string bkgRef = headerNode.Attribute("Ref").Value;
                    module.LoadTexture(bkgRef);
                    scene.SetBackground(bkgRef);
                }
                break;

                case "ParallaxLayerList":
                    LoadParallaxSurfaces(headerNode, scene);
                    break;
                }
            }

            scene.Dimensions = new Dimension(width, height);
        }