1 // ReSharper disable ClassNeverInstantiated.Global 2 // ReSharper disable UnusedMember.Global 3 // ReSharper disable UnusedAutoPropertyAccessor.Global 4 5 using Newtonsoft.Json; 6 7 namespace GodotTools.IdeMessaging.Requests 8 { 9 public abstract class Request 10 { 11 [JsonIgnore] public string Id { get; } 12 Request(string id)13 protected Request(string id) 14 { 15 Id = id; 16 } 17 } 18 19 public abstract class Response 20 { 21 [JsonIgnore] public MessageStatus Status { get; set; } = MessageStatus.Ok; 22 } 23 24 public sealed class CodeCompletionRequest : Request 25 { 26 public enum CompletionKind 27 { 28 InputActions = 0, 29 NodePaths, 30 ResourcePaths, 31 ScenePaths, 32 ShaderParams, 33 Signals, 34 ThemeColors, 35 ThemeConstants, 36 ThemeFonts, 37 ThemeStyles 38 } 39 40 public CompletionKind Kind { get; set; } 41 public string ScriptFile { get; set; } 42 43 public new const string Id = "CodeCompletion"; 44 CodeCompletionRequest()45 public CodeCompletionRequest() : base(Id) 46 { 47 } 48 } 49 50 public sealed class CodeCompletionResponse : Response 51 { 52 public CodeCompletionRequest.CompletionKind Kind; 53 public string ScriptFile { get; set; } 54 public string[] Suggestions { get; set; } 55 } 56 57 public sealed class PlayRequest : Request 58 { 59 public new const string Id = "Play"; 60 PlayRequest()61 public PlayRequest() : base(Id) 62 { 63 } 64 } 65 66 public sealed class PlayResponse : Response 67 { 68 } 69 70 public sealed class DebugPlayRequest : Request 71 { 72 public string DebuggerHost { get; set; } 73 public int DebuggerPort { get; set; } 74 public bool? BuildBeforePlaying { get; set; } 75 76 public new const string Id = "DebugPlay"; 77 DebugPlayRequest()78 public DebugPlayRequest() : base(Id) 79 { 80 } 81 } 82 83 public sealed class DebugPlayResponse : Response 84 { 85 } 86 87 public sealed class OpenFileRequest : Request 88 { 89 public string File { get; set; } 90 public int? Line { get; set; } 91 public int? Column { get; set; } 92 93 public new const string Id = "OpenFile"; 94 OpenFileRequest()95 public OpenFileRequest() : base(Id) 96 { 97 } 98 } 99 100 public sealed class OpenFileResponse : Response 101 { 102 } 103 104 public sealed class ReloadScriptsRequest : Request 105 { 106 public new const string Id = "ReloadScripts"; 107 ReloadScriptsRequest()108 public ReloadScriptsRequest() : base(Id) 109 { 110 } 111 } 112 113 public sealed class ReloadScriptsResponse : Response 114 { 115 } 116 } 117