Rename hcore=>smocore

This commit is contained in:
2025-07-22 06:15:12 -04:00
parent 9c16aeeb55
commit 756571b9b4
54 changed files with 6 additions and 6 deletions
+79
View File
@@ -0,0 +1,79 @@
#ifndef SIMULATOR_COMMANDLIST_H
#define SIMULATOR_COMMANDLIST_H
#include <vector>
#include <cstdint>
#include <mentalEntity.h>
namespace hk {
namespace simulator {
/**
* @brief Base class for all commands, storing a reference to a mental entity ID.
*
* Derived classes can extend this to include additional command-specific
* data and behavior.
*/
class Command
{
public:
Command(const MentalEntity::Id menty) : menty(menty) {}
public:
const MentalEntity::Id menty;
};
class CommandList
{
public:
CommandList() = default;
/**
* @brief Used by Scene to point to the currently executing command.
*
* simulator::Scene maintains an internal cursor. As it executes commands
* from its internal command list, it advances the cursor to the current
* command before executing it.
*/
class Cursor
{
public:
Cursor(CommandList& commandList)
: commandList(commandList), iter(commandList.commands.begin())
{}
void reset() { iter = commandList.commands.begin(); }
bool hasNext() const { return iter != commandList.commands.end(); }
Cursor next() { return ++(*this); }
Cursor& operator++() {
++iter;
return *this;
}
private:
Cursor(
CommandList& commandList,
std::vector<Command>::iterator iter)
: commandList(commandList), iter(iter)
{}
public:
CommandList& commandList;
std::vector<Command>::iterator iter;
};
Cursor getCursor() { return Cursor(*this); }
void addCommand(const Command& command)
{
commands.push_back(command);
}
public:
std::vector<Command> commands;
};
} // namespace simulator
} // namespace hk
#endif // SIMULATOR_COMMANDLIST_H
+40
View File
@@ -0,0 +1,40 @@
#ifndef _SCENE_H
#define _SCENE_H
#include <cstdint>
#include <map>
#include <mentalEntity.h>
#include <simulator/commandList.h>
namespace hk {
namespace simulator {
class Scene
{
public:
using Id = uint32_t;
Scene(void) :
cursor(commands)
{}
~Scene() = default;
bool hasMentalEntity(const MentalEntity::Id menty) const;
MentalEntity::Id addMentalEntity(const MentalEntity& menty);
void replaceMentalEntity(const MentalEntity::Id menty, const MentalEntity& newMenty);
void removeMentalEntity(const MentalEntity::Id menty);
void executeInd(void);
CommandList::Cursor haltInd(void);
private:
std::map<MentalEntity::Id, MentalEntity &> menties;
CommandList commands;
CommandList::Cursor cursor;
};
} // namespace simulator
} // namespace hk
#endif
+26
View File
@@ -0,0 +1,26 @@
#ifndef SIMULATOR_H
#define SIMULATOR_H
#include <config.h>
#include <simulator/scene.h>
namespace hk {
namespace simulator {
class Simulator {
public:
Simulator() = default;
~Simulator() = default;
void initialize();
void loadScene(Scene::Id sceneId, Scene &scene);
private:
Scene::Id sceneId;
Scene scene;
};
} // namespace simulator
} // namespace hk
#endif // SIMULATOR_H