Now I can have a config at the top that's loaded.

master
Zed A. Shaw 3 days ago
parent 84dafe2f2e
commit 9fab50277d
  1. 7
      parser.cpp
  2. 12
      slides.cpp
  3. 13
      slides.hpp

@ -10,7 +10,7 @@ using std::shared_ptr, std::string, nlohmann::json;
namespace fs = std::filesystem; namespace fs = std::filesystem;
shared_ptr<SlideDeck> parse_slides(const string& md_file) { shared_ptr<SlideDeck> parse_slides(const string& md_file) {
shared_ptr<SlideDeck> slides = std::make_shared<SlideDeck>(); shared_ptr<SlideDeck> deck = std::make_shared<SlideDeck>();
dbc::check(fs::exists(md_file), "md file missing"); dbc::check(fs::exists(md_file), "md file missing");
@ -33,6 +33,7 @@ shared_ptr<SlideDeck> parse_slides(const string& md_file) {
config = json::parse(json_data); config = json::parse(json_data);
std::cout << "JSON: " << config << '\n'; std::cout << "JSON: " << config << '\n';
} else if(line == "===") { } else if(line == "===") {
deck->config = config;
fmt::println("START"); fmt::println("START");
started = true; started = true;
} else if(line == "---") { } else if(line == "---") {
@ -46,7 +47,7 @@ shared_ptr<SlideDeck> parse_slides(const string& md_file) {
content += line + "\n"; content += line + "\n";
} }
slides->emplace_back(title, content, config); deck->slides.emplace_back(title, content, config);
config = json::parse("{}"); config = json::parse("{}");
} else { } else {
fmt::println("JUNK: {}", line); fmt::println("JUNK: {}", line);
@ -55,5 +56,5 @@ shared_ptr<SlideDeck> parse_slides(const string& md_file) {
} }
} }
return slides; return deck;
} }

@ -49,10 +49,10 @@ void Slide::render(sf::RenderWindow& window) {
// $gui.debug_layout(window); // $gui.debug_layout(window);
} }
SlidesUI::SlidesUI(shared_ptr<SlideDeck> slides) { SlidesUI::SlidesUI(shared_ptr<SlideDeck> deck) {
dbc::check(slides != nullptr, "slides is null"); dbc::check(deck != nullptr, "deck is null");
dbc::check(slides->size() > 0, "slide deck is empy"); dbc::check(deck->slides.size() > 0, "slide deck is empy");
$slides = slides; $deck = deck;
$current = 0; $current = 0;
$gui.position(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); $gui.position(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
@ -78,11 +78,11 @@ void SlidesUI::init() {
} }
Slide& SlidesUI::current() { Slide& SlidesUI::current() {
return $slides->at($current); return $deck->slides.at($current);
} }
void SlidesUI::next_slide() { void SlidesUI::next_slide() {
if($current < $slides->size() - 1) { if($current < $deck->slides.size() - 1) {
$current++; $current++;
show_slide(); show_slide();
} }

@ -19,16 +19,21 @@ struct Slide {
void init(lel::Cell& cell); void init(lel::Cell& cell);
void render(sf::RenderWindow& window); void render(sf::RenderWindow& window);
}; }
;
using SlideSet = std::vector<Slide>;
using SlideDeck = std::vector<Slide>; struct SlideDeck {
nlohmann::json config;
SlideSet slides;
};
struct SlidesUI { struct SlidesUI {
guecs::UI $gui; guecs::UI $gui;
std::shared_ptr<SlideDeck> $slides = nullptr; std::shared_ptr<SlideDeck> $deck = nullptr;
size_t $current = 0; size_t $current = 0;
SlidesUI(std::shared_ptr<SlideDeck> slides); SlidesUI(std::shared_ptr<SlideDeck> deck);
void init(); void init();
Slide& current(); Slide& current();

Loading…
Cancel
Save