Inheritance: MonoBehaviour
Exemple #1
0
    void Respond(string resString)
    {
        ExchangeApiResponse response = JsonUtility.FromJson <ExchangeApiResponse>(resString);

        if (response.res == 0)
        {
            //main.addToMyMoney(response.data.Gold - main.money.getValue());
            if (response == null)
            {
                Debug.Log("response == null");
            }
            if (response.data == null)
            {
                Debug.Log("response.data == null");
            }
            if (main.money == null)
            {
                Debug.Log("main.money == null");
            }
            if (main.raffle == null)
            {
                Debug.Log("main.raffle.flyExchengeMoneyToPocket == null");
            }


            HUD.getHUD.flyExchengeMoneyToPocket = response.data.Gold - main.money.getValue();
            main.addToMyRubins(response.data.Crystal - main.rubins.getValue());
            Flickering.set(main.rubins.transform.parent.gameObject, 1.0f, 1);
        }
        else
        {
            Errors.showError(response.res, GameScene.MAIN_MENU);
        }
    }
    private void OnTriggerStay(Collider other)
    {
        if (other.tag == "Player")
        {
            instructions.SetActive(true);
            Animator anim  = Generator1.GetComponentInChildren <Animator>();
            Animator anim1 = Generator2.GetComponentInChildren <Animator>();
            Lock = Door.GetComponent <DoorController>();
            if (Input.GetKeyDown(KeyCode.E))
            {
                anim.SetTrigger("OnButton");
                anim1.SetTrigger("OnButton");
                generator1.Play();
                generator2.Play();
                Lock.Locked = false;

                foreach (GameObject objects in lightCeiling)
                {
                    flick = objects.GetComponent <Flickering>();
                    flick.isFlickering = true;
                    flick.stop         = true;
                }
            }
        }
    }
Exemple #3
0
    // Калбэк приходящий непосредственно от самих шаров, при их столкновении с другими шарами, порождает звёзды, а сам шар переводит в состояние "остановлен"
    public void onNewBallStop(Ball newBall)
    {
        main.receivingTray.setBallToStopingBalls(newBall.gameObject);
        Ticket[] tickets = main.ticketHolder.getTickets();
        var      rbB     = newBall.GetComponent <Rigidbody2D>();

        for (int i = 0; (i < main.ticketHolder.transform.childCount && tickets[i] != null); i++)
        {
            TicketCell tC = tickets[i].getCellByNum(newBall.number);
            if (tC)
            {
                GameObject flyBall;
                if (flyingBallsPrefab != null && flyingBallsPrefab.GetComponent <SpriteRenderer>().sprite != null)
                {
                    flyBall = Instantiate(flyingBallsPrefab);
                }
                else
                {
                    flyBall = Instantiate(newBall.gameObject);
                }
                flyBall.transform.parent = flingBalls;
                Flying f = flyBall.AddComponent <Flying>();
                f.destroyOnArrive = false;
                f.slowdown(3.0f, 0.02f, 0.9f); // #V здесь торможение звёзд: 1 - дистанция с которой начинается торможение, 2 - до скорости, 3 - сила торможения(если 1 то нулевая сила, если 0 то мгновеная остановка, если больше одного наоборот ускорение)
                flyBall.transform.position = newBall.transform.position;
                var b = flyBall.GetComponent <Ball>();
                if (b != null)
                {
                    flyBall.name = "flingBall_" + b.number;
                    b.setOrderLayer(9);
                }
                var circleCollider = flyBall.GetComponent <CircleCollider2D>();
                if (circleCollider != null)
                {
                    circleCollider.enabled = false;
                }
                var rb = flyBall.GetComponent <Rigidbody2D>();
                if (rb != null)
                {
                    Destroy(rb);
                }
                var rotating = Rotating.set(flyBall, rbB.angularVelocity);
                rotating.slowdown(0.1f, 0.96f); // #V замедление вращение звёздочек
                f.init(tC.transform.position, 0.02f, newBall.prevVelocity[0] * 0.005f);
                f.subscribe(onBallArrive, tC.gameObject, newBall.gameObject);
                // #V эффекты на звёздочках:
                Flickering.set(flyBall, 0.15f);
                Scaling.set(flyBall, 0.5f, 0.15f);
            }
        }
    }
Exemple #4
0
    public static Flickering set(GameObject target, float period, Color color)
    {
        Flickering flickering = target.GetComponent <Flickering>();

        if (flickering != null)
        {
            flickering.stopFlickering(true);
        }
        else
        {
            flickering = target.AddComponent <Flickering>();
        }
        flickering.periodFlickering = period;
        flickering.flickeringColor  = color;
        return(flickering);
    }
Exemple #5
0
    public void mark(TypeMark typeMark = TypeMark.NONE) // маркировка клетки
    {
        //print("█ #"+m_numValue+", ticket#"+getMyTicket().number+" newTypeMark:" + typeMark + " old:" + markType);
        if (typeMark == markType)
        {
            return;
        }
        if (markType == TypeMark.WIN)
        {
            //print("█ #" + m_numValue + " when WIN!, newState: " + typeMark);
            return;
        }
        else if (markType == TypeMark.WITH_OUT)
        {
            markSR.tag = "ticketBall";
            stopPlayPrewin(true);
        }

        if (!markSR)
        {
            //Instantiate(Sprite);
            GameObject go = new GameObject();
            go.transform.parent = this.transform;
            go.tag                      = "ticketBall";
            go.name                     = go.tag + numValue;
            markSR                      = go.AddComponent <SpriteRenderer>();
            markSR.sprite               = Instantiate(greenBall);
            markSR.transform.position   = Vector3.zero;
            markSR.transform.localScale = transform.localScale;
            markSR.sortingOrder         = orderLayer + 1;
            go.transform.position       = Vector3.zero;
            go.transform.localPosition  = Vector3.zero;
        }
        markSR.enabled = true;
        switch (typeMark)
        {
        case TypeMark.PREWIN: { setOriol(Oriol.PREWIN); } break;

        case TypeMark.WITH_OUT: {
            //print("█ #"+m_numValue+" WITH_OUT, prewState: " + markType);
            startPlayPreWin();
            tag = "missingBall";
        } break;

        case TypeMark.NONE: { } break;

        case TypeMark.PRESENT: { } break;

        case TypeMark.WIN: {
            //print("█ █#" + m_numValue + " WIN, prewState: " + markType + " markSR.name == "+ markSR.name);
            markSR.sprite = markSprite;
            markSR.color  = Color.yellow;
            setOriol(Oriol.NONE);
            if (GetComponent <Scaling>() == null)
            {
                Scaling.set(gameObject, 1.5f, 0.75f, 1);         // # маштабирование каждого шара на виновом состоянии
            }
            if (GetComponent <Flickering>() == null)
            {
                Flickering.set(gameObject, 0.75f, 1);         // #V мигание каждого шара на виновом состоянии
            }
        } break;
        }
        markType = typeMark;
        isMarked = true;
    }
Exemple #6
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);
 }
Exemple #7
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 #8
0
    // ряд операций, при смене на соответсвующий стейт
    public void setState(RaffleState newState)
    {
        //print("[setState] newState: " + newState);
        switch (newState)
        {
        case RaffleState.WAIT: {
            if (main.gameMode != GameMode.SERVER)
            {
                main.changeNameBtnOn("Restart", "Start");
                main.setEnableBtn("Start", true);
                main.setEnableBtn("BuyTicket", true);
                //main.setCaptionBtn("BuyTicket", "Buy Ticket: " + MAIN.ticketCost.ToString());
                //main.setCaptionBtn("BuyBall", "Buy Ball: " + MAIN.ballCost1x.ToString());
            }
            main.setEnableBtn("Restart", true);
            //main.setEnableBtn("BuyBallBtn", false);
        } break;

        case RaffleState.WAIT_SERVER_DATA: {
            main.setEnableBtn("Restart", false);
            main.setEnableBtn("Start", false);
            //main.setEnableBtn("BuyBallBtn", false);
            main.setEnableBtn("BuyTicket", false);
        } break;

        case RaffleState.PROCEED: {
            main.changeNameBtnOn("Start", "Restart");
            main.setEnableBtn("BuyTicket", false);
            //Tutorial.show(TutorialSubject.TS_TEMPLEATES);
        } break;

        case RaffleState.FINISHED: {
            //HUD.setEnableBackButton(true);
            //if (main.handlerServerData.isAvailableNextBall) HUD.showBuyBallBtn();
        } break;

        case RaffleState.ADDITIONAL_BALL: {
            startCheckTime = Time.time;
            DragonHead.openMore();
        } break;

        case RaffleState.FINISH: {
            //Tutorial.show(TutorialSubject.TS_BUY_GOLD_BTN);
            getDrum().state = Drum.State.STOPING;
            HUD.setEnableBackButton(true);
            if (main.handlerServerData.isAvailableNextBall)
            {
                HUD.showBuyBallBtn();
                var flickering = Flickering.set(HUD.getBuyBallButton().gameObject, 1.5f);         // #V мигание кнопки докупки шаров
                flickering.setFlickeringUntilPress();
            }
            else
            {
                var flickering = Flickering.set(HUD.getBackButton().gameObject, 1.5f);         // #V мигание кнопки выхода
                flickering.setFlickeringUntilPress();
                DragonHead.openFull();
                main.receivingTray.setGravityForBalls(10);
                TicketsHolder.startHideTickets();
            }
            Utils.screenShot("OnFinishRaffle.png");         // только в режиме тестировки
        }
        break;
        }
        raffleState = newState;
    }
Exemple #9
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);
        }
    }