コード例 #1
0
    public override void SpecialDieEvents(EnemyPiece _enemy)
    {
        // Don't spawn if pawn already.
        if (_enemy.MovementType == GridType.Pawn)
        {
            return;
        }

        EnemyUnit unit = EnemyUnit.SlimePawn;

        // Spawn two more slimes.
        // Try up down left right.
        int numSpawned = 0;

        // Left
        if (DungeonManager.Instance.IsCellEmpty(_enemy.PosX - 1, _enemy.PosY))
        {
            EnemyPiece.Spawn(_enemy.PosX - 1, _enemy.PosY, unit);
            numSpawned++;
            if (numSpawned >= 2)
            {
                return;
            }
        }

        // Right
        if (DungeonManager.Instance.IsCellEmpty(_enemy.PosX + 1, _enemy.PosY))
        {
            EnemyPiece.Spawn(_enemy.PosX + 1, _enemy.PosY, unit);
            numSpawned++;
            if (numSpawned >= 2)
            {
                return;
            }
        }

        // Up
        if (DungeonManager.Instance.IsCellEmpty(_enemy.PosX, _enemy.PosY + 1))
        {
            EnemyPiece.Spawn(_enemy.PosX, _enemy.PosY + 1, unit);
            numSpawned++;
            if (numSpawned >= 2)
            {
                return;
            }
        }

        // Down
        if (DungeonManager.Instance.IsCellEmpty(_enemy.PosX, _enemy.PosY - 1))
        {
            EnemyPiece.Spawn(_enemy.PosX, _enemy.PosY - 1, unit);
            numSpawned++;
            if (numSpawned >= 2)
            {
                return;
            }
        }
    }
コード例 #2
0
    private void GenerateNPlaceEnemies()
    {
        int numBlack, numStone, numSlime, numGlass, numGold, numCursed;

        if (FloorNumber < 5)
        {
            numBlack  = 10 - FloorNumber;
            numStone  = FloorNumber;
            numSlime  = 0;
            numGlass  = 0;
            numGold   = 0;
            numCursed = 0;
        }
        else if (FloorNumber < 15)
        {
            numBlack  = Random.Range(1, 7);
            numStone  = Random.Range(1, 11);
            numSlime  = 0;
            numGlass  = Random.Range(1, 5);
            numGold   = Random.Range(0, 3);
            numCursed = 0;
        }
        else if (FloorNumber < 25)
        {
            numBlack  = Random.Range(1, 8);
            numStone  = Random.Range(1, 11);
            numSlime  = Random.Range(1, 4);
            numGlass  = Random.Range(1, 5);
            numGold   = Random.Range(0, 4);
            numCursed = 0;
        }
        else
        {
            // Scale the range accordingly to each floor level.
            numBlack  = Random.Range(FloorNumber - 24, FloorNumber - 17);
            numStone  = Random.Range(FloorNumber - 24, FloorNumber - 11);
            numSlime  = Random.Range(FloorNumber - 24, FloorNumber - 20);
            numGlass  = Random.Range(FloorNumber - 24, FloorNumber - 20);
            numGold   = Random.Range(FloorNumber - 25, FloorNumber - 20);
            numCursed = Random.Range(FloorNumber - 25, FloorNumber - 24);
        }

        int[] spawnNums = { numBlack, numStone, numSlime, numGlass, numGold, numCursed };
        for (int iType = 0; iType < spawnNums.Length; iType++)
        {
            int numEnemiesSpawned = 0;

            while (numEnemiesSpawned < spawnNums[iType])
            {
                int posX = Random.Range(1, DungeonManager.Instance.SizeX - 2);
                int posY = Random.Range(1, DungeonManager.Instance.SizeY - 2);

                if (DungeonManager.Instance.IsCellEmpty(posX, posY) &&
                    DungeonManager.Instance.IsPlayerPos(posX, posY) == false)
                {
                    EnemyPiece.Spawn(posX, posY, (EnemyUnit)Random.Range(5 * iType, 5 * (iType + 1)));
                    numEnemiesSpawned++;
                }
            }
        }
    }
コード例 #3
0
    public static EnemyPiece Spawn(int _posX, int _posY, EnemyUnit enemyType)
    {
        EnemyPiece curPiece = null;

        switch (enemyType)
        {
        case EnemyUnit.BlackPawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Black);
            break;

        case EnemyUnit.BlackRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Black);
            break;

        case EnemyUnit.BlackBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Black);
            break;

        case EnemyUnit.BlackKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Black);
            break;

        case EnemyUnit.BlackKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Black);
            break;

        case EnemyUnit.StonePawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Stone);
            break;

        case EnemyUnit.StoneRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Stone);
            break;

        case EnemyUnit.StoneBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Stone);
            break;

        case EnemyUnit.StoneKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Stone);
            break;

        case EnemyUnit.StoneKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Stone);
            break;

        case EnemyUnit.SlimePawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Slime);
            break;

        case EnemyUnit.SlimeRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Slime);
            break;

        case EnemyUnit.SlimeBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Slime);
            break;

        case EnemyUnit.SlimeKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Slime);
            break;

        case EnemyUnit.SlimeKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Slime);
            break;

        case EnemyUnit.GlassPawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Glass);
            break;

        case EnemyUnit.GlassRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Glass);
            break;

        case EnemyUnit.GlassBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Glass);
            break;

        case EnemyUnit.GlassKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Glass);
            break;

        case EnemyUnit.GlassKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Glass);
            break;

        case EnemyUnit.GoldPawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Gold);
            break;

        case EnemyUnit.GoldRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Gold);
            break;

        case EnemyUnit.GoldBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Gold);
            break;

        case EnemyUnit.GoldKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Gold);
            break;

        case EnemyUnit.GoldKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Gold);
            break;

        case EnemyUnit.CursedPawn:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Pawn, EnemyType.Cursed);
            break;

        case EnemyUnit.CursedRook:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Rook, EnemyType.Cursed);
            break;

        case EnemyUnit.CursedBishop:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Bishop, EnemyType.Cursed);
            break;

        case EnemyUnit.CursedKnight:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.Knight, EnemyType.Cursed);
            break;

        case EnemyUnit.CursedKing:
            curPiece = EnemyPiece.Spawn(_posX, _posY, 1, GridType.King, EnemyType.Cursed);
            break;

        default:
            Debug.LogError("No enemyType handling found");
            break;
        }

        return(curPiece);
    }