//============================================================================= /// <summary></summary> private void parseLine(string line) { if (String.IsNullOrWhiteSpace(line)) { return; // blank lines } // line should be like "character - offset" string[] parts = line.Split('-'); if (parts.Length != 2) { return; } // create and add character NameAndAddressInfo cInfo = new NameAndAddressInfo(); cInfo.name = parts[0].Trim(); Int64.TryParse(parts[1].Trim(), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out cInfo.offset); Characters.Add(cInfo); // update offsets if (cInfo.offset < _minAddress || _minAddress == 0) { _minAddress = cInfo.offset; } if (cInfo.offset > _maxAddress || _maxAddress == 0) { _maxAddress = cInfo.offset; } }
public CharacterData(NameAndAddressInfo info, long minAddress, byte[] rawData) { Name = info.name; BaseAddress = info.offset; MaxAddress = BaseAddress + 0x12; Str = high(rawData[0]); Mag = low(rawData[0]); Prot = high(rawData[1]); Mdf = low(rawData[1]); Tech = high(rawData[2]); Spd = low(rawData[2]); Luck = high(rawData[3]); Hp = low(rawData[3]); FireAff = high(rawData[8]); WaterAff = low(rawData[8]); WindAff = high(rawData[9]); EarthAff = low(rawData[9]); LightningAff = high(rawData[10]); ResurrectionAff = low(rawData[10]); DarkAff = high(rawData[11]); BrightAff = low(rawData[11]); HeadLev = rawData[0xe]; RHLev = rawData[0xf]; LHLev = rawData[0x10]; // build raw data string str = "Raw data:\r\n"; for (int i = 0; i < 0x12; i++) { str += String.Format("{0} - {1} (0x{1:X2})\r\n", i, rawData[i]); } RawDataString = str; RawData = rawData; }