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