示例#1
0
 string TemplateFormatter(GCATrait trait, GCAWriter fw)
 {
     return AdvantageFormatter(trait, fw);
 }
示例#2
0
        string SkillFormatter(GCATrait trait, GCAWriter fw)
        {
            var builder = new StringBuilder();
            builder.AppendFormat("{0} {1}:", trait.DisplayName, trait.get_TagItem("type"));
            var label = builder.ToString();

            builder.Clear();
            switch ((SkillType)int.Parse(trait.get_TagItem("sd")))
            {
                case SkillType.Skill:
                    string stepOff = trait.get_TagItem("stepoff");
                    if (!stepOff.Equals(string.Empty))
                    {
                        builder.Append(stepOff);
                        string step = trait.get_TagItem("step");
                        if (!step.Equals(string.Empty))
                            builder.Append(step);
                        else
                            builder.Append("?");
                    }
                    else
                    {
                        builder.Append("?+?");
                    }
                    builder.AppendFormat(" - {0}", trait.get_TagItem("level"));
                    break;
                case SkillType.Technique:
                    builder.AppendFormat(" - {0}", trait.get_TagItem("level"));
                    break;
                case SkillType.Combo:
                    builder.AppendFormat(" - {0}", trait.get_TagItem("combolevel"));
                    break;
                default:
                    break;
            }
            builder.AppendFormat(" [{0}]", trait.Points);

            return fw.FormatTrait(label, builder.ToString());
        }
示例#3
0
 string FormatTrait(GCATrait trait, GCAWriter fw, int childDepth = 0)
 {
     //fw.WriteLine("DEBUG TRAIT {0} DEPTH {1}", trait.Name, childDepth);
     TraitFormatter formatter = null;
     switch (trait.ItemType)
     {
         case TraitTypes.Attributes:
             formatter = AttributeFormatter;
             break;
         case TraitTypes.Languages:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Cultures:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Advantages:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Perks:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Disadvantages:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Quirks:
             formatter = AdvantageFormatter;
             break;
         case TraitTypes.Skills:
             formatter = SkillFormatter;
             break;
         case TraitTypes.Spells:
             formatter = SkillFormatter;
             break;
         case TraitTypes.Equipment:
             formatter = EquipmentFormatter;
             break;
         case TraitTypes.Templates:
             formatter = TemplateFormatter;
             break;
     }
     var builder = new StringBuilder();
     if ( string.IsNullOrEmpty(trait.get_TagItem("parentkey")) || childDepth > 0)
     {
         for (int i = 0; i < childDepth; i++)
         {
             builder.Append(":");
         }
         builder.Append(formatter != null ? formatter(trait, fw) : string.Empty);
         builder.Append(Environment.NewLine);
         if (!string.IsNullOrEmpty(trait.get_ChildKeyList()))
         {
             var keys = trait.get_ChildKeyList().Split(',');
             //fw.WriteLine("DEBUG TRAIT '{0}' CHILDREN '{1}'", trait.Name, string.Join(",", keys));
             foreach (var key in keys)
             {
                 var cleanKey = key.Trim().Substring(1);
                 var child = Traits.FirstOrDefault(x => x.IDKey.Equals(Convert.ToInt32( cleanKey)));
                 //fw.WriteLine("DEBUG TRAIT '{0}' KEY '{1}' CHILD '{2}'", trait.Name, cleanKey, child);
                 if (child != null)
                 {
                     //fw.WriteLine("DEBUG FORMATTING CHILD '{2}'", trait.Name, cleanKey, child);
                     builder.Append(FormatTrait(child, fw, childDepth + 1));
                 }
             }
         }
     }
     return builder.ToString();
 }
示例#4
0
        string EquipmentFormatter(GCATrait trait, GCAWriter fw)
        {
            var builder = new StringBuilder();
            builder.Append(trait.DisplayName);

            var label = builder.ToString();

            builder.Clear();
            if (!string.IsNullOrEmpty(trait.NameExt) || trait.Mods.Count() > 0)
                builder.Append("(");
            if (!string.IsNullOrEmpty(trait.NameExt))
                builder.Append(trait.NameExt);
            if (!string.IsNullOrEmpty(trait.NameExt) && trait.Mods.Count() > 0)
                builder.Append("; ");
            if (trait.Mods.Count() > 0)
            {
                var mods = new List<GCAModifier>();
                foreach (GCAModifier item in trait.Mods)
                {
                    mods.Add(item);
                }
                builder.Append(String.Join("; ", mods.Select(x => ModifierFormatter(x, fw))));
            }
            if (!string.IsNullOrEmpty(trait.NameExt) || trait.Mods.Count() > 0)
                builder.Append(")");

            if ( Convert.ToInt32( trait.get_TagItem("count")) > 1 )
            {
                builder.AppendFormat(" {0} lbs, ${1} ×{2} = {3} lbs ${4}", trait.get_TagItem("precountweight"), trait.get_TagItem("precountcost"), trait.get_TagItem("count"), trait.get_TagItem("weight"), trait.get_TagItem("cost"));
            }
            else
            {
                builder.AppendFormat(" {0} lbs ${1}", trait.get_TagItem("weight"), trait.get_TagItem("cost"));
            }
            return fw.FormatTrait(label, builder.ToString());
        }
示例#5
0
        string AttributeFormatter(GCATrait trait, GCAWriter fw)
        {
            var builder = new StringBuilder();
            builder.Append(trait.DisplayName);

            var label = builder.ToString();

            builder.Clear();
            builder.Append(trait.DisplayScore);

            builder.AppendFormat(" [{0}]", trait.Points);
            return fw.FormatTrait(label, builder.ToString());
        }
示例#6
0
        string AdvantageFormatter(GCATrait trait, GCAWriter fw)
        {
            var builder = new StringBuilder();
            builder.Append(trait.Name);
            if (!trait.get_TagItem("level").Equals("1") || !string.IsNullOrEmpty(trait.get_TagItem("upto")) || !string.IsNullOrEmpty(trait.LevelName)) // has more than one level
            {
                builder.AppendFormat(" {0}", string.IsNullOrEmpty(trait.LevelName) ? trait.get_TagItem("level") : trait.LevelName);
            }

            var label = builder.ToString();

            builder.Clear();
            if (!string.IsNullOrEmpty(trait.NameExt) || trait.Mods.Count() > 0)
                builder.Append(" (");
            if (!string.IsNullOrEmpty(trait.NameExt))
                builder.Append(trait.NameExt);
            if (!string.IsNullOrEmpty(trait.NameExt) && trait.Mods.Count() > 0)
                builder.Append("; ");
            if (trait.Mods.Count() > 0)
            {
                var mods = new List<GCAModifier>();
                foreach (GCAModifier item in trait.Mods)
                {
                    mods.Add(item);
                }
                builder.Append(String.Join("; ", mods.Select(x => ModifierFormatter(x, fw))));
            }
            if (!string.IsNullOrEmpty(trait.NameExt) || trait.Mods.Count() > 0)
                builder.Append(")");

            builder.AppendFormat(" [{0}]", trait.Points);

            return fw.FormatTrait(label, builder.ToString());
        }