Пример #1
0
 /// <summary>
 /// Does this tile type have an effect that triggers at the given event happening
 /// </summary>
 /// <param name="trigger">The event that happens on the tile</param>
 /// <returns>If an effect gets triggered</returns>
 public bool Contains(MoveTriggers trigger)
 {
     return(trigger == MoveTriggers.StartOfTurn && startOfTurn != null ||
            trigger == MoveTriggers.PassOver && passOver != null ||
            trigger == MoveTriggers.StopOnTile && stopOnTile != null ||
            trigger == MoveTriggers.EndOfTurn && endOfTurn != null);
 }
Пример #2
0
    /// <summary>
    /// Gets what effect should trigger when an event happens on this tile type
    /// </summary>
    /// <param name="trigger">The event that happened on the tile</param>
    /// <returns>The effect that triggers</returns>
    public ExecuteEffectEvent this[MoveTriggers trigger]
    {
        get
        {
            switch (trigger)
            {
            case MoveTriggers.StartOfTurn: return(new ExecuteEffectEvent(startOfTurn, null, null));

            case MoveTriggers.PassOver: return(new ExecuteEffectEvent(passOver, null, null));

            case MoveTriggers.StopOnTile: return(new ExecuteEffectEvent(stopOnTile, null, null));

            case MoveTriggers.EndOfTurn: return(new ExecuteEffectEvent(endOfTurn, null, null));
            }
            return(null);
        }
    }
Пример #3
0
    /// <summary>
    /// Gets what effects are triggered by a given action on a given tile
    /// </summary>
    /// <param name="pos">The position of the affected tile</param>
    /// <param name="trigger">The action that might trigger an effect</param>
    /// <returns></returns>
    public List <TileType> GetTileType(Vector2Int pos, MoveTriggers trigger)
    {
        List <TileType> effect = new List <TileType>();

        for (int i = 0; i < tileEffects.Count; i++)
        {
            if (tileEffects[i].First.x == pos.x && tileEffects[i].First.y == pos.y &&
                tileEffects[i].Third.Activatable() && tileEffects[i].Second.Contains(trigger))
            {
                effect.Add(tileEffects[i].Second);
                tileEffects[i].Third.Activated();
                if (tileEffects[i].Third.OutOfUses())
                {
                    tileEffects.RemoveAt(i);
                    i--;
                }
            }
        }
        return(effect);
    }