public override void DrawTask(Scene scene)
    {
        EditorGUILayout.BeginHorizontal();
        TargetIntent = (eAudienceIntent)EditorGUILayout.EnumPopup(new GUIContent("Target Intent"), TargetIntent);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Target Time For Intent");
        TargetTimeForIntent = EditorGUILayout.FloatField(TargetTimeForIntent);
        EditorGUILayout.EndHorizontal();

        base.DrawTask(scene);
    }
    public float GetTransitionTime(eAudienceIntent intent, float rating)
    {
        if (!IntentTransitions.TryGetValue(intent, out IntentTransition intentTransition))
        {
            Logger.LogError($"IntentTransitions doesn't contain intent: \"{intent}\"");
            return(UnityEngine.Random.Range(0.5f, 3f));
        }
        var time = intentTransition.TransitionTime;

        time += rating * intentTransition.RatingTimeMultiplier;
        time  = Mathf.Max(time, 0f);
        return(time);
    }
Пример #3
0
    bool GetIntent()
    {
        var intent = eAudienceIntent.WatchShow;

        TargetIntentTime -= Time.deltaTime;

        var currentScene = Theatre.Instance.CurrentScript.CurrentScene;

        if (currentScene != null)
        {
            foreach (var task in currentScene.Tasks)
            {
                if (task.State == eTaskState.CanStart ||
                    task.State == eTaskState.InProgress)
                {
                    var intentTask = task as AudienceIntentTask;
                    if (intentTask != null)
                    {
                        intent = intentTask.TargetIntent;
                    }
                }
            }
        }

        if (intent != TargetIntent)
        {
            TargetIntent     = intent;
            TargetIntentTime = ProfileData.GetTransitionTime(TargetIntent, 0f);
        }

        if (AudienceIntent == TargetIntent)
        {
            return(false);
        }

        if (TargetIntentTime <= 0)
        {
            AudienceIntent = TargetIntent;
            return(true);
        }

        return(false);
    }