mirror of
https://github.com/HowestDAE/dae16-VerhulstBram.git
synced 2025-12-16 21:01:48 +01:00
Add Main UI, Fuel meter. Add particles to player digging
This commit is contained in:
@@ -35,12 +35,13 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
|
||||
m_GridManager.GetTileAtIndex(x, 0)->SetTileType(GroundTileTypeManager::GetInstance()->AIR);
|
||||
m_GridManager.GetTileAtIndex(x, 1)->SetTileType(GroundTileTypeManager::GetInstance()->GRASS);
|
||||
}
|
||||
m_RefeulBuilding = new Building { "buildings/fuelStation.png", Vector2f { -700, -52 }, TextureManager::GetInstance() };
|
||||
m_Buildings.emplace_back(Building { "buildings/fuelStation.png", Vector2f { -700, -52 }, TextureManager::GetInstance() });
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f { -750, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f { -700, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f { -650, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f { -600, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT);
|
||||
|
||||
m_MineralBuilding = new Building { "buildings/mineralStation.png", Vector2f { -350, -52 }, TextureManager::GetInstance() };
|
||||
m_Buildings.emplace_back(Building { "buildings/mineralStation.png", Vector2f { -350, -52 }, TextureManager::GetInstance() });
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {-400, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {-350, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {-300, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
@@ -48,7 +49,7 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {-200, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {-150, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT);
|
||||
|
||||
m_JunkBuilding = new Building { "buildings/junkStation.png", Vector2f { 250, -52 }, TextureManager::GetInstance() };
|
||||
m_Buildings.emplace_back(Building { "buildings/junkStation.png", Vector2f { 250, -52 }, TextureManager::GetInstance() });
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {200, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {250, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {300, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
@@ -56,24 +57,22 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {400, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {450, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT);
|
||||
|
||||
m_RepairBuilding = new Building { "buildings/repairStation.png", Vector2f { 700, -52 }, TextureManager::GetInstance() };
|
||||
m_Buildings.emplace_back(Building { "buildings/repairStation.png", Vector2f { 700, -52 }, TextureManager::GetInstance() });
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {650, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {700, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {750, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE);
|
||||
m_GridManager.GetTileAtWorldPos(Vector2f {800, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT);
|
||||
// m_Meter = new GuiMeter("gui/main/fuel_guage.png", Vector2f{100, 100}, Vector2f{336, 146}, 100, TextureManager::GetInstance());
|
||||
// Texture* test = new Texture("gui/main/fuel_guage.png");
|
||||
m_topCover = TextureManager::GetInstance()->GetTexture("topBackground.png");
|
||||
|
||||
m_MainScreen = new MainScreen(TextureManager::GetInstance());
|
||||
|
||||
}
|
||||
WorldLevel::~WorldLevel() {
|
||||
delete m_RefeulBuilding;
|
||||
delete m_MineralBuilding;
|
||||
delete m_JunkBuilding;
|
||||
delete m_RepairBuilding;
|
||||
|
||||
delete m_MainScreen;
|
||||
}
|
||||
void WorldLevel::Update(float elapsedSec) {
|
||||
m_Fps = 1 / elapsedSec;
|
||||
// m_Meter->Update(elapsedSec);
|
||||
|
||||
int mouseX, mouseY;
|
||||
SDL_GetMouseState(&mouseX, &mouseY);
|
||||
@@ -95,20 +94,9 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
}
|
||||
}
|
||||
}
|
||||
testCounter++;
|
||||
std::vector<Particle*> ToDelete{};
|
||||
for(Particle* p : m_Particles) {
|
||||
p->Update(elapsedSec);
|
||||
if(p->IsDead()) {
|
||||
ToDelete.emplace_back(p);
|
||||
}
|
||||
}
|
||||
for (Particle* p : ToDelete) {
|
||||
m_Particles.erase(std::remove(m_Particles.begin(), m_Particles.end(), p), m_Particles.end());
|
||||
delete p;
|
||||
}
|
||||
if(testCounter % 100 == 0) {
|
||||
m_Particles.emplace_back(new Particle(Vector2f{100, 100}, Vector2f{float(utils::randRange(-200, 200)), 10},100, TextureManager::GetInstance()->GetTexture("particles/dirt_" + std::to_string(utils::randRange(1, 8)) + ".png")));
|
||||
|
||||
for (Building building : m_Buildings) {
|
||||
building.Update(elapsedSec);
|
||||
}
|
||||
|
||||
|
||||
@@ -118,23 +106,6 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
}
|
||||
}
|
||||
|
||||
//Get the diogonal tiles of the selected tile
|
||||
// if (m_pSelectedTile != nullptr) {
|
||||
// surroundingTiles surroundingTiles = m_gridManager.GetSurroundingTiles(m_pSelectedTile);
|
||||
// TileDirection direction = TileDirection::TopMiddle;
|
||||
// const std::array<TileDirection, 8> directions = { TileDirection::TopLeft, TileDirection::TopMiddle, TileDirection::TopRight, TileDirection::MiddleLeft,
|
||||
// TileDirection::MiddleRight, TileDirection::BottomLeft, TileDirection::BottomMiddle, TileDirection::BottomRight };
|
||||
//
|
||||
// for (int i = 0; i < 8; i++) {
|
||||
// direction = directions[i];
|
||||
// if (surroundingTiles.GetTile(direction) != nullptr) {
|
||||
// if (surroundingTiles.GetTile(direction)->GetTileType() != GroundTileTypeManager::GetInstance()->AIR) {
|
||||
// //surroundingTiles.GetTile(direction)->m_Hightlight = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
m_Player.Update(elapsedSec, *this);
|
||||
|
||||
//Move the camera when the player gets to the edge
|
||||
@@ -150,8 +121,8 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
if (playerPos.y < newCameraPos.y + 50) {
|
||||
newCameraPos.y = playerPos.y - 50;
|
||||
}
|
||||
if (playerPos.y > newCameraPos.y + m_Viewport.height - 50) {
|
||||
newCameraPos.y = playerPos.y - m_Viewport.height + 50;
|
||||
if (playerPos.y > newCameraPos.y + m_Viewport.height - 100) {
|
||||
newCameraPos.y = playerPos.y - m_Viewport.height + 100;
|
||||
}
|
||||
m_pCamera->SetPosition(newCameraPos);
|
||||
}
|
||||
@@ -161,6 +132,8 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
screen->Update(elapsedSec);
|
||||
}
|
||||
|
||||
m_MainScreen->Update(elapsedSec);
|
||||
|
||||
//Vector2f playerPos = m_player.GetPosition();
|
||||
//Vector2f newCameraPos = playerPos;
|
||||
//m_pCamera->SetPosition(newCameraPos);
|
||||
@@ -169,7 +142,10 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
//m_pCamera->SetPosition(Vector2f{playerPos.x - m_viewport.width / 2, playerPos.y - m_viewport.height / 2});
|
||||
}
|
||||
void WorldLevel::Draw() const {
|
||||
|
||||
m_pCamera->BeginRendering();
|
||||
// m_topCover->Draw(Vector2f{-850,-70} );
|
||||
m_topCover->Draw(Rectf{-850, -70, 850, -70 + 32}, Rectf{0, 0, WORLD_WIDTH * 50, 32});
|
||||
|
||||
for (Collision::CollisionRect rect : m_Rects) {
|
||||
utils::DrawRect(rect.pos, rect.size.x, rect.size.y);
|
||||
@@ -191,16 +167,12 @@ void WorldLevel::Draw() const {
|
||||
m_pSelectedTile->Draw();
|
||||
}
|
||||
|
||||
m_RefeulBuilding->Draw();
|
||||
m_MineralBuilding->Draw();
|
||||
m_JunkBuilding->Draw();
|
||||
m_RepairBuilding->Draw();
|
||||
m_Player.Draw();
|
||||
|
||||
for(Particle* p : m_Particles) {
|
||||
p->Draw();
|
||||
for(Building building : m_Buildings) {
|
||||
building.Draw();
|
||||
}
|
||||
|
||||
m_Player.Draw();
|
||||
|
||||
utils::SetColor(Colors::GREEN);
|
||||
utils::DrawArrow(Vector2f{0, 0}, m_MousePos);
|
||||
|
||||
@@ -214,8 +186,9 @@ void WorldLevel::Draw() const {
|
||||
if (screen != nullptr) {
|
||||
screen->Draw();
|
||||
}
|
||||
m_MainScreen->Draw();
|
||||
|
||||
|
||||
// m_Meter->Draw();
|
||||
}
|
||||
void WorldLevel::MouseMove(const Vector2f& mousePos) {
|
||||
m_MousePos = mousePos;
|
||||
|
||||
Reference in New Issue
Block a user