Beispiel #1
0
 private void Awake()
 {
     ring = GetComponent <RingBehaviour>();
     SetRings();
     ringEnter  = ring.ringEnter;
     originSize = size;
 }
Beispiel #2
0
 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>());
 }
Beispiel #3
0
 void AcceptDragRing()
 {
     if (RingDragBehaviour.DraggedInstance.GetComponent <RingBehaviour>() != null)
     {
         Ring = RingDragBehaviour.DraggedInstance.GetComponent <RingBehaviour>();
         IntializeRing(true);
     }
 }
Beispiel #4
0
    internal void CheckAddCollidingRingToPin(RingBehaviour ring)
    {
        AddRingToPin(ring);
        CheckIfWon();

        //Allow Input when left pin is filled
        CheckIfAllowInput();
    }
Beispiel #5
0
    public void SpawnRingDataAtPoint(RingData ringData, ReferencePointBehaviour point)
    {
        GameObject    ring          = Instantiate(RingPrefab);
        RingBehaviour ringComponent = ring.GetComponent <RingBehaviour>();

        ringComponent.CurrentRingData = ringData;

        point.GetComponent <RingPointManager>().AcceptSpawnedRing(ringComponent);
    }
Beispiel #6
0
    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);
        }
    }
Beispiel #7
0
    // ----------------------- 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);
    }
Beispiel #8
0
 /// <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;
         }
     }
 }
Beispiel #9
0
 /// <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;
         }
     }
 }
Beispiel #10
0
    /// <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);
    }
Beispiel #11
0
    // 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();
    }
Beispiel #12
0
    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;
    }
Beispiel #13
0
 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;
             }
         }
     }
 }
Beispiel #14
0
 public void AcceptSpawnedRing(RingBehaviour ringToAccept)
 {
     Ring = ringToAccept;
     IntializeRing(false);
     Ring.GetComponent <RingScaleAnimationController>().GrowIn();
 }
Beispiel #15
0
 private void AddRingToPin(RingBehaviour ring)
 {
     UserInputManager.instance.SelectedRing = null;
     ringsOnPin.Add(ring.gameObject.GetComponent <RingBehaviour>());
     ring.gameObject.GetComponent <RingBehaviour>().OnThisPin = this;
 }
Beispiel #16
0
 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;
        }
    }
Beispiel #18
0
 private void AddToPin(RingBehaviour collidingRingBehaviour)
 {
     parentPinBehaviour.CheckAddCollidingRingToPin(collidingRingBehaviour);
     collidingRingBehaviour.SetOnPin(true, this.transform.position);
 }
Beispiel #19
0
 private bool CheckSizeOnTopRing(RingBehaviour collidingRingBehaviour)
 {
     return(parentPinBehaviour.GetRingsOnThisPin()[parentPinBehaviour.GetAmountOfRingsOnThisPin() - 1].RingSize > collidingRingBehaviour.RingSize);
 }
Beispiel #20
0
 private void Awake()
 {
     tr        = GetComponent <Transform>();
     ring      = GetComponent <RingBehaviour>();
     originPos = position = tr.position;
 }
Beispiel #21
0
 private void Awake()
 {
     tr           = GetComponent <Transform>();
     ring         = GetComponent <RingBehaviour>();
     originDegree = degree;
 }