コード例 #1
0
ファイル: BulletPattern.cs プロジェクト: echojc/BulletMLLib
        /// <summary>
        /// Creates a BulletPattern from an XML file.
        /// </summary>
        /// <param name="path">The path to the XML file.</param>
        /// <returns>An initialized BulletPattern object.</returns>
        public static BulletPattern FromFile(string path)
        {
            BulletPattern p = new BulletPattern();

            p.ParseXML(path);
            return(p);
        }
コード例 #2
0
        /// <summary>
        /// Load the pattern if necessary and store it in cache
        /// </summary>
        public static BulletPattern LoadPattern(TextAsset xmlFile, bool reloadCacheToo)
        {
            BulletPattern loadedPattern = null;

            // Cache the pattern to avoid reparsing everytime
            if (reloadCacheToo || patternCache.TryGetValue(xmlFile, out loadedPattern) == false)
            {
                System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(new System.IO.StringReader(xmlFile.text));
                reader.Normalization = false;
                reader.XmlResolver   = null;

                loadedPattern = new BulletMLLib.BulletPattern();
                loadedPattern.ParseXML(xmlFile.name, reader);

                if (patternCache.ContainsKey(xmlFile))
                {
                    patternCache[xmlFile] = loadedPattern;
                }
                else
                {
                    patternCache.Add(xmlFile, loadedPattern);
                }
            }

            return(loadedPattern);
        }
コード例 #3
0
ファイル: SpeedNodeTest.cs プロジェクト: nwatson6/BulletMLLib
        public void CreatedSpeedNode()
        {
            string filename = @"Content\FireSpeed.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            Assert.IsNotNull(pattern.RootNode);
        }
コード例 #4
0
        public void TestIsParent()
        {
            string filename = @"Content\Empty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            Assert.AreEqual(pattern.RootNode, pattern.RootNode.GetRootNode());
        }
コード例 #5
0
ファイル: BulletNodeTest.cs プロジェクト: jjhesk/BulletMLLib
        public void CreatedBulletNode1()
        {
            string filename = @"Content\BulletEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            BulletNode testBulletNode = pattern.RootNode.GetChild(ENodeName.bullet) as BulletNode;
            Assert.IsNotNull(testBulletNode);
        }
コード例 #6
0
ファイル: BulletNodeTest.cs プロジェクト: jjhesk/BulletMLLib
        public void SetBulletLabelNode()
        {
            string filename = @"Content\BulletEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            BulletNode testBulletNode = pattern.RootNode.GetChild(ENodeName.bullet) as BulletNode;
            Assert.AreEqual("test", testBulletNode.Label);
        }
コード例 #7
0
        public void GotActionRefNode()
        {
            string filename = @"Content\ActionRefEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            Assert.IsNotNull(testActionNode);
        }
コード例 #8
0
ファイル: Test.cs プロジェクト: jjhesk/BulletMLLib
 public void ValidateTestData()
 {
     //Get all the xml files in the Content\\Samples directory
     foreach (var source in Directory.GetFiles("Content", "*.xml"))
     {
         //load & validate the pattern
         BulletPattern pattern = new BulletPattern();
         pattern.ParseXML(source);
     }
 }
コード例 #9
0
ファイル: FireNodeTest.cs プロジェクト: nwatson6/BulletMLLib
        public void GotBulletNode()
        {
            string filename = @"Content\FireEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            Assert.IsNotNull(testFireNode.BulletDescriptionNode);
        }
コード例 #10
0
ファイル: ParamNodeTest.cs プロジェクト: jjhesk/BulletMLLib
        public void GotParamNode1()
        {
            string filename = @"Content\FireRefParam.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireRefNode testFireNode = testActionNode.GetChild(ENodeName.fireRef) as FireRefNode;
            Assert.IsNotNull(testFireNode.GetChild(ENodeName.param) as ParamNode);
        }
コード例 #11
0
ファイル: SpeedNodeTest.cs プロジェクト: nwatson6/BulletMLLib
        public void CreatedSpeedNode3()
        {
            string filename = @"Content\FireSpeed.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            Assert.IsNotNull(testFireNode.GetChild(ENodeName.speed) as SpeedNode);
        }
コード例 #12
0
ファイル: TaskTest.cs プロジェクト: nwatson6/BulletMLLib
        public void NotFinished()
        {
            string filename = @"Content\ActionOneTop.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);

            Assert.IsFalse(mover.Tasks[0].TaskFinished);
        }
コード例 #13
0
ファイル: TaskTest.cs プロジェクト: nwatson6/BulletMLLib
        public void NoParams()
        {
            string filename = @"Content\ActionOneTop.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);

            Assert.AreEqual(mover.Tasks[0].ParamList.Count, 0);
        }
コード例 #14
0
        public void CreatedBulletRefNode2()
        {
            string filename = @"Content\BulletRef.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            Assert.IsNotNull(testFireNode.GetChild(ENodeName.bulletRef));
        }
コード例 #15
0
ファイル: AllRoundXmlTest.cs プロジェクト: jjhesk/BulletMLLib
 public void CorrectAction()
 {
     string filename = @"Content\AllRound.xml";
     BulletPattern pattern = new BulletPattern();
     pattern.ParseXML(filename);
     Mover mover = (Mover)manager.CreateBullet();
     mover.InitTopNode(pattern.RootNode);
     BulletMLTask myTask = mover.Tasks[0];
     Assert.AreEqual(1, myTask.ChildTasks.Count);
 }
コード例 #16
0
ファイル: BulletPattern.cs プロジェクト: echojc/BulletMLLib
        /// <summary>
        /// Creates a BulletPattern from a string.
        /// </summary>
        /// <param name="xml">The string containing XML.</param>
        /// <returns>An initialized BulletPattern object.</returns>
        public static BulletPattern FromString(string xml)
        {
            BulletPattern p = new BulletPattern();

            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
            {
                p.ParseXmlStream(ms);
            }
            return(p);
        }
コード例 #17
0
        public void NoBullet3()
        {
            string filename = @"Content\ActionEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);
            manager.FreeMovers();

            Assert.AreEqual(0, manager.movers.Count);
        }
コード例 #18
0
ファイル: FireNodeTest.cs プロジェクト: nwatson6/BulletMLLib
        public void CreatedTopLevelFireNode()
        {
            string filename = @"Content\FireEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            FireNode testFireNode = pattern.RootNode.GetChild(ENodeName.fire) as FireNode;
            Assert.IsNotNull(testFireNode);
            Assert.IsNotNull(testFireNode.BulletDescriptionNode);
            Assert.AreEqual("test", testFireNode.Label);
        }
コード例 #19
0
        public void CreatedFireNode1()
        {
            string filename = @"Content\FireRef.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            //get teh child action node
            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            Assert.IsNotNull(testActionNode);
            Assert.IsNotNull(testActionNode.GetChild(ENodeName.fireRef));
        }
コード例 #20
0
        public void GotCorrectFireNode()
        {
            string filename = @"Content\FireRef.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireRefNode testFireNode = testActionNode.GetChild(ENodeName.fireRef) as FireRefNode;
            FireNode fireNode = testFireNode.ReferencedFireNode as FireNode;
            Assert.AreEqual("test", fireNode.Label);
        }
コード例 #21
0
ファイル: AllRoundXmlTest.cs プロジェクト: jjhesk/BulletMLLib
        public void CorrectNode()
        {
            string filename = @"Content\AllRound.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);

            Assert.IsNotNull(mover.Tasks[0].Node);
            Assert.IsNotNull(mover.Tasks[0].Node is ActionNode);
        }
コード例 #22
0
ファイル: SpeedNodeTest.cs プロジェクト: nwatson6/BulletMLLib
        public void SpeedNodeDefaultValue()
        {
            string filename = @"Content\FireSpeed.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            SpeedNode testSpeedNode = testFireNode.GetChild(ENodeName.speed) as SpeedNode;

            Assert.AreEqual(ENodeType.absolute, testSpeedNode.NodeType);
        }
コード例 #23
0
        public void DirectionNodeDefaultValue()
        {
            string filename = @"Content\FireDirection.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            DirectionNode testDirectionNode = testFireNode.GetChild(ENodeName.direction) as DirectionNode;

            Assert.AreEqual(ENodeType.aim, testDirectionNode.NodeType);
        }
コード例 #24
0
        public void TestEmptyVert()
        {
            string filename = @"Content\EmptyVert.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            Assert.AreEqual(filename, pattern.Filename);
            Assert.AreEqual(EPatternType.vertical, pattern.Orientation);

            Assert.IsNotNull(pattern.RootNode);
            Assert.AreEqual(pattern.RootNode.Name, ENodeName.bulletml);
            Assert.AreEqual(pattern.RootNode.NodeType, ENodeType.none);
        }
コード例 #25
0
        public void FoundBulletNode2()
        {
            string filename = @"Content\BulletRef.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            BulletRefNode refNode = testFireNode.GetChild(ENodeName.bulletRef) as BulletRefNode;
            BulletNode testBulletNode = refNode.ReferencedBulletNode as BulletNode;

            Assert.AreEqual("test", testBulletNode.Label);
        }
コード例 #26
0
        public void FoundActionNode1()
        {
            string filename = @"Content\ActionRefEmpty.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            BulletNode testBulletNode = testFireNode.GetChild(ENodeName.bullet) as BulletNode;
            ActionRefNode testActionRefNode = testBulletNode.GetChild(ENodeName.actionRef) as ActionRefNode;

            Assert.IsNotNull(testActionRefNode.ReferencedActionNode as ActionNode);
        }
コード例 #27
0
        public void FoundCorrectActionNode()
        {
            string filename = @"Content\ActionRefParam.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            ActionNode testActionNode = pattern.RootNode.GetChild(ENodeName.action) as ActionNode;
            FireNode testFireNode = testActionNode.GetChild(ENodeName.fire) as FireNode;
            BulletNode testBulletNode = testFireNode.GetChild(ENodeName.bullet) as BulletNode;
            ActionRefNode testActionRefNode = testBulletNode.GetChild(ENodeName.actionRef) as ActionRefNode;
            ActionNode refNode = testActionRefNode.ReferencedActionNode as ActionNode;

            Assert.AreEqual(refNode.Label, "test2");
        }
コード例 #28
0
        void Update()
        {
            // Changing source?
            if (currentXmlFile != xmlFile)
            {
                pattern        = LoadPattern(xmlFile);
                currentXmlFile = xmlFile;

                Initialize();
            }

            rootBullet.X = transform.position.x;
            rootBullet.Y = transform.position.y;
            rootBullet.Update();
        }
コード例 #29
0
        public void MakeSureNothingCrashes()
        {
            //Get all the xml files in the Content\\Samples directory
            foreach (var source in Directory.GetFiles("Content", "*.xml"))
            {
                //load & validate the pattern
                BulletPattern pattern = new BulletPattern();
                pattern.ParseXML(source);

                //fire in the hole
                manager.movers.Clear();
                Mover mover = (Mover)manager.CreateBullet();
                mover.InitTopNode(pattern.RootNode);
            }
        }
コード例 #30
0
 public void setupHarness()
 {
     dude = new Myship();
     manager = new MoverManager(dude.Position);
     pattern = new BulletPattern();
 }
コード例 #31
0
 /// <summary>
 /// Force the XML file to be reloaded
 /// </summary>
 /// <param name="forceCacheReload"></param>
 public void ParsePattern(bool forceCacheReload)
 {
     pattern        = LoadPattern(xmlFile, forceCacheReload);
     currentXmlFile = xmlFile;
 }
コード例 #32
0
ファイル: TaskTest.cs プロジェクト: nwatson6/BulletMLLib
        public void OneAction1()
        {
            string filename = @"Content\ActionOneTop.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);

            Assert.IsNotNull(mover.Tasks[0] is ActionTask);
        }
コード例 #33
0
ファイル: AllRoundXmlTest.cs プロジェクト: jjhesk/BulletMLLib
        public void RepeatOnce()
        {
            string filename = @"Content\AllRound.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);
            ActionTask myAction = mover.Tasks[0] as ActionTask;

            ActionNode testNode = pattern.RootNode.FindLabelNode("top", ENodeName.action) as ActionNode;
            Assert.AreEqual(1, testNode.RepeatNum(myAction, mover));
        }
コード例 #34
0
ファイル: TaskTest.cs プロジェクト: nwatson6/BulletMLLib
        public void OkFinished()
        {
            string filename = @"Content\ActionOneTop.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);
            Mover mover = (Mover)manager.CreateBullet();
            mover.InitTopNode(pattern.RootNode);

            Assert.AreEqual(ERunStatus.End, mover.Tasks[0].Run(mover));
        }
コード例 #35
0
        public void ValidXML()
        {
            string filename = @"Content\BulletRef.xml";
            BulletPattern pattern = new BulletPattern();
            pattern.ParseXML(filename);

            Assert.IsNotNull(pattern.RootNode);
        }