public override void OnStart()
        {
            var isBehaviorShouldRun = OnStart_QuestBehaviorCore();

            if (isBehaviorShouldRun)
            {
                if (Timer == TimerCommand.Start)
                {
                    _waitTimer = null;
                    s_inInstanceTimer.Restart();
                    QBCLog.Info("Started.");
                    BehaviorDone();
                }
                else if (Timer == TimerCommand.Check)
                {
                    s_inInstanceTimer.Stop();
                    QBCLog.Info("Your instance run took " + Utility.PrettyTime(s_inInstanceTimer.Elapsed));
                    if (s_inInstanceTimer.ElapsedMilliseconds >= WaitTime)
                    {
                        _waitTimer = null;
                        BehaviorDone();
                    }
                    else
                    {
                        var waitTimeSpan = TimeSpan.FromMilliseconds(WaitTime) - s_inInstanceTimer.Elapsed;
                        _waitTimer        = new Common.Helpers.WaitTimer(waitTimeSpan);
                        _waitTimeAsString = Utility.PrettyTime(_waitTimer.WaitTime);
                        _waitTimer.Reset();
                        QBCLog.Info("Waiting for " + _waitTimeAsString);
                    }
                }
            }
        }
Exemple #2
0
        public override void OnStart()
        {
            // This reports problems, and stops BT processing if there was a problem with attributes...
            // We had to defer this action, as the 'profile line number' is not available during the element's
            // constructor call.
            OnStart_HandleAttributeProblem();

            if (!IsDone)
            {
                if (Timer == "Start")
                {
                    WaitTime = 0;
                    Lua.DoString("StartInstanceTimerMin = date(\"%M\")");
                    Lua.DoString("StartInstanceTimerSec = date(\"%S\")");
                    QBCLog.Info("Started.");
                }
                if (Timer == "Check")
                {
                    var startInstanceVar1 = Lua.GetReturnVal <int>("return StartInstanceTimerMin", 0);
                    var startInstanceVar2 = Lua.GetReturnVal <int>("return StartInstanceTimerSec", 0);
                    Lua.DoString("EndInstanceTimerMin = date(\"%M\")");
                    Lua.DoString("EndInstanceTimerSec = date(\"%S\")");
                    var endInstanceVar1 = Lua.GetReturnVal <int>("return EndInstanceTimerMin", 0);
                    var endInstanceVar2 = Lua.GetReturnVal <int>("return EndInstanceTimerSec", 0);
                    if (endInstanceVar1 < startInstanceVar1)
                    {
                        endInstanceVar1 = endInstanceVar1 + 60;
                    }
                    if (endInstanceVar2 < startInstanceVar2)
                    {
                        endInstanceVar2 = endInstanceVar2 + 60;
                        endInstanceVar1 = endInstanceVar1 - 1;
                    }
                    var calcInstanceVar = ((((endInstanceVar1 - startInstanceVar1) * 60) + (endInstanceVar2 - startInstanceVar2)) * 1000);
                    _timeInInstance = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, calcInstanceVar));
                    var timeInInstanceAsString = UtilBuildTimeAsString(_timeInInstance.WaitTime);
                    QBCLog.Info("Your instance run took " + timeInInstanceAsString);
                    if (calcInstanceVar >= WaitTime)
                    {
                        WaitTime = 0;
                    }
                    if (calcInstanceVar < WaitTime)
                    {
                        WaitTime               = WaitTime - calcInstanceVar;
                        _timeInInstance        = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, WaitTime));
                        timeInInstanceAsString = UtilBuildTimeAsString(_timeInInstance.WaitTime);
                        QBCLog.Info("Waiting for " + timeInInstanceAsString);
                    }
                }
                _timer            = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, WaitTime));
                _waitTimeAsString = UtilBuildTimeAsString(_timer.WaitTime);
                _timer.Reset();
            }
        }
		public override void OnStart() 
		{
			// This reports problems, and stops BT processing if there was a problem with attributes...
			// We had to defer this action, as the 'profile line number' is not available during the element's
			// constructor call.
			OnStart_HandleAttributeProblem();

			if (!IsDone)
			{
				if (Timer == "Start") 
				{
					WaitTime = 0;
					Lua.DoString("StartInstanceTimerMin = date(\"%M\")");
					Lua.DoString("StartInstanceTimerSec = date(\"%S\")");
					QBCLog.Info("Started.");
				}
				if (Timer == "Check")
				{
					var startInstanceVar1 = Lua.GetReturnVal<int>("return StartInstanceTimerMin", 0);
					var startInstanceVar2 = Lua.GetReturnVal<int>("return StartInstanceTimerSec", 0);
					Lua.DoString("EndInstanceTimerMin = date(\"%M\")");
					Lua.DoString("EndInstanceTimerSec = date(\"%S\")");
					var endInstanceVar1 = Lua.GetReturnVal<int>("return EndInstanceTimerMin", 0);
					var endInstanceVar2 = Lua.GetReturnVal<int>("return EndInstanceTimerSec", 0);
					if (endInstanceVar1 < startInstanceVar1) { endInstanceVar1 = endInstanceVar1 + 60; }
					if (endInstanceVar2 < startInstanceVar2) {
						endInstanceVar2 = endInstanceVar2 + 60;
						endInstanceVar1 = endInstanceVar1 - 1;
					}
					var calcInstanceVar = ((((endInstanceVar1 - startInstanceVar1) * 60) + (endInstanceVar2 - startInstanceVar2)) * 1000);
					_timeInInstance = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, calcInstanceVar));
					var timeInInstanceAsString = UtilBuildTimeAsString(_timeInInstance.WaitTime);
					QBCLog.Info("Your instance run took " + timeInInstanceAsString);
					if (calcInstanceVar >= WaitTime) { WaitTime = 0; }
					if (calcInstanceVar < WaitTime)
					{
						WaitTime = WaitTime - calcInstanceVar;
						_timeInInstance = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, WaitTime));
						timeInInstanceAsString = UtilBuildTimeAsString(_timeInInstance.WaitTime);
						QBCLog.Info("Waiting for " + timeInInstanceAsString);
					}
				}
				_timer = new Common.Helpers.WaitTimer(new TimeSpan(0, 0, 0, 0, WaitTime));
				_waitTimeAsString = UtilBuildTimeAsString(_timer.WaitTime);
				_timer.Reset();
			}
		}