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