player sounds and controls get reset when player dies or the game ends
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
#include "Game.h"
|
||||
|
||||
#include "Controller.h"
|
||||
#include "AsteroidsEvents.h"
|
||||
#include "Model.h"
|
||||
|
||||
namespace asteroids {
|
||||
|
||||
@@ -29,4 +32,21 @@ bool Controller::OnReceiveEvent (const Engine::EventBasePtr &event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void Controller::ResetPlayerEntity () {
|
||||
Engine::HaltSoundLoop("./data/sounds/thrust.wav");
|
||||
|
||||
Engine::EntityBase *player_entity = GetModel()->GetEntity(GetModel()->GetPlayerEntityId());
|
||||
|
||||
// if we were unable to get the player then there is no need to invalidate
|
||||
// the state
|
||||
if (!player_entity)
|
||||
return;
|
||||
|
||||
int i;
|
||||
for (i = 0; i < EntityControllerMaxKeyStates; i++)
|
||||
player_entity->UnsetControllerKeyState(i);
|
||||
|
||||
GetModel()->SetPlayerEntityId(Engine::NullEntityId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ enum EntityControllerKeyState {
|
||||
class Controller : public Engine::ControllerBase {
|
||||
public:
|
||||
Controller () {};
|
||||
|
||||
void ResetPlayerEntity ();
|
||||
protected:
|
||||
/** \brief Set up basic keybindings */
|
||||
virtual int OnInit (int argc, char* argv[]);
|
||||
|
||||
+3
-5
@@ -100,7 +100,7 @@ bool View::OnReceiveEvent (const Engine::EventBasePtr &event) {
|
||||
break;
|
||||
case EventLevelComplete:
|
||||
PushViewState(ViewStateLevelComplete);
|
||||
GetModel()->SetPlayerEntityId(Engine::NullEntityId);
|
||||
GetController()->ResetPlayerEntity();
|
||||
break;
|
||||
|
||||
case EventGameOver:
|
||||
@@ -108,15 +108,13 @@ bool View::OnReceiveEvent (const Engine::EventBasePtr &event) {
|
||||
|
||||
PopViewState();
|
||||
PushViewState(ViewStateGameOver);
|
||||
|
||||
GetModel()->SetPlayerEntityId(Engine::NullEntityId);
|
||||
GetController()->ResetPlayerEntity();
|
||||
|
||||
break;
|
||||
case EventPlayerDied:
|
||||
mFadeTimerSecValue = 2.;
|
||||
PushViewState(ViewStatePlayerDied);
|
||||
|
||||
GetModel()->SetPlayerEntityId(Engine::NullEntityId);
|
||||
GetController()->ResetPlayerEntity();
|
||||
|
||||
break;
|
||||
case EventShipExplode: {
|
||||
|
||||
Reference in New Issue
Block a user