refactor: Heavy refactoring of SPIT

This commit is contained in:
2025-11-11 01:01:10 +01:00
parent a18ddf2cb1
commit 3afaf3848f
26 changed files with 2166 additions and 2329 deletions
+93
View File
@@ -0,0 +1,93 @@
#include "spit_player.hpp"
#include "esp_log.h"
#include <memory>
#include <vector>
using namespace std;
namespace spit {
unordered_map<string, unique_ptr<SPlayer>> SPlayer::sSpitPlayers;
SPlayer &SPlayer::getSPITPlayer(string playerID) {
auto i = sSpitPlayers.find(playerID);
if (i == sSpitPlayers.end()) {
sSpitPlayers[playerID] = make_unique<SPlayer>(playerID);
}
return *sSpitPlayers.at(playerID);
}
SPlayer::SPlayer(string playerID) {
mId = playerID;
}
SPlayer::~SPlayer() {
mPlaySPITTypes.clear();
}
/**
*
* @param p_SPITObjectID
* @return true = new PlayObject added<br>
* false = PlayObject exists
*/
SPlayer::PlayType *SPlayer::addTypePlaying(string spitTypeID) {
PlayType *ptrPlaySPITType;
auto i = mPlaySPITTypes.find(spitTypeID);
if (i == mPlaySPITTypes.end()) {
auto playSpitType = make_unique<PlayType>(this, spitTypeID);
ptrPlaySPITType = playSpitType.get();
mPlaySPITTypes[spitTypeID] = move(playSpitType);
} else {
ptrPlaySPITType = i->second.get();
}
ptrPlaySPITType->setIsPlayed(true);
return ptrPlaySPITType;
}
void SPlayer::startPlaySequence() {
for (auto i = mPlaySPITTypes.begin(); i != mPlaySPITTypes.end(); i++) {
PlayType *ptrPlaySPITType = i->second.get();
ptrPlaySPITType->startPlaySequence();
}
}
void SPlayer::endPlaySequence() {
for (auto i = mPlaySPITTypes.begin(); i != mPlaySPITTypes.end();) {
if (i->second.get()->getIsPlayed() == false) {
i = mPlaySPITTypes.erase(i);
} else {
++i;
}
}
}
SPlayer::PlayType::PlayType(SPlayer *p_SPITPlayer, string spitTypeID) {
mIsNew = true;
mSpitTypeID = spitTypeID;
mPlayerID = p_SPITPlayer->getID();
mPlayerName = p_SPITPlayer->getName();
startPlaySequence();
mIsNew = true;
}
SPlayer::PlayType::PlayType(const PlayType &orig) {
mSpitTypeID = orig.getSPITTypeID();
mIsPlayed = orig.getIsPlayed();
mIsNew = orig.getIsNew();
mPlayerID = orig.getPlayerID();
mPlayerName = orig.getPlayerName();
mPlayerRuns = orig.getPlayerIsRunning();
mValue = orig.getValue();
}
void SPlayer::PlayType::startPlaySequence() {
mIsPlayed = false;
mIsNew = false;
mValue = 0;
}
}