Beispiel #1
0
    void OnMouseUp()
    {
        if (!isDragging)
        {
            return;
        }

        StopDrag();

        PlaceValueCtrl ones = container.controller.screen.GetComponent <MyScreen>().onesColumn;
        PlaceValueCtrl tens = container.controller.screen.GetComponent <MyScreen>().tensColumn;

        // update place value column over states
        ones.UpdateDragOver(false, (numOnes == 0 ? numTens * 10 : numOnes));
        tens.UpdateDragOver(false, numTens);

        // check for bounding box intersections between group and place value columns
        bool onesPlacement = this.GetComponent <SpriteRenderer>().bounds.Intersects(ones.bounds) && (ones.numCreatures + numOnes + numTens * 10) <= ones.creatureMax &&
                             (!isMultipleOfTen || ones.allowDragConvert);
        bool tensPlacement = this.GetComponent <SpriteRenderer>().bounds.Intersects(tens.bounds) && (tens.numCreatures + numTens) <= tens.creatureMax && !onesPlacement;

        if ((onesPlacement || tensPlacement) && !isMultipleOfTen && isGreaterThanNine)
        {
            //NOTE: this probably doesn't happen any more, should confirm
            //Genie.instance.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.eitherColumn");
            Genie.I.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.eitherColumn"));
            ones.ForceDragOverFalse(value);
            RemoveFromContainerDistributeToPlaceValue();
        }
        else if (onesPlacement && !tensPlacement && isLessThanTen)
        {
            //Genie.instance.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.onesColumn");
            Genie.I.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.onesColumn"));
            // if on the correct place-value column, snap to place-value column (remove from queue)
            // try to place in ones column
            ones.ForceDragOverFalse(value);
            RemoveFromContainerAddToPlaceValue(ones);
        }
        else if (tensPlacement && !onesPlacement && isMultipleOfTen)
        {
            //Genie.instance.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.tensColumn");
            Genie.I.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.tensColumn"));
            // try to place in tens column
            tens.ForceDragOverFalse(value);
            RemoveFromContainerAddToPlaceValue(tens);
        }
        else if (tensPlacement && !onesPlacement && !isMultipleOfTen)
        {
            //Genie.instance.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.tensColumn");
            Genie.I.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.tensColumn"));
            // highlight tens column as incorrect placement (reminder)
            tens.ShowIncorrectFeedback();
            SoundManager.instance.PlayOneShot(SoundManager.instance.chickenSnapBack);
            // try to place in ones column
            ones.ForceDragOverFalse(value);
            RemoveFromContainerAddToPlaceValue(ones, true);
        }
        else if (onesPlacement && isMultipleOfTen && ones.numCreatures < 10 && ones.allowDragConvert)
        {
            //Genie.instance.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.onesColumn");
            Genie.I.LogEvent(OE_INTERACT.Create(OE_INTERACT.Type.DROP, "gameplay.onesColumn"));
            EnlearnInstance.I.LogActions(EnlearnInstance.Action.AddNestToOnes);
            // place a 10s in 1s column
            ones.ForceDragOverFalse(value);

            CreatureCtrl[] children = this.GetComponentsInChildren <CreatureCtrl>();
            bool           bIsBrown = children[0].color == CreatureCtrl.COLOR_BROWN;

            SoundManager.instance.PlayOneShot(SoundManager.instance.chickenConvertToOnes);
            ones.Add(10, bIsBrown);
            // add explosion effects
            container.controller.screen.Poof();
            Cleanup();
        }
        else
        {
            if (onesPlacement)
            {
                // update place value column over states
                ones.ForceDragOverFalse(value);
                ones.GetComponent <Animator>().SetTrigger("correct");
            }
            if (tensPlacement)
            {
                tens.ForceDragOverFalse(value);
                tens.GetComponent <Animator>().SetTrigger("correct");
            }

            // else, if we're overlapping with both or neither
            // snap back to QueueContainer
            //SnapBack();
            CreatureCtrl[] children = this.GetComponentsInChildren <CreatureCtrl>();
            children[0].Drop();
            Cleanup();
        }
    }