using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace MeadowGames.UINodeConnect4.UICSerialization
{
[System.Serializable]
public class SerializableNode
{
///
/// Constructor for the SerializableNode
///
/// Element to serialize
/// Generate new unique SID for this SerializableNode
/// Serialize all the ports data to a List serializablePorts
public SerializableNode(Node node, bool serializeWithNewSID = true, bool serializePorts = true)
{
ToSerializable(node, serializeWithNewSID, serializePorts);
}
public SerializableRectTransform serializableRectTransform;
public string id;
public string sID;
public bool enableSelfConnection;
public bool enableDrag;
public bool enableHover;
public bool enableSelect;
public bool disableClick;
public Color defaultColor;
public Color outlineSelectedColor;
public Color outlineHoverColor;
public List serializablePorts = new List();
void ToSerializable(Node node, bool serializeWithNewSID = true, bool serializePorts = true)
{
serializableRectTransform = new SerializableRectTransform(node.rectTransform);
id = node.ID;
sID = serializeWithNewSID ? UICUtility.GenerateSID() : node.SID;
enableSelfConnection = node.enableSelfConnection;
enableDrag = node.EnableDrag;
enableHover = node.EnableHover;
enableSelect = node.EnableSelect;
disableClick = node.DisableClick;
defaultColor = node.defaultColor;
outlineSelectedColor = node.outlineSelectedColor;
outlineHoverColor = node.outlineHoverColor;
if (serializePorts)
{
serializablePorts = new List();
foreach (Port port in node.ports)
{
SerializablePort serializablePort = new SerializablePort(port, serializeWithNewSID);
serializablePort.nodeSID = sID;
serializablePorts.Add(serializablePort);
}
}
}
///
/// deserialize data to the indicated node except ports (data is stored if serializePorts is true when serialized
/// and can be used from serializableNode.serializablePorts)
///
/// element that the data will be loaded to
public void FromSerializable(Node node)
{
serializableRectTransform.FromSerializable(node.rectTransform);
node.ID = id;
node.SID = sID;
node.enableSelfConnection = enableSelfConnection;
node.EnableDrag = enableDrag;
node.EnableHover = enableHover;
node.EnableSelect = enableSelect;
node.DisableClick = disableClick;
node.defaultColor = defaultColor;
node.outlineSelectedColor = outlineSelectedColor;
node.outlineHoverColor = outlineHoverColor;
node.ElementColor = defaultColor;
}
}
}