mirror of
https://github.com/HowestDAE/dae16-VerhulstBram.git
synced 2025-12-16 20:41:47 +01:00
Add more digging logic
This commit is contained in:
@@ -15,14 +15,15 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport):
|
||||
Level(camera),
|
||||
m_player(Player { Point2f { 0, 100 } }),
|
||||
m_mousePos { 0, 0 },
|
||||
m_viewport(viewport)
|
||||
m_viewport(viewport),
|
||||
m_gridManager(WorldGridManager())
|
||||
{
|
||||
// The grid is 34 x 50 big, the top center is 0,0 in world coords
|
||||
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
|
||||
for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
|
||||
int actualX = x - WORLD_WIDTH / 2;
|
||||
Point2f pos = Point2f{ float(actualX * TILE_WIDTH), -float(y * TILE_HEIGHT) - TILE_HEIGHT};
|
||||
m_worldTiles[x][y] = new WorldTile{ pos, GroundTileTypes::Dirt, TextureManager::GetInstance() };
|
||||
m_gridManager.SetTileAtIndex(x,y, new WorldTile{ pos, GroundTileTypes::Dirt, TextureManager::GetInstance() });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,8 +44,8 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
|
||||
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
|
||||
for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
|
||||
if(m_worldTiles[x][y]->GetCollisionRect().Contains(m_mousePos)) {
|
||||
selectedTile = m_worldTiles[x][y];
|
||||
if(m_gridManager.GetTileAtIndex(x,y)->GetCollisionRect().Contains(m_mousePos)) {
|
||||
selectedTile = m_gridManager.GetTileAtIndex(x,y);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,6 +57,11 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
|
||||
m_player.Update(elapsedSec, *this);
|
||||
|
||||
WorldTile* t = m_gridManager.GetTileAtWorldPos(m_mousePos);
|
||||
if(t != nullptr) {
|
||||
t->SetTileType(GroundTileTypes::Air);
|
||||
}
|
||||
|
||||
//Point2f playerPos = m_player.GetPosition();
|
||||
//Point2f newCameraPos = playerPos;
|
||||
//m_pCamera->SetPosition(newCameraPos);
|
||||
@@ -81,15 +87,15 @@ void WorldLevel::Draw() const {
|
||||
|
||||
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
|
||||
for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
|
||||
m_worldTiles[x][y]->Draw();
|
||||
m_gridManager.GetTileAtIndex(x,y)->Draw();
|
||||
}
|
||||
}
|
||||
|
||||
//loop over worldtiles
|
||||
for (int x { 0 }; x < WORLD_WIDTH; ++x) {
|
||||
for (int y { 0 }; y < WORLD_HEIGHT; ++y) {
|
||||
if(m_worldTiles[x][y]->GetTileType() == GroundTileTypes::Dirt) {
|
||||
Collision::CollisionRect rect = m_worldTiles[x][y]->GetCollisionRect().getCollisionRect();
|
||||
if(m_gridManager.GetTileAtIndex(x,y)->GetTileType() == GroundTileTypes::Dirt) {
|
||||
Collision::CollisionRect rect = m_gridManager.GetTileAtIndex(x,y)->GetCollisionRect().getCollisionRect();
|
||||
utils::SetColor(Colors::GREEN);
|
||||
utils::DrawRect(rect.pos, rect.size.x, rect.size.y);
|
||||
}
|
||||
@@ -153,16 +159,7 @@ void WorldLevel::ProcessImGui() {
|
||||
// ImGui::Text("Size: (%f, %f)", contact.second->size.x, contact.second->size.y);
|
||||
// }
|
||||
ImGui::End();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
WorldTile* WorldLevel::GetTileAt(const Point2f& pos) const {
|
||||
return m_worldTiles[pos.x][pos.y];
|
||||
}
|
||||
void WorldLevel::SetTileAt(const Point2f& pos, WorldTile* tile) {
|
||||
}
|
||||
std::array<std::array<WorldTile*, WorldLevel::WORLD_WIDTH>, WorldLevel::WORLD_HEIGHT> WorldLevel::GetAllTiles() const {
|
||||
return m_worldTiles;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user