Beispiel #1
0
    public void ReInitializeDots()
    {
        //final sweep of children
        while (transform.childCount > 0)
        {
#if UNITY_EDITOR
            GameObject.DestroyImmediate(transform.GetChild(transform.childCount - 1).gameObject);
#else
            GameObject.Destroy(transform.GetChild(transform.childCount - 1).gameObject);
#endif
        }
        m_Lines.Clear();
        m_ActivatedDotStack.Clear();
        //initialize all dots.
        m_Dots = new List <NorseDot>();// new NorseDot[dotsWidth, dotsHeight];
        for (int y = 0; y < dotsHeight; y++)
        {
            for (int x = 0; x < dotsWidth; x++)
            {
                NorseDot iter = Instantiate(PrefabManager.Instance.m_Data.m_NorseDot.gameObject, transform).GetComponent <NorseDot>();
                //iter.m_SprDot.sprite = UIManager.Instance.m_Data.m_InactiveDot; //should be unnecessary, this should be set in the prefab
                iter.name = "dot (" + x.ToString() + " ," + y.ToString() + ")";
                iter.transform.localPosition = new Vector3((x * m_DotSpacingScale), (y * m_DotSpacingScale) + (x % 2 == 1 ? (.5f * m_DotSpacingScale) : 0f), 0);
                iter.m_GridPositionX         = x;
                iter.m_GridPositionY         = y;
                iter.AOnActivate             = OnDotActivate;
                iter.AOnDeactivate           = OnDotDeactivate;
                iter.m_SprDot.color          = m_DotsColor;
                iter.transform.localScale    = new Vector3(m_DotScale, m_DotScale, m_DotScale);
                //m_Dots[x][y] = iter;
                m_Dots.Add(iter);
            }
        }
    }
Beispiel #2
0
    private void OnDotDeactivate(NorseDot dot)
    {
        while (m_ActivatedDotStack.Count > 0)
        {
            NorseDot iterPop = m_ActivatedDotStack[m_ActivatedDotStack.Count - 1];
            m_ActivatedDotStack.RemoveAt(m_ActivatedDotStack.Count - 1);
            iterPop.IsActivated = false;

            if (m_Lines.Count > 0)
            {
                m_Lines[m_Lines.Count - 1].CleanUp();
                m_Lines.RemoveAt(m_Lines.Count - 1);
            }
            NorseLine l = m_Lines.Find(
                item => ((item.A.m_GridPositionX == iterPop.m_GridPositionX && item.A.m_GridPositionY == iterPop.m_GridPositionY) ||
                         (item.B.m_GridPositionX == iterPop.m_GridPositionX && item.B.m_GridPositionY == iterPop.m_GridPositionY)));
            iterPop.IsActivated = l != null;
            if (iterPop == dot)
            {
                return;
            }
        }
    }