/////////////////////////////////////////////// // внутрение функции 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); }