From 733bcbd99d94b2c6366983a37df0041c20c571f5 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Mon, 12 Apr 2021 01:51:12 +0300 Subject: [PATCH] added elements in unit, map, game --- lib/libGameMain.a | Bin 3418 -> 182818 bytes lib/libGameUnit.a | Bin 4530 -> 29254 bytes src/game/game.cpp | 5 +++ src/game/game.hpp | 19 ++++++++++++ src/game/game_map.cpp | 48 +++++++++++++++++++++++++++++ src/game/game_map.hpp | 21 ++++++++++--- src/game/map_entities/cell.hpp | 6 ++-- src/game/map_entities/unit_obj.hpp | 9 +++--- src/game/unit/unit.cpp | 4 ++- src/game/unit/unit.hpp | 20 ++++++++++-- 10 files changed, 116 insertions(+), 16 deletions(-) diff --git a/lib/libGameMain.a b/lib/libGameMain.a index 8a17febfe8406620644b70f6545d3383ebf4e302..e163600065e45aa5e8af1f5daf0decc5d1c523b4 100644 GIT binary patch literal 182818 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 B$!-7u delta 117 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 co*ElB3&>RZs$j#u0u56K0LAYycK`qY diff --git a/src/game/game.cpp b/src/game/game.cpp index e69de29..d3638d3 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -0,0 +1,5 @@ +#include "game.hpp" +#include "game_map.hpp" + +Game::Game(size_t playersNum, std::pair sz) : + playersNum(playersNum), gameMap(sz) {} \ No newline at end of file diff --git a/src/game/game.hpp b/src/game/game.hpp index e69de29..e2cd153 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -0,0 +1,19 @@ +#include +#include "game_events.hpp" +#include "game_map.hpp" +#include "unit/unit.hpp" + +#pragma once + +class Game { +private: + size_t playersNum; + map::GameMap gameMap; + std::vector units; + events::EventCenter eventCenter; + // vector + // vector // for players +public: + // may be more than one map sizes ?? + Game(size_t playersNum, std::pair sz); +}; \ No newline at end of file diff --git a/src/game/game_map.cpp b/src/game/game_map.cpp index e69de29..47a68a0 100644 --- a/src/game/game_map.cpp +++ b/src/game/game_map.cpp @@ -0,0 +1,48 @@ +#include "game_map.hpp" + +namespace map { + GameMap::GameMap(std::pair sz) : + cells(sz.first, std::vector(sz.second)) {} + + size_t GameMap::addAction(const Action& action) { + if (freeActionsId.size() == 0) { + actions.push_back(action); + return actions.size() - 1; + } + else { + size_t id = freeActionsId.back(); + actions[id] = action; + actions.pop_back(); + return id; + } + } + + void GameMap::removeAction(size_t id) { + actions[id] = Action(); // empty action; + freeActionsId.push_back(id); + } + + const Cell& GameMap::getCell(std::pair pos) { + return cells[pos.first][pos.second]; + } + + void GameMap::setCell(std::pair pos, + const Cell& cell) { + cells[pos.first][pos.second] = cell; + } + + std::vector> GameMap::getWay( + std::pair start, + std::pair end) { + // now only easiest realisation, then may be A* + std::vector> way; + for (size_t i = start.first; i < end.first; + start.first < end.first ? ++i : --i) { + for (size_t j = start.second; i < end.second; + start.second < end.second ? ++i : --i) { + way.push_back({i, j}); + } + } + return way; + } +} \ No newline at end of file diff --git a/src/game/game_map.hpp b/src/game/game_map.hpp index 55a82ad..2c9bbf7 100644 --- a/src/game/game_map.hpp +++ b/src/game/game_map.hpp @@ -1,7 +1,6 @@ #include #include "map_entities/cell.hpp" #include "map_entities/action.hpp" -#include "map_entities/unit_obj.hpp" #pragma once @@ -9,11 +8,23 @@ namespace map { class GameMap { private: std::vector > cells; - std::vector actions; - std::vector units; + std::vector actions; + std::vector freeActionsId; public: - GameMap() { + GameMap(std::pair sz); + + size_t addAction(const Action& action); + + void removeAction(size_t id); + + const Cell& getCell(std::pair pos); + + void setCell(std::pair pos, + const Cell& cell); + + std::vector> getWay( + std::pair start, + std::pair end); - } }; } \ No newline at end of file diff --git a/src/game/map_entities/cell.hpp b/src/game/map_entities/cell.hpp index 08e03a7..5874b93 100644 --- a/src/game/map_entities/cell.hpp +++ b/src/game/map_entities/cell.hpp @@ -1,7 +1,7 @@ #pragma once namespace map { - enum class CellType { // needed to choose final types + enum class CellType { ctNone, ctUnit, ctWeapon, @@ -18,7 +18,7 @@ namespace map { }; struct Cell { - CellType type; - // int ??speed??; // speed when move inside + CellType type = CellType::ctNone; + CellPlayer player = CellPlayer::cpNone; }; } diff --git a/src/game/map_entities/unit_obj.hpp b/src/game/map_entities/unit_obj.hpp index fd06e51..6bcb084 100644 --- a/src/game/map_entities/unit_obj.hpp +++ b/src/game/map_entities/unit_obj.hpp @@ -1,6 +1,7 @@ #include #include #include "cell.hpp" +#include "../game_map.hpp" #pragma once @@ -12,10 +13,10 @@ namespace map { Coord size; CellType cellType; public: - UnitObj(const Coord& pos, const Coord& size, const CellType& cellType) : - pos(pos), size(size), cellType(cellType) { - - } + UnitObj() {} + UnitObj(const Coord& pos, const Coord& size, + const CellType& cellType, map::GameMap* map) : + pos(pos), size(size), cellType(cellType) {} void updateAll() { } diff --git a/src/game/unit/unit.cpp b/src/game/unit/unit.cpp index 5420efd..dea4de6 100644 --- a/src/game/unit/unit.cpp +++ b/src/game/unit/unit.cpp @@ -1,5 +1,7 @@ #include "unit.hpp" namespace unit { - + Unit::Unit(map::GameMap* map, events::EventCenter* events) { + + } } \ No newline at end of file diff --git a/src/game/unit/unit.hpp b/src/game/unit/unit.hpp index 6ef2c1c..f7efb11 100644 --- a/src/game/unit/unit.hpp +++ b/src/game/unit/unit.hpp @@ -1,22 +1,36 @@ #include #include "../game_map.hpp" +#include "../game_events.hpp" #include "unit_module.hpp" +#include "../map_entities/unit_obj.hpp" #pragma once namespace unit { class Unit { private: + const size_t MEMORY_SIZE = 100; + // parts of unit, that do something std::vector modules; // memory, help modules communicate and handle events std::vector memory; + + map::UnitObj unitObj; map::GameMap* map; - public: - Unit(); - void update(); + events::EventCenter* eventCenter; + public: + Unit(map::GameMap* map, events::EventCenter* eventCenter); + + void step(); + + size_t addModule(Module module); + + void removeModule(size_t id); + + void damage(); }; }