public void PNJThanks(InteractablePNJ npc, string textKey) { speakingPos = npc.transform.position; _speakingNPC = npc; ChangeText(TextManager.GetText(textKey)); Point(); }
protected IEnumerator EndSpeakCoroutine() { ChangeText(TextManager.GetText(InteractablePNJ.DialoguesDatabase[_speakingNPC.TxtInfo.NPCText].outroText)); bool receiveTouch = false; while (!receiveTouch) { if (Input.GetKeyDown(KeyCode.Mouse0)) { receiveTouch = true; } if (Input.touchCount > 1) { receiveTouch = true; } yield return(null); } selectedTopic = null; speakingPos = Vector3.zero; Events.Instance.Raise(new OnEndSpeakingNPC()); UIManager.instance.PNJState.pnj = _speakingNPC; UIManager.instance.PNJState.SetTarget(PlayerManager.Instance.GetNearestNPCIcon()); UIManager.instance.PNJState.Active(true); NotePad.Instance.endInfo.gameObject.SetActive(false); _speakingNPC = null; Show(false); }
protected void Open(OnPopupBuilding e) { _npc = e.npc; buildingBudget = e.buildingbudget; UIName.text = TextManager.GetText(_npc.IDname); tweener.SetMethods(Opening, Set, CheckFtue, null); TweenerLead.Instance.StartTween(tweener); }
public void Clear() { stars[targetIndex].transform.localScale = Vector3.one; starFeedback.transform.position = stars[0].transform.position; targetIndex = 0; pnj = null; GetComponent <UIOverlay>().targetTransform = null; }
public void HandleActiveFromNPC(InteractablePNJ npc) { ControllerInput.AddScreen(transform); giveTarget.gameObject.SetActive(false); NPCpanel.clickedNPC = npc; tweener.SetMethods(Move, OpenTransform, CheckFtue, CloseUI); TweenerLead.Instance.StartTween(tweener); }
protected void SetTopics(OnSetNotepadTopic e) { UIManager.instance.PNJState.Active(false); selectedNpc = e.npc; selectedDialogue = InteractablePNJ.DialoguesDatabase[selectedNpc.TxtInfo.NPCText]; int topicIndex = 0; foreach (ContractorTopic ct in ResourcesManager.Instance.contractTopics) { if (selectedDialogue.topicIDs.Contains(ct.id)) { int index = selectedDialogue.topicIDs.IndexOf(ct.id); topics[index].SetText(TextManager.GetText(ct.text.playerText)); topics[index].npcAnswer = TextManager.GetText(ct.text.NPCText); topics[index].SetIcon(ct.icon); topics[index].contractorTopic = ct; topics[index].topicType = typeof(ContractorTopic); topicIndex++; } } foreach (GovernmentTopic gt in ResourcesManager.Instance.govTopics) { if (selectedDialogue.topicIDs.Contains(gt.id)) { int index = selectedDialogue.topicIDs.IndexOf(gt.id); topics[index].SetText(TextManager.GetText(gt.texts.playerText)); topics[index].npcAnswer = TextManager.GetText(gt.texts.NPCText); topics[index].SetIcon(gt.icon); topics[index].govTopic = gt; topics[index].topicType = typeof(GovernmentTopic); topicIndex++; } } if (topicIndex == 1) { topics[1].gameObject.SetActive(false); } else if (topicIndex == 0) { foreach (NotepadTopic nt in topics) { nt.gameObject.SetActive(false); } } else { foreach (NotepadTopic nt in topics) { nt.gameObject.SetActive(true); } } StartCoroutine(DisplayCoroutine()); }
public void SetProperties(InteractablePNJ npc) { dialogueStep = 0; Events.Instance.Raise(new OnStartSpeakingNPC()); topicSelected = false; speakingPos = npc.transform.position; _speakingNPC = npc; Point(); ChangeText(TextManager.GetText(InteractablePNJ.DialoguesDatabase[npc.TxtInfo.NPCText].introText)); StartCoroutine(WaitForTouch()); }
void Close() { scroller.DelMoveCallback(); inventoryButtonClose.SetActive(true); transformationPanel.SetActive(false); InventoryStrip.SetActive(true); NPCPanel.SetActive(false); Events.Instance.Raise(new OnEndSpeakingNPC()); PointingBubble.instance.Show(false); clickedNPC = null; }
public void ShowHelp(Vector3 playerPos) { List <InteractablePNJ> pnjs = GetProps <InteractablePNJ>(); if (_pnjHelp == null && pnjs.Count > 0) { InteractablePNJ tPnj = pnjs[0]; InteractablePNJ testPnj; float dist = Mathf.Abs(Vector3.Distance(tPnj.transform.position, playerPos)); for (int i = 1; i < pnjs.Count; i++) { testPnj = pnjs[i]; float nDist = Vector3.Distance(testPnj.transform.position, playerPos); if (nDist < dist) { tPnj = testPnj; dist = nDist; } } if (dist < InteractablePNJ.helpDistance) { if (PlayerManager.Instance.playerType == EPlayer.GOV) { if (tPnj.budgetComponent.initialBudget == 0) { return; } } _pnjHelp = Instantiate(EarthManager.Instance.helpSpritePrefab, tPnj.transform.position + (tPnj.transform.up.normalized) * 0.15f, Quaternion.identity) as BillboardHelp; _pnjHelp.pnj = tPnj; _pnjHelp.Init(PlayerManager.Instance.playerType); _pnjHelp.SetVisibility(dist); } } else if (_pnjHelp != null) { float dist = Mathf.Abs(Vector3.Distance(_pnjHelp.pnj.transform.position, playerPos)); if (dist < InteractablePNJ.helpDistance) { _pnjHelp.SetVisibility(dist); } else { Destroy(_pnjHelp.gameObject); _pnjHelp = null; } } }
public void ReceiveClickOnTarget() { clickTarget.gameObject.SetActive(false); if (_clickableTransform != null) { if (currentStep.targetNPCIcon) { InteractablePNJ npc = _clickableTransform.GetComponent <BillboardHelp>().pnj; PlayerManager.Instance.player.LaunchCoroutineTapNPC(new OnTapNPC(npc)); } } if (currentStep.waitOpeningPanel == null) { ValidStep(); } }
protected void CheckStep(Quest selectedQuest) { int pnjCount = InteractablePNJ.PNJs.Count; for (int i = 0; i < selectedQuest.activitiesName.Length; i++) { for (int j = 0; j < pnjCount; j++) { InteractablePNJ pnj = InteractablePNJ.PNJs[j]; if (pnj.budgetComponent == null) { continue; } if (pnj.budgetComponent.type == selectedQuest.activitiesName[i]) { InteractablePNJ_TownHall major = pnj as InteractablePNJ_TownHall; InteractablePNJ_CoalPower coalPNJ = pnj as InteractablePNJ_CoalPower; if (major != null) { if (major.HaveItem(selectedQuest.itemType)) { ValidQuest(selectedQuest); } } else if (coalPNJ != null) { if (coalPNJ.HaveItem(selectedQuest.itemType)) { ValidQuest(selectedQuest); } } else { if (pnj.HaveItem(selectedQuest.itemType)) { ValidQuest(selectedQuest); } } } } } if (selectedQuest.validated) { UpdateQuestList(); Events.Instance.Raise(new OnShowPin(EPin.Quest, true)); } }
public void Give(Item item, InteractablePNJ npc) { if (npc.CanAccept(item)) { FBX_Give.instance.Play(new Vector3(draggerTransform.transform.position.x, draggerTransform.transform.position.y, draggerTransform.transform.position.z)); if (FtueManager.instance.active) { if (FtueManager.instance.currentStep.drag.active) { FtueManager.instance.AttachTarget(scrollElement[FtueManager.instance.currentStep.scrollerIndex].transform); FtueManager.instance.ValidStep(); } } else { PointingBubble.instance.Show(true); PointingBubble.instance.ActiveTouchForClose(); } int itemIndex = InventoryPlayer.Instance.GetItemIndex(item.itemType); InventoryPlayer.Instance.Give(itemIndex, npc.IDname); Events.Instance.Raise(new OnGive(itemIndex)); npc.ReceiveItem(item.itemType); UIManager.instance.PNJState.SetFromItem(item.itemType); Events.Instance.Raise(new OnUpdateNPCInfo()); MajInventory(null); if (scroller.CurrentIndex >= scroller.NbElement && scroller.NbElement > 0) { scroller.Move(1); } if (FtueManager.instance.active) { HandleActiveFromInventory(); } } else { PointingBubble.instance.Show(true); Events.Instance.Raise(new OnWrongObject()); PointingBubble.instance.ActiveTouchForClose(); } }
public static void SaveParty() { string path = PersistenDataManager.GetPersistentPath("/Save/PartySave.gd"); GameStateSave.Generate( InventoryPlayer.Instance.knowsItems, ConvertPlanetToSerialiable(EarthManager.Instance.Cells), ConvertPlayerPositionToSerializable(EarthManager.Instance.playerPositions), TimeManager.Instance.GenerateSave(), InventoryPlayer.Instance.nbItems, WorldManager.Instance.GenerateSave(), InventoryPlayer.Instance.givedOject, InteractablePNJ.GenerateSave().ToArray() ); GameStateSave.moneyStock = InventoryPlayer.Instance.moneyStock; GameStateSave.version = GameManager.VERSION; PersistenDataManager.Serialize(GameStateSave, path); }
public void CloseNotePad() { foreach (NotepadTopic topic in topics) { topic.contractorTopic = null; topic.govTopic = null; topic.clickEnable = false; } _open = false; govSelected = null; contSelected = null; selectedDialogue = null; selectedNpc = null; activeDialogue = null; ControllerInput.RemoveScreen(transform); StartCoroutine(DisplayCoroutine()); Events.Instance.RemoveListener <OnActiveSelectTopic>(SelectTopic); }
public void CloseUI() { InteractablePNJ pnj = GetNPC(); if (pnj) { if (pnj.neededItems.Count > 0) { UIManager.instance.PNJState.pnj = pnj; UIManager.instance.PNJState.SetTarget(PlayerManager.Instance.GetNearestNPCIcon()); UIManager.instance.PNJState.SetVisibility(0f, 1f); UIManager.instance.PNJState.Active(true); } } StopDrag(); giveTarget.gameObject.SetActive(false); NPCpanel.gameObject.SetActive(false); bagButton.SetActive(true); ControllerInput.RemoveScreen(transform); ControllerInput.instance.ResetDatasTouch(); }
protected InteractablePNJ GetNPC() { InteractablePNJ npc = null; Vector3 playerPos = PlayerManager.Instance.player.transform.position; float minDist = 0.15f; float dist = 0f; int nb = InteractablePNJ.PNJs.Count; for (int i = 0; i < nb; i++) { if (InteractablePNJ.PNJs[i].GetComponent <Renderer>().isVisible) { dist = Vector3.Distance(InteractablePNJ.PNJs[i].Position, playerPos); if (dist < minDist) { minDist = dist; npc = InteractablePNJ.PNJs[i]; } } } return(npc); }
bool TapInteract() { InteractablePNJ pnj = _hit.transform.GetComponent <InteractablePNJ>(); BillboardHelp helpSprite = _hit.transform.GetComponent <BillboardHelp>(); if (pnj != null) { Events.Instance.Raise(new OnTapNPC(pnj)); return(true); } else if (helpSprite != null) { Events.Instance.Raise(new OnTapNPC(helpSprite.pnj)); return(true); } else if (_hit.transform.GetComponent <ItemPickup>() && PlayerManager.Instance.playerType == EPlayer.ECO) { Events.Instance.Raise(new OnTapItemPickUp(_hit.transform.gameObject)); return(true); } return(false); }
public void DisplayQuest() { ArrowDisplayer.Instances(ArrowDisplayerName).CleanArrows(); pinchSprite.gameObject.SetActive(false); if (_runningQuest == null || _runningQuest.validated) { return; } bool hasItem = InventoryPlayer.Instance.ContainItem(_runningQuest.itemType) != null; if (_runningQuest.step < 1 && !hasItem) { int pnjCount = InteractablePNJ.PNJs.Count; for (int i = 0; i < pnjCount; i++) { InteractablePNJ pnj = InteractablePNJ.PNJs[i]; if (pnj.IDname == _runningQuest.NGOtarget) { UIObjectPointIcon pointer = ArrowDisplayer.Instances(ArrowDisplayerName).UseArrow <UIObjectPointIcon>(350f, 0, true, pnj.transform.position, NGOSprite, ArrowDisplayerName, false); if (view == ECameraTargetType.MAP) { ArrowDisplayer.Instances(ArrowDisplayerName).SetActiveArrows(false); } } } return; } if (hasItem && _runningQuest.step < 1) { NextQuestStep(); return; } if (_runningQuest.step == 1) { if (!hasItem) { return; } if (_runningQuest.selectedActivity != EBudgetType.None) { NextQuestStep(); return; } else { if (view == ECameraTargetType.ZOOM) { pinchSprite.gameObject.SetActive(true); pinchSprite.GetComponent <Animator>().SetBool("pinch", false); } else { pinchSprite.gameObject.SetActive(false); } } } if (_runningQuest.step == 2) { if (!hasItem) { return; } CheckStep(_runningQuest); if (_runningQuest.validated) { return; } if (view == ECameraTargetType.MAP) { pinchSprite.gameObject.SetActive(true); pinchSprite.GetComponent <Animator>().SetBool("pinch", true); } else { int pnjCount = InteractablePNJ.PNJs.Count; for (int i = 0; i < pnjCount; i++) { InteractablePNJ pnj = InteractablePNJ.PNJs[i]; if (pnj.budgetComponent.type == _runningQuest.selectedActivity) { UIObjectPointIcon pointer = ArrowDisplayer.Instances(ArrowDisplayerName).UseArrow <UIObjectPointIcon>(350f, 0, true, pnj.transform.position, EntrepreneurSprite, ArrowDisplayerName, false); } } } } else { CheckStep(_runningQuest); } }
public OnSetNotepadTopic(InteractablePNJ pNpc) { npc = pNpc; }
public void SelectTarget(InteractablePNJ tPnj) { _runningQuest.selectedActivity = tPnj.budgetComponent.type; NextQuestStep(); }
public OnPopupBuilding(BudgetComponent pBuildingbudget, InteractablePNJ pnpc) { buildingbudget = pBuildingbudget; npc = pnpc; }
public OnTapNPC(InteractablePNJ pnpc) { npc = pnpc; }
public void ShowNPCState() { Vector3 pos = _transform.position; List <InteractablePNJ> pnjs = _associateCell.GetProps <InteractablePNJ>(); InteractablePNJ tPnj = null; InteractablePNJ testPnj = null; float dist = 50f; if (pnjs.Count > 0) { tPnj = pnjs[0]; dist = Mathf.Abs(Vector3.Distance(tPnj.transform.position, pos)); for (int i = 1; i < pnjs.Count; i++) { testPnj = pnjs[i]; float nDist = Vector3.Distance(testPnj.transform.position, pos); if (nDist < dist && nDist <= NPC_HELP_DIST) { tPnj = testPnj; dist = nDist; } } } foreach (Cell c in _associateCell.Neighbors) { List <InteractablePNJ> lpnjs = c.GetProps <InteractablePNJ>(); if (lpnjs.Count > 0) { for (int i = 0; i < lpnjs.Count; i++) { testPnj = lpnjs[i]; float nDist = Vector3.Distance(testPnj.transform.position, pos); if (nDist < dist && nDist <= NPC_HELP_DIST) { tPnj = testPnj; dist = nDist; } } } } if (tPnj != null) { if (tPnj.budgetComponent == null) { return; } if (tPnj.budgetComponent.type != EBudgetType.None && tPnj.budgetComponent.type != EBudgetType.CERN) { UIManager.instance.PNJState.pnj = tPnj; UIManager.instance.PNJState.SetTarget(PlayerManager.Instance.GetNearestNPCIcon()); UIManager.instance.PNJState.SetVisibility(dist, NPC_HELP_DIST); UIManager.instance.PNJState.Active(true); } else { UIManager.instance.PNJState.Clear(); UIManager.instance.PNJState.Active(false); } } else { UIManager.instance.PNJState.Clear(); UIManager.instance.PNJState.Active(false); } }
protected IEnumerator CoroutineRotation(Vector3 targetPos) { Vector3 previousPos = transform.position; float stopDistance = 0.12f; if (_targetInteractable) { stopDistance = 0.125f; } if (_targetItemPickUp) { stopDistance = 0.05f; } SetAnimation(true); _isTapMoving = true; while (Vector3.Distance(transform.position, targetPos) > stopDistance) { Vector3 midPos = ((transform.position + targetPos) / 2f); Vector3 snapMidPos = midPos.normalized * transform.position.magnitude; ECollision lCollision = CanMoveForward(playerAsset.transform.forward); if (lCollision == ECollision.NONE) { previousPos = transform.position; transform.position += (snapMidPos - transform.position).normalized * Time.deltaTime / 3f; if (previousPos == transform.position) { _isTapMoving = false; break; } _targetRotation = Quaternion.LookRotation(transform.position - previousPos, transform.position); playerAsset.transform.rotation = Quaternion.Lerp(playerAsset.transform.rotation, _targetRotation, Time.deltaTime * 10); transform.position = SnapToPlanet(transform.position); Reoriente(); UpdateCells(true); if (posCallBack != Vector3.zero) { if (Vector3.Distance(transform.position, posCallBack) <= 0.2f) { vCallBack(); posCallBack = Vector3.zero; vCallBack = null; } } } else { _targetItemPickUp = null; _isTapMoving = false; StopMove(); break; } DoEmitter(); yield return(null); } transform.position = SnapToPlanet(transform.position); SetAnimation(false); _isTapMoving = false; if (!_targetInteractable && !_targetItemPickUp) { yield break; } if (_targetItemPickUp) { if (PlayerManager.Instance.playerType != EPlayer.ECO) { CancelMove(); yield break; } _targetItemPickUp.GetComponent <ItemPickup>().PickUp(); StopMove(); yield break; } if (Vector3.Distance(transform.position, targetPos) <= stopDistance) { InteractablePNJ lPnj = _targetInteractable as InteractablePNJ; NPCGender genderComponent = lPnj.GetComponent <NPCGender>(); if (PlayerManager.Instance.playerType == EPlayer.NGO) { if (lPnj && lPnj.CanTalkTo(EPlayer.NGO)) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); UIManager.instance.PNJState.Active(false); PointingBubble.instance.Show(true); PointingBubble.instance.SetProperties(lPnj); QuestManager.Instance.NGOTalkTo(lPnj.IDname); lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } else { lPnj = null; CancelMove(); } } else if (lPnj && PlayerManager.Instance.playerType == EPlayer.GOV) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); if (lPnj.CanTalkTo(EPlayer.GOV)) { Events.Instance.Raise(new OnPopupBuilding(lPnj.budgetComponent, lPnj)); } lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } else if (lPnj && PlayerManager.Instance.playerType == EPlayer.ECO) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); if (lPnj.CanTalkTo(EPlayer.ECO)) { InventoryScreen.Instance.HandleActiveFromNPC(lPnj); QuestManager.Instance.EcoTalkTo(lPnj.budgetComponent.type); } lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } } else { StopMove(); } yield break; }