Esempio n. 1
0
        public override Activity ToSdkObject()
        {
            var activity = new WaitActivity(this.Name, this.WaitTimeInSeconds);

            SetProperties(activity);
            return(activity);
        }
Esempio n. 2
0
        protected override Activity CreateActivityInternal(IActivityCreationContext context, StimulusContext stimulusContext, GameEntity entity)
        {
            entity.ReplaceSleeping(30);
            var sleepActivity = new WaitActivity(context.ActionFactory, 30, "Sleep", entityArg => entity.hasSleeping);

            return(sleepActivity);
        }
            protected virtual void Dispose(bool Disposing)
            {
                if (Disposing)
                {
                    WaitSync.Dispose();

                    WaitActivity.Dispose();

                    WaitSched.Dispose();
                }
            }
Esempio n. 4
0
        private async void Action_Clicked(object sender, EventArgs e)
        {
            switch (ota.Status)
            {
            case OTA.OTAStatus.ServerError:
            case OTA.OTAStatus.UpToDate:
                ota.updateURL = urlInput.Text;
                await ota.CheckUpdate();

                break;

            case OTA.OTAStatus.UpdateAvailable:
                Wait = new WaitActivity();
                DeviceDisplay.KeepScreenOn = true;
                bool r = false;
                await Navigation.PushModalAsync(Wait);

                try
                {
                    BleDevice.UpdateConnectionInterval(ConnectionInterval.High);
                    int MtuSize = await BleDevice.RequestMtuAsync(250);

                    r = await ota.Update(Math.Max(23, MtuSize - 4));
                }
                finally
                {
                    await Navigation.PopModalAsync();

                    DeviceDisplay.KeepScreenOn = false;
                }

                if (r)
                {
                    var adapter = CrossBluetoothLE.Current.Adapter;

                    //adapter.DeviceConnectionLost
                    //adapter.DeviceDisconnected -= Adapter_DeviceDisconnected;

                    await adapter.DisconnectDeviceAsync(BleDevice);
                    await DisplayAlert("Congratulations!", "FOTA successfully completed", "OK");

                    await Navigation.PopAsync();
                }
                break;

            default:
                break;
            }
        }
Esempio n. 5
0
        public IGameAction GetAction(GameEntity entity)
        {
            // todo: remove this and use BlockedUntil. But for sure? Maybe this check is better?
            // now it causes problems when an animating actor is leaving sight (animation doesn't finish -> infinite loop)
            if (entity.view.Controller.Animator.IsAnimating)
            {
                return(null);
            }

            if (entity.hasPreparedAction)
            {
                IGameAction actionToReturn = entity.preparedAction.Action;
                entity.RemovePreparedAction();
                return(actionToReturn);
            }

            if (!entity.hasActivity)
            {
                float score;
                Skill skill = _utilityAi.ResolveSkillWhenIdle(out score, entity);

                Activity newActivity;
                try
                {
                    newActivity = skill.ActivityCreator.CreateActivity(_activityCreationContext, score, null, entity);
                }
                catch (Exception e)
                {
                    Debug.LogError(e.Message + ", stack trace: " + e.StackTrace);
                    newActivity = new WaitActivity(_actionFactory, 2, "Wait");
                }
                entity.AddActivity(newActivity);
                newActivity.OnStart(entity);
            }

            IActivity    activity     = entity.activity.Activity;
            ActivityStep activityStep = activity.CheckAndResolveStep(entity);

            if (activityStep.State == ActivityState.FinishedSuccess || activityStep.State == ActivityState.FinishedFailure)
            {
                entity.RemoveActivity();
            }

            IGameAction actionFromActivity = activityStep.GameAction;

            return(actionFromActivity);
        }
Esempio n. 6
0
        public IGameAction GetAction(GameEntity entity)
        {
            // todo: remove this and use BlockedUntil. But for sure? Maybe this check is better?
            // now it may cause problems when an animating actor is leaving sight (animation doesn't finish -> infinite loop)
            if (entity.view.Controller.Animator.IsAnimating)
            {
                return(null);
            }

            if (entity.hasPreparedAction)
            {
                IGameAction actionToReturn = entity.preparedAction.Action;
                entity.RemovePreparedAction();
                return(actionToReturn);
            }

            (Skill skill, float score)newSkillAndScore = default;
            if (entity.hasActivity && entity.hasSkills && entity.hasStimuli)
            {
                List <Stimulus> stimuliReceived = entity.stimuli.Stimuli.ToList();

                newSkillAndScore = _activityResolver.ResolveNewSkillIfApplicable(entity, stimuliReceived);
            }
            else if (!entity.hasActivity)
            {
                newSkillAndScore = _utilityAi.ResolveSkillWhenIdle(entity);
            }

            if (newSkillAndScore.skill != null)
            {
                Activity newActivity;
                try
                {
                    newActivity = newSkillAndScore.skill.ActivityCreator.CreateActivity(_activityCreationContext, newSkillAndScore.score, null, entity);
                }
                catch (Exception e)
                {
                    Debug.LogError(e.Message + ", stack trace: " + e.StackTrace);
                    newActivity = new WaitActivity(_actionFactory, 2, "Wait");
                }

                if (entity.hasActivity)
                {
                    entity.activity.Activity.OnFailure(entity);
                }
                entity.ReplaceActivity(newActivity);
                newActivity.OnStart(entity);
            }

            IActivity    activity     = entity.activity.Activity;
            ActivityStep activityStep = activity.CheckAndResolveStep(entity);

            if (activityStep.State == ActivityState.FinishedSuccess || activityStep.State == ActivityState.FinishedFailure)
            {
                entity.RemoveActivity();
            }

            IGameAction actionFromActivity = activityStep.GameAction;

            return(actionFromActivity);
        }