Пример #1
0
        public static Character_Data from_data(string type, string identifier, string data,
                                               int numItems, int numWLvls)
        {
            Character_Data battler = new Character_Data(numItems, numWLvls);

            battler.Generic    = type == "generic";
            battler.Identifier = identifier;

            if (battler.Generic)
            {
                battler.Actor_Id = -1;
                string[] ary = data.Split('\n');
                battler.Name     = ary[0].Split('|')[0];
                battler.Class_Id = Convert.ToInt32(ary[1].Split('|')[0]);
                battler.Gender   = Convert.ToInt32(ary[2].Split('|')[0]);
                battler.Level    = Convert.ToInt32(ary[3].Split('|')[0]);
                //battler.Exp = ary[4    0|Exp
                battler.Team = Convert.ToInt32(ary[5].Split('|')[0]);
                battler.Prepromote_Levels = Convert.ToInt32(ary[6].Split('|')[0]);
                battler.Build             = (Generic_Builds)Convert.ToInt32(ary[7].Split('|')[0]);
                battler.Con       = Convert.ToInt32(ary[8].Split('|')[0]);
                battler.Priority  = Convert.ToInt32(ary[9].Split('|')[0]);
                battler.Mission   = Convert.ToInt32(ary[10].Split('|')[0]);
                battler.Weapon_Id = Convert.ToInt32(ary[11].Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None)[1]);

                // If units were created with NUM_ITEMS = 6,
                // and then NUM_ITEMS was changed to 4 or 6, things would break
                // Come up with a longterm solution//Yeti
                int item_count = numItems;
                for (int i = 11; i < ary.Length; i++)
                {
                    var split = ary[i].Split('|');
                    if (split.Length < 2 || !split[1].StartsWith("Item"))
                    {
                        item_count = i - 11;
                        break;
                    }
                }

                for (int i = 0; i < item_count; i++)
                {
                    string[] item = ary[i + 11].Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None);
                    battler.Items[i] = new TactileLibrary.Item_Data(Convert.ToInt32(item[0]), Convert.ToInt32(item[1]), Convert.ToInt32(item[2]));
                }
                int      index_after_items = 11 + item_count;
                string[] wlvls             = ary[index_after_items].Split('|')[0]
                                             .Split(new string[] { ", " }, StringSplitOptions.None);
                for (int i = 0; i < battler.WLvls.Length; i++)
                {
                    if (i < wlvls.Length)
                    {
                        battler.WLvls[i] = Convert.ToInt32(wlvls[i]);
                    }
                }
            }
            else
            {
                string[] ary = data.Split('\n');
                battler.Actor_Id = Convert.ToInt32(ary[0].Split('|')[0]);
                battler.Team     = Convert.ToInt32(ary[1].Split('|')[0]);
                battler.Priority = Convert.ToInt32(ary[2].Split('|')[0]);
                battler.Mission  = Convert.ToInt32(ary[3].Split('|')[0]);
            }
            return(battler);
        }
Пример #2
0
 public Character_Data character(int numItems, int numWLvls)
 {
     return(Character_Data.from_data(
                this.type, this.identifier, this.data,
                numItems, numWLvls));
 }