using System.Collections; using System.Collections.Generic; using UnityEngine; using MeadowGames.UINodeConnect4.GraphicRenderer; using static MeadowGames.UINodeConnect4.Connection; namespace MeadowGames.UINodeConnect4.UICSerialization { [System.Serializable] public class SerializableConnection { /// /// Constructor for the SerializablePort /// /// Element to serialize /// Generate new unique SID for this SerializableNode public SerializableConnection(Connection connection, bool serializeWithNewSID = false) { ToSerializable(connection, serializeWithNewSID); } public string id; public string sID; public int port0InstanceID; // start public int port1InstanceID; // end public string port0SID; public string port1SID; public Color selectedColor; public Color hoverColor; public Color defaultColor; public CurveStyle curveStyle; public string label; public Line line; public bool enableDrag; public bool enableHover; public bool enableSelect; public bool disableClick; void ToSerializable(Connection connection, bool serializeWithNewSID = false) { id = connection.ID; sID = serializeWithNewSID ? UICUtility.GenerateSID() : connection.SID; port0InstanceID = connection.port0.GetInstanceID(); port1InstanceID = connection.port1.GetInstanceID(); port0SID = serializeWithNewSID ? UICUtility.GenerateSID() : connection.port0.SID; port1SID = serializeWithNewSID ? UICUtility.GenerateSID() : connection.port1.SID; selectedColor = connection.selectedColor; hoverColor = connection.hoverColor; defaultColor = connection.defaultColor; curveStyle = connection.curveStyle; label = connection.label.text; line = connection.line; enableDrag = connection.EnableDrag; enableHover = connection.EnableHover; enableSelect = connection.EnableSelect; disableClick = connection.DisableClick; } /// /// deserialize data to the indicated connection except label (data is stored and can be used from serializableConnection.lable) /// /// element that the data will be loaded to /// graph that indicates which UIC line renderer will render the connection public void FromSerializable(Connection connection, GraphManager graphManager) { connection.graphManager = graphManager; connection.ID = id; connection.SID = sID; connection.selectedColor = selectedColor; connection.hoverColor = hoverColor; connection.defaultColor = defaultColor; connection.curveStyle = curveStyle; connection.line = line; connection.EnableDrag = enableDrag; connection.EnableHover = enableHover; connection.EnableSelect = enableSelect; connection.DisableClick = disableClick; connection.ElementColor = defaultColor; } } }