Added ScoreEvent, added score to bricks. Stage resets after all bricks are destroyed.
This commit is contained in:
@@ -75,7 +75,7 @@ set(SOURCE_FILES
|
||||
${SOURCE_FILES_Rendering}
|
||||
${SOURCE_FILES_Transform}
|
||||
${SOURCE_FILES_Physics}
|
||||
${SOURCE_FILES_Game} ../../include/Game/CLife.h ../../include/Game/ELifeLost.h)
|
||||
${SOURCE_FILES_Game} ../../include/Game/CLife.h ../../include/Game/ELifeLost.h ../../include/Game/EResetBall.h ../../include/Game/EScoreEvent.h)
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
||||
|
||||
@@ -161,7 +161,7 @@ void dd::World::Initialize()
|
||||
}
|
||||
}
|
||||
|
||||
void dd::World::CommitEntity(EntityID entity)
|
||||
int dd::World::CommitEntity(EntityID entity)
|
||||
{
|
||||
for (auto pair : m_Systems)
|
||||
{
|
||||
|
||||
@@ -11,6 +11,7 @@ void dd::Systems::LevelSystem::Initialize()
|
||||
{
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, LevelSystem::OnContact);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_ELifeLost, LevelSystem::LifeLost);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EScoreEvent, LevelSystem::ScoreEvent);
|
||||
|
||||
for (int i = 0; i < lives; i++)
|
||||
{
|
||||
@@ -42,12 +43,6 @@ void dd::Systems::LevelSystem::Update(double dt)
|
||||
CreateBasicLevel(tRows, tLines, tSpaceBetweenBricks, tSpaceToEdge);
|
||||
m_Initialized = true;
|
||||
}
|
||||
|
||||
if (entityToRemove != NULL)
|
||||
{
|
||||
//m_World->RemoveEntity(entityToRemove);
|
||||
entityToRemove = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||
@@ -62,8 +57,10 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
||||
if (lives == pastLives)
|
||||
{
|
||||
Events::LifeLost e;
|
||||
e.entity = entity;
|
||||
e.Entity = entity;
|
||||
EventBroker->Publish(e);
|
||||
Events::ResetBall be;
|
||||
EventBroker->Publish(be);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -116,6 +113,7 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBe
|
||||
float y = spaceToEdge + row * spacesBetweenBricks.y;
|
||||
transform->Scale = glm::vec3(1.6, 0.4, 0.);
|
||||
transform->Position = glm::vec3(x - 7, y + 1, -10.f);
|
||||
cBrick->Score = 10 * num;
|
||||
m_World->CommitEntity(brick);
|
||||
return;
|
||||
}
|
||||
@@ -128,7 +126,7 @@ void dd::Systems::LevelSystem::ProcessCollision()
|
||||
|
||||
void dd::Systems::LevelSystem::OnEntityRemoved(EntityID entity)
|
||||
{
|
||||
auto brick = m_World->GetComponent<Components::Brick>(entity);
|
||||
/*auto brick = m_World->GetComponent<Components::Brick>(entity);
|
||||
if (brick != NULL)
|
||||
{
|
||||
numberOfBricks--;
|
||||
@@ -136,7 +134,7 @@ void dd::Systems::LevelSystem::OnEntityRemoved(EntityID entity)
|
||||
{
|
||||
EndLevel();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -152,6 +150,22 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event)
|
||||
|
||||
m_World->RemoveEntity(entityBrick);
|
||||
|
||||
numberOfBricks--;
|
||||
if (numberOfBricks == 0)
|
||||
{
|
||||
Events::ScoreEvent es;
|
||||
es.score = 500;
|
||||
EventBroker->Publish(es);
|
||||
Events::ResetBall e;
|
||||
EventBroker->Publish(e);
|
||||
CreateBasicLevel(tRows, tLines, tSpaceBetweenBricks, tSpaceToEdge);
|
||||
}
|
||||
Events::ScoreEvent es;
|
||||
es.score = brick->Score;
|
||||
EventBroker->Publish(es);
|
||||
|
||||
std::cout << "Score: " << score << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -162,6 +176,13 @@ bool dd::Systems::LevelSystem::LifeLost(const dd::Events::LifeLost &event)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dd::Systems::LevelSystem::ScoreEvent(const dd::Events::ScoreEvent &event)
|
||||
{
|
||||
score += event.score;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void dd::Systems::LevelSystem::EndLevel()
|
||||
{
|
||||
Events::StageCleared e;
|
||||
|
||||
+19
-18
@@ -24,7 +24,7 @@ void dd::Systems::PadSystem::Initialize()
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EKeyDown, PadSystem::OnKeyDown);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EKeyUp, PadSystem::OnKeyUp);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, PadSystem::OnContact);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_ELifeLost, PadSystem::LifeLost);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EResetBall, PadSystem::ResetBall);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -70,30 +70,31 @@ void dd::Systems::PadSystem::Update(double dt)
|
||||
if (m_World->GetProperty<std::string>(it->first, "Name") == "Pad") {
|
||||
ent = it->first;
|
||||
transform = m_World->GetComponent<Components::Transform>(ent);
|
||||
pad = m_World->GetComponent<Components::Pad>(ent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (transform->Velocity.x < -maxSpeed)
|
||||
if (transform->Velocity.x < -pad->maxSpeed)
|
||||
{
|
||||
transform->Velocity.x = -maxSpeed;
|
||||
transform->Velocity.x = -pad->maxSpeed;
|
||||
}
|
||||
else if (transform->Velocity.x > maxSpeed)
|
||||
else if (transform->Velocity.x > pad->maxSpeed)
|
||||
{
|
||||
transform->Velocity.x = maxSpeed;
|
||||
transform->Velocity.x = pad->maxSpeed;
|
||||
}
|
||||
transform->Position += transform->Velocity * (float)dt;
|
||||
transform->Velocity += acceleration * (float)dt;
|
||||
transform->Velocity -= transform->Velocity * slowdownModifier * (float)dt;
|
||||
transform->Velocity -= transform->Velocity * pad->slowdownModifier * (float)dt;
|
||||
|
||||
if (left)
|
||||
{
|
||||
acceleration.x = -accelerationSpeed;
|
||||
acceleration.x = -pad->accelerationSpeed;
|
||||
}
|
||||
else if (right)
|
||||
{
|
||||
acceleration.x = accelerationSpeed;
|
||||
acceleration.x = pad->accelerationSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -106,27 +107,27 @@ void dd::Systems::PadSystem::Update(double dt)
|
||||
bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event)
|
||||
{
|
||||
int val = event.KeyCode;
|
||||
if (val == 265)
|
||||
if (val == GLFW_KEY_UP)
|
||||
{
|
||||
//std::cout << "Up!" << std::endl;
|
||||
}
|
||||
else if (val == 264)
|
||||
else if (val == GLFW_KEY_DOWN)
|
||||
{
|
||||
//std::cout << "Down!" << std::endl;
|
||||
}
|
||||
else if (val == 263)
|
||||
else if (val == GLFW_KEY_LEFT)
|
||||
{
|
||||
//std::cout << "Left!" << std::endl;
|
||||
//acceleration.x = -0.01f;
|
||||
left = true;
|
||||
}
|
||||
else if (val == 262)
|
||||
else if (val == GLFW_KEY_RIGHT)
|
||||
{
|
||||
//std::cout << "Right!" << std::endl;
|
||||
//acceleration.x = 0.01f;
|
||||
right = true;
|
||||
}
|
||||
else if (val == 82)
|
||||
else if (val == GLFW_KEY_R)
|
||||
{
|
||||
replaceBall = true;
|
||||
}
|
||||
@@ -136,19 +137,19 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event)
|
||||
bool dd::Systems::PadSystem::OnKeyUp(const dd::Events::KeyUp &event)
|
||||
{
|
||||
int val = event.KeyCode;
|
||||
if (val == 265)
|
||||
if (val == GLFW_KEY_UP)
|
||||
{
|
||||
|
||||
}
|
||||
else if (val == 264)
|
||||
else if (val == GLFW_KEY_DOWN)
|
||||
{
|
||||
|
||||
}
|
||||
else if (val == 263)
|
||||
else if (val == GLFW_KEY_LEFT)
|
||||
{
|
||||
left = false;
|
||||
}
|
||||
else if (val == 262)
|
||||
else if (val == GLFW_KEY_RIGHT)
|
||||
{
|
||||
right = false;
|
||||
}
|
||||
@@ -216,7 +217,7 @@ bool dd::Systems::PadSystem::OnContact(const dd::Events::Contact &event)
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
bool dd::Systems::PadSystem::LifeLost(const dd::Events::LifeLost &event)
|
||||
bool dd::Systems::PadSystem::ResetBall(const dd::Events::ResetBall &event)
|
||||
{
|
||||
replaceBall = true;
|
||||
return true;
|
||||
|
||||
@@ -52,6 +52,11 @@ void dd::Systems::PhysicsSystem::Update(double dt)
|
||||
if (! transformComponent)
|
||||
continue;
|
||||
|
||||
if (body == nullptr) {
|
||||
//LOG_ERROR("This body should not exist");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (m_World->GetEntityParent(entity) == 0) {
|
||||
b2Vec2 position;
|
||||
@@ -86,6 +91,11 @@ void dd::Systems::PhysicsSystem::Update(double dt)
|
||||
EntityID entity = i.first;
|
||||
b2Body* body = i.second;
|
||||
|
||||
if (body == nullptr) {
|
||||
//LOG_ERROR("This body should not exist");
|
||||
continue;
|
||||
}
|
||||
|
||||
auto transformComponent = m_World->GetComponent<Components::Transform>(entity);
|
||||
if (! transformComponent)
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user