bool TryDropCard(Collider2D c) { //Only test for the first collider that player is touching CardDropoff dropOff = c.GetComponent <CardDropoff>(); //Also ignore totally if dropoff already has all of its cards (but don't send card away) if (dropOff == null || dropOff != wordCollider || !dropOff.CanTakeCard()) { return(false); } if (holding && buttonFixedPressed) { //Increment drop counter TotalDrops += 1; //Check if correct card //Unclear if card can be dropped if it's still wrong //To prevent backtracking it could fly back to where it came from CardPickup cardPickup = holding.GetComponent <CardPickup>(); if (!dropOff.IsSolution(cardPickup)) { IncorrectDrops += 1; //Send back to where it came from //Play some kind of negative sound AudioSource.PlayClipAtPoint(SoundManager.GetClip("ring_down"), transform.position); cardPickup.GetComponent <BoxCollider2D>().enabled = true; cardPickup.MoveHome(); //Action was completed, no input should have more than one action happen } else { CorrectDrops += 1; //Remove CardPickup monobehaviour //Or set flag to prevent pickup again of card (dropoff may be one way) //Trigger is already disabled dropOff.GiveCard(holding); //Play positive sound AudioSource.PlayClipAtPoint(SoundManager.GetClip("ring_up"), transform.position); //Change color of text textColor = CompletionColor; var textMesh = dropOff.UITextMesh; textMesh.color = CompletionSelectionColor; } holding = null; didActionThisFrame = true; return(true); } else { return(false); } }
void TryLockInTrigger(Collider2D c) { CardDropoff dropOff = c.GetComponent <CardDropoff>(); //Is this not a CardDropoff or does it already have a card that it took? if (dropOff == null) { return; } //Release old dropoff for new one if it is closer, otherwise ignore it else if (wordCollider != null) { if (Vector3.SqrMagnitude(transform.position - c.transform.position) < Vector3.SqrMagnitude(transform.position - wordCollider.transform.position)) { TryReleaseTrigger(wordCollider.GetComponent <Collider2D>()); } else { return; } } wordCollider = dropOff; //Change color of text if it is selectable var textMesh = dropOff.UITextMesh; textColor = textMesh.color; if (dropOff.CanTakeCard()) { textMesh.color = SelectionColor; } else { textMesh.color = CompletionSelectionColor; } }