Skip to content

Commit cfcae9b

Browse files
author
Semphris
committed
Moved player respawn arrow from static to member variable
This allows giving it a normal lifetime and prevents a warning about the texture not being freed.
1 parent aeba022 commit cfcae9b

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

src/object/player.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,6 @@ Player::get_player_color(int id)
140140
1.f - static_cast<float>(id & 1) * .4f);
141141
}
142142

143-
SurfacePtr Player::s_multiplayer_arrow;
144-
145143
Player::Player(PlayerStatus& player_status, const std::string& name_, int player_id) :
146144
ExposedObject<Player, scripting::Player>(this),
147145
m_id(player_id),
@@ -175,6 +173,7 @@ Player::Player(PlayerStatus& player_status, const std::string& name_, int player
175173
m_ice_this_frame(false),
176174
m_lightsprite(SpriteManager::current()->create("images/creatures/tux/light.sprite")),
177175
m_powersprite(SpriteManager::current()->create("images/creatures/tux/powerups.sprite")),
176+
m_multiplayer_arrow(SpriteManager::current()->create("images/engine/hud/arrowdown.png")),
178177
m_tag_timer(),
179178
m_tag_fade(nullptr),
180179
m_tag_alpha(1.f),
@@ -227,9 +226,6 @@ Player::Player(PlayerStatus& player_status, const std::string& name_, int player
227226
m_name = name_;
228227
m_idle_timer.start(static_cast<float>(IDLE_TIME[0]) / 1000.0f);
229228

230-
if (!s_multiplayer_arrow)
231-
s_multiplayer_arrow = Surface::from_file("images/engine/hud/arrowdown.png");
232-
233229
SoundManager::current()->preload("sounds/bigjump.wav");
234230
SoundManager::current()->preload("sounds/jump.wav");
235231
SoundManager::current()->preload("sounds/hurt.wav");
@@ -1660,9 +1656,9 @@ Player::draw(DrawingContext& context)
16601656
auto* target = Sector::get().get_object_by_uid<Player>(*m_target);
16611657
if (target)
16621658
{
1663-
Vector pos(target->get_bbox().get_middle().x, target->get_bbox().get_top() - static_cast<float>(s_multiplayer_arrow->get_height()) * 1.5f);
1664-
Vector pos_surf(pos - Vector(static_cast<float>(s_multiplayer_arrow->get_width()) / 2.f, 0.f));
1665-
context.color().draw_surface(s_multiplayer_arrow, pos_surf, LAYER_LIGHTMAP + 1);
1659+
Vector pos(target->get_bbox().get_middle().x, target->get_bbox().get_top() - static_cast<float>(m_multiplayer_arrow->get_height()) * 1.5f);
1660+
Vector pos_surf(pos - Vector(static_cast<float>(m_multiplayer_arrow->get_width()) / 2.f, 0.f));
1661+
m_multiplayer_arrow->draw(context.color(), pos_surf, LAYER_LIGHTMAP + 1);
16661662
context.color().draw_text(Resources::normal_font, std::to_string(get_id() + 1), pos,
16671663
FontAlignment::ALIGN_CENTER, LAYER_LIGHTMAP + 1);
16681664
}

src/object/player.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,6 @@ class Player final : public MovingObject,
6666
public:
6767
static Color get_player_color(int id);
6868

69-
private:
70-
static SurfacePtr s_multiplayer_arrow;
71-
7269
public:
7370
Player(PlayerStatus& player_status, const std::string& name, int player_id);
7471
~Player() override;
@@ -304,6 +301,7 @@ class Player final : public MovingObject,
304301
bool m_ice_this_frame;
305302
SpritePtr m_lightsprite;
306303
SpritePtr m_powersprite;
304+
SpritePtr m_multiplayer_arrow;
307305

308306
// Multiplayer tag stuff (number displayed over the players)
309307
Timer m_tag_timer;

0 commit comments

Comments
 (0)