Files

137 lines
3.8 KiB
C#
Raw Permalink Normal View History

using System;
using System.Collections.Generic;
namespace RedCircuit.AIAssistant
{
// ==================== 消息模型 ====================
public enum MessageRole { User, Assistant, System }
[Serializable]
public class ChatMessage
{
public MessageRole Role;
public string Content;
public DateTime Timestamp;
}
// ==================== 响应模型 ====================
public enum ResponseType { Text, Analysis, Action, Error }
[Serializable]
public class AIResponse
{
public ResponseType Type;
public string Content;
public List<AIAction> Actions = new();
public bool RequiresConfirmation;
public CircuitAnalysisReport Analysis;
}
// ==================== 操作指令模型 ====================
public enum ActionType { Place, Delete, Move, Rotate, Wire }
[Serializable]
public class AIAction
{
public ActionType Type;
public string Component; // 元件类型 (Place 时使用)
public int X; // 目标 X 坐标
public int Y; // 目标 Y 坐标
public int FromX; // 源 X 坐标 (Move/Wire 时使用)
public int FromY; // 源 Y 坐标 (Move/Wire 时使用)
public int Rotation; // 旋转角度 (0/90/180/270)
public string Description; // 操作描述 (供用户确认时显示)
}
// ==================== 上下文模型 ====================
[Serializable]
public class GameContext
{
public string Mode; // creative / puzzle / automation / multiplayer
public int CanvasWidth;
public int CanvasHeight;
public int ComponentCount;
public string SelectedComponentId;
public string SelectedComponentType;
public int? LevelId;
public string LevelTitle;
public long RedstoneCoins;
}
// ==================== 电路分析模型 ====================
[Serializable]
public class CircuitAnalysisReport
{
public string Summary;
public CircuitMetrics Metrics;
public List<CircuitIssue> Issues = new();
public List<CircuitOptimization> Optimizations = new();
}
[Serializable]
public class CircuitMetrics
{
public int ComponentCount;
public int TotalCost;
public int MaxDelay;
public int SignalPaths;
}
public enum IssueSeverity { Error, Warning, Info }
[Serializable]
public class CircuitIssue
{
public IssueSeverity Severity;
public string Type; // signal_loss / short_circuit / redundant / etc.
public GridPosition Location;
public string Description;
public string Suggestion;
}
[Serializable]
public class CircuitOptimization
{
public string Type; // delay_reduction / cost_reduction / etc.
public string Description;
public string EstimatedImprovement;
}
// ==================== 电路方案模型 ====================
[Serializable]
public class CircuitPlan
{
public string Name;
public string Description;
public int Cost;
public int Delay;
public int ComponentCount;
public List<AIAction> Steps = new();
}
// ==================== 辅助类型 ====================
[Serializable]
public struct GridPosition
{
public int X;
public int Y;
public GridPosition(int x, int y) { X = x; Y = y; }
}
/// <summary>操作批次 (用于撤销)</summary>
public class ActionBatch
{
public List<AIAction> Actions = new();
public string SnapshotBefore;
public string SnapshotAfter;
}
}