/// <summary>
 /// Crée une nouvelle altération d'état à partir du modèle donné.
 /// La durée restante de l'altération d'état est déterminée à partir
 /// de la durée contenue dans le modèle d'altération d'état donné.
 /// </summary>
 public StateAlteration(string id, EntityBase source, StateAlterationModel model, StateAlterationParameters parameters, StateAlterationSource sourceType)
 {
     ID            = id;
     Parameters    = parameters;
     Source        = source;
     Model         = model;
     SourceType    = sourceType;
     RemainingTime = model.GetDuration(source);
 }
Esempio n. 2
0
        /// <summary>
        /// Si Type contient Dash : obtient direction du dash.
        /// </summary>
        /// <param name="caster">Entité ayant lancé le sort qui provoque le dash.</param>
        /// <param name="source">Entité subissant le dash.</param>
        /// <param name="target">Si le dash est targetté, entité vers laquelle le dash doit se diriger</param>
        public Vector2 GetDashDirection(EntityBase caster, EntityBase source, StateAlterationParameters parameters)
        {
            Vector2 direction;

            switch (DashDirType)
            {
            case Entities.DashDirectionType.TowardsEntity:
                if (parameters.DashTargetEntity == null)
                {
#if DEBUG
                    GameServer.GetBattleLog().AddError("StateAlterationModel.GetDashDirection : target null & DashDirectionType == TowardsEntity");
                    // throw new Exception("StateAlterationModel.GetDashDirection : target null & DashDirectionType == TowardsEntity");
#endif
                    return(Vector2.Zero);
                }

                direction = parameters.DashTargetEntity.Position - source.Position;
                direction = normalize(direction);
                return(direction);

            case DashDirectionType.TowardsSpellPosition:
                direction = parameters.DashTargetPosition - source.Position;
                direction = normalize(direction);
                return(direction);

            case Entities.DashDirectionType.Direction:

                direction = parameters.DashTargetDirection;
                direction = normalize(direction);
                return(direction);

            case Entities.DashDirectionType.BackwardsCaster:
                direction = source.Position - caster.Position;
                direction = normalize(direction);
                return(direction);
            }

            return(Vector2.Zero);
        }