Example #1
0
    private void RollIfGameBreaks()
    {
        int randomNum = Random.Range(0, 10000);

        switch (m_workType)
        {
        case SlaveWorkType.Work:
        {
            if (randomNum < 25)
            {
                m_workType = SlaveWorkType.Bug;
            }
            else if (randomNum < 5)
            {
                m_workType = SlaveWorkType.Error;
            }
            break;
        }

        case SlaveWorkType.Bug:
        {
            if (randomNum < 15)
            {
                m_workType = SlaveWorkType.Error;
            }
            break;
        }

        default:
            break;
        }
    }
Example #2
0
    private void HandlePlayerTrigger()
    {
        switch (m_workType)
        {
        case SlaveWorkType.Start:
            //get position from world space to canvas space
            Vector2 relativeCanvasPos = RectTransformUtility.WorldToScreenPoint(Camera.main, transform.position) - m_gameCanvas.pixelRect.size / 2.0f;
            m_progressBar = Instantiate(m_radialBar);
            //attach it to the canvas
            m_progressBar.transform.SetParent(m_gameCanvas.transform, false);
            //move it to the relative position
            m_progressBar.rectTransform.anchoredPosition = relativeCanvasPos;
            m_progressScript           = m_progressBar.GetComponent <ProgressBar>();
            m_progressScript.m_maximum = WORK_TIME;
            m_progressScript.m_colour  = m_workColour;
            //make slave do work
            m_workType = SlaveWorkType.Work;
            break;

        case SlaveWorkType.Work:
            if (!m_needsCooldown && !m_boostedWork)
            {
                m_workType = SlaveWorkType.Boosted;
                m_progressScript.m_colour = m_boostColour;
                m_boostedWork             = true;
            }
            break;

        case SlaveWorkType.Bug:
            m_workType      = SlaveWorkType.Work;
            m_needsCooldown = true;
            break;

        case SlaveWorkType.Error:
            m_needsCooldown = true;
            m_workType      = SlaveWorkType.Work;
            break;

        default:
            //HandleSlaveWork(NO_ROTATION_SPEED);
            break;
        }
    }
Example #3
0
    // Start is called before the first frame update
    void Start()
    {
        m_boostedWork   = false;
        m_needsCooldown = true;
        m_gameCanvas    = FindObjectOfType <Canvas>();
        m_workType      = SlaveWorkType.Start;

        //this gives 0 or 1 ----min is inclusive and max is exclusive
        m_rotateDirection = Random.Range(0, 2);

        if (m_rotateDirection == 0)
        {
            m_rotateDirection = -1;
        }

        m_rotation = transform.localRotation.eulerAngles.y;

        m_maxLeftRotation  = m_rotation - ROTATION_DIFFERENCE;
        m_maxRightRotation = m_rotation + ROTATION_DIFFERENCE;
    }
Example #4
0
    // Update is called once per frame
    void Update()
    {
        if (!m_boostedWork)
        {
            RollIfGameBreaks();
        }

        if (m_workType != SlaveWorkType.Start && m_workType != SlaveWorkType.Error)
        {
            m_timer += Time.deltaTime;
        }
        else
        {
            m_boostedWork = false;
            m_timer       = 0.0f;
        }
        //handle boosted work
        if (m_boostedWork && m_timer >= BOOST_TIME)
        {
            m_boostedWork   = false;
            m_needsCooldown = true;
            m_workType      = SlaveWorkType.Work;
            m_timer         = 0.0f;
        }
        else if (m_needsCooldown && m_timer >= BOOST_COOLDOWN_TIME)
        {
            m_needsCooldown = false;
            m_timer         = 0.0f;
        }

        switch (m_workType)
        {
        case SlaveWorkType.Work:
            m_progressScript.m_colour = m_workColour;
            HandleSlaveWork(WORK_ROTATION_SPEED);
            break;

        case SlaveWorkType.Bug:
            m_progressScript.m_colour = m_bugColour;
            HandleSlaveWork(BUG_ROTATION_SPEED);
            break;

        case SlaveWorkType.Error:
            m_progressScript.m_colour = m_errorColour;
            HandleSlaveWork(NO_ROTATION_SPEED);
            break;

        case SlaveWorkType.Boosted:
            m_progressScript.m_colour = m_boostColour;
            HandleSlaveWork(BOOST_WORK_ROTATION_SPEED);
            break;

        default:
            HandleSlaveWork(NO_ROTATION_SPEED);
            break;
        }
        transform.localRotation = Quaternion.Euler(new Vector3(0.0f, m_rotation, 0.0f));

        if (m_progressScript != null && m_progressScript.m_current >= m_progressScript.m_maximum)
        {
            Destroy(gameObject);
        }
    }