Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Array-Jumper/Array-Jumper.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,13 @@
<ClCompile Include="source\Event\EventService.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="source\Global\ServiceLocator.cpp" />
<ClCompile Include="source\Level\LevelController.cpp" />
<ClCompile Include="source\Level\LevelModel.cpp" />
<ClCompile Include="source\Level\LevelService.cpp" />
<ClCompile Include="source\Level\LevelView.cpp" />
<ClCompile Include="source\Player\PlayerController.cpp" />
<ClCompile Include="source\Player\PlayerModel.cpp" />
<ClCompile Include="source\Player\PlayerView.cpp" />
<ClCompile Include="source\Sound\SoundService.cpp" />
<ClCompile Include="source\Main\GameService.cpp" />
<ClCompile Include="source\Graphics\GraphicService.cpp" />
Expand All @@ -154,6 +161,17 @@
<ItemGroup>
<ClInclude Include="header\Global\Config.h" />
<ClInclude Include="header\Event\EventService.h" />
<ClInclude Include="header\Level\BlockType.h" />
<ClInclude Include="header\Level\LevelConfiguration.h" />
<ClInclude Include="header\Level\LevelController.h" />
<ClInclude Include="header\Level\LevelData.h" />
<ClInclude Include="header\Level\LevelModel.h" />
<ClInclude Include="header\Level\LevelService.h" />
<ClInclude Include="header\Level\LevelView.h" />
<ClInclude Include="header\Player\MovementDirection.h" />
<ClInclude Include="header\Player\PlayerController.h" />
<ClInclude Include="header\Player\PlayerModel.h" />
<ClInclude Include="header\Player\PlayerView.h" />
<ClInclude Include="header\Sound\SoundService.h" />
<ClInclude Include="header\Main\GameService.h" />
<ClInclude Include="header\Graphics\GraphicService.h" />
Expand Down
18 changes: 18 additions & 0 deletions Array-Jumper/Array-Jumper.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@
<ClCompile Include="source\UI\UIElement\ImageView.cpp" />
<ClCompile Include="source\UI\UIElement\TextView.cpp" />
<ClCompile Include="source\UI\UIElement\UIView.cpp" />
<ClCompile Include="source\Player\PlayerModel.cpp" />
<ClCompile Include="source\Player\PlayerView.cpp" />
<ClCompile Include="source\Player\PlayerController.cpp" />
<ClCompile Include="source\Level\LevelModel.cpp" />
<ClCompile Include="source\Level\LevelView.cpp" />
<ClCompile Include="source\Level\LevelController.cpp" />
<ClCompile Include="source\Level\LevelService.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="header\Main\GameService.h">
Expand Down Expand Up @@ -74,6 +81,17 @@
<ClInclude Include="header\UI\UIElement\ImageView.h" />
<ClInclude Include="header\UI\UIElement\TextView.h" />
<ClInclude Include="header\UI\UIElement\UIView.h" />
<ClInclude Include="header\Player\PlayerModel.h" />
<ClInclude Include="header\Player\PlayerView.h" />
<ClInclude Include="header\Player\PlayerController.h" />
<ClInclude Include="header\Level\LevelModel.h" />
<ClInclude Include="header\Level\LevelView.h" />
<ClInclude Include="header\Level\LevelController.h" />
<ClInclude Include="header\Level\BlockType.h" />
<ClInclude Include="header\Level\LevelData.h" />
<ClInclude Include="header\Level\LevelService.h" />
<ClInclude Include="header\Player\MovementDirection.h" />
<ClInclude Include="header\Level\LevelConfiguration.h" />
</ItemGroup>
<ItemGroup>
<Media Include="assets\sounds\background_music.mp3" />
Expand Down
13 changes: 13 additions & 0 deletions Array-Jumper/header/Level/BlockType.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once
namespace Level
{
enum BlockType
{
OBSTACLE_ONE = -1,
OBSTACLE_TWO = -2,
TARGET = 0,
ONE = 1,
TWO = 2,
THREE = 3,
};
}
49 changes: 49 additions & 0 deletions Array-Jumper/header/Level/LevelConfiguration.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#pragma once
#include "LevelData.h"
#include "BlockType.h"

namespace Level
{
class LevelConfiguration
{
private:


BlockType level_1[LevelData::NUMBER_OF_BOXES] =
{
ONE, TWO, OBSTACLE_ONE, TWO, THREE, ONE, OBSTACLE_TWO, TWO, ONE, TARGET
};

BlockType level_2[LevelData::NUMBER_OF_BOXES] =
{
ONE, TWO, OBSTACLE_TWO, ONE, TWO, OBSTACLE_ONE, THREE, OBSTACLE_ONE, ONE, TARGET
};

BlockType level_3[LevelData::NUMBER_OF_BOXES] =
{
ONE, THREE, OBSTACLE_ONE, OBSTACLE_TWO, ONE, TWO, OBSTACLE_ONE, TWO, ONE, TARGET
};

public:
static const int NUMBER_OF_LEVELS = 3;
LevelData levels[NUMBER_OF_LEVELS];

LevelConfiguration()
{
for (int i = 0; i < LevelData::NUMBER_OF_BOXES; i++)
{
levels[0].level_boxes[i] = level_1[i];
}

for (int i = 0; i < LevelData::NUMBER_OF_BOXES; i++)
{
levels[1].level_boxes[i] = level_2[i];
}

for (int i = 0; i < LevelData::NUMBER_OF_BOXES; i++)
{
levels[2].level_boxes[i] = level_3[i];
}
}
};
}
32 changes: 32 additions & 0 deletions Array-Jumper/header/Level/LevelController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once

#include "LevelModel.h"

namespace Level
{
class LevelView;
class LevelModel;

class LevelController
{
private:
LevelView* level_view;
LevelModel* level_model;

public:
LevelController();
~LevelController();

void initialize();
void update();
void render();

BoxDimensions getBoxDimensions();
BlockType getCurrentBoxValue(int currentPosition);
bool isLastLevel();
void loadNextLevel();
int getCurrentLevelNumber();

void reset();
};
}
13 changes: 13 additions & 0 deletions Array-Jumper/header/Level/LevelData.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once
#include "BlockType.h"

namespace Level
{

struct LevelData
{
static const int NUMBER_OF_BOXES = 10;

BlockType level_boxes[NUMBER_OF_BOXES];
};
}
39 changes: 39 additions & 0 deletions Array-Jumper/header/Level/LevelModel.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#pragma once
#pragma once
#include "LevelData.h"
#include "LevelConfiguration.h"

namespace Level
{

struct BoxDimensions
{
float box_width;
float box_height;
float box_spacing;

float box_spacing_percentage = 0.3f;
float bottom_offset = 200.f;
};


class LevelModel
{
private:
const int number_of_level = LevelConfiguration::NUMBER_OF_LEVELS;
LevelConfiguration level_configuration;

int current_level_index;
public:
LevelModel();
~LevelModel();

BlockType getCurrentBoxValue(int currentPosition);

bool isLastLevel();
void loadNextLevel();
int getCurrentLevelNumber();

void reset();
};
}
32 changes: 32 additions & 0 deletions Array-Jumper/header/Level/LevelService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once
#include "BlockType.h"


namespace Level
{
class LevelController;
struct BoxDimensions;

class LevelService
{
private:
LevelController* level_controller;

void destroy();
public:
LevelService();
~LevelService();

void intialize();
void update();
void render();

BoxDimensions getBoxDimensions();
BlockType getCurrentBoxValue(int currentPosition);
bool isLastLevel();
void loadNextLevel();
int getCurrentLevelNumber();

void resetLevels();
};
}
54 changes: 54 additions & 0 deletions Array-Jumper/header/Level/LevelView.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#pragma once
#pragma once
#include "LevelModel.h"
#include "LevelData.h"
#include "LevelController.h"
#include "../../header/UI/UIElement/ImageView.h"

namespace Level
{
class LevelView
{
private:

sf::RenderWindow* game_window;
LevelController* level_controller;

UI::UIElement::ImageView* background_image;
const float background_alpha = 110.f;

UI::UIElement::ImageView* box_image;
UI::UIElement::ImageView* target_overlay_image;
UI::UIElement::ImageView* letter_one_overlay_image;
UI::UIElement::ImageView* letter_two_overlay_image;
UI::UIElement::ImageView* letter_three_overlay_image;
UI::UIElement::ImageView* obstacle_one_overlay_image;
UI::UIElement::ImageView* obstacle_two_overlay_image;

BoxDimensions box_dimensions;

void createImages();
void initializeImages();
void updateImages();
void drawLevel();
void drawBox(sf::Vector2f position);
void drawBoxValue(sf::Vector2f position, BlockType box_value);
void deleteImages();

void calculateBoxDimensions();
sf::Vector2f calculateBoxPosition(int index);
void calculateBoxWidthHeight();
void calculateBoxSpacing();
UI::UIElement::ImageView* getBoxOverlayImage(BlockType block_type);
public:
LevelView(LevelController* controller);
~LevelView();

void initialize();
void update();
void render();

BoxDimensions getBoxDimensions();

};
}
6 changes: 6 additions & 0 deletions Array-Jumper/header/Player/MovementDirection.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#pragma once
enum MovementDirection
{
FORWARD,
BACKWARD
};
44 changes: 44 additions & 0 deletions Array-Jumper/header/Player/PlayerController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#pragma once
#include "../../header/Event/EventService.h"
#include "MovementDirection.h"

namespace Player
{
class PlayerView;
class PlayerModel;
enum class PlayerState;

class PlayerController
{
private:
PlayerModel* player_model;
PlayerView* player_view;

Event::EventService* event_service;

void destroy();

void readInput();
void move(MovementDirection direction);
void jump(MovementDirection direction);
bool isPositionInBound(int targetPosition);
void onDeath();

public:
PlayerController();
~PlayerController();

void initialize();
void update();
void render();

PlayerState getPlayerState();
void setPlayerState(PlayerState new_player_state);

int getCurrentPosition();
int getCurrentLives();

void resetPlayer();
void takeDamage();
};
}
34 changes: 34 additions & 0 deletions Array-Jumper/header/Player/PlayerModel.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once
namespace Player
{
enum class PlayerState
{
ALIVE,
DEAD
};

class PlayerModel
{
private:

const int max_lives = 3;

PlayerState player_state;
int current_position;
int current_lives;

public:

void initialize();

PlayerState getPlayerState();
void setPlayerState(PlayerState new_player_state);

void resetPlayer();
void resetPosition();
int getCurrentPosition();
void setCurrentPosition(int new_position);
void decreamentLife();
int getCurrentLives();
};
}
Loading