void GetCannon(WeaponModuleCannon[] wmcx1, WeaponModuleCannon[] wmcx2, WeaponModuleCannon[] wmcx3, WeaponModuleCannon[] wmcx4, int level) { for (int i = 0; i < wmcx1.Length; i++) { if (wmcx1[i].data.moduleLevel == level) { float r = Random.Range(0.0f, 1.0f); if (r < cannonNumbersProbability.x) { weaponModuleCannon = wmcx1[i]; } else if (r < cannonNumbersProbability.x + cannonNumbersProbability.y) { weaponModuleCannon = wmcx2[i]; } else if (r < cannonNumbersProbability.x + cannonNumbersProbability.y + cannonNumbersProbability.z) { weaponModuleCannon = wmcx3[i]; } else { weaponModuleCannon = wmcx4[i]; } } } }
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); }
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(); }