Exemplo n.º 1
0
    public static void HandleEffect(FieldManager field, SkillCast skillCast, int attackIndex)
    {
        skillCast.EffectCoords = GetEffectCoords(skillCast, field.MapId, attackIndex);

        field.AddRegionSkillEffect(skillCast);

        Task removeEffectTask = RemoveEffects(field, skillCast);

        if (skillCast.Interval <= 0)
        {
            HandleRegionSkill(field, skillCast);
            VibrateObjects(field, skillCast);
            return;
        }

        // Task to loop trough all entities in range to do damage/heal
        Task.Run(async() =>
        {
            while (!removeEffectTask.IsCompleted)
            {
                HandleRegionSkill(field, skillCast);
                VibrateObjects(field, skillCast);

                // TODO: Find the correct delay for the skill
                await Task.Delay(skillCast.Interval);
            }
        });
    }