Exemplo n.º 1
0
 private void DoSkillEffect(int index, RLBaseActor user, RLBaseTile targetTile)
 {
     if (index < skillEffects.Length)
     {
         skillEffects[index].DoEffect(user, targetTile, () => { DoSkillEffect(index + 1, user, targetTile); });
     }
 }
Exemplo n.º 2
0
        private void ShowEffects(string[] effects, RLBaseActor actor, RLBaseTile target, Action onComplete)
        {
            RLVisualEffect.VisualEffectParams effectParams = new RLVisualEffect.VisualEffectParams()
            {
                From            = actor.GetTile(),
                Targets         = new List <RLBaseTile>(new[] { target }),
                ActorController = this
            };

            effectRenderer.ShowEffects(effects, effectParams, onComplete);
        }
Exemplo n.º 3
0
        public override void SetActor(RLBaseActor actor)
        {
            if (actor == Actor)
            {
                return;
            }
            Actor = actor;
            if (Actor != null)
            {
                if (Actor.GetTile() != null)
                {
                    Actor.GetTile().SetActor(null);
                }

                Actor.SetTile(this);
            }
        }
Exemplo n.º 4
0
 public override void OnUse(RLBaseActor user)
 {
     if (!isEquipped)
     {
         isEquipped = true;
         foreach (StatMod mod in statMods)
         {
             user.GetStats().AddModifier(mod);
         }
     }
     else
     {
         isEquipped = false;
         foreach (StatMod mod in statMods)
         {
             user.GetStats().RemoveModifier(mod);
         }
     }
 }
Exemplo n.º 5
0
        public bool IsTargetValid(RLBaseActor skillUser, RLBaseTile targetTile)
        {
            if (!IsTargetInRange(skillUser, targetTile))
            {
                return(false);
            }
            switch (Target)
            {
            case TargetType.None:
                return(false);

            case TargetType.Any:
                return(true);

            case TargetType.EmptyTile:
                return(!targetTile.GetTileType().BlocksMovement&& targetTile.GetActor() == null);

            case TargetType.Self:
                return(true);

            case TargetType.AnyCreature:
                return(targetTile.GetActor() != null);

            case TargetType.Enemy:
                return(targetTile.GetActor() != null && skillUser.IsEnemyOf(targetTile.GetActor()));

            case TargetType.Ally:
                return(targetTile.GetActor() != null && skillUser.IsAllyOf(targetTile.GetActor()));

            case TargetType.Custom:
                return(IsCustomTargetValid(skillUser, targetTile));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 6
0
        public virtual List <RLBaseTile> GetVisibleTilesForActor(RLBaseActor actor)
        {
            Vector2Int pos = new Vector2Int(actor.GetTile().GetDisplayPosition().x, actor.GetTile().GetDisplayPosition().y);

            return(GetVisibleTilesFromPosition(pos, actor.GetVisionRange(), actor.GetTile().Floor));
        }
Exemplo n.º 7
0
 public abstract void SetActor(RLBaseActor actor);
Exemplo n.º 8
0
 public virtual bool IsEnemyOf(RLBaseActor otherActor)
 {
     return(GetTeamId() != otherActor.GetTeamId());
 }
Exemplo n.º 9
0
 public override void DoEffect(RLBaseActor actor, RLBaseTile target, Action onComplete)
 {
     actor.ShowEffects(vfx, target, onComplete);
 }
Exemplo n.º 10
0
 public virtual bool IsTargetInRange(RLBaseActor skillUser, RLBaseTile targetTile)
 {
     return(range <= 0 || Vector3.Distance(skillUser.GetTile().GetDisplayPosition(), targetTile.GetDisplayPosition()) <= range);
 }
Exemplo n.º 11
0
 public abstract bool CanUse(RLBaseActor user);
Exemplo n.º 12
0
 public override bool ShowBehaviour(RLBaseActor user)
 {
     return(true);
 }
Exemplo n.º 13
0
 public override bool CanUse(RLBaseActor user)
 {
     return(true);
 }
Exemplo n.º 14
0
 public override void DoEffect(RLBaseActor user, RLBaseTile target, Action onComplete)
 {
     target.SetActor(user);
     onComplete();
 }
Exemplo n.º 15
0
 public abstract void DoEffect(RLBaseActor actor, RLBaseTile target, Action onComplete);
Exemplo n.º 16
0
 /**
  * If the skill needs custom targeting logic not covered by one of the enumerated cases in TargetType,
  * override this method to return true for valid targets.
  */
 protected virtual bool IsCustomTargetValid(RLBaseActor skillUser, RLBaseTile targetTile)
 {
     return(false);
 }
Exemplo n.º 17
0
 public abstract bool ShowBehaviour(RLBaseActor user);
Exemplo n.º 18
0
 public abstract void OnUse(RLBaseActor user);
Exemplo n.º 19
0
 public void DoSkill(RLBaseActor user, RLBaseTile targetTile)
 {
     DoSkillEffect(0, user, targetTile);
 }
Exemplo n.º 20
0
 public virtual bool IsAllyOf(RLBaseActor otherActor)
 {
     return(GetTeamId() == otherActor.GetTeamId());
 }
Exemplo n.º 21
0
 public void BindInventory(RLBaseActor actor)
 {
     actor.OnInventoryChanged = () => BindDataList(new List <RLBaseItem>(actor.GetInventory()));
     BindDataList(new List <RLBaseItem>(actor.GetInventory()));
 }
Exemplo n.º 22
0
 public void BindActor(RLBaseActor actor)
 {
     actor.ShowEffects       = (effects, target, onComplete) => ShowEffects(effects, actor, target, onComplete);
     actor.OnPositionChanged = () => transform.position = actor.GetTile().GetDisplayPosition();
 }