124 lines
No EOL
2.3 KiB
C++
Executable file
124 lines
No EOL
2.3 KiB
C++
Executable file
#include "headers/grid_container.hpp"
|
|
|
|
namespace asloengine
|
|
{
|
|
|
|
GridContainer::GridContainer(sf::String _name, sf::Vector2u _grid_size, sf::Vector2f _cell_size)
|
|
: grid_size(_grid_size), cell_size(_cell_size), GameObject(_name) {}
|
|
|
|
GridContainer::~GridContainer() {}
|
|
|
|
void GridContainer::update_positions()
|
|
{
|
|
|
|
sf::Vector2f grid_anchor_position = get_position() - (get_origin() * to_vector2f(grid_size) * cell_size);
|
|
|
|
for (int x = 0; x < grid_size.x; x++)
|
|
{
|
|
for (int y = 0; y < grid_size.y; y++)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
unsigned int x = 0;
|
|
unsigned int y = 0;
|
|
|
|
for (GameObject *const& object : objects)
|
|
{
|
|
|
|
if (x >= grid_size.x)
|
|
{
|
|
y++;
|
|
x = 0;
|
|
}
|
|
|
|
if (y >= grid_size.y)
|
|
{
|
|
break;
|
|
}
|
|
|
|
sf::Vector2f tmp_vec = grid_anchor_position + sf::Vector2f(x * cell_size.x, y * cell_size.y);
|
|
object->set_position(tmp_vec);
|
|
|
|
x++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void GridContainer::add_object(GameObject *object)
|
|
{
|
|
|
|
objects.emplace_back(object);
|
|
|
|
update_positions();
|
|
|
|
}
|
|
|
|
void GridContainer::remove_object(int index)
|
|
{
|
|
|
|
objects.erase(objects.begin() + index);
|
|
|
|
update_positions();
|
|
|
|
}
|
|
|
|
void GridContainer::draw()
|
|
{
|
|
|
|
for (GameObject *const& object : objects)
|
|
{
|
|
object->draw();
|
|
}
|
|
|
|
}
|
|
|
|
void GridContainer::on_start()
|
|
{
|
|
|
|
for (GameObject *const& object : objects)
|
|
{
|
|
object->start(render_window);
|
|
}
|
|
|
|
}
|
|
|
|
void GridContainer::on_update(float delta_time)
|
|
{
|
|
|
|
for (GameObject *const& object : objects)
|
|
{
|
|
object->update(delta_time);
|
|
if (!object->alive)
|
|
{
|
|
needs_clean = true;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void GridContainer::clean()
|
|
{
|
|
|
|
for (int i = 0; i < objects.size(); i++)
|
|
{
|
|
objects.erase(objects.begin() + i);
|
|
}
|
|
|
|
needs_clean = false;
|
|
|
|
}
|
|
|
|
void GridContainer::on_destroy()
|
|
{
|
|
|
|
for (GameObject *const& object : objects)
|
|
{
|
|
object->destroy();
|
|
}
|
|
|
|
}
|
|
|
|
} |