/// <summary> /// Initialise la vie de l'acteur à sa valeur maximale donnée. /// Si showingLife est vrai, l'acteur affichera sa barre de vie au-dessus de lui un court instant lorsqu'elle /// est modifiée. /// </summary> /// <param name="position"> La position de l'acteur dans le monde </param> /// <param name="lifeMax"> La vie maximale de l'acteur </param> /// <param name="showingLife"> Indique si il faut afficher la vie de l'acteur. </param> public LivingActor(Point position, int lifeMax, bool showingLife = false) : base(position) { Life = new BoundedDouble(lifeMax); if (!showingLife) { return; } _lifeBar = new ProgressingSprite(ColorBar, EmptyBar, PercentMerge); _lifeSprite = new SpriteHandler(this, _lifeBar, new FadingTransparency(FadingMs)); }
/// <summary> /// Affiche l'acteur et sa barre de vie si son affichage a été demandé à la création de l'acteur. /// </summary> /// <param name="shift"> La position relative pour afficher l'acteur </param> /// <param name="g"> L'objet permettant de dessiner </param> public override void Draw(Point shift, Graphics g) { base.Draw(shift, g); if (_lifeSprite == null) { return; } if (Collision != null) { shift = shift + new Point(0, -Collision.Hitbox.Height * LifebarHeight); } _lifeSprite.Draw(shift + Position, g); }
/// <summary> /// Lorsque le sort est lancé, l'incantation de son possesseur commence, ce qui lance le type d'animation /// correspondant et lui interdit de lancer d'autres sort sdurant son incantation. Selon les données du sort, /// il est également rendu immobile. /// </summary> /// <param name="target"> La cible du sort </param> public virtual void Cast(Point target) { _currentMs = 0; _target = target; _owner.Orientation = _owner.Position.GetOrientation(target); _owner.LockCasts(); if (!_spellData.CanMove) { _owner.LockMoves(); } _owner.CreateState(StateData); (_owner.SpriteHandler as AnimationHandler)?. PlayAnimation(_spellData.AnimationType, false, _spellData.CastTimeMs); }
/// <summary> /// Indique si le sort peut être lancé par son possesseur. /// </summary> /// <param name="target"> La cible du sort </param> /// <returns> Vrai si le sort peut être lancé </returns> public virtual bool Castable(Point target) { return(!_owner.CastsLocked() && CurrentCharges >= 1); }