Skip to content

Commit 95fa602

Browse files
committed
Refactoring
1 parent cb9a97c commit 95fa602

File tree

19 files changed

+131
-109
lines changed

19 files changed

+131
-109
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,4 @@ add_executable(spelunkyds
5151
source/collisions/collisions.cpp
5252
source/collisions/collisions.hpp
5353
source/hud/hud.cpp source/hud/hud.hpp
54-
source/sprites/sprite_info.cpp source/sprites/sprite_info.h source/camera/camera.cpp source/camera/camera.hpp source/memory/oam_manager.cpp source/memory/oam_manager.hpp source/input/input_handler.cpp source/input/input_handler.hpp source/sprites/spritesheet_type.hpp source/memory/oam_type.hpp source/sprites/items/rock.hpp source/sprites/items/jar.cpp source/sprites/items/jar.hpp source/sprites/enemies/snake.cpp source/sprites/enemies/snake.hpp source/sprites/collectibles/moniez.cpp source/sprites/collectibles/moniez.hpp source/tiles/map_tile_type.hpp source/sprites/animations/blood.cpp source/sprites/animations/blood.hpp source/sprites/animations/blood_element.cpp source/sprites/animations/blood_element.hpp source/sprites/non_interactive/spelunky_title.cpp source/sprites/non_interactive/spelunky_title.h source/tiles/tile_orientation.hpp source/sprites/non_interactive/title_menu_sign.cpp source/sprites/non_interactive/title_menu_sign.h source/sprites/menu_sign_type.hpp source/tiles/splash_screen_type.hpp source/rooms/left_right_rooms.hpp source/rooms/left_right_down_rooms.hpp source/rooms/left_right_up_rooms.hpp source/rooms/closed_rooms.hpp source/rooms/splash_screens.hpp source/rooms/entrance_rooms.hpp source/rooms/exit_rooms.hpp source/rooms/RoomType.hpp source/sprites/enemies/bat.cpp source/sprites/enemies/bat.hpp source/sprites/enemies/spider.cpp source/sprites/enemies/spider.hpp source/sprites/sprite_type.hpp source/globals_definitions.hpp source/sound/sound_utils.hpp source/console/console_utils.hpp source/time/time_utils.h source/time/time_utils.cpp source/memory/oam_utils.cpp source/memory/oam_utils.hpp source/sprites/main_dude/whip.cpp source/sprites/main_dude/whip.hpp source/sprites/traps/spikes.cpp source/sprites/traps/spikes.h source/sprites/collectibles/chest.cpp source/sprites/collectibles/chest.hpp source/sprites/collectibles/crate.hpp source/sprites/collectibles/crate.cpp source/sprites/collectibles/shotgun.hpp source/sprites/collectibles/shotgun.cpp source/sprites/collectibles/bullet.hpp source/sprites/collectibles/bullet.cpp source/sprites/collectibles/spring_shoes.hpp source/sprites/collectibles/spring_shoes.cpp source/sprites/collectibles/mitt.hpp source/sprites/collectibles/mitt.cpp source/sprites/collectibles/glove.hpp source/sprites/collectibles/glove.cpp source/sprites/collectibles/compass.hpp source/sprites/collectibles/compass.cpp source/sprites/animations/got_collectible.hpp source/sprites/animations/got_collectible.cpp source/camera/layer_level.hpp source/sprites/enemies/shopkeeper.hpp source/sprites/enemies/shopkeeper.cpp source/sprites/main_dude/dude_utils.cpp source/sprites/main_dude/game_state.hpp source/sprites/main_dude/game_state.cpp source/sprites/enemies/caveman.hpp source/sprites/enemies/caveman.cpp source/sprites/animations/fall_poof.hpp source/sprites/animations/fall_poof.cpp source/sprites/items/cape.hpp source/sprites/items/cape.cpp source/sprites/items/spike_shoes.hpp source/sprites/items/spike_shoes.cpp source/sprites/items/pick.hpp source/sprites/items/pick.cpp source/sprites/items/jetpack.hpp source/sprites/items/jetpack.cpp source/sprites/items/parachute.hpp source/sprites/items/parachute.cpp source/sprites/items/rope_pile.hpp source/sprites/items/rope_pile.cpp source/sprites/items/bomb_bag.hpp source/sprites/items/bomb_bag.cpp source/sprites/items/bomb_box.hpp source/sprites/items/bomb_box.cpp source/sprites/animations/flame.hpp source/sprites/animations/flame_element.cpp source/sprites/animations/flame.cpp source/sprites/animations/flame_element.hpp source/sprites/enemies/damsel.hpp source/sprites/enemies/damsel.cpp source/sprites/animations/smooch.hpp source/sprites/animations/smooch.cpp source/rooms/shops.hpp source/sprites/non_interactive/lamp.h source/sprites/non_interactive/lamp.cpp source/tiles/direction.hpp source/sprites/collectibles/collectibles_utils.hpp source/sprites/collectibles/collectibles_utils.cpp source/sprites/shopping_object.h source/sprites/non_interactive/shopping_icon.h source/sprites/non_interactive/shopping_icon.cpp source/sprites/shopping_object.cpp source/sprites/traps/arrow_trap.h source/sprites/traps/arrow_trap.cpp source/sprites/animations/blast.hpp source/sprites/animations/blast.cpp source/rooms/snake_well.hpp source/sprites/enemies/skeleton.cpp source/sprites/enemies/skeleton.hpp source/sound/sound_utils.cpp source/sprites/animations/bone.hpp source/sprites/animations/bone.cpp source/sprites/animations/skull.hpp source/sprites/animations/skull.cpp source/sprites/animations/fake_skeleton.hpp source/sprites/animations/fake_skeleton.cpp source/globals_definitions.cpp source/base_map.hpp source/sprites/sprite_utils.cpp source/sprites/sprite_utils.hpp source/tiles/level_generator.hpp source/tiles/level_generator.cpp source/sprites/simple_sprite_wrapper.h source/sprites/simple_sprite_wrapper.cpp source/tiles/populating_utils.hpp source/tiles/populating_utils.cpp source/sprites/collectibles/ruby_big.h source/sprites/collectibles/ruby_small.h source/sprites/collectibles/triple_goldbar.h source/sprites/collectibles/triple_goldbar.cpp source/sprites/collectibles/single_goldbar.hpp source/sprites/collectibles/single_goldbar.cpp source/sprites/collectibles/ruby_small.cpp source/sprites/collectibles/ruby_big.cpp)
54+
source/sprites/sprite_info.cpp source/sprites/sprite_info.h source/camera/camera.cpp source/camera/camera.hpp source/memory/oam_manager.cpp source/memory/oam_manager.hpp source/input/input_handler.cpp source/input/input_handler.hpp source/sprites/spritesheet_type.hpp source/memory/oam_type.hpp source/sprites/items/rock.hpp source/sprites/items/jar.cpp source/sprites/items/jar.hpp source/sprites/enemies/snake.cpp source/sprites/enemies/snake.hpp source/sprites/collectibles/moniez.cpp source/sprites/collectibles/moniez.hpp source/tiles/map_tile_type.hpp source/sprites/animations/blood.cpp source/sprites/animations/blood.hpp source/sprites/animations/blood_element.cpp source/sprites/animations/blood_element.hpp source/sprites/non_interactive/spelunky_title.cpp source/sprites/non_interactive/spelunky_title.h source/tiles/tile_orientation.hpp source/sprites/non_interactive/title_menu_sign.cpp source/sprites/non_interactive/title_menu_sign.h source/sprites/menu_sign_type.hpp source/tiles/splash_screen_type.hpp source/rooms/left_right_rooms.hpp source/rooms/left_right_down_rooms.hpp source/rooms/left_right_up_rooms.hpp source/rooms/closed_rooms.hpp source/rooms/splash_screens.hpp source/rooms/entrance_rooms.hpp source/rooms/exit_rooms.hpp source/rooms/RoomType.hpp source/sprites/enemies/bat.cpp source/sprites/enemies/bat.hpp source/sprites/enemies/spider.cpp source/sprites/enemies/spider.hpp source/sprites/sprite_type.hpp source/globals_definitions.hpp source/sound/sound_utils.hpp source/console/console_utils.hpp source/time/time_utils.h source/time/time_utils.cpp source/memory/oam_utils.cpp source/memory/oam_utils.hpp source/sprites/main_dude/whip.cpp source/sprites/main_dude/whip.hpp source/sprites/traps/spikes.cpp source/sprites/traps/spikes.h source/sprites/collectibles/chest.cpp source/sprites/collectibles/chest.hpp source/sprites/collectibles/crate.hpp source/sprites/collectibles/crate.cpp source/sprites/collectibles/shotgun.hpp source/sprites/collectibles/shotgun.cpp source/sprites/collectibles/bullet.hpp source/sprites/collectibles/bullet.cpp source/sprites/collectibles/spring_shoes.hpp source/sprites/collectibles/spring_shoes.cpp source/sprites/collectibles/mitt.hpp source/sprites/collectibles/mitt.cpp source/sprites/collectibles/glove.hpp source/sprites/collectibles/glove.cpp source/sprites/collectibles/compass.hpp source/sprites/collectibles/compass.cpp source/sprites/animations/got_collectible.hpp source/sprites/animations/got_collectible.cpp source/camera/layer_level.hpp source/sprites/enemies/shopkeeper.hpp source/sprites/enemies/shopkeeper.cpp source/sprites/main_dude/dude_utils.cpp source/sprites/main_dude/game_state.hpp source/sprites/main_dude/game_state.cpp source/sprites/enemies/caveman.hpp source/sprites/enemies/caveman.cpp source/sprites/animations/fall_poof.hpp source/sprites/animations/fall_poof.cpp source/sprites/items/cape.hpp source/sprites/items/cape.cpp source/sprites/items/spike_shoes.hpp source/sprites/items/spike_shoes.cpp source/sprites/items/pick.hpp source/sprites/items/pick.cpp source/sprites/items/jetpack.hpp source/sprites/items/jetpack.cpp source/sprites/items/parachute.hpp source/sprites/items/parachute.cpp source/sprites/items/rope_pile.hpp source/sprites/items/rope_pile.cpp source/sprites/items/bomb_bag.hpp source/sprites/items/bomb_bag.cpp source/sprites/items/bomb_box.hpp source/sprites/items/bomb_box.cpp source/sprites/animations/flame.hpp source/sprites/animations/flame_element.cpp source/sprites/animations/flame.cpp source/sprites/animations/flame_element.hpp source/sprites/enemies/damsel.hpp source/sprites/enemies/damsel.cpp source/sprites/animations/smooch.hpp source/sprites/animations/smooch.cpp source/rooms/shops.hpp source/sprites/non_interactive/lamp.h source/sprites/non_interactive/lamp.cpp source/tiles/direction.hpp source/sprites/collectibles/collectibles_utils.hpp source/sprites/collectibles/collectibles_utils.cpp source/sprites/shopping_object.h source/sprites/non_interactive/shopping_icon.h source/sprites/non_interactive/shopping_icon.cpp source/sprites/shopping_object.cpp source/sprites/traps/arrow_trap.h source/sprites/traps/arrow_trap.cpp source/sprites/animations/blast.hpp source/sprites/animations/blast.cpp source/rooms/snake_well.hpp source/sprites/enemies/skeleton.cpp source/sprites/enemies/skeleton.hpp source/sound/sound_utils.cpp source/sprites/animations/bone.hpp source/sprites/animations/bone.cpp source/sprites/animations/skull.hpp source/sprites/animations/skull.cpp source/sprites/animations/fake_skeleton.hpp source/sprites/animations/fake_skeleton.cpp source/globals_definitions.cpp source/base_map.hpp source/sprites/sprite_utils.cpp source/sprites/sprite_utils.hpp source/tiles/level_generator.hpp source/tiles/level_generator.cpp source/sprites/simple_sprite_wrapper.h source/sprites/simple_sprite_wrapper.cpp source/tiles/populating_utils.hpp source/tiles/populating_utils.cpp source/sprites/collectibles/ruby_big.h source/sprites/collectibles/ruby_small.h source/sprites/collectibles/triple_goldbar.h source/sprites/collectibles/triple_goldbar.cpp source/sprites/collectibles/single_goldbar.hpp source/sprites/collectibles/single_goldbar.cpp source/sprites/collectibles/ruby_small.cpp source/sprites/collectibles/ruby_big.cpp source/collisions/collisions_utils.h source/collisions/collisions_utils.cpp)
453 Bytes
Loading
466 Bytes
Loading
735 Bytes
Loading

source/collisions/collisions.cpp

Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -274,49 +274,16 @@ void Collisions::getNeighboringTiles(MapTile *mapTiles[32][32], int xx, int yy,
274274
}
275275

276276
void Collisions::bombNeighboringTiles(MapTile *mapTiles[32][32], int xx, int yy) {
277-
278-
//TODO Refactor
279-
if (mapTiles[xx - 1][yy]->destroyable) {
280-
delete mapTiles[xx - 1][yy];
281-
mapTiles[xx - 1][yy] = nullptr;
282-
}
283-
if (mapTiles[xx + 1][yy]->destroyable) {
284-
delete mapTiles[xx + 1][yy];
285-
mapTiles[xx + 1][yy] = nullptr;
286-
}
287-
if (mapTiles[xx][yy - 1]->destroyable) {
288-
delete mapTiles[xx][yy - 1];
289-
mapTiles[xx][yy - 1] = nullptr;
290-
}
291-
if (mapTiles[xx][yy + 1]->destroyable) {
292-
delete mapTiles[xx][yy + 1];
293-
mapTiles[xx][yy + 1] = nullptr;
294-
}
295-
if (mapTiles[xx][yy]->destroyable) {
296-
delete mapTiles[xx][yy];
297-
mapTiles[xx][yy] = nullptr;
298-
}
299-
if (mapTiles[xx - 1][yy - 1]->destroyable) {
300-
delete mapTiles[xx - 1][yy - 1];
301-
mapTiles[xx - 1][yy - 1] = nullptr;
302-
}
303-
if (mapTiles[xx + 1][yy - 1]->destroyable) {
304-
delete mapTiles[xx + 1][yy - 1];
305-
mapTiles[xx + 1][yy - 1] = nullptr;
306-
}
307-
if (mapTiles[xx - 1][yy + 1]->destroyable) {
308-
delete mapTiles[xx - 1][yy + 1];
309-
mapTiles[xx - 1][yy + 1] = nullptr;
310-
}
311-
if (mapTiles[xx + 1][yy + 1]->destroyable) {
312-
delete mapTiles[xx + 1][yy + 1];
313-
mapTiles[xx + 1][yy + 1] = nullptr;
314-
}
315-
if (mapTiles[xx][yy + 2]->destroyable) {
316-
delete mapTiles[xx][yy + 2];
317-
mapTiles[xx][yy + 2] = nullptr;
318-
}
319-
277+
mapTiles[xx - 1][yy]->exists = !mapTiles[xx - 1][yy]->destroyable;
278+
mapTiles[xx + 1][yy]->exists = !mapTiles[xx + 1][yy]->destroyable;
279+
mapTiles[xx][yy - 1]->exists = !mapTiles[xx][yy - 1]->destroyable;
280+
mapTiles[xx][yy + 1]->exists = !mapTiles[xx][yy + 1]->destroyable;
281+
mapTiles[xx][yy]->exists = !mapTiles[xx][yy]->destroyable;
282+
mapTiles[xx - 1][yy - 1]->exists = !mapTiles[xx - 1][yy - 1]->destroyable;
283+
mapTiles[xx + 1][yy - 1]->exists = !mapTiles[xx + 1][yy - 1]->destroyable;
284+
mapTiles[xx - 1][yy + 1]->exists = !mapTiles[xx - 1][yy + 1]->destroyable;
285+
mapTiles[xx + 1][yy + 1]->exists = !mapTiles[xx + 1][yy + 1]->destroyable;
286+
mapTiles[xx][yy + 2]->exists = !mapTiles[xx][yy + 2]->destroyable;
320287
}
321288

322289
bool Collisions::checkCollisionWithMainDude(int x, int y, int width, int height) {
@@ -370,3 +337,4 @@ void Collisions::getTilesOnLeftFromXY(int xx, int yy, MapTile **out_neighboringT
370337
out_neighboringTiles[a] = nullptr;
371338
}
372339
}
340+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
//
2+
// Created by xdbeef on 07.10.18.
3+
//
4+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//
2+
// Created by xdbeef on 07.10.18.
3+
//
4+
5+
#ifndef SPELUNKYDS_COLLISIONS_UTILS_H
6+
#define SPELUNKYDS_COLLISIONS_UTILS_H
7+
8+
//TODO Use initializer_list instead of variadic templates, because we expect arguments of same type. C++ Primer p. 291.
9+
10+
//!>variadic template function that recursively sets priority of a set of sprites
11+
12+
//function to end the recursion and set the last element
13+
template<typename T>
14+
void set_existance(bool existance, T *i) {
15+
i->exists = existance;
16+
}
17+
18+
//this function will be called for all but the last element in the pack
19+
template<typename T, typename ... Param>
20+
void set_priority(bool existance, T *i, Param *... params) {
21+
i->exists = existance;
22+
set_existance(existance, params ...);
23+
}
24+
25+
26+
#endif //SPELUNKYDS_COLLISIONS_UTILS_H

source/game_loop.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ void gameloop::run() {
3131
global::game_state->bombed = false;
3232
for (int a = 0; a < global::sprites.size(); a++)
3333
(*global::sprites.at(a)).bottomCollision = false;
34+
global::main_dude->bottomCollision = false;
3435
}
3536

3637
global::camera->update();

source/memory/oam_manager.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ OAMManager::initSprite(const unsigned short pallette[], int palLen, const unsign
8585
// }
8686

8787
/* Keep track of the available tiles */
88-
assert(current_oam_id_palette < SPRITE_COUNT && current_oam_id_tiles < SPRITE_COUNT);
88+
// assert(current_oam_id_palette < SPRITE_COUNT && current_oam_id_tiles < SPRITE_COUNT);
89+
if(!(current_oam_id_palette < SPRITE_COUNT && current_oam_id_tiles < SPRITE_COUNT))
90+
printf("\n\n\nTOO MUCH SPRITES/PALETTES!");
91+
8992
auto *spriteInfo = new SpriteInfo(); //TODO Smart pointer?
9093
SpriteEntry *spriteEntry = &oam->oamBuffer[current_oam_id_tiles];
9194

source/sound/sound_utils.cpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,36 @@
22
// Created by xdbeef on 22.07.18.
33
//
44

5-
65
#include <maxmod9.h>
76
#include "../../build/soundbank.h"
87
#include "../globals_declarations.hpp"
98
#include "sound_utils.hpp"
109

1110
void sound::start_menu_music() {
12-
// mmLoadEffect(SFX_MTITLE);
13-
// global::menu_music_handler = mmEffect(SFX_MTITLE);
11+
//probably should load it only once, on start
12+
mmLoadEffect(SFX_MTITLE);
13+
global::menu_music_handler = mmEffect(SFX_MTITLE);
1414
}
1515

1616
void sound::stop_menu_music() {
17-
// mmEffectCancel(global::menu_music_handler);
18-
// mmUnloadEffect(SFX_MTITLE);
17+
mmEffectCancel(global::menu_music_handler);
18+
//probably should not unload, due to memory fragmentation when loading/unloading every level
19+
mmUnloadEffect(SFX_MTITLE);
1920
}
2021

2122
void sound::start_cave_music() {
22-
// mmLoadEffect(SFX_MCAVE);
23-
// global::cave_music_handler = mmEffect(SFX_MCAVE);
23+
//probably should load it only once, on start
24+
mmLoadEffect(SFX_MCAVE);
25+
global::cave_music_handler = mmEffect(SFX_MCAVE);
2426
}
2527

2628
void sound::stop_cave_music() {
27-
// mmEffectCancel(global::cave_music_handler);
28-
// mmUnloadEffect(SFX_MCAVE);
29+
mmEffectCancel(global::cave_music_handler);
30+
//probably should not unload, due to memory fragmentation when loading/unloading every level
31+
mmUnloadEffect(SFX_MCAVE);
2932
}
3033

3134
void sound::load_sounds() {
32-
33-
//TODO Unload effects when not needed, aspecially MCAVE because mostly it's not needed (memory issues)
3435
mmInitDefaultMem((mm_addr) soundbank_bin);
3536
mmLoadEffect(SFX_XJUMP);
3637
mmLoadEffect(SFX_XBREAK);

0 commit comments

Comments
 (0)