Skip to content
Snippets Groups Projects
Commit 72825774 authored by Lorenz Martin Diel's avatar Lorenz Martin Diel
Browse files

unit hpp

parent 77c17106
Branches
No related tags found
No related merge requests found
...@@ -9,12 +9,69 @@ ...@@ -9,12 +9,69 @@
#include <vector> #include <vector>
#include <SDL.h> #include <SDL.h>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
namespace advanced_wars namespace advanced_wars
{ {
/** /**
* @brief The main window of the game * @brief The main window of the game
*/ */
struct VertexProperties
{
int x;
int y;
TerrainType terrain;
}
struct EdgeProperties
{
int weight;
}
using Graph = boost::adjacency_list<
boost::vecS, // OutEdgeList
boost::vecS, // VertexList
boost::undirectedS, // Directed
VertexProperties, // Vertex properties
EdgeProperties // Edge properties
>;
using Vertex = boost::graph_traits<Graph>::vertex_descriptor;
const std::map<std::pair<MovementType, TerrainType>, int> MOVEMENT_COSTS = {
{{MovementType::INFANTRY, TerrainType::PLAIN}, 1},
{{MovementType::INFANTRY, TerrainType::FOREST}, 2},
{{MovementType::INFANTRY, TerrainType::MOUNTAIN}, 2},
{{MovementType::INFANTRY, TerrainType::STREET}, 1},
{{MovementType::INFANTRY, TerrainType::WATER}, 999},
{{MovementType::TRACKED, TerrainType::PLAIN}, 1},
{{MovementType::TRACKED, TerrainType::FOREST}, 2},
{{MovementType::TRACKED, TerrainType::MOUNTAIN}, 999},
{{MovementType::TRACKED, TerrainType::STREET}, 1},
{{MovementType::TRACKED, TerrainType::WATER}, 999},
{{MovementType::WHEELED, TerrainType::PLAIN}, 2},
{{MovementType::WHEELED, TerrainType::FOREST}, 3},
{{MovementType::WHEELED, TerrainType::MOUNTAIN}, 999},
{{MovementType::WHEELED, TerrainType::STREET}, 1},
{{MovementType::WHEELED, TerrainType::WATER}, 999},
{{MovementType::AIR, TerrainType::PLAIN}, 1},
{{MovementType::AIR, TerrainType::FOREST}, 1},
{{MovementType::AIR, TerrainType::MOUNTAIN}, 1},
{{MovementType::AIR, TerrainType::STREET}, 1},
{{MovementType::AIR, TerrainType::WATER}, 999},
{{MovementType::SHIPENGINE, TerrainType::PLAIN}, 999},
{{MovementType::SHIPENGINE, TerrainType::FOREST}, 999},
{{MovementType::SHIPENGINE, TerrainType::MOUNTAIN}, 999},
{{MovementType::SHIPENGINE, TerrainType::STREET}, 999},
{{MovementType::SHIPENGINE, TerrainType::WATER}, 1}};
class Level : public Scene class Level : public Scene
{ {
public: public:
......
#ifndef TILE_HPP #ifndef TILE_HPP
#define TILE_HPP #define TILE_HPP
class Tile { enum class TerrainType
{
PLAIN,
MOUNTAIN,
FOREST,
WATER,
STREET,
AIR
};
class Tile
{
public: public:
Tile(); Tile();
}; };
......
...@@ -3,23 +3,27 @@ ...@@ -3,23 +3,27 @@
#include <string> #include <string>
#include <utility> #include <utility>
#include "tile.hpp"
// Enumerationen für Bewegungstyp und Waffenart // Enumerationen für Bewegungstyp und Waffenart
enum class MovementType { enum class MovementType
Foot, {
Tracks, INFANTRY,
Wheels, TRACKS,
Air, WHEELS,
Shipengine AIR,
SHIPENIGNE
}; };
enum class WeaponType { enum class WeaponType
Gun, {
Rocket GUN,
ROCKET
}; };
// Deklaration der Unit-Klasse // Deklaration der Unit-Klasse
class Unit { class Unit
{
public: public:
// Konstruktor // Konstruktor
Unit(std::string name, int health, int speed, int attack, std::pair<int, int> range, MovementType movement, WeaponType weapon); Unit(std::string name, int health, int speed, int attack, std::pair<int, int> range, MovementType movement, WeaponType weapon);
...@@ -51,6 +55,41 @@ private: ...@@ -51,6 +55,41 @@ private:
WeaponType weapon; WeaponType weapon;
int x; // Position auf der x-Achse int x; // Position auf der x-Achse
int y; // Position auf der y-Achse int y; // Position auf der y-Achse
// Definition der statischen Bewegungskosten
const std::map<std::pair<MovementType, TerrainType>, int> MOVEMENT_COSTS = {
{{MovementType::INFANTRY, TerrainType::PLAIN}, 1},
{{MovementType::INFANTRY, TerrainType::FOREST}, 2},
{{MovementType::INFANTRY, TerrainType::MOUNTAIN}, 2},
{{MovementType::INFANTRY, TerrainType::STREET}, 1},
{{MovementType::INFANTRY, TerrainType::WATER}, 999},
{{MovementType::TRACKED, TerrainType::PLAIN}, 1},
{{MovementType::TRACKED, TerrainType::FOREST}, 2},
{{MovementType::TRACKED, TerrainType::MOUNTAIN}, 999},
{{MovementType::TRACKED, TerrainType::STREET}, 1},
{{MovementType::TRACKED, TerrainType::WATER}, 999},
{{MovementType::WHEELED, TerrainType::PLAIN}, 2},
{{MovementType::WHEELED, TerrainType::FOREST}, 3},
{{MovementType::WHEELED, TerrainType::MOUNTAIN}, 999},
{{MovementType::WHEELED, TerrainType::STREET}, 1},
{{MovementType::WHEELED, TerrainType::WATER}, 999},
{{MovementType::AIR, TerrainType::PLAIN}, 1},
{{MovementType::AIR, TerrainType::FOREST}, 1},
{{MovementType::AIR, TerrainType::MOUNTAIN}, 1},
{{MovementType::AIR, TerrainType::STREET}, 1},
{{MovementType::AIR, TerrainType::WATER}, 999},
{{MovementType::SHIPENGINE, TerrainType::PLAIN}, 999},
{{MovementType::SHIPENGINE, TerrainType::FOREST}, 999},
{{MovementType::SHIPENGINE, TerrainType::MOUNTAIN}, 999},
{{MovementType::SHIPENGINE, TerrainType::STREET}, 999},
{{MovementType::SHIPENGINE, TerrainType::WATER}, 1}
};
}; };
#endif // UNIT_HPP #endif // UNIT_HPP
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment