예제 #1
0
 /* Called every frame weapon is equipped */
 public void OnEquip(WeaponInventory inv, WeaponTables tables, WeaponFactory.CLASS weaponClass)
 {
     foreach (var sys in projSystems)
     {
         sys.OnEquip(inv, tables, weaponClass);
     }
 }
    public void setDescription(WeaponFactory.CLASS weaponClass)
    {
        string descr = tables.tagWeapon.get(weaponClass) == WeaponFactory.TAG.MELEE ? "Melee" : "Ranged";

        descr += " Damage: ";
        descr += tables.damage.get(weaponClass) + "\n";
        descr += tables.about.getDescr(weaponClass);

        if (tables.tagWeapon.get(weaponClass) == WeaponFactory.TAG.MELEE)
        {
            if (meleeInfo == null)
            {
                return;
            }
            meleeInfo.name        = tables.about.getName(weaponClass);
            meleeInfo.description = descr;
            meleeInfo.weaponClass = weaponClass;
        }
        else
        {
            if (rangeInfo == null)
            {
                return;
            }
            rangeInfo.name        = tables.about.getName(weaponClass);
            rangeInfo.description = descr;
            rangeInfo.weaponClass = weaponClass;
        }
    }
    public WeaponFactory.CLASS SetWeapon(WeaponFactory.CLASS weaponClass)
    {
        var weapon = new WeaponSystem(weaponClass, this.tables);

        WeaponFactory.CLASS old;
        if (equipSound)
        {
            audioSrc.clip = equipSound;
            audioSrc.Play();
        }
        if (tables.tagWeapon.get(weaponClass) == WeaponFactory.TAG.MELEE)
        {
            old = this.meleeWeaponClass;
            this.meleeWeaponClass = weaponClass;
            SetMelee(weapon);
        }
        else
        {
            old = this.rangedWeaponClass;
            this.rangedWeaponClass = weaponClass;
            SetRanged(weapon);
        }
        wepsGot++;
        return(old);
    }
예제 #4
0
    public void OnTriggerEnter2D(Collider2D collider)
    {
        WeaponInventory weaponInv = collider.GetComponent <WeaponInventory>();
        PlayerStats     pStats    = collider.GetComponent <PlayerStats>();

        if (weaponInv == null)
        {
            return;
        }

        /*
         * used = true;
         * weaponInv.SetWeapon(weaponClass);
         * transform.localScale *= 0.5f;
         *
         * PlayerPrefs.SetInt("Chests", PlayerPrefs.GetInt("Chests") + 1);
         * Destroy(descrInfo);
         *
         * this.enabled = false;
         */
        int currAmmo = pStats.ammo;

        weaponClass = weaponInv.SetWeapon(weaponClass);
        SetDescription();

        if (!used)
        {
            transform.localScale *= 0.5f;
            PlayerPrefs.SetInt("Chests", PlayerPrefs.GetInt("Chests") + 1);
            used = true;
            return;
        }
        pStats.safeSetAmmo(currAmmo);
    }
    public ProjectileStats constructProjectileStats(WeaponFactory.CLASS weaponClass)
    {
        //sets up assuming a ranged weapon
        var pStats = new ProjectileStats()
        {
            prefab     = bulletTemplate, damage = projectileDamage(weaponClass),
            lifeTime   = (weaponMods.projectileLifetimeAddition + projectileLifeTimesTable.get(weaponClass).Value) * weaponMods.projectileLifetimeMultiplier,
            ammoRefill = tables.ammoPerKill.get(weaponClass).Value
        };


        if (tables.tagWeapon.get(weaponClass) == WeaponFactory.TAG.MELEE)
        {
            //corrects if melee
            pStats.damage   = projectileDamage(weaponClass);
            pStats.lifeTime = projectileLifeTimesTable.get(weaponClass).Value;

            pStats.prefab = projectilePrefabTable.get(weaponClass);
            pStats.prefab.transform.localScale = Vector3.one * (1 + weaponMods.meleeSizeAddition) * weaponMods.meleeSizeMultiplier * 0.5f; //swordScale
            //Debug.Log("Scale: " + pStats.prefab.transform.localScale.ToString());
        }

        //pStats.lifeTime = projectileLifeTimesTable.get(weaponClass).Value;
        return(pStats);
    }
 public int projectileDamage(WeaponFactory.CLASS weaponClass)
 {
     if (tables.tagWeapon.get(weaponClass) == WeaponFactory.TAG.MELEE)
     {
         return((int)((damageTable.get(weaponClass).Value + weaponMods.meleeDamageAddition) * weaponMods.meleeDamageMultiplier));
     }
     return((int)((damageTable.get(weaponClass).Value + weaponMods.rangedDamageAddition) * weaponMods.rangedDamageMultiplier));
 }
예제 #7
0
    protected override void OnEquip(WeaponInventory inv)
    {
        this.duration = this.tables.revertTime.get(this.weaponClass).Value;

        equipTimeInstant = Time.time;
        this.entityStats = inv.GetComponent <EntityStats>();

        foreach (var entAttr in entityAttributes)
        {
            this.entityStats.AddAttribute(entAttr, entityStats);
        }
        preClassWeapon = inv.getMeleeWeaponClass();
    }
예제 #8
0
    public static ProjectileSystem[] DeriveSystems(WeaponFactory.CLASS weaponClass, WeaponTables tables)
    {
        var systems = new List <ProjectileSystem>();

        foreach (var makeMethod in WeaponFactory.makeSystemMethods)
        {
            var system = makeMethod(weaponClass, tables);

            if (system != null)
            {
                systems.Add(system);
            }
        }

        return(systems.ToArray());
    }
    private void Start()
    {
        audioSrc = GetComponent <AudioSource>();
        if (audioSrc == null)
        {
            audioSrc = gameObject.AddComponent <AudioSource>();
        }

        PlayerClasses PC = GetComponent <PlayerClasses>();

        PC.getMods(weaponMods);
        meleeWeaponClass  = PC.melee;
        rangedWeaponClass = PC.ranged;

        SetWeapon(this.meleeWeaponClass);
        SetWeapon(this.rangedWeaponClass);
    }
예제 #10
0
 public void updateWeaponDisplay()
 {
     if (weapInv != null)
     {
         WeaponFactory.CLASS meleeClass = weapInv.getMeleeWeaponClass();
         WeaponFactory.CLASS rangeClass = weapInv.getRangedWeaponClass();
         if (meleeClass == meleeMem && rangeClass == rangeMem)
         {
             return;
         }
         meleeSlot.sprite = weapInv.getWeaponImage(true);
         meleeLabel.text  = "" + tables.about.getName(meleeClass);
         setDescription(meleeClass);
         rangeSlot.sprite = weapInv.getWeaponImage(false);
         rangedLabel.text = "" + tables.about.getName(rangeClass);
         setDescription(rangeClass);
         meleeMem = meleeClass;
         rangeMem = rangeClass;
     }
 }
예제 #11
0
    public void setSpecialAttributes(PlayerClasses pc)
    {
        melee  = pc.melee;
        ranged = pc.ranged;

        chainLighting  = pc.chainLighting;
        chainChance    = pc.chainChance;
        chainLength    = pc.chainLength;
        lightingDamage = pc.lightingDamage;
        chainRadius    = pc.chainRadius;
        lightingPrefab = pc.lightingPrefab;

        lunge = pc.lunge;
        meleeLungeDistance  = pc.meleeLungeDistance;
        rangedLungeDistance = pc.rangedLungeDistance;

        killChain       = pc.killChain;
        killRequirement = pc.killRequirement;
        chainTime       = pc.chainTime;
        speedBoost      = pc.speedBoost;
    }
예제 #12
0
 public AudioClip getSound(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classSounds, (p) => p.weaponClass == weaponClass).clip);
 }
예제 #13
0
 public void SetWeaponClass(WeaponFactory.CLASS weaponClass)
 {
     this.weaponClass = weaponClass;
     SetDescription();
 }
 public GameObject get(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classPrefabPairs, (p) => p.weaponClass == weaponClass).prefab);
 }
예제 #15
0
 public Sprite get(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classSpritePairs, (p) => p.weaponClass == weaponClass).sprite);
 }
예제 #16
0
 public float getPitch(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classSounds, (p) => p.weaponClass == weaponClass).pitch);
 }
예제 #17
0
 public WeaponSystem(WeaponFactory.CLASS weaponClass, WeaponTables tables)
 {
     this.projSystems = WeaponFactory.DeriveSystems(weaponClass, tables);
 }
예제 #18
0
 public void OnEquip(WeaponInventory inv, WeaponTables tables, WeaponFactory.CLASS weaponClass)
 {
     this.weaponClass = weaponClass;
     this.tables      = tables;
     this.OnEquip(inv);
 }
예제 #19
0
 public int?get(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(classIntPairs, (p) => p.weaponClass == weaponClass)?.integer);
 }
예제 #20
0
 public string getName(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classDescrTrios, (p) => p.weaponClass == weaponClass).name);
 }
예제 #21
0
 public string getDescr(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classDescrTrios, (p) => p.weaponClass == weaponClass).description);
 }
 public float?get(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classFloatPairs, (p) => p.name == weaponClass)?.floatValue);
 }
 public WeaponFactory.TAG get(WeaponFactory.CLASS name)
 {
     return(System.Array.Find(pairs, (p) => p.name == name).tag);
 }
예제 #24
0
 public float getVolume(WeaponFactory.CLASS weaponClass)
 {
     return(System.Array.Find(this.classSounds, (p) => p.weaponClass == weaponClass).volume);
 }