public Mission(string name, Mod game, Map map) { Mod = game; Map = map; Name = name; ModName = game.Name; MapName = map.Name; var testAI = game.AllAis.FirstOrDefault(ai => ai.ShortName.Contains("NullAI")); var player1 = new Player { Name = "Player 1", Color = Colors.Blue, Alliance = "Alliance 1", IsHuman = true, IsRequired = true }; var player2 = new Player { Name = "Player 2", Color = Colors.Red, Alliance = "Alliance 2", IsHuman = false, }; StartingPlayer = player1; Players.Add(player1); Players.Add(player2); Regions.Add(new Region { Name = "Region 1" }); var gamePreloadTrigger = new Trigger(); Triggers.Add(gamePreloadTrigger); gamePreloadTrigger.Logic.Add(new GamePreloadCondition()); gamePreloadTrigger.Name = "Initialization"; var gameStartTrigger = new Trigger(); Triggers.Add(gameStartTrigger); gameStartTrigger.Logic.Add(new GameStartedCondition()); gameStartTrigger.Name = "Game Start"; var unitType = game.UnitDefs.First(); var startUnits = new UnitStartInfo[] {}; gamePreloadTrigger.Logic.Add(new CreateUnitsAction(startUnits)); var widgets = new[] { "cmd_unit_mover.lua", "init_startup_info_selector.lua", "gui_center_n_select.lua", "gui_take_remind.lua", "gui_startup_info_selector.lua", "gui_local_colors.lua", "spring_direct_launch.lua" }; foreach (var widget in widgets) { DisabledWidgets.Add(widget); } var gadgets = new string[] { "game_over.lua", "game_end.lua", "awards.lua" }; foreach (var gadget in gadgets) { DisabledGadgets.Add(gadget); } if (game.Name.Contains("Zero-K")) { RapidTag = "zk:stable"; } Items = new CompositeObservableCollection <Trigger, Region>(Triggers, Regions); }
public Mod GetMod(string modName) { if (disposed) throw new ObjectDisposedException("Unitsync has already been released."); if (modName == null) throw new ArgumentNullException("modName"); NativeMethods.RemoveAllArchives(); NativeMethods.GetPrimaryModCount(); // pre-requisite for the following calls var archiveName = GetModArchiveName(modName); SetLoadingStatus("Loading Mod (Reading Mod Files)"); NativeMethods.AddAllArchives(archiveName); var modIndex = NativeMethods.GetPrimaryModIndex(modName); string[] sides; SetLoadingStatus("Loading Mod (Mod Information)"); var mod = new Mod { Name = modName, ArchiveName = archiveName, UnitDefs = ReadUnits(), StartUnits = new Dictionary<string, string>(GetStartUnits(modName, out sides)), Sides = sides, Checksum = (int)NativeMethods.GetPrimaryModChecksumFromName(modName), Options = GetModOptions(archiveName).ToArray(), SideIcons = GetSideIcons(sides).ToArray(), Dependencies = GetModDependencies(modIndex).Where(x => x != modName && !string.IsNullOrEmpty(x)).ToArray(), AllAis = GetAis().ToArray(), ModAis = GetAis().Where(ai => ai.IsLuaAi).ToArray(), }; try { int infoItemCount = NativeMethods.GetPrimaryModInfoCount(modIndex); for (int i = 0; i < infoItemCount; i++) { string key = NativeMethods.GetInfoKey(i); //string desc = NativeMethods.GetInfoDescription(i); //string type = NativeMethods.GetInfoType(i); //Trace.TraceInformation(String.Format("Unitsync mod info: ({0}) key: {1}; type: {2}, desc: {3}", i, key, type, desc)); ProcessModInfoItem(i, key, ref mod); } } catch (Exception ex) { throw new UnitSyncException(String.Format("Error loading mod info for ({0}): {1}", modName, ex)); } SetLoadingStatus("Loading Mod (Widgets)"); mod.Widgets = GetFilesInVfsDirectory("LuaUI/Widgets", "*.lua", VfsMode.Zip).Select(Path.GetFileName).ToArray(); SetLoadingStatus("Loading Mod (Gadgets)"); mod.Gadgets = GetFilesInVfsDirectory("LuaRules/Gadgets", "*.lua", VfsMode.Zip).Select(Path.GetFileName).ToArray(); ReadUnits(); if (mod.Sides.Length == 0) Debug.WriteLine("Mod has no faction"); if (mod.UnitDefs.Length == 0) Debug.WriteLine("No unit found."); NativeMethods.RemoveAllArchives(); TraceErrors(); return mod; }
void ProcessModInfoItem(int index, string key, ref Mod mod) { switch (key) { case "description": mod.Description = NativeMethods.GetInfoValueString(index); break; case "mutator": mod.Mutator = NativeMethods.GetInfoValueString(index); break; case "name": mod.Name = NativeMethods.GetInfoValueString(index); break; case "shortname": mod.ShortName = NativeMethods.GetInfoValueString(index); break; case "version": mod.PrimaryModVersion = NativeMethods.GetInfoValueString(index); break; } }
public Mod GetMod(string modName) { if (disposed) throw new ObjectDisposedException("Unitsync has already been released."); if (modName == null) throw new ArgumentNullException("modName"); NativeMethods.RemoveAllArchives(); NativeMethods.GetPrimaryModCount(); // pre-requisite for the following calls var archiveName = GetModArchiveName(modName); SetLoadingStatus("Loading Mod (Reading Mod Files)"); NativeMethods.AddAllArchives(archiveName); var modIndex = NativeMethods.GetPrimaryModIndex(modName); string[] sides; SetLoadingStatus("Loading Mod (Mod Information)"); var mod = new Mod { Name = modName, ArchiveName = archiveName, UnitDefs = ReadUnits(), Desctiption = NativeMethods.GetPrimaryModDescription(modIndex), Game = NativeMethods.GetPrimaryModGame(modIndex), Mutator = NativeMethods.GetPrimaryModMutator(modIndex), ShortGame = NativeMethods.GetPrimaryModShortGame(modIndex), ShortName = NativeMethods.GetPrimaryModShortName(modIndex), PrimaryModVersion = NativeMethods.GetPrimaryModVersion(modIndex), StartUnits = new Dictionary<string, string>(GetStartUnits(modName, out sides)), Sides = sides, Checksum = (int)NativeMethods.GetPrimaryModChecksumFromName(modName), Options = GetModOptions(archiveName).ToArray(), SideIcons = GetSideIcons(sides).ToArray(), Dependencies = GetModDependencies(modIndex).Where(x => x != modName && !string.IsNullOrEmpty(x)).ToArray(), AllAis = GetAis().ToArray(), ModAis = GetAis().Where(ai => ai.IsLuaAi).ToArray(), }; SetLoadingStatus("Loading Mod (Widgets)"); mod.Widgets = GetFilesInVfsDirectory("LuaUI/Widgets", "*.lua", VfsMode.Mod).Select(Path.GetFileName).ToArray(); SetLoadingStatus("Loading Mod (Gadgets)"); mod.Gadgets = GetFilesInVfsDirectory("LuaRules/Gadgets", "*.lua", VfsMode.Mod).Select(Path.GetFileName).ToArray(); ReadUnits(); if (mod.Sides.Length == 0) Debug.WriteLine("Mod has no faction"); if (mod.UnitDefs.Length == 0) Debug.WriteLine("No unit found."); NativeMethods.RemoveAllArchives(); TraceErrors(); return mod; }
public Mission(string name, Mod game, Map map) { Mod = game; Map = map; Name = name; ModName = game.Name; MapName = map.Name; var testAI = game.AllAis.FirstOrDefault(ai => ai.ShortName.Contains("NullAI")); var player1 = new Player { Name = "Player 1", Color = Colors.Blue, Alliance = "Alliance 1", IsHuman = true, IsRequired = true }; var player2 = new Player { Name = "Player 2", Color = Colors.Red, Alliance = "Alliance 2", IsHuman = false, }; StartingPlayer = player1; Players.Add(player1); Players.Add(player2); Regions.Add(new Region { Name = "Region 1" }); var gamePreloadTrigger = new Trigger(); Triggers.Add(gamePreloadTrigger); gamePreloadTrigger.Logic.Add(new GamePreloadCondition()); gamePreloadTrigger.Name = "Initialization"; var gameStartTrigger = new Trigger(); Triggers.Add(gameStartTrigger); gameStartTrigger.Logic.Add(new GameStartedCondition()); gameStartTrigger.Name = "Game Start"; var unitType = game.UnitDefs.First(); var startUnits = new UnitStartInfo[] {}; gamePreloadTrigger.Logic.Add(new CreateUnitsAction(startUnits)); var widgets = new[] { "gui_pauseScreen.lua", "cmd_unit_mover.lua", "init_startup_info_selector.lua", "gui_center_n_select.lua", "gui_take_remind.lua", "gui_startup_info_selector.lua", "gui_local_colors.lua", "spring_direct_launch.lua" }; foreach (var widget in widgets) DisabledWidgets.Add(widget); var gadgets = new string[] { "game_over.lua", "game_end.lua", "awards.lua" }; foreach (var gadget in gadgets) DisabledGadgets.Add(gadget); if (game.Name.Contains("Zero-K")) RapidTag = "zk:stable"; Items = new CompositeObservableCollection<Trigger, Region>(Triggers, Regions); }
public Mod GetMod(string modName) { if (disposed) { throw new ObjectDisposedException("Unitsync has already been released."); } if (modName == null) { throw new ArgumentNullException("modName"); } NativeMethods.RemoveAllArchives(); NativeMethods.GetPrimaryModCount(); // pre-requisite for the following calls var archiveName = GetModArchiveName(modName); SetLoadingStatus("Loading Mod (Reading Mod Files)"); NativeMethods.AddAllArchives(archiveName); var modIndex = NativeMethods.GetPrimaryModIndex(modName); string[] sides; SetLoadingStatus("Loading Mod (Mod Information)"); var mod = new Mod { Name = modName, ArchiveName = archiveName, UnitDefs = ReadUnits(), StartUnits = new Dictionary <string, string>(GetStartUnits(modName, out sides)), Sides = sides, Checksum = (int)NativeMethods.GetPrimaryModChecksumFromName(modName), Options = GetModOptions(archiveName).ToArray(), SideIcons = GetSideIcons(sides).ToArray(), Dependencies = GetModDependencies(modIndex).Where(x => x != modName && !string.IsNullOrEmpty(x)).ToArray(), AllAis = GetAis().ToArray(), ModAis = GetAis().Where(ai => ai.IsLuaAi).ToArray(), }; try { int infoItemCount = NativeMethods.GetPrimaryModInfoCount(modIndex); for (int i = 0; i < infoItemCount; i++) { string key = NativeMethods.GetInfoKey(i); //string desc = NativeMethods.GetInfoDescription(i); //string type = NativeMethods.GetInfoType(i); //Trace.TraceInformation(String.Format("Unitsync mod info: ({0}) key: {1}; type: {2}, desc: {3}", i, key, type, desc)); ProcessModInfoItem(i, key, ref mod); } } catch (Exception ex) { throw new UnitSyncException(String.Format("Error loading mod info for ({0}): {1}", modName, ex)); } SetLoadingStatus("Loading Mod (Widgets)"); mod.Widgets = GetFilesInVfsDirectory("LuaUI/Widgets", "*.lua", VfsMode.Zip).Select(Path.GetFileName).ToArray(); SetLoadingStatus("Loading Mod (Gadgets)"); mod.Gadgets = GetFilesInVfsDirectory("LuaRules/Gadgets", "*.lua", VfsMode.Zip).Select(Path.GetFileName).ToArray(); ReadUnits(); if (mod.Sides.Length == 0) { Debug.WriteLine("Mod has no faction"); } if (mod.UnitDefs.Length == 0) { Debug.WriteLine("No unit found."); } NativeMethods.RemoveAllArchives(); TraceErrors(); return(mod); }