Example #1
0
    public int CalculateRandomWeaponDamageValue(WeaponDataSO weaponData)
    {
        Debug.Log("WeaponLogic.CalculateRandomWeaponDamageValue() called...");
        int randomAttackDamage = Random.Range(weaponData.weaponMinDamage, weaponData.weaponMaxDamage + 1);

        Debug.Log("Random damage from " + weaponData.weaponName + " between min/max damage values " + weaponData.weaponMinDamage + "/" + weaponData.weaponMaxDamage + " is " + randomAttackDamage.ToString());
        return(randomAttackDamage);
    }
Example #2
0
 // Initialization / Setup
 public void SetWeapon(WeaponDataSO data)
 {
     Debug.Log("SetWeapon() called....");
     myWeaponData       = data;
     nameText.text      = data.weaponName;
     rangeText.text     = data.weaponRange.ToString();
     minDamageText.text = data.weaponMinDamage.ToString();
     maxDamageText.text = data.weaponMaxDamage.ToString();
     myImage.sprite     = data.weaponImage;
 }
    public WeaponDataSO GetWeaponByName(string name)
    {
        WeaponDataSO weaponReturned = null;

        foreach (WeaponDataSO weapon in allWeapons)
        {
            if (name == weapon.weaponName)
            {
                weaponReturned = weapon;
            }
        }

        if (weaponReturned == null)
        {
            Debug.Log("WeaponLibrary.GetWeaponByName() failed to find a weapon with the name: " + name + ", returning null....");
        }

        return(weaponReturned);
    }
Example #4
0
    public void AssignWeaponToEntity(LivingEntity entity, WeaponDataSO weaponData)
    {
        Debug.Log("Assigning weapon '" + weaponData.weaponName + "' to " + entity.name);

        if (weaponData.weaponType == WeaponDataSO.WeaponType.Ranged)
        {
            entity.myRangedWeapon = weaponData;
            if (entity.GetComponent <Defender>())
            {
                if (entity.GetComponent <Defender>().myRangedWeaponSlot != null)
                {
                    entity.GetComponent <Defender>().myRangedWeaponSlot.SetWeapon(weaponData);
                }
            }
            else if (entity.GetComponent <Enemy>())
            {
                entity.GetComponent <Enemy>().myInfoPanel.SetWeaponTab(entity.GetComponent <Enemy>().myInfoPanel.rangedWeaponTab, weaponData);
            }
        }

        if (weaponData.weaponType == WeaponDataSO.WeaponType.Melee)
        {
            entity.myMeleeWeapon = weaponData;
            if (entity.GetComponent <Defender>())
            {
                if (entity.GetComponent <Defender>().myMeleeWeaponSlot != null)
                {
                    entity.GetComponent <Defender>().myMeleeWeaponSlot.SetWeapon(weaponData);
                }
            }

            else if (entity.GetComponent <Enemy>())
            {
                entity.GetComponent <Enemy>().myInfoPanel.SetWeaponTab(entity.GetComponent <Enemy>().myInfoPanel.meleeWeaponTab, weaponData);
            }
        }
    }
Example #5
0
 public void Setup(WeaponDataSO data)
 {
     sphereCollider.radius = data.Range * 2f;
 }
 public void SetWeaponTab(WeaponSlot slot, WeaponDataSO weapon)
 {
     slot.gameObject.SetActive(true);
     slot.SetWeapon(weapon);
 }
 public void Setup(WeaponAimController weaponAimController, WeaponDataSO weaponData)
 {
     WeaponAimController = weaponAimController;
     WeaponData          = weaponData;
 }
    // Logic + Events
    #region
    public void StartNewShowHitChanceEvent(LivingEntity target, LivingEntity attacker = null, Ability abilityUsed = null, WeaponDataSO weaponUsed = null)
    {
        // Disable modifiers from previous target
        DisableAllModifierObjects();

        // Enable panel view
        SetVisibility(true);

        // Move panel to the right of the target
        MoveToEntityPosition(target);

        // Calculate and set hit chance text
        hitChanceText.text = CombatLogic.Instance.CalculateHitChance(attacker, target).ToString();

        // Get target data and set modifier views
        EnableAndSetTargetDefenseModifier(target);
        if (PositionLogic.Instance.IsTargetInFullCover(attacker, target))
        {
            EnableTargetFullCoverModifier();
        }
        else if (PositionLogic.Instance.IsTargetInHalfCover(attacker, target))
        {
            EnableTargetHalfCoverModifier();
        }

        // Get attacker data and set modifier views
        EnableAndSetAttackerAimModifier(attacker);
        EnableAndSetAttackerEntrenchedModifier(attacker);
        EnableAndSetAttackerDeadEyeModifier(attacker);
    }