feat: implement TickSystem for managing world ticks and initialize World constructor
Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
parent
998668802f
commit
0edb71385f
@ -2,17 +2,21 @@
|
||||
#define ISTD_CORE_WORLD_H
|
||||
|
||||
#include "istd_core/room.h"
|
||||
#include "tilemap/generation.h"
|
||||
#include "tilemap/tilemap.h"
|
||||
#include <vector>
|
||||
|
||||
namespace istd {
|
||||
|
||||
struct World {
|
||||
std::uint32_t tick;
|
||||
TileMap tilemap;
|
||||
std::vector<std::vector<Room>> rooms;
|
||||
entt::registry registry;
|
||||
|
||||
World(std::uint8_t size);
|
||||
|
||||
void generateTilemap(const GenerationConfig &config);
|
||||
};
|
||||
|
||||
} // namespace istd
|
||||
|
39
core/src/world.cpp
Normal file
39
core/src/world.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include "istd_core/world.h"
|
||||
#include "istd_core/system.h"
|
||||
#include "tilemap/generation.h"
|
||||
|
||||
namespace istd {
|
||||
|
||||
namespace {
|
||||
|
||||
struct TickSystem : public System {
|
||||
void tick(World &world) const noexcept override {
|
||||
world.tick += 1;
|
||||
}
|
||||
|
||||
std::string_view name() const noexcept override {
|
||||
return "Tick System";
|
||||
}
|
||||
};
|
||||
|
||||
static const TickSystem tick_system;
|
||||
static const SystemRegistry::Registar tick_registrar(
|
||||
System::Precedence::Highest, &tick_system
|
||||
);
|
||||
|
||||
} // namespace
|
||||
|
||||
World::World(std::uint8_t size)
|
||||
: tick(0), tilemap(size), rooms(size, std::vector<Room>(size, {0, 0})) {
|
||||
for (std::uint8_t x = 0; x < size; ++x) {
|
||||
for (std::uint8_t y = 0; y < size; ++y) {
|
||||
rooms[x][y] = {x, y};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void World::generateTilemap(const GenerationConfig &config) {
|
||||
map_generate(tilemap, config);
|
||||
}
|
||||
|
||||
} // namespace istd
|
Loading…
x
Reference in New Issue
Block a user