Exemple #1
0
    public void RemoveStallObjectFromTrade(ExchangeSpace playerSpace)
    {
        if (playerSpace.stallObjectHeld != null)
        {
            stallObjectsSelected.Remove(playerSpace.stallObjectHeld);
            playerSpace.stallObjectHeld   = null;
            playerSpace.objectImage.color = Color.clear;

            if (stallObjectsSelected.Count == 1 && playerSpace == playerSpaces[0])
            {
                StallObject stallObjectToMove = null;
                for (int i = 0; i < playerSpaces.Count; i++)
                {
                    if (playerSpaces[i].stallObjectHeld != null)
                    {
                        stallObjectToMove = playerSpaces[i].stallObjectHeld;
                        stallObjectsSelected.Remove(playerSpaces[i].stallObjectHeld);
                        playerSpaces[i].stallObjectHeld   = null;
                        playerSpaces[i].objectImage.color = Color.clear;
                    }
                }
                AddObjectToTrade(stallObjectToMove, null);
            }
        }
    }
    private void HoverStallObjectUpdate()
    {
        atleastOneHovered = false;
        for (int i = 0; i < allStallObjects.Count; i++)
        {
            if (allStallObjects[i].isHovered)
            {
                if (hoveredStallObject != null)
                {
                    previousHoveredObject = hoveredStallObject;
                }
                hoveredStallObject = allStallObjects[i];
                atleastOneHovered  = true;
            }
        }

        if (atleastOneHovered && previousHoveredObject != hoveredStallObject)
        {
            //StartCoroutine(objectInfoWindowAnimator.anim.Play(objectInfoWindowAnimator, objectInfoWindowAnimator.originalPos));
        }
        if (!atleastOneHovered && hoveredStallObject != null)
        {
            hoveredStallObject    = null;
            previousHoveredObject = null;
            //StartCoroutine(objectInfoWindowAnimator.anim.PlayBackward(objectInfoWindowAnimator, objectInfoWindowAnimator.originalPos, true));
        }
    }
 public void PresentObject(StallObject stallObjectToPresent, CharacterHandler targetCharacter)
 {
     currentCharacterTalkingTo             = targetCharacter;
     currentCharacterTalkingTo.isListening = true;
     presentedStallObject = stallObjectToPresent;
     currentCharacterTalkingTo.Interrupt();
     isWaitingForResponse = true;
     Speak(presentSpokenText + stallObjectToPresent.linkedObject.possessivePronom + stallObjectToPresent.linkedObject.objectName + ", " + targetCharacter.character.characterName + " ?", presentTime);
 }
 public void ArgumentFeature(StallObject stallObjectArgumented, CharacterHandler targetCharacter, Object.Feature argumentedFeature)
 {
     currentCharacterTalkingTo             = targetCharacter;
     currentCharacterTalkingTo.isListening = true;
     argumentedStallObject = stallObjectArgumented;
     featureArgumented     = argumentedFeature;
     currentCharacterTalkingTo.Interrupt();
     isWaitingForResponse = true;
     Speak(argumentedFeature.argumentSpokenText, argumentedFeature.argumentSpeakTime);
 }
 public void RemoveStallObject(StallObject stallObjectToRemove)
 {
     stallObjectToRemove.stallSpace.stallObject = null;
     allStallObjects.Remove(stallObjectToRemove);
     Destroy(stallObjectToRemove.gameObject);
     foreach (CharacterHandler characterHandler in NegoceManager.I.allPresentCharacters)
     {
         characterHandler.RefreshPotentialObjects();
     }
     SaveLoader.I.SavePlayerObjects();
 }
Exemple #6
0
    public void OpenRadialMenu(StallObject stallObject, CharacterHandler characterHandler, ExchangeSpace exchangeSpace)
    {
        currentExchangeSpace   = exchangeSpace;
        rectTransform.position = exchangeSpace.rectTransform.position;
        appearAnim.GetReferences();
        StartCoroutine(appearAnim.anim.PlayBackward(appearAnim, true));


        currentStallObject        = stallObject;
        objectIllustration.sprite = stallObject.linkedObject.illustration;
        objectNameText.text       = stallObject.linkedObject.objectName;
        characterTargeted         = characterHandler;
        currentPotentialObject    = characterTargeted.GetPotentialFromStallObject(currentStallObject);
        isOpened = true;

        categoryRadialOptions[0].radialOption.icon.sprite = stallObject.linkedObject.features[0].categoryProperties.icon;
        categoryRadialOptions[0].radialOption.icon.color  = stallObject.linkedObject.features[0].categoryProperties.color;
        categoryRadialOptions[0].feature                = stallObject.linkedObject.features[0];
        categoryRadialOptions[0].knownFeature           = currentPotentialObject.GetKnownFeatureFromFeature(categoryRadialOptions[0].feature);
        categoryRadialOptions[0].radialOption.time.text = stallObject.linkedObject.features[0].categoryProperties.argumentRememberTime.ToString() + " s.";

        if (stallObject.linkedObject.categories.Count > 1)
        {
            categoryRadialOptions[1].radialOption.gameObject.SetActive(true);
            categoryRadialOptions[1].radialOption.icon.sprite = stallObject.linkedObject.features[1].categoryProperties.icon;
            categoryRadialOptions[1].radialOption.icon.color  = stallObject.linkedObject.features[1].categoryProperties.color;
            categoryRadialOptions[1].feature                = stallObject.linkedObject.features[1];
            categoryRadialOptions[1].knownFeature           = currentPotentialObject.GetKnownFeatureFromFeature(categoryRadialOptions[1].feature);
            categoryRadialOptions[1].radialOption.time.text = stallObject.linkedObject.features[1].categoryProperties.argumentRememberTime.ToString() + " s.";
        }
        else
        {
            categoryRadialOptions[1].radialOption.icon.color = Color.clear;
            categoryRadialOptions[1].radialOption.gameObject.SetActive(false);
        }


        for (int i = 0; i < featureRadialOptions.Count; i++)
        {
            if (i + 2 < stallObject.linkedObject.features.Count)
            {
                featureRadialOptions[i].radialOption.gameObject.SetActive(true);
                featureRadialOptions[i].radialOption.info.text = stallObject.linkedObject.features[i + 2].argumentTitle;
                featureRadialOptions[i].radialOption.time.text = stallObject.linkedObject.features[i + 2].rememberTime.ToString() + " s.";
                featureRadialOptions[i].feature      = stallObject.linkedObject.features[i + 2];
                featureRadialOptions[i].knownFeature = currentPotentialObject.GetKnownFeatureFromFeature(featureRadialOptions[i].feature);
            }
            else
            {
                featureRadialOptions[i].radialOption.gameObject.SetActive(false);
            }
        }
    }
Exemple #7
0
    public void AddObjectToTrade(StallObject addedStallobject, CharaObject addedCharaObject)
    {
        if (addedCharaObject != null && !charaObjectsSelected.Contains(addedCharaObject))
        {
            if (charaObjectsSelected.Count < 3)
            {
                bool objectPlaced = false;
                int  i            = 0;
                while (i < characterSpaces.Count && !objectPlaced)
                {
                    if (characterSpaces[i].charaObjectHeld == null)
                    {
                        charaObjectsSelected.Add(addedCharaObject);
                        characterSpaces[i].charaObjectHeld    = addedCharaObject;
                        characterSpaces[i].objectImage.color  = Color.white;
                        characterSpaces[i].objectImage.sprite = addedCharaObject.linkedObject.illustration;
                        objectPlaced = true;
                    }
                    i++;
                }
            }
            else
            {
                Debug.Log("can't add chara object to trade");
            }
        }

        if (addedStallobject != null && !stallObjectsSelected.Contains(addedStallobject))
        {
            if (stallObjectsSelected.Count < 3)
            {
                bool objectPlaced = false;
                int  i            = 0;
                while (i < playerSpaces.Count && !objectPlaced)
                {
                    if (playerSpaces[i].stallObjectHeld == null)
                    {
                        stallObjectsSelected.Add(addedStallobject);
                        playerSpaces[i].stallObjectHeld    = addedStallobject;
                        playerSpaces[i].objectImage.color  = Color.white;
                        playerSpaces[i].objectImage.sprite = addedStallobject.linkedObject.illustration;
                        objectPlaced = true;
                    }
                    i++;
                }
            }
            else
            {
                Debug.Log("can't add stall object to trade");
            }
        }
    }
Exemple #8
0
 public void DropStallObject(StallObject stallObjectDropped)
 {
     if (isOpened)
     {
         for (int i = 0; i < playerSpaces.Count; i++)
         {
             if (playerSpaces[i].isHovered)
             {
                 AddObjectToTrade(stallObjectDropped, null);
             }
         }
     }
 }
    public PotentialObject GetPotentialFromStallObject(StallObject searchedStallObject)
    {
        PotentialObject potentialObjectSearched = null;

        foreach (PotentialObject potentialObject in potentialObjects)
        {
            if (potentialObject.stallObject == searchedStallObject)
            {
                potentialObjectSearched = potentialObject;
            }
        }
        return(potentialObjectSearched);
    }
 public PotentialObject(StallObject _standObject)
 {
     stallObject    = _standObject;
     interestLevel  = 0;
     curiosityLevel = 0;
     knownFeatures  = new List <KnownFeature>();
     for (int i = 0; i < stallObject.linkedObject.features.Count; i++)
     {
         KnownFeature newKnownFeature = new KnownFeature();
         newKnownFeature.feature           = stallObject.linkedObject.features[i];
         newKnownFeature.interest          = 0;
         newKnownFeature.timeRememberedRmn = 0;
         newKnownFeature.isKnown           = false;
         knownFeatures.Add(newKnownFeature);
     }
 }
    private void PlaceStallObjectInStallSpace(StallObject movedStallObject, StallSpace targetStallSpace)
    {
        StallSpace movedObjectStallSpace = movedStallObject.stallSpace;

        if (targetStallSpace.stallObject != null)
        {
            targetStallSpace.stallObject.stallSpace = movedObjectStallSpace;
            movedObjectStallSpace.stallObject       = targetStallSpace.stallObject;
            movedObjectStallSpace.stallObject.rectTransform.position = movedObjectStallSpace.rectTransform.position;
        }
        else
        {
            movedObjectStallSpace.stallObject = null;
        }
        movedStallObject.rectTransform.position = targetStallSpace.rectTransform.position;
        targetStallSpace.stallObject            = movedStallObject;
        movedStallObject.stallSpace             = targetStallSpace;
    }
    public void UpdateCurrentAction()
    {
        if (isTalking)
        {
            if (isWaitingForResponse)
            {
                currentCharacterTalkingTo.RefreshEnthousiasm();
            }

            currentSpokenText.text = currentSpeech.GetCurrentSpeechProgression(Time.deltaTime);

            if (currentSpeech.isFinished)
            {
                isTalking = false;
                StartCoroutine(speakBoxAnim.anim.Play(speakBoxAnim));
                if (isWaitingForResponse)
                {
                    isWaitingForResponse = false;
                    if (presentedStallObject != null)
                    {
                        currentCharacterTalkingTo.PresentObject(presentedStallObject);
                        currentCharacterTalkingTo.isListening = false;
                        presentedStallObject = null;
                    }
                    else if (argumentedStallObject != null)
                    {
                        currentCharacterTalkingTo.ArgumentFeature(featureArgumented, argumentedStallObject);
                        currentCharacterTalkingTo.isListening = false;
                        currentCharacterTalkingTo             = null;
                        argumentedStallObject = null;
                        featureArgumented     = null;
                    }
                    else if (askedCharaObject != null)
                    {
                        currentCharacterTalkingTo.AskAbout(askedCharaObject);
                        currentCharacterTalkingTo.isListening = false;
                        askedCharaObject = null;
                    }
                }
            }
        }
    }
    public void UpdateObjectInfoWindow(StallObject shownObject)
    {
        objectInfoNameText.text        = shownObject.linkedObject.objectName;
        objectInfoTitleText.text       = shownObject.linkedObject.title;
        objectInfoCategory1Text.text   = shownObject.linkedObject.categories[0].ToString();
        objectInfoCategory1Icon.sprite = GameData.GetCategoryPropertiesFromCategory(shownObject.linkedObject.categories[0]).icon;
        objectInfoCategory1Icon.color  = GameData.GetCategoryPropertiesFromCategory(shownObject.linkedObject.categories[0]).color;

        if (shownObject.linkedObject.categories.Count > 1)
        {
            objectInfoCategory2Icon.gameObject.SetActive(true);
            objectInfoCategory2Text.text   = shownObject.linkedObject.categories[1].ToString();
            objectInfoCategory2Icon.sprite = GameData.GetCategoryPropertiesFromCategory(shownObject.linkedObject.categories[1]).icon;
            objectInfoCategory2Icon.color  = GameData.GetCategoryPropertiesFromCategory(shownObject.linkedObject.categories[1]).color;
        }
        else
        {
            objectInfoCategory2Icon.gameObject.SetActive(false);
        }
        objectInfoDescriptionText.text = shownObject.linkedObject.description;
        objectInfoOriginText.text      = shownObject.linkedObject.originDescription;
        objectInfoIllustration.sprite  = shownObject.linkedObject.illustration;

        for (int i = 0; i < featuresInfo.Length; i++)
        {
            if (i + (shownObject.linkedObject.categories.Count > 1 ? 2 : 1) < shownObject.linkedObject.features.Count)
            {
                featuresInfo[i].gameObject.SetActive(true);
                featuresInfo[i].GetChild(0).GetChild(0).GetComponent <Text>().text = shownObject.linkedObject.features[i + (shownObject.linkedObject.categories.Count > 1 ? 2 : 1)].argumentTitle;
                featuresInfo[i].GetChild(1).GetComponent <Text>().text             = shownObject.linkedObject.features[i + (shownObject.linkedObject.categories.Count > 1 ? 2 : 1)].description;
            }
            else
            {
                featuresInfo[i].gameObject.SetActive(false);
            }
        }
        featureContentRect.sizeDelta = new Vector2(0, (shownObject.linkedObject.features.Count - (shownObject.linkedObject.categories.Count > 1 ? 2 : 1)) * 130 + 10);
        objectInfoHeaderBack.color   = stallObjectWindowTheme[0];
        objectInfoBodyBack.color     = stallObjectWindowTheme[1];
        objectInfoFeatureBack.color  = stallObjectWindowTheme[2];
    }
    private void DragAndDropStallObjectUpdate()
    {
        for (int i = 0; i < allStallObjects.Count; i++)
        {
            if (draggedStallObject == null && allStallObjects[i].isDragged)
            {
                draggedStallObject = allStallObjects[i];
            }
        }

        if (draggedStallObject != null)
        {
            foreach (StallObject stallObject in allStallObjects)
            {
                stallObject.canvasGroup.blocksRaycasts = false;
            }
            charaHovered = null;
            foreach (CharacterHandler charaPresent in NegoceManager.I.allPresentCharacters)
            {
                if (charaPresent.isHoveredWithStallObject)
                {
                    charaHovered = charaPresent;
                }
            }

            Vector3 objectPosToFollow = Input.mousePosition;

            if (charaHovered != null && !charaHovered.isListening && !charaHovered.isThinking)
            {
                characterInteractionPanel.position = charaHovered.rectTransform.position;

                if (!isWaitingForResponse)
                {
                    presentOption.Enable(presentTime.ToString() + " s.");
                    exchangeOption.Enable("");
                    characterInteractionPanel.GetComponent <CanvasGroup>().blocksRaycasts = true;
                }
                else
                {
                    characterInteractionPanel.GetComponent <CanvasGroup>().blocksRaycasts = false;
                    presentOption.Disable();
                    exchangeOption.Disable();
                }

                if (presentOption.isCurrentlyHoveredCorrectly)
                {
                    objectPosToFollow = presentOption.rectTransform.position;
                }
                if (exchangeOption.isCurrentlyHoveredCorrectly)
                {
                    objectPosToFollow = exchangeOption.rectTransform.position;
                }
            }
            else
            {
                characterInteractionPanel.GetComponent <CanvasGroup>().blocksRaycasts = false;
                presentOption.Disable();
                exchangeOption.Disable();
            }

            draggedStallObject.rectTransform.position = objectPosToFollow;

            if (Input.GetMouseButtonUp(0))
            {
                if (presentOption.isCurrentlyHoveredCorrectly)
                {
                    StartCoroutine(presentOption.Select());
                    PresentObject(draggedStallObject, charaHovered);
                }
                else if (exchangeOption.isCurrentlyHoveredCorrectly)
                {
                    charaHovered.characterExchangeHandler.AddObjectToTrade(draggedStallObject, null);
                    charaHovered.characterExchangeHandler.Open();
                }
            }

            if (Input.GetMouseButtonUp(0))
            {
                foreach (CharacterHandler presentCharacter in NegoceManager.I.allPresentCharacters)
                {
                    presentCharacter.characterExchangeHandler.DropStallObject(draggedStallObject);
                }

                draggedStallObject.StopDrag();
                bool droppedOnStallSpace = false;
                foreach (StallSpace hoveredStallSpace in allStallSpaces)
                {
                    if (hoveredStallSpace.isHovered)
                    {
                        droppedOnStallSpace = true;
                        PlaceStallObjectInStallSpace(draggedStallObject, hoveredStallSpace);
                    }
                }

                if (!droppedOnStallSpace)
                {
                    draggedStallObject.rectTransform.position = draggedStallObject.stallSpace.rectTransform.position;
                }

                draggedStallObject.isDragged = false;
                draggedStallObject           = null;
            }
        }
        else
        {
            characterInteractionPanel.GetComponent <CanvasGroup>().blocksRaycasts = false;
            presentOption.Disable();
            exchangeOption.Disable();
            foreach (StallObject stallObject in allStallObjects)
            {
                stallObject.canvasGroup.blocksRaycasts = true;
            }
        }
    }
    private void SelectionStallObjectUpdate()
    {
        if (Input.GetMouseButtonUp(0))
        {
            atLeastOneClicked = false;
            for (int i = 0; i < allStallObjects.Count; i++)
            {
                if (allStallObjects[i].isHovered)
                {
                    if (selectedStallObject != null)
                    {
                        previousSelectedObject = selectedStallObject;
                    }
                    selectedStallObject = allStallObjects[i];

                    if (previousSelectedObject != selectedStallObject || selectedCharaObject != null)
                    {
                        selectedCharaObject         = null;
                        previousSelectedCharaObject = null;
                        objectInfoPanel.canvasGroup.interactable   = true;
                        objectInfoPanel.canvasGroup.blocksRaycasts = true;
                        StartCoroutine(objectInfoPanel.anim.PlayBackward(objectInfoPanel, true));
                        UpdateObjectInfoWindow(selectedStallObject);
                    }
                    else
                    {
                        selectedStallObject    = null;
                        previousSelectedObject = null;
                        objectInfoPanel.canvasGroup.interactable   = false;
                        objectInfoPanel.canvasGroup.blocksRaycasts = false;
                        StartCoroutine(objectInfoPanel.anim.Play(objectInfoPanel));
                    }
                    atLeastOneClicked = true;
                }
            }

            foreach (CharacterHandler presentCharacter in NegoceManager.I.allPresentCharacters)
            {
                for (int y = 0; y < presentCharacter.belongings.Count; y++)
                {
                    if (presentCharacter.belongings[y].isHovered)
                    {
                        if (selectedCharaObject != null)
                        {
                            previousSelectedCharaObject = selectedCharaObject;
                        }
                        selectedCharaObject = presentCharacter.belongings[y];

                        if (previousSelectedCharaObject != selectedCharaObject || selectedStallObject != null)
                        {
                            selectedStallObject    = null;
                            previousSelectedObject = null;
                            objectInfoPanel.canvasGroup.interactable   = true;
                            objectInfoPanel.canvasGroup.blocksRaycasts = true;
                            StartCoroutine(objectInfoPanel.anim.PlayBackward(objectInfoPanel, true));
                            UpdateObjectInfoWindow(selectedCharaObject);
                        }
                        else
                        {
                            selectedCharaObject         = null;
                            previousSelectedCharaObject = null;
                            objectInfoPanel.canvasGroup.interactable   = false;
                            objectInfoPanel.canvasGroup.blocksRaycasts = false;
                            StartCoroutine(objectInfoPanel.anim.Play(objectInfoPanel));
                        }
                    }
                }
            }
        }
    }
 public bool IsLookingAt(StallObject stallObject)
 {
     return(lookedObject != null && lookedObject.stallObject == stallObject);
 }
 public void ArgumentFeature(Object.Feature featureArgumented, StallObject argumentedObject)
 {
     argumentedObjectToThink  = GetPotentialFromStallObject(argumentedObject);
     argumentedFeatureToThink = featureArgumented;
     Think(reactTimeArgument, argumentedObjectToThink);
 }
    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);
    }
 public void PresentObject(StallObject presentedObject)
 {
     presentedObjectToThink = GetPotentialFromStallObject(presentedObject);
     LookObject(presentedObjectToThink, reactTimePresent);
     Think(reactTimePresent, presentedObjectToThink);
 }