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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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());
            }
        }
예제 #4
0
 static void Main(string[] args)
 {
     AbilityBootstrapper.Load();
 }