Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (Time.timeScale == 0)
        {
            return;
        }
        if (openUI && Input.GetKeyDown(KeyCode.Escape))
        {
            ToggleUI();
        }
        //animation for starting fire
        if (playingFireStart)
        {
            if (frameIndex < 12)
            {
                if (timeSinceLastFrame > animationSpeed)
                {
                    animRenderer.sprite = animSprites[frameIndex];
                    timeSinceLastFrame  = 0;
                    frameIndex++;
                }
                else
                {
                    timeSinceLastFrame = timeSinceLastFrame + Time.deltaTime;
                }
            }
            else
            {
                fire           = fireColliderID.gameObject.GetComponent <Fire>();
                fire.fireState = 0;
            }
        }


        Fishing fish = GetComponent <Fishing> ();

        //animation for casting rod
        if (playingCastRod)
        {
            if (frameIndex < 35)
            {
                if (timeSinceLastFrame > animationSpeed)
                {
                    animRenderer.sprite = fishingSprites[frameIndex];
                    timeSinceLastFrame  = 0;
                    frameSkip           = frameSkip == 1 ? 2 : 1;
                    frameIndex         += frameSkip;
                }
                else
                {
                    timeSinceLastFrame = timeSinceLastFrame + Time.deltaTime;
                }
            }
            else
            {
                playingCastRod     = false;
                frameIndex         = 35;
                timeSinceLastFrame = 0;
            }
        }
        else if (fish.isFishing && !fish.minigame && !catchingFish)
        {
            if (timeSinceLastFrame > fishIdleSpeed)
            {
                animRenderer.sprite = fishingSprites[frameIndex];
                fishIdleDirection   = frameIndex >= 40 || frameIndex <= 34 ? !fishIdleDirection : fishIdleDirection;
                frameIndex          = fishIdleDirection ? frameIndex - 1 : frameIndex + 1;
                timeSinceLastFrame  = 0;
            }
            else
            {
                timeSinceLastFrame = timeSinceLastFrame + Time.deltaTime;
            }
        }

        if (catchingFish)
        {
            if (frameIndex > 0)
            {
                if (timeSinceLastFrame > animationSpeed)
                {
                    animRenderer.sprite = fishingSprites[frameIndex];
                    timeSinceLastFrame  = 0;
                    frameSkip           = frameSkip == 1 ? 2 : 1;
                    frameIndex         -= frameSkip;
                }
                else
                {
                    timeSinceLastFrame = timeSinceLastFrame + Time.deltaTime;
                }
            }
            else
            {
                fish.hasCaught   = true;
                catchingFish     = false;
                performingAction = false;
            }
        }

        if (fish.minigame && !catchingFish)
        {
            if (timeSinceLastFrame > reelingAnimationSpeed)
            {
                timeSinceLastFrame  = 0;
                frameIndex          = frameIndex >= 30 ? frameIndex - 1 : frameIndex = frameIndex <= 29 ? frameIndex + 1 : frameIndex;
                reelingSprite       = !reelingSprite;
                animRenderer.sprite = fishingSprites[frameIndex];
            }
            else
            {
                timeSinceLastFrame = timeSinceLastFrame + Time.deltaTime;
            }

            timeToCatch -= Time.deltaTime;
            if (timeToCatch < 0.0f)
            {
                frameIndex        = 39;
                fishIdleDirection = true;
                fish.minigame     = false;
                timeToCatch       = 2.0f;
            }
            else if (Input.GetKeyDown(KeyCode.E))
            {
                timeSinceLastFrame = 0;
                frameIndex         = 35;
                catchingFish       = true;
            }
        }

        OnCollisionUpdate();
        //If player is pressing the interaction key
        if (Input.GetKeyDown(KeyCode.E))
        {
            //Fishing minigame interaction
            if (canFish)
            {
                if (fish.isFishing && !fish.minigame)
                {
                    playingCastRod   = false;
                    performingAction = false;
                    fish.stop();
                }
                else if (!fish.isFishing)
                {
                    //setting up animation values to play
                    timeToCatch = 2.0f;
                    if (openUI)
                    {
                        ToggleUI();
                    }
                    fish.fish();
                    if (fish.isFishing)
                    {
                        performingAction   = true;
                        playingCastRod     = true;
                        timeSinceLastFrame = 0;
                        frameIndex         = 0;
                    }
                }
            }


            //Cooking minigame interaction
            if (atFire && !atUIFlag)
            {
                atUIFlag = true;
                fire     = fireColliderID.gameObject.GetComponent <Fire>();
                switch (fire.fireState)
                {
                //if player hasnt begun to start the fire
                case -1:
                    if (!playingFireStart)
                    {
                        frameIndex         = 1;
                        timeSinceLastFrame = 0;
                        playingFireStart   = true;
                        //getting the position that the player should be at
                        Vector3 pos = fire.transform.position;
                        pos.y += 0.30f;
                        pos.x -= 1f;
                        transform.position = pos;
                    }
                    break;

                //if player is starting the fire
                case 0:
                    //choosing the right animation frame
                    if (frameIndex == 13)
                    {
                        animRenderer.sprite = animSprites[frameIndex];
                        frameIndex--;
                    }
                    else
                    {
                        animRenderer.sprite = animSprites[frameIndex];
                        frameIndex++;
                    }
                    buttonPressed = Time.deltaTime;
                    if (buttonPressed < 0.4)
                    {
                        buttonSmash++;
                    }
                    else
                    {
                        buttonSmash--;
                    }
                    //if they have pressed the button fast enough, enough times
                    if (buttonSmash == 10)
                    {
                        fire.startFire();
                        playingFireStart    = false;
                        animRenderer.sprite = animSprites[0];
                        buttonSmash         = 0;
                    }
                    break;

                //if the fire is started
                default:
                    ToggleUI();
                    //ToggleCookingUI();
                    break;
                }
            }

            if (atFarm && !atUIFlag)
            {
                atUIFlag = true;
                if (openUI)
                {
                    if (!farmUIOpen)
                    {
                        ToggleFarmUI();
                    }
                }
                ToggleUI();
                //ToggleFarmUI();
            }

            if (atWaterPurifier && !atUIFlag)
            {
                atUIFlag = true;
                //Debug.Log("Player entered Farm zone and pressed e");
                if (openUI)
                {
                    if (!waterUIOpen)
                    {
                        ToggleWaterUI();
                    }
                }
                ToggleUI();
                //ToggleWaterUI();
            }

            if (atBarrel && !atUIFlag)
            {
                atUIFlag = true;
                //Debug.Log("Player entered Farm zone and pressed e");
                if (openUI)
                {
                    if (!barrelUIOpen)
                    {
                        ToggleBarrelUI();
                    }
                }
                ToggleUI();
            }

            atUIFlag = false;

            if (switchSwimMode)
            {
                isSwimming = !isSwimming;
                Vector3 pos = transform.position;
                if (isSwimming)
                {
                    Camera.main.GetComponent <BoxCollider2D>().enabled = true;
                    underwater.GetComponent <BoxCollider2D> ().enabled = true;
                    animRenderer.sortingLayerName = "Background";
                    animRenderer.sortingOrder     = -2;
                    animRenderer.flipX            = false;
                    animRenderer.sprite           = Resources.Load <Sprite>("Head");
                    torso.GetComponent <SpriteRenderer>().enabled          = true;
                    torso.GetComponent <SpriteRenderer>().sortingLayerName = "Background";
                    torso.GetComponent <SpriteRenderer>().sortingOrder     = -3;
                    legs.GetComponent <SpriteRenderer>().enabled           = true;
                    legs.GetComponent <SpriteRenderer>().sortingLayerName  = "Background";
                    legs.GetComponent <SpriteRenderer>().sortingOrder      = -4;
                    transform.GetComponent <PolygonCollider2D>().offset    = new Vector2(0, 0.8f);
                    transform.position = new Vector3(-23.15025f, -2.443089f, pos.z);
                }
                else
                {
                    Camera.main.GetComponent <BoxCollider2D>().enabled = false;
                    underwater.GetComponent <BoxCollider2D> ().enabled = false;
                    animRenderer.sprite           = standingSprite;
                    animRenderer.sortingLayerName = "Default";
                    animRenderer.sortingOrder     = 0;
                    transform.rotation            = new Quaternion();
                    torso.GetComponent <SpriteRenderer>().enabled       = false;
                    legs.GetComponent <SpriteRenderer>().enabled        = false;
                    transform.GetComponent <PolygonCollider2D>().offset = new Vector2(0, -0.3f);
                    transform.position = new Vector3(-19.81603f, -0.6278321f, pos.z);
                }
            }
        }


        if (Input.GetKeyDown(KeyCode.Q))
        {
            if (openUI)
            {
                if (!waterUIOpen && atWaterPurifier)
                {
                    ToggleWaterUI();
                }
                if (!fireUIOpen && atFire)
                {
                    ToggleCookingUI();
                }
                if (!farmUIOpen && atFarm)
                {
                    ToggleFarmUI();
                }
                if (!barrelUIOpen && atBarrel)
                {
                    ToggleBarrelUI();
                }
            }
            ToggleUI();
        }
    }