示例#1
0
        /// <summary>
        ///     The create new unit.
        /// </summary>
        /// <param name="unit">
        ///     The unit.
        /// </param>
        /// <returns>
        ///     The <see cref="IAbilityUnit" />.
        /// </returns>
        public IUncontrollableUnit CreateNewUnit(Unit unit, IAbilityTeam team)
        {
            IUncontrollableUnit abilityUnit;

            if (unit.Team == GlobalVariables.EnemyTeam)
            {
                abilityUnit = new Enemy(unit);
            }
            else
            {
                abilityUnit = new Ally(unit);
            }

            team.UnitManager.AddUnit(abilityUnit);
            var composer =
                this.UnitComposers.FirstOrDefault(x => x.Metadata.ClassIds.Contains(abilityUnit.SourceUnit.ClassId));

            if (composer != null)
            {
                composer.Value.Compose(abilityUnit);
            }
            else
            {
                this.unitComposer.Compose(abilityUnit);
            }

            return(abilityUnit);
        }
示例#2
0
        public TeamEntry(IAbilityTeam team, IUserInterfaceElement parent)
        {
            this.Team              = team;
            this.Parent            = parent;
            this.teamNameBg.Size   = new Vector2(parent.Size.X, HUDInfo.GetHpBarSizeY() * 2);
            this.teamName.Text     = team.Name.ToString();
            this.teamName.TextSize = new Vector2(this.teamNameBg.Size.Y);
            this.hideButton        = new Button(
                new Vector2(this.teamNameBg.Size.Y),
                new Vector2(this.teamNameBg.Size.X - this.teamNameBg.Size.Y, 0),
                "-",
                Color.White,
                this,
                () =>
            {
                this.drawElements = !this.drawElements;
                if (this.drawElements)
                {
                    this.hideButton.Text = "-";
                }
                else
                {
                    this.hideButton.Text = "+";
                }

                this.UpdateSize();
            });

            // foreach (var abilityUnit in this.Team.UnitManager.Units)
            // {
            // this.unitEntries.Add(abilityUnit.Key, new UnitEntry(abilityUnit.Value, this));
            // }
            this.Team.UnitManager.UnitAdded.Subscribe(
                new DataObserver <IAbilityUnit>(
                    unit =>
            {
                this.unitEntries.Add(unit.UnitHandle, new UnitOverlayEntry(unit, this));
                this.UpdateSize();
            }));
            this.Team.UnitManager.UnitRemoved.Subscribe(
                new DataObserver <IAbilityUnit>(
                    unit =>
            {
                this.unitEntries.Remove(unit.UnitHandle);
                this.UpdateSize();
            }));
            this.UpdateSize();
        }
示例#3
0
        /// <summary>
        ///     The create new controllable unit.
        /// </summary>
        /// <param name="unit">
        ///     The unit.
        /// </param>
        /// <returns>
        ///     The <see cref="IControllableUnit" />.
        /// </returns>
        public IControllableUnit CreateNewControllableUnit(Unit unit, IAbilityTeam team)
        {
            IControllableUnit controllableUnit;

            if (unit is Hero)
            {
                if (unit.Handle.Equals(GlobalVariables.LocalHero.Handle))
                {
                    controllableUnit = new LocalHero(unit);
                }
                else if (unit is Meepo)
                {
                    controllableUnit = new ControllableMeepo(unit);
                }
                else
                {
                    controllableUnit = new ControllableHero(unit);
                }
            }
            else
            {
                controllableUnit = new ControllableCreep(unit);
            }

            team.UnitManager.AddUnit(controllableUnit);
            var composer =
                this.UnitComposers.FirstOrDefault(
                    x => x.Metadata.ClassIds.Contains(controllableUnit.SourceUnit.ClassId));

            if (composer != null)
            {
                composer.Value.Compose(controllableUnit);
            }
            else
            {
                this.unitComposer.Compose(controllableUnit);
            }

            return(controllableUnit);
        }
 public UnitManager(IAbilityTeam team)
 {
     this.Team = team;
 }
示例#5
0
        /// <summary>
        ///     The create new unit.
        /// </summary>
        /// <param name="unit">
        ///     The unit.
        /// </param>
        /// <returns>
        ///     The <see cref="IAbilityUnit" />.
        /// </returns>
        public IAbilityUnit CreateNewUnit(Unit unit, IAbilityTeam team, IAbilityUnit owner = null)
        {
            IAbilityUnit abilityUnit;

            if (unit is Hero)
            {
                if (unit.Handle.Equals(GlobalVariables.LocalHero.Handle))
                {
                    abilityUnit = new LocalHero(unit);
                }
                else if (unit is Meepo)
                {
                    abilityUnit = new AbilityUnitMeepo(unit as Meepo);
                }
                else
                {
                    abilityUnit = new AbilityHero(unit);
                }
            }
            else
            {
                abilityUnit = new AbilityCreep(unit);
            }

            team.UnitManager.AddUnit(abilityUnit);

            if (owner != null)
            {
                abilityUnit.Owner = owner;
            }

            if (abilityUnit.IsHero)
            {
                var composer =
                    this.UnitHeroComposers.FirstOrDefault(
                        x => x.Metadata.HeroIds.Contains((uint)(abilityUnit.SourceUnit as Hero).HeroId));

                if (composer != null)
                {
                    composer.Value.Compose(abilityUnit);
                }
                else
                {
                    this.unitComposer.Compose(abilityUnit);
                }

                return(abilityUnit);
            }

            var unitcomposer = this.UnitComposers.FirstOrDefault(x => x.Metadata.UnitNames.Contains(abilityUnit.Name));

            if (unitcomposer != null)
            {
                unitcomposer.Value.Compose(abilityUnit);
            }
            else
            {
                this.unitComposer.Compose(abilityUnit);
            }

            return(abilityUnit);
        }
示例#6
0
 internal UnitManager(IAbilityTeam team)
 {
     this.Team = team;
 }