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