Ejemplo n.º 1
0
    public void UpdateGazeDisplay()
    {
        if (lookedObject != null)
        {
            if (lookedObject.stallObject == null)
            {
                lookedObject = null;
            }
            else
            {
                gazeDirection = rectTransform.position + Vector3.up * gazeHeadOffset - gazeDisplay.position;
                gazeDirection.Normalize();
                gazeAngle = Vector2.SignedAngle(Vector2.up, gazeDirection);

                gazeDisplay.rotation = Quaternion.Euler(0, 0, gazeAngle);


                gazeDisplay.position = Vector2.Lerp(gazeDisplay.position, lookedObject.stallObject.rectTransform.position, gazeLerpRatio * Time.deltaTime);
                if (!gazeDisplay.gameObject.activeSelf)
                {
                    RefreshGazeOrigin();
                }
                gazeDisplay.gameObject.SetActive(true);
            }
        }
        else
        {
            gazeDisplay.gameObject.SetActive(false);
        }
    }
Ejemplo n.º 2
0
    public bool DoesObjectHaveHigherInterestLevel(PotentialObject objectToCheck)
    {
        float averageInterestLevel = 0;

        for (int i = 0; i < potentialObjects.Count; i++)
        {
            averageInterestLevel += potentialObjects[i].interestLevel;
        }
        averageInterestLevel /= potentialObjects.Count;

        return(objectToCheck.interestLevel > averageInterestLevel);
    }
Ejemplo n.º 3
0
    public PotentialObject GetPotentialFromStallObject(StallObject searchedStallObject)
    {
        PotentialObject potentialObjectSearched = null;

        foreach (PotentialObject potentialObject in potentialObjects)
        {
            if (potentialObject.stallObject == searchedStallObject)
            {
                potentialObjectSearched = potentialObject;
            }
        }
        return(potentialObjectSearched);
    }
Ejemplo n.º 4
0
 public void Think(float timeToThink, PotentialObject potentialObjectToThink)
 {
     isThinking          = true;
     currentThinkTimeRmn = timeToThink;
     if (potentialObjectToThink != null)
     {
         thinkingObjectImage.color  = Color.white;
         thinkingObjectImage.sprite = potentialObjectToThink.stallObject.linkedObject.illustration;
     }
     else
     {
         thinkingObjectImage.color = Color.clear;
     }
     StartCoroutine(thinkingBoxAnim.anim.PlayBackward(thinkingBoxAnim, true));
 }
Ejemplo n.º 5
0
    public PotentialObject GetMaxCuriosityObjectOnVitrine(List <PotentialObject> potentialObjectsToCheck)
    {
        maxCuriosityLevel = 0;
        PotentialObject maxCuriosityObject = null;

        foreach (PotentialObject potentialObject in potentialObjectsToCheck)
        {
            if (potentialObject.curiosityLevel > maxCuriosityLevel && potentialObject.stallObject.stallSpace.isVitrine)
            {
                maxCuriosityObject = potentialObject;
                maxCuriosityLevel  = potentialObject.curiosityLevel;
            }
        }
        return(maxCuriosityObject);
    }
Ejemplo n.º 6
0
    public void UpdateSpeakingAndThinking()
    {
        if (!isLeaving)
        {
            if (currentThinkTimeRmn > 0)
            {
                currentThinkTimeRmn -= Time.deltaTime;
            }
            else
            {
                isThinking = false;
            }

            if (presentedObjectToThink != null)
            {
                if (currentThinkTimeRmn <= 0)
                {
                    ReactToPresent(presentedObjectToThink);
                    presentedObjectToThink = null;
                    StartCoroutine(thinkingBoxAnim.anim.Play(thinkingBoxAnim));
                }
            }

            if (argumentedObjectToThink != null)
            {
                if (currentThinkTimeRmn <= 0)
                {
                    ReactToArgumentFeature(argumentedFeatureToThink, argumentedObjectToThink.stallObject);
                    argumentedObjectToThink = null;
                    StartCoroutine(thinkingBoxAnim.anim.Play(thinkingBoxAnim));
                }
            }
        }

        if (isSpeaking)
        {
            speakingText.text = currentSpeech.GetCurrentSpeechProgression(Time.deltaTime);
            if (currentSpeech.isFinished)
            {
                StartCoroutine(speakingBoxAnim.anim.Play(speakingBoxAnim));
                isSpeaking = false;
            }
        }
    }
Ejemplo n.º 7
0
    public void ReactToPresent(PotentialObject presentedObject)
    {
        if (DoesObjectHasCommonCategory(presentedObject.stallObject.linkedObject, character.initialInterests))
        {
            currentEnthousiasm += enthousiasmIncreaseWithCorrectPresent;
            Instantiate(happyFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), happyFxPrefab.transform.rotation, characterCanvasRectTransform);
        }
        else
        {
            currentEnthousiasm -= enthousiasmDecreaseWithIncorrectPresent;
            Instantiate(annoyedFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), annoyedFxPrefab.transform.rotation, characterCanvasRectTransform);
        }
        presentedObject.RefreshInterestLevel();

        if (NegoceManager.I.selectedCharacter == this)
        {
            presentedObject.stallObject.SetInterestLevelDisplay(presentedObject.interestLevel / maxPersonnalValue, identificationColor, false);
        }
        currentEnthousiasm = Mathf.Clamp(currentEnthousiasm, 0f, 1f);
    }
Ejemplo n.º 8
0
 public void StartNonGazing(float nonGazingTime)
 {
     nonGazingTimeRMN = nonGazingTime;
     lookedObject     = null;
 }
Ejemplo n.º 9
0
 public void LookObject(PotentialObject objectToLook, float timeToLook)
 {
     objectToLook.curiosityLevel = 0;
     gazeTimeRmn  = timeToLook;
     lookedObject = objectToLook;
 }
Ejemplo n.º 10
0
 public void ArgumentFeature(Object.Feature featureArgumented, StallObject argumentedObject)
 {
     argumentedObjectToThink  = GetPotentialFromStallObject(argumentedObject);
     argumentedFeatureToThink = featureArgumented;
     Think(reactTimeArgument, argumentedObjectToThink);
 }
Ejemplo n.º 11
0
    public void ReactToArgumentFeature(Object.Feature featureArgumented, StallObject argumentedObject)
    {
        PotentialObject argumentedPotentialObject = GetPotentialFromStallObject(argumentedObject);

        PotentialObject.KnownFeature knownFeatureArgumented = argumentedPotentialObject.GetKnownFeatureFromFeature(featureArgumented);

        if (featureArgumented.isCategoryFeature)
        {
            bool categoryIsInitialInterest = false;
            for (int i = 0; i < character.initialInterests.Count; i++)
            {
                if (character.initialInterests[i] == featureArgumented.categoryProperties.category)
                {
                    categoryIsInitialInterest = true;
                }
            }

            if (categoryIsInitialInterest)
            {
                knownFeatureArgumented.LearnFeature(featureArgumented.rememberTime, interestLevelMultiplierWithCorrectCategoryArgument * featureArgumented.categoryProperties.argumentInterestLevelIncrease);
                Instantiate(happyFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), happyFxPrefab.transform.rotation, characterCanvasRectTransform);
                Speak(featureArgumented.categoryProperties.argumentSpeechGoodReaction, 5);
            }
            else
            {
                currentEnthousiasm -= enthousiasmDecreaseWithIncorrectArgument;
                Instantiate(annoyedFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), annoyedFxPrefab.transform.rotation, characterCanvasRectTransform);
                Speak(featureArgumented.categoryProperties.argumentSpeechBadReaction, 5);
                ForgetAllKnownFeatures();
            }
        }
        else
        {
            Character.Need correspondingNeed = null;
            for (int i = 0; i < character.needs.Count; i++)
            {
                for (int y = 0; y < featureArgumented.traits.Count; y++)
                {
                    if (character.needs[i].trait == featureArgumented.traits[y])
                    {
                        correspondingNeed = character.needs[i];
                    }
                }
            }

            if (correspondingNeed != null)
            {
                knownFeatureArgumented.LearnFeature(featureArgumented.rememberTime, interestLevelMultiplierWithCorrectFeatureArgument * featureArgumented.interestLevelIncrease);
                Instantiate(happyFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), happyFxPrefab.transform.rotation, characterCanvasRectTransform);
                Speak(correspondingNeed.reactionSpokenWhenArgumented);
            }
            else
            {
                Instantiate(annoyedFxPrefab, rectTransform.position + new Vector3(0, gazeHeadOffset, 0), happyFxPrefab.transform.rotation, characterCanvasRectTransform);
                currentEnthousiasm -= enthousiasmDecreaseWithIncorrectArgument;
                Speak(character.defaultSpeachWhenWrongArgument);
                ForgetAllKnownFeatures();
            }
        }

        currentEnthousiasm = Mathf.Clamp(currentEnthousiasm, 0f, 1f);
    }
Ejemplo n.º 12
0
 public void PresentObject(StallObject presentedObject)
 {
     presentedObjectToThink = GetPotentialFromStallObject(presentedObject);
     LookObject(presentedObjectToThink, reactTimePresent);
     Think(reactTimePresent, presentedObjectToThink);
 }