Now systems.cpp is disconnected from levelmanager. That leaves the GUIs and then to completely remove it and clean up the api.

This commit is contained in:
Zed A. Shaw 2025-08-19 11:05:32 -04:00
parent 81e25f73bb
commit d5ff57e025
9 changed files with 106 additions and 89 deletions

View file

@ -73,7 +73,7 @@ namespace gui {
void FSM::MOVING(Event ) {
// this should be an optional that returns a point
if(auto move_to = $main_ui.play_move()) {
System::plan_motion(Game::current(), *move_to);
System::plan_motion(*move_to);
run_systems();
$main_ui.dirty();
state(State::IDLE);
@ -84,7 +84,7 @@ namespace gui {
using enum Event;
switch(ev) {
case TICK: {
System::combat(Game::current(), $temp_attack_id);
System::combat($temp_attack_id);
run_systems();
state(State::IN_COMBAT);
} break;
@ -195,7 +195,7 @@ namespace gui {
auto gui_id = std::any_cast<guecs::Entity>(data);
auto& slot_name = $status_ui.$gui.name_for(gui_id);
if(System::use_item(Game::current(), slot_name)) {
if(System::use_item(slot_name)) {
$status_ui.update();
}
} break;
@ -207,7 +207,7 @@ namespace gui {
mouse_action({1 << guecs::ModBit::hover});
} break;
case AIM_CLICK:
System::pickup(Game::current());
System::pickup();
break;
default:
break; // ignore everything else
@ -362,9 +362,8 @@ namespace gui {
event(Event::LOOT_OPEN);
break;
case KEY::Z: {
auto& level = Game::current();
auto& player_pos = Game::player_position();
System::distribute_loot(level, {player_pos.aiming_at});
System::distribute_loot({player_pos.aiming_at});
} break;
case KEY::X:
event(Event::STAIRS_DOWN);
@ -422,14 +421,13 @@ namespace gui {
}
void FSM::run_systems() {
auto& level = Game::current();
System::generate_paths(level);
System::enemy_ai_initialize(level);
System::enemy_pathing(level);
System::collision(level);
System::motion(level);
System::lighting(level);
System::death(level);
System::generate_paths();
System::enemy_ai_initialize();
System::enemy_pathing();
System::collision();
System::motion();
System::lighting();
System::death();
}
bool FSM::active() {
@ -504,7 +502,7 @@ namespace gui {
event(Event::LOOT_OPEN);
} break;
case eGUI::HP_STATUS:
System::player_status(Game::current());
System::player_status();
break;
case eGUI::NEW_RITUAL:
$combat_ui.init();

View file

@ -1,7 +1,6 @@
#pragma once
#include "constants.hpp"
#include "levelmanager.hpp"
#include "simplefsm.hpp"
#include "gui/debug_ui.hpp"
#include "gui/main_ui.hpp"

View file

@ -128,7 +128,7 @@ namespace gui {
}
void LootUI::drop_item(DinkyECS::Entity item_id) {
System::drop_item($level, item_id);
System::drop_item(item_id);
update();
}
@ -137,14 +137,14 @@ namespace gui {
}
bool LootUI::occupied(guecs::Entity slot) {
return System::inventory_occupied($level, $target, $gui.name_for(slot));
return System::inventory_occupied($target, $gui.name_for(slot));
}
void LootUI::swap(guecs::Entity gui_a, guecs::Entity gui_b) {
if(gui_a != gui_b) {
auto& a_name = $gui.name_for(gui_a);
auto& b_name = $gui.name_for(gui_b);
System::inventory_swap($level, $target, a_name, b_name);
System::inventory_swap($target, a_name, b_name);
}
update();

View file

@ -51,7 +51,7 @@ namespace gui {
void MapViewUI::render(sf::RenderWindow &window, int compass_dir) {
$gui.render(window);
System::draw_map($level, $map_tiles, $entity_map);
System::draw_map($map_tiles, $entity_map);
System::render_map($map_tiles, $entity_map, *$map_render, compass_dir, $player_display);
$map_sprite.setTexture($map_render->getTexture(), true);
window.draw($map_sprite);

View file

@ -127,7 +127,7 @@ namespace gui {
}
void StatusUI::drop_item(DinkyECS::Entity item_id) {
System::drop_item($level, item_id);
System::drop_item(item_id);
update();
}
@ -142,7 +142,7 @@ namespace gui {
if(gui_a != gui_b) {
auto& a_name = $gui.name_for(gui_a);
auto& b_name = $gui.name_for(gui_b);
System::inventory_swap($level, $level.player, a_name, b_name);
System::inventory_swap($level.player, a_name, b_name);
}
update();
@ -150,6 +150,6 @@ namespace gui {
bool StatusUI::occupied(guecs::Entity slot) {
auto player = $level.world->get_the<components::Player>();
return System::inventory_occupied($level, player.entity, $gui.name_for(slot));
return System::inventory_occupied(player.entity, $gui.name_for(slot));
}
}