nickmattinson / ZXYZ

Top-Down 2D Dungeon Crawler
1 stars 0 forks source link

TooHard #75

Closed MikeMMattinson closed 2 months ago

MikeMMattinson commented 2 months ago

This game, fix the following:

4 maps = GAME OBJECTIVE:

What is the final leaderboard score? (a) number of kills or (b) time to complete? Answer: b.

---FUTURE GAME___ Can player die and respawn? Answer: yes, back at single room with same defense and attack but health is reset to full health. Need to keep track of how many times player died. Leaderboard will show anyone that has completed the game and number of deaths.

git fetch origin
git checkout 75-toohard
MikeMMattinson commented 2 months ago
public void CalculateEnemyStats(int playerLevel, int playerScore, int playerAttack, int playerDefense,
    out int enemyLevel, out int enemyAttack, out int enemyDefense)
{
    // Initialize enemy stats to default values
    enemyLevel = 1;
    enemyAttack = 2;
    enemyDefense = 1;

    // Calculate base enemy level based on player level and score
    int baseEnemyLevel = Mathf.Clamp(playerLevel + Mathf.FloorToInt(playerScore / 100), 1, 7);

    // Add a random factor for enemy level variation (+/- 1)
    enemyLevel = Mathf.Clamp(baseEnemyLevel + Random.Range(-1, 3), 1, 7);

    // Calculate enemy attack and defense based on player attack and defense
    enemyAttack = Mathf.Clamp(playerAttack + (enemyLevel * 2), 2, 20);
    enemyDefense = Mathf.Clamp(playerDefense + (enemyLevel * 1), 1, 15);
}
MikeMMattinson commented 2 months ago
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class EnemySpawner : MonoBehaviour
{
    [SerializeField] List<Transform> enemySpawnPoints;
    [SerializeField] StateManager stateManager;
    [SerializeField] List<GameObject> enemies;
    protected int numberOfSpawns;
    private Player player;

    GameObject enemyRef;

    void Start()
    {
        stateManager = FindObjectOfType<StateManager>();
        int randomEnemyIndex;

        if (stateManager.gameEnded != true)
        {
            numberOfSpawns = enemySpawnPoints.Count;
            for (int i = 0; i < numberOfSpawns; i++)
            {
                //retrieving spawn point 
                Transform spawnPoint = enemySpawnPoints[i];

                if (i >= 0 && i < 3)  // First three spawn points
                {
                    // Randomly select between level 1 and level 2 enemy
                    randomEnemyIndex = Random.Range(0, 2); // 0 or 1
                }
                else
                {
                    // Randomly select from all available enemies for other spawn points
                    randomEnemyIndex = Random.Range(0, enemies.Count);
                }

                // Create enemy instance
                enemyRef = (GameObject)Resources.Load("Enemy");
                GameObject enemyInstance = Instantiate(enemyRef, spawnPoint.position, spawnPoint.rotation);
                Enemy enemyComponent = enemyInstance.GetComponent<Enemy>();

                // set player reference
                if (enemyComponent != null)
                {
                    enemyComponent.SetSpawnPosition(enemyComponent.transform.position);
                    //enemyComponent.SetPlayerReference(player);

                    if(i<3){
                        enemyComponent.SetRespawn(false);
                    }

                    // Get player reference
                    player = FindObjectOfType<Player>();

                    // Get a reference to the GameManager
                    GameManager gameManager = FindObjectOfType<GameManager>();

                    // Calculate enemy stats based on player stats
                    int playerLevel = player.GetLevel();
                    int playerScore = player.score;
                    int playerAttack = player.GetAttack();
                    int playerDefense = player.GetDefense();

                    int enemyLevel, enemyAttack, enemyDefense;

                    gameManager.CalculateEnemyStats(playerLevel, playerScore, playerAttack, playerDefense,
                        out enemyLevel, out enemyAttack, out enemyDefense);

                    // Set enemy stats
                    enemyComponent.SetLevel(enemyLevel);
                    enemyComponent.SetAttack(enemyAttack);
                    enemyComponent.SetDefense(enemyDefense);

                    // set enemy color and health
                    enemyComponent.SetCapability();
                }
                else
                {
                    Debug.LogWarning("Enemy component not found on instantiated enemy!");
                }
            }
        }
    }

    // Function to calculate enemy stats based on player stats

}