Skip to content

Commit 0cac5b0

Browse files
committed
Prepare new gamestate scene
Prepares game scenes using newly created facilities. This is the scene for the final presentation.
1 parent a5a3a59 commit 0cac5b0

File tree

9 files changed

+29
-40
lines changed

9 files changed

+29
-40
lines changed
129 KB
Loading

AimGL/src/Renderer/Graphics/3D/Sprite3D.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,5 @@ class Sprite3D
114114
glm::vec2 mScale;
115115
glm::vec2 mDimensionsNormalized;
116116
Rotation3D mRotation;
117-
float mOpacity;
117+
float mOpacity{1};
118118
};

AimGL/src/Renderer/Graphics/3D/Utils/Rotation3D.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Rotation3D& Rotation3D::operator*=(const Rotation3D& rhs)
8787
return *this;
8888
}
8989

90-
Rotation3D::operator glm::vec<3, float>()
90+
Rotation3D::operator glm::vec<3, float>() const
9191
{
9292
return mRotation;
9393
}

AimGL/src/Renderer/Graphics/3D/Utils/Rotation3D.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Rotation3D
2020
Rotation3D& operator-=(const Rotation3D&);
2121
Rotation3D& operator*=(const Rotation3D&);
2222
friend Rotation3D operator*(const Rotation3D& lhs, float rhs);
23-
explicit operator glm::vec3();
23+
explicit operator glm::vec3() const;
2424

2525
/**
2626
* \brief Angles of Euler rotation.

AimGL/src/States/CustomStates/GameState.cpp

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,47 +12,30 @@ GameState::GameState(StateStack& stack, WindowToRender& window)
1212
, mWindow(window)
1313
, mPlayer(window, mColliderRegister)
1414
, mRenderer(mWindow)
15-
, mLogoTexture("resources/Textures/logo_background.png")
16-
, mLogo(mLogoTexture)
1715
, mGameBackground(glm::vec2(1280, 720.f), glm::vec4(0.85f, 0.85f, 0.85f, 1.f))
1816
, mPhaseInLogoColor({window.getSize().x, window.getSize().y}, {0.067f, 0.11f, 0.18f, 1.1f})
19-
, mTree("resources/Models/tree/tree.obj",
20-
{{"resources/Models/tree/tree_combined.png", Texture::Type::Diffuse}})
17+
, mShootingRange(mColliderRegister, {-2, 0, 5.5})
18+
, mSidewayMovingTargetsRange(mColliderRegister, {3, 0, 5.5})
19+
, mWelcomeScreenTexture("resources/Textures/welcome-screen.png")
20+
, mWelcomeScreen(mWelcomeScreenTexture)
2121
{
2222
Mouse::lockMouseAtCenter(mWindow);
23-
mTree.setScale(0.2f);
24-
mTree.setPosition({4, 0, 4}, Model::Origin::CenterBottom);
25-
mLogo.setHeight(2.f);
26-
mLogo.setPosition(glm::vec3(4, 0, 4), Sprite3D::Origin::LeftBottom);
27-
mLogo.setRotation({225.f, 0.f, 0});
28-
mLogo.setOpacity(1);
23+
mWelcomeScreen.setScale(2);
24+
mWelcomeScreen.setPosition({0, 1, -2}, Sprite3D::Origin::Center);
2925
mGameBackground.setPosition({0, 0});
3026
mPhaseInLogoColor.setPosition({0, 0});
3127
mPhaseInClock.restart();
32-
33-
std::vector<glm::vec3> samplePreviewTargetsPositons = {
34-
{2, 2, 2}, {2, 1, 2}, {2, 3, 2}, {2.5, 2, 2.6}, {3, 3, 3},
35-
{3, 2, 1}, {1, 2, 3}, {0, 3, 2}, {0, 1, 1}, {0, 2, 4}};
36-
for (auto& position: samplePreviewTargetsPositons)
37-
{
38-
auto test = std::make_unique<Target>(mColliderRegister, position);
39-
mPreviewTargets.push_back(std::move(test));
40-
}
4128
}
4229

4330
void GameState::draw(sf::Window& target) const
4431
{
4532
MTR_SCOPE("GameState", "GameState::draw");
4633
mGameBackground.draw(mRenderer);
4734
mInfiniteGridFloor.draw(target, mPlayer.camera());
48-
mTree.draw(mRenderer, mPlayer.camera());
49-
mLogo.draw(mRenderer, mPlayer.camera());
35+
mWelcomeScreen.draw(mRenderer, mPlayer.camera());
5036
mPhaseInLogoColor.draw(mRenderer);
51-
52-
for (auto& previewTarget: mPreviewTargets)
53-
{
54-
previewTarget->draw(mRenderer, mPlayer.camera());
55-
}
37+
mShootingRange.draw(mRenderer, mPlayer.camera());
38+
mSidewayMovingTargetsRange.draw(mRenderer, mPlayer.camera());
5639
mPlayer.draw(mRenderer);
5740
}
5841

@@ -67,11 +50,9 @@ bool GameState::fixedUpdate(const float& deltaTime)
6750
bool GameState::update(const float& deltaTime)
6851
{
6952
MTR_SCOPE("GameState", "GameState::update");
70-
for (auto& previewTarget: mPreviewTargets)
71-
{
72-
previewTarget->update(deltaTime);
73-
}
7453
mPlayer.update(deltaTime);
54+
mShootingRange.update(deltaTime);
55+
mSidewayMovingTargetsRange.update(deltaTime);
7556

7657
if (mPhaseInLogoColor.opacity() > 0)
7758
{
@@ -84,6 +65,8 @@ bool GameState::handleEvent(const sf::Event& event)
8465
{
8566
MTR_SCOPE("GameState", "GameState::handleEvent");
8667
mPlayer.handleEvent(event);
68+
mShootingRange.handleEvent(event);
69+
mSidewayMovingTargetsRange.handleEvent(event);
8770

8871
if (event.type == sf::Event::KeyPressed)
8972
{

AimGL/src/States/CustomStates/GameState.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
#include "World/InfiniteGridFloor.h"
99

1010
#include <Player/Player.h>
11-
#include <Renderer/Graphics/3D/Model.h>
1211
#include <World/Physics/ColliderRegister.h>
13-
#include <World/Scene/GameObjects/Target.h>
12+
#include <World/Scene/GameObjects/ShootingRange.h>
13+
#include <World/Scene/GameObjects/SidewayMovingTargetsRange.h>
1414

1515
class StateStack;
1616

@@ -83,13 +83,13 @@ class GameState : public State
8383
ColliderRegister mColliderRegister;
8484
Player mPlayer;
8585
Renderer mRenderer;
86-
Texture mLogoTexture;
87-
Sprite3D mLogo;
8886
Rectangle2D mGameBackground;
8987
sf::Clock mPhaseInClock;
9088
Rectangle2D mPhaseInLogoColor;
9189
InfiniteGridFloor mInfiniteGridFloor;
92-
Model mTree;
93-
std::vector<std::unique_ptr<Target>> mPreviewTargets;
90+
ShootingRange mShootingRange;
91+
SidewayMovingTargetsRange mSidewayMovingTargetsRange;
92+
Texture mWelcomeScreenTexture;
93+
Sprite3D mWelcomeScreen;
9494
bool mDrawImgui{true};
9595
};

AimGL/src/States/CustomStates/LogoState.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,5 @@ bool LogoState::handleEvent(const sf::Event& event)
6767
bool LogoState::updateImGui(const float& deltaTime)
6868
{
6969
MTR_SCOPE("LogoState", "LogoState::updateImGui");
70-
ImGui::ShowDemoWindow();
7170
return true;
7271
}

AimGL/src/World/Scene/GameObjects/Rifle.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ void Rifle::draw(const Renderer& target) const
2929
void Rifle::update(const float& deltaTime)
3030
{
3131
updateAttachToCamera(deltaTime);
32+
if (mLatelyShotRay.has_value() and mShotRayClock.getElapsedTime() > mShotRayDeleteTime)
33+
{
34+
mLatelyShotRay.reset();
35+
}
3236
}
3337

3438
void Rifle::updateAttachToCamera(const float& deltaTime)
@@ -67,5 +71,6 @@ void Rifle::handleEvent(const sf::Event& event)
6771
mGunShotSound.play();
6872
mLatelyShotRay.emplace(mColliderRegister, mCamera.cameraPosition(), mCamera.direction());
6973
mLatelyShotRay.value().colliderTag(ColliderTag::GunShot);
74+
mShotRayClock.restart();
7075
}
7176
}

AimGL/src/World/Scene/GameObjects/Rifle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,6 @@ class Rifle
5757
std::optional<Ray> mLatelyShotRay;
5858
std::vector<std::function<void(Ray)>> mRaySubscribers;
5959
ColliderRegister& mColliderRegister;
60+
sf::Clock mShotRayClock;
61+
sf::Time mShotRayDeleteTime = sf::seconds(0.5);
6062
};

0 commit comments

Comments
 (0)