Exemplo n.º 1
0
 public void InitializeAttributes()
 {
     weaponAttributes = GameManager.instance.WeaponAttributeDatabase.GetWeaponAttributes(this);
     foreach (WeaponAttribute attribute in weaponAttributes)
     {
         attribute.InitializeAttribute();
     }
     if (rarity == Rarity.Legendary)
     {
         specialWeaponAttribute = GameManager.instance.WeaponAttributeDatabase.GetSpecialWeaponAttribute(this);
         specialWeaponAttribute.InitializeAttribute(this);
     }
 }
Exemplo n.º 2
0
 public void LoadFromSave(WeaponSave save)
 {
     loaded      = true;
     this.rarity = save.rarity;
     for (int i = 0; i < colours.Length; i++)
     {
         colours[i] = new Color(save.colours[i].r, save.colours[i].g, save.colours[i].b);
     }
     WeaponAttribute[] temp = new WeaponAttribute[save.attributes.Length];
     for (int i = 0; i < temp.Length; i++)
     {
         temp[i] = new WeaponAttribute();
         temp[i].Create(save.attributes[i].type, save.attributes[i].value, this);
         temp[i].InitializeAttribute();
     }
     specialWeaponAttribute = GameManager.instance.WeaponAttributeDatabase.LoadSpecialWeaponAttribute(save.specialAttributeType);
     specialWeaponAttribute.InitializeAttribute(this);
     weaponAttributes = temp;
     OnLoad();
 }
Exemplo n.º 3
0
    public SpecialWeaponAttribute GetSpecialWeaponAttribute(Weapon weapon)
    {
        SpecialWeaponAttribute temp = null;

        bool found       = false;
        int  breakAmount = 10;

        int currentBreakAmount = 0;

        while (!found)
        {
            temp  = specialWeaponAttributes[Random.Range(0, specialWeaponAttributes.Length)];
            found = temp.CanAttachToWeapon(weapon);
            if (!found)
            {
                currentBreakAmount++;
            }
            if (currentBreakAmount >= breakAmount)
            {
                throw new System.Exception("Potential infinite loop stopped while selecting a special attribute");
            }
        }
        return(temp);
    }