reformatted inconsistent code and optimized imports
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 44 KiB |
1
docs/diagrams/load_map_example_sequence.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
@ -1,13 +1,12 @@
|
||||
#include <SDL_render.h>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#include "TextureManager.h"
|
||||
#include "Vector2D.h"
|
||||
#include "Components.h"
|
||||
#include "ECS.h"
|
||||
|
||||
class AssetManager {
|
||||
class Vector2D;
|
||||
class Manager;
|
||||
|
||||
class AssetManager
|
||||
{
|
||||
public:
|
||||
|
||||
AssetManager(Manager* manager);
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
#include "SDL.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include "Component.h"
|
||||
|
||||
class TransformComponent;
|
||||
|
||||
@ -17,20 +17,9 @@ class Component
|
||||
public:
|
||||
Entity* entity;
|
||||
|
||||
virtual void init()
|
||||
{
|
||||
// implementation in derived classes (when neccessary)
|
||||
}
|
||||
|
||||
virtual void update()
|
||||
{
|
||||
// implementation in derived classes (when neccessary)
|
||||
}
|
||||
|
||||
virtual void draw()
|
||||
{
|
||||
// implementation in derived classes (when neccessary)
|
||||
}
|
||||
virtual void init() {}
|
||||
virtual void update() {}
|
||||
virtual void draw() {}
|
||||
|
||||
virtual ~Component() = default;
|
||||
};
|
||||
@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "ECS.h"
|
||||
#include "Component.h"
|
||||
#include "Manager.h"
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include <iostream>
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
using Group = std::size_t;
|
||||
|
||||
|
||||
@ -1,14 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <array>
|
||||
#include "Component.h"
|
||||
#include "Constants.h"
|
||||
|
||||
|
||||
class Component;
|
||||
class Entity;
|
||||
class Manager;
|
||||
|
||||
@ -1,13 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <bitset>
|
||||
#include "Constants.h"
|
||||
#include "Component.h"
|
||||
#include "SpriteComponent.h"
|
||||
#include <vector>
|
||||
|
||||
#include "ECS.h"
|
||||
#include "Constants.h"
|
||||
|
||||
class Manager;
|
||||
class Component;
|
||||
|
||||
using ComponentBitSet = std::bitset<MAX_COMPONENTS>;
|
||||
using GroupBitSet = std::bitset<MAX_GROUPS>;
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
#pragma once
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
|
||||
#include <SDL.h>
|
||||
#include <SDL_image.h>
|
||||
#include <vector>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
class AssetManager;
|
||||
class ColliderComponent;
|
||||
|
||||
@ -1,65 +1,29 @@
|
||||
#include "Components.h"
|
||||
#pragma once
|
||||
|
||||
class HealthComponent : public Component {
|
||||
#include "Component.h"
|
||||
|
||||
class Manager;
|
||||
|
||||
class HealthComponent : public Component
|
||||
{
|
||||
public:
|
||||
|
||||
HealthComponent(int health, Manager* manager, bool player) : health(health), manager(manager), player(player) {}
|
||||
|
||||
~HealthComponent() {}
|
||||
|
||||
void getDamage() {
|
||||
this->health--;
|
||||
}
|
||||
void getDamage() { this->health--; }
|
||||
int getHealth() { return this->health; }
|
||||
|
||||
int getHealth() {
|
||||
return this->health;
|
||||
}
|
||||
void init() override;
|
||||
|
||||
void init() override
|
||||
{
|
||||
createAllHearts();
|
||||
}
|
||||
|
||||
void createAllHearts() {
|
||||
|
||||
int x; //starting position for first health icon
|
||||
|
||||
if(player) {
|
||||
x = 10;
|
||||
} else {
|
||||
x = 730;
|
||||
}
|
||||
|
||||
for(int i = 0; i < health; i++) {
|
||||
|
||||
//checks for player side
|
||||
if(player) {
|
||||
createHeartComponents(x);
|
||||
x += 50;
|
||||
continue;
|
||||
}
|
||||
|
||||
createHeartComponents(x);
|
||||
x -= 50;
|
||||
}
|
||||
}
|
||||
|
||||
void createHeartComponents(int x) {
|
||||
|
||||
auto& heart(manager->addEntity());
|
||||
heart.addComponent<TransformComponent>(x,5,2);
|
||||
heart.addComponent<SpriteComponent>("assets/heart.png");
|
||||
heart.addGroup((size_t)GroupLabel::HEARTS);
|
||||
}
|
||||
void createAllHearts();
|
||||
void createHeartComponents(int x);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
int health;
|
||||
|
||||
Manager* manager;
|
||||
|
||||
bool player; //true if player1 / false if player2
|
||||
|
||||
};
|
||||
@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include <SDL.h>
|
||||
|
||||
#include "Component.h"
|
||||
#include "Vector2D.h"
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include <array>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "Constants.h"
|
||||
|
||||
class Entity;
|
||||
|
||||
@ -1,46 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "ECS.h"
|
||||
#include "Components.h"
|
||||
#include "Component.h"
|
||||
#include "Vector2D.h"
|
||||
|
||||
class ProjectileComponent : public Component {
|
||||
class TransformComponent;
|
||||
|
||||
class ProjectileComponent : public Component
|
||||
{
|
||||
//can maybe be split in separate .cpp file
|
||||
|
||||
public:
|
||||
|
||||
ProjectileComponent(int range, int speed, Vector2D velocity, bool source) : range(range), speed(speed), velocity(velocity), source(source) {
|
||||
|
||||
}
|
||||
|
||||
ProjectileComponent(int range, int speed, Vector2D velocity, bool source) : range(range), speed(speed), velocity(velocity), source(source) {}
|
||||
~ProjectileComponent() {}
|
||||
|
||||
void init() override {
|
||||
transformComponent = &entity->getComponent<TransformComponent>();
|
||||
}
|
||||
|
||||
void update() override {
|
||||
|
||||
transformComponent->velocity = velocity;
|
||||
|
||||
distance += speed;
|
||||
|
||||
if (distance > range) {
|
||||
entity->destroy();
|
||||
entity->getComponent<ColliderComponent>().removeCollision();
|
||||
//std::cout << "out of range" << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool getSource() {
|
||||
return this->source;
|
||||
}
|
||||
void init() override;
|
||||
void update() override;
|
||||
|
||||
bool getSource() { return this->source; }
|
||||
|
||||
private:
|
||||
|
||||
TransformComponent* transformComponent;
|
||||
|
||||
int range = 0;
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <SDL_render.h>
|
||||
|
||||
#include "AnimationHandler.h"
|
||||
#include "Component.h"
|
||||
#include "Game.h"
|
||||
#include <map>
|
||||
|
||||
class TransformComponent;
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
class TextureDict
|
||||
{
|
||||
public:
|
||||
const std::map<int, std::string> textureDictionary =
|
||||
{
|
||||
const std::map<int, std::string> textureDictionary = {
|
||||
{1, "assets/water.png"},
|
||||
{2, "assets/dirt.png"},
|
||||
{3, "assets/grass.png"},
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
#include "SDL.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include "Component.h"
|
||||
#include "TextureDict.h"
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
#include "Vector2D.h"
|
||||
|
||||
#include "Component.h"
|
||||
#include "Vector2D.h"
|
||||
|
||||
class TransformComponent : public Component
|
||||
{
|
||||
public:
|
||||
|
||||
Vector2D position;
|
||||
Vector2D velocity;
|
||||
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
#include "AssetManager.h"
|
||||
#include "Component.h"
|
||||
|
||||
#include "TextureManager.h"
|
||||
#include "Components.h"
|
||||
#include <cstddef>
|
||||
|
||||
AssetManager::AssetManager(Manager* manager) : man(manager) {
|
||||
|
||||
}
|
||||
AssetManager::AssetManager(Manager* manager) : man(manager) {}
|
||||
|
||||
AssetManager::~AssetManager() {}
|
||||
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
#include "ColliderComponent.h"
|
||||
#include "TransformComponent.h"
|
||||
|
||||
#include "Entity.h"
|
||||
#include "Game.h"
|
||||
#include "TransformComponent.h"
|
||||
|
||||
ColliderComponent::ColliderComponent(const char* tag)
|
||||
{
|
||||
@ -11,10 +12,10 @@ ColliderComponent::ColliderComponent(const char* tag)
|
||||
|
||||
void ColliderComponent::init()
|
||||
{
|
||||
if (!entity->hasComponent<TransformComponent>())
|
||||
{
|
||||
if (!entity->hasComponent<TransformComponent>()) {
|
||||
entity->addComponent<TransformComponent>();
|
||||
}
|
||||
|
||||
transform = &entity->getComponent<TransformComponent>();
|
||||
Game::colliders.push_back(this);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "Entity.h"
|
||||
|
||||
#include "Manager.h"
|
||||
#include "Component.h"
|
||||
|
||||
|
||||
15
src/Game.cpp
@ -1,15 +1,10 @@
|
||||
#include "Game.h"
|
||||
#include "TextureManager.h"
|
||||
#include "Manager.h"
|
||||
#include "Map.h"
|
||||
#include "Entity.h"
|
||||
#include "Component.h"
|
||||
#include "TransformComponent.h"
|
||||
#include "TileComponent.h"
|
||||
#include "ColliderComponent.h"
|
||||
#include "SpriteComponent.h"
|
||||
#include "KeyboardController.h"
|
||||
|
||||
#include "Components.h"
|
||||
|
||||
#include "AssetManager.h"
|
||||
#include "Map.h"
|
||||
#include "TextureManager.h"
|
||||
|
||||
Map* map;
|
||||
Manager manager;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "GameObject.h"
|
||||
|
||||
#include "TextureManager.h"
|
||||
#include "Game.h"
|
||||
|
||||
|
||||
40
src/HealthComponent.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "HealthComponent.h"
|
||||
|
||||
#include "Components.h"
|
||||
|
||||
void HealthComponent::init()
|
||||
{
|
||||
createAllHearts();
|
||||
}
|
||||
|
||||
void HealthComponent::createAllHearts()
|
||||
{
|
||||
int x; //starting position for first health icon
|
||||
|
||||
if(player) {
|
||||
x = 10;
|
||||
} else {
|
||||
x = 730;
|
||||
}
|
||||
|
||||
for(int i = 0; i < health; i++) {
|
||||
|
||||
//checks for player side
|
||||
if(player) {
|
||||
createHeartComponents(x);
|
||||
x += 50;
|
||||
continue;
|
||||
}
|
||||
|
||||
createHeartComponents(x);
|
||||
x -= 50;
|
||||
}
|
||||
}
|
||||
|
||||
void HealthComponent::createHeartComponents(int x)
|
||||
{
|
||||
auto& heart(manager->addEntity());
|
||||
heart.addComponent<TransformComponent>(x,5,2);
|
||||
heart.addComponent<SpriteComponent>("assets/heart.png");
|
||||
heart.addGroup((size_t)GroupLabel::HEARTS);
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
#include "KeyboardController.h"
|
||||
#include "TransformComponent.h"
|
||||
#include "Entity.h"
|
||||
|
||||
#include "Game.h"
|
||||
#include "Components.h"
|
||||
#include "AssetManager.h"
|
||||
#include "SpriteComponent.h"
|
||||
|
||||
KeyboardController::KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity)
|
||||
{
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
#include "Manager.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "Entity.h"
|
||||
|
||||
void Manager::update()
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#include "Map.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include "Constants.h"
|
||||
#include "Game.h"
|
||||
|
||||
|
||||
21
src/ProjectileComponent.cpp
Normal file
@ -0,0 +1,21 @@
|
||||
#include "ProjectileComponent.h"
|
||||
|
||||
#include "Components.h"
|
||||
|
||||
void ProjectileComponent::init()
|
||||
{
|
||||
transformComponent = &entity->getComponent<TransformComponent>();
|
||||
}
|
||||
|
||||
void ProjectileComponent::update()
|
||||
{
|
||||
transformComponent->velocity = velocity;
|
||||
|
||||
distance += speed;
|
||||
|
||||
if (distance > range) {
|
||||
entity->destroy();
|
||||
entity->getComponent<ColliderComponent>().removeCollision();
|
||||
//std::cout << "out of range" << std::endl;
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,10 @@
|
||||
#include "AnimationHandler.h"
|
||||
#include "TransformComponent.h"
|
||||
#include "Entity.h"
|
||||
#include "SpriteComponent.h"
|
||||
|
||||
#include <SDL_timer.h>
|
||||
|
||||
#include "TextureManager.h"
|
||||
#include "Entity.h"
|
||||
#include "TransformComponent.h"
|
||||
|
||||
SpriteComponent::SpriteComponent(const char* path)
|
||||
{
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
#include "TextureManager.h"
|
||||
#include <cstdio>
|
||||
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
#include "Game.h"
|
||||
|
||||
SDL_Texture* TextureManager::loadTexture(const char* fileName)
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
#include "TileComponent.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "Entity.h"
|
||||
#include "TransformComponent.h"
|
||||
#include "SpriteComponent.h"
|
||||
#include "TileComponent.h"
|
||||
|
||||
TileComponent::TileComponent(int x, int y, int w, int h, int id)
|
||||
{
|
||||
@ -11,8 +16,7 @@ TileComponent::TileComponent(int x, int y, int w, int h, int id)
|
||||
tileID = id;
|
||||
|
||||
auto it = textureDict.textureDictionary.find(tileID); //every id has its own distinct texture (in texturedict.h)
|
||||
if (it == textureDict.textureDictionary.end())
|
||||
{
|
||||
if (it == textureDict.textureDictionary.end()) {
|
||||
std::cout << "it end" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||