コード例 #1
0
    ///////////////////////////////////////////////
    // внутрение функции
    static bool show(List <TutorialSubject> listSubjects)  // показать сообщение или очередь сообщений (внутреняя функция!)
    {
        if (!MAIN.isTutorialEnable)
        {
            queueTutorialsSubject.Clear();
            return(false);
        }

        if (queueTutorialsSubject.Count == 0)
        {
            return(false);
        }
        Debug.Log("█ список для отображения обучения обновлён: ========================");
        for (int i = 0; i < listSubjects.Count; i++)
        {
            Debug.Log("  обучающая тема в списке №" + i + ": " + listSubjects[i]);
        }
        TutorialSubject subject = queueTutorialsSubject[0];

        if (Errors.isShowing() || WaitingServerAnsver.isShowing())
        {
            return(false);
        }
        if (isShowing())
        {
            return(false);
        }

        WritingText wt = null;

        switch (subject)
        {
        case TutorialSubject.TS_ENTER_IN_ROOM: {
            var targetT = GameObject.Find("playBtn").transform;
            frame.setTarget(targetT.gameObject, true);
            wt = WritingText.create("Нажмите для начала игры.",
                                    new Vector2(targetT.position.x, targetT.position.y - 3.5f),
                                    new Vector2(530.0f, 200.0f), 0.05f);
        } break;

        case TutorialSubject.TS_CHOOSE_COUNT_TICKETS: {
            GameObject ticketsButtonsGO = GameObject.Find("CountTicketsButtons");
            if (ticketsButtonsGO == null)
            {
                Errors.showTest("<< TestError >> Не найдены кнопки radioButton(а)");
                return(false);
            }
            //var targetT = ticketsButtonsGO.transform.GetChild(3);
            frame.setTarget(ticketsButtonsGO, true);
            wt = WritingText.create("Выбирете количество билетов в розыгрыше.\nНажмите для выбора.",
                                    new Vector2(ticketsButtonsGO.transform.position.x, ticketsButtonsGO.transform.position.y - 2.7f),
                                    new Vector2(900.0f, 300.0f));
        } break;

        case TutorialSubject.TS_BUY_TICKETS: {
            var targetT = GameObject.Find("buyTicketsBtn").transform;
            frame.setTarget(targetT.gameObject, true);
            wt = WritingText.create("Нажмите для покупки выбранных билетов.",
                                    new Vector2(targetT.position.x, targetT.position.y + 0.6f),
                                    new Vector2(800.0f, 200.0f), 0.035f);
            frame.hideImmeaiately = true;
        } break;

        case TutorialSubject.TS_TEMPLEATES: {
            if (WindowController.isShowing())
            {
                WindowController.hideCurrentWindow();
            }
            var targetT = GameObject.Find("TemplatesHolder").transform;
            frame.setTarget(targetT.gameObject);
            prevTimeScale = Time.timeScale;
            MAIN.setGameTimeSpeed(0.05f, 1.0f);
            wt = WritingText.create("Цветными точками показаны возможные комбинации выигрышей.\nНиже - ожидаемый выигрыш прямо сейчас.",
                                    new Vector2(targetT.position.x, targetT.position.y - 4.0f),
                                    new Vector2(1300.0f, 500.0f), 0.0035f);
        } break;

        case TutorialSubject.TS_PREVIN: {
            if (WindowController.isShowing())
            {
                WindowController.hideCurrentWindow();
            }
            var aureols = GameObject.FindGameObjectsWithTag("aureols");
            var withOut = GameObject.FindGameObjectsWithTag("missingBall");
            if (aureols.Length == 0)
            {
                Errors.showTest("Ошибка обучения, не найдены предвыиграшные шаблоны");
                return(false);
            }
            GameObject[] targets = new GameObject[aureols.Length + withOut.Length];
            for (int i = 0; i < aureols.Length; i++)
            {
                targets[i] = aureols[i].gameObject.transform.parent.gameObject;
            }
            for (int i = 0; i < withOut.Length; i++)
            {
                targets[i + aureols.Length] = withOut[i].gameObject;
            }
            //for (int i = 0; i < targets.Length; i++)
            frame.setTargets(false, targets);
            wt = WritingText.create("Обратите внимание на мигающий шар - именно его не хватает до заполнения линии и получения выигрыша!",
                                    new Vector2(0.0f, -4.0f),
                                    new Vector2(1050.0f, 300.0f), 0.025f);
            prevTimeScale = Time.timeScale;
            MAIN.setGameTimeSpeed(0.05f, 1.0f);
        } break;

        case TutorialSubject.TS_BUY_BALL: {
            //if (!HUD.getBuyBallButton().isActiveAndEnabled ) return false;
            if (HUD.isPlaingAnim())
            {
                Debug.Log("█ HUD.isPlaingAnim()");
                queueTutorialsSubject.Remove(TutorialSubject.TS_BUY_BALL);
                return(false);
            }
            if (WindowController.isShowing())
            {
                WindowController.hideCurrentWindow();
            }
            var targetT = GameObject.Find("buyBallBtn").transform;
            if (targetT == null)
            {
                queueTutorialsSubject.Remove(TutorialSubject.TS_BUY_BALL);
                return(false);
            }

            frame.setTarget(targetT.gameObject, true);
            wt = WritingText.create("Нажмите,чтобы испытать удачу\nи найти недостающие шары!)",
                                    new Vector2(targetT.position.x - 1.0f, Screen.height * 0.001f - 3.4f),
                                    new Vector2(650.0f, 200.0f), 0.025f);
        } break;

        case TutorialSubject.TS_BUY_GOLD_BTN: {
            if (WindowController.isShowing())
            {
                WindowController.hideCurrentWindow();
            }
            var targetT = GameObject.Find("moneyBtn").transform;
            frame.setTarget(targetT.gameObject, true);

            //frame.setScreenTouch( true );
            wt = WritingText.create("Чтобы раздобыть еще золота - загляните в магазин",
                                    new Vector2(targetT.position.x + 2.0f, targetT.position.y + 0.5f),
                                    new Vector2(1200.0f, 300.0f), 0.05f);
            frame.dontShowTip = true;
            //Debug.Log("█ [in create] tipWasShow == " + frame.tipWasShow);
        } break;

        case TutorialSubject.TS_BUY_GOLD: {
            if (!wasShowed(TutorialSubject.TS_BUY_GOLD_BTN))
            {
                queueTutorialsSubject.Remove(TutorialSubject.TS_BUY_GOLD_BTN);
                queueTutorialsSubject.Remove(TutorialSubject.TS_BUY_GOLD);
                return(false);
            }
            var goldBtns = GameObject.FindGameObjectsWithTag("exchangeGoldBtns");
            if (goldBtns.Length == 0)
            {
                return(false);
            }
            var targetT = goldBtns[0].transform;;
            frame.setTarget(targetT.gameObject, true);
            wt = WritingText.create("Для покупки золота нужны\nкристаллы. Попробуйте",
                                    new Vector2(targetT.position.x, Screen.height * 0.001f + 2.5f),
                                    new Vector2(550.0f, 300.0f), 0.05f);
        } break;

        case TutorialSubject.TS_EXIT: {
            if (ScenesController.currentScene != GameScene.RAFFLE)
            {
                queueTutorialsSubject.Remove(TutorialSubject.TS_EXIT);
                Debug.Log("█ TS_EXIT когда не в розыгрыше");
                for (int i = 0; i < queueTutorialsSubject.Count; i++)
                {
                    Debug.Log("в очереди:[" + i + "]" + queueTutorialsSubject[i]);
                }
                return(show(queueTutorialsSubject));
            }
            var targetT = GameObject.Find("backBtn").transform;
            frame.setTarget(targetT.gameObject, true);
            wt = WritingText.create("Нажмите,чтобы начать\nновый розыгрыш. Удачи вам!",
                                    new Vector2(targetT.position.x - 3.0f, targetT.position.y - 2.8f),
                                    new Vector2(550.0f, 400.0f), 0.04f);
        } break;

        case TutorialSubject.TS_TUTORIAL_REPEAT: {
            var targetT = GameObject.Find("settingsBtn").transform;
            frame.setTarget(targetT.gameObject, true);
            frame.setScreenTouch(true);
            wt = WritingText.create("Обучение завершенно! Повторный курс и\nпрочие возможности можно найти здесь.\nДля продолжения коснитесь екрана...",
                                    new Vector2(targetT.position.x + 4.0f, targetT.position.y - 3.0f),
                                    new Vector2(800.0f, 400.0f), 0.04f);
        } break;
        }
        if (wt != null)
        {
            wt.transform.SetParent(frame.transform);
        }
        //prevActualMask = MAIN.getMain.actualInputLayer;
        //MAIN.getMain.actualInputLayer = LayerMask.GetMask("Tutorial");
        frame.mySubject = subject;
        frame.show(subject);
        ScenesController.updateGetActualInputLayer();
        //------------[ save ]--------------
        showedTutorialSubjectsMask |= (int)subject;
        PlayerPrefs.SetInt("showedTutorialSubjects", showedTutorialSubjectsMask);
        return(true);
    }