示例#1
0
        public LogicCharacter(LogicGameObjectData data, LogicLevel level, int villageType) : base(data, level, villageType)
        {
            LogicCharacterData characterData = (LogicCharacterData)data;

            this.m_flying = characterData.IsFlying();

            this.AddComponent(new LogicHitpointComponent(this, characterData.GetHitpoints(0), 0));
            this.AddComponent(new LogicCombatComponent(this));
            this.AddComponent(new LogicMovementComponent(this, characterData.GetSpeed(), characterData.IsFlying(), characterData.IsUnderground()));
            this.SetUpgradeLevel(0);

            int childTroopCount = characterData.GetChildTroopCount();

            if (childTroopCount > 0)
            {
                this.m_childrens = new LogicArrayList <LogicCharacter>(childTroopCount);

                for (int i = 0; i < childTroopCount; i++)
                {
                    LogicCharacter character = new LogicCharacter(characterData.GetChildTroop(), level, villageType);

                    character.SetTroopChild(this, i);
                    character.GetCombatComponent().SetTroopChild(true);

                    this.m_childrens.Add(character);
                    this.GetGameObjectManager().AddGameObject(character, -1);
                }
            }

            this.m_ejectPosition = new LogicVector2();
            this.m_summonTroops  = new LogicArrayList <LogicCharacter>();

            if (characterData.IsUnderground())
            {
                this.GetCombatComponent().SetUndergroundTime(3600000);
            }
        }
示例#2
0
        public LogicCharacter CreateDuplicateCharacter(LogicCharacterData data, int upgLevel, int x, int y)
        {
            LogicCharacter character = (LogicCharacter)LogicGameObjectFactory.CreateGameObject(data, this.m_level, this.m_villageType);

            character.SetUpgradeLevel(upgLevel);
            character.SetDuplicate(true, this.GetSpellData().GetDuplicateLifetime(this.m_upgradeLevel) / 64 + 1);
            character.SetInitialPosition(x, y);

            if (data.IsJumper())
            {
                character.GetMovementComponent().EnableJump(3600000);
                character.GetCombatComponent().RefreshTarget(true);
            }

            if (data.IsUnderground())
            {
                LogicCombatComponent combatComponent = character.GetCombatComponent();

                combatComponent.SetUndergroundTime(3600000);
                combatComponent.RefreshTarget(true);
            }

            if (LogicDataTables.IsSkeleton(data))
            {
                LogicCombatComponent combatComponent = character.GetCombatComponent();

                if (combatComponent != null)
                {
                    combatComponent.SetSkeletonSpell();
                }
            }

            this.GetGameObjectManager().AddGameObject(character, -1);
            // Listener.
            return(character);
        }
示例#3
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="LogicCharacter" /> class.
        /// </summary>
        public LogicCharacter(LogicData data, LogicLevel level, int villageType) : base(data, level, villageType)
        {
            LogicCharacterData characterData = (LogicCharacterData)data;

            this.AddComponent(new LogicHitpointComponent(this, characterData.GetHitpoints(0), 0));
            this.AddComponent(new LogicCombatComponent(this));
            this.AddComponent(new LogicMovementComponent(this, characterData.GetSpeed(), characterData.IsHealerTrigger(), characterData.IsUnderground()));
            this.SetUpgradeLevel(0);
        }