Пример #1
0
		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;
				}
			}
		}
Пример #2
0
		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;
			}

		}