Example #1
0
 public void Promote(IEnemyEnhancement enhancement)
 {
     maxHealth = enhancement.EnhanceMaxHealth(maxHealth);
     defense   = enhancement.EnhanceDefense(defense);
     minDamage = enhancement.EnhanceDamage(minDamage);
     maxDamage = enhancement.EnhanceDamage(maxDamage);
 }
Example #2
0
        GameObject Instantiate(Coord location, GameObject prefab, string name, IEnemyEnhancement enhancement = null)
        {
            GameObject enemyGO = Instantiate(prefab);

            enemyGO.name = name;
            enemyGO.transform.position = (Vector2)location;
            enemyGO.transform.parent   = transform;

            var ai                = enemyGO.GetComponent <EnemyAI>();
            var body              = enemyGO.GetComponent <EnemyBody>();
            var enemyStats        = enemyGO.GetComponent <EnemyStats>();
            var itemsOnDeath      = enemyGO.GetComponent <OnDeathDropItems>();
            var experienceOnDeath = enemyGO.GetComponent <OnDeathExperience>();

            var playerStats = player.GetComponent <PlayerStats>();

            ai.Initialize(Map, player, enemyStats, pathFinder);
            body.Initialize(enemyStats);
            itemsOnDeath.Initialize(itemFactory, ground);
            experienceOnDeath.Initialize(playerStats);

            if (enhancement != null)
            {
                experienceOnDeath.Experience = enhancement.EnhanceExperience(experienceOnDeath.Experience);
                enemyStats.Promote(enhancement);
            }

            return(enemyGO);
        }