public AbilityManagerUserInterface(Vector2 position, Vector2 size, IAbilityManager abilityManager) { AbilityBootstrapper.ComposeParts(this); this.units = new Units(size, position, abilityManager); this.window = new Window(size, position, "Ability# Manager", this.units); var menu = new Menu("AbilityManagerUI", this.MainMenuManager.Value.MainMenu.Name + "abilityManagerUi"); var enable = new ObservableMenuItem <bool>(menu.Name + "enable", "Enable"); menu.AddItem(enable.SetValue(false)); enable.Provider.Subscribe(new DataObserver <bool>(b => { this.window.Visible = b; })); this.MainMenuManager.Value.MainMenu.SettingsMenu.AddSubMenu(menu); Game.OnWndProc += this.Game_OnWndProc; Drawing.OnDraw += this.Drawing_OnDraw; }
internal AbilityManagerUserInterface(Vector2 position, Vector2 size, IAbilityManager abilityManager) { AbilityBootstrapper.ComposeParts(this); // this.units = new Units(size, position, abilityManager); this.units = new DamageManipulation(size, position, abilityManager); this.window = new Window(size, position, "Ability# Manager", this.units); var menu = new Menu("AbilityManagerUI", this.MainMenuManager.Value.MainMenu.Name + "abilityManagerUi"); var enable = new ObservableMenuItem <bool>(menu.Name + "enable", "Enable"); menu.AddItem(enable.SetValue(false)); var subbed = false; enable.Provider.Subscribe( new DataObserver <bool>( b => { this.window.Visible = b; if (!b) { if (!subbed) { return; } subbed = false; Game.OnWndProc -= this.Game_OnWndProc; Drawing.OnDraw -= this.Drawing_OnDraw; } else { if (subbed) { return; } subbed = true; Game.OnWndProc += this.Game_OnWndProc; Drawing.OnDraw += this.Drawing_OnDraw; } })); this.MainMenuManager.Value.MainMenu.SettingsMenu.AddSubMenu(menu); Game.OnWndProc += this.Game_OnWndProc; Drawing.OnDraw += this.Drawing_OnDraw; }
public void OnLoad() { Console.WriteLine("heroModules: " + this.HeroModules.Count()); Console.WriteLine("utilityModules: " + this.AbilityUtilityModules.Count()); foreach (var heroModule in this.HeroModules) { heroModule.Value.LocalHero = this.AbilityManager.Value.LocalHero; if ( heroModule.Metadata.HeroIds.Contains( (uint)(this.AbilityManager.Value.LocalHero.SourceUnit as Hero).HeroId)) { if (!heroModule.Value.LoadOnGameStart) { continue; } Console.WriteLine("loading heroModule " + heroModule.Value.HeroName); heroModule.Value.OnLoad(); this.ModuleActivated.Next(heroModule.Value); this.ActiveModules.Add(heroModule.Value); var unitModule = heroModule.Value as IAbilityUnitModule; if (unitModule != null) { foreach (var valueControllableUnit in this.AbilityManager.Value.ControllableUnits) { unitModule.UnitAdded(valueControllableUnit.Value); } this.AbilityManager.Value.UnitAdded += args => { if (args.AbilityUnit.IsCreep && args.AbilityUnit.SourceUnit.IsControllable) { unitModule.UnitAdded(args.AbilityUnit); } }; this.AbilityManager.Value.UnitRemoved += args => { if (args.AbilityUnit.IsCreep && args.AbilityUnit.SourceUnit.IsControllable) { unitModule.UnitRemoved(args.AbilityUnit); } }; } } } // foreach (var unitModule in this.UnitModules) // { // unitModule.Value.LocalHero = this.AbilityManager.Value.LocalHero; // var hasUnit = false; // foreach (var valueControllableUnit in this.AbilityManager.Value.ControllableUnits) // { // if (unitModule.Metadata.UnitNames.Contains(valueControllableUnit.Value.Name)) // { // unitModule.Value.UnitAdded(valueControllableUnit.Value); // hasUnit = true; // } // } // if (hasUnit) // { // unitModule.Value.OnLoad(); // this.ModuleActivated.Next(unitModule.Value); // this.ActiveModules.Add(unitModule.Value); // Console.WriteLine("loading unitModule " + unitModule.Metadata.UnitNames.First() + "..."); // this.AbilityManager.Value.UnitAdded += args => // { // if (args.AbilityUnit.IsCreep && args.AbilityUnit.SourceUnit.IsControllable) // { // unitModule.Value.UnitAdded(args.AbilityUnit); // } // }; // this.AbilityManager.Value.UnitRemoved += args => // { // if (args.AbilityUnit.IsCreep && args.AbilityUnit.SourceUnit.IsControllable) // { // unitModule.Value.UnitRemoved(args.AbilityUnit); // } // }; // } // else // { // this.AbilityManager.Value.UnitAdded += args => // { // if (args.AbilityUnit.IsCreep && args.AbilityUnit.SourceUnit.IsControllable) // { // unitModule.Value.UnitAdded(args.AbilityUnit); // if (!hasUnit) // { // unitModule.Value.OnLoad(); // this.ModuleActivated.Next(unitModule.Value); // this.ActiveModules.Add(unitModule.Value); // Console.WriteLine( // "loading unitModule " + unitModule.Metadata.UnitNames.First() + "..."); // hasUnit = true; // this.AbilityManager.Value.UnitRemoved += args2 => // { // if (args2.AbilityUnit.IsCreep && args2.AbilityUnit.SourceUnit.IsControllable) // { // unitModule.Value.UnitRemoved(args2.AbilityUnit); // } // }; // } // } // }; // } // } foreach (var abilityUtilityModule in this.AbilityUtilityModules) { abilityUtilityModule.Value.LocalHero = this.AbilityManager.Value.LocalHero; if (abilityUtilityModule.Value.LoadOnGameStart) { abilityUtilityModule.Value.OnLoad(); this.ActiveModules.Add(abilityUtilityModule.Value); this.ModuleActivated.Next(abilityUtilityModule.Value); } } if (!this.ActiveModules.Any()) { DelayAction.Add(100, () => AbilityBootstrapper.Close()); } }
static void Main(string[] args) { AbilityBootstrapper.Load(); }