Beispiel #1
0
    void OnGUI()
    {
        if (Application.isPlaying)
        {
            return;
        }

        Event e = Event.current;

        if (e.type == EventType.Layout || e.type == EventType.Repaint)
        {
            EditorUtility.SetDirty(this); // this is important, if omitted, "Mouse down" will not be display
        }
        else if (e.type == EventType.MouseDown)
        {
            Ray        r = HandleUtility.GUIPointToWorldRay(e.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(r, out hit, maxDistance: 1000f, layerMask: 1 << 8))
            {
                if (hit.transform.gameObject != gameObject)
                {
                    return;
                }
                if (e.button == 0)
                {
                    IsActivated = true;
                    if (AOnActivate != null)
                    {
                        AOnActivate(this);
                    }
                    else
                    {
                        NorseSymbol dad = transform.parent.GetComponent <NorseSymbol>();
                        if (dad != null)
                        {
                            dad.UpdateAllDotDelegates();
                            AOnActivate(this);
                        }
                    }
                }
                else if (e.button == 1)
                {
                    IsActivated = false;
                    if (AOnDeactivate != null)
                    {
                        AOnDeactivate(this);
                    }
                    else
                    {
                        NorseSymbol dad = transform.parent.GetComponent <NorseSymbol>();
                        if (dad != null)
                        {
                            dad.UpdateAllDotDelegates();
                            AOnDeactivate(this);
                        }
                    }
                }
            }
        }
    }
Beispiel #2
0
    public bool CheckForWinState(NorseSymbol mySymbol)
    {
        //Compare your symbol to the win state
        //  Unncessary method -- already taken care of in GameLoop::m_currentSymbol

        return(false);
    }
Beispiel #3
0
    public void UnionWith(NorseSymbol otherSymbol)
    {
        List <NorseLine> linesToAdd = new List <NorseLine>();

        for (int i = 0; i < otherSymbol.m_Lines.Count; i++)
        {
            //check if line already exists (bidirectionally)
            NorseLine foundLine = m_Lines.Find(mline =>
                                               ((mline.A.m_GridPositionX == otherSymbol.m_Lines[i].A.m_GridPositionX && mline.A.m_GridPositionY == otherSymbol.m_Lines[i].A.m_GridPositionY) &&
                                                (mline.B.m_GridPositionX == otherSymbol.m_Lines[i].B.m_GridPositionX && mline.B.m_GridPositionY == otherSymbol.m_Lines[i].B.m_GridPositionY)) ||
                                               ((mline.A.m_GridPositionX == otherSymbol.m_Lines[i].B.m_GridPositionX && mline.A.m_GridPositionY == otherSymbol.m_Lines[i].B.m_GridPositionY) &&
                                                (mline.B.m_GridPositionX == otherSymbol.m_Lines[i].A.m_GridPositionX && mline.B.m_GridPositionY == otherSymbol.m_Lines[i].A.m_GridPositionY)));

            //add line if doesn't exist.
            if (foundLine == null)
            {
                NorseLine    nl = new NorseLine();
                LineRenderer l  = Instantiate(PrefabManager.Instance.m_Data.m_DotConnectLR.gameObject, transform).GetComponent <LineRenderer>();
                nl.line          = l;
                nl.A             = m_Dots.Find(item => item.m_GridPositionX == otherSymbol.m_Lines[i].A.m_GridPositionX && item.m_GridPositionY == otherSymbol.m_Lines[i].A.m_GridPositionY);
                nl.A.IsActivated = true;
                nl.B             = m_Dots.Find(item => item.m_GridPositionX == otherSymbol.m_Lines[i].B.m_GridPositionX && item.m_GridPositionY == otherSymbol.m_Lines[i].B.m_GridPositionY);
                nl.B.IsActivated = true;
                m_Lines.Add(nl);
            }
        }
    }
Beispiel #4
0
    private void MoveYourSymbolTo(NorseSymbol symb)
    {
        Vector3 delta = symb.transform.position - m_YourSymbol.transform.position;

        for (int i = 0; i < m_YourSymbol.m_Lines.Count; i++)
        {
            m_YourSymbol.m_Lines[i].line.SetPositions(new Vector3[] { m_YourSymbol.m_Lines[i].line.GetPosition(0) + delta, m_YourSymbol.m_Lines[i].line.GetPosition(1) + delta });
        }
        m_YourSymbol.transform.position = symb.transform.position;
    }
Beispiel #5
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        NorseSymbol myScript = (NorseSymbol)target;

        if (GUILayout.Button("Generate Dots"))
        {
            myScript.ReInitializeDots();
        }
        //if (GUILayout.Button("Save Symbol"))
        //{
        //    SaveSymbol(myScript);
        //}
    }
Beispiel #6
0
    public bool IsEquivalentSymbol(NorseSymbol otherSymbol)
    {
        for (int i = 0; i < otherSymbol.m_Lines.Count; i++)
        {
            //check if line already exists (bidirectionally)
            NorseLine foundLine = m_Lines.Find(mline =>
                                               ((mline.A.m_GridPositionX == otherSymbol.m_Lines[i].A.m_GridPositionX && mline.A.m_GridPositionY == otherSymbol.m_Lines[i].A.m_GridPositionY) &&
                                                (mline.B.m_GridPositionX == otherSymbol.m_Lines[i].B.m_GridPositionX && mline.B.m_GridPositionY == otherSymbol.m_Lines[i].B.m_GridPositionY)) ||
                                               ((mline.A.m_GridPositionX == otherSymbol.m_Lines[i].B.m_GridPositionX && mline.A.m_GridPositionY == otherSymbol.m_Lines[i].B.m_GridPositionY) &&
                                                (mline.B.m_GridPositionX == otherSymbol.m_Lines[i].A.m_GridPositionX && mline.B.m_GridPositionY == otherSymbol.m_Lines[i].A.m_GridPositionY)));

            if (foundLine == null)
            {
                return(false);
            }
        }
        return(true);
    }
Beispiel #7
0
    public void IntersectionWith(NorseSymbol otherSymbol)
    {
        List <NorseLine> linesToRemove = new List <NorseLine>();

        for (int i = 0; i < m_Lines.Count; i++)
        {
            NorseLine nlCheck = otherSymbol.m_Lines.Find(
                item => ((item.A.m_GridPositionX == m_Lines[i].A.m_GridPositionX && item.A.m_GridPositionY == m_Lines[i].A.m_GridPositionY) &&
                         (item.B.m_GridPositionX == m_Lines[i].B.m_GridPositionX && item.B.m_GridPositionY == m_Lines[i].B.m_GridPositionY)));
            if (nlCheck == null)
            {
                nlCheck = otherSymbol.m_Lines.Find(
                    item => ((item.A.m_GridPositionX == m_Lines[i].B.m_GridPositionX && item.A.m_GridPositionY == m_Lines[i].B.m_GridPositionY) &&
                             (item.B.m_GridPositionX == m_Lines[i].A.m_GridPositionX && item.B.m_GridPositionY == m_Lines[i].A.m_GridPositionY)));
            }

            if (nlCheck != null)
            {
                //we got em boys
                linesToRemove.Add(m_Lines[i]);
            }
        }

        //check for IsActive on dots
        for (int i = 0; i < linesToRemove.Count; i++)
        {
            linesToRemove[i].CleanUp();

            m_Lines.Remove(linesToRemove[i]);

            //set IsActivated to false if there are no more lines connected to this dot.
            NorseLine lA = m_Lines.Find(
                item => (item.A.m_GridPositionX == linesToRemove[i].A.m_GridPositionX && item.A.m_GridPositionY == linesToRemove[i].A.m_GridPositionY) ||
                (item.B.m_GridPositionX == linesToRemove[i].A.m_GridPositionX && item.B.m_GridPositionY == linesToRemove[i].A.m_GridPositionY)
                );
            NorseLine lB = m_Lines.Find(
                item => (item.A.m_GridPositionX == linesToRemove[i].B.m_GridPositionX && item.A.m_GridPositionY == linesToRemove[i].B.m_GridPositionY) ||
                (item.B.m_GridPositionX == linesToRemove[i].B.m_GridPositionX && item.B.m_GridPositionY == linesToRemove[i].B.m_GridPositionY)
                );

            linesToRemove[i].A.IsActivated = lA != null;
            linesToRemove[i].B.IsActivated = lB != null;
        }
    }
Beispiel #8
0
 private void OnMouseOver()
 {
     if (Input.GetMouseButtonUp(0))
     {
         //IsActivated = true;
         if (AOnActivate != null)
         {
             AOnActivate(this);
         }
         else
         {
             NorseSymbol dad = transform.parent.GetComponent <NorseSymbol>();
             if (dad != null)
             {
                 dad.UpdateAllDotDelegates();
                 AOnActivate(this);
             }
         }
     }
     else if (Input.GetMouseButtonUp(1))
     {
         //IsActivated = false;
         if (AOnDeactivate != null)
         {
             AOnDeactivate(this);
         }
         else
         {
             NorseSymbol dad = transform.parent.GetComponent <NorseSymbol>();
             if (dad != null)
             {
                 dad.UpdateAllDotDelegates();
             }
             AOnDeactivate(this);
         }
     }
 }
Beispiel #9
0
 public void ComplementWith(NorseSymbol otherSymbol)
 {// TODO: stub
     throw new NotImplementedException();
 }
Beispiel #10
0
 private void SaveSymbol(NorseSymbol myScript)
 {
 }