private void ReadGameLogicData() { BeginRead(); if (NewReadData()) { GameLogicData gameLogicData = (GameLogicData)reader.ReadInt32(); switch (gameLogicData) { case GameLogicData.Move: int charIndex = reader.ReadInt32(); Point gridLocation = new Point(reader.ReadInt32(), reader.ReadInt32()); ReceiveMove(charIndex, gridLocation); break; case GameLogicData.Fight: ReceiveFight(reader.ReadInt32(), reader.ReadInt32()); break; case GameLogicData.EndTurn: myTurn = true; currentState = State.None; ReceiveEndTurn(); break; } WriteResponse(); } EndRead(); }
public static bool OpenGameLogicFromAsset(int instanceID, int line) { GameLogicData data = EditorUtility.InstanceIDToObject(instanceID) as GameLogicData; OpenWindow(data); return(data != null); // we did not handle the open }
public void SaveGraphData() { if (m_GameLogicData == null) { return; } string assetPath = AssetDatabase.GetAssetPath(m_GameLogicData); List <Node> nodes = m_GraphView.nodes.ToList(); GameLogicData graphData = ScriptableObject.CreateInstance <GameLogicData>(); graphData.m_graphNodes = new List <GameLogicData.GameLogicGraphNode>(); for (int i = 0; i < nodes.Count; ++i) { Node currentNode = nodes[i]; Type nodeType = currentNode.userData as Type; GameLogicData.GameLogicGraphNode graphNode = new GameLogicData.GameLogicGraphNode(); if (nodeType == null) { graphNode.m_type = null; graphNode.m_typeData = null; } else { MethodInfo method = nodeType.GetMethod("ExtractExtraData", BindingFlags.Static | BindingFlags.Public); if (method == null) { Debug.LogError("Failed to find method ExtractExtraData()!"); return; } graphNode.m_type = nodeType.FullName; graphNode.m_typeData = (string)method.Invoke(null, new object[] { currentNode }); } graphNode.m_title = currentNode.title; graphNode.m_position = currentNode.GetPosition().position; graphNode.m_outputs = new List <GameLogicData.GameLogicGraphEdge>(); foreach (Port port in currentNode.outputContainer) { foreach (Edge edge in port.connections) { GameLogicData.GameLogicGraphEdge serializedEdge = new GameLogicData.GameLogicGraphEdge(); serializedEdge.m_sourcePort = currentNode.outputContainer.IndexOf(edge.output); serializedEdge.m_targetNode = nodes.IndexOf(edge.input.node); serializedEdge.m_targetPort = edge.input.node.inputContainer.IndexOf(edge.input); graphNode.m_outputs.Add(serializedEdge); } } graphData.m_graphNodes.Add(graphNode); } EditorUtility.CopySerialized(graphData, m_GameLogicData); AssetDatabase.SaveAssets(); m_GameLogicData = AssetDatabase.LoadAssetAtPath <GameLogicData>(assetPath); }
public static void OpenWindow(GameLogicData data) { if (data != null) { GameLogicGraphViewWindow view = GetWindow <GameLogicGraphViewWindow>("Game Logic", true, typeof(SceneView)); view.ShowScript(data); } }
public void ShowScript(GameLogicData data) { m_GameLogicData = data; if (!LoadGraphData()) { Node node = CreateRootNode(); m_GraphView.AddElement(node); } }
void OnSelectionChanged() { ClearGraphData(); GameLogicData[] data = Selection.GetFiltered <GameLogicData>(SelectionMode.Assets); if (data.Length != 1) { m_GameLogicData = null; return; } m_GameLogicData = data[0]; if (!LoadGraphData()) { Node node = CreateRootNode(); m_GraphView.AddElement(node); } }