예제 #1
0
    public static int updateGetActualInputLayer() // █ обновление слоя маски тачей, по факту имеющихся активных окон
    {
        int res = defaultInputLayer;              //(int)InputLayer.TM_DEFAULT; // окна отсутствует, игровая маска

        if (Errors.isShowing())
        {
            res = 0;                     // █ окна ошибок построены на новой UI системе, где есть своя обработка тачей, потому маска отключается //InputLayer.TM_POP_UP_WINDOW;
        }
        else if (WaitingServerAnsver.isShowing())
        {
            res = 0;                                       // игровой тачь отключен
        }
        else if (Tutorial.isShowing())
        {
            res = LayerMask.GetMask("Tutorial");
            //print("Tutorial!");
        } // показано обущающее сообщение, маска берётся из списка масок заданых в редакторе Unity
        else if (WindowController.getWinController.isWindowShow())
        {
            res = popUpWindowLayer;                                                        //(int)InputLayer.TM_ZERO; // отображается вспвлывающее окно
        }
        getScenesController._actualInputLayer = res;
        //print("█ updateGetActualInputLayer == "+ res);
        return(res);
    }
예제 #2
0
    public bool ApiRequest(string cmd, string payload)
    {
        ulong id = 0;

        if (MAIN.getMain.applicationID != "")
        {
            id = Api.Proto.RequestId(Api.Proto.LowerPartOfRequestId(MAIN.getMain.applicationID), ++_msgId, rand);
            if (id == 0)
            {
                Debug.Log("Error: request id is null");
                return(false);
            }
        }

        var msg = Api.Proto.RequestMessage(cmd, id, payload);

        if (msg != null)
        {
            if (!_sender.HasMessage(msg))
            {
                _sender.Enqueue(msg);
                WaitingServerAnsver.show(cmd);
                return(true);
            }
            Debug.Log("Error: message in queue");
            return(false);
        }
        Debug.Log("Error: message is null");
        return(false);
    }
예제 #3
0
 public void Respond(string payload)
 {
     if (payload == null)
     {
         debugPrint("[Respond] payload == null");
     }
     if (OnRespond == null)
     {
         debugPrint("[Respond] OnRespond == null");
     }
     WaitingServerAnsver.hide();
     OnRespond(this, new RespondEventArgs(payload));
 }
예제 #4
0
    public int prevInputLayer = 0;  // █ предведущий слой/маска тачей запоминается для востановления предведущего слоя после сокрытия фрейма
    // показать фрейм
    public static void show(string requestType = "")
    {
        if (countRequests < 0)
        {
            Errors.showTest("Предупреждение счётчик ожиданий ответов от сервера меньше нуля!");
            countRequests = 0;
        }
        countRequests++; // увеличиваем счётчик запросов от клиента
        if (waitingServerAnsver == null)
        {
            GameObject waitingServerAnsverGO = GameObject.Find("WaitingServerAnsver");
            if (waitingServerAnsverGO == null)
            {
                if (waitingServerAnsverPrefab == null)
                {
                    waitingServerAnsverPrefab = RESOURCES.getPrefab("WaitingServerAnsver");
                }
                waitingServerAnsverGO      = GameObject.Instantiate(waitingServerAnsverPrefab) as GameObject;
                waitingServerAnsverGO.name = "WaitingServerAnsver";
                DontDestroyOnLoad(waitingServerAnsverGO);
            }
            waitingServerAnsver = waitingServerAnsverGO.GetComponent <WaitingServerAnsver>();
            waitingServerAnsver.gameObject.SetActive(false);
        }

        if (callShowTime == 0)
        {
            callShowTime = Time.time;
        }

        /*if (throughTime > 0 && showThroughTime == 0) {
         *  showThroughTime = throughTime;
         *  callShowTime = Time.time;
         *  return;
         * }*/
        waitingServerAnsver.gameObject.SetActive(true);
        // █ изменение слоя

        /*if (MAIN.getMain.actualInputLayer != 0) {
         *  waitingServerAnsver.prevInputLayer = MAIN.getMain.actualInputLayer;
         *  MAIN.getMain.actualInputLayer = 0;
         * }*/
        ScenesController.updateGetActualInputLayer();
        // █ проверка на нарушение последовательсноти запросов
        if (countRequests > 1)
        {
            Errors.showTest("Количество запросов больше 1!(второй запрос:" + requestType + "). сообщите разработчикам. Приложение должно подвиснуть");
        }
    }
예제 #5
0
 public void Error(ErrorType type, string msg)
 {
     WaitingServerAnsver.hide(true);
     this.OnError(this, new ErrorEventArgs(type, msg));
     //Errors.showError(Errors.TypeError.ES_CONNECT_ERROR);
 }
예제 #6
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);
    }