Beispiel #1
0
        // Perform volley skill
        // Note: This is another channelled spell. See Rain of Fire's comment above.
        public void performVolleySkill(int entityId, VolleySkill skill, Vector2 position)
        {
            PositionComponent positionComponent = EntityManager.getPositionComponent(entityId);
            PerformingSkillsComponent performingSkillsComponent = EntityManager.getPerformingSkillsComponent(entityId);
            FactionComponent factionComponent = EntityManager.getFactionComponent(entityId);
            ExecuteVolleySkill executeSkill = new ExecuteVolleySkill(
                skill,
                () =>
                {
                    PositionComponent checkPositionComponent = EntityManager.getPositionComponent(entityId);
                    PositionTargetComponent positionTargetComponent = EntityManager.getPositionTargetComponent(entityId);
                    float distance = Math.Abs(positionTargetComponent.position - checkPositionComponent.position.X);

                    return distance <= positionTargetComponent.tolerance + SKILL_RANGE_TOLERANCE;
                });

            EntityManager.addComponent(entityId, new PositionTargetComponent(entityId, positionComponent.position.X, 1f));
            EntityFactory.createVolleySpell(position, skill.width, skill.damageDie, skill.tickDelay, skill.tickCount, new List<Faction>(new[] { factionComponent.hostileFaction }));
            performingSkillsComponent.executingSkills.Add(executeSkill);
        }
Beispiel #2
0
 // Execute volley skill
 // Note: This is also a channelled spell. See rain of fire's comment above.
 private void executeVolley(int entityId, ExecuteVolleySkill executeSkill)
 {
     EntityManager.removeComponent(entityId, ComponentType.PositionTarget);
     resetCooldown(entityId, SkillType.Volley);
     removeExecutedSkill(entityId, executeSkill);
 }