void BioXASSSRLMonochromator::setMode(Mode::Value newMode)
{
	if (mode_ != newMode) {
		mode_ = newMode;
		updateBragg();
		updateEnergy();

		emit modeChanged(mode_);
	}
}
Esempio n. 2
0
	double ForceFieldComponent::updateScore()
	{
		score_ = updateEnergy();

		/*
		scaleScore();
		return score_;
		*/

		return getScaledScore();
	}
void BioXASSSRLMonochromator::setEncoderEnergy(BioXASSSRLMonochromatorEnergyControl *newControl)
{
	if (encoderEnergy_ != newControl) {

		removeChildControl(encoderEnergy_);

		encoderEnergy_ = newControl;

		addChildControl(encoderEnergy_);

		updateEncoderEnergy();
		updateEnergy();

		emit encoderEnergyChanged(encoderEnergy_);
	}
}
void BioXASSSRLMonochromator::setStepEnergy(BioXASSSRLMonochromatorEnergyControl *newControl)
{
	if (stepEnergy_ != newControl) {

		removeChildControl(stepEnergy_);

		stepEnergy_ = newControl;

		addChildControl(stepEnergy_);

		updateStepEnergy();
		updateEnergy();

		emit stepEnergyChanged(stepEnergy_);
	}
}
Esempio n. 5
0
void ShipStats::update(float timestep)
{
	// If this ship is the player ship and it is within proximity of the passenger ship
	// if its health, energy or fuel are low, begin replenishing and let the player know
	// they are being replenished
	if (getParent()->getName() == "player1")
	{
		if (Utility::getDistance(m_passengerShip->getPosition(), *getTransform()->getPosition()) <= 500.0f)
		{
			m_dialogueBox->sendMessage("Message From [colour='FFFFFF00']Terra 1 :\n[colour='FFFFFFFF']Stay close,\n we'll replenish your reserves.", Importance::LOW, false);

			if (m_playRechargeSound)
			{
				m_rechargeSound->play();
				m_playRechargeSound = false;
			}

			if (m_health < 1.0f)
			{
				updateHealth(0.0005f);
				if (!m_healing)
				{
					m_healing = true;
					if (m_health > m_dangerlevel)
					{
						m_healthWarnOnce = false;
					}
				}
			}
			else
			{
				m_healing = false;
			}

			if (m_energy < 1.0f)
			{
				updateEnergy(0.0005f);
				if (!m_energizing)
				{
					m_energizing = true;
					if (m_energy > m_dangerlevel)
					{
						m_energyWarnOnce = false;
					}
				}
			}
			else
			{
				m_energizing = false;
			}

			if (m_fuel < 1.0f)
			{
				updateFuel(0.0005f);
				if (!m_fueling)
				{
					m_fueling = true;
					if (m_fuel > m_dangerlevel)
					{
						m_fuelWarnOnce = false;
					}
				}
			}
			else
			{
				m_fueling = false;
			}
		}
		else
		{
			m_playRechargeSound = true;
			m_playMessageReceived = true;
		}

		if (m_fuel <= 0.0f)
		{
			getParent()->getGameComponent<PlayerShipMovementController>()->setVelocity(0.0f);
		}
	}


	if (m_health <= 0.0f)
	{
		if (getParent()->getName() != "player1" && getParent()->getName() != "passengerShip1")
		{
			//Remove gameobject from the minimap
			MiniMap * map;
			map = getGameObjectByName("MiniMap")->getGameComponent<MiniMap>();
			map->deleteMapMarker(getParent()->getName());

			//Remove the homing missile target of this gameobject
			std::vector<GameObject*> missiles = getGameObjectsByName("Missile");
			//MissileAI* missileAIComponent;
			for (size_t i = 0; i < missiles.size(); i++)
			{
				/*for (size_t j = 0; j < missiles[i]->getAllGameComponents().size(); j++)
				{
				missileAIComponent = dynamic_cast<MissileAI*>(missiles[j]->getAllGameComponents()[j]);
				if (missileAIComponent != nullptr)
				{
				missileAIComponent->removeTarget(getParent()->getName());
				break;
				}
				}*/
				//MissileAI* missileAI = missiles[i]->getGameComponent<MissileAI>();
				//missileAI->removeTarget(getParent()->getName());

				missiles[i]->getGameComponent<MissileAI>()->removeTarget(getParent()->getName());
			}
			destroy(getParent());
		}
		else
		{
			getParent()->setEnabled(false);
			//Game Over scene
			getCoreEngine()->getSceneManager()->push(new GameOverScene(), Modality::Popup);
		}
		
	}
}