支持动画使用不同的形状

This commit is contained in:
艾竹
2023-05-01 00:10:55 +08:00
parent 4a3f278a97
commit 48555edbc6
13 changed files with 183 additions and 29 deletions

View File

@@ -5,6 +5,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Enums;
@@ -253,14 +254,16 @@ namespace AIStudio.Wpf.DiagramDesigner
continue;
}
if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase)
if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase sourceItem)
{
var output = (connector.SourceConnectorInfo as LogicalConnectorInfo);
connector.ColorViewModel.LineColor.Color = output.ColorViewModel.FillColor.Color;
connector.ColorViewModel.FillColor.Color = output.ColorViewModel.FillColor.Color;
if (input.Value.CanAttachTo(output))
if (EnableInputValue(connector, input.Value, output))
{
connector.ColorViewModel.LineColor.Color = output.ColorViewModel.FillColor.Color;
connector.ColorViewModel.FillColor.Color = output.ColorViewModel.FillColor.Color;
connector.AnimationViewModel.Color = output.ColorViewModel.FillColor.Color;
input.Value.ConnectorValue = output.ConnectorValue;
input.Value.ConnectorString = output.ConnectorString;
input.Value.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
@@ -272,13 +275,10 @@ namespace AIStudio.Wpf.DiagramDesigner
{
input.Value.ConnectorValueType = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValueType == ConnectorValueType.Bool) ? ConnectorValueType.Bool : ConnectorValueType.Int;
}
sourceItem.ClearOutputValue(connector, output);
}
else
{
input.Value.ErrorCode = ConnectorErrorCode.ConnErr;
input.Value.ErrorMessage = "连接类型不匹配";
input.Value.ColorViewModel.FillColor.Color = Colors.DarkRed;
}
sourceItem.StartAnimation(output);
}
}
}
@@ -310,16 +310,44 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
}
else
else if (output.Value.ConnectorValueType <= ConnectorValueType.ValueType)
{
output.Value.ColorViewModel.FillColor.Color = Colors.Green;
}
}
}
public virtual bool EnableInputValue(ConnectionViewModel connector, LogicalConnectorInfo input, LogicalConnectorInfo output)
{
if (!input.CanAttachTo(output))
{
input.ErrorCode = ConnectorErrorCode.ConnErr;
input.ErrorMessage = "连接类型不匹配";
input.ColorViewModel.FillColor.Color = Colors.DarkRed;
return false;
}
return true;
}
public virtual void ClearOutputValue(ConnectionViewModel connector, LogicalConnectorInfo output)
{
}
public virtual void StartAnimation(LogicalConnectorInfo output)
{
}
protected ConnectionViewModel GetSourceItem(FullyCreatedConnectorInfo sinkConnector)
{
return Root?.Items.OfType<ConnectionViewModel>().FirstOrDefault(p => p.SinkConnectorInfo == sinkConnector);
}
protected ConnectionViewModel GetSinkItem(FullyCreatedConnectorInfo sourceConnector)
{
return Root?.Items.OfType<ConnectionViewModel>().FirstOrDefault(p => p.SourceConnectorInfo == sourceConnector);
}
}
}