mirror of
https://github.com/ProgramSnail/rts_game_backend.git
synced 2026-01-25 12:57:08 +00:00
added factory, unit maiden easier
This commit is contained in:
parent
52024e4b06
commit
1c87c30dda
13 changed files with 230 additions and 69 deletions
|
|
@ -7,30 +7,89 @@
|
|||
#pragma once
|
||||
|
||||
namespace unit {
|
||||
class UnitFactory;
|
||||
|
||||
class Unit {
|
||||
private:
|
||||
const size_t MEMORY_SIZE = 100;
|
||||
friend class UnitFactory;
|
||||
|
||||
// parts of unit, that do something
|
||||
std::vector<Module> modules;
|
||||
|
||||
// memory, help modules communicate and handle events
|
||||
std::vector<int> memory;
|
||||
int basicStrength;
|
||||
int strength;
|
||||
int shield;
|
||||
int speed;
|
||||
int player;
|
||||
int cellType;
|
||||
|
||||
map::UnitObj unitObj;
|
||||
|
||||
map::GameMap* map;
|
||||
map::GameMap* gameMap = nullptr;
|
||||
|
||||
events::EventCenter* eventCenter;
|
||||
events::EventCenter* eventCenter = nullptr;
|
||||
|
||||
void setCellType(int newCellType) {
|
||||
cellType = newCellType;
|
||||
unitObj.setCellType(cellType);
|
||||
}
|
||||
public:
|
||||
Unit(map::GameMap* map, events::EventCenter* eventCenter);
|
||||
Unit() = default;
|
||||
|
||||
Unit(map::GameMap* gameMap, events::EventCenter* eventCenter);
|
||||
|
||||
void step();
|
||||
|
||||
size_t addModule(Module module);
|
||||
void damage(int damage, int power);
|
||||
|
||||
void removeModule(size_t id);
|
||||
bool isDestroyed() {
|
||||
return strength <= 0;
|
||||
}
|
||||
|
||||
void damage();
|
||||
void setPlayer(int newPlayer) {
|
||||
player = newPlayer;
|
||||
unitObj.setPlayer(player);
|
||||
}
|
||||
};
|
||||
|
||||
class UnitFactory {
|
||||
private:
|
||||
Unit unit;
|
||||
public:
|
||||
UnitFactory() = default;
|
||||
|
||||
UnitFactory& setBasicStrength(int basicStrength) {
|
||||
unit.basicStrength = basicStrength;
|
||||
unit.strength = basicStrength;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UnitFactory& setShield(int shield) {
|
||||
unit.shield = shield;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UnitFactory& setSpeed(int speed) {
|
||||
unit.speed = speed;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UnitFactory& setCellType(int cellType) {
|
||||
unit.setCellType(cellType);
|
||||
return *this;
|
||||
}
|
||||
|
||||
UnitFactory& setEventCenter(events::EventCenter* eventCenter) {
|
||||
unit.eventCenter = eventCenter;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UnitFactory& setGameMap(map::GameMap* gameMap) {
|
||||
unit.gameMap = gameMap;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Unit build(int player) {
|
||||
Unit cp = unit;
|
||||
cp.setPlayer(player);
|
||||
return cp;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue