CatchingContextPoissonBase.c
class CatchingContextPoissonBase : CatchingContextBase
{
protected float m_SignalPoissonMean; //usually, only the smallest value is considered
protected int m_SignalCurrent;
override protected void ClearCatchingItemData()
{
super.ClearCatchingItemData();
m_SignalPoissonMean = AnimalCatchingConstants.POISSON_CYCLE_MEAN_DEFAULT;
m_SignalCurrent = 0;
}
float GetSignalPoissonMean()
{
return m_SignalPoissonMean;
}
//! maximum number of signals in a single cycle
int GetSignalMax()
{
//m_SignalPoissonMean * 2 + 1
return Math.Ceil(m_SignalPoissonMean) + Math.Ceil(m_SignalPoissonMean/5); //TODO?
}
override bool ModifySignalProbability(inout float probability)
{
if (m_SignalCurrent > GetSignalMax() || m_SignalCurrent > 12) //necessary reset
m_SignalCurrent = 0;
probability = Math.Poisson(m_SignalPoissonMean,m_SignalCurrent) * GetChanceCoef();
return true;
}
override bool RollCatch()
{
bool ret = super.RollCatch();
m_SignalCurrent++;
return ret;
}
float GetChanceCoef()
{
return 1.0;
}
}