feature: Add SPIT-Source as is
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
/*
|
||||
* 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"
|
||||
|
||||
recursive_mutex SPITPlayer::s_Mutex;
|
||||
unordered_map<string, SPITPlayer*> SPITPlayer::s_SPITPlayers;
|
||||
|
||||
SPITPlayer* SPITPlayer::getSPITPlayer(string p_PlayerID) {
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockSPITPlayer(*SPITPlayer::getMutex());
|
||||
auto i = s_SPITPlayers.find(p_PlayerID);
|
||||
if (i == s_SPITPlayers.end()) {
|
||||
s_SPITPlayers[p_PlayerID] = new SPITPlayer(p_PlayerID);
|
||||
}
|
||||
i = s_SPITPlayers.find(p_PlayerID);
|
||||
if (i == s_SPITPlayers.end()) return NULL;
|
||||
return i->second;
|
||||
}
|
||||
}
|
||||
|
||||
void SPITPlayer::clearPlayers() {
|
||||
SPITPlayer* ptrSPITPlayer;
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockSPITPlayer(*SPITPlayer::getMutex());
|
||||
for (auto i = s_SPITPlayers.begin(); i != s_SPITPlayers.end(); i++) {
|
||||
ptrSPITPlayer = i->second;
|
||||
i = s_SPITPlayers.erase(i);
|
||||
delete ptrSPITPlayer;
|
||||
if (i == s_SPITPlayers.end()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SPITPlayer::SPITPlayer(string p_PlayerID) {
|
||||
m_ID = p_PlayerID;
|
||||
s_SPITPlayers[p_PlayerID] = this;
|
||||
}
|
||||
|
||||
|
||||
SPITPlayer::~SPITPlayer() {
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockPlayer(s_Mutex);
|
||||
PlayObject* ptrPlayObject;
|
||||
for (auto i = m_PlayObjects.begin(); i != m_PlayObjects.end(); i++) {
|
||||
ptrPlayObject = i->second;
|
||||
i = m_PlayObjects.erase(i);
|
||||
delete ptrPlayObject;
|
||||
if (i == m_PlayObjects.end()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SPITPlayer::setIsRunning(bool p_IsRunning) {
|
||||
m_IsRunning = p_IsRunning;
|
||||
}
|
||||
void SPITPlayer::setName(string p_Name) {
|
||||
m_Name = p_Name;
|
||||
}
|
||||
void SPITPlayer::setType(char p_Type) {
|
||||
m_Type = p_Type;
|
||||
}
|
||||
void SPITPlayer::setTime(long long p_Frames) {
|
||||
m_TimeFrames = p_Frames;
|
||||
}
|
||||
|
||||
unordered_map<string, SPITPlayer::PlayObject*>* SPITPlayer::getPlayObjects() {
|
||||
return &m_PlayObjects;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param p_SPITObjectID
|
||||
* @return true = new PlayObject added<br>
|
||||
* false = PlayObject exists
|
||||
*/
|
||||
SPITPlayer::PlayObject* SPITPlayer::addSPITObject_Playing (string p_SPITObjectID) {
|
||||
PlayObject* ptrPlayObject;
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockSPITPlayer(*SPITPlayer::getMutex());
|
||||
auto i = m_PlayObjects.find(p_SPITObjectID);
|
||||
if (i == m_PlayObjects.end()) {
|
||||
ptrPlayObject = new PlayObject(this, p_SPITObjectID);
|
||||
ptrPlayObject->setIsPlayed(true);
|
||||
ptrPlayObject->setIsNew(true);
|
||||
m_PlayObjects[p_SPITObjectID] = ptrPlayObject;
|
||||
}
|
||||
else {
|
||||
ptrPlayObject = i->second;
|
||||
ptrPlayObject->setIsPlayed(true);
|
||||
}
|
||||
return ptrPlayObject;
|
||||
}
|
||||
}
|
||||
|
||||
void SPITPlayer::startPlaySequence() {
|
||||
PlayObject* ptrPlayObject;
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockSPITPlayer(*SPITPlayer::getMutex());
|
||||
for (auto i = m_PlayObjects.begin(); i != m_PlayObjects.end(); i++) {
|
||||
ptrPlayObject = i->second;
|
||||
ptrPlayObject->startPlaySequence();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
SPITPlayer::PlayObject* SPITPlayer::getPlayObject(string p_SPITObjectID) {
|
||||
auto i = m_SPITObjectsPlaying.find(p_SPITObjectID);
|
||||
if (i == m_SPITObjectsPlaying.end()) {
|
||||
return NULL;
|
||||
}
|
||||
return i->second;
|
||||
}
|
||||
*/
|
||||
void SPITPlayer::endPlaySequence() {
|
||||
PlayObject* ptrPlayObject;
|
||||
{
|
||||
unique_lock<recursive_mutex> o_LockSPITPlayer(*SPITPlayer::getMutex());
|
||||
for (auto i = m_PlayObjects.begin(); i != m_PlayObjects.end(); i++) {
|
||||
ptrPlayObject = i->second;
|
||||
if (ptrPlayObject->getIsPlayed() == false) {
|
||||
i = m_PlayObjects.erase(i);
|
||||
delete ptrPlayObject;
|
||||
if (i == m_PlayObjects.end()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
SPITPlayer::PlayObject::PlayObject() {
|
||||
}
|
||||
SPITPlayer::PlayObject::PlayObject(SPITPlayer* p_SPITPlayer, string p_SPITObjectID) {
|
||||
m_SPITObjectID = p_SPITObjectID;
|
||||
m_PlayerID = p_SPITPlayer->getID();
|
||||
m_PlayerName = p_SPITPlayer->getName();
|
||||
startPlaySequence();
|
||||
m_IsNew = true;
|
||||
}
|
||||
SPITPlayer::PlayObject::PlayObject(const PlayObject& orig) {
|
||||
m_SPITObjectID = orig.getSPITObjectID();
|
||||
m_IsPlayed = orig.getIsPlayed();
|
||||
m_IsNew = orig.getIsNew();
|
||||
|
||||
m_PlayerID = orig.getPlayerID();
|
||||
m_PlayerName = orig.getPlayerName();
|
||||
m_PlayerRuns = orig.getPlayerIsRunning();
|
||||
|
||||
m_Value = orig.getValueFade();
|
||||
m_ValuePrePosition = getValueFadePrePosition();
|
||||
m_ValueFactor = orig.getValueFactor();
|
||||
m_ValueFlag = orig.getValueFlag();
|
||||
m_FrameInsidePrePosition = orig.getFrameInsidePrePosition();
|
||||
m_FrameInside = orig.getFrameInside();
|
||||
}
|
||||
void SPITPlayer::PlayObject::startPlaySequence() {
|
||||
m_IsPlayed = false;
|
||||
m_IsNew = false;
|
||||
|
||||
m_FrameInside = -1;
|
||||
m_FrameInsidePrePosition = -1;
|
||||
m_Value = 0;
|
||||
m_ValuePrePosition = 0;
|
||||
m_ValueFlag = 0x00;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user