93 lines
2.2 KiB
C++
93 lines
2.2 KiB
C++
|
|
#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;
|
|
}
|
|
|
|
} |