public static Chip Read(BinaryReader reader, int position) { var chip = (Chip)Empty.MemberwiseClone(); chip.Position = position; chip.BaseCode = reader.ReadInt32(); chip.BaseId = reader.ReadInt32(); chip.Type = reader.ReadInt32(); chip.Level = reader.ReadInt32(); chip.Weight = reader.ReadInt32(); chip.SlotA = reader.ReadInt32(); chip.SlotB = reader.ReadInt32(); chip.SlotC = reader.ReadInt32(); for (int i = 0; i < 0x10; i++) { reader.ReadByte(); } if (Chips.TryGetValue(chip.Type, out var knownChip)) { chip.Name = knownChip.Name; chip.BaseCode = knownChip.BaseCode; chip.BaseId = knownChip.BaseId; } else if (chip.Type != Empty.Type) { chip.Name = "???"; chip.BaseCode -= chip.Level; chip.BaseId -= chip.Level; } return(chip); }
public void ChangeType(int type) { if (Chips.TryGetValue(type, out var newChip)) { Name = newChip.Name; HasLevels = newChip.HasLevels; BaseCode = newChip.BaseCode; BaseId = newChip.BaseId; Type = newChip.Type; } }