public void ConvertToXml_MapsCorrectly()
        {
            //Arrange
            var effectRequirementMapper = new EffectRequirementMapper();
            var effectRequirement       = new EffectRequirement("name")
            {
                Tags = "tags"
            };

            //Act
            var xml = effectRequirementMapper.Convert(effectRequirement);

            //Assert
            Assert.IsInstanceOfType(xml, typeof(entity_classesEntity_classEffect_groupTriggered_effectRequirement));
            Assert.AreEqual("name", xml.name);
            Assert.AreEqual("tags", xml.tags);
        }
示例#2
0
        public void Init(string filename)
        {
            using (
                var reader =
                    new CsvReader(
                        new StreamReader(new FileStream(filename,
                                                        FileMode.Open,
                                                        FileAccess.Read,
                                                        FileShare.ReadWrite))))
            {
                String[] toks;
                var      col = new Dictionary <string, int>();
                for (int i = 0; i < reader.Columns.Length; ++i)
                {
                    col.Add(reader.Columns[i], i);
                }

                Type type = typeof(RequirementFormula);
                while ((toks = reader.ReadRow()) != null)
                {
                    if (toks[0].Length <= 0)
                    {
                        continue;
                    }

                    uint index = uint.Parse(toks[col["Id"]]);
                    EffectRequirementContainer container;
                    if (!dict.TryGetValue(index, out container))
                    {
                        container = new EffectRequirementContainer {
                            Id = index
                        };
                        dict.Add(index, container);
                    }
                    //string name = "Game.Logic.EffectRequirements." + toks[col["Method"]];
                    EffectRequirement req = new EffectRequirement();
                    var parms             = new string[toks.Length - 2];
                    for (int i = 2; i < toks.Length; ++i)
                    {
                        if (toks[i].Contains("="))
                        {
                            parms[i - 2] = toks[i].Split('=')[1];
                        }
                        else
                        {
                            parms[i - 2] = toks[i];
                        }
                    }

                    req.Parms              = parms;
                    req.Method             = type.GetMethod(toks[col["Method"]]);
                    req.Description        = toks[col["Description"]].Trim();
                    req.WebsiteDescription = toks[col["Website Description"]].Trim();

                    if (req.Method == null)
                    {
                        throw new Exception(string.Format("Could not find effect requirement method {0}", toks[col["Method"]]));
                    }

                    container.Add(req);
                }
            }
        }