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
|
#define ISTD_CORE_WORLD_H
|
||||||
|
|
||||||
#include "istd_core/room.h"
|
#include "istd_core/room.h"
|
||||||
|
#include "tilemap/generation.h"
|
||||||
#include "tilemap/tilemap.h"
|
#include "tilemap/tilemap.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace istd {
|
namespace istd {
|
||||||
|
|
||||||
struct World {
|
struct World {
|
||||||
|
std::uint32_t tick;
|
||||||
TileMap tilemap;
|
TileMap tilemap;
|
||||||
std::vector<std::vector<Room>> rooms;
|
std::vector<std::vector<Room>> rooms;
|
||||||
entt::registry registry;
|
entt::registry registry;
|
||||||
|
|
||||||
World(std::uint8_t size);
|
World(std::uint8_t size);
|
||||||
|
|
||||||
|
void generateTilemap(const GenerationConfig &config);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace istd
|
} // 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