Esempio n. 1
0
    public void ExecuteOption(Event eventInfo, Event.Option option, float?paymentOverride = null, bool notify = true)
    {
        if (option.payment != null || paymentOverride.HasValue)
        {
            float amount   = paymentOverride.HasValue ? Mathf.Abs(paymentOverride.Value) : option.payment.GetAmount(moneyTracker);
            bool  isCharge = paymentOverride.HasValue ? (paymentOverride.Value < 0) : option.payment.isCharge;
            if (isCharge)
            {
                moneyTracker.SpendMoney(amount);
                if (notify)
                {
                    OnEventExecuted.Invoke(eventInfo, -amount, timeTracker.currentTime);
                }
            }
            else
            {
                moneyTracker.GainMoney(amount);
                if (notify)
                {
                    OnEventExecuted.Invoke(eventInfo, amount, timeTracker.currentTime);
                }
            }
        }

        foreach (Event.CalendarOutcome calendarOutcome in option.eventsToAddToCalendar)
        {
            calendar.Add(calendarOutcome);
        }

        foreach (Event.PoolOutcome poolOutcome in option.eventsToAddToPool)
        {
            pool.Add(poolOutcome);
        }

        foreach (Event eventType in option.eventTypesToRemoveFromCalendar)
        {
            calendar.RemoveType(eventType);
        }

        foreach (Event eventType in option.eventTypesToRemoveFromPool)
        {
            pool.RemoveType(eventType);
        }
    }