public int CompareTo(object obj) { SecondaryAction a = obj as SecondaryAction; if (a != null) { return(this.ToString().CompareTo(a.ToString())); } return(-1); }
private static void LoadActions() { XmlDocument doc = new XmlDocument(); doc.LoadXml(Resources.SecondaryAction); XmlNodeList actions = doc.SelectNodes("//SecondaryAction"); actionList = new List <SecondaryAction>(actions.Count); actionDict = new Dictionary <byte, SecondaryAction>(actions.Count); foreach (XmlNode node in actions) { SecondaryAction action = new SecondaryAction(Convert.ToByte(node.Attributes["byte"].InnerText, 16), node.InnerText); actionList.Add(action); actionDict.Add(action.Byte, action); } actionList.Sort(); }
private static void LoadActions() { XmlDocument doc = new XmlDocument(); doc.LoadXml( Resources.SecondaryAction ); XmlNodeList actions = doc.SelectNodes( "//SecondaryAction" ); actionList = new List<SecondaryAction>( actions.Count ); actionDict = new Dictionary<byte, SecondaryAction>( actions.Count ); foreach( XmlNode node in actions ) { SecondaryAction action = new SecondaryAction( Convert.ToByte( node.Attributes["byte"].InnerText, 16 ), node.InnerText ); actionList.Add( action ); actionDict.Add( action.Byte, action ); } actionList.Sort(); }
/// <summary> /// Builds an actual character from its binary data /// </summary> /// <param name="charData"></param> private void BuildCharacter(byte[] charData) { spriteSet = SpriteSet.AllSprites[charData[0]]; isPresent = (charData[1] != 0xFF); if (!Class.ClassDictionary.TryGetValue(charData[2], out job)) { job = Class.ClassDictionary[0x4A]; } unknownOffset03 = charData[3]; gender = (Gender)(charData[4] & 0xE0); unknownOffset05 = charData[5]; zodiacSign = (Zodiac)(charData[6] & 0xF0); if (gender == Gender.Monster) { secondaryAction = SecondaryAction.ActionDictionary[0x00]; supportAbility = Ability.AbilityList[0]; reactAbility = Ability.AbilityList[0]; movementAbility = Ability.AbilityList[0]; head = Item.ItemList[0]; body = Item.ItemList[0]; accessory = Item.ItemList[0]; rightHand = Item.ItemList[0]; rightShield = Item.ItemList[0]; leftHand = Item.ItemList[0]; leftShield = Item.ItemList[0]; } else { secondaryAction = SecondaryAction.ActionDictionary[charData[7]]; reactAbility = Ability.GetAbilityFromOffset(TwoBytesToUShort(charData[8], charData[9])); supportAbility = Ability.GetAbilityFromOffset(TwoBytesToUShort(charData[10], charData[11])); movementAbility = Ability.GetAbilityFromOffset(TwoBytesToUShort(charData[12], charData[13])); head = Item.GetItemAtOffset(TwoBytesToUShort(charData[14], charData[15])); body = Item.GetItemAtOffset(TwoBytesToUShort(charData[16], charData[17])); accessory = Item.GetItemAtOffset(TwoBytesToUShort(charData[18], charData[19])); rightHand = Item.GetItemAtOffset(TwoBytesToUShort(charData[20], charData[21])); rightShield = Item.GetItemAtOffset(TwoBytesToUShort(charData[22], charData[23])); leftHand = Item.GetItemAtOffset(TwoBytesToUShort(charData[24], charData[25])); leftShield = Item.GetItemAtOffset(TwoBytesToUShort(charData[26], charData[27])); } experience = charData[28]; level = charData[29]; bravery = charData[30]; faith = charData[31]; rawHP = ThreeBytesToUInt(charData[32], charData[33], charData[34]); rawMP = ThreeBytesToUInt(charData[35], charData[36], charData[37]); rawSP = ThreeBytesToUInt(charData[38], charData[39], charData[40]); rawPA = ThreeBytesToUInt(charData[41], charData[42], charData[43]); rawMA = ThreeBytesToUInt(charData[44], charData[45], charData[46]); byte[] jaBytes = new byte[173]; Savegame.CopyArray(charData, jaBytes, 0x4BB - 0x48C, 173); jobsAndAbilities = new JobsAndAbilities(jaBytes); for (int i = 0; i < 15; i++) { rawName[i] = charData[0xDC + i]; } for (int k = 0; k < 21; k++) { afterName[k] = charData[0xEB + k]; } }
/// <summary> /// Builds a character with "default" stats /// </summary> private void BuildDummyCharacter() { accessory = Item.GetItemAtOffset(0); body = Item.GetItemAtOffset(0); bravery = 0; experience = 0; faith = 0; gender = ((rng.Next() % 2) == 0) ? Gender.Male : Gender.Female; Name = string.Empty; head = Item.GetItemAtOffset(0); isPresent = false; job = Class.ClassDictionary[0x00]; jobLevels = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; jobsUnlocked = new byte[] { 0x00, 0x00, 0x00 }; jp = new ushort[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; totalJP = new ushort[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; jobsAndAbilities = new JobsAndAbilities(new byte[173]); leftHand = Item.GetItemAtOffset(0); leftShield = Item.GetItemAtOffset(0); level = 0; movementAbility = Ability.GetAbilityFromOffset(0); rawHP = Job.GetRawHPFromActualHP(0); rawMA = Job.GetRawMAFromActualMA(0); rawMP = Job.GetRawMPFromActualMP(0); rawPA = Job.GetRawPAFromActualPA(0); rawSP = Job.GetRawSPFromActualSP(0); reactAbility = Ability.GetAbilityFromOffset(0); rightHand = Item.GetItemAtOffset(0); rightShield = Item.GetItemAtOffset(0); secondaryAction = SecondaryAction.ActionDictionary[0x00]; for (int i = 0; i < 22; i++) { for (int j = 0; j < 3; j++) { skillsUnlocked[i, j] = 0x00; } } spriteSet = SpriteSet.AllSprites[0x00]; supportAbility = Ability.GetAbilityFromOffset(0); unknownOffset03 = 0x00; unknownOffset05 = 0x00; zodiacSign = (Zodiac)0; OnProposition = false; Kills = 0; isDummy = true; }