Пример #1
0
    void OnGroupEval(BlobConnectController.Group grp)
    {
        //check if correct
        float op1, op2, eq;

        grp.GetNumbers(out op1, out op2, out eq);

        bool isCorrect = false;

        switch (grp.connectOp.op)
        {
        case OperatorType.Multiply:
            isCorrect = op1 * op2 == eq;
            break;

        case OperatorType.Divide:
            isCorrect = op1 / op2 == eq;
            break;
        }

        Blob        blobLeft = grp.blobOpLeft, blobRight = grp.blobOpRight, blobEq = grp.blobEq;
        BlobConnect connectOp = grp.connectOp, connectEq = grp.connectEq;

        if (isCorrect)
        {
            //do sparkly thing for blobs
            blobLeft.state  = Blob.State.Correct;
            blobRight.state = Blob.State.Correct;
            blobEq.state    = Blob.State.Correct;

            //clean out op
            connectOp.state = BlobConnect.State.Correct;
            connectEq.state = BlobConnect.State.Correct;

            if (mDragIndicatorRout != null)
            {
                HideDrag();
            }
        }
        else
        {
            //do error thing for blobs
            blobLeft.state  = Blob.State.Error;
            blobRight.state = Blob.State.Error;
            blobEq.state    = Blob.State.Error;

            //clean out op
            connectOp.state = BlobConnect.State.Error;
            connectEq.state = BlobConnect.State.Error;

            //restart drag show
            if (mDragIndicatorRout != null)
            {
                OnSignalDragShow();
            }
        }

        connectControl.ClearGroup(grp);

        if (isCorrect && signalInvokeCorrect)
        {
            signalInvokeCorrect.Invoke();
        }
    }
Пример #2
0
    void OnGroupEval(BlobConnectController.Group grp)
    {
        float op1, op2, eq;

        grp.GetNumbers(out op1, out op2, out eq);

        var op = grp.connectOp.op;

        bool isCorrect = false;

        switch (op)
        {
        case OperatorType.Multiply:
            isCorrect = op1 * op2 == eq;
            break;

        case OperatorType.Divide:
            isCorrect = op1 / op2 == eq;
            break;
        }

        Blob        blobLeft = grp.blobOpLeft, blobRight = grp.blobOpRight, blobEq = grp.blobEq;
        BlobConnect connectOp = grp.connectOp, connectEq = grp.connectEq;

        if (isCorrect)
        {
            //do sparkly thing for blobs
            blobLeft.state  = Blob.State.Correct;
            blobRight.state = Blob.State.Correct;
            blobEq.state    = Blob.State.Correct;

            blobSpawner.RemoveFromActive(blobLeft);
            blobSpawner.RemoveFromActive(blobRight);
            blobSpawner.RemoveFromActive(blobEq);

            //clean out op
            connectOp.state = BlobConnect.State.Correct;
            connectEq.state = BlobConnect.State.Correct;

            //increment and refresh combo
            if (mComboRout == null)
            {
                mComboRout = StartCoroutine(DoComboUpdate());
            }

            comboCurTime = 0f;
            comboCount++;

            //add score
            if (isHintShown)
            {
                curScore += GameData.instance.correctDecayPoints;
            }
            else
            {
                curScore += GameData.instance.correctPoints * comboCount;
            }

            //go to next round
            mIsAnswerCorrectWait = false;
        }
        else
        {
            //do error thing for blobs
            blobLeft.state  = Blob.State.Error;
            blobRight.state = Blob.State.Error;
            blobEq.state    = Blob.State.Error;

            //clean out op
            connectOp.state = BlobConnect.State.Error;
            connectEq.state = BlobConnect.State.Error;

            //decrement combo count
            if (mComboRout != null)
            {
                if (comboCount > 0)
                {
                    comboCount--;
                }

                if (comboCount == 0)
                {
                    StopCoroutine(mComboRout);
                    mComboRout = null;
                }

                comboCurTime = 0f;
            }

            mistakeCount++;
            mMistakeRoundCount++;
        }

        connectControl.ClearGroup(grp);

        groupEvalCallback?.Invoke(new Operation {
            operand1 = (int)op1, operand2 = (int)op2, op = op
        }, (int)eq, isCorrect);
    }