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