/// <summary>
        ///     Spawns a single room and its walls
        /// </summary>
        /// <param name="position">The position of the room on the grid</param>
        /// <param name="roomType">The type of the room</param>
        /// <returns>The new room</returns>
        private GameObject SpawnRoom(Vector2Int position, RoomType roomType)
        {
            GameObject newRoom = MonoBehaviour.Instantiate(this.typeToPrefabs[roomType].GetRandomItem(), this.roomParent);

            // Set room position
            newRoom.transform.position = new Vector3(
                position.x * this.roomSize.x,
                0.0f,
                position.y * this.roomSize.y);

            List <GameObject> walls = this.AddWalls(newRoom, position);

            // Define the floor transition position
            if (roomType == RoomType.Boss)
            {
                this.floorTransitionBlockingWall = walls.GetRandomItem();

                // Unparent it, so it doesn't cause any trouble later on
                this.floorTransitionBlockingWall.transform.parent = this.roomParent;
            }

            ActivityHandler.Add(newRoom.GetComponentsInChildren <Light>());

            return(newRoom);
        }
示例#2
0
        /// <summary>
        ///     Spawns a boss at all a Boss spawn point
        /// </summary>
        private void SpawnBoss()
        {
            GameObject bossSpawnPoint = GameObject.FindGameObjectWithTag(DungeonGenerator.BossSpawnPointTag);

            EnemyDriver boss = MonoBehaviour.Instantiate(this.bossPrefabs.GetRandomItem(), this.entityParent);

            boss.transform.position = bossSpawnPoint.transform.position;

            boss.battleDriver.Level = Mathf.FloorToInt(this.EntityLevel * DungeonGenerator.BossLevelMultiplier);

            ActivityHandler.Add(boss.gameObject);

            MonoBehaviour.Destroy(bossSpawnPoint);
        }
示例#3
0
        /// <summary>
        ///     Spawns and returns an enemy
        /// </summary>
        /// <param name="position">The position to spawn at</param>
        /// <param name="leaderEnemy">The leader</param>
        /// <param name="followEnemy">The enemy to follow</param>
        /// <returns>The newly spawned enemy</returns>
        private EnemyDriver SpawnEnemy(Vector3 position, ref EnemyDriver leaderEnemy, ref EnemyDriver followEnemy)
        {
            EnemyDriver newEnemy = MonoBehaviour.Instantiate(this.enemyPrefabs.GetRandomItem(), this.entityParent);

            newEnemy.transform.position = position + this.GetRandomEntityOffset();

            newEnemy.battleDriver.Level = this.EntityLevel;

            newEnemy.SetLeaderAndFollowing(leaderEnemy, followEnemy);

            if (leaderEnemy == null)
            {
                leaderEnemy = newEnemy;
            }
            followEnemy = newEnemy;

            ActivityHandler.Add(newEnemy.gameObject);

            return(newEnemy);
        }