예제 #1
0
    public void RemoveCharaObjectFromTrade(ExchangeSpace charaSpace)
    {
        if (charaSpace.charaObjectHeld != null)
        {
            charaObjectsSelected.Remove(charaSpace.charaObjectHeld);
            charaSpace.charaObjectHeld   = null;
            charaSpace.objectImage.color = Color.clear;

            if (charaObjectsSelected.Count == 1 && charaSpace == characterSpaces[0])
            {
                CharaObject charaObjectToMove = null;
                for (int i = 0; i < characterSpaces.Count; i++)
                {
                    if (characterSpaces[i].charaObjectHeld != null)
                    {
                        charaObjectToMove = characterSpaces[i].charaObjectHeld;

                        charaObjectsSelected.Remove(characterSpaces[i].charaObjectHeld);
                        characterSpaces[i].charaObjectHeld   = null;
                        characterSpaces[i].objectImage.color = Color.clear;
                    }
                }
                AddObjectToTrade(null, charaObjectToMove);
            }
        }
    }
예제 #2
0
    public void UpdateObjectInfoWindow(CharaObject shownObject)
    {
        objectInfoIllustration.sprite = shownObject.linkedObject.illustration;

        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);
        }

        if (shownObject.isPersonnalValueKnown)
        {
            objectInfoNameText.text        = shownObject.linkedObject.objectName;
            objectInfoTitleText.text       = shownObject.linkedObject.title;
            objectInfoDescriptionText.text = shownObject.linkedObject.description;
            objectInfoOriginText.text      = shownObject.linkedObject.originDescription;
        }
        else
        {
            objectInfoNameText.text        = "???";
            objectInfoTitleText.text       = "";
            objectInfoDescriptionText.text = "";
            objectInfoOriginText.text      = "";
        }


        for (int i = 0; i < featuresInfo.Length; i++)
        {
            if (i + (shownObject.linkedObject.categories.Count > 1 ? 2 : 1) < shownObject.linkedObject.features.Count && shownObject.isPersonnalValueKnown)
            {
                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  = charaObjectWindowTheme[0];
        objectInfoBodyBack.color    = charaObjectWindowTheme[1];
        objectInfoFeatureBack.color = charaObjectWindowTheme[2];
    }
예제 #3
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");
            }
        }
    }
예제 #4
0
 public void DropCharaObject(CharaObject charaObjectDropped)
 {
     if (isOpened)
     {
         for (int i = 0; i < characterSpaces.Count; i++)
         {
             if (characterSpaces[i].isHovered)
             {
                 AddObjectToTrade(null, charaObjectDropped);
             }
         }
     }
 }
예제 #5
0
    public CharaObject GetCharaObjectFromObject(Object searchedObject)
    {
        CharaObject potentialCharaObject = null;

        foreach (CharaObject charaObject in belongings)
        {
            if (charaObject.linkedObject == searchedObject)
            {
                potentialCharaObject = charaObject;
            }
        }
        return(potentialCharaObject);
    }
예제 #6
0
    public void SetRandomListOfCharaObject()
    {
        CharaObject newCharaObject = null;

        for (int i = 0; i < Random.Range(minMaxObjectPerChara.x, minMaxObjectPerChara.y + 1); i++)
        {
            newCharaObject = Instantiate(charaObjectPrefab, belongingsAnim.rectTransform);
            newCharaObject.linkedObject           = allObjectsForCharacter[Random.Range(0, allObjectsForCharacter.Count)];
            newCharaObject.personnalValue         = Random.Range(minMaxObjectPersonnalValue.x, minMaxObjectPersonnalValue.y);
            newCharaObject.personnalValueMaxRatio = maxPersonnalValue;
            newCharaObject.RefreshDisplay();
            belongings.Add(newCharaObject);
        }
    }
예제 #7
0
    void Update()
    {
        if (negoceTimeSpend < marketDayTime)
        {
            if (unfoldTime)
            {
                negoceTimeSpend           += Time.deltaTime;
                sundialArrow.localRotation = Quaternion.Euler(0, 0, Mathf.Lerp(minMaxSundialArrowAngle.x, minMaxSundialArrowAngle.y, negoceTimeSpend / marketDayTime));
            }
        }
        else if (unfoldTime)
        {
            unfoldTime = false;
            Invoke("CloseShop", 5);
            foreach (CharacterHandler characterPresent in allPresentCharacters)
            {
                characterPresent.Interrupt();
                characterPresent.isThinking = false;
                StartCoroutine(characterPresent.Leave());
            }
        }

        UpdateCharacterApparition();

        UpdateSelectedCharaInfo();

        if (selectedCharacter == null)
        {
            draggedCharaObject = null;
        }

        if (openStallButton.isClicked & openStallButton.canBeUsed)
        {
            OpenShop();
        }

        if (nextDayButton.isClicked & nextDayButton.canBeUsed)
        {
            nextDayButton.SetEnable(false);
            if (isTuto || SaveLoader.I.playerSave.passedDays >= 2)
            {
                GoToMainMenu();
            }
            else
            {
                StartCoroutine(LoadSceneWithTransition(SceneManager.GetActiveScene().buildIndex));
            }
        }
    }
예제 #8
0
 public void AskAbout(CharaObject charaObjectAsked, CharacterHandler targetCharacter)
 {
     currentCharacterTalkingTo             = targetCharacter;
     currentCharacterTalkingTo.isListening = true;
     askedCharaObject = charaObjectAsked;
     currentCharacterTalkingTo.Interrupt();
     isWaitingForResponse = true;
     if (charaObjectAsked.isPersonnalValueKnown)
     {
         Speak(chatSpokenTexts[Random.Range(0, chatSpokenTexts.Length)], askTime);
     }
     else
     {
         Speak(askSpokenTexts[Random.Range(0, askSpokenTexts.Length)], askTime);
     }
 }
예제 #9
0
    public void GetBelongingsFromCharacter()
    {
        CharaObject newCharaObject = null;

        PlayerSave.CharacterInfo characterInfo = SaveLoader.I.GetCharacterInfoFromCharacter(character);
        if (characterInfo != null)
        {
            for (int i = 0; i < character.personnalObjects.Count; i++)
            {
                bool stillPossess = false;;
                for (int y = 0; y < characterInfo.ownedObjects.Count; y++)
                {
                    if (characterInfo.ownedObjects[y] == character.personnalObjects[i].ownedObject.objectName)
                    {
                        stillPossess = true;
                    }
                }

                if (stillPossess)
                {
                    newCharaObject = Instantiate(charaObjectPrefab, belongingsAnim.rectTransform);
                    newCharaObject.linkedObject           = character.personnalObjects[i].ownedObject;
                    newCharaObject.personnalValue         = character.personnalObjects[i].value;
                    newCharaObject.personnalValueMaxRatio = maxPersonnalValue;
                    newCharaObject.RefreshDisplay();
                    belongings.Add(newCharaObject);
                }
            }
        }
        else
        {
            for (int i = 0; i < character.personnalObjects.Count; i++)
            {
                newCharaObject = Instantiate(charaObjectPrefab, belongingsAnim.rectTransform);
                newCharaObject.linkedObject           = character.personnalObjects[i].ownedObject;
                newCharaObject.personnalValue         = character.personnalObjects[i].value;
                newCharaObject.personnalValueMaxRatio = maxPersonnalValue;
                newCharaObject.RefreshDisplay();
                belongings.Add(newCharaObject);
            }
        }
    }
예제 #10
0
    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;
                    }
                }
            }
        }
    }
예제 #11
0
 public void AskAbout(CharaObject askedObject)
 {
     if (character.randomlyGenerated)
     {
         Speak(character.needs[Random.Range(0, character.needs.Count)].defaultHintToTell, 3);
     }
     else
     {
         if (!askedObject.isPersonnalValueKnown)
         {
             Speak(character.GetPersonnalObjectFromObject(askedObject.linkedObject).infoGivenWhenAsked);
         }
         else
         {
             Speak(character.needs[Random.Range(0, character.needs.Count)].hintSpokenWhenAsked);
         }
     }
     askedObject.isPersonnalValueKnown = true;
     if (NegoceManager.I.playerHandler.selectedCharaObject == askedObject)
     {
         NegoceManager.I.playerHandler.UpdateObjectInfoWindow(askedObject);
     }
 }
예제 #12
0
    private void DragAndDropCharaObjectUpdate()
    {
        if (isSelected)
        {
            for (int i = 0; i < belongings.Count; i++)
            {
                if (draggedCharaObject == null && belongings[i].isDragged)
                {
                    draggedCharaObject = belongings[i];
                }
            }

            if (draggedCharaObject != null)
            {
                foreach (CharaObject charaObject in belongings)
                {
                    charaObject.canvasGroup.blocksRaycasts = false;
                }

                Vector3 objectPosToFollow = Input.mousePosition;
                if (isHoveredWithCharaObject && !isThinking && !isListening)
                {
                    if (!NegoceManager.I.playerHandler.IsPlayerTalking())
                    {
                        askOption.Enable("");
                        if (draggedCharaObject.isPersonnalValueKnown)
                        {
                            askOptionText.text = "Discuter";
                        }
                        else
                        {
                            askOptionText.text = "Questionner";
                        }
                        exchangeOption.Enable("");
                        dropOptionCanvasGroup.blocksRaycasts = true;
                    }
                    else
                    {
                        dropOptionCanvasGroup.blocksRaycasts = false;
                        askOption.Disable();
                        exchangeOption.Disable();
                    }

                    if (askOption.isCurrentlyHoveredCorrectly)
                    {
                        objectPosToFollow = askOption.rectTransform.position;
                    }

                    if (exchangeOption.isCurrentlyHoveredCorrectly)
                    {
                        objectPosToFollow = exchangeOption.rectTransform.position;
                    }
                }
                else
                {
                    dropOptionCanvasGroup.blocksRaycasts = false;
                    askOption.Disable();
                    exchangeOption.Disable();
                }

                draggedCharaObject.rectTransform.position = objectPosToFollow;

                if (Input.GetMouseButtonUp(0))
                {
                    if (askOption.isCurrentlyHoveredCorrectly)
                    {
                        StartCoroutine(askOption.Select());
                        NegoceManager.I.playerHandler.AskAbout(draggedCharaObject, this);
                    }

                    if (exchangeOption.isCurrentlyHoveredCorrectly)
                    {
                        StartCoroutine(exchangeOption.Select());
                        characterExchangeHandler.AddObjectToTrade(null, draggedCharaObject);
                        characterExchangeHandler.Open();
                    }

                    characterExchangeHandler.DropCharaObject(draggedCharaObject);

                    draggedCharaObject.StopDrag();
                    draggedCharaObject.rectTransform.position = draggedCharaObject.charaBelongingSpace.position;

                    draggedCharaObject.isDragged = false;
                    draggedCharaObject           = null;
                }
                NegoceManager.I.draggedCharaObject = draggedCharaObject;
            }
            else
            {
                dropOptionCanvasGroup.blocksRaycasts = false;
                askOption.Disable();
                exchangeOption.Disable();
                foreach (CharaObject charaObject in belongings)
                {
                    charaObject.canvasGroup.blocksRaycasts = true;
                }
            }
        }
    }
예제 #13
0
    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));
                        }
                    }
                }
            }
        }
    }