Skip to content

Commit f224cda

Browse files
committed
Now draws shadows seperately first so they appear below player and enemies
1 parent 4b5cf73 commit f224cda

7 files changed

Lines changed: 45 additions & 17 deletions

File tree

Enemy.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,10 @@ sf::Vector2f Enemy::getPosition() {
195195
return sprite.getPosition();
196196
}
197197

198-
void Enemy::draw(sf::RenderWindow& window) {
198+
// For drawing enemy in main
199+
200+
// Draw shadow seperately
201+
void Enemy::drawShadow(sf::RenderWindow& window) {
199202
// Add shadow under character
200203
sf::CircleShape shadow(spriteSize / 5.f);
201204
shadow.setFillColor(sf::Color(0, 0, 0, 100));
@@ -204,6 +207,9 @@ void Enemy::draw(sf::RenderWindow& window) {
204207
sf::Vector2f position = sprite.getPosition();
205208
shadow.setPosition({position.x + spriteSize / 3.18f, position.y + spriteSize / 2.6f});
206209
window.draw(shadow);
210+
}
207211

212+
// Draw enemy sprite
213+
void Enemy::drawEnemy(sf::RenderWindow& window) {
208214
window.draw(sprite);
209215
}

Enemy.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class Enemy {
1313

1414
void update(float deltaTime, Grid& grid, const sf::Vector2f& playerPosition, bool playerAttacking);
1515
sf::Vector2f getPosition();
16-
void draw(sf::RenderWindow& window);
16+
void drawShadow(sf::RenderWindow& window);
17+
void drawEnemy(sf::RenderWindow& window);
1718
void animate(int xStart, int xEnd, int yStart, int yEnd);
1819

1920
void takeDamage(int amount);

Player.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ sf::Vector2f Player::getPosition() {
213213
}
214214

215215
// For drawing player in main
216-
void Player::draw(sf::RenderWindow& window, const sf::View& camera) {
216+
217+
// Draw shadow seperately
218+
void Player::drawShadow(sf::RenderWindow& window) {
217219
// Add shadow under character
218220
sf::CircleShape shadow(spriteSize / 5.f);
219221
shadow.setFillColor(sf::Color(0, 0, 0, 100));
@@ -222,10 +224,17 @@ void Player::draw(sf::RenderWindow& window, const sf::View& camera) {
222224
sf::Vector2f position = sprite.getPosition();
223225
shadow.setPosition({position.x + spriteSize / 3.18f, position.y + spriteSize / 2.6f});
224226
window.draw(shadow);
227+
}
225228

226-
const sf::Font font("assets/fonts/MagicSchoolOne.ttf");
229+
// Draw player sprite
230+
void Player::drawPlayer(sf::RenderWindow& window) {
227231
window.draw(sprite);
232+
}
228233

234+
// Draw user interface features
235+
void Player::drawUI(sf::RenderWindow& window, const sf::View& camera) {
236+
const sf::Font font("assets/fonts/MagicSchoolOne.ttf");
237+
229238
// Set up UI
230239
// Draw health bar at top left of camera
231240
sf::Vector2f cameraLocation = camera.getCenter() - (camera.getSize() / 2.f);

Player.hpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@ class Player {
88
Player();
99

1010
void handleInput();
11-
void Player::sprint(bool sprint);
11+
void sprint(bool sprint);
1212
void update();
1313
sf::Vector2f getPosition();
14-
void draw(sf::RenderWindow& window, const sf::View& view);
14+
void drawUI(sf::RenderWindow& window, const sf::View& view);
15+
void drawShadow(sf::RenderWindow& window);
16+
void drawPlayer(sf::RenderWindow& window);
1517
void animate(int xStart, int xEnd, int yStart, int yEnd);
1618

17-
void Player::takeDamage(int amount);
18-
void Player::heal(int amount);
19-
int Player::getHealth() const { return health; };
20-
int Player::getMaxHealth() const { return maxHealth; };
21-
bool Player::isDead() const { return health <= 0; };
19+
void takeDamage(int amount);
20+
void heal(int amount);
21+
int getHealth() const { return health; };
22+
int getMaxHealth() const { return maxHealth; };
23+
bool isDead() const { return health <= 0; };
2224

2325
int getGold() const { return gold; };;
2426
void addGold(int amount);

main.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ int main()
205205
// Create new window with sprites drawn in
206206
window.clear(sf::Color::White);
207207

208+
//---- Collision detection ----
209+
208210
// Try movement
209211
Vec2 originalPos = playerCollider.pos;
210212
// --- X axis ---
@@ -294,21 +296,28 @@ int main()
294296
}
295297
}
296298

299+
//---- Draw items ----
300+
297301
// Draw tilemap with walls and healthPickups
298302
renderer.draw(window, map);
303+
// Draw shadows first and update enemies
304+
player.drawShadow(window);
305+
for (auto& enem : enemies) {
306+
enem.enemy.sprite.setPosition(toSF(enem.enemy.collider.pos));
307+
enem.enemy.update(deltaTime, grid, player.getPosition(), player.attacking);
308+
enem.enemy.drawShadow(window);
309+
}
299310
// Draw player
300311
player.sprite.setPosition(toSF(playerCollider.pos));
301-
player.draw(window, camera);
312+
player.drawUI(window, camera);
313+
player.drawPlayer(window);
302314
camera.setCenter(player.getPosition());
303315
window.setView(camera);
304316
if (player.isDead()) {
305317
}
306-
307-
// Draw and update enemies
318+
// Draw enemies
308319
for (auto& enem : enemies) {
309-
enem.enemy.sprite.setPosition(toSF(enem.enemy.collider.pos));
310-
enem.enemy.update(deltaTime, grid, player.getPosition(), player.attacking);
311-
enem.enemy.draw(window);
320+
enem.enemy.drawEnemy(window);
312321
}
313322
// Delete dead enemies
314323
enemies.erase(
@@ -318,6 +327,7 @@ int main()
318327
enemies.end()
319328
);
320329

330+
// Display window
321331
window.display();
322332
}
323333
return 0;

main.exe

512 Bytes
Binary file not shown.

main.obj

1.01 KB
Binary file not shown.

0 commit comments

Comments
 (0)