Exemple #1
0
 public int ConfirmPurchase(string productId)
 {
     //Debug.Log("█ [ConfirmPurchase]" + productId);
     if (productId != null)
     {
         var product = _storeController.products.WithID(productId);
         if (product != null)
         {
             if (_storeController.products.WithID(productId).hasReceipt)
             {
                 _storeController.ConfirmPendingPurchase(_storeController.products.WithID(productId));
                 SoundsSystem.play(Sound.S_RUBINS_BUY);
                 return(0);
             }
             printLog("ConfirmPurchase: Hasn't Receipt"); // ошибка покупки, нету ордера / заказа. Неправильно выбран продукт
             Errors.showError(Errors.TypeError.EP_ON_FAILED_CONFIRM_PURCHASE);
             return(-1);
         }
         printLog("ConfirmPurchase: Hasn't product: " + productId); // ошибка покупки, нет товара
         Errors.showError(Errors.TypeError.EP_ON_FAILED_CONFIRM_PURCHASE);
         return(-1);
     }
     printLog("ConfirmPurchase: product is empty"); // ошибка покупки продукт пустой.
     Errors.showError(Errors.TypeError.EP_ON_FAILED_CONFIRM_PURCHASE);
     return(-1);
 }
Exemple #2
0
 static SimpleWaveEffect ballsWave;   // переменная которая хранит в себе эту волну
 static void onAureolsHide(BaseEffect effect)
 {
     GameObject[] tBalls = GameObject.FindGameObjectsWithTag("ticketBall");
     ballsWave = Effects.addSimpleWave(new Vector2(0.0f, 0.0f), tBalls, onWaveGameObject, 3f, 8.0f); // V# запуск волны
     ballsWave.subscribeOnEffectDone(onWaveDone);
     SoundsSystem.play(Sound.S_DISAPEAR);
 }
Exemple #3
0
    void Start()
    {
        ///////////////////  test  //////////////////////
        //Errors.onServerError(Api.ServerErrors.E_VERSION_ERROR);
        //return;
        /////////////////////////////////////////////////
        line1 = transform.FindChild("L1").GetComponent <SpriteRenderer>();
        line2 = transform.FindChild("L2").GetComponent <SpriteRenderer>();
        morda = transform.FindChild("morda").GetComponent <SpriteRenderer>();
        var flying1 = line1.gameObject.AddComponent <Flying>();
        var flying2 = line2.gameObject.AddComponent <Flying>();

        flyingM = morda.gameObject.AddComponent <Flying>();
        flying1.init(new Vector2(0.0f, flying1.transform.position.y), 0.05f);
        flying2.init(new Vector2(0.0f, flying2.transform.position.y), 0.05f);

        flying1.destroyOnArrive = false;
        flying2.destroyOnArrive = false;
        flyingM.destroyOnArrive = false;
        label       = transform.FindChild("label").GetComponent <SpriteRenderer>();
        morda.color = new Color(1.0f, 1.0f, 1.0f, 0.0f);
        label.color = new Color(1.0f, 1.0f, 1.0f, 0.0f);
        startTime   = Time.time;
        s           = 0.5f - startFrom;
        SoundsSystem.play(Sound.S_LOGO);
    }
Exemple #4
0
    public void playAnimNeedMore(VisualValuesType typeT)
    {
        PushDownButton target  = null;
        DigitsLabel    targetD = null;
        MAIN           main    = MAIN.getMain;

        switch (typeT)
        {
        case VisualValuesType.VVT_MONEY: { target = moneyBtn; targetD = main.money; } break;

        case VisualValuesType.VVT_RUBINS: { target = rubinsBtn; targetD = main.rubins; } break;

        case VisualValuesType.VVT_XP: { target = expBtn; /* EXP! */ } break;

        default: { if (MAIN.IS_TEST)
                   {
                       Errors.show("Неизвестный тип отображаемых значений HUD-a:" + typeT);
                   }
        } return;
        }
        SoundsSystem.play(Sound.S_NEED_MORE_FUNDS);
        if (target.GetComponent <Scaling>() != null)
        {
            return;
        }
        Utils.increaseOrder(target.transform, changeOrderValueForNeedMoreButton);
        var scalingAnim = Scaling.set(target.gameObject, 1.3f, 1.5f, 1);

        scalingAnim.subscribeOnScalingFinish(onNeedMoreScalingAnim);
        ChangeColor.set(targetD.transform, new Color(1.0f, 0.0f, 0.0f, 1.0f), 0.25f, true, 6);
        _isPlaingAnim = true;
    }
Exemple #5
0
    // Событие по прибитию монетки к конечной цели (подпись в функции выше). Издаётся звук, удаляется монетка
    // ███ !!! необходима оптимизация, создания пула монет, в котором они не будут удалятся, а прятатся и вторично использоваться, нежели каждый раз удаляться и создаваться...
    void onCoinArrive(GameObject coinGO)
    {
        Coin coin = coinGO.GetComponent <Coin>();

        if (coin != null && dlTo != null)
        {
            dlTo.addValue(coin.value);
            SoundsSystem.play(Sound.S_COIN, dlTo.transform.position);
        }
    }
Exemple #6
0
    public static WarningWindow showWarningWindow()
    {
        var        warningWindowPrefab   = RESOURCES.getPrefab("WarningBuyWindow");
        GameObject warningWindowCanvasGO = GameObject.Instantiate(warningWindowPrefab) as GameObject;

        warningWindowCanvasGO.name = "WarningWindow";
        SoundsSystem.play(Sound.S_ERROR);
        warningWindow = warningWindowCanvasGO.transform.FindChild("WarningWindow").GetComponent <WarningWindow>();
        ScenesController.updateGetActualInputLayer();
        return(warningWindow);
    }
Exemple #7
0
 public void setPreWins(JsonHandler.PreWin[] preWins) // отмечание превина
 {
     if (preWins != null)
     {
         for (int i = 0; i < preWins.Length; i++)
         {
             markCells(main.templatesHolder.getTicketPositionsByCategoryID(preWins[i].C, preWins[i].T), TicketCell.TypeMark.PREWIN, preWins[i].P);
         }
         SoundsSystem.play(Sound.S_PRE_WIN);
     }
 }
Exemple #8
0
 void selectBtn(BaseController btn)
 {
     //print(111);
     SoundsSystem.play(Sound.S_RADIO_BUTTON);
     if (selectedSprite != null)
     {
         btn.GetComponent <SpriteRenderer>().sprite = selectedSprite;
     }
     unselect();
     //selectedButtonNum = int.Parse( btn.name );
     selectedButton = btn;
     sendEvents(btn);
 }
Exemple #9
0
    // Событие нажатия мыши
    public override bool onMouseDown()
    {
        bool onConroller = base.onMouseDown();

        if (onConroller)
        {
            value = !value;
            SoundsSystem.play(Sound.S_CHECK_BUTTON);
            //for (int i = 0; i < callBacks.Count; i++)
            //    callBacks[i](this, TypeEvent.ON_MOUSE_DOWN);
        }
        return(onConroller);
    }
Exemple #10
0
    public static ErrorWindow showError(string text, TypeError typeError_, params string[] btnText)
    {
        //Debug.Log("Error! \"" + text + "\", from game scene:" + typeError_.ToString() + Application.stackTraceLogType);
        //Application.RegisterLogCallback(HandleLog);
        //Application.logMessageReceived
        //var resourses = RESOURCES.getResources;
        var        errorWindowPrefab   = RESOURCES.getPrefab("ErrorWindow");
        GameObject errorWindowCanvasGO = GameObject.Instantiate(errorWindowPrefab) as GameObject;

        errorWindowCanvasGO.name = "ErrorWindowCanvas";
        errorWindow = errorWindowCanvasGO.transform.FindChild("ErrorWindow").GetComponent <ErrorWindow>();
        errorWindow.init(text, typeError_, btnText);
        Utils.screenShot("OnError.png"); // только в режиме тестировки
        SoundsSystem.play(Sound.S_ERROR);
        return(errorWindow);
    }
Exemple #11
0
    // При прохождении волны по текущему билету, начинает проигрывать анимацию и маштабирование
    static void onWaveTicket(GameObject waveGO)
    {
        Animator anim = waveGO.GetComponent <Animator>();

        if (anim != null)
        {
            anim.enabled = true;
            SoundsSystem.play(Sound.S_TICKET_TURN, waveGO.transform.position);
        }

        var s = Scaling.set(waveGO, 0.85f, 0.8f, 1);

        s.setWithOutReturedAnim();

        for (int i = 0; i < waveGO.transform.childCount; i++)
        {
            waveGO.transform.GetChild(i).gameObject.SetActive(false);
            //var cs = Scaling.set(waveGO.transform.GetChild(i).gameObject, new Vector3(0.0f, 1.0f, 1.0f), 0.5f, 1);
            //cs.setWithOutReturedAnim();
        }
    }
Exemple #12
0
 int countCllisionWithBalls = 0; // количество столкновений об другой шар или же об челюсть дракона
 void OnCollisionEnter2D(Collision2D collision)
 {
     if (tag != "ReceivingTrayBall")
     {
         return;
     }
     //print("[OnCollisionEnter] #ball:"+number);
     foreach (ContactPoint2D contact in collision.contacts)
     {
         //Debug.DrawRay(contact.point, contact.normal, Color.white);
         Ball ball = contact.collider.gameObject.GetComponent <Ball>();
         if (ball != null || contact.collider.gameObject.name == "DecorHead")
         {
             //prevVelocity[0] = GetComponent<Rigidbody2D>().velocity;
             if (countCllisionWithBalls++ == 0)  // если удар этого шара с другим шаром впервые!
             {
                 if (callBack != null)
                 {
                     callBack(this);
                 }
             }
             else
             {
                 prevVelocity[0] = GetComponent <Rigidbody2D>().velocity * 0.4f; // умышленное уменьшение скорости в истории, для уменьшение звучания вторичных ударов шаров между собой
             }
             var ba = SoundsSystem.play(Sound.S_BALL_KICK, transform.position);
             if (ba != null)
             {
                 var aS = ba.GetComponent <AudioSource>();
                 aS.pitch  = 0.5f + main.receivingTray.getCountBallsInTray() * 0.03f;
                 aS.volume = prevVelocity[0].magnitude / 10.0f;//getVolumeByState();
             }
             //print("Velocity Ball #" + number + " ==" + prevVelocity[0] + " magnitude:"+ prevVelocity[0].magnitude+ " VOLUME:"+ aS.volume);
             setState(BallState.ALIGNING);
             aligned = false;
         }
     }
     //audio.Play();
 }
Exemple #13
0
    // █ Необходимые операции при покидании модуля ( возможно стоило бы использовать эвентовую систему и ловить события в тех модулях где нужно выполнить соответственные действия для них, на месте... Но уж так.. собрано всё здесь
    static void onLeaveCurrentScene()
    {
        MAIN main = MAIN.getMain;

        main.message.Clear();
        var _this = ScenesController.getScenesController;

        switch (currentScene)
        {
        case GameScene.UNDEF: return;

        case GameScene.START_LOGO: return;     // hide LOGO;

        case GameScene.AUTORIZATION: {
            _this._hideModule(_this.autorization);
            SoundsSystem.getSoundSystem.init();
            if (SoundsSystem.musikOn)
            {
                SoundsSystem.play(Sound.S_MUSICK);
            }
            //main.message.Clear();
        }
        break;

        case GameScene.MAIN_MENU: _this._hideModule(_this.mainMenu); break;

        case GameScene.BUY_TICKETS: { _this._hideModule(_this.buyTickets); }
        break;

        case GameScene.RAFFLE: {
            _this._hideModule(_this.raffle);
            HUD.showTop();
            HUD.hideBuyBallBtn();
            HUD.showBuyRubins();
        } break;
        }
    }
Exemple #14
0
 public override bool onMouseDown()
 {
     SoundsSystem.play(Sound.S_BUTTON, transform.position);
     return(base.onMouseDown());
 }
Exemple #15
0
 public override bool onClick()
 {
     SoundsSystem.play(Sound.S_CHECK_BUTTON);
     return(true);
 }
Exemple #16
0
    // Вызывается когда звёздочка прилетает на билет. Запускается логика отмечания этого шара, проверка на наличие вина или превина, и их отмечание
    void onBallArrive(GameObject flingGO, GameObject ticketCell)
    {
        var f = flingGO.GetComponent <Flying>();

        if (f == null)
        {
            return;
        }
        GameObject fromGO = f.getStartFlyFromGameObject();

        if (ticketCell == null)
        {
            return;
        }
        Ball ball = fromGO.GetComponent <Ball>();

        if (ball == null)
        {
            print("Error! ball == null, fromGO.name:" + fromGO.name);
        }
        var tC = ticketCell.GetComponent <TicketCell>();
        var t  = tC.getMyTicket();

        tC.mark(TicketCell.TypeMark.PRESENT);
        float transformTime = 1.0f; // #V общее значение времени для затухания звезды и появления шара(используется чуть ниже)

        Flickering.stop(flingGO, true);
        var fade = Effects.addFade(flingGO, transformTime); // #V исчезновение звезды

        fade.subscribeOnEffectDone(onFadeStar);             // для удаления звезды, после её исчезновения
        SoundsSystem.play(Sound.S_STAR_TRANSFORM, ticketCell.transform.position);
        var tb = ticketCell.transform.FindChild("ticketBall");

        if (tb != null)
        {
            Effects.addFade(tb.gameObject, transformTime, false);             // #V появление шара
        }
        if (main.gameMode != GameMode.SERVER)
        {
            // (по факту не используется)
            bool isHaveLine = t.checkOnWin(tC);
            if (isHaveLine)
            {
                t.setPreWinsTest();             //main.updateWinMoney();
            }
        }
        else
        {
            // проверка на наличие превинов и винов, и соответственном маркеровании клеток
            if (ball.jsonBallInfo.T == null)
            {
                return;
            }
            int myIndex = getMyIndex(t, ball);
            if (myIndex == -1)
            {
                return;
            }
            JsonHandler.WinTickets tPWin = ball.jsonBallInfo.T[myIndex];
            var ticket = main.ticketHolder.getTicket(tPWin.N);
            if (tPWin.P != null)
            {
                ticket.setPreWins(tPWin.P);
                Tutorial.show(TutorialSubject.TS_PREVIN);
            }
            if (tPWin.W != null && tPWin.W.Length > 0)
            {
                ticket.setWins(tPWin.W);
            }
            main.templatesHolder.updateExpectedWinByNewPrewinsAndWins(tPWin.P, tPWin.W);
        }
    }
Exemple #17
0
 public override bool onMouseDown()
 {
     //AudioSource.PlayClipAtPoint(MAIN.getMain.getResources().buttonPushSound, transform.position);
     SoundsSystem.play(Sound.S_BUTTON);
     return(base.onMouseDown());
 }
Exemple #18
0
    }                             // открыта ли полностью челюсть?

    public static void openMore() // ███ приоткрыть челюсть сильнее ( с каждым докупленным дополнительным шаром, позиции приоткрывания равномерно разбиваются от максимально доступного количества шаров, указанных в MAIN ) потому менняя их количество на сервере нужно всегда менять их и там
    {
        dragonHead.jaw.setNextState();
        Flickering.set(dragonHead.eye.gameObject, 0.35f, 1); // V# мигание глаза при докупке шара
        SoundsSystem.play(Sound.S_DRAGON, dragonHead.transform.position);
    }
Exemple #19
0
 public static void openFull() // открыть челюсть полностью ( шары начнут сыпаться )
 {
     dragonHead.jaw.setLastState();
     Flickering.set(dragonHead.eye.gameObject, 0.5f, 11); // V# мигание глаза при выплёвывании шаров
     SoundsSystem.play(Sound.S_DRAGON_FULL, dragonHead.transform.position);
 }