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); }
public Character_Data character(int numItems, int numWLvls) { return(Character_Data.from_data( this.type, this.identifier, this.data, numItems, numWLvls)); }