diff --git a/TestProject/TestProject/Game.cpp b/TestProject/TestProject/Game.cpp index ddab906..58e8e23 100644 --- a/TestProject/TestProject/Game.cpp +++ b/TestProject/TestProject/Game.cpp @@ -16,6 +16,7 @@ SDL_Event Game::event; std::vector Game::colliders; auto& player(manager.addEntity()); +auto& enemy(manager.addEntity()); auto& wall(manager.addEntity()); Game::Game() @@ -58,11 +59,16 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo //ecs implementation - player.addComponent(2); + player.addComponent(0,0,2); //posx, posy, scale player.addComponent("assets/chicken_neutral_knight.png"); - player.addComponent(); + player.addComponent(SDL_SCANCODE_W, SDL_SCANCODE_S, SDL_SCANCODE_A, SDL_SCANCODE_D);//custom keycontrols can be added player.addComponent("player"); + enemy.addComponent(400, 400, 2); + enemy.addComponent("assets/chicken_neutral.png"); + enemy.addComponent(SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT); + enemy.addComponent("enemy"); + wall.addComponent(300.0f, 300.0f, 300, 20, 1); wall.addComponent("assets/stone.png"); wall.addComponent("wall"); @@ -87,6 +93,7 @@ void Game::handleEvents() void Game::update() { Vector2D playerPos = player.getComponent().position; + Vector2D enemyPos = enemy.getComponent().position; manager.refresh(); manager.update(); @@ -97,7 +104,12 @@ void Game::update() { player.getComponent().position = playerPos; } + if (SDL_HasIntersection(&enemy.getComponent().collider, &cc->collider) && strcmp(cc->tag, "enemy")) + { + enemy.getComponent().position = enemyPos; + } } + } void Game::render() diff --git a/TestProject/TestProject/KeyboardController.cpp b/TestProject/TestProject/KeyboardController.cpp new file mode 100644 index 0000000..1d71e02 --- /dev/null +++ b/TestProject/TestProject/KeyboardController.cpp @@ -0,0 +1,43 @@ +#include "KeyboardController.h" + +KeyboardController::KeyboardController() +{ + +} + +KeyboardController::KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right) +{ + this->up = up; + this->down = down; + this->left = left; + this->right = right; +} + +KeyboardController::~KeyboardController() +{ + +} + +void KeyboardController::init() +{ + transform = &entity->getComponent(); +} + +void KeyboardController::update() +{ + transform->velocity.x = 0; + transform->velocity.y = 0; + + if (keystates[this->up]) { + transform->velocity.y = -1; + } + if (keystates[this->left]) { + transform->velocity.x = -1; + } + if (keystates[this->down]) { + transform->velocity.y = 1; + } + if (keystates[this->right]) { + transform->velocity.x = 1; + } +} \ No newline at end of file diff --git a/TestProject/TestProject/KeyboardController.h b/TestProject/TestProject/KeyboardController.h index 77365c7..0d3cea4 100644 --- a/TestProject/TestProject/KeyboardController.h +++ b/TestProject/TestProject/KeyboardController.h @@ -8,28 +8,17 @@ class KeyboardController : public Component public: TransformComponent* transform; const Uint8* keystates = SDL_GetKeyboardState(NULL); + SDL_Scancode up; + SDL_Scancode down; + SDL_Scancode left; + SDL_Scancode right; - void init() override - { - transform = &entity->getComponent(); - } + KeyboardController(); + KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right); - void update() override - { - transform->velocity.x = 0; - transform->velocity.y = 0; + ~KeyboardController(); - if (keystates[SDL_SCANCODE_UP] || keystates[SDL_SCANCODE_W]) { - transform->velocity.y = -1; - } - if (keystates[SDL_SCANCODE_LEFT] || keystates[SDL_SCANCODE_A]) { - transform->velocity.x = -1; - } - if (keystates[SDL_SCANCODE_DOWN] || keystates[SDL_SCANCODE_S]) { - transform->velocity.y = 1; - } - if (keystates[SDL_SCANCODE_RIGHT] || keystates[SDL_SCANCODE_D]) { - transform->velocity.x = 1; - } - } + void init() override; + + void update() override; }; diff --git a/TestProject/TestProject/TestProject.vcxproj b/TestProject/TestProject/TestProject.vcxproj index 790af9d..aa2d940 100644 --- a/TestProject/TestProject/TestProject.vcxproj +++ b/TestProject/TestProject/TestProject.vcxproj @@ -157,6 +157,7 @@ + diff --git a/TestProject/TestProject/TestProject.vcxproj.filters b/TestProject/TestProject/TestProject.vcxproj.filters index 4c58456..c607345 100644 --- a/TestProject/TestProject/TestProject.vcxproj.filters +++ b/TestProject/TestProject/TestProject.vcxproj.filters @@ -36,6 +36,9 @@ Source Files + + Source Files + diff --git a/TestProject/TestProject/TextureDict.h b/TestProject/TestProject/TextureDict.h index cd03fed..133c433 100644 --- a/TestProject/TestProject/TextureDict.h +++ b/TestProject/TestProject/TextureDict.h @@ -2,11 +2,13 @@ #include #include -std::map textureDict = +class TextureDict { - {0, "assets/water.png"}, - {1, "assets/dirt.png"}, - {2, "assets/grass.png"} +public: + const std::map textureDictionary = + { + {0, "assets/water.png"}, + {1, "assets/dirt.png"}, + {2, "assets/grass.png"} + }; }; - - diff --git a/TestProject/TestProject/TileComponent.h b/TestProject/TestProject/TileComponent.h index c11afeb..d5ea1f3 100644 --- a/TestProject/TestProject/TileComponent.h +++ b/TestProject/TestProject/TileComponent.h @@ -14,6 +14,8 @@ public: int tileID; const char* path; + TextureDict textureDict; + TileComponent() = default; TileComponent(int x, int y, int w, int h, int id) @@ -24,7 +26,7 @@ public: this->tileRect.h = h; tileID = id; - auto it = textureDict.find(tileID)->second; + auto it = textureDict.textureDictionary.find(tileID)->second; //every id has its own distinct texture (in texturedict.h) this->path = it; } diff --git a/TestProject/TestProject/TransformComponent.h b/TestProject/TestProject/TransformComponent.h index 509e525..cf5dd7e 100644 --- a/TestProject/TestProject/TransformComponent.h +++ b/TestProject/TestProject/TransformComponent.h @@ -33,6 +33,13 @@ public: this->position.y = y; } + TransformComponent(float x, float y, int scale) + { + this->position.x = x; + this->position.y = y; + this->scale = scale; + } + TransformComponent(float x, float y, int w, int h, int scale) { this->position.x = x; @@ -49,7 +56,9 @@ public: void update() override { - position.x += velocity.x * speed; - position.y += velocity.y * speed; + // if(velocity.x != 0 && velocity.y != 0) + double multiplier = velocity.x != 0 && velocity.y != 0 ? 0.707 : 1; + position.x += velocity.x * speed * multiplier; + position.y += velocity.y * speed * multiplier; } }; diff --git a/TestProject/TestProject/assets/MapNew.aseprite b/TestProject/TestProject/assets/MapNew.aseprite index 10f0709..fb12db2 100644 Binary files a/TestProject/TestProject/assets/MapNew.aseprite and b/TestProject/TestProject/assets/MapNew.aseprite differ diff --git a/TestProject/TestProject/x64/Debug/Game.obj b/TestProject/TestProject/x64/Debug/Game.obj index 715ab6d..974b774 100644 Binary files a/TestProject/TestProject/x64/Debug/Game.obj and b/TestProject/TestProject/x64/Debug/Game.obj differ diff --git a/TestProject/TestProject/x64/Debug/KeyboardController.obj b/TestProject/TestProject/x64/Debug/KeyboardController.obj new file mode 100644 index 0000000..c2139e2 Binary files /dev/null and b/TestProject/TestProject/x64/Debug/KeyboardController.obj differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.ilk b/TestProject/TestProject/x64/Debug/TestProject.ilk index 7cc8199..d8f454d 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.ilk and b/TestProject/TestProject/x64/Debug/TestProject.ilk differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.log b/TestProject/TestProject/x64/Debug/TestProject.log index 7c5e299..a162739 100644 --- a/TestProject/TestProject/x64/Debug/TestProject.log +++ b/TestProject/TestProject/x64/Debug/TestProject.log @@ -1,2 +1,24 @@ - Map.cpp + Game.cpp +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\TransformComponent.h(61,36): warning C4244: '+=': conversion from 'double' to 'float', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\TransformComponent.h(62,36): warning C4244: '+=': conversion from 'double' to 'float', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\SpriteComponent.h(39,48): warning C4244: '=': conversion from 'float' to 'int', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\SpriteComponent.h(40,48): warning C4244: '=': conversion from 'float' to 'int', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\ColliderComponent.h(30,35): warning C4244: '=': conversion from 'float' to 'int', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\ColliderComponent.h(31,35): warning C4244: '=': conversion from 'float' to 'int', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\ECS.h(67,34): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\TileComponent.h(37,15): message : see reference to function template instantiation 'T &Entity::addComponent(int &,int &,int &,int &,int &&)' being compiled + with + [ + T=TransformComponent + ] +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\ECS.h(67,34): warning C4244: 'argument': conversion from '_Ty' to 'float', possible loss of data + with + [ + _Ty=int + ] +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\Game.cpp(62,8): message : see reference to function template instantiation 'T &Entity::addComponent(int &&,int &&,int &&)' being compiled + with + [ + T=TransformComponent + ] TestProject.vcxproj -> C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\x64\Debug\TestProject.exe diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.command.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.command.1.tlog index 941e157..b73b550 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.command.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.command.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.read.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.read.1.tlog index d7d8362..fe0333b 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.read.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.read.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.write.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.write.1.tlog index cbb4a40..9c0239e 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.write.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/CL.write.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/Cl.items.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/Cl.items.tlog index 3c13369..2df7322 100644 --- a/TestProject/TestProject/x64/Debug/TestProject.tlog/Cl.items.tlog +++ b/TestProject/TestProject/x64/Debug/TestProject.tlog/Cl.items.tlog @@ -1,5 +1,6 @@ C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\Game.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\Game.obj C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\GameObject.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\GameObject.obj +C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\KeyboardController.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\KeyboardController.obj C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\main.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\main.obj C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\Map.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\Map.obj C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\TextureManager.cpp;C:\Users\User\Desktop\FH_TECHNIKUM\3.Semester\INNO1\TestProject\TestProject\x64\Debug\TextureManager.obj diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.command.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.command.1.tlog index 7f23964..70e3192 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.command.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.command.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.read.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.read.1.tlog index 9b228fc..15b41d6 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.read.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.read.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.write.1.tlog b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.write.1.tlog index 63f98a2..2ce4166 100644 Binary files a/TestProject/TestProject/x64/Debug/TestProject.tlog/link.write.1.tlog and b/TestProject/TestProject/x64/Debug/TestProject.tlog/link.write.1.tlog differ diff --git a/TestProject/TestProject/x64/Debug/vc143.idb b/TestProject/TestProject/x64/Debug/vc143.idb index f280f8d..000d970 100644 Binary files a/TestProject/TestProject/x64/Debug/vc143.idb and b/TestProject/TestProject/x64/Debug/vc143.idb differ diff --git a/TestProject/TestProject/x64/Debug/vc143.pdb b/TestProject/TestProject/x64/Debug/vc143.pdb index a8e064f..4e5854c 100644 Binary files a/TestProject/TestProject/x64/Debug/vc143.pdb and b/TestProject/TestProject/x64/Debug/vc143.pdb differ diff --git a/TestProject/x64/Debug/TestProject.exe b/TestProject/x64/Debug/TestProject.exe index e8dfd1e..72561a3 100644 Binary files a/TestProject/x64/Debug/TestProject.exe and b/TestProject/x64/Debug/TestProject.exe differ diff --git a/TestProject/x64/Debug/TestProject.pdb b/TestProject/x64/Debug/TestProject.pdb index 0f6863d..3bd1fbc 100644 Binary files a/TestProject/x64/Debug/TestProject.pdb and b/TestProject/x64/Debug/TestProject.pdb differ