// on double click in type 2 questions split // currently if you double click in the middle it glitches so fix that public void OnPointerClick(PointerEventData eventData) { Coefficient coef = this.transform.Find("Coefficient").gameObject.GetComponent <Coefficient>(); if (eventData.clickCount == 2 && coef != null && (typeOfItem == Draggable.Slot.Value || typeOfItem == Draggable.Slot.Variable)) { if (coef.GetValue() > 1) { StartCoroutine(ShowSplit(coef.GetFractionValue() - 1)); } } }
// if Draggable object dropped onto this. Assuming all items dropped on it are Draggable. public void OnDrop(PointerEventData eventData) { glow.SetActive(false); showColor = false; int size = GetCurrentSize(); if (size < capacity) { GameObject drop; if (!(eventData.pointerDrag.name.EndsWith("(Clone)"))) { // dragging from a restock zone then hopefully RestockZone restock = eventData.pointerDrag.GetComponent <RestockZone>(); if (restock != null) { drop = restock.newObject; } else { drop = eventData.pointerDrag; } } else { drop = eventData.pointerDrag; } Draggable dragged = drop.GetComponent <Draggable>(); if (dragged != null) { dragged.parentToReturnTo = terms.transform; if (typeOfSide == Slot.Positive) { dragged.ShowOnPositiveSide(); Transform coefficient = drop.transform.Find("Coefficient"); if (coefficient != null) { Coefficient coef = coefficient.gameObject.GetComponent <Coefficient>(); if (coef.GetValue() < 0) { coef.NegativeCurrentValue(); } } } else if (typeOfSide == Slot.Negative) { dragged.ShowOnNegativeSide(); Transform coefficient = drop.transform.Find("Coefficient"); if (coefficient != null) { Coefficient coef = coefficient.gameObject.GetComponent <Coefficient>(); if (coef.GetValue() > 0) { coef.NegativeCurrentValue(); } } } } } else { OverCapacity(); } }
// when a term has been dropped on it react accordingly public void TermDroppedOn(bool alreadyDropped = true) { string dragData = "Bracket Coefficient dragged onto Bracket Inside Term " + numDroppedOn.ToString(); dataController.StoreDragData(dragData); if (alreadyDropped) { numDroppedOn++; if (numDroppedOn == numTerms) { // we have successfully expanded the bracket Debug.Log("Expanded"); soundEffects.PlayExpanded(); int i = 0; int numChildren = this.gameObject.transform.Find("TermsInBracket").childCount; while (i < numChildren) { Transform child = this.gameObject.transform.Find("TermsInBracket").GetChild(i); // multiply out coefficients Coefficient coef = child.Find("Coefficient").gameObject.GetComponent <Coefficient>(); Fraction newCoef = coef.GetFractionValue() * this.gameObject.transform.Find("Coefficient").gameObject.GetComponent <Coefficient>().GetFractionValue(); coef.SetValue(newCoef); // reset as draggable // child.gameObject.GetComponent<Draggable>().SetBracketStatus(false); Destroy(child.gameObject.transform.Find("Coefficient").GetComponent <BracketInsideCoefficient>()); i++; } // update arrows Coefficient coeff = this.gameObject.transform.Find("Coefficient").gameObject.GetComponent <Coefficient>(); arrow1.gameObject.SetActive(true); arrow1.sprite = solidArrow; arrow1Text.SetActive(true); arrow1Text.transform.Find("Text").gameObject.GetComponent <Text>().text = coeff.GetValue().ToString() + "x"; arrow2.gameObject.SetActive(true); arrow2.gameObject.GetComponent <Image>().sprite = solidArrow; arrow2Text.SetActive(true); arrow2Text.transform.Find("Text").gameObject.GetComponent <Text>().text = coeff.GetValue().ToString() + "x"; coeff.SetValue(1); expanded = true; } else // first drop { soundEffects.PlayOneDragged(); // show the arrows double coef = this.transform.Find("Coefficient").gameObject.GetComponent <Coefficient>().GetValue(); if (this.transform.Find("TermsInBracket").GetChild(0).Find("Coefficient").gameObject.GetComponent <BracketInsideCoefficient>().droppedOn) { // first item in bracket was dropped on arrow1.gameObject.SetActive(true); arrow1.sprite = solidArrow; arrow1Text.SetActive(true); arrow1Text.transform.Find("Text").gameObject.GetComponent <Text>().text = coef.ToString() + "x"; arrow2.gameObject.SetActive(true); arrow2.gameObject.GetComponent <Image>().sprite = dashedArrow; } else { arrow2.gameObject.SetActive(true); arrow2.sprite = solidArrow; arrow2Text.SetActive(true); arrow2Text.transform.Find("Text").gameObject.GetComponent <Text>().text = coef.ToString() + "x"; arrow1.gameObject.SetActive(true); arrow1.gameObject.GetComponent <Image>().sprite = dashedArrow; } } } }