Removed secondary Sprite constructor (now only via Yaml).
This commit is contained in:
parent
9b61304d1e
commit
516633a374
12 changed files with 26 additions and 44 deletions
|
@ -33,7 +33,7 @@ TileManager::TileManager(b2World& world) :
|
|||
* @param world Box2D world object.
|
||||
*/
|
||||
TileManager::Tile::Tile(Type type, const TilePosition& position, b2World& world) :
|
||||
Sprite(getTexture(type), PhysicalData(Vector2f(position.x * TILE_SIZE.x, position.y * TILE_SIZE.y),
|
||||
Sprite(Yaml(getConfig(type)), PhysicalData(Vector2f(position.x * TILE_SIZE.x, position.y * TILE_SIZE.y),
|
||||
world, CATEGORY_WORLD, (type == Type::FLOOR) ? MASK_NONE : MASK_ALL, false)),
|
||||
mType(type) {
|
||||
}
|
||||
|
@ -44,20 +44,20 @@ TileManager::Tile::Tile(Type type, const TilePosition& position, b2World& world)
|
|||
* @param type The type of tile to load a resource key for.
|
||||
* @return Resource key to the correct texture.
|
||||
*/
|
||||
std::shared_ptr<sf::Texture>
|
||||
TileManager::Tile::getTexture(Type type) {
|
||||
String
|
||||
TileManager::Tile::getConfig(Type type) {
|
||||
String filename;
|
||||
switch (type) {
|
||||
case Type::FLOOR:
|
||||
filename = "floor.png";
|
||||
filename = "tile_floor.yaml";
|
||||
break;
|
||||
case Type::WALL:
|
||||
filename = "wall.png";
|
||||
filename = "tile_wall.yaml";
|
||||
break;
|
||||
default:
|
||||
throw new aurora::Exception("Invalid tile type.");
|
||||
}
|
||||
return ResourceManager::i().acquire(Loader::i().fromFile<sf::Texture>(filename));
|
||||
return filename;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,12 +12,11 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include <SFML/Graphics.hpp>
|
||||
|
||||
#include <Box2D/Box2D.h>
|
||||
|
||||
#include "util/Vector.h"
|
||||
#include "abstract/Sprite.h"
|
||||
#include "util/String.h"
|
||||
|
||||
class Sprite;
|
||||
|
||||
|
@ -70,7 +69,7 @@ public:
|
|||
Type getType() const;
|
||||
TilePosition getTilePosition() const;
|
||||
|
||||
static std::shared_ptr<sf::Texture> getTexture(Type type);
|
||||
static String getConfig(Type type);
|
||||
|
||||
// Private variables.
|
||||
private:
|
||||
|
|
|
@ -89,6 +89,10 @@ public:
|
|||
virtual bool doesCollide(Physical& other);
|
||||
virtual void onCollide(Physical& other, uint16 category);
|
||||
|
||||
// Public variables.
|
||||
public:
|
||||
static const String KEY_SIZE;
|
||||
|
||||
// Protected functions.
|
||||
protected:
|
||||
void setDelete(bool value);
|
||||
|
@ -98,8 +102,6 @@ protected:
|
|||
|
||||
// Private variables.
|
||||
private:
|
||||
static const String KEY_SIZE;
|
||||
|
||||
b2Body* mBody;
|
||||
bool mDelete;
|
||||
};
|
||||
|
|
|
@ -24,17 +24,6 @@ Sprite::Sprite(const Yaml& config, const PhysicalData& data) :
|
|||
mSize(Vector2i(getSize())) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads sprite from ResourceManager, sets world position. Use this if the texture has already been loaded.
|
||||
*
|
||||
* @param texture Pointer to the texture to be used (must already be loaded).
|
||||
*/
|
||||
Sprite::Sprite(const std::shared_ptr<sf::Texture>& texture, const PhysicalData& data) :
|
||||
Physical(data, Yaml("tile.yaml")),
|
||||
mTexture(texture),
|
||||
mSize(Vector2i(getSize())) {
|
||||
|
||||
}
|
||||
/**
|
||||
* Does nothing.
|
||||
*/
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "../util/Loader.h"
|
||||
#include "../util/ResourceManager.h"
|
||||
|
||||
const Vector2i Bullet::SIZE = Vector2i(20, 20);
|
||||
const String Bullet::KEY_DAMAGE = "damage";
|
||||
const String Bullet::KEY_SPEED = "speed";
|
||||
|
||||
|
@ -24,9 +23,8 @@ const String Bullet::KEY_SPEED = "speed";
|
|||
*/
|
||||
Bullet::Bullet(const Vector2f& position, b2World& world, Physical& shooter, float direction,
|
||||
const Yaml& config) :
|
||||
Particle(ResourceManager::i().acquire(Loader::i().fromFile<sf::Texture>("bullet.png")),
|
||||
PhysicalData(position, world, CATEGORY_PARTICLE, CATEGORY_PARTICLE,
|
||||
true, true, true), config),
|
||||
Particle(config, PhysicalData(position, world, CATEGORY_PARTICLE, CATEGORY_PARTICLE,
|
||||
true, true, true)),
|
||||
mShooter(shooter),
|
||||
mDamage(config.get<int>(KEY_DAMAGE)),
|
||||
mSpeed(config.get<int>(KEY_SPEED)) {
|
||||
|
|
|
@ -26,10 +26,6 @@ public:
|
|||
|
||||
void onCollide(Physical& other, uint16 category);
|
||||
bool doesCollide(Physical& other);
|
||||
|
||||
// Public variables.
|
||||
public:
|
||||
static const Vector2i SIZE;
|
||||
|
||||
// Private variables.
|
||||
private:
|
||||
|
|
|
@ -20,10 +20,12 @@ Weapon::Weapon(const Instances& instances, Physical& holder, const Yaml& config)
|
|||
Emitter(instances.collection),
|
||||
mHolder(holder),
|
||||
mWorld(instances.world),
|
||||
mOffset(0, std::max(mHolder.getSize().x, mHolder.getSize().y) / 2 +
|
||||
mBullet(config.get<String>(KEY_BULLET)) {
|
||||
Yaml bullet(mBullet);
|
||||
Vector2i bulletSize = bullet.get<Vector2i>(Physical::KEY_SIZE);
|
||||
mOffset = Vector2f(0, std::max(mHolder.getSize().x, mHolder.getSize().y) / 2 +
|
||||
b2_linearSlop +
|
||||
std::max(Bullet::SIZE.x, Bullet::SIZE.y) / 2),
|
||||
mBullet(config.get<String>(KEY_BULLET)) {
|
||||
std::max(bulletSize.x, bulletSize.y) / 2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -40,6 +42,6 @@ Weapon::createParticle() {
|
|||
// Minus to account for positive y-axis going downwards in SFML.
|
||||
Vector2f offset(- mOffset);
|
||||
thor::rotate(offset, mHolder.getAngle());
|
||||
return std::shared_ptr<Particle>(new Bullet(mHolder.getPosition() + offset, mWorld,
|
||||
return std::shared_ptr<Particle>(new Bullet(mHolder.getPosition() + offset, mWorld,
|
||||
mHolder, mHolder.getAngle(), Yaml(mBullet)));
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ private:
|
|||
Physical& mHolder;
|
||||
b2World& mWorld;
|
||||
|
||||
const Vector2f mOffset; //< Offset to the point where bullets are inserted (from holder center).
|
||||
Vector2f mOffset; //< Offset to the point where bullets are inserted (from holder center).
|
||||
const String mBullet;
|
||||
};
|
||||
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
|
||||
#include "Particle.h"
|
||||
|
||||
Particle::Particle(const std::shared_ptr<sf::Texture>& texture, const PhysicalData& data,
|
||||
const Yaml& config) :
|
||||
Sprite(texture, data) {
|
||||
Particle::Particle(const Yaml& config, const PhysicalData& data) :
|
||||
Sprite(config, data) {
|
||||
}
|
||||
|
||||
Particle::~Particle() {
|
||||
|
|
|
@ -20,8 +20,7 @@ class Yaml;
|
|||
class Particle : public Sprite {
|
||||
// Public functions.
|
||||
public:
|
||||
Particle(const std::shared_ptr<sf::Texture>& texture, const PhysicalData& data,
|
||||
const Yaml& config);
|
||||
Particle(const Yaml& config, const PhysicalData& data);
|
||||
virtual ~Particle();
|
||||
};
|
||||
|
||||
|
|
|
@ -13,8 +13,7 @@
|
|||
#include "../items/Weapon.h"
|
||||
#include "../util/String.h"
|
||||
|
||||
const float Player::SPEED = 100.0f;
|
||||
const Vector2i Player::SIZE = Vector2i(50, 50);
|
||||
const float Player::SPEED = 100.0f;
|
||||
const float Player::POINT_REACHED_DISTANCE = 1.0f;
|
||||
|
||||
/**
|
||||
|
|
|
@ -56,8 +56,7 @@ private:
|
|||
|
||||
// Private variables.
|
||||
private:
|
||||
static const float SPEED;
|
||||
static const Vector2i SIZE;
|
||||
static const float SPEED;
|
||||
/// The distance to a point where it is considered reached.
|
||||
static const float POINT_REACHED_DISTANCE;
|
||||
|
||||
|
|
Reference in a new issue