summaryrefslogtreecommitdiff
path: root/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Requests/Requests.cs
blob: e93db9377b0199b5c5e80a15fa196158eb7a88ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// ReSharper disable ClassNeverInstantiated.Global
// ReSharper disable UnusedMember.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global

using Newtonsoft.Json;

namespace GodotTools.IdeMessaging.Requests
{
    public abstract class Request
    {
        [JsonIgnore] public string Id { get; }

        protected Request(string id)
        {
            Id = id;
        }
    }

    public abstract class Response
    {
        [JsonIgnore] public MessageStatus Status { get; set; } = MessageStatus.Ok;
    }

    public sealed class CodeCompletionRequest : Request
    {
        public enum CompletionKind
        {
            InputActions = 0,
            NodePaths,
            ResourcePaths,
            ScenePaths,
            ShaderParams,
            Signals,
            ThemeColors,
            ThemeConstants,
            ThemeFonts,
            ThemeStyles
        }

        public CompletionKind Kind { get; set; }
        public string ScriptFile { get; set; }

        public new const string Id = "CodeCompletion";

        public CodeCompletionRequest() : base(Id)
        {
        }
    }

    public sealed class CodeCompletionResponse : Response
    {
        public CodeCompletionRequest.CompletionKind Kind;
        public string ScriptFile { get; set; }
        public string[] Suggestions { get; set; }
    }

    public sealed class PlayRequest : Request
    {
        public new const string Id = "Play";

        public PlayRequest() : base(Id)
        {
        }
    }

    public sealed class PlayResponse : Response
    {
    }

    public sealed class StopPlayRequest : Request
    {
        public new const string Id = "StopPlay";

        public StopPlayRequest() : base(Id)
        {
        }
    }

    public sealed class StopPlayResponse : Response
    {
    }

    public sealed class DebugPlayRequest : Request
    {
        public string DebuggerHost { get; set; }
        public int DebuggerPort { get; set; }
        public bool? BuildBeforePlaying { get; set; }

        public new const string Id = "DebugPlay";

        public DebugPlayRequest() : base(Id)
        {
        }
    }

    public sealed class DebugPlayResponse : Response
    {
    }

    public sealed class OpenFileRequest : Request
    {
        public string File { get; set; }
        public int? Line { get; set; }
        public int? Column { get; set; }

        public new const string Id = "OpenFile";

        public OpenFileRequest() : base(Id)
        {
        }
    }

    public sealed class OpenFileResponse : Response
    {
    }

    public sealed class ReloadScriptsRequest : Request
    {
        public new const string Id = "ReloadScripts";

        public ReloadScriptsRequest() : base(Id)
        {
        }
    }

    public sealed class ReloadScriptsResponse : Response
    {
    }
}