Beispiel #1
0
    private void Awake()
    {
        player     = GameObject.FindGameObjectWithTag("Player");
        head       = GameObject.FindGameObjectWithTag("DragonHead");
        agent      = GetComponent <NavMeshAgent>();
        animator   = GetComponent <Animator>();
        dragonHead = head.GetComponent <DragonHead>();
        blood      = GameObject.FindGameObjectWithTag("DragonParticles").GetComponent <ParticleSystem>();

        var audio = GetComponents <AudioSource>();

        stepsAudioSource     = audio[0];
        breathingAudioSource = audio[1];
        attackAudioSource    = audio[2];
    }
Beispiel #2
0
    // перезапус розыгрыша
    public void reStart()
    {
        var ticketHolder  = main.ticketHolder;
        var gameMode      = main.gameMode;
        var receivingTray = main.receivingTray;

        startCheckTime = -1.0f;
        DragonHead.close(true);

        ticketHolder.removeAllTickets();
        receivingTray.removeAllBalls();
        receivingTray.resetBalls();
        //main.templatesHolder.expectedWin.setValue(0);

        getDrum().state = Drum.State.START;
        // устарелая логика для одиночной игры(которая уже никогда не используется), и после для мультиплеерной
        if ((gameMode == GameMode.JSON_FILE || gameMode == GameMode.JSON_FILE_IN_ANDROID || gameMode == GameMode.CLIENT_GENERATE))
        {
            main.jsonHandler.getNextRuffle();
            print("█ Warnign! GameMode == " + gameMode);
            setState(RaffleState.WAIT);
        }
        else if (gameMode == GameMode.SERVER)
        {
            PlayEvent.OnPlay();
            main.handlerServerData.startNewRaffle();
            if (main.templatesHolder != null && main.templatesHolder.expectedWin != null)
            {
                if (main.templatesHolder.expectedWin.getValue() != 0)
                {
                    main.templatesHolder.expectedWin.setValue(0);
                }
            }
            setState(RaffleState.WAIT_SERVER_DATA);
        }
        else
        {
            print("Error! [reStart] unknown GameMode:" + gameMode);
        }
    }
Beispiel #3
0
    int fixedPause = 0; // фиксированя пауза, перед открытием пасти ( забыл зачем нужен этот костыль )
    // ряд процессов описаные внутри
    void FixedUpdate()
    {
        if (tag != "ReceivingTrayBall")
        {
            return;                             // Вся логика ниже описанна только для шаров из лотка
        }
        if (DragonHead.isFullOpen())            // если пасть дракона открылась полностью и нужно высыпать шары
        {
            if (fixedPause++ > 10)
            {
                fixedPause = 0;
            }
            else
            {
                return;                                         // пауза...
            }
            float py = transform.localPosition.y;
            if (py >= 2.0f && py <= 3.0f)                       // глядя на позиции определяем местонахождения шара ( в нижней части лотка или верхней ) и толкание их в соответственном направлении
            {
                m_rigibody.velocity = new Vector3(-5.0f, 0.0f); // влево
            }
            else if (py <= -3.0f && py >= -3.8)
            {
                m_rigibody.velocity = new Vector3(5.0f, 0.0f);  // вправо
            }
            else if (py < -5.0f)
            {
                Destroy(gameObject);                    // если наш шар ниже экрана можем удалять
            }
            return;
        }
        else
        if (aligned)
        {
            return;            // окончательный возможный стейт, после которого ничего не должно происходить
        }
        if (m_rigibody == null)
        {
            return;
        }
        // фиксация скорости шара для корректной постройки траектории вылетающих звёзд
        if (lastFixedVelocityTime + timeDelayForPrevVelocity < Time.time)
        {
            for (int i = 1; i < lenHistorySpeed; i++)
            {
                prevVelocity[i] = prevVelocity[i - 1];
            }
            prevVelocity[0]       = m_rigibody.velocity;
            lastFixedVelocityTime = Time.time;
        }
        // дополнительные действия в зависимости от стейта, оказались куда менее чем ожидалось...
        switch (state)
        {
        case BallState.ROLL: break;

        case BallState.STOP: break;

        case BallState.ALIGNING: {      // крутим шар, ставим ровно
            float rZ = transform.localRotation.z;
            if (Mathf.Abs(rZ) > speedAlignRotation * 0.02f)
            {
                transform.Rotate(new Vector3(0.0f, 0.0f, (rZ > 0) ? -speedAlignRotation : speedAlignRotation));
            }
            else
            {
                //GetComponent<SpriteRenderer>().color = Color.yellow;
                setState(BallState.STOP);
                aligned = true;
            }
        } break;

        case BallState.FLY_TO: { } break;
        }
    }
Beispiel #4
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;
    }