Esempio n. 1
0
        /// <summary>
        /// Parse an entity entry and add to the wave.
        /// </summary>
        /// <param name="ef"></param>
        /// <param name="sf"></param>
        /// <param name="wave"></param>
        private static void ParseEntity(XmlNode entity, ref SpriteWave wave)
        {
            // Spawners for this entity
            List <BulletSpawner> new_spawners = null;
            // Factories
            StandardEntityFactory   ef = new StandardEntityFactory();
            StandardMovementFactory mf = new StandardMovementFactory();
            // Default Values
            int     timesec = 0, lifespan = 0, speed = 0, health = 1;
            Vector2 pos = Vector2.Zero;

            EntityFactory.EntitiyType    etype = EntityFactory.EntitiyType.Grunt1;
            MovementFactory.MovementType mtype = MovementFactory.MovementType.None;
            // Sprites
            Entity e = null;

            foreach (XmlNode att in entity.ChildNodes)
            {
                switch (att.Name)
                {
                case "timeseconds":
                    timesec = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Wave time seconds: " + timesec.ToString());
                    break;

                case "movement":
                    mtype = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Movement type: " + mtype.ToString());
                    break;

                case "lifespan":
                    lifespan = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Lifespan seconds: " + lifespan.ToString());
                    break;

                case "speed":
                    speed = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Speed: " + speed.ToString());
                    break;

                case "health":
                    health = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Health: " + health.ToString());
                    break;

                case "position":
                    pos = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Initial position: " + pos.ToString());
                    break;

                case "type":
                    etype = TypeTable.Get(att.Name, att.InnerText);
                    LogConsole.Log("Parse: Entity type: " + etype.ToString());
                    break;

                default:
                    break;
                }
            }
            e                 = ef.CreateEnemy(etype);
            e.Speed           = (uint)speed;
            e.LifeSpan        = (uint)lifespan;
            e.Health          = health;
            e.Position        = pos;
            e.WaveTimeSeconds = timesec;
            e.Movement        = mf.CreateMovement(mtype, e);
            wave.AddEntitiy(e);

            foreach (XmlNode att in entity.ChildNodes)
            {
                if (att.Name == "spawners")
                {
                    new_spawners = ParseSpawners(att, e);
                    break;
                }
            }
            foreach (BulletSpawner s in new_spawners)
            {
                wave.AddSpawner(s);
            }
        }