76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using UnityEngine;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using Unheimlich.Features.DetectiveBoard.UI;
|
|
|
|
namespace Unheimlich.Features.DetectiveBoard.Data
|
|
{
|
|
[Serializable]
|
|
public class PostItNodeData
|
|
{
|
|
public string NodeID;
|
|
public Vector2 Position;
|
|
public float Rotation;
|
|
public bool IsEliminated;
|
|
public List<ConnectionData> Connections = new List<ConnectionData>();
|
|
|
|
public PostItNodeData(string id, Vector2 position)
|
|
{
|
|
NodeID = id;
|
|
Position = position;
|
|
Rotation = 0f;
|
|
IsEliminated = false;
|
|
}
|
|
|
|
public List<string> ConnectedNodeIDs
|
|
{
|
|
get
|
|
{
|
|
List<string> ids = new List<string>();
|
|
foreach (var conn in Connections)
|
|
{
|
|
ids.Add(conn.TargetNodeID);
|
|
}
|
|
return ids;
|
|
}
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class ConnectionData
|
|
{
|
|
public string TargetNodeID;
|
|
public LineColorState ColorState;
|
|
|
|
public ConnectionData(string targetId, LineColorState colorState = LineColorState.Green)
|
|
{
|
|
TargetNodeID = targetId;
|
|
ColorState = colorState;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class DetectiveBoardSaveData
|
|
{
|
|
public List<PostItNodeData> Nodes = new List<PostItNodeData>();
|
|
|
|
public PostItNodeData GetNodeData(string nodeID)
|
|
{
|
|
return Nodes.Find(n => n.NodeID == nodeID);
|
|
}
|
|
|
|
public void AddOrUpdateNode(PostItNodeData nodeData)
|
|
{
|
|
int index = Nodes.FindIndex(n => n.NodeID == nodeData.NodeID);
|
|
if (index >= 0)
|
|
{
|
|
Nodes[index] = nodeData;
|
|
}
|
|
else
|
|
{
|
|
Nodes.Add(nodeData);
|
|
}
|
|
}
|
|
}
|
|
}
|