public static UnitInfo[] FromStringList(string[] src, ModInfo mod)
		{
			var result = new List<UnitInfo>();
			for (int i = 0; i < src.Length; ++i) {
				UnitInfo u;
				if (mod.GetUnitInfo(src[i], out u)) result.Add(u);
			}
			return result.ToArray();
		}
Beispiel #2
0
 public Battle(string password, int port, int maxplayers, int rank, MapInfo map, string title, ModInfo mod, BattleDetails details)
 {
   if (!String.IsNullOrEmpty(password)) this.Password = password; else this.Password = "******";
   if (port == 0) this.HostPort = 8452; else this.HostPort = port;
   this.MaxPlayers = maxplayers;
   this.Rank = rank;
   this.Map = map;
   this.Title = title;
   this.Mod = mod;
   if (details != null) this.Details = details; else details = new BattleDetails();
   details.Validate();
 }
Beispiel #3
0
		public Battle(string password, int port, int maxplayers, int rank, MapInfo map, string title, ModInfo mod, BattleDetails details)
		{
			if (!String.IsNullOrEmpty(password)) Password = password;
			else Password = "******";
			if (port == 0) HostPort = 8452;
			else HostPort = port;
			MaxPlayers = maxplayers;
			Rank = rank;
			Map = map;
			Title = title;
			Mod = mod;
			if (details != null) Details = details;
			else details = new BattleDetails();
		}
		/// <summary>
		/// Gets mod list - does not make full reinit by default
		/// </summary>
		/// <returns></returns>
		private void LoadModList()
		{
			string opath = Directory.GetCurrentDirectory();
			Directory.SetCurrentDirectory(path);

			int modCount = GetPrimaryModCount();

			modList.Clear();
			for (int i = 0; i < modCount; ++i) {
				var mi = new ModInfo(this, GetPrimaryModName(i), i);
				modList[mi.Name] = mi;
			}
		}
		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);
		}
    internal void LoadModInfo(ModInfo mi)
    {
      string opath = Directory.GetCurrentDirectory();
      Directory.SetCurrentDirectory(path);
      int i = mi.ModId;

      ReInit(true);

      GetPrimaryModCount();
      if (mi.Name != GetPrimaryModName(i)) throw new Exception("Mod " + mi.Name + " modified without reload");

      //uint result = 0;
      mi.ArchiveName = GetPrimaryModArchive(i);

      /*      int acount = GetPrimaryModArchiveCount(i);
            for (int x = 0; x < acount; ++x) {
              result += GetArchiveChecksum(GetPrimaryModArchiveList(x));
            }
            mi.Checksum = (int)result;*/
      mi.Checksum = 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));
      }


      Directory.SetCurrentDirectory(opath);
    }
 public void OpenBattle(string password, int port, int maxplayers, int rank, MapInfo map, string title, ModInfo mod, BattleDetails details)
 {
   OpenBattle(new Battle(password, port, maxplayers, rank, map, title, mod, details));
 }