Riyyi
10 years ago
14 changed files with 378 additions and 27 deletions
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 301 KiB |
After Width: | Height: | Size: 388 B |
|
@ -0,0 +1,74 @@
|
||||
#ifndef ENTITY_H |
||||
#define ENTITY_H |
||||
|
||||
#include <string> |
||||
#include <SFML/Graphics.hpp> |
||||
|
||||
class Entity : public sf::Sprite |
||||
{ |
||||
public: |
||||
Entity() { |
||||
this->active = 1; |
||||
this->texture = new sf::Texture(); |
||||
} |
||||
|
||||
Entity(std::string fileName) { |
||||
this->active = 1; |
||||
this->texture = new sf::Texture; |
||||
this->Load(fileName); |
||||
} |
||||
|
||||
Entity(std::string fileName, sf::IntRect rect) { |
||||
this->active = 1; |
||||
this->texture = new sf::Texture(); |
||||
this->Load(fileName, rect); |
||||
} |
||||
|
||||
void Load(std::string fileName) { |
||||
this->texture->loadFromFile(fileName, sf::IntRect()); |
||||
this->setTexture(*this->texture); |
||||
} |
||||
|
||||
void Load(std::string fileName, sf::IntRect rect) { |
||||
this->texture->loadFromFile(fileName, rect); |
||||
this->setTexture(*this->texture); |
||||
} |
||||
|
||||
bool Collision(Entity *entity) { |
||||
if(entity != NULL) { |
||||
return this->getGlobalBounds().intersects(entity->getGlobalBounds()); |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
void SetActive(int active) { |
||||
this->active = active; |
||||
} |
||||
|
||||
int Active() { |
||||
return this->active; |
||||
} |
||||
|
||||
int Group() { |
||||
return this->groupId; |
||||
} |
||||
|
||||
virtual void Update() { |
||||
this->move(this->velocity); |
||||
} |
||||
|
||||
~Entity() { |
||||
delete this->texture; |
||||
} |
||||
|
||||
sf::Vector2f velocity; |
||||
|
||||
protected: |
||||
int active, groupId; |
||||
|
||||
private: |
||||
sf::Texture* texture; |
||||
}; |
||||
|
||||
#endif // ENTITY_H
|
@ -0,0 +1,98 @@
|
||||
#ifndef ENTITYMANAGER |
||||
#define ENTITYMANAGER |
||||
|
||||
#include <unordered_map> |
||||
#include <vector> |
||||
|
||||
#include "entity.h" |
||||
|
||||
typedef void CollisionUpdateEvent(Entity* entityA, Entity* entityB); |
||||
|
||||
class EntityManager |
||||
{ |
||||
public: |
||||
EntityManager() { |
||||
|
||||
} |
||||
|
||||
void SetCollisionMethod(CollisionUpdateEvent collisionsEvent) { |
||||
this->collisionsEvent = collisionsEvent; |
||||
} |
||||
|
||||
void AddEntity(std::string name, Entity* entity) { |
||||
std::unordered_map<std::string, Entity*>::const_iterator found = this->entities.find(name); |
||||
while(found != this->entities.end()) { |
||||
name += "0"; |
||||
found = this->entities.find(name); |
||||
} |
||||
|
||||
this->entities.insert(std::make_pair(name, entity)); |
||||
} |
||||
|
||||
Entity* Get(std::string name) { |
||||
std::unordered_map<std::string, Entity*>::const_iterator found = this->entities.find(name); |
||||
if(found != this->entities.end()) { |
||||
return found->second; |
||||
} |
||||
|
||||
return NULL; |
||||
} |
||||
|
||||
void Update() { |
||||
std::vector<std::string> toRemove; |
||||
|
||||
for (auto& iterator : this->entities) { |
||||
if (iterator.second != NULL) { |
||||
if (this->collisionsEvent != NULL) { |
||||
for (auto& iterator2 : this->entities) { |
||||
if (iterator != iterator2) { |
||||
if (iterator.second->Collision(iterator2.second)) { |
||||
this->collisionsEvent(iterator.second, iterator2.second); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (iterator.second->Active()) { |
||||
iterator.second->Update(); |
||||
} |
||||
else { |
||||
toRemove.push_back(iterator.first); |
||||
} |
||||
} |
||||
} |
||||
|
||||
while (toRemove.size() > 0) { |
||||
this->entities.erase(toRemove[toRemove.size() - 1]); |
||||
toRemove.pop_back(); |
||||
} |
||||
|
||||
toRemove.clear(); |
||||
} |
||||
|
||||
|
||||
void Render(sf::RenderWindow* window) { |
||||
for (auto& iterator : this->entities) { |
||||
if (iterator.second != NULL) { |
||||
if (iterator.second->Active()) { |
||||
window->draw(*iterator.second); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
~EntityManager() { |
||||
for (auto& iterator : this->entities) { |
||||
delete iterator.second; |
||||
} |
||||
|
||||
this->entities.clear(); |
||||
} |
||||
|
||||
private: |
||||
std::unordered_map<std::string, Entity*> entities; |
||||
CollisionUpdateEvent* collisionsEvent; |
||||
}; |
||||
|
||||
#endif // ENTITYMANAGER
|
||||
|
Binary file not shown.
@ -0,0 +1,98 @@
|
||||
#include "inputmanager.h" |
||||
|
||||
InputManager::InputManager() { |
||||
|
||||
} |
||||
|
||||
InputManager::~InputManager() { |
||||
|
||||
} |
||||
|
||||
sf::Keyboard::Key InputManager::KeyboardConfiguration(Input key) { |
||||
// Left = 0,
|
||||
// Right,
|
||||
// Up,
|
||||
// Down,
|
||||
|
||||
if(key == Left) return sf::Keyboard::A; |
||||
if(key == Right) return sf::Keyboard::E; |
||||
if(key == Up) return sf::Keyboard::Comma; |
||||
if(key == Down) return sf::Keyboard::O; |
||||
|
||||
return sf::Keyboard::Unknown; |
||||
} |
||||
|
||||
int InputManager::JoystickConfiguration(Input key) { |
||||
// if(key == Left) return 2;
|
||||
// if(key == Right) return 1;
|
||||
// if(key == Up) return 3;
|
||||
// if(key == Down) return 0;
|
||||
|
||||
return -1; |
||||
} |
||||
|
||||
void InputManager::JoystickAxisConfiguration(Input key, sf::Joystick::Axis& axis, float& position) { |
||||
if(key == Left) { |
||||
axis = sf::Joystick::PovY; |
||||
position = -100; |
||||
} |
||||
|
||||
if(key == Right) { |
||||
axis = sf::Joystick::PovY; |
||||
position = 100; |
||||
} |
||||
|
||||
if(key == Up) { |
||||
axis = sf::Joystick::PovX; |
||||
position = 100; |
||||
} |
||||
|
||||
if(key == Down) { |
||||
axis = sf::Joystick::PovX; |
||||
position = -100; |
||||
} |
||||
} |
||||
|
||||
bool InputManager::IsKeyBoardPressed(sf::Keyboard::Key key) { |
||||
return sf::Keyboard::isKeyPressed(key); |
||||
} |
||||
|
||||
bool InputManager::IsJoystickPressed(unsigned int joystick, unsigned int button) { |
||||
return sf::Joystick::isButtonPressed(joystick, button); |
||||
} |
||||
|
||||
bool InputManager::IsJoystickAxis(unsigned int joystick, sf::Joystick::Axis axis, float position) { |
||||
return sf::Joystick::getAxisPosition(joystick, axis) == position; |
||||
} |
||||
|
||||
bool InputManager::IsPressed(Input key, unsigned int joystick) { |
||||
sf::Keyboard::Key myKeyboardKey = KeyboardConfiguration(key); |
||||
if(myKeyboardKey != sf::Keyboard::Unknown) { |
||||
if(IsKeyBoardPressed(myKeyboardKey)) { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
|
||||
int myJoystickKey = JoystickConfiguration(key); |
||||
if(myJoystickKey != -1) { |
||||
if(IsJoystickPressed(joystick, myJoystickKey)) { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
sf::Joystick::Axis axis; |
||||
float position = 0; |
||||
JoystickAxisConfiguration(key, axis, position); |
||||
if(position != 0) { |
||||
if(IsJoystickAxis(joystick, axis, position)) { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
//bool sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)
|
||||
//bool sf::Joystick::isButtonPressed(0, 1);
|
||||
//float sf::Joystick::getAxisPosition(0, sf::Joystick::Y);
|
@ -0,0 +1,39 @@
|
||||
#ifndef INPUTMANAGER_H |
||||
#define INPUTMANAGER_H |
||||
|
||||
#include <SFML/Window/Keyboard.hpp> |
||||
#include <SFML/Window/Joystick.hpp> |
||||
|
||||
class InputManager |
||||
{ |
||||
public: |
||||
InputManager(); |
||||
~InputManager(); |
||||
|
||||
enum Input |
||||
{ |
||||
Left = 0, |
||||
Right, |
||||
Up, |
||||
Down, |
||||
|
||||
KeyCount ///< Keep last -- the total number of inputs
|
||||
}; |
||||
|
||||
sf::Keyboard::Key KeyboardConfiguration(Input key); |
||||
int JoystickConfiguration(Input key); |
||||
void JoystickAxisConfiguration(Input key, sf::Joystick::Axis& axis, float& position); |
||||
bool IsKeyBoardPressed(sf::Keyboard::Key); |
||||
bool IsJoystickPressed(unsigned int joystick, unsigned int button); |
||||
bool IsJoystickAxis(unsigned int joystick, sf::Joystick::Axis axis, float position); |
||||
bool IsPressed(Input key, unsigned int joystick = 0); |
||||
}; |
||||
|
||||
extern InputManager inputManager; |
||||
|
||||
#endif // INPUTMANAGER_H
|
||||
|
||||
|
||||
//bool sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)
|
||||
//bool sf::Joystick::isButtonPressed(0, 1);
|
||||
//float sf::Joystick::getAxisPosition(0, sf::Joystick::Y);
|
@ -1,12 +0,0 @@
|
||||
#include "maploader.h" |
||||
|
||||
MapLoader::MapLoader() |
||||
{ |
||||
|
||||
} |
||||
|
||||
MapLoader::~MapLoader() |
||||
{ |
||||
|
||||
} |
||||
|
@ -1,12 +0,0 @@
|
||||
#ifndef MAPLOADER_H |
||||
#define MAPLOADER_H |
||||
|
||||
|
||||
class MapLoader |
||||
{ |
||||
public: |
||||
MapLoader(); |
||||
~MapLoader(); |
||||
}; |
||||
|
||||
#endif // MAPLOADER_H
|
Loading…
Reference in new issue