#include "PPBallBag.h"
#include <stdlib.h>

PingPongBallBag::PingPongBallBag(unsigned int howMany)
: 	Die(howMany),  _previous(howMany)
{	for (int i = 0; i<howMany; i++) _previous[i] = i+1;
	_remaining = howMany;
}

PingPongBallBag::PingPongBallBag (const PingPongBallBag &d)
:	Die(d),
	_previous(d._previous),
	_remaining(d._remaining)
{
}

PingPongBallBag::~PingPongBallBag()
{	// nothing
}

PingPongBallBag & PingPongBallBag::operator = (const PingPongBallBag &d)
{	if(&d != this)
	{	_previous = d._previous;
		_remaining = d._remaining;
	}		
	return *this;
}


int PingPongBallBag::pick()
{	if(_remaining > 0)
	{	int temp = rand() % _remaining--;
		int result = _previous[temp];
		_previous[temp] = _previous[_remaining];
		_previous[_remaining] = result;
		return result;
	}
	else return 0;
}

void PingPongBallBag::reset()
{	_remaining = _faces;
}

int PingPongBallBag::roll()
{	if(_remaining > 0)
		return _previous[rand() % _remaining];
	else 
		return 0;
}
