public bool CanAfford(GameManagerScript gmScript)
        {
            if (SoulsCost < 0)
            {
                if (!(gmScript.Souls + SoulsCost >= 0))
                {
                    Debug.Log("Can't afford Souls");
                    return false;
                }
            }

            if (PeopleCost < 0)
            {
                if (!(gmScript.People + PeopleCost >= 0))
                {
                    Debug.Log("Can't afford People");
                    return false;
                }
            }

            if (MoneyCost < 0)
            {
                if (!(gmScript.Money + MoneyCost >= 0))
                {
                    Debug.Log("Can't afford Money");
                    return false;
                }
            }

            if (InfCost < 0)
            {
                if (!(gmScript.Inf + InfCost >= 0))
                {
                    Debug.Log("Can't afford Influence");
                    return false;
                }
            }

            if (NotCost < 0)
            {
                if (!(gmScript.Not + NotCost >= 0))
                {
                    Debug.Log("Can't afford Notoriety");
                    return false;
                }
            }

            return true;
        }
        public override void Action(GameManagerScript gameManager, GridScript grid, TileInformation tile)
        {
            if (tile != _tile) return;

            var tileList = grid.TileList;
            var tileScript = grid.TileList.FirstOrDefault(x => x.TileInformation == tile);

            if (tileScript != null)
            {
                if (tileScript.Y%2 == 0)
                {
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 0))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 0);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X + 1 && ts.Y == tileScript.Y + 0))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X + 1 && ts.Y == tileScript.Y + 0);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y + 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y + 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                }
                else
                {
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 0))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y + 0);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X + 0 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                    if (tileList.Any(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1))
                    {
                        var buffTile = tileList.First(ts => ts.X == tileScript.X - 1 && ts.Y == tileScript.Y - 1);
                        buffTile.TileInformation.DeltaInf *= 2;
                        buffTile.TileInformation.DeltaMoney *= 2;
                    }
                }
            }

        }
 public override void Action(GameManagerScript gameManager, GridScript grid, TileInformation tile)
 {
     tile.AreActionsEnabled = true;
 }
 public override bool CanUse(GameManagerScript gameManager, GridScript grid, TileInformation tile)
 {
     return true;
 }
        public override void Action(GameManagerScript gameManager, GridScript grid, TileInformation tile)
        {
            gameManager.Souls += 3;

            gameManager.People -= 3;
            gameManager.Not += 1;

            tile.AreActionsEnabled = false;
        }
 public override bool CanUse(GameManagerScript gameManager, GridScript grid, TileInformation tile)
 {
     return gameManager.People >= 3;
 }
        public override void Action(GameManagerScript gameManager, GridScript grid, TileInformation tile)
        {
            if (_tile.BonusReceived) return;

            var neighbours = grid.GetNeighbours(grid.TileList.First(t => t.TileInformation == _tile));

            var influenceCount = 0;
            foreach (var neighbour in neighbours)
            {
                influenceCount += neighbour.TileInformation.DeltaInf;
                influenceCount -= neighbour.TileInformation.DeltaNot;
            }

            if (influenceCount >= 10)
            {
                Debug.Log("Got Bonus!!!!");

                _tile.BonusReceived = true;
                gameManager.People += 10;
            }
        }
 public abstract void Action(GameManagerScript gameManager, GridScript grid, TileInformation tile);
 public abstract bool CanUse(GameManagerScript gameManager, GridScript grid, TileInformation tile);