Skip to content

Commit 89695c0

Browse files
aleokdevkarnkaul
andauthored
Add new powerup sprites (#56)
* Add new powerup icons * Cleanup. --------- Co-authored-by: Karn Kaul <karnkaul@gmail.com>
1 parent a7aded0 commit 89695c0

File tree

8 files changed

+26
-12
lines changed

8 files changed

+26
-12
lines changed

assets/assets/images/powerup_1up.png

8.95 KB
Loading

assets/assets/images/powerup_beam.png

12.3 KB
Loading

src/spaced/spaced/game/powerup.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ using bave::Resources;
99
using bave::Seconds;
1010
using bave::Services;
1111
using bave::Shader;
12+
using bave::Texture;
1213

1314
Powerup::Powerup(Services const& services, std::string_view const name)
1415
: m_services(&services), m_layout(&services.get<Layout>()), m_audio(&services.get<IAudio>()), m_name(name) {
15-
auto circle = Circle{};
16-
circle.diameter = 40.0f;
17-
shape.set_shape(circle);
16+
17+
sprite.set_size({80., 80.});
1818

1919
auto const& resources = services.get<Resources>();
2020
if (auto const pu_emitter = resources.get<ParticleEmitter>("assets/particles/powerup.json")) { emitter = *pu_emitter; }
@@ -23,10 +23,10 @@ Powerup::Powerup(Services const& services, std::string_view const name)
2323
}
2424

2525
void Powerup::tick(Seconds const dt) {
26-
shape.transform.position.x -= speed * dt.count();
27-
if (shape.transform.position.x < m_layout->play_area.lt.x - 0.5f * shape.get_shape().diameter) { m_destroyed = true; }
26+
sprite.transform.position.x -= speed * dt.count();
27+
if (sprite.transform.position.x < m_layout->play_area.lt.x - 0.5f * sprite.get_size().x - 300.) { m_destroyed = true; }
2828

29-
emitter.set_position(shape.transform.position);
29+
emitter.set_position(sprite.transform.position);
3030
if (!m_emitter_ticked) {
3131
m_emitter_ticked = true;
3232
emitter.pre_warm();
@@ -35,8 +35,8 @@ void Powerup::tick(Seconds const dt) {
3535
}
3636

3737
void Powerup::draw(Shader& shader) const {
38-
shape.draw(shader);
3938
emitter.draw(shader);
39+
sprite.draw(shader);
4040
}
4141

4242
void Powerup::activate(Player& player) {

src/spaced/spaced/game/powerup.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ class Powerup : public bave::IDrawable {
1616
void tick(bave::Seconds dt);
1717
void draw(bave::Shader& shader) const final;
1818

19-
[[nodiscard]] auto get_bounds() const -> bave::Rect<> { return shape.get_bounds(); }
19+
[[nodiscard]] auto get_bounds() const -> bave::Rect<> { return sprite.get_bounds(); }
2020
void activate(Player& player);
2121

2222
[[nodiscard]] auto is_destroyed() const -> bool { return m_destroyed; }
2323

2424
float speed{300.0f};
25-
bave::CircleShape shape{};
25+
bave::Sprite sprite{};
2626
bave::ParticleEmitter emitter{};
2727

2828
protected:

src/spaced/spaced/game/powerups/beam.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1+
#include <bave/services/resources.hpp>
12
#include <bave/services/styles.hpp>
23
#include <spaced/game/player.hpp>
34
#include <spaced/game/powerups/beam.hpp>
45
#include <spaced/game/weapons/gun_beam.hpp>
56

67
namespace spaced::powerup {
8+
using bave::Resources;
79
using bave::Services;
810
using bave::Styles;
11+
using bave::Texture;
912

1013
Beam::Beam(Services const& services, int rounds) : Powerup(services, "Beam"), m_rounds(rounds) {
11-
emitter.config.lerp.tint.lo = emitter.config.lerp.tint.hi = shape.tint = services.get<Styles>().rgbas["gun_beam"];
14+
emitter.config.lerp.tint.lo = emitter.config.lerp.tint.hi = services.get<Styles>().rgbas["gun_beam"];
1215
emitter.config.lerp.tint.hi.channels.w = 0;
16+
17+
auto const& resources = services.get<Resources>();
18+
sprite.set_texture(resources.get<Texture>("assets/images/powerup_beam.png"));
1319
}
1420

1521
void Beam::do_activate(Player& player) {

src/spaced/spaced/game/powerups/one_up.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1+
#include <bave/services/resources.hpp>
12
#include <bave/services/styles.hpp>
23
#include <spaced/game/player.hpp>
34
#include <spaced/game/powerups/one_up.hpp>
45

56
namespace spaced::powerup {
7+
using bave::Resources;
68
using bave::Services;
79
using bave::Styles;
10+
using bave::Texture;
811

912
OneUp::OneUp(Services const& services) : Powerup(services, "OneUp") {
10-
emitter.config.lerp.tint.lo = emitter.config.lerp.tint.hi = shape.tint = services.get<Styles>().rgbas["exhaust"];
13+
emitter.config.lerp.tint.lo = emitter.config.lerp.tint.hi = services.get<Styles>().rgbas["exhaust"];
1114
emitter.config.lerp.tint.hi.channels.w = 0;
15+
16+
auto const& resources = services.get<Resources>();
17+
sprite.set_texture(resources.get<Texture>("assets/images/powerup_1up.png"));
1218
}
1319

1420
void OneUp::do_activate(Player& player) { player.one_up(); }

src/spaced/spaced/scenes/endless.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void EndlessScene::on_player_scored(Enemy const& enemy) {
134134

135135
if (!powerup) { return; }
136136

137-
powerup->shape.transform.position = enemy.get_position();
137+
powerup->sprite.transform.position = enemy.get_position();
138138
push_powerup(std::move(powerup));
139139
m_since_powerup = 0s;
140140
}

src/spaced/spaced/scenes/game.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ auto GameScene::get_asset_manifest() -> AssetManifest {
7878
"assets/images/round_kinetic_green.png",
7979
"assets/images/round_kinetic_red.png",
8080
"assets/images/round_beam.png",
81+
"assets/images/powerup_beam.png",
82+
"assets/images/powerup_1up.png",
8183
},
8284
.audio_clips =
8385
{

0 commit comments

Comments
 (0)