float CalculateDps(WeaponModuleBase wmb, WeaponModuleMagazine wmm, WeaponModuleCannon wmc) { float rate1 = wmb.data.rafaleRate * wmm.data.fireRateLimiter * (1.0f + (wmc.cannons.Length - 1.0f) * wmc.data.multiCannonFireRateLimiter); float rate2 = wmb.data.fireRate * wmm.data.fireRateLimiter * (1.0f + (wmc.cannons.Length - 1.0f) * wmc.data.multiCannonFireRateLimiter); float rate = (rate1 * (wmb.data.rafaleCount - 1.0f) + rate2) / wmb.data.rafaleCount; return((wmc.cannons.Length * damages) / rate); }
void GetMagazine(WeaponModuleMagazine[] wmm, int level) { for (int i = 0; i < wmm.Length; i++) { if (wmm[i].data.moduleLevel == level) { weaponModuleMagazine = wmm[i]; } } }
public override void SetUpItem() { base.SetUpItem(); weaponModuleBase = GetComponent <WeaponModuleBase>(); weaponModuleBase.SetUpItem(); weaponModuleMagazine = GetComponentInChildren <WeaponModuleMagazine>(); weaponModuleMagazine.SetUpItem(); weaponModuleCannon = GetComponentInChildren <WeaponModuleCannon>(); weaponModuleCannon.SetUpItem(); cameraShake = GameObject.FindObjectOfType <CameraShake>() as CameraShake; rgdBody.mass = weaponModuleBase.data.mass + weaponModuleMagazine.data.mass + weaponModuleCannon.data.mass * weaponModuleCannon.cannons.Length; float limiter = weaponModuleMagazine.data.fireRateLimiter * (1.0f + (weaponModuleCannon.cannons.Length - 1.0f) * weaponModuleCannon.data.multiCannonFireRateLimiter); rate1 = weaponModuleBase.data.rafaleRate * limiter; rate2 = weaponModuleBase.data.fireRate * limiter; dps = CalculateDps(); }