Put the variables of the ship as static members of ShipEntity, introduced variable ship_maxattackrate
This commit is contained in:
		
							parent
							
								
									dd70d90ba5
								
							
						
					
					
						commit
						567bb432ef
					
				| @ -8,3 +8,4 @@ bind space attack | ||||
| set ship_maxspeed 10  | ||||
| set ship_acceleration 10 | ||||
| set ship_rotationspeed 180 | ||||
| set ship_maxattackrate 10 | ||||
|  | ||||
| @ -11,9 +11,10 @@ | ||||
| 
 | ||||
| namespace asteroids { | ||||
| 
 | ||||
| static Engine::Variable var_ship_acceleration ("ship_acceleration", "10"); | ||||
| static Engine::Variable var_ship_maxspeed ("ship_maxspeed", "10"); | ||||
| static Engine::Variable var_ship_rotationspeed ("ship_rotationspeed", "180"); | ||||
| Engine::Variable ShipEntity::VarAcceleration ("ship_acceleration", "10"); | ||||
| Engine::Variable ShipEntity::VarMaxSpeed ("ship_maxspeed", "10"); | ||||
| Engine::Variable ShipEntity::VarRotationSpeed ("ship_rotationspeed", "180"); | ||||
| Engine::Variable ShipEntity::VarMaxAttackRate ("ship_maxattackrate", "10"); | ||||
| 
 | ||||
| void ShipEntity::Update (float delta_sec) { | ||||
| 	if (!mPhysicState || !mControllerState) | ||||
| @ -38,7 +39,7 @@ void ShipEntity::Update (float delta_sec) { | ||||
| 
 | ||||
| 	// set the local velocity as the current state of the keys are
 | ||||
| 	if (mControllerState->GetKey (EntityKeyStateForward)) { | ||||
| 		local_velocity[0] += delta_sec * var_ship_acceleration.GetFloatValue(); | ||||
| 		local_velocity[0] += delta_sec * ShipEntity::VarAcceleration.GetFloatValue(); | ||||
| 		mState = Accelerating; | ||||
| 	} | ||||
| 
 | ||||
| @ -49,17 +50,21 @@ void ShipEntity::Update (float delta_sec) { | ||||
| 	mPhysicState->SetVelocity(local_velocity); | ||||
| 
 | ||||
| 	if (mControllerState->GetKey (EntityKeyStateTurnLeft)) { | ||||
| 		mPhysicState->mOrientation[1] += delta_sec * var_ship_rotationspeed.GetFloatValue(); | ||||
| 		mPhysicState->mOrientation[1] += delta_sec * ShipEntity::VarRotationSpeed.GetFloatValue(); | ||||
| 	} | ||||
| 	if (mControllerState->GetKey (EntityKeyStateTurnRight)) { | ||||
| 		mPhysicState->mOrientation[1] -= delta_sec * var_ship_rotationspeed.GetFloatValue(); | ||||
| 		mPhysicState->mOrientation[1] -= delta_sec * ShipEntity::VarRotationSpeed.GetFloatValue(); | ||||
| 	} | ||||
| 
 | ||||
| 	// Check for the maximum speed
 | ||||
| 	float speed = mPhysicState->mVelocity.length(); | ||||
| 	if (speed > var_ship_maxspeed.GetFloatValue()) { | ||||
| 		mPhysicState->mVelocity *= var_ship_maxspeed.GetFloatValue() / speed; | ||||
| 	if (speed > ShipEntity::VarMaxSpeed.GetFloatValue()) { | ||||
| 		mPhysicState->mVelocity *= ShipEntity::VarMaxSpeed.GetFloatValue() / speed; | ||||
| 	} | ||||
| 
 | ||||
| 	// update the attack timer if neccessary
 | ||||
| 	if (mAttackTimer > 0.) | ||||
| 		mAttackTimer -= delta_sec; | ||||
| } | ||||
| 
 | ||||
| bool ShipEntity::CollisionEvent (Engine::EntityBase* entity) { | ||||
| @ -99,6 +104,12 @@ void ShipEntity::Attack () { | ||||
| 	if (!mAlive) | ||||
| 		return; | ||||
| 
 | ||||
| 	// skip the attack if we still have to wait
 | ||||
| 	if (mAttackTimer > 0.) | ||||
| 		return; | ||||
| 
 | ||||
| 	mAttackTimer = 1. / ShipEntity::VarMaxAttackRate.GetFloatValue(); | ||||
| 
 | ||||
| 	Engine::EntityPhysicState* entity_physic = Engine::GetEntityPhysicState (mId); | ||||
| 	vector3d attack_dir (1., 0., 0.); | ||||
| 
 | ||||
| @ -114,7 +125,7 @@ void ShipEntity::Attack () { | ||||
| 	rocket_physics->mPosition += entity_physic->mPosition; | ||||
| 	rocket_physics->mOrientation = entity_physic->mOrientation; | ||||
| 	rocket_physics->mVelocity = attack_dir.normalize(); | ||||
| 	rocket_physics->mVelocity *= var_ship_maxspeed.GetFloatValue() + 0.1; | ||||
| 	rocket_physics->mVelocity *= ShipEntity::VarMaxSpeed.GetFloatValue() + 0.1; | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -40,6 +40,7 @@ struct ShipEntity: public Engine::EntityBase { | ||||
| 		mAlive = true; | ||||
| 		mFadeTimer = 0.; | ||||
| 		mState = Idle; | ||||
| 		mAttackTimer = 0.; | ||||
| 	} | ||||
| 
 | ||||
| 	virtual ~ShipEntity() {}; | ||||
| @ -50,7 +51,13 @@ struct ShipEntity: public Engine::EntityBase { | ||||
| 
 | ||||
| 	bool mAlive; | ||||
| 	float mFadeTimer; | ||||
| 	float mAttackTimer; | ||||
| 	State mState; | ||||
| 	 | ||||
| 	static Engine::Variable VarAcceleration; | ||||
| 	static Engine::Variable VarMaxSpeed; | ||||
| 	static Engine::Variable VarRotationSpeed; | ||||
| 	static Engine::Variable VarMaxAttackRate; | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user