From 00e7b7d658539130448613bd1d0157204fa1c238 Mon Sep 17 00:00:00 2001 From: Amaury Date: Tue, 21 Apr 2020 10:01:47 +0200 Subject: [PATCH] Check collision sol ok --- .../GestionCollision.cpp | 43 +++++++++++++++---- .../DungeonAndDemaonScript/GestionCollision.h | 8 ++-- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.cpp b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.cpp index 6f66697..fd9044a 100644 --- a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.cpp +++ b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.cpp @@ -1,23 +1,50 @@ #include "GestionCollision.h" +#include +#include + GestionCollision::GestionCollision(GestionMobs* m, GestionPlayer* p, GestionTerrain* t) : gMobs(m), gPlayer(p), gTerrain(t) { } -std::vector GestionCollision::CheckCollisonSol() +std::vector GestionCollision::CheckCollisonSol() { - /*for (MobsIA m : gMobs->mobs) + std::vector mobs_collision; + for (MobsIA* m : gMobs->mobs) { - }*/ - return std::vector(); + Vector2 pos = m->get_transform().get_origin(); + Vector2 size = m->get_transform().get_scale(); + for (StaticBody2D* elem : gTerrain->elems_terrains) + { + if (elem->get_transform().get_origin().y > pos.x) { + Godot::print("Mob touche"); + mobs_collision.push_back(m); + } + } + } + + Vector2 posPlayer = gPlayer->get_position(); + + bool player_touch = false; + for (StaticBody2D* elem : gTerrain->elems_terrains) + { + if (elem->get_transform().get_origin().y - ((Sprite*)elem->get_children()[0])->get_texture().ptr()->get_size().y < posPlayer.y + && elem->get_transform().get_origin().x + ((Sprite*)elem->get_children()[0])->get_texture().ptr()->get_size().x > posPlayer.x) { + player_touch = true; + break; + } + } + gPlayer->on_ground = player_touch; + + return mobs_collision; } -std::vector GestionCollision::CheckCollisonMur() +std::vector GestionCollision::CheckCollisonMur() { - return std::vector(); + return std::vector(); } -std::vector GestionCollision::CheckCollisonToit() +std::vector GestionCollision::CheckCollisonToit() { - return std::vector(); + return std::vector(); } diff --git a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.h b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.h index b7eab3b..1f794a1 100644 --- a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.h +++ b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionCollision.h @@ -5,6 +5,8 @@ #include "Mobs.h" #include +using namespace godot; + class GestionCollision { public : @@ -15,8 +17,8 @@ public : public: GestionCollision(GestionMobs* m, GestionPlayer* p, GestionTerrain* t); - std::vector CheckCollisonSol(); - std::vector CheckCollisonMur(); - std::vector CheckCollisonToit(); + std::vector CheckCollisonSol(); + std::vector CheckCollisonMur(); + std::vector CheckCollisonToit(); };