diff --git a/Array-Jumper/Array-Jumper.vcxproj b/Array-Jumper/Array-Jumper.vcxproj index 658ea835..2cc9dc75 100644 --- a/Array-Jumper/Array-Jumper.vcxproj +++ b/Array-Jumper/Array-Jumper.vcxproj @@ -137,6 +137,8 @@ + + @@ -154,6 +156,8 @@ + + diff --git a/Array-Jumper/Array-Jumper.vcxproj.filters b/Array-Jumper/Array-Jumper.vcxproj.filters index dff4a580..fdd0c849 100644 --- a/Array-Jumper/Array-Jumper.vcxproj.filters +++ b/Array-Jumper/Array-Jumper.vcxproj.filters @@ -44,6 +44,8 @@ + + @@ -74,6 +76,8 @@ + + diff --git a/Array-Jumper/header/Player/PlayerModel.h b/Array-Jumper/header/Player/PlayerModel.h new file mode 100644 index 00000000..257df3e2 --- /dev/null +++ b/Array-Jumper/header/Player/PlayerModel.h @@ -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(); + }; +} \ No newline at end of file diff --git a/Array-Jumper/header/Player/PlayerView.h b/Array-Jumper/header/Player/PlayerView.h new file mode 100644 index 00000000..db6be535 --- /dev/null +++ b/Array-Jumper/header/Player/PlayerView.h @@ -0,0 +1,31 @@ +#pragma once +#include "../../header/UI/UIElement/ImageView.h" + +namespace Player +{ + class PlayerController; + class PlayerView + { + private: + sf::RenderWindow* game_window; + UI::UIElement::ImageView* player_image; + + float player_height; + float player_width; + + void initializePlayerImage(); + void drawPlayer(); + void loadPlayer(); + void calculatePlayerDimensions(); + void updatePlayerPosition(); + sf::Vector2f calulcatePlayerPosition(); + + public: + PlayerView(); + ~PlayerView(); + + void initialize(); + void update(); + void render(); + }; +} \ No newline at end of file diff --git a/Array-Jumper/source/Player/PlayerModel.cpp b/Array-Jumper/source/Player/PlayerModel.cpp new file mode 100644 index 00000000..59e04f93 --- /dev/null +++ b/Array-Jumper/source/Player/PlayerModel.cpp @@ -0,0 +1,37 @@ +#include "../../header/Player/PlayerModel.h" + + +namespace Player +{ + void Player::PlayerModel::initialize() + { + //Yet to implement + } + + PlayerState PlayerModel::getPlayerState() + { + return player_state; + } + + void PlayerModel::setPlayerState(PlayerState new_player_state) + { + player_state = new_player_state; + } + + void PlayerModel::resetPlayer() + { + current_position = 0; + player_state = PlayerState::ALIVE; + current_lives = max_lives; + } + + void PlayerModel::resetPosition() + { + current_position = 0; + } + + int PlayerModel::getCurrentPosition() { return current_position; } + void PlayerModel::setCurrentPosition(int new_position) { current_position = new_position; } + void PlayerModel::decreamentLife() { current_lives--; } + int PlayerModel::getCurrentLives() { return current_lives; } +} \ No newline at end of file diff --git a/Array-Jumper/source/Player/PlayerView.cpp b/Array-Jumper/source/Player/PlayerView.cpp new file mode 100644 index 00000000..270d7002 --- /dev/null +++ b/Array-Jumper/source/Player/PlayerView.cpp @@ -0,0 +1,71 @@ +#include "../../header/Player/PlayerView.h" +#include +#include "../../header/Global/Config.h" +#include "../../source/Global/ServiceLocator.cpp" +#include "../../header/UI/UIElement/ImageView.h" + + +using namespace Global; +using namespace UI::UIElement; +//using namespace Level; +namespace Player +{ + PlayerView::PlayerView() + { + game_window = nullptr; + player_image = new ImageView(); + } + + PlayerView::~PlayerView() {} + + void PlayerView::initialize() + { + game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + loadPlayer(); + } + + sf::Vector2f PlayerView::calulcatePlayerPosition() + { + return sf::Vector2f(0, 0); + } + + void PlayerView::updatePlayerPosition() + { + player_image->setPosition(calulcatePlayerPosition()); + } + + void PlayerView::drawPlayer() + { + player_image->render(); + } + + void PlayerView::update() + { + updatePlayerPosition(); + } + + void PlayerView::render() + { + //Yet to implement + } + + void PlayerView::loadPlayer() + { + calculatePlayerDimensions(); + initializePlayerImage(); + } + + void PlayerView::calculatePlayerDimensions() + { + player_height = 1000.f; + player_width = 1000.f; + } + + void PlayerView::initializePlayerImage() + { + player_image->initialize(Config::character_texture_path, + player_width, + player_height, + sf::Vector2f(0, 0)); + } +} \ No newline at end of file