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); } } }
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]; }
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"); } } }
public void DropCharaObject(CharaObject charaObjectDropped) { if (isOpened) { for (int i = 0; i < characterSpaces.Count; i++) { if (characterSpaces[i].isHovered) { AddObjectToTrade(null, charaObjectDropped); } } } }
public CharaObject GetCharaObjectFromObject(Object searchedObject) { CharaObject potentialCharaObject = null; foreach (CharaObject charaObject in belongings) { if (charaObject.linkedObject == searchedObject) { potentialCharaObject = charaObject; } } return(potentialCharaObject); }
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); } }
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)); } } }
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); } }
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); } } }
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 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); } }
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; } } } }
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)); } } } } } }