예제 #1
0
    void DrawPathes()
    {
        foreach (KeyValuePair <CellState, GUIDraggableObject> state in StatesPositions)
        {
            Combination[] combinations = state.Key.Combinations;

            float s = 70;
            int   i = 0;


            if (combinations == null)
            {
                combinations = new Combination[0];
            }

            foreach (Combination c in combinations)
            {
                float offset = s * i / (combinations.Count() - 1);
                if (combinations.Count() == 1)
                {
                    offset = 48;
                }

                Rect start = new Rect(state.Value.Position.x + screenDelta.x - 100f / 2 + 5 + offset, state.Value.Position.y + screenDelta.y + 115 / 2f, 100.0f, 115.0f);



                try
                {
                    CellState aim         = StatesPositions.First(k => k.Key == c.ResultState).Key;
                    Vector3   aimPosition = StatesPositions.Find(cell => cell.Key == aim).Value.Position + screenDelta;
                    Rect      end         = new Rect(aimPosition.x, aimPosition.y - 115 / 2f, 100.0f, 115.0f);;
                    Handles.BeginGUI();
                    Color color = skillsCollors[c.skill];
                    if (c == selectedPath)
                    {
                        color = color / 2;
                    }
                    DrawNodeCurve(start, end, color, c.skillLevel);
                    Handles.EndGUI();
                }
                catch
                {
                }

                i++;
            }
        }
    }
예제 #2
0
    void DrowChainsWindow()
    {
        Rect fieldRect = new Rect(0, 0, position.width, position.height);

        GUI.DrawTextureWithTexCoords(fieldRect, BackgroundTexture, new Rect(0, 0, fieldRect.width / BackgroundTexture.width, fieldRect.height / BackgroundTexture.height));

        DrawPathes();

        BeginWindows();

        CellState manipulatingState = null;

        for (int i = 0; i <= StatesPositions.Count - 1; i++)
        {
            Rect drawRect = new Rect(StatesPositions[i].Value.Position.x + screenDelta.x, StatesPositions[i].Value.Position.y + screenDelta.y, 140.0f, 155.0f);
            if (StatesPositions[i].Value.Click(drawRect))
            {
                manipulatingState      = StatesPositions [i].Key;
                Selection.activeObject = StatesPositions[i].Key;
            }
        }


        for (int i = 0; i <= StatesPositions.Count - 1; i++)
        {
            DrawStateBox(StatesPositions [i]);
        }

        if (manipulatingState != null)
        {
            KeyValuePair <CellState, GUIDraggableObject> kvp = StatesPositions.Find(k => k.Key == manipulatingState);
            StatesPositions.Remove(kvp);
            StatesPositions.Add(kvp);
            Repaint();
        }



        EndWindows();
    }