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