void FindNextRocket() { if(selectedWeapon.Contains("Rocket")) { if(lastFiredSym!=null && lastFiredSym.partInfo.title == selectedWeapon) { foreach(RocketLauncher rl in lastFiredSym.FindModulesImplementing<RocketLauncher>()) { if(nextRocket!=null) nextRocket.drawAimer = false; rl.drawAimer = true; nextRocket = rl; return; } } else { foreach(RocketLauncher rl in vessel.FindPartModulesImplementing<RocketLauncher>()) { bool hasRocket = false; foreach(PartResource r in rl.part.Resources.list) { if(r.amount>0) hasRocket = true; else { rl.drawAimer = false; } } if(rl.part.partInfo.title == selectedWeapon && hasRocket) { if(nextRocket!=null) nextRocket.drawAimer = false; rl.drawAimer = true; nextRocket = rl; return; } } } } else { foreach(RocketLauncher rl in vessel.FindPartModulesImplementing<RocketLauncher>()) { rl.drawAimer = false; nextRocket = null; } } }
void FindNextRocket(RocketLauncher lastFired) { if(weaponIndex > 0 && selectedWeapon.GetWeaponClass() == WeaponClasses.Rocket) { disabledRocketAimers = false; //first check sym of last fired if(lastFired && lastFired.part.name == selectedWeapon.GetPart().name) { foreach(Part pSym in lastFired.part.symmetryCounterparts) { RocketLauncher rl = pSym.FindModuleImplementing<RocketLauncher>(); bool hasRocket = false; foreach(PartResource r in rl.part.Resources.list) { if(r.resourceName == rl.rocketType && r.amount > 0) { hasRocket = true; break; } } if(hasRocket) { if(currentRocket) currentRocket.drawAimer = false; rl.drawAimer = true; currentRocket = rl; selectedWeapon = currentRocket; return; } } } if(!lastFired && currentRocket && currentRocket.part.name == selectedWeapon.GetPart().name) { currentRocket.drawAimer = true; selectedWeapon = currentRocket; return; } //then check for other rocket bool foundRocket = false; foreach(RocketLauncher rl in vessel.FindPartModulesImplementing<RocketLauncher>()) { if(!foundRocket && rl.part.partInfo.title == selectedWeapon.GetPart().partInfo.title) { bool hasRocket = false; foreach(PartResource r in rl.part.Resources.list) { if(r.amount>0) hasRocket = true; else { rl.drawAimer = false; } } if(!hasRocket) continue; if(currentRocket != null) currentRocket.drawAimer = false; rl.drawAimer = true; currentRocket = rl; selectedWeapon = currentRocket; //return; foundRocket = true; } else { rl.drawAimer = false; } } } //not using a rocket, disable reticles. else if(!disabledRocketAimers) { foreach(RocketLauncher rl in vessel.FindPartModulesImplementing<RocketLauncher>()) { rl.drawAimer = false; currentRocket = null; } disabledRocketAimers = true; } }