/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * SPITPlayer describes a virtual SPIT Player. * File: SPITPLayer.cpp * Author: Hagi * * Created on 30. April 2019, 11:44 */ #include "SPITPlayer.h" #include "esp_log.h" #include #include using namespace std; unordered_map> SPITPlayer::s_SPITPlayers; SPITPlayer &SPITPlayer::getSPITPlayer(string p_PlayerID) { auto i = s_SPITPlayers.find(p_PlayerID); if (i == s_SPITPlayers.end()) { s_SPITPlayers[p_PlayerID] = make_unique(p_PlayerID); } return *s_SPITPlayers.at(p_PlayerID); } SPITPlayer::SPITPlayer(string p_PlayerID) { m_ID = p_PlayerID; } SPITPlayer::~SPITPlayer() { m_PlaySPITTypes.clear(); } /** * * @param p_SPITObjectID * @return true = new PlayObject added
* false = PlayObject exists */ SPITPlayer::PlaySPITType *SPITPlayer::addSPITType_Playing(string p_SPITTypeID) { PlaySPITType *ptrPlaySPITType; auto i = m_PlaySPITTypes.find(p_SPITTypeID); if (i == m_PlaySPITTypes.end()) { auto playSpitType = make_unique(this, p_SPITTypeID); ptrPlaySPITType = playSpitType.get(); m_PlaySPITTypes[p_SPITTypeID] = move(playSpitType); } else { ptrPlaySPITType = i->second.get(); } ptrPlaySPITType->setIsPlayed(true); return ptrPlaySPITType; } void SPITPlayer::startPlaySequence() { for (auto i = m_PlaySPITTypes.begin(); i != m_PlaySPITTypes.end(); i++) { PlaySPITType *ptrPlaySPITType = i->second.get(); ptrPlaySPITType->startPlaySequence(); } } void SPITPlayer::endPlaySequence() { for (auto i = m_PlaySPITTypes.begin(); i != m_PlaySPITTypes.end();) { if (i->second.get()->getIsPlayed() == false) { i = m_PlaySPITTypes.erase(i); } else { ++i; } } } SPITPlayer::PlaySPITType::PlaySPITType(SPITPlayer *p_SPITPlayer, string p_SPITTypeID) { m_IsNew = true; m_SPITTypeID = p_SPITTypeID; m_PlayerID = p_SPITPlayer->getID(); m_PlayerName = p_SPITPlayer->getName(); startPlaySequence(); m_IsNew = true; } SPITPlayer::PlaySPITType::PlaySPITType(const PlaySPITType &orig) { m_SPITTypeID = orig.getSPITTypeID(); m_IsPlayed = orig.getIsPlayed(); m_IsNew = orig.getIsNew(); m_PlayerID = orig.getPlayerID(); m_PlayerName = orig.getPlayerName(); m_PlayerRuns = orig.getPlayerIsRunning(); m_Value = orig.getValue(); } void SPITPlayer::PlaySPITType::startPlaySequence() { m_IsPlayed = false; m_IsNew = false; m_Value = 0; }