private void WritePlayerModel() { if (_settings.Character == Character.LinkMM) { return; } int characterIndex = (int)_settings.Character; using (var b = new BinaryReader(File.Open($"{Values.ObjsDirectory}link-{characterIndex}", FileMode.Open))) { var obj = new byte[b.BaseStream.Length]; b.Read(obj, 0, obj.Length); ResourceUtils.ApplyHack($"{Values.ModsDirectory}fix-link-{characterIndex}"); ObjUtils.InsertObj(obj, 0x11); } if (_settings.Character == Character.Kafei) { using (var b = new BinaryReader(File.Open($"{Values.ObjsDirectory}kafei", FileMode.Open))) { var obj = new byte[b.BaseStream.Length]; b.Read(obj, 0, obj.Length); ObjUtils.InsertObj(obj, 0x1C); ResourceUtils.ApplyHack(Values.ModsDirectory + "fix-kafei"); } } }
private void WriteTunicColor() { Color t = _settings.TunicColor; byte[] color = { t.R, t.G, t.B }; var otherTunics = ResourceUtils.GetAddresses(Values.AddrsDirectory + "tunic-forms"); TunicUtils.UpdateFormTunics(otherTunics, _settings.TunicColor); var playerModel = DeterminePlayerModel(); var characterIndex = (int)playerModel; var locations = ResourceUtils.GetAddresses($"{Values.AddrsDirectory}tunic-{characterIndex}"); var objectIndex = playerModel == Character.Kafei ? 0x1C : 0x11; var objectData = ObjUtils.GetObjectData(objectIndex); for (int j = 0; j < locations.Count; j++) { ReadWriteUtils.WriteFileAddr(locations[j], color, objectData); } ObjUtils.InsertObj(objectData, objectIndex); }