using UnityEngine; using System.Collections.Generic; namespace io.github.hatayama.uLoopMCP { /// /// State management objects for McpEditorWindow /// Implements State Object pattern as Model layer in MVP architecture /// Uses get-only properties for with expression compatibility /// Related classes: /// - McpEditorWindow: Presenter layer that uses these state objects /// - McpEditorWindowView: View layer for UI rendering /// - McpEditorModel: Model layer service for managing state transitions /// public enum ConnectionMode { CLI = 0, MCP = 1 } public enum SkillsTarget { Claude = 0, Codex = 4, Cursor = 2, Gemini = 3, [InspectorName("Other (.agents)")] Agents = 1 } public record UIState { public int CustomPort { get; } public bool ShowConnectedTools { get; } public McpEditorType SelectedEditorType { get; } public Vector2 MainScrollPosition { get; } public bool ShowSecuritySettings { get; } public bool ShowToolSettings { get; } public bool AddRepositoryRoot { get; } public bool SupportsRepositoryRootToggle { get; } public bool ShowRepositoryRootToggle { get; } public ConnectionMode ConnectionMode { get; } public bool ShowConfiguration { get; } public UIState( int customPort = McpServerConfig.DEFAULT_PORT, bool showConnectedTools = true, McpEditorType selectedEditorType = McpEditorType.Cursor, Vector2 mainScrollPosition = default, bool showSecuritySettings = true, bool showToolSettings = true, bool addRepositoryRoot = false, bool supportsRepositoryRootToggle = false, bool showRepositoryRootToggle = false, ConnectionMode connectionMode = ConnectionMode.CLI, bool showConfiguration = true) { CustomPort = customPort; ShowConnectedTools = showConnectedTools; SelectedEditorType = selectedEditorType; MainScrollPosition = mainScrollPosition; ShowSecuritySettings = showSecuritySettings; ShowToolSettings = showToolSettings; AddRepositoryRoot = addRepositoryRoot; SupportsRepositoryRootToggle = supportsRepositoryRootToggle; ShowRepositoryRootToggle = showRepositoryRootToggle; ConnectionMode = connectionMode; ShowConfiguration = showConfiguration; } } /// /// Runtime state data for McpEditorWindow /// Tracks dynamic state during editor window operation /// public record RuntimeState { public bool NeedsRepaint { get; } public bool IsPostCompileMode { get; } public bool LastServerRunning { get; } public int LastServerPort { get; } public int LastConnectedClientsCount { get; } public string LastClientsInfoHash { get; } public RuntimeState( bool needsRepaint = false, bool isPostCompileMode = false, bool lastServerRunning = false, int lastServerPort = 0, int lastConnectedClientsCount = 0, string lastClientsInfoHash = "") { NeedsRepaint = needsRepaint; IsPostCompileMode = isPostCompileMode; LastServerRunning = lastServerRunning; LastServerPort = lastServerPort; LastConnectedClientsCount = lastConnectedClientsCount; LastClientsInfoHash = lastClientsInfoHash; } } }