void SetupScene(int level) { Debug.Log("Setup level " + level); var config = pool.config; var gameBoard = pool.gameBoard; if (config.columns != gameBoard.columns || config.rows != gameBoard.rows) { // Update gameboard to match the current config pool.ReplaceGameBoard(config.columns, config.rows); gameBoard = pool.gameBoard; } //Creates the outer walls and floor. BoardSetup(gameBoard); ResetGridPositions(gameBoard); LayoutObjectAtRandom(WALLS, config.wallCountMin, config.wallCountMax, (e, i, ri) => { e.AddDestructible(4); e.AddDamageSprite(DAMAGED_WALLS[ri]); }); LayoutObjectAtRandom(FOOD, config.foodCountMin, config.foodCountMax, (e, i, ri) => { bool soda = e.resource.prefab == Prefab.Soda; int points = soda ? config.sodaPoints : config.foodPoints; var audio = soda ? new [] { Audio.scavengers_soda1, Audio.scavengers_soda2 } : new [] { Audio.scavengers_fruit1, Audio.scavengers_fruit2 }; e.AddFood(points); e.AddAudioPickupSource(audio); }); int enemyCount = Mathf.FloorToInt(Mathf.Log(level, 2f)) * config.enemyCountMultiplier; LayoutObjectAtRandom(ENEMIES, enemyCount, enemyCount, (e, i, ri) => { bool enemy1 = e.resource.prefab == Prefab.Enemy1; int dmg = enemy1 ? config.enemy1Dmg : config.enemy2Dmg; // start at 1 because 0 is reserved for player e.AddTurnBased(i + 1, config.turnDelay); e.isAIMove = true; e.AddFoodDamager(dmg); e.AddSmoothMove(config.turnDelay); e.AddAudioAttackSource(Audio.scavengers_enemy1, Audio.scavengers_enemy2); }); // Create exit var exit = pool.CreateEntity(); exit.AddResource(Prefab.Exit); exit.isExit = true; exit.isGameBoardElement = true; exit.isDeleteOnExit = true; exit.AddPosition(gameBoard.columns - 1, gameBoard.rows - 1); // Create player var player = pool.CreateEntity(); player.AddResource(Prefab.Player); player.isGameBoardElement = true; player.isDeleteOnExit = true; player.AddPosition(0, 0); player.AddSmoothMove(config.turnDelay); player.isControllable = true; player.AddTurnBased(0, config.turnDelay); player.isAIMoveTarget = true; player.AddAudioAttackSource(Audio.scavengers_chop1, Audio.scavengers_chop2); player.AddAudioDeathSource(Audio.scavengers_die); player.AddAudioWalkSource(Audio.scavengers_footstep1, Audio.scavengers_footstep2); }