123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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;
- }
- }
|