internal void DeploySecurity(EnemyProgram enemy, DungeonTile dungeonTile) { enemy.SetTile(dungeonTile); enemy.transform.position = dungeonTile.GetOccupyingCoordinates(enemy.IsFlying(), false); enemyPrograms.Add(enemy); dungeonTile.Occupy(enemy); }
private void Consume(EnemyProgram consumeTarget, List <DungeonTile> tempPath) { DungeonManager.instance.Wait(); Essence newEssence = Instantiate(myEssence, consumeTarget.transform.position, Quaternion.identity).GetComponent <Essence>(); newEssence.Harvest(consumeTarget); newEssence.SetCourse(tempPath, this); Invoke("AttemptConsume", consumeIntervalTime); }
internal List <EnemyProgram> GenerateEnemies(Vector3Int[] enemySpawns) { List <EnemyProgram> enemies = new List <EnemyProgram>(); foreach (Vector3Int spawn in enemySpawns) { EnemyProgram newProgram = Instantiate(enemyPrefabs[spawn.y]).GetComponent <EnemyProgram>(); enemies.Add(newProgram); DungeonManager.instance.DeploySecurity(newProgram, tileGrid[spawn.x][spawn.z]); } return(enemies); }
internal void DeployReinforcement(GameObject reinforcement) { DungeonTile targetTile = SelectRandomAdjacentTile(myTile); EnemyProgram newEnemy = Instantiate(reinforcement).GetComponent <EnemyProgram>(); if (targetTile != null && newEnemy != null) { DungeonManager.instance.DeploySecurity(newEnemy, targetTile); newEnemy.InitializeReinforcement(); } else { Destroy(newEnemy.gameObject); } }
internal void SelectConsumeTarget() { consumeTarget = null; foreach (EnemyProgram program in DungeonManager.instance.GetAIControlledPrograms()) { if (CanSee(program)) { if (program != this && (!consumeTarget || (DungeonManager.instance.grid.TileDistance(program.myTile, myTile) < DungeonManager.instance.grid.TileDistance(consumeTarget.myTile, myTile)))) { consumeTarget = program; Debug.Log("Consume Target selected"); } } } }
internal void Harvest(EnemyProgram consumeTarget) { if (consumeTarget.basePower > 0 && consumeTarget.basePower > consumeTarget.baseSpeed) { consumeTarget.basePower--; power++; } else if (consumeTarget.baseSpeed > 0) { consumeTarget.baseSpeed--; speed++; } consumeTarget.Damage(1); size++; }