Exemple #1
0
    public void OnSpriteMouseDown(GameObject spriteObj)
    {
        if (!levelActive)
        {
            return;
        }

        heldSpriteTossable = spriteObj.GetComponent <SpriteTossable>();
        grabPosLocal       = heldSpriteTossable.transform.localPosition; // maintain copy of character's position where grabbed, relative to the boat

        if (heldSpriteTossable is CharBase)
        {
            heldChar = spriteObj.GetComponent <CharBase>();
        }
        else
        {
            heldChar = null;
        }

        // Bring character to focus, in front of everything.
        heldSpriteTossable.SortCompLayerChange(Consts.DrawLayers.FrontOfLevel3, null);

        holdWeight.CurrentValue = heldSpriteTossable.Weight;
        uiUpdate.RaiseEvent();

        spriteMouseRespScpt.SetActive(true);
    }
Exemple #2
0
    public void HeldSpriteToss()
    {
        spriteMouseRespScpt.SetActive(false);

        // TODO: Top out the toss speed to something not TOO unreasonable
        //Vector2 tossDir = mouseDelta.normalized;
        float tossSpeed = mouseDelta.magnitude / Time.deltaTime;


        if (heldSpriteTossable is ItemBase)
        {
            RemoveItem(heldSpriteTossable as ItemBase);
            heldSpriteTossable.Toss(mouseDelta * tossSpeed);
        }
        else
        {
            CharBase c = heldSpriteTossable as CharBase;

            // TODO: Character animation still set to Struggling? That's fine for now, but perhaps make something else for when airborne.

            if (c.ItemHeld != null)
            {
                c.ItemHeld.Toss(Utility.AddNoiseDeg(mouseDelta, Consts.TOSS_NOISE_MIN, Consts.TOSS_NOISE_MAX) * tossSpeed);
            }

            c.Toss(mouseDelta * tossSpeed);
        }

        // Change weight in boat
        boat.RemoveLoad(holdWeight.CurrentValue);

        prepTossCalc       = false;
        heldChar           = null;
        heldSpriteTossable = null;

        holdWeight.CurrentValue = 0;
        uiUpdate.RaiseEvent();

        UnPauseLevel();
    }