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); }
public BoardNode(BoardNodeData data, Board parent) { Position = data.Position; Energy = data.StartingEnergy; Type = data.Type; Affiliation = data.Affiliation; ParentBoard = parent; }
private void makeNode(BoardNodeData data) { BoardNode node = nodeFactory.CreateNode(data, this); if (node.CanReceive) { CapturableNodeCount++; } nodes.Add(node); }
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); }
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); } }
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(); }
public DrainBoardNode(BoardNodeData data, Board parent) : base(data, parent) { }
public RedirectBoardNode(BoardNodeData data, Board parent) : base(data, parent) { }
public PoolBoardNode(BoardNodeData data, Board parent) : base(data, parent) { }
public VortexBoardNode(BoardNodeData data, Board parent) : base(data, parent) { }
public void RemoveNode(BoardNodeData node) { nodes.Remove(node); }
public BasicBoardNode(BoardNodeData data, Board parent) : base(data, parent) { }
public void ReplaceNode(BoardNode original, BoardNodeData newData) { nodes.Remove(original); makeNode(newData); }