The player now has some starting items to craft a first weapon, and it is craftable in the UI.

This commit is contained in:
Zed A. Shaw 2025-04-26 13:18:43 -04:00
parent c8a8d2b1af
commit bc557652ba
11 changed files with 199 additions and 155 deletions

View file

@ -5,69 +5,80 @@
#include "dinkyecs.hpp"
#include "components.hpp"
namespace combat {
struct RitualBlanket {
namespace ritual {
enum class Element {
NONE=0, FIRE=1, LIGHTNING=2
};
enum class Kind {
NONE=0, PHYSICAL=1, MAGICK=2
};
struct CraftingState {
std::string script;
ai::State start;
ai::State original;
ai::State goal;
ai::ActionPlan plan;
RitualBlanket(std::string script, ai::State start, ai::State goal) :
CraftingState(std::string script, ai::State start, ai::State goal) :
script(script), start(start), original(start), goal(goal)
{
}
RitualBlanket() {};
CraftingState() {};
bool will_do(std::string name);
void dump();
ai::Action pop();
bool is_combined();
void reset();
};
enum class RitualElement {
NONE=0, FIRE=1, LIGHTNING=2
};
enum class RitualKind {
NONE=0, PHYSICAL=1, MAGICK=2
};
struct RitualAction {
struct Action {
float probability = 1.0f;
int damage = 0;
RitualKind kind{RitualKind::NONE};
RitualElement element{RitualElement::NONE};
Kind kind{Kind::NONE};
Element element{Element::NONE};
std::vector<std::string> names;
void dump();
};
struct RitualEngine {
struct Engine {
Config $config;
ai::AIProfile $profile;
std::unordered_map<std::string, ai::Action> $actions;
std::unordered_map<std::string, ai::State> $states;
std::unordered_map<std::string, std::vector<ai::Action>> $scripts;
RitualEngine(std::string config_path="assets/rituals.json");
Engine(std::string config_path="assets/rituals.json");
ai::State load_state(std::string name);
ai::Action load_action(std::string name);
RitualBlanket start();
void reset(RitualBlanket& ritual);
void set_state(RitualBlanket& ritual, std::string name, bool setting);
void plan(RitualBlanket& ritual);
RitualAction finalize(RitualBlanket& ritual);
CraftingState start();
void set_state(CraftingState& ritual, std::string name, bool setting);
void plan(CraftingState& ritual);
Action finalize(CraftingState& ritual);
};
struct RitualBelt {
std::unordered_map<int, RitualAction> equipped;
struct Belt {
std::unordered_map<int, Action> equipped;
RitualAction& get(int index);
void equip(int index, RitualAction& action);
Action& get(int index);
void equip(int index, Action& action);
bool has(int index);
void unequip(int index);
};
using JunkItem = std::string;
struct Blanket {
DinkyECS::World contents;
DinkyECS::Entity add(JunkItem name);
JunkItem& get(DinkyECS::Entity ent);
bool has(DinkyECS::Entity ent);
void remove(DinkyECS::Entity ent);
};
}