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); }
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(); }