Removed unneeded comments, improved documentation.

This commit is contained in:
Felix Ableitner 2013-04-04 23:00:52 +02:00
parent a094c01d55
commit 273153709c
18 changed files with 30 additions and 75 deletions

View file

@ -11,7 +11,6 @@
#include "sprites/Player.h"
#include "util/Yaml.h"
/// Goal amount of frames per second.
const int Game::FPS_GOAL = 60;
/**

View file

@ -19,14 +19,12 @@ class World;
* Use vertex for tiles.
*/
class Game : private sf::NonCopyable {
// Public functions.
public:
explicit Game(sf::RenderWindow& window);
~Game();
void loop();
// Private functions.
private:
void input();
void render();
@ -39,7 +37,6 @@ private:
void generate();
sf::Vector2<float> convertCoordinates(int x, int y);
// Private variables.
private:
static const int FPS_GOAL;
@ -55,5 +52,4 @@ private:
bool mPaused;
};
#endif /* DG_GAME_H_ */

View file

@ -130,45 +130,48 @@ World::astarArea(Area* start, Area* end) const {
return std::vector<World::Portal*>();
}
std::unordered_set<Area*> closedset; // The set of nodes already evaluated.
// Set of nodes to be evaluated, with corresponding estimated cost start -> area -> goal
std::unordered_map<Area*, float> openset;
// The map of navigated nodes, with previous, lowest cost Area/Portal.
std::unordered_map<Area*, std::pair<Area*, Portal*>> came_from;
std::unordered_map<Area*, float> g_score; // Cost from start along best known path.
std::unordered_set<Area*> closed;
std::unordered_map<Area*, float> openAreasEstimatedCost;
// Navigated areas with previous area/portal.
std::unordered_map<Area*, std::pair<Area*, Portal*>> previousAreaAndPortal;
std::unordered_map<Area*, float> bestPathCost;
openset[start] = heuristic_cost_estimate(start, end);
g_score[start] = 0;
openAreasEstimatedCost[start] = heuristic_cost_estimate(start, end);
bestPathCost[start] = 0;
while (!openset.empty()) {
// the node in openset having the lowest f_score value.
Area* current = std::min_element(openset.begin(), openset.end())->first;
while (!openAreasEstimatedCost.empty()) {
Area* current = std::min_element(openAreasEstimatedCost.begin(),
openAreasEstimatedCost.end())->first;
if (current == end) {
std::vector<Portal*> path;
auto previous = current;
while (previous != start) {
path.push_back(came_from[previous].second);
previous = came_from[previous].first;
path.push_back(previousAreaAndPortal[previous].second);
previous = previousAreaAndPortal[previous].first;
}
return path;
}
openset.erase(current);
closedset.insert(current);
openAreasEstimatedCost.erase(current);
closed.insert(current);
for (Portal& portal : current->portals) {
Area* neighbor = portal.area;
// Use edge weight instead of heuristic cost estimate?
float tentative_g_score = g_score[current] + heuristic_cost_estimate(current,neighbor);
if (closedset.find(neighbor) != closedset.end()) {
if (tentative_g_score >= g_score[neighbor]) {
float tentative_g_score = bestPathCost[current] +
heuristic_cost_estimate(current,neighbor);
if (closed.find(neighbor) != closed.end()) {
if (tentative_g_score >= bestPathCost[neighbor]) {
continue;
}
}
if ((openset.find(neighbor) == openset.end()) || (tentative_g_score < g_score[neighbor])) {
came_from[neighbor] = std::make_pair(current, &portal);
g_score[neighbor] = tentative_g_score;
openset[neighbor] = g_score[neighbor] + heuristic_cost_estimate(neighbor, end);
if ((openAreasEstimatedCost.find(neighbor) ==
openAreasEstimatedCost.end()) ||
(tentative_g_score < bestPathCost[neighbor])) {
previousAreaAndPortal[neighbor] = std::make_pair(current,
&portal);
bestPathCost[neighbor] = tentative_g_score;
openAreasEstimatedCost[neighbor] = bestPathCost[neighbor] +
heuristic_cost_estimate(neighbor, end);
}
}
}

View file

@ -21,7 +21,6 @@ class Sprite;
* Render order is determined by Physical::Category (higher number on top).
*/
class World : public sf::Drawable {
// Public functions.
public:
void insert(std::shared_ptr<Sprite> drawable);
void remove(std::shared_ptr<Sprite> drawable);
@ -35,7 +34,6 @@ public:
std::vector<std::shared_ptr<Character> >
getCharacters(const sf::Vector2f& position, float maxDistance) const;
// Private types.
private:
struct Area;
/**
@ -58,7 +56,6 @@ private:
std::vector<Portal> portals;
};
// Private functions.
private:
void draw(sf::RenderTarget& target, sf::RenderStates states) const;
bool testCollision(std::shared_ptr<Sprite> spriteA, std::shared_ptr<Sprite> spriteB,
@ -67,7 +64,6 @@ private:
float heuristic_cost_estimate(Area* start, Area* end) const;
std::vector<Portal*> astarArea(Area* start, Area* end) const;
// Private variables.
private:
std::map<Sprite::Category, std::vector<std::shared_ptr<Sprite> > > mDrawables;
std::vector<Area> mAreas; //< This has to be a vector as objects are compared by address.

View file

@ -118,7 +118,7 @@ Character::setDestination(const sf::Vector2f& destination) {
/**
* Move towards a destination. Call setDestination() for setting the destination.
* This should be called from think().
* This should be called from think() if path finding is to be used.
*/
void
Character::move() {

View file

@ -18,14 +18,12 @@ class Yaml;
* Provides think function for AI, manages health, drops body on death.
*/
class Character : public Sprite {
// Public functions.
public:
explicit Character(World& world, const Data& data, const Yaml& config);
virtual ~Character() = 0;
void onDamage(int damage);
// Protected functions.
protected:
virtual void onThink(int elapsed);
virtual void onDeath();
@ -36,7 +34,6 @@ protected:
void move();
std::vector<std::shared_ptr<Character> > getCharacters(float maxDistance) const;
// Private variables.
private:
static const std::string KEY_HEALTH;
static const int DEFAULT_HEALTH;

View file

@ -16,14 +16,12 @@ class Yaml;
* Bullet particle fired by a weapon, may damage actors.
*/
class Bullet : public Particle {
// Public functions.
public:
explicit Bullet(const sf::Vector2f& position, Sprite& shooter,
sf::Vector2f direction, const Yaml& config);
void onCollide(std::shared_ptr<Sprite> other);
// Private variables.
private:
static const std::string KEY_DAMAGE;
static const int DEFAULT_DAMAGE;

View file

@ -25,7 +25,6 @@ class Particle;
* - pass xml filename
*/
class Weapon : public Emitter {
// Public functions.
public:
explicit Weapon(World& world, Sprite& holder, const Yaml& config);
@ -33,11 +32,9 @@ public:
void releaseTrigger();
void onThink(int elapsed);
// Protected functions.
protected:
std::shared_ptr<Sprite> createParticle();
// Private variables.
private:
static const std::string KEY_BULLET;
static const std::string DEFAULT_BULLET;

View file

@ -15,18 +15,15 @@ class Particle;
class Sprite;
class Emitter {
// Public functions.
public:
explicit Emitter(World& world);
virtual ~Emitter();
// Protected functions.
protected:
void emit();
/// Creates a particle. Allows to use a user-defined particle class and custom settings.
virtual std::shared_ptr<Sprite> createParticle() = 0;
// Private variables.
private:
World& mWorld;
};

View file

@ -16,7 +16,6 @@ class Yaml;
* Prototype for a particle.
*/
class Particle : public Sprite {
// Public functions.
public:
explicit Particle(const Yaml& config, const Data& data);
virtual ~Particle();

View file

@ -13,7 +13,6 @@
class Yaml;
class Corpse : public Sprite {
// Public functions.
public:
explicit Corpse(const sf::Vector2f& position, const Yaml& config);
};

View file

@ -14,7 +14,6 @@ class World;
class Yaml;
class Enemy : public Character {
// Public functions.
public:
explicit Enemy(World& world, const sf::Vector2f& position, const Yaml& config);
};

View file

@ -81,10 +81,5 @@ Player::setDirection(Direction direction, bool unset) {
void
Player::onThink(int elapsed) {
Character::onThink(elapsed);
if (!mDirection) {
// Only use path finding movement if no direct input movement active.
Character::move();
}
// Look towards crosshair.
Sprite::setDirection(mCrosshairPosition);
}

View file

@ -17,7 +17,6 @@ class World;
* Player object.
*/
class Player : public Character {
// Public types.
public:
/**
* Movement directions that can be set via Player::setDirection().
@ -29,7 +28,6 @@ public:
DOWN = 1 << 3
};
// Public functions.
public:
explicit Player(World& world, const sf::Vector2f& position, const Yaml& config);
@ -38,11 +36,9 @@ public:
void releaseTrigger();
void setDirection(Direction direction, bool unset);
// Private functions.
private:
void onThink(int elapsed);
// Private variables.
private:
sf::Vector2f mCrosshairPosition; //< Relative position of the point to fire at (mouse cursor).
unsigned char mDirection; //< Current movement direction for direct control.

View file

@ -13,7 +13,6 @@
class World;
class TileManager : public sf::Drawable {
// Public types.
public:
enum class Type {
FLOOR,
@ -25,12 +24,9 @@ public:
*/
typedef sf::Vector2i TilePosition;
// Public variables.
public:
/// The size of a single tile (pixels).
static const sf::Vector2i TILE_SIZE;
static const sf::Vector2i TILE_SIZE; //< Tile size in pixels.
// Public functions.
public:
explicit TileManager(World& world);
@ -39,15 +35,12 @@ public:
bool raycast(const sf::Vector2f& lineStart,
const sf::Vector2f& lineEnd) const;
// Private types.
private:
class Tile;
// Private functions.
private:
void draw(sf::RenderTarget& target, sf::RenderStates states) const;
// Private variables.
private:
World& mWorld;
std::vector<std::shared_ptr<Tile> > mTiles;
@ -57,7 +50,6 @@ private:
* Holds information about a single tile.
*/
class TileManager::Tile : public Sprite {
// Public functions.
public:
explicit Tile(Type type, const TilePosition& position);
@ -66,7 +58,6 @@ public:
static std::string getConfig(Type type);
// Private variables.
private:
Type mType;
};

View file

@ -37,7 +37,6 @@
* @endcode
*/
class Loader : public Singleton<Loader> {
// Public functions.
public:
/**
* Sets the general resource folder path.
@ -60,7 +59,6 @@ public:
return static_cast<SpecificLoader<T>* >(getLoader<T>().get())->fromFile(mFolder, file);
}
// Private types.
private:
/**
* We need this to save templates of different types in the same container.
@ -99,7 +97,6 @@ private:
std::string mSubfolder;
};
// Private functions.
private:
/**
* For Singleton behaviour.
@ -122,7 +119,6 @@ private:
}
};
// Private variables.
private:
std::string mFolder;
std::map<std::type_index, std::unique_ptr<LoaderBase> > mLoaders;

View file

@ -16,7 +16,6 @@
*/
class ResourceManager : public thor::MultiResourceCache,
public Singleton<ResourceManager> {
// Private functions.
private:
friend class Singleton<ResourceManager>;
ResourceManager() {

View file

@ -21,7 +21,6 @@
* Interface to a YAML file.
*/
class Yaml {
// Public functions.
public:
explicit Yaml(const std::string& filename);
~Yaml();
@ -33,7 +32,6 @@ public:
template <typename T>
T get(const std::string& key, const T& defaultValue) const;
// Private variables.
private:
static std::string mFolder;