private void Awake() { ring = GetComponent <RingBehaviour>(); SetRings(); ringEnter = ring.ringEnter; originSize = size; }
internal void RemoveRingFromPin(RingBehaviour ring) { // Let the ring know it has no OnThisPin ring.gameObject.GetComponent <RingBehaviour>().OnThisPin = null; // Remove the ring from the pinlist ringsOnPin.Remove(ring.gameObject.GetComponent <RingBehaviour>()); }
void AcceptDragRing() { if (RingDragBehaviour.DraggedInstance.GetComponent <RingBehaviour>() != null) { Ring = RingDragBehaviour.DraggedInstance.GetComponent <RingBehaviour>(); IntializeRing(true); } }
internal void CheckAddCollidingRingToPin(RingBehaviour ring) { AddRingToPin(ring); CheckIfWon(); //Allow Input when left pin is filled CheckIfAllowInput(); }
public void SpawnRingDataAtPoint(RingData ringData, ReferencePointBehaviour point) { GameObject ring = Instantiate(RingPrefab); RingBehaviour ringComponent = ring.GetComponent <RingBehaviour>(); ringComponent.CurrentRingData = ringData; point.GetComponent <RingPointManager>().AcceptSpawnedRing(ringComponent); }
private void OnTriggerExit2D(Collider2D collision) { RingBehaviour collidingRing = collision.GetComponent <RingBehaviour>(); if (collidingRing.gameObject.transform.position.y > this.transform.position.y && collidingRing.GetIsMoving()) { parentPinBehaviour.RemoveRingFromPin(collidingRing); collidingRing.SetOnPin(false); } }
// ----------------------- SPAWNING IMPLEMENTATION --------------------------------------- // public void SpawnRandomRingAtPoint(ReferencePointBehaviour point) { // Currently nothing calls this but its good to have GameObject ring = Instantiate(RingPrefab); RingBehaviour ringComponent = ring.GetComponent <RingBehaviour>(); ringComponent.CurrentRingData = GenerateNewRingData(); point.GetComponent <RingPointManager>().AcceptSpawnedRing(ringComponent); }
/// <summary> /// Set the parameter (ring) to own layer so it ignores the other rings. /// </summary> /// <param name="ring"></param> /// <param name="ignore"></param> public void SetCollisionHandlingOnRing(RingBehaviour ring, bool ignore) { foreach (RingBehaviour r in Rings) { if (r != ring) { ring.gameObject.layer = 9; } } }
/// <summary> /// Reset the parameter (ring) collision handling to collide with other rings /// </summary> /// <param name="ring"></param> public void ResetRingCollisionHandling(RingBehaviour ring) { foreach (RingBehaviour r in Rings) { if (r != ring) { ring.gameObject.layer = 8; } } }
/// <summary> /// Get rings as list, except the one that called a function /// </summary> /// <param name="ring"></param> /// <returns>List<RingBehaviour> -ring that called the function</returns> public List <RingBehaviour> GetOtherRings(RingBehaviour ring) { List <RingBehaviour> rings = new List <RingBehaviour>(); foreach (RingBehaviour r in Rings) { if (r != ring) { rings.Add(r); } } return(rings); }
// Start is called before the first frame update void Start() { currentScore = 0; currentHealth = 3; ActualizeScore(); ActualizeHealth(); rg_script = GameObject.Find("FloorRing").GetComponent <RingBehaviour>(); a_rb = GetComponent <Rigidbody2D>(); a_AudioSource = GetComponent <AudioSource>(); particleSystem = GetComponent <ParticleSystem>(); particleSystem.Clear(); particleSystem.Pause(); }
private void SnapMovement() { if (!UserInputManager.instance.AllowInput) { return; } if (UserInputManager.instance.SelectedRing != null && UserInputManager.instance.IsAnyInput()) { if (parentPinBehaviour.GetRingsOnThisPin().Contains(UserInputManager.instance.SelectedRing.GetComponent <RingBehaviour>())) // If the pin already contains this ring, cant add it again. { return; } RingBehaviour tempRing = UserInputManager.instance.SelectedRing.GetComponent <RingBehaviour>(); if (parentPinBehaviour.GetAmountOfRingsOnThisPin() == 0) // are we first on this pin? (parent pin) { if (Vector2.Distance(UserInputManager.instance.SelectedRing.transform.position, this.overYPos) < snapRange) { UserInputManager.instance.SelectedRing.transform.position = Vector2.Lerp(UserInputManager.instance.SelectedRing.transform.position, this.overYPos, Time.deltaTime * snapSpeed); isSnapped = true; } } else { if (CheckIfPinHasRings()) // If there are any other rings on this pin { //if yes, check size on the top ring on the pin if (CheckSizeOnTopRing(tempRing)) { //The ring on the pin is bigger, so we can add this smaller one to the pin. if (Vector2.Distance(UserInputManager.instance.SelectedRing.transform.position, this.overYPos) < snapRange) { UserInputManager.instance.SelectedRing.transform.position = Vector2.Lerp(UserInputManager.instance.SelectedRing.transform.position, this.overYPos, Time.deltaTime * snapSpeed); isSnapped = true; } }//Else, would be some implementation if the ring that we are dropping is bigger than the one on the pin. } } } isSnapped = false; }
public void OnDrop(PointerEventData eventData) { if (!Ring) { // If reference point dont hold a ring, accept it straight away. AcceptDragRing(); } else { //Debug.Log("SOMETHING INSIDE"); if (Ring) { RingBehaviour otherRing = RingDragBehaviour.DraggedInstance.GetComponent <RingBehaviour>(); if (Ring.CombineRings(otherRing.CurrentRingData)) { // The dragged ring will be destroyed with its data transferred to the residing ring in ringpointmanager. //AcceptDragRing(); otherRing.GetComponent <RingDragBehaviour>().OnDragOverAndCombine(); RingDropEvent(); if (stateChange != null) { stateChange(); } // Check if ring has 3 of the same colors using LINQ expression if (!(Ring.CurrentRingData.ringColors.Any(o => o != Ring.CurrentRingData.ringColors[0])) && Ring.CurrentRingData.ringColors[0] != ColorIndex.NONE) { onTierMatchUp(Ring.CurrentRingData.ringColors[0]); } else if (stateChangeDragDrop != null) { stateChangeDragDrop(true); } } else { // CASE WHEN TIERS DONT MATCH UP return; } } } }
public void AcceptSpawnedRing(RingBehaviour ringToAccept) { Ring = ringToAccept; IntializeRing(false); Ring.GetComponent <RingScaleAnimationController>().GrowIn(); }
private void AddRingToPin(RingBehaviour ring) { UserInputManager.instance.SelectedRing = null; ringsOnPin.Add(ring.gameObject.GetComponent <RingBehaviour>()); ring.gameObject.GetComponent <RingBehaviour>().OnThisPin = this; }
public int GetRingPositionOnPin(RingBehaviour ring) { return(ringsOnPin.IndexOf(ring)); }
public override void Generate() { PreGenerate(); foreach (Transform child in transform) { child.gameObject.GetComponent <RingBehaviour>().Die(); } float scale = 0.05f; foreach (List <ProcessUnit> data in lsys.Units) { if (data.Count == 0) { break; } float dynamicsSum = 0.0f; foreach (ProcessUnit unit in data) { dynamicsSum += unit.Dynamic; } dynamicsSum = dynamicsSum / data.Count; float speedMul = (0.05f + (2.45f / 128.0f * dynamicsSum)) * 60.0f * 0.2f; float comp = 1.0f / scale; float rotateCompensation = 0.1f / scale; GameObject ring = GameObject.Instantiate(RingProto, transform); ring.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f); ring.transform.Rotate(new Vector3(RandomRange(0.0f, 360.0f), RandomRange(0.0f, 360.0f), RandomRange(0.0f, 360.0f))); RingBehaviour ringBehave = ring.GetComponent <RingBehaviour>(); ringBehave.Rotation = new Vector3(RandomRange(-2.0f, 2.0f) * rotateCompensation * speedMul, RandomRange(-2.0f, 2.0f) * rotateCompensation * speedMul, RandomRange(-2.0f, 2.0f) * rotateCompensation * speedMul); ringBehave.TargetScale = scale; ringBehave.Scale = 0.0f; ringBehave.gen = this; float degsPerSegment = 360.0f / data.Count; float startRotation = 0.0f; List <RingSegment> list = new List <RingSegment>(); RingSegment lastSegment = null; // clump segments // TODO: Join segments foreach (ProcessUnit unit in data) { if (lastSegment == null) { lastSegment = new RingSegment(unit, 0, startRotation); list.Add(lastSegment); } else { if (lastSegment.Unit.Content != unit.Content) { lastSegment = new RingSegment(unit, 0, startRotation); list.Add(lastSegment); } } lastSegment.NumSegments = lastSegment.NumSegments + 1; startRotation += degsPerSegment; } // fehler tritt bei doppelten auf startRotation = 0.0f; foreach (RingSegment arc in list) { startRotation += (arc.NumSegments * degsPerSegment); if (arc.Unit.Content != '0') { float width = (0.2f + (2.0f / 128.0f * arc.Unit.Dynamic)) * 0.1f; GameObject obj = meshgen.GetArcObject(((arc.NumSegments * degsPerSegment)) * Mathf.Deg2Rad, 0.4f * comp * 0.1f, width * comp, ring.transform, lookup[arc.Unit.Content]); obj.transform.Rotate(new Vector3(0.0f, 0.0f, startRotation), Space.Self); } } scale += 0.1f; } }
private void AddToPin(RingBehaviour collidingRingBehaviour) { parentPinBehaviour.CheckAddCollidingRingToPin(collidingRingBehaviour); collidingRingBehaviour.SetOnPin(true, this.transform.position); }
private bool CheckSizeOnTopRing(RingBehaviour collidingRingBehaviour) { return(parentPinBehaviour.GetRingsOnThisPin()[parentPinBehaviour.GetAmountOfRingsOnThisPin() - 1].RingSize > collidingRingBehaviour.RingSize); }
private void Awake() { tr = GetComponent <Transform>(); ring = GetComponent <RingBehaviour>(); originPos = position = tr.position; }
private void Awake() { tr = GetComponent <Transform>(); ring = GetComponent <RingBehaviour>(); originDegree = degree; }