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); } }
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); }
/// <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); }