A bit of a quick test for the GUI system, but not sure how to make this do more.

main
Zed A. Shaw 2 days ago
parent 48df9248b2
commit c7607533ce
  1. 5
      gui.cpp
  2. 2
      gui.hpp
  3. 2
      main.cpp
  4. 2
      meson.build
  5. 41
      tests/gui.cpp
  6. 3
      tests/render.cpp

@ -252,8 +252,7 @@ void GUI::render_scene() {
$renderer.display(); $renderer.display();
} }
int GUI::main() { int GUI::main(bool run_once) {
// $sounds.play("ambient");
create_renderer(); create_renderer();
run_systems(); run_systems();
@ -266,7 +265,7 @@ int GUI::main() {
} }
std::this_thread::sleep_for(10ms); std::this_thread::sleep_for(10ms);
} while($renderer.is_open()); } while(!run_once && $renderer.is_open());
return 0; return 0;
} }

@ -69,5 +69,5 @@ public:
void save_world(); void save_world();
void shake(); void shake();
int main(); int main(bool run_once=false);
}; };

@ -72,9 +72,7 @@ int main(int argc, char *argv[]) {
_setmode(_fileno(stdout), _O_U16TEXT); _setmode(_fileno(stdout), _O_U16TEXT);
#endif #endif
DinkyECS::World world; DinkyECS::World world;
Map game_map(GAME_MAP_X, GAME_MAP_Y); Map game_map(GAME_MAP_X, GAME_MAP_Y);
save::load_configs(world); save::load_configs(world);
if(argc == 2) { if(argc == 2) {

@ -33,6 +33,7 @@ runtests = executable('runtests', [
'pathing.cpp', 'pathing.cpp',
'lights.cpp', 'lights.cpp',
'systems.cpp', 'systems.cpp',
'gui.cpp',
'worldbuilder.cpp', 'worldbuilder.cpp',
'tests/fsm.cpp', 'tests/fsm.cpp',
'tests/dbc.cpp', 'tests/dbc.cpp',
@ -48,6 +49,7 @@ runtests = executable('runtests', [
'tests/sound.cpp', 'tests/sound.cpp',
'tests/pathing.cpp', 'tests/pathing.cpp',
'tests/lighting.cpp', 'tests/lighting.cpp',
'tests/gui.cpp',
'tests/worldbuilder.cpp', 'tests/worldbuilder.cpp',
], ],
dependencies: dependencies) dependencies: dependencies)

@ -0,0 +1,41 @@
#include <catch2/catch_test_macros.hpp>
#include <fmt/core.h>
#include "gui.hpp"
#include "map.hpp"
#include "dinkyecs.hpp"
#include "worldbuilder.hpp"
#include "save.hpp"
#include "systems.hpp"
#include "collider.hpp"
#include "components.hpp"
using namespace fmt;
using namespace components;
using std::string;
TEST_CASE("load a basic gui run but don't loop", "[render]") {
DinkyECS::World world;
save::load_configs(world);
Map game_map(40, 40);
WorldBuilder builder(game_map);
builder.generate();
const auto &config = world.get_the<MapConfig>();
// configure a player as a fact of the world
Player player{world.entity()};
world.set_the<Player>(player);
world.set<Position>(player.entity, {game_map.place_entity(0)});
world.set<Motion>(player.entity, {0, 0});
world.set<Combat>(player.entity, {100, 10});
world.set<Tile>(player.entity, {config.PLAYER_TILE});
world.set<Inventory>(player.entity, {5});
world.set<LightSource>(player.entity, {6,1});
spatial_map collider;
world.set_the<spatial_map>(collider);
System::init_positions(world);
GUI gui(world, game_map);
gui.main(true); // runs once
}

@ -47,7 +47,7 @@ TEST_CASE("can render a text", "[render]") {
save::load_configs(world); save::load_configs(world);
const auto& config = world.get_the<MapConfig>(); const auto& config = world.get_the<MapConfig>();
Panel map_view(0, 0, 20, 5, true); Panel map_view(0, 0, 20, 20, true);
Map map(20,20); Map map(20,20);
WorldBuilder builder(map); WorldBuilder builder(map);
builder.generate(); builder.generate();
@ -72,6 +72,7 @@ TEST_CASE("can render a text", "[render]") {
for(int i = 2; i < 14; i++) { for(int i = 2; i < 14; i++) {
renderer.resize_grid(i * 10, map_view); renderer.resize_grid(i * 10, map_view);
map_canvas = Canvas(map_view.width * 2, map_view.height * 4);
run_renderer(renderer, map_view); run_renderer(renderer, map_view);
} }

Loading…
Cancel
Save