internal void LoadModInfo(ModInfo mi) { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; string opath = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(path); //ReInit(true); //GetPrimaryModCount(); if (mi.Name != GetPrimaryModName(mi.ModId)) throw new Exception("Mod " + mi.Name + " modified without reload"); //uint result = 0; mi.ArchiveName = GetPrimaryModArchive(mi.ModId); mi.Checksum = (int)GetPrimaryModChecksum(mi.ModId); AddAllArchives(mi.ArchiveName); mi.Sides = new String[GetSideCount()]; for (int x = 0; x < mi.Sides.Length; ++x) mi.Sides[x] = GetSideName(x); // weirdest stuff of all... while (ProcessUnitsNoChecksum() != 0) {} ; mi.Units = new UnitInfo[GetUnitCount()]; for (int x = 0; x < mi.Units.Length; ++x) mi.Units[x] = new UnitInfo(GetUnitName(x), GetFullUnitName(x)); int opts = GetModOptionCount(); for (int x = 0; x < opts; x++) { var o = new Option(x); mi.Options.Add(o); } Directory.SetCurrentDirectory(opath); }
public Option LoadOption(int idx) { var o = new Option(); o.Name = GetOptionName(idx); o.Key = GetOptionKey(idx); o.Description = GetOptionDesc(idx); o.OptionType = (Option.Type)GetOptionType(idx); o.strMaxLen = GetOptionStringMaxLen(idx); o.min = GetOptionNumberMin(idx); o.max = GetOptionNumberMax(idx); int listCount = GetOptionListCount(idx); for (int i = 0; i < listCount; i++) { var optl = LoadListOption(idx, i); o.ListOptions.Add(optl); } switch (o.OptionType) { case Option.Type.Bool: o.Default = GetOptionBoolDef(idx).ToString(); break; case Option.Type.Number: o.Default = GetOptionNumberDef(idx).ToString(); break; case Option.Type.String: o.Default = GetOptionStringDef(idx); break; case Option.Type.List: o.Default = GetOptionListDef(idx); break; default: return null; } return o; }