internal ModDescription CreateModReferenceBefore014(int i, BinaryRead reader) { var name = reader.GetNextString <int>(); var version = new Version (reader.GetNext <short>(), reader.GetNext <short>(), reader.GetNext <short>()); return(ModDictionary[name][version]); }
object BinaryRead.IReaderProvider.ReadAndAdvance(BinaryRead reader, Type type, MemberInfo member) { // ReSharper disable InconsistentNaming var isBefore0_13 = ((UserContext)reader.UserContext).IsBefore013; var isBefore0_14_9_1 = ((UserContext)reader.UserContext).IsBefore01491; // ReSharper enable InconsistentNaming if (!isBefore0_13) { reader.GetNextString <int>(); } if (!isBefore0_14_9_1) { reader.GetNextString <int>(); } return(TimeSpan.FromSeconds(reader.GetNext <int>() / TicksPerSecond)); }
object BinaryRead.IReaderProvider.ReadAndAdvance (BinaryRead reader, Type type, MemberInfo member) { // ReSharper disable once UnusedVariable var x = reader.LookAhead(); var isBefore01414 = ((UserContext)reader.UserContext).IsBefore01414; var result = isBefore01414 ? new { name = reader.GetNextString <int>(), version = new Version ( reader.GetNext <short>(), reader.GetNext <short>(), reader.GetNext <short>() ) } : new { name = reader.GetNextString <byte>(), version = new Version ( reader.GetNext <byte>(), reader.GetNext <byte>(), reader.GetNext <byte>() ) }; if (result.name == "") { throw new("Mod not recognized in stream"); } var mod = MmasfContext.Instance.ModDictionary[result.name]; return(mod[result.version]); }
public ModDescription CreateModReference(int i, BinaryRead reader, bool isBefore01414) { if (isBefore01414) { return(CreateModReferenceBefore014(i, reader)); } var name = reader.GetNextString <byte>(); // ReSharper disable once UnusedVariable var lookAhead = reader.LookAhead(); var version = new Version (reader.GetNext <byte>(), reader.GetNext <byte>(), reader.GetNext <byte>()); return(ModDictionary[name][version]); }