Пример #1
0
 public void GoToMenu(OnGoToMenu e)
 {
     CleanBillboards();
     ArrowDisplayer.Instances("NotePad").CleanArrows();
     ArrowDisplayer.Instances("FtueArrow").CleanArrows();
     _open = false;
 }
Пример #2
0
    private static ArrowDisplayer NewInstance(string instanceName)
    {
        ArrowDisplayer nInstance = new ArrowDisplayer();

        _instances.Add(instanceName, nInstance);
        return(nInstance);
    }
Пример #3
0
        protected void OnPointTargetDialogue(ContractorTopic topic)
        {
            Vector3 pos = topic.targetWorldPos;

            if (topic.arrowIcon != null)
            {
                UIObjectPointIcon nArrow = ArrowDisplayer.Instances("NotePad").UseArrow <UIObjectPointIcon>(250f, 0, true, pos, topic.arrowIcon, "NotePad");
                BillboardElement  be     = Instantiate(itemBillboard, pos + (pos.normalized * 0.15f), Quaternion.identity) as BillboardElement;
                approachedItemsPos.Add(be);
                DontDestroyOnLoad(be);
                if (FtueManager.instance.active)
                {
                    nArrow.AddCallBack(FtueManager.instance.ValidStep);
                }
                else
                {
                    nArrow.AddCallBackPos(CleanBillboard, pos);
                }
            }
            else
            {
                UIObjectPointer  nArrow = ArrowDisplayer.Instances("NotePad").UseArrow <UIObjectPointer>(250f, 0, true, pos, "NotePad");
                BillboardElement be     = Instantiate(itemBillboard, pos + (pos.normalized * 0.15f), Quaternion.identity) as BillboardElement;
                approachedItemsPos.Add(be);
                DontDestroyOnLoad(be);
                if (FtueManager.instance.active)
                {
                    nArrow.AddCallBack(FtueManager.instance.ValidStep);
                }
                else
                {
                    nArrow.AddCallBackPos(CleanBillboard, pos);
                }
            }
        }
Пример #4
0
        private IEnumerator DisplayDrag(PointerFtueMove moveData)
        {
            int     stepI  = currentStepIndex;
            Vector3 pnjPos = Camera.main.WorldToScreenPoint(PlayerManager.Instance.GetNearestNPC().position);

            dragTarget.position = pnjPos;
            UIObjectPointer arrow = ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(100f, -currentStep.pointRotation, false, clickTarget.transform as RectTransform, "FtueTap", false);

            arrow.SetAnimProperties(0f, 0f);
            float x = 0f;
            float t = 0f;

            while (currentStepIndex == stepI)
            {
                t = Mathf.Clamp(t + (Time.deltaTime * (1f / 1.2f)), 0f, 1f);
                x = Easing.CrossFade(Easing.SmoothStart, 3, Easing.SmoothStop, 3, t);
                clickTarget.transform.position = Vector3.Lerp(moveData.startTrf.position, dragTarget.position, x);
                if (t >= 1f)
                {
                    t = 0f;
                }
                yield return(null);
            }
            ArrowDisplayer.Instances("FtueTap").DestroyArrow(arrow);
        }
Пример #5
0
    protected void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this);
            throw new Exception("An instance of QuestManager already exists.");
        }
        else
        {
            _instance = this;
        }

        Events.Instance.AddListener <OnSwitchScene>(OnChangeScene);
        view = ECameraTargetType.MAP;

        ArrowDisplayer.Instances(ArrowDisplayerName).SetContainer(container as RectTransform);
        ArrowDisplayer.Instances(ArrowDisplayerName).SetModels(null, arrowModel);

        _questList = GetComponentsInChildren <UIQuest>(true);
        for (int i = 0; i < _questList.Length; i++)
        {
            _questList[i].Init();
            Quests.Add(_questList[i].quest);
        }

        tweener.SetMethods(Tween, null, null, Disable);
        TweenerLead.Instance.NewTween(GetComponent <RectTransform>(), tweener);
        gameObject.SetActive(false);
    }
Пример #6
0
 protected void ReceivePinch(OnPinchEnd e)
 {
     Events.Instance.RemoveListener <OnPinchEnd>(ReceivePinch);
     ftueText.gameObject.SetActive(false);
     ArrowDisplayer.Instances("FtueArrow").CleanArrows();
     ArrowDisplayer.Instances("FtueTap").CleanArrows();
 }
Пример #7
0
        public void StartFTUE(OnStartFtue e)
        {
            Events.Instance.RemoveListener <OnStartFtue>(StartFTUE);

            currentStepIndex = startStep;
            currentStep      = steps[startStep];

            ArrowDisplayer.Instances("FtueArrow").SetContainer(transform as RectTransform);
            ArrowDisplayer.Instances("FtueArrow").SetModels(simpleModel, iconModel);

            ArrowDisplayer.Instances("FtueTap").SetContainer(transform as RectTransform);
            ArrowDisplayer.Instances("FtueTap").SetModels(pointTap, null);

            for (int i = 0; i < steps.Count; i++)
            {
                if (steps[i].ftueSprite != null)
                {
                    SetFtueUIImageContainer(steps[i].ftueSprite, false);
                }
                if (steps[i].hiddenUI != null)
                {
                    SetFtueUIImageContainer(steps[i].hiddenUI, false);
                }
                if (steps[i].titleImage != null)
                {
                    SetFtueUIImageContainer(steps[i].titleImage, false);
                }
            }

            if (!gameObject.activeSelf)
            {
                gameObject.SetActive(true);
            }
            RunCurrentStep();
        }
        protected virtual void FollowTarget()
        {
            if (uiTarget)
            {
                Point(uiTarget.position);
            }
            else if (worldTarget != Vector3.zero)
            {
                Vector3 objScreenPos = Camera.main.WorldToScreenPoint(worldTarget);
                if (objScreenPos.z < 0)
                {
                    objScreenPos.z = 0;
                    objScreenPos.y = -objScreenPos.y;
                    objScreenPos.x = -objScreenPos.x;
                    Point(objScreenPos);
                }
                else
                {
                    Point(Camera.main.WorldToScreenPoint(worldTarget));
                }
            }

            Player playerTransform = PlayerManager.Instance.player;

            if (playerTransform != null && autoDestroy)
            {
                if (Vector3.Distance(worldTarget, playerTransform.transform.position) <= INTERACT_DISTANCE / 2f)
                {
                    ActiveCallBacks();
                    ArrowDisplayer.Instances(_displayerInstanceName).DestroyArrow(this);
                }
            }
        }
Пример #9
0
        public void ValidStep()
        {
            StopAllCoroutines();
            playerFree = false;
            GetComponent <Image>().raycastTarget = true;
            Attach();
            if (_uitargetContainer != null)
            {
                if (currentStep.UItarget != null)
                {
                    currentStep.UItarget.transform.SetParent(_uitargetContainer);
                    currentStep.UItarget.transform.SetSiblingIndex(_childIndex);
                }
                else if (currentStep.playerBtn != null)
                {
                    currentStep.playerBtn.transform.SetParent(_uitargetContainer);
                    currentStep.playerBtn.transform.SetSiblingIndex(_childIndex);
                }
                _uitargetContainer = null;
            }

            if (currentStep.targetTopic != -1)
            {
                NotePad.Instance.Topics[currentStep.targetTopic].gameObject.transform.SetParent(NotePad.Instance.gameObject.transform);
                NotePad.Instance.Topics[currentStep.targetTopic].SetColor(Color.white);
            }

            receiveTouch = false;
            activeInput  = FtueInputs.NONE;
            currentStepIndex++;
            if (currentStepIndex >= steps.Count)
            {
                Clear();
            }
            else
            {
                ftueText.gameObject.SetActive(false);
                ArrowDisplayer.Instances("FtueArrow").CleanArrows();
                ArrowDisplayer.Instances("FtueTap").CleanArrows();
                _clickableTransform = null;

                currentStep = steps[currentStepIndex];
                Events.Instance.Raise(new OnFtueNextStep());
                if (currentStep.targetTopic != -1 && !NotePad.Instance.Open)
                {
                    Events.Instance.AddListener <OnFTUEOpenDialogue>(OpenDialogue);
                }
                else
                {
                    RunCurrentStep();
                }
            }
        }
Пример #10
0
        public void PointTarget(Vector3 worldPos)
        {
            UIObjectPointer nArrow = ArrowDisplayer.Instances("NotePad").UseArrow <UIObjectPointer>(250f, 0, true, worldPos, "NotePad");

            if (FtueManager.instance.active)
            {
                nArrow.AddCallBack(FtueManager.instance.ValidStep);
            }
            else
            {
                nArrow.AddCallBackPos(CleanBillboard, worldPos);
            }
        }
Пример #11
0
 protected void OnChangeScene(OnSwitchScene e)
 {
     if (e.mode == ECameraTargetType.MAP)
     {
         view = ECameraTargetType.MAP;
         ArrowDisplayer.Instances(ArrowDisplayerName).SetActiveArrows(false);
     }
     else if (e.mode == ECameraTargetType.ZOOM)
     {
         view = ECameraTargetType.ZOOM;
         ArrowDisplayer.Instances(ArrowDisplayerName).SetActiveArrows(true);
     }
     DisplayQuest();
 }
Пример #12
0
        protected void Awake()
        {
            if (_instance != null)
            {
                throw new Exception("Tentative de création d'une autre instance de NotePad alors que c'est un singleton.");
            }
            _instance = this;

            Events.Instance.AddListener <OnSwitchScene>(OnChangeScene);
            Events.Instance.AddListener <OnGoToMenu>(GoToMenu);
            inTransition = false;
            topics       = GetComponentsInChildren <NotepadTopic>();

            ArrowDisplayer.Instances("NotePad").SetContainer(arrowContainer as RectTransform);
            ArrowDisplayer.Instances("NotePad").SetModels(simpleModel, iconModel);
            endInfo.gameObject.SetActive(false);
        }
Пример #13
0
 protected void OnChangeScene(OnSwitchScene e)
 {
     if (e.mode == ECameraTargetType.MAP)
     {
         view = ECameraTargetType.MAP;
         ArrowDisplayer.Instances("NotePad").SetActiveArrows(false);
         ArrowDisplayer.Instances("FtueArrow").SetActiveArrows(false);
         SetBillBoardVisibility(false);
     }
     else if (e.mode == ECameraTargetType.ZOOM)
     {
         view = ECameraTargetType.ZOOM;
         ArrowDisplayer.Instances("NotePad").SetActiveArrows(true);
         ArrowDisplayer.Instances("FtueArrow").SetActiveArrows(true);
         SetBillBoardVisibility(true);
     }
 }
Пример #14
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);
        }
    }
Пример #15
0
        public void RunCurrentStep()
        {
            activeInput = currentStep.input;
            if (currentStep.text != null && currentStep.text != string.Empty)
            {
                ftueText.gameObject.SetActive(true);
                StartCoroutine(DisplayFtueStep(currentStep.text));
            }
            else if (currentStep.input == FtueInputs.TOUCH)
            {
                StartCoroutine(DisplayFtueStep(string.Empty));
            }

            if (currentStep.toDetach != null)
            {
                _detachContainer  = currentStep.toDetach.parent;
                _childDetachIndex = GetChildIndex(currentStep.toDetach, _detachContainer);
                currentStep.toDetach.SetParent(transform);
            }

            if (currentStep.UItarget != null)
            {
                _uitargetContainer = currentStep.UItarget.transform.parent;
                _childIndex        = GetChildIndex(currentStep.UItarget.transform, _uitargetContainer);
                currentStep.UItarget.transform.SetParent(transform);
                currentStep.UItarget.SetState(true);
                ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(50f, currentStep.pointRotation, false, currentStep.UItarget.transform as RectTransform, "FtueTap");
            }

            if (currentStep.toPointUI != null)
            {
                ArrowDisplayer.Instances("FtueArrow").UseArrow <UIObjectPointer>(50f, currentStep.pointRotation, false, currentStep.toPointUI, "FtueArrow");
            }

            if (currentStep.specificPoint.pos != Vector3.zero)
            {
                if (currentStep.specificPoint.withArrow)
                {
                    if (currentStep.specificPoint.icon != null)
                    {
                        NotePad.Instance.PointTarget(currentStep.specificPoint.pos, currentStep.specificPoint.icon);
                    }
                    else
                    {
                        NotePad.Instance.PointTarget(currentStep.specificPoint.pos);
                    }
                }
                else
                {
                    PlayerManager.Instance.player.SetPosCallBack(currentStep.specificPoint.pos, ValidStep);
                }
            }

            playerFree = currentStep.playerFree;
            if (playerFree)
            {
                GetComponent <Image>().raycastTarget = false;
            }

            if (currentStep.ftueSprite != null && currentStep.ftueSprite.Alpha < 1f)
            {
                SetFtueUIImageContainer(currentStep.ftueSprite, true, true);
            }

            if (currentStep.tapPosition != Vector2.zero)
            {
                clickTarget.gameObject.transform.localPosition = new Vector3(Screen.width * currentStep.tapPosition.x, Screen.height * currentStep.tapPosition.y, 0f);
                ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(50f, 95f, false, clickTarget as RectTransform, "FtueTap", false);
            }

            if (currentStep.targetSmiley)
            {
                ArrowDisplayer.Instances("FtueArrow").UseArrow <UIObjectPointer>(75f, currentStep.pointRotation, false, UIManager.instance.PNJState.smileyRenderer.transform as RectTransform, "Ftue");
            }

            if (currentStep.targetNPCIcon)
            {
                Transform nearestIconTrf = PlayerManager.Instance.GetNearestNPCIcon();
                _clickableTransform = nearestIconTrf;
                ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(50f, currentStep.pointRotation, false, nearestIconTrf.position, "FtueTap", false);
            }

            if (currentStep.pointNPCIcon)
            {
                Transform nearestIconTrf = PlayerManager.Instance.GetNearestNPCIcon();
                ArrowDisplayer.Instances("FtueArrow").UseArrow <UIObjectPointer>(50f, currentStep.pointRotation, false, nearestIconTrf.position, "FtueArrow", false);
            }

            if (_clickableTransform != null)
            {
                clickTarget.gameObject.SetActive(true);
                clickTarget.position = Camera.main.WorldToScreenPoint(_clickableTransform.position);
            }

            if (currentStep.targetTopic != -1)
            {
                RectTransform topicTrf = NotePad.Instance.Topics[currentStep.targetTopic].GetComponent <RectTransform>();
                NotePad.Instance.Topics[currentStep.targetTopic].gameObject.transform.SetParent(transform);
                NotePad.Instance.Topics[currentStep.targetTopic].SetColor(Color.green);
                ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(50f, -90f, false, topicTrf, "FtueTap", false);
                Events.Instance.AddListener <OnActiveSelectTopic>(OnSelectTopic);
            }

            if (currentStep.playerBtn != null)
            {
                _uitargetContainer = currentStep.playerBtn.transform.parent;
                _childIndex        = GetChildIndex(currentStep.playerBtn.transform, _uitargetContainer);
                currentStep.playerBtn.transform.SetParent(transform);
                ArrowDisplayer.Instances("FtueTap").UseArrow <UIObjectPointer>(25f, currentStep.pointRotation, false, currentStep.playerBtn.transform as RectTransform, "FtueTap");
                Events.Instance.AddListener <SelectPlayer>(OnSelectPlayer);
            }

            if (currentStep.input == FtueInputs.PINCH)
            {
                pinchSprite.gameObject.SetActive(true);
                pinchSprite.GetComponent <Animator>().SetBool("pinch", true);
                Events.Instance.AddListener <OnPinchEnd>(ReceivePinch);
                Events.Instance.AddListener <OnEndFtuePinch>(ReceivePinch);
                Events.Instance.AddListener <OnInputFtuePinch>(DisablePinchSprite);
            }

            if (currentStep.drag.active)
            {
                StartCoroutine(DisplayDrag(currentStep.drag));
            }

            if (currentStep.waitDezoom)
            {
                Events.Instance.AddListener <OnEndPanelZoom>(ReceiveZoomValidation);
            }
        }