Exemplo n.º 1
0
 public void PNJThanks(InteractablePNJ npc, string textKey)
 {
     speakingPos  = npc.transform.position;
     _speakingNPC = npc;
     ChangeText(TextManager.GetText(textKey));
     Point();
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
 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());
 }
Exemplo n.º 8
0
    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;
    }
Exemplo n.º 9
0
        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;
                }
            }
        }
Exemplo n.º 10
0
 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();
     }
 }
Exemplo n.º 11
0
    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));
        }
    }
Exemplo n.º 12
0
    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();
        }
    }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 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);
 }
Exemplo n.º 15
0
    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();
    }
Exemplo n.º 16
0
    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);
    }
Exemplo n.º 17
0
    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);
    }
Exemplo n.º 18
0
    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);
        }
    }
Exemplo n.º 19
0
 public OnSetNotepadTopic(InteractablePNJ pNpc)
 {
     npc = pNpc;
 }
Exemplo n.º 20
0
 public void SelectTarget(InteractablePNJ tPnj)
 {
     _runningQuest.selectedActivity = tPnj.budgetComponent.type;
     NextQuestStep();
 }
Exemplo n.º 21
0
 public OnPopupBuilding(BudgetComponent pBuildingbudget, InteractablePNJ pnpc)
 {
     buildingbudget = pBuildingbudget;
     npc            = pnpc;
 }
Exemplo n.º 22
0
 public OnTapNPC(InteractablePNJ pnpc)
 {
     npc = pnpc;
 }
Exemplo n.º 23
0
    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);
        }
    }
Exemplo n.º 24
0
    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;
    }