コード例 #1
0
        public GenerateData()
        {
            LevelData i = new LevelData();

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;

            using (XmlWriter writer = XmlWriter.Create("Item.xml", settings))
            {
                IntermediateSerializer.Serialize(writer, i, "Item.xml");
            }
        }
        public LevelComponent(GameContent gameContent, World world)
        {
            this.gameContent = gameContent;
            this.world = world;

            levelData = gameContent.content.Load<LevelData>("Levels/level" + gameContent.levelIndex);

            MaxAtoms = levelData.MaxAtoms;

            int totalProbability = 0;
            for (int i = 0; i < levelData.AtomProbability.Length; i++) totalProbability += levelData.AtomProbability[i];

            if (totalProbability != 100) throw new Exception("must be 100");

            entryPoint = levelData.Entry;

            bonusType = levelData.BonusType;

            BodyDef bd = new BodyDef();
            Body ground = world.CreateBody(bd);

            PolygonShape ps = new PolygonShape();

            List<Vector2> v = levelData.ContinuousBoundry;
            for (int i = 0; i < v.Count - 1; i++)
            {
                if (v[i + 1].X == -1 && v[i + 1].Y == -1) { i++; continue; }

                ps.SetAsEdge(v[i] / gameContent.scale, v[i + 1] / gameContent.scale);
                ground.CreateFixture(ps, 0);
            }

            for (int i = 0; i < levelData.EquipmentDetails.Count; i++)
            {
                Equipment eq = new Equipment(levelData.EquipmentDetails[i].EquipmentName, gameContent, world);
                eq.body.Position = levelData.EquipmentDetails[i].Position / gameContent.scale;
                eq.body.Rotation = levelData.EquipmentDetails[i].RotationInDeg / 180 * (float)MathHelper.Pi;
                eq.isClamped = levelData.EquipmentDetails[i].IsClamped;
                eq.body.SetType(BodyType.Static);
                equipments.Add(eq);

                if (eq.equipName == EquipmentName.thermometer) thermometer = eq;

                if (eq.equipName == EquipmentName.pHscale) pHscale = eq;
            }
        }
コード例 #3
0
        private void Load()
        {
            levelData = gameContent.content.Load<LevelData>("Levels/level" + levelIndex);

            soldiers.Add(new Soldier(Shape.Triangle, new Vector2(702, 185), gameContent, world));
            soldiers.Add(new Soldier(Shape.Triangle, new Vector2(752, 185), gameContent, world));
            soldiers.Add(new Soldier(Shape.Triangle, new Vector2(400, 160), gameContent, world));
            soldiers.Add(new Soldier(Shape.Triangle, new Vector2(440, 171), gameContent, world));
            soldiers.Add(new Soldier(Shape.Square, new Vector2(109, 316), gameContent, world));
            soldiers.Add(new Soldier(Shape.Square, new Vector2(346, 444), gameContent, world));

            PolygonShape pShape = new PolygonShape();

            BodyDef bd = new BodyDef();
            bd.type = BodyType.Static;

            for (int i = 0; i < levelData.Rectangles.Count; i++)
            {
                GroundData g = levelData.Rectangles[i];
                Rectangle r = new Rectangle(0, 0, g.Width, g.Height);
                pShape.SetAsBox((float)r.Width / 2 / gameContent.b2Scale, (float)r.Height / 2 / gameContent.b2Scale);

                bd.position = g.Position / gameContent.b2Scale;

                Body b = world.CreateBody(bd);
                b.CreateFixture(pShape, 1);
                b.Rotation = g.Rotation / 180 * (float)Math.PI;
            }
        }