Skip to content

Commit

Permalink
Updated collision algorithm, misc changes
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnBobSmith committed Apr 26, 2017
1 parent 34e5c47 commit c48868d
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 22 deletions.
4 changes: 3 additions & 1 deletion include/Collision.h
Expand Up @@ -2,9 +2,11 @@
#define COLLISION_H

#include <SFML/Graphics.hpp>
#include <unordered_set>
#include <vector>
#include <string>


class Collision
{
public:
Expand All @@ -27,7 +29,7 @@ class Collision
void positionBoundaryCollisionBoxes();

//Place the collision boxes at certain points in the level.
void positionWorldCollisionBoxes(const std::vector<long int> &level, std::string world);
void positionWorldCollisionBoxes(const std::vector<long int> &level, const std::unordered_set<int> &objectsToCollideWith);

//Reset the collision boxes by placing them at 0,0.
void resetCollision();
Expand Down
5 changes: 5 additions & 0 deletions include/Config.h
Expand Up @@ -2,6 +2,7 @@
#define CONFIG_H

#include <SFML/Graphics.hpp>
#include <unordered_set>
#include <string>

class Config
Expand All @@ -16,6 +17,10 @@ class Config
//The level that is loaded
std::string LEVEL_STRING = "grassland";

const std::unordered_set<int> objectsInGrassland = {3, 6, 7, 10, 11, 12};
const std::unordered_set<int> objectsInFarmland = {3, 7, 8};
const std::unordered_set<int> objectsInAnimprop = {1, 4};

private:
//The window name
std::string appName = "World Testing";
Expand Down
16 changes: 16 additions & 0 deletions map/shop.map
@@ -0,0 +1,16 @@
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
23 changes: 5 additions & 18 deletions src/Collision.cpp
Expand Up @@ -93,9 +93,10 @@ void Collision::positionBoundaryCollisionBoxes()
}
}

void Collision::positionWorldCollisionBoxes(const std::vector<long int> &level, std::string world)
void Collision::positionWorldCollisionBoxes(const std::vector<long int> &level,
const std::unordered_set<int> &objectsToCollideWith)
{
//For LEVEL_STRING
//For our unordered sets
Config config;

resetCollision();
Expand All @@ -110,22 +111,8 @@ void Collision::positionWorldCollisionBoxes(const std::vector<long int> &level,
y += 32;
}
//The world objects we should collide with per map basis.
if (world == "grassland") {
if (level[i] == 3 || level[i] == 6 || level[i] == 7 || level[i] == 10 ||
level[i] == 11 || level[i] == 12) {

collVector[i]->setPosition(x, y - 32);
}
}
if (world == "farmland") {
if (level[i] == 3 || level[i] == 7 || level[i] == 8) {
collVector[i]->setPosition(x, y - 32);
}
}
if (world == "animprops") {
if (level[i] == 1 || level[i] == 4) {
collVector[i]->setPosition(x, y - 32);
}
if (objectsToCollideWith.count(level[i])) {
collVector[i]->setPosition(x, y - 32);
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/main.cpp
Expand Up @@ -97,9 +97,9 @@ int main()
//Position collision boxes on the edge of the map
collision.positionBoundaryCollisionBoxes();
//Position our world/level collision boxes
grasslandCollision.positionWorldCollisionBoxes(grassland.currentLevel, "grassland");
farmlandCollision.positionWorldCollisionBoxes(farmland.currentLevel, "farmland");
animPropsCollision.positionWorldCollisionBoxes(animPropsWorld.currentLevel, "animprops");
grasslandCollision.positionWorldCollisionBoxes(grassland.currentLevel, config.objectsInGrassland);
farmlandCollision.positionWorldCollisionBoxes(farmland.currentLevel, config.objectsInFarmland);
animPropsCollision.positionWorldCollisionBoxes(animPropsWorld.currentLevel, config.objectsInAnimprop);
//Position the collision boxes for our flags
for (int i = 0; i < flagsCollision.MAX_COLLISION_BOXES; ++i) {
flagsCollision.collVector[i]->setPosition(0, 0);
Expand Down
Binary file added src/shop.xcf
Binary file not shown.

0 comments on commit c48868d

Please sign in to comment.