Ejemplo n.º 1
0
 public bool AddMonster(BaseMonster.MonTypes monType, Vector2 gridPos, int level = 1)
 {
     int i = 0;
     while (i < MaxMonsters && Monsters[i] != null)
     {
         i++;
     }
     if (i >= MaxMonsters) return false;
     if (monType == BaseMonster.MonTypes.Normal)
         Monsters[i] = new BadGuy(gridPos, i);
     else if (monType == BaseMonster.MonTypes.Static)
         Monsters[i] = new BadGuy(gridPos, i, type: BodyType.Static);
     return true;
 }
Ejemplo n.º 2
0
 private void ScreamHelper(BaseMonster mon, int X, int Y, int currDist, int MaxDist, Func<List<BaseTile>, bool> traversable)
 {
     if (currDist >= MaxDist) return;
     BaseTile CurrTile = grid[X, Y][0];
     List<List<BaseTile>> columns = GetAdjColums(X, Y);
     for (int i = 0; i < columns.Count; i++)
     {
         if (traversable(columns[i]))
         {
             if (currDist < columns[i][0].dist)
             {
                 columns[i][0].dist = currDist;
                 columns[i][0].dirToShortest = CurrTile.GridPos;
                 DijkstrasAlgHelper((int)columns[i][0].GridPos.X, (int)columns[i][0].GridPos.Y, currDist + 1, MaxDist, traversable);
             }
         }
     }
 }
Ejemplo n.º 3
0
        //DijkstrasAlg
        public bool Scream(int X, int Y, int MaxDist, BaseMonster mon)
        {
            BaseTile CurrTile = grid[X, Y][0];
            Func<List<BaseTile>, bool> traversable = tileCol => tileCol.Count == 1;
            List<Vector2> retDirections = new List<Vector2>();
            for (int i = 0; i < MapWidth; i++)
            {
                for (int j = 0; j < MapHeight; j++)
                {
                    if (grid[i, j].Count != 0) grid[i, j][0].dist = int.MaxValue;
                }
            }
            CurrTile.dist = 0;

            DijkstrasAlgHelper(X, Y, 1, MaxDist, traversable);
            BaseMonster Listener;
            for (int i = 0; i < MapWidth; i++)
            {
                for (int j = 0; j < MapHeight; j++)
                {
                    Listener = Globals.Mobs.GetMobAt(i, j);
                    if (grid[i, j][0].dist != int.MaxValue && Listener != null && Listener.Listen(mon));
                }
            }
            return true;
        }
Ejemplo n.º 4
0
 internal void AddMonster(BaseMonster mon1, BaseMonster mon2)
 {
     Vector2? newPos = Globals.map.FindAtHeightFree((int)mon1.GridPos.X, (int)mon1.GridPos.Y, 1, 4);
     if (newPos == null) return;
     AddMonster(mon1.type, (Vector2)newPos);
 }
Ejemplo n.º 5
0
 public virtual bool Listen(BaseMonster mon)
 {
     return false;
 }