Exemple #1
0
    public static bool EditBoardNodeData(string label, BoardNodeData node, int boardSize)
    {
        bool delete = false;

        EditorGUILayout.BeginHorizontal();

        EditorGUILayout.LabelField(label, GUILayout.Width(editBoardNodeData_LabelWidth));
        string[] posOptions     = new string[boardSize];
        int[]    posOptionsVals = new int[boardSize];

        for (int i = 0; i < boardSize; i++)
        {
            posOptions[i]     = i.ToString();
            posOptionsVals[i] = i;
        }

        int x = EditorGUILayout.IntPopup((int)node.Position.x, posOptions, posOptionsVals, GUILayout.Width(editBoardNodeData_PosElementWidth));
        int y = EditorGUILayout.IntPopup((int)node.Position.y, posOptions, posOptionsVals, GUILayout.Width(editBoardNodeData_PosElementWidth));
        int z = EditorGUILayout.IntPopup((int)node.Position.z, posOptions, posOptionsVals, GUILayout.Width(editBoardNodeData_PosElementWidth));

        node.Position       = new Vector3(x, y, z);
        node.StartingEnergy = EditorGUILayout.FloatField(node.StartingEnergy, GUILayout.Width(editBoardNodeData_StartingEnergyWidth));
        node.Type           = (BoardNodeType)EditorGUILayout.EnumPopup(node.Type, GUILayout.Width(editBoardNodeData_TypeWidth));
        node.Affiliation    = (BoardNodeAffiliation)EditorGUILayout.EnumPopup(node.Affiliation, GUILayout.Width(editBoardNodeData_AffiliationWidth));
        var oldClr = GUI.backgroundColor;

        GUI.backgroundColor = Color.red;
        if (GUILayout.Button("X", GUILayout.Height(14f), GUILayout.Width(editBoardNodeData_DeleteButtonWidth)))
        {
            delete = true;
        }
        GUI.backgroundColor = oldClr;
        EditorGUILayout.EndHorizontal();
        return(delete);
    }
Exemple #2
0
 public BoardNode(BoardNodeData data, Board parent)
 {
     Position    = data.Position;
     Energy      = data.StartingEnergy;
     Type        = data.Type;
     Affiliation = data.Affiliation;
     ParentBoard = parent;
 }
Exemple #3
0
    private void makeNode(BoardNodeData data)
    {
        BoardNode node = nodeFactory.CreateNode(data, this);

        if (node.CanReceive)
        {
            CapturableNodeCount++;
        }
        nodes.Add(node);
    }
Exemple #4
0
    public BoardNode CreateNode(BoardNodeData data, Board parent)
    {
        GameObject prefab = null;
        BoardNode  node   = null;

        #pragma warning disable 0162 // Unreachable code
        switch (data.Type)
        {
        case BoardNodeType.Basic:
            prefab = BasicBoardNodePrefab;
            node   = new BasicBoardNode(data, parent);
            break;

        case BoardNodeType.Drain:
            prefab = DrainBoardNodePrefab;
            node   = new DrainBoardNode(data, parent);
            break;

        case BoardNodeType.Fill:
            prefab = FillBoardNodePrefab;
            node   = new FillBoardNode(data, parent);
            break;

        case BoardNodeType.Null:
            prefab = NullBoardNodePrefab;
            node   = new NullBoardNode(data, parent);
            break;

        case BoardNodeType.Pool:
            prefab = PoolBoardNodePrefab;
            node   = new PoolBoardNode(data, parent);
            break;

        case BoardNodeType.Redirect:
            prefab = RedirectBoardNodePrefab;
            node   = new RedirectBoardNode(data, parent);
            break;

        case BoardNodeType.Vortex:
            prefab = VortexBoardNodePrefab;
            node   = new VortexBoardNode(data, parent);
            break;
        }
        #pragma warning restore 0162

        var nodeObj  = GameObject.Instantiate(prefab) as GameObject;
        var behavior = nodeObj.GetComponent <BoardNodeBehavior>();

        node.AttachedToBehavior(behavior);
        behavior.AttachToNode(node);

        return(node);
    }
Exemple #5
0
    protected override void OnEnergyEnter(EnergyBehavior energyBehavior)
    {
        base.OnEnergyEnter(energyBehavior);

        if (Energy == MaxEnergy)
        {
            // Create Basic Node
            var data = new BoardNodeData();
            data.Affiliation    = Affiliation;
            data.Type           = BoardNodeType.Basic;
            data.Position       = Position;
            data.StartingEnergy = MaxEnergy;
            ParentBoard.ReplaceNode(this, data);
            Behavior.gameObject.SetActive(false);
        }
    }
Exemple #6
0
    private void NodeTabState()
    {
        if (GUILayout.Button("Add Node"))
        {
            AddNewNode();
        }

        AMoPEditorUtils.EditBoardNodeDataHeader();

        BoardNodeData deleteNode = null;

        var index = 0;

        _nodeScrollPos = EditorGUILayout.BeginScrollView(_nodeScrollPos);
        foreach (var node in _boardData.Nodes)
        {
            if (AMoPEditorUtils.EditBoardNodeData(index.ToString("000") + ": ", node, _boardData.BoardSize))
            {
                deleteNode = node;
            }

            var deleted = deleteNode == node;
            if (GUI.changed && index < _editNodes.Count)
            {
                _editNodes[index].InspectorEdited(deleted);
            }

            index++;
        }
        EditorGUILayout.EndScrollView();

        if (deleteNode == null)
        {
            return;
        }
        Debug.Log("Deleting Node");
        _boardData.RemoveNode(deleteNode);
        ReloadScene();
    }
Exemple #7
0
 public DrainBoardNode(BoardNodeData data, Board parent) : base(data, parent)
 {
 }
Exemple #8
0
 public RedirectBoardNode(BoardNodeData data, Board parent) : base(data, parent)
 {
 }
Exemple #9
0
 public PoolBoardNode(BoardNodeData data, Board parent) : base(data, parent)
 {
 }
Exemple #10
0
 public VortexBoardNode(BoardNodeData data, Board parent) : base(data, parent)
 {
 }
Exemple #11
0
 public void RemoveNode(BoardNodeData node)
 {
     nodes.Remove(node);
 }
Exemple #12
0
 public BasicBoardNode(BoardNodeData data, Board parent) : base(data, parent)
 {
 }
Exemple #13
0
 public void ReplaceNode(BoardNode original, BoardNodeData newData)
 {
     nodes.Remove(original);
     makeNode(newData);
 }