├── .vscode
└── settings.json
├── Gamechat
└── GameChat.md
├── Hudmsg
└── Hudmsg.md
├── Indicators
└── Indicators.md
├── LICENSE
├── MapObjects
└── MapObjects.md
├── Mapinfo
└── MapInfo.md
├── Mission
└── Mission.md
├── README.md
├── State
└── State.md
└── script.py
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake.configureOnOpen": false
3 | }
--------------------------------------------------------------------------------
/Gamechat/GameChat.md:
--------------------------------------------------------------------------------
1 | # Gamechat
2 |
3 | - Retrieves data from game chat
4 |
5 |
6 |
7 | #### Detailed description
8 |
9 | Gamechat is accessed via url query parameters ``?field=value``
10 | Note: these values start at 0 or 1 (whatever it is) only at game start. so the second match will start the id where the first match id ended.
11 |
12 | http://localhost:8111/gamechat?lastId=0
13 |
14 |
15 |
16 | #### HTTP Request
17 | - GET http://localhost:8111/gamechat
18 |
19 | #### Query parameters
20 |
21 | - lastId
22 | - gives you json of all chat messages up until the point you requested it
23 |
24 | - Example:
25 | - if there were 56 messages, and you requested ``GET http://localhost:8111/gamechat?lastId=55`` you would only get the last (56th) message (assuming that it has a index start of 0, not 1...)
26 |
27 | #### HTTP Response :white_check_mark:
28 |
29 | ```json
30 | [
31 | {
32 | "id": 70,
33 | "msg": "hahaha",
34 | "sender": "pecusgaming",
35 | "enemy": false,
36 | "mode": "All"
37 | },
38 | {
39 | "id": 71,
40 | "msg": "this thing is slightly op tbh",
41 | "sender": "pecusgaming",
42 | "enemy": false,
43 | "mode": "All"
44 | }
45 | ]
46 | ```
47 |
48 | ### Fields
49 |
50 | - name: **id**
51 | * contains: integer
52 | * description: message id
53 |
54 | - name: **msg**
55 | * contains: string
56 | * description: message content
57 |
58 | - name: **sender**
59 | * contains: string
60 | * description: player name
61 |
62 | - name: **enemy**
63 | * contains: boolean
64 | * description: true if is a enemy player false otherwise
65 |
66 | - name: **mode**
67 | * contains: string
68 | * description:
--------------------------------------------------------------------------------
/Hudmsg/Hudmsg.md:
--------------------------------------------------------------------------------
1 | # Hudmsg
2 |
3 | - very similar to gamechat.. instead of a list of dicts, its a dict with keys events and damage, events is always empty iirc, and damage is a list of dicts
4 |
5 |
6 |
7 | #### Detailed description
8 |
9 | Hudmsg is accessed via url query parameters ``?field=value``
10 | Note: these values start at 0 or 1 (whatever it is) only at game start. so the second match will start the id where the first match id ended.
11 |
12 | http://localhost:8111/hudmsg?lastEvt=0&lastDmg=0
13 |
14 | #### HTTP Request
15 | - GET http://localhost:8111/hudmsg
16 |
17 | #### Query parameters
18 |
19 | - lastEvt
20 | - id of event to search
21 |
22 | - lastDmg
23 | - id of damage
24 |
25 | #### HTTP Response :white_check_mark:
26 | ```json
27 | {
28 | "events": [],
29 | "damage": [
30 | {
31 | "id": 161,
32 | "msg": "percusiones1r (Spitfire) set afire *shino_rs (Spitfire)",
33 | "sender": "",
34 | "enemy": false,
35 | "mode": ""
36 | }
37 | {
38 | "id": 162,
39 | "msg": "*shino_rs (Spitfire) has crashed.",
40 | "sender": "",
41 | "enemy": false,
42 | "mode": ""
43 | }
44 | ]
45 | }
46 | ```
--------------------------------------------------------------------------------
/Indicators/Indicators.md:
--------------------------------------------------------------------------------
1 | # Indicators
2 | - This URL retrieves data from aircraft instruments
3 |
4 |
5 |
6 | #### HTTP Request
7 | - GET http://localhost:8111/indicators
8 |
9 | #### Query parameters
10 |
11 | - None
12 |
13 | #### HTTP Response :white_check_mark:
14 |
15 | - Example:
16 |
17 | HTTP/1.1 200 OK
18 | Content-Type: application/json
19 | Content-Length: 1389
20 | Access-Control-Allow-Origin: *
21 | Access-Control-Allow-Methods: GET, POST, OPTIONS
22 |
23 | ```json
24 | {
25 | "valid":true,
26 | "type":"so_4050_vautour_2a_iaf",
27 | "speed":0.000000,
28 | "pedals":0.000000,
29 | "pedals1":0.000000,
30 | "pedals2":0.000000,
31 | "pedals3":0.000000,
32 | "stick_elevator":0.000000,
33 | "stick_elevator1":0.000000,
34 | "stick_ailerons":-0.000000,
35 | "vario":0.000000,
36 | "altitude_hour":63.055698,
37 | "altitude_min":63.055698,
38 | "altitude_10k":63.055698,
39 | "aviahorizon_roll":-0.083683,
40 | "aviahorizon_pitch":-4.278834,
41 | "bank":0.083683,
42 | "turn":0.000000,
43 | "compass":355.831299,
44 | "compass1":355.831299,
45 | "compass2":355.831299,
46 | "clock_hour":9.166667,
47 | "clock_min":10.000000,
48 | "clock_sec":13.000000,
49 | "rpm_min":897.000000,
50 | "rpm1_min":915.000000,
51 | "rpm_hour":2897.420898,
52 | "rpm1_hour":2915.319092,
53 | "oil_pressure":51.979767,
54 | "oil_pressure1":52.032928,
55 | "head_temperature":529.008423,
56 | "head_temperature1":529.614746,
57 | "fuel":3182.000000,
58 | "fuel1":3182.000000,
59 | "fuel_pressure":0.000000,
60 | "fuel_pressure1":0.000000,
61 | "airbrake_lever":0.000000,
62 | "airbrake_indicator":0.000000,
63 | "gears":0.500000,
64 | "gears1":0.500000,
65 | "gears_lamp":0.000000,
66 | "flaps":0.000000,
67 | "flaps1":0.000000,
68 | "throttle":0.000000,
69 | "throttle1":0.000000,
70 | "weapon2":0.000000,
71 | "weapon3":0.000000,
72 | "mach":0.000000,
73 | "g_meter":0.919596,
74 | "g_meter_min":0.075778,
75 | "g_meter_max":43.741905,
76 | "blister1":1.000000,
77 | "blister2":1.000000,
78 | "blister3":1.000000,
79 | "blister4":1.000000,
80 | "blister5":1.000000,
81 | "blister6":1.000000,
82 | "blister7":1.000000
83 | }
84 | ```
85 |
86 |
87 | ### Fields
88 |
89 | - name: **valid**
90 | * contains: bool
91 | * description:
92 |
93 | - name: **type**
94 | * contains: string
95 | * description: contains aircraft name
96 |
97 | - name: **speed**
98 | * contains: float
99 | * description:
100 |
101 | - name: **pedals**
102 | * contains: float
103 | * description:
104 |
105 | - name: **pedals1**
106 | * contains: float
107 | * description:
108 |
109 | - name: **pedals2**
110 | * contains: float
111 | * description:
112 |
113 | - name: **pedals3**
114 | * contains: float
115 | * description:
116 |
117 | - name: **stick_elevator**
118 | * contains: float
119 | * description:
120 |
121 | - name: **stick_elevator1**
122 | * contains: float
123 | * description:
124 |
125 | - name: **stick_ailerons**
126 | * contains: float
127 | * description:
128 |
129 | - name: **vario**
130 | * contains: float
131 | * description:
132 |
133 | - name: **altitude_hour**
134 | * contains: float
135 | * description:
136 |
137 | - name: **altitude_min**
138 | * contains: float
139 | * description:
140 |
141 | - name: **altitude_10k**
142 | * contains: float
143 | * description:
144 |
145 | - name: **aviahorizon_roll**
146 | * contains: float
147 | * description:
148 |
149 | - name: **aviahorizon_pitch**
150 | * contains: float
151 | * description:
152 |
153 | - name: **bank**
154 | * contains: float
155 | * description:
156 |
157 | - name: **turn**
158 | * contains: float
159 | * description:
160 |
161 | - name: **compass**
162 | * contains: float
163 | * description:
164 |
165 | - name: **compass1**
166 | * contains: float
167 | * description:
168 |
169 | - name: **compass2**
170 | * contains: float
171 | * description:
172 |
173 | - name: **clock_hour**
174 | * contains: float
175 | * description:
176 |
177 | - name: **clock_min**
178 | * contains: float
179 | * description:
180 |
181 | - name: **clock_sec**
182 | * contains: float
183 | * description:
184 |
185 | - name: **rpm_min**
186 | * contains: float
187 | * description:
188 |
189 | - name: **rpm1_min**
190 | * contains: float
191 | * description:
192 |
193 | - name: **rpm_hour**
194 | * contains: float
195 | * description:
196 |
197 | - name: **rpm1_hour**
198 | * contains: float
199 | * description:
200 |
201 | - name: **oil_pressure**
202 | * contains: float
203 | * description:
204 |
205 | - name: **oil_pressure1**
206 | * contains: float
207 | * description:
208 |
209 | - name: **head_temperature**
210 | * contains: float
211 | * description:
212 |
213 | - name: **head_temperature1**
214 | * contains: float
215 | * description:
216 |
217 | - name: **fuel**
218 | * contains: float
219 | * description:
220 |
221 | - name: **fuel1**
222 | * contains: float
223 | * description:
224 |
225 | - name: **fuel_pressure**
226 | * contains: float
227 | * description:
228 |
229 | - name: **fuel_pressure1**
230 | * contains: float
231 | * description:
232 |
233 | - name: **airbrake_lever**
234 | * contains: float
235 | * description:
236 |
237 | - name: **airbrake_indicator**
238 | * contains: float
239 | * description:
240 |
241 | - name: **gears**
242 | * contains: float
243 | * description:
244 |
245 | - name: **gears1**
246 | * contains: float
247 | * description:
248 |
249 | - name: **gears_lamp**
250 | * contains: float
251 | * description:
252 |
253 | - name: **flaps**
254 | * contains: float
255 | * description:
256 |
257 | - name: **flaps1**
258 | * contains: float
259 | * description:
260 |
261 | - name: **throttle**
262 | * contains: float
263 | * description:
264 |
265 | - name: **throttle1**
266 | * contains: float
267 | * description:
268 |
269 | - name: **weapon2**
270 | * contains: float
271 | * description:
272 |
273 | - name: **weapon3**
274 | * contains: float
275 | * description:
276 |
277 | - name: **mach**
278 | * contains: float
279 | * description:
280 |
281 | - name: **g_meter**
282 | * contains: float
283 | * description:
284 |
285 | - name: **g_meter_min**
286 | * contains: float
287 | * description:
288 |
289 | - name: **g_meter_max**
290 | * contains: float
291 | * description:
292 |
293 | - name: **blister1**
294 | * contains: float
295 | * description:
296 |
297 | - name: **blister2**
298 | * contains: float
299 | * description:
300 |
301 | - name: **blister3**
302 | * contains: float
303 | * description:
304 |
305 | - name: **blister4**
306 | * contains: float
307 | * description:
308 |
309 | - name: **blister5**
310 | * contains: float
311 | * description:
312 |
313 | - name: **blister6**
314 | * contains: float
315 | * description:
316 |
317 | - name: **blister7**
318 | * contains: float
319 | * description:
320 |
321 | - name: **wing_sweep_lever**
322 | * contains: string
323 | * description: wing speed angle
324 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/MapObjects/MapObjects.md:
--------------------------------------------------------------------------------
1 | # MapObjects
2 | - This URL retrieves data from all map objects
3 |
4 |
5 |
6 | #### HTTP Request
7 |
8 | - GET http://localhost:8111/map_obj.json
9 |
10 | - Example:
11 |
12 | ```json
13 | [
14 | {
15 | "type":"airfield",
16 | "color":"#185AFF",
17 | "color[]":[
18 | 24,
19 | 90,
20 | 255
21 | ],
22 | "blink":0,
23 | "icon":"none",
24 | "icon_bg":"none",
25 | "sx":0.511711,
26 | "sy":0.679166,
27 | "ex":0.508293,
28 | "ey":0.653914
29 | },
30 | {
31 | "type":"airfield",
32 | "color":"#fa3200",
33 | "color[]":[
34 | 250,
35 | 50,
36 | 0
37 | ],
38 | "blink":0,
39 | "icon":"none",
40 | "icon_bg":"none",
41 | "sx":0.491362,
42 | "sy":0.316519,
43 | "ex":0.492964,
44 | "ey":0.341950
45 | },
46 | {
47 | "type":"aircraft",
48 | "color":"#185AFF",
49 | "color[]":[
50 | 24,
51 | 90,
52 | 255
53 | ],
54 | "blink":0,
55 | "icon":"Assault",
56 | "icon_bg":"none",
57 | "x":0.535131,
58 | "y":0.489011,
59 | "dx":-0.888831,
60 | "dy":-0.458235
61 | },
62 | {
63 | "type":"aircraft",
64 | "color":"#185AFF",
65 | "color[]":[
66 | 24,
67 | 90,
68 | 255
69 | ],
70 | "blink":0,
71 | "icon":"Assault",
72 | "icon_bg":"none",
73 | "x":0.536331,
74 | "y":0.491303,
75 | "dx":-0.929120,
76 | "dy":-0.369779
77 | },
78 | {
79 | "type":"aircraft",
80 | "color":"#185AFF",
81 | "color[]":[
82 | 24,
83 | 90,
84 | 255
85 | ],
86 | "blink":0,
87 | "icon":"Assault",
88 | "icon_bg":"none",
89 | "x":0.533449,
90 | "y":0.497469,
91 | "dx":-0.943204,
92 | "dy":-0.332214
93 | },
94 | {
95 | "type":"aircraft",
96 | "color":"#185AFF",
97 | "color[]":[
98 | 24,
99 | 90,
100 | 255
101 | ],
102 | "blink":0,
103 | "icon":"Assault",
104 | "icon_bg":"none",
105 | "x":0.533528,
106 | "y":0.489605,
107 | "dx":-0.931145,
108 | "dy":-0.364650
109 | },
110 | {
111 | "type":"aircraft",
112 | "color":"#185AFF",
113 | "color[]":[
114 | 24,
115 | 90,
116 | 255
117 | ],
118 | "blink":0,
119 | "icon":"Assault",
120 | "icon_bg":"none",
121 | "x":0.538263,
122 | "y":0.485532,
123 | "dx":-0.940439,
124 | "dy":-0.339962
125 | },
126 | {
127 | "type":"aircraft",
128 | "color":"#185AFF",
129 | "color[]":[
130 | 24,
131 | 90,
132 | 255
133 | ],
134 | "blink":0,
135 | "icon":"Assault",
136 | "icon_bg":"none",
137 | "x":0.532689,
138 | "y":0.501428,
139 | "dx":-0.954651,
140 | "dy":-0.297726
141 | },
142 | {
143 | "type":"aircraft",
144 | "color":"#185AFF",
145 | "color[]":[
146 | 24,
147 | 90,
148 | 255
149 | ],
150 | "blink":0,
151 | "icon":"Assault",
152 | "icon_bg":"none",
153 | "x":0.538706,
154 | "y":0.484404,
155 | "dx":-0.855865,
156 | "dy":-0.517199
157 | },
158 | {
159 | "type":"aircraft",
160 | "color":"#185AFF",
161 | "color[]":[
162 | 24,
163 | 90,
164 | 255
165 | ],
166 | "blink":0,
167 | "icon":"Assault",
168 | "icon_bg":"none",
169 | "x":0.540036,
170 | "y":0.491065,
171 | "dx":-0.916857,
172 | "dy":-0.399216
173 | },
174 | {
175 | "type":"aircraft",
176 | "color":"#185AFF",
177 | "color[]":[
178 | 24,
179 | 90,
180 | 255
181 | ],
182 | "blink":0,
183 | "icon":"Assault",
184 | "icon_bg":"none",
185 | "x":0.535160,
186 | "y":0.479163,
187 | "dx":-0.750457,
188 | "dy":-0.660919
189 | },
190 | {
191 | "type":"aircraft",
192 | "color":"#185AFF",
193 | "color[]":[
194 | 24,
195 | 90,
196 | 255
197 | ],
198 | "blink":0,
199 | "icon":"Assault",
200 | "icon_bg":"none",
201 | "x":0.536626,
202 | "y":0.499710,
203 | "dx":-0.947473,
204 | "dy":-0.319835
205 | },
206 | {
207 | "type":"aircraft",
208 | "color":"#fa3200",
209 | "color[]":[
210 | 250,
211 | 50,
212 | 0
213 | ],
214 | "blink":0,
215 | "icon":"Assault",
216 | "icon_bg":"none",
217 | "x":0.460245,
218 | "y":0.501279,
219 | "dx":0.720985,
220 | "dy":0.692950
221 | },
222 | {
223 | "type":"aircraft",
224 | "color":"#fa3200",
225 | "color[]":[
226 | 250,
227 | 50,
228 | 0
229 | ],
230 | "blink":0,
231 | "icon":"Assault",
232 | "icon_bg":"none",
233 | "x":0.463398,
234 | "y":0.494143,
235 | "dx":0.787867,
236 | "dy":0.615846
237 | },
238 | {
239 | "type":"aircraft",
240 | "color":"#fa3200",
241 | "color[]":[
242 | 250,
243 | 50,
244 | 0
245 | ],
246 | "blink":0,
247 | "icon":"Assault",
248 | "icon_bg":"none",
249 | "x":0.457604,
250 | "y":0.502833,
251 | "dx":0.743692,
252 | "dy":0.668522
253 | },
254 | {
255 | "type":"aircraft",
256 | "color":"#fa3200",
257 | "color[]":[
258 | 250,
259 | 50,
260 | 0
261 | ],
262 | "blink":0,
263 | "icon":"Assault",
264 | "icon_bg":"none",
265 | "x":0.458832,
266 | "y":0.500498,
267 | "dx":0.759916,
268 | "dy":0.650022
269 | },
270 | {
271 | "type":"aircraft",
272 | "color":"#fa3200",
273 | "color[]":[
274 | 250,
275 | 50,
276 | 0
277 | ],
278 | "blink":0,
279 | "icon":"Assault",
280 | "icon_bg":"none",
281 | "x":0.460936,
282 | "y":0.493616,
283 | "dx":0.804292,
284 | "dy":0.594235
285 | },
286 | {
287 | "type":"aircraft",
288 | "color":"#fa3200",
289 | "color[]":[
290 | 250,
291 | 50,
292 | 0
293 | ],
294 | "blink":0,
295 | "icon":"Assault",
296 | "icon_bg":"none",
297 | "x":0.471355,
298 | "y":0.484262,
299 | "dx":0.863713,
300 | "dy":0.503983
301 | },
302 | {
303 | "type":"aircraft",
304 | "color":"#fa3200",
305 | "color[]":[
306 | 250,
307 | 50,
308 | 0
309 | ],
310 | "blink":0,
311 | "icon":"Assault",
312 | "icon_bg":"none",
313 | "x":0.462614,
314 | "y":0.494151,
315 | "dx":0.793931,
316 | "dy":0.608008
317 | },
318 | {
319 | "type":"aircraft",
320 | "color":"#fa3200",
321 | "color[]":[
322 | 250,
323 | 50,
324 | 0
325 | ],
326 | "blink":0,
327 | "icon":"Assault",
328 | "icon_bg":"none",
329 | "x":0.455471,
330 | "y":0.501529,
331 | "dx":0.765325,
332 | "dy":0.643644
333 | },
334 | {
335 | "type":"aircraft",
336 | "color":"#fa3200",
337 | "color[]":[
338 | 250,
339 | 50,
340 | 0
341 | ],
342 | "blink":0,
343 | "icon":"Assault",
344 | "icon_bg":"none",
345 | "x":0.465296,
346 | "y":0.489970,
347 | "dx":0.819215,
348 | "dy":0.573487
349 | },
350 | {
351 | "type":"aircraft",
352 | "color":"#fa3200",
353 | "color[]":[
354 | 250,
355 | 50,
356 | 0
357 | ],
358 | "blink":0,
359 | "icon":"Assault",
360 | "icon_bg":"none",
361 | "x":0.459296,
362 | "y":0.495469,
363 | "dx":0.783994,
364 | "dy":0.620768
365 | },
366 | {
367 | "type":"aircraft",
368 | "color":"#fa3200",
369 | "color[]":[
370 | 250,
371 | 50,
372 | 0
373 | ],
374 | "blink":0,
375 | "icon":"Assault",
376 | "icon_bg":"none",
377 | "x":0.453800,
378 | "y":0.501141,
379 | "dx":0.763969,
380 | "dy":0.645253
381 | },
382 | {
383 | "type":"aircraft",
384 | "color":"#fa3200",
385 | "color[]":[
386 | 250,
387 | 50,
388 | 0
389 | ],
390 | "blink":0,
391 | "icon":"Assault",
392 | "icon_bg":"none",
393 | "x":0.460232,
394 | "y":0.493069,
395 | "dx":0.814946,
396 | "dy":0.579537
397 | },
398 | {
399 | "type":"aircraft",
400 | "color":"#fa3200",
401 | "color[]":[
402 | 250,
403 | 50,
404 | 0
405 | ],
406 | "blink":0,
407 | "icon":"Bomber",
408 | "icon_bg":"none",
409 | "x":0.529542,
410 | "y":0.529253,
411 | "dx":0.974783,
412 | "dy":0.223156
413 | },
414 | {
415 | "type":"aircraft",
416 | "color":"#24D921",
417 | "color[]":[
418 | 36,
419 | 217,
420 | 33
421 | ],
422 | "blink":0,
423 | "icon":"Player",
424 | "icon_bg":"none",
425 | "x":0.347845,
426 | "y":0.590858,
427 | "dx":-0.939718,
428 | "dy":-0.341950
429 | },
430 | {
431 | "type":"aircraft",
432 | "color":"#fa3200",
433 | "color[]":[
434 | 250,
435 | 50,
436 | 0
437 | ],
438 | "blink":0,
439 | "icon":"Fighter",
440 | "icon_bg":"none",
441 | "x":0.456552,
442 | "y":0.459456,
443 | "dx":0.910576,
444 | "dy":0.413341
445 | },
446 | {
447 | "type":"aircraft",
448 | "color":"#fa3200",
449 | "color[]":[
450 | 250,
451 | 50,
452 | 0
453 | ],
454 | "blink":0,
455 | "icon":"Fighter",
456 | "icon_bg":"none",
457 | "x":0.424389,
458 | "y":0.468690,
459 | "dx":-0.051207,
460 | "dy":-0.998688
461 | },
462 | {
463 | "type":"aircraft",
464 | "color":"#24D921",
465 | "color[]":[
466 | 36,
467 | 217,
468 | 33
469 | ],
470 | "blink":0,
471 | "icon":"Bomber",
472 | "icon_bg":"none",
473 | "x":0.461967,
474 | "y":0.466274,
475 | "dx":-0.593581,
476 | "dy":-0.804774
477 | },
478 | {
479 | "type":"aircraft",
480 | "color":"#fa3200",
481 | "color[]":[
482 | 250,
483 | 50,
484 | 0
485 | ],
486 | "blink":0,
487 | "icon":"Fighter",
488 | "icon_bg":"none",
489 | "x":0.436091,
490 | "y":0.396236,
491 | "dx":0.844801,
492 | "dy":-0.535081
493 | },
494 | {
495 | "type":"aircraft",
496 | "color":"#185AFF",
497 | "color[]":[
498 | 24,
499 | 90,
500 | 255
501 | ],
502 | "blink":0,
503 | "icon":"Bomber",
504 | "icon_bg":"none",
505 | "x":0.488750,
506 | "y":0.480384,
507 | "dx":-0.774395,
508 | "dy":0.632702
509 | },
510 | {
511 | "type":"aircraft",
512 | "color":"#185AFF",
513 | "color[]":[
514 | 24,
515 | 90,
516 | 255
517 | ],
518 | "blink":0,
519 | "icon":"Bomber",
520 | "icon_bg":"none",
521 | "x":0.479127,
522 | "y":0.481116,
523 | "dx":-0.393706,
524 | "dy":-0.919237
525 | },
526 | {
527 | "type":"aircraft",
528 | "color":"#fa3200",
529 | "color[]":[
530 | 250,
531 | 50,
532 | 0
533 | ],
534 | "blink":0,
535 | "icon":"Fighter",
536 | "icon_bg":"none",
537 | "x":0.412599,
538 | "y":0.427941,
539 | "dx":-0.640105,
540 | "dy":0.768288
541 | },
542 | {
543 | "type":"aircraft",
544 | "color":"#185AFF",
545 | "color[]":[
546 | 24,
547 | 90,
548 | 255
549 | ],
550 | "blink":0,
551 | "icon":"Bomber",
552 | "icon_bg":"none",
553 | "x":0.456445,
554 | "y":0.499996,
555 | "dx":-0.326926,
556 | "dy":-0.945050
557 | },
558 | {
559 | "type":"aircraft",
560 | "color":"#185AFF",
561 | "color[]":[
562 | 24,
563 | 90,
564 | 255
565 | ],
566 | "blink":0,
567 | "icon":"Assault",
568 | "icon_bg":"none",
569 | "x":0.511548,
570 | "y":0.502258,
571 | "dx":-0.588973,
572 | "dy":-0.808153
573 | },
574 | {
575 | "type":"aircraft",
576 | "color":"#185AFF",
577 | "color[]":[
578 | 24,
579 | 90,
580 | 255
581 | ],
582 | "blink":0,
583 | "icon":"Bomber",
584 | "icon_bg":"none",
585 | "x":0.405526,
586 | "y":0.479363,
587 | "dx":-0.574781,
588 | "dy":-0.818308
589 | },
590 | {
591 | "type":"aircraft",
592 | "color":"#fa3200",
593 | "color[]":[
594 | 250,
595 | 50,
596 | 0
597 | ],
598 | "blink":0,
599 | "icon":"Assault",
600 | "icon_bg":"none",
601 | "x":0.543054,
602 | "y":0.486553,
603 | "dx":-0.915341,
604 | "dy":-0.402679
605 | },
606 | {
607 | "type":"aircraft",
608 | "color":"#fa3200",
609 | "color[]":[
610 | 250,
611 | 50,
612 | 0
613 | ],
614 | "blink":0,
615 | "icon":"Fighter",
616 | "icon_bg":"none",
617 | "x":0.543930,
618 | "y":0.502175,
619 | "dx":-0.941082,
620 | "dy":-0.338177
621 | },
622 | {
623 | "type":"aircraft",
624 | "color":"#fa3200",
625 | "color[]":[
626 | 250,
627 | 50,
628 | 0
629 | ],
630 | "blink":0,
631 | "icon":"Bomber",
632 | "icon_bg":"none",
633 | "x":0.497220,
634 | "y":0.491311,
635 | "dx":-0.357170,
636 | "dy":0.934039
637 | },
638 | {
639 | "type":"aircraft",
640 | "color":"#185AFF",
641 | "color[]":[
642 | 24,
643 | 90,
644 | 255
645 | ],
646 | "blink":0,
647 | "icon":"Bomber",
648 | "icon_bg":"none",
649 | "x":0.389838,
650 | "y":0.434550,
651 | "dx":-0.863712,
652 | "dy":-0.503986
653 | },
654 | {
655 | "type":"aircraft",
656 | "color":"#fa3200",
657 | "color[]":[
658 | 250,
659 | 50,
660 | 0
661 | ],
662 | "blink":0,
663 | "icon":"Fighter",
664 | "icon_bg":"none",
665 | "x":0.475307,
666 | "y":0.482161,
667 | "dx":-0.181349,
668 | "dy":0.983419
669 | },
670 | {
671 | "type":"aircraft",
672 | "color":"#fa3200",
673 | "color[]":[
674 | 250,
675 | 50,
676 | 0
677 | ],
678 | "blink":0,
679 | "icon":"Fighter",
680 | "icon_bg":"none",
681 | "x":0.402661,
682 | "y":0.417556,
683 | "dx":-0.768329,
684 | "dy":0.640055
685 | },
686 | {
687 | "type":"aircraft",
688 | "color":"#185AFF",
689 | "color[]":[
690 | 24,
691 | 90,
692 | 255
693 | ],
694 | "blink":0,
695 | "icon":"Assault",
696 | "icon_bg":"none",
697 | "x":0.519623,
698 | "y":0.534389,
699 | "dx":0.895701,
700 | "dy":-0.444656
701 | },
702 | {
703 | "type":"aircraft",
704 | "color":"#185AFF",
705 | "color[]":[
706 | 24,
707 | 90,
708 | 255
709 | ],
710 | "blink":0,
711 | "icon":"Fighter",
712 | "icon_bg":"none",
713 | "x":0.520059,
714 | "y":0.525212,
715 | "dx":-0.824030,
716 | "dy":0.566547
717 | },
718 | {
719 | "type":"aircraft",
720 | "color":"#fa3200",
721 | "color[]":[
722 | 250,
723 | 50,
724 | 0
725 | ],
726 | "blink":0,
727 | "icon":"Assault",
728 | "icon_bg":"none",
729 | "x":0.507070,
730 | "y":0.496506,
731 | "dx":0.609693,
732 | "dy":0.792638
733 | },
734 | {
735 | "type":"aircraft",
736 | "color":"#185AFF",
737 | "color[]":[
738 | 24,
739 | 90,
740 | 255
741 | ],
742 | "blink":0,
743 | "icon":"Bomber",
744 | "icon_bg":"none",
745 | "x":0.479892,
746 | "y":0.564186,
747 | "dx":-0.248289,
748 | "dy":-0.968686
749 | },
750 | {
751 | "type":"aircraft",
752 | "color":"#fa3200",
753 | "color[]":[
754 | 250,
755 | 50,
756 | 0
757 | ],
758 | "blink":0,
759 | "icon":"Fighter",
760 | "icon_bg":"none",
761 | "x":0.483377,
762 | "y":0.466587,
763 | "dx":-0.287307,
764 | "dy":0.957839
765 | },
766 | {
767 | "type":"aircraft",
768 | "color":"#fa3200",
769 | "color[]":[
770 | 250,
771 | 50,
772 | 0
773 | ],
774 | "blink":0,
775 | "icon":"Fighter",
776 | "icon_bg":"none",
777 | "x":0.481083,
778 | "y":0.457683,
779 | "dx":-0.917524,
780 | "dy":0.397682
781 | },
782 | {
783 | "type":"aircraft",
784 | "color":"#185AFF",
785 | "color[]":[
786 | 24,
787 | 90,
788 | 255
789 | ],
790 | "blink":0,
791 | "icon":"Fighter",
792 | "icon_bg":"none",
793 | "x":0.498311,
794 | "y":0.559228,
795 | "dx":-0.217574,
796 | "dy":-0.976044
797 | },
798 | {
799 | "type":"aircraft",
800 | "color":"#185AFF",
801 | "color[]":[
802 | 24,
803 | 90,
804 | 255
805 | ],
806 | "blink":0,
807 | "icon":"Fighter",
808 | "icon_bg":"none",
809 | "x":0.518550,
810 | "y":0.536206,
811 | "dx":0.580185,
812 | "dy":-0.814485
813 | },
814 | {
815 | "type":"aircraft",
816 | "color":"#185AFF",
817 | "color[]":[
818 | 24,
819 | 90,
820 | 255
821 | ],
822 | "blink":0,
823 | "icon":"Fighter",
824 | "icon_bg":"none",
825 | "x":0.502116,
826 | "y":0.575078,
827 | "dx":0.023329,
828 | "dy":-0.999728
829 | },
830 | {
831 | "type":"aircraft",
832 | "color":"#185AFF",
833 | "color[]":[
834 | 24,
835 | 90,
836 | 255
837 | ],
838 | "blink":0,
839 | "icon":"Bomber",
840 | "icon_bg":"none",
841 | "x":0.500103,
842 | "y":0.634676,
843 | "dx":0.047070,
844 | "dy":-0.998892
845 | },
846 | {
847 | "type":"aircraft",
848 | "color":"#145CFF",
849 | "color[]":[
850 | 20,
851 | 92,
852 | 255
853 | ],
854 | "blink":0,
855 | "icon":"Fighter",
856 | "icon_bg":"none",
857 | "x":0.499884,
858 | "y":0.588305,
859 | "dx":-0.018434,
860 | "dy":-0.999830
861 | },
862 | {
863 | "type":"ground_model",
864 | "color":"#f01E00",
865 | "color[]":[
866 | 240,
867 | 30,
868 | 0
869 | ],
870 | "blink":1,
871 | "icon":"Tracked",
872 | "icon_bg":"none",
873 | "x":0.472717,
874 | "y":0.481426
875 | },
876 | {
877 | "type":"ground_model",
878 | "color":"#f01E00",
879 | "color[]":[
880 | 240,
881 | 30,
882 | 0
883 | ],
884 | "blink":1,
885 | "icon":"Tracked",
886 | "icon_bg":"none",
887 | "x":0.471689,
888 | "y":0.482305
889 | },
890 | {
891 | "type":"ground_model",
892 | "color":"#f01E00",
893 | "color[]":[
894 | 240,
895 | 30,
896 | 0
897 | ],
898 | "blink":1,
899 | "icon":"Tracked",
900 | "icon_bg":"none",
901 | "x":0.473983,
902 | "y":0.480976
903 | },
904 | {
905 | "type":"ground_model",
906 | "color":"#f01E00",
907 | "color[]":[
908 | 240,
909 | 30,
910 | 0
911 | ],
912 | "blink":1,
913 | "icon":"Tracked",
914 | "icon_bg":"none",
915 | "x":0.471588,
916 | "y":0.481391
917 | },
918 | {
919 | "type":"ground_model",
920 | "color":"#f01E00",
921 | "color[]":[
922 | 240,
923 | 30,
924 | 0
925 | ],
926 | "blink":1,
927 | "icon":"Tracked",
928 | "icon_bg":"none",
929 | "x":0.473734,
930 | "y":0.480335
931 | },
932 | {
933 | "type":"ground_model",
934 | "color":"#f01E00",
935 | "color[]":[
936 | 240,
937 | 30,
938 | 0
939 | ],
940 | "blink":1,
941 | "icon":"Tracked",
942 | "icon_bg":"none",
943 | "x":0.521665,
944 | "y":0.473948
945 | },
946 | {
947 | "type":"ground_model",
948 | "color":"#f01E00",
949 | "color[]":[
950 | 240,
951 | 30,
952 | 0
953 | ],
954 | "blink":1,
955 | "icon":"Tracked",
956 | "icon_bg":"none",
957 | "x":0.520970,
958 | "y":0.473514
959 | },
960 | {
961 | "type":"ground_model",
962 | "color":"#f01E00",
963 | "color[]":[
964 | 240,
965 | 30,
966 | 0
967 | ],
968 | "blink":1,
969 | "icon":"Tracked",
970 | "icon_bg":"none",
971 | "x":0.522814,
972 | "y":0.474704
973 | },
974 | {
975 | "type":"ground_model",
976 | "color":"#f01E00",
977 | "color[]":[
978 | 240,
979 | 30,
980 | 0
981 | ],
982 | "blink":1,
983 | "icon":"Tracked",
984 | "icon_bg":"none",
985 | "x":0.519762,
986 | "y":0.472490
987 | },
988 | {
989 | "type":"ground_model",
990 | "color":"#f01E00",
991 | "color[]":[
992 | 240,
993 | 30,
994 | 0
995 | ],
996 | "blink":1,
997 | "icon":"Tracked",
998 | "icon_bg":"none",
999 | "x":0.522441,
1000 | "y":0.473305
1001 | },
1002 | {
1003 | "type":"ground_model",
1004 | "color":"#f01E00",
1005 | "color[]":[
1006 | 240,
1007 | 30,
1008 | 0
1009 | ],
1010 | "blink":1,
1011 | "icon":"Tracked",
1012 | "icon_bg":"none",
1013 | "x":0.520382,
1014 | "y":0.473630
1015 | },
1016 | {
1017 | "type":"ground_model",
1018 | "color":"#f01E00",
1019 | "color[]":[
1020 | 240,
1021 | 30,
1022 | 0
1023 | ],
1024 | "blink":1,
1025 | "icon":"Tracked",
1026 | "icon_bg":"none",
1027 | "x":0.522528,
1028 | "y":0.473700
1029 | },
1030 | {
1031 | "type":"ground_model",
1032 | "color":"#185AFF",
1033 | "color[]":[
1034 | 24,
1035 | 90,
1036 | 255
1037 | ],
1038 | "blink":0,
1039 | "icon":"Airdefence",
1040 | "icon_bg":"none",
1041 | "x":0.500138,
1042 | "y":0.538097
1043 | },
1044 | {
1045 | "type":"ground_model",
1046 | "color":"#185AFF",
1047 | "color[]":[
1048 | 24,
1049 | 90,
1050 | 255
1051 | ],
1052 | "blink":0,
1053 | "icon":"Airdefence",
1054 | "icon_bg":"none",
1055 | "x":0.533624,
1056 | "y":0.520275
1057 | },
1058 | {
1059 | "type":"ground_model",
1060 | "color":"#f01E00",
1061 | "color[]":[
1062 | 240,
1063 | 30,
1064 | 0
1065 | ],
1066 | "blink":1,
1067 | "icon":"Airdefence",
1068 | "icon_bg":"none",
1069 | "x":0.531297,
1070 | "y":0.476932
1071 | },
1072 | {
1073 | "type":"ground_model",
1074 | "color":"#f01E00",
1075 | "color[]":[
1076 | 240,
1077 | 30,
1078 | 0
1079 | ],
1080 | "blink":1,
1081 | "icon":"Airdefence",
1082 | "icon_bg":"none",
1083 | "x":0.499581,
1084 | "y":0.459823
1085 | },
1086 | {
1087 | "type":"ground_model",
1088 | "color":"#f01E00",
1089 | "color[]":[
1090 | 240,
1091 | 30,
1092 | 0
1093 | ],
1094 | "blink":1,
1095 | "icon":"Airdefence",
1096 | "icon_bg":"none",
1097 | "x":0.463985,
1098 | "y":0.479311
1099 | },
1100 | {
1101 | "type":"ground_model",
1102 | "color":"#f01E00",
1103 | "color[]":[
1104 | 240,
1105 | 30,
1106 | 0
1107 | ],
1108 | "blink":1,
1109 | "icon":"Tracked",
1110 | "icon_bg":"none",
1111 | "x":0.497594,
1112 | "y":0.475134
1113 | },
1114 | {
1115 | "type":"ground_model",
1116 | "color":"#f01E00",
1117 | "color[]":[
1118 | 240,
1119 | 30,
1120 | 0
1121 | ],
1122 | "blink":1,
1123 | "icon":"Tracked",
1124 | "icon_bg":"none",
1125 | "x":0.496622,
1126 | "y":0.474872
1127 | },
1128 | {
1129 | "type":"ground_model",
1130 | "color":"#f01E00",
1131 | "color[]":[
1132 | 240,
1133 | 30,
1134 | 0
1135 | ],
1136 | "blink":1,
1137 | "icon":"Tracked",
1138 | "icon_bg":"none",
1139 | "x":0.497853,
1140 | "y":0.472884
1141 | },
1142 | {
1143 | "type":"ground_model",
1144 | "color":"#f01E00",
1145 | "color[]":[
1146 | 240,
1147 | 30,
1148 | 0
1149 | ],
1150 | "blink":1,
1151 | "icon":"Tracked",
1152 | "icon_bg":"none",
1153 | "x":0.494673,
1154 | "y":0.475199
1155 | },
1156 | {
1157 | "type":"ground_model",
1158 | "color":"#f01E00",
1159 | "color[]":[
1160 | 240,
1161 | 30,
1162 | 0
1163 | ],
1164 | "blink":1,
1165 | "icon":"Tracked",
1166 | "icon_bg":"none",
1167 | "x":0.497141,
1168 | "y":0.473307
1169 | },
1170 | {
1171 | "type":"ground_model",
1172 | "color":"#f01E00",
1173 | "color[]":[
1174 | 240,
1175 | 30,
1176 | 0
1177 | ],
1178 | "blink":1,
1179 | "icon":"Tracked",
1180 | "icon_bg":"none",
1181 | "x":0.496642,
1182 | "y":0.475713
1183 | },
1184 | {
1185 | "type":"ground_model",
1186 | "color":"#f01E00",
1187 | "color[]":[
1188 | 240,
1189 | 30,
1190 | 0
1191 | ],
1192 | "blink":1,
1193 | "icon":"Tracked",
1194 | "icon_bg":"none",
1195 | "x":0.498578,
1196 | "y":0.472251
1197 | },
1198 | {
1199 | "type":"ground_model",
1200 | "color":"#f01E00",
1201 | "color[]":[
1202 | 240,
1203 | 30,
1204 | 0
1205 | ],
1206 | "blink":1,
1207 | "icon":"Tracked",
1208 | "icon_bg":"none",
1209 | "x":0.494358,
1210 | "y":0.474550
1211 | },
1212 | {
1213 | "type":"ground_model",
1214 | "color":"#f01E00",
1215 | "color[]":[
1216 | 240,
1217 | 30,
1218 | 0
1219 | ],
1220 | "blink":1,
1221 | "icon":"Wheeled",
1222 | "icon_bg":"none",
1223 | "x":0.473091,
1224 | "y":0.483538
1225 | },
1226 | {
1227 | "type":"ground_model",
1228 | "color":"#f01E00",
1229 | "color[]":[
1230 | 240,
1231 | 30,
1232 | 0
1233 | ],
1234 | "blink":1,
1235 | "icon":"Wheeled",
1236 | "icon_bg":"none",
1237 | "x":0.475682,
1238 | "y":0.483553
1239 | },
1240 | {
1241 | "type":"ground_model",
1242 | "color":"#f01E00",
1243 | "color[]":[
1244 | 240,
1245 | 30,
1246 | 0
1247 | ],
1248 | "blink":1,
1249 | "icon":"Wheeled",
1250 | "icon_bg":"none",
1251 | "x":0.475418,
1252 | "y":0.483318
1253 | },
1254 | {
1255 | "type":"ground_model",
1256 | "color":"#f01E00",
1257 | "color[]":[
1258 | 240,
1259 | 30,
1260 | 0
1261 | ],
1262 | "blink":1,
1263 | "icon":"Wheeled",
1264 | "icon_bg":"none",
1265 | "x":0.519218,
1266 | "y":0.478347
1267 | },
1268 | {
1269 | "type":"ground_model",
1270 | "color":"#f01E00",
1271 | "color[]":[
1272 | 240,
1273 | 30,
1274 | 0
1275 | ],
1276 | "blink":1,
1277 | "icon":"Wheeled",
1278 | "icon_bg":"none",
1279 | "x":0.518820,
1280 | "y":0.477987
1281 | },
1282 | {
1283 | "type":"ground_model",
1284 | "color":"#f01E00",
1285 | "color[]":[
1286 | 240,
1287 | 30,
1288 | 0
1289 | ],
1290 | "blink":1,
1291 | "icon":"Wheeled",
1292 | "icon_bg":"none",
1293 | "x":0.519912,
1294 | "y":0.478738
1295 | },
1296 | {
1297 | "type":"ground_model",
1298 | "color":"#f01E00",
1299 | "color[]":[
1300 | 240,
1301 | 30,
1302 | 0
1303 | ],
1304 | "blink":1,
1305 | "icon":"Wheeled",
1306 | "icon_bg":"none",
1307 | "x":0.520768,
1308 | "y":0.475761
1309 | },
1310 | {
1311 | "type":"ground_model",
1312 | "color":"#f01E00",
1313 | "color[]":[
1314 | 240,
1315 | 30,
1316 | 0
1317 | ],
1318 | "blink":1,
1319 | "icon":"Wheeled",
1320 | "icon_bg":"none",
1321 | "x":0.519064,
1322 | "y":0.477471
1323 | },
1324 | {
1325 | "type":"ground_model",
1326 | "color":"#f01E00",
1327 | "color[]":[
1328 | 240,
1329 | 30,
1330 | 0
1331 | ],
1332 | "blink":1,
1333 | "icon":"Wheeled",
1334 | "icon_bg":"none",
1335 | "x":0.520430,
1336 | "y":0.478081
1337 | },
1338 | {
1339 | "type":"ground_model",
1340 | "color":"#f01E00",
1341 | "color[]":[
1342 | 240,
1343 | 30,
1344 | 0
1345 | ],
1346 | "blink":1,
1347 | "icon":"Wheeled",
1348 | "icon_bg":"none",
1349 | "x":0.497711,
1350 | "y":0.474337
1351 | },
1352 | {
1353 | "type":"ground_model",
1354 | "color":"#f01E00",
1355 | "color[]":[
1356 | 240,
1357 | 30,
1358 | 0
1359 | ],
1360 | "blink":1,
1361 | "icon":"Wheeled",
1362 | "icon_bg":"none",
1363 | "x":0.496434,
1364 | "y":0.474710
1365 | },
1366 | {
1367 | "type":"ground_model",
1368 | "color":"#f01E00",
1369 | "color[]":[
1370 | 240,
1371 | 30,
1372 | 0
1373 | ],
1374 | "blink":1,
1375 | "icon":"Wheeled",
1376 | "icon_bg":"none",
1377 | "x":0.497595,
1378 | "y":0.474083
1379 | },
1380 | {
1381 | "type":"ground_model",
1382 | "color":"#185AFF",
1383 | "color[]":[
1384 | 24,
1385 | 90,
1386 | 255
1387 | ],
1388 | "blink":0,
1389 | "icon":"Airdefence",
1390 | "icon_bg":"none",
1391 | "x":0.500124,
1392 | "y":0.538967
1393 | },
1394 | {
1395 | "type":"ground_model",
1396 | "color":"#185AFF",
1397 | "color[]":[
1398 | 24,
1399 | 90,
1400 | 255
1401 | ],
1402 | "blink":0,
1403 | "icon":"Airdefence",
1404 | "icon_bg":"none",
1405 | "x":0.534241,
1406 | "y":0.520890
1407 | },
1408 | {
1409 | "type":"ground_model",
1410 | "color":"#f01E00",
1411 | "color[]":[
1412 | 240,
1413 | 30,
1414 | 0
1415 | ],
1416 | "blink":1,
1417 | "icon":"Airdefence",
1418 | "icon_bg":"none",
1419 | "x":0.531926,
1420 | "y":0.476349
1421 | },
1422 | {
1423 | "type":"ground_model",
1424 | "color":"#f01E00",
1425 | "color[]":[
1426 | 240,
1427 | 30,
1428 | 0
1429 | ],
1430 | "blink":1,
1431 | "icon":"Airdefence",
1432 | "icon_bg":"none",
1433 | "x":0.499690,
1434 | "y":0.458967
1435 | },
1436 | {
1437 | "type":"ground_model",
1438 | "color":"#185AFF",
1439 | "color[]":[
1440 | 24,
1441 | 90,
1442 | 255
1443 | ],
1444 | "blink":0,
1445 | "icon":"Airdefence",
1446 | "icon_bg":"none",
1447 | "x":0.503429,
1448 | "y":0.648425
1449 | },
1450 | {
1451 | "type":"ground_model",
1452 | "color":"#185AFF",
1453 | "color[]":[
1454 | 24,
1455 | 90,
1456 | 255
1457 | ],
1458 | "blink":0,
1459 | "icon":"Airdefence",
1460 | "icon_bg":"none",
1461 | "x":0.506451,
1462 | "y":0.668608
1463 | },
1464 | {
1465 | "type":"ground_model",
1466 | "color":"#185AFF",
1467 | "color[]":[
1468 | 24,
1469 | 90,
1470 | 255
1471 | ],
1472 | "blink":0,
1473 | "icon":"Airdefence",
1474 | "icon_bg":"none",
1475 | "x":0.506843,
1476 | "y":0.685780
1477 | },
1478 | {
1479 | "type":"ground_model",
1480 | "color":"#185AFF",
1481 | "color[]":[
1482 | 24,
1483 | 90,
1484 | 255
1485 | ],
1486 | "blink":0,
1487 | "icon":"Airdefence",
1488 | "icon_bg":"none",
1489 | "x":0.520797,
1490 | "y":0.685028
1491 | },
1492 | {
1493 | "type":"ground_model",
1494 | "color":"#185AFF",
1495 | "color[]":[
1496 | 24,
1497 | 90,
1498 | 255
1499 | ],
1500 | "blink":0,
1501 | "icon":"Airdefence",
1502 | "icon_bg":"none",
1503 | "x":0.518712,
1504 | "y":0.667960
1505 | },
1506 | {
1507 | "type":"ground_model",
1508 | "color":"#185AFF",
1509 | "color[]":[
1510 | 24,
1511 | 90,
1512 | 255
1513 | ],
1514 | "blink":0,
1515 | "icon":"Airdefence",
1516 | "icon_bg":"none",
1517 | "x":0.515521,
1518 | "y":0.653629
1519 | },
1520 | {
1521 | "type":"ground_model",
1522 | "color":"#185AFF",
1523 | "color[]":[
1524 | 24,
1525 | 90,
1526 | 255
1527 | ],
1528 | "blink":0,
1529 | "icon":"Airdefence",
1530 | "icon_bg":"none",
1531 | "x":0.497746,
1532 | "y":0.664893
1533 | },
1534 | {
1535 | "type":"ground_model",
1536 | "color":"#185AFF",
1537 | "color[]":[
1538 | 24,
1539 | 90,
1540 | 255
1541 | ],
1542 | "blink":0,
1543 | "icon":"Airdefence",
1544 | "icon_bg":"none",
1545 | "x":0.500880,
1546 | "y":0.695685
1547 | },
1548 | {
1549 | "type":"ground_model",
1550 | "color":"#185AFF",
1551 | "color[]":[
1552 | 24,
1553 | 90,
1554 | 255
1555 | ],
1556 | "blink":0,
1557 | "icon":"Airdefence",
1558 | "icon_bg":"none",
1559 | "x":0.519896,
1560 | "y":0.660469
1561 | },
1562 | {
1563 | "type":"ground_model",
1564 | "color":"#185AFF",
1565 | "color[]":[
1566 | 24,
1567 | 90,
1568 | 255
1569 | ],
1570 | "blink":0,
1571 | "icon":"Airdefence",
1572 | "icon_bg":"none",
1573 | "x":0.517872,
1574 | "y":0.643780
1575 | },
1576 | {
1577 | "type":"ground_model",
1578 | "color":"#185AFF",
1579 | "color[]":[
1580 | 24,
1581 | 90,
1582 | 255
1583 | ],
1584 | "blink":0,
1585 | "icon":"Tracked",
1586 | "icon_bg":"none",
1587 | "x":0.478338,
1588 | "y":0.532686
1589 | },
1590 | {
1591 | "type":"ground_model",
1592 | "color":"#185AFF",
1593 | "color[]":[
1594 | 24,
1595 | 90,
1596 | 255
1597 | ],
1598 | "blink":0,
1599 | "icon":"Tracked",
1600 | "icon_bg":"none",
1601 | "x":0.479254,
1602 | "y":0.532779
1603 | },
1604 | {
1605 | "type":"ground_model",
1606 | "color":"#185AFF",
1607 | "color[]":[
1608 | 24,
1609 | 90,
1610 | 255
1611 | ],
1612 | "blink":0,
1613 | "icon":"Tracked",
1614 | "icon_bg":"none",
1615 | "x":0.477854,
1616 | "y":0.533289
1617 | },
1618 | {
1619 | "type":"ground_model",
1620 | "color":"#f01E00",
1621 | "color[]":[
1622 | 240,
1623 | 30,
1624 | 0
1625 | ],
1626 | "blink":1,
1627 | "icon":"Tracked",
1628 | "icon_bg":"none",
1629 | "x":0.493525,
1630 | "y":0.462784
1631 | },
1632 | {
1633 | "type":"ground_model",
1634 | "color":"#f01E00",
1635 | "color[]":[
1636 | 240,
1637 | 30,
1638 | 0
1639 | ],
1640 | "blink":1,
1641 | "icon":"Tracked",
1642 | "icon_bg":"none",
1643 | "x":0.492190,
1644 | "y":0.463486
1645 | },
1646 | {
1647 | "type":"ground_model",
1648 | "color":"#f01E00",
1649 | "color[]":[
1650 | 240,
1651 | 30,
1652 | 0
1653 | ],
1654 | "blink":1,
1655 | "icon":"Tracked",
1656 | "icon_bg":"none",
1657 | "x":0.493174,
1658 | "y":0.463140
1659 | },
1660 | {
1661 | "type":"ground_model",
1662 | "color":"#f01E00",
1663 | "color[]":[
1664 | 240,
1665 | 30,
1666 | 0
1667 | ],
1668 | "blink":1,
1669 | "icon":"Tracked",
1670 | "icon_bg":"none",
1671 | "x":0.491830,
1672 | "y":0.462916
1673 | },
1674 | {
1675 | "type":"ground_model",
1676 | "color":"#f01E00",
1677 | "color[]":[
1678 | 240,
1679 | 30,
1680 | 0
1681 | ],
1682 | "blink":1,
1683 | "icon":"Tracked",
1684 | "icon_bg":"none",
1685 | "x":0.524945,
1686 | "y":0.468107
1687 | },
1688 | {
1689 | "type":"ground_model",
1690 | "color":"#f01E00",
1691 | "color[]":[
1692 | 240,
1693 | 30,
1694 | 0
1695 | ],
1696 | "blink":1,
1697 | "icon":"Tracked",
1698 | "icon_bg":"none",
1699 | "x":0.524945,
1700 | "y":0.466195
1701 | },
1702 | {
1703 | "type":"ground_model",
1704 | "color":"#f01E00",
1705 | "color[]":[
1706 | 240,
1707 | 30,
1708 | 0
1709 | ],
1710 | "blink":1,
1711 | "icon":"Tracked",
1712 | "icon_bg":"none",
1713 | "x":0.525478,
1714 | "y":0.466438
1715 | },
1716 | {
1717 | "type":"ground_model",
1718 | "color":"#f01E00",
1719 | "color[]":[
1720 | 240,
1721 | 30,
1722 | 0
1723 | ],
1724 | "blink":1,
1725 | "icon":"Tracked",
1726 | "icon_bg":"none",
1727 | "x":0.524709,
1728 | "y":0.465501
1729 | },
1730 | {
1731 | "type":"ground_model",
1732 | "color":"#f01E00",
1733 | "color[]":[
1734 | 240,
1735 | 30,
1736 | 0
1737 | ],
1738 | "blink":1,
1739 | "icon":"Tracked",
1740 | "icon_bg":"none",
1741 | "x":0.469366,
1742 | "y":0.475009
1743 | },
1744 | {
1745 | "type":"ground_model",
1746 | "color":"#f01E00",
1747 | "color[]":[
1748 | 240,
1749 | 30,
1750 | 0
1751 | ],
1752 | "blink":1,
1753 | "icon":"Tracked",
1754 | "icon_bg":"none",
1755 | "x":0.468419,
1756 | "y":0.475746
1757 | },
1758 | {
1759 | "type":"ground_model",
1760 | "color":"#f01E00",
1761 | "color[]":[
1762 | 240,
1763 | 30,
1764 | 0
1765 | ],
1766 | "blink":1,
1767 | "icon":"Tracked",
1768 | "icon_bg":"none",
1769 | "x":0.468767,
1770 | "y":0.474847
1771 | },
1772 | {
1773 | "type":"ground_model",
1774 | "color":"#f01E00",
1775 | "color[]":[
1776 | 240,
1777 | 30,
1778 | 0
1779 | ],
1780 | "blink":1,
1781 | "icon":"Tracked",
1782 | "icon_bg":"none",
1783 | "x":0.468499,
1784 | "y":0.475254
1785 | },
1786 | {
1787 | "type":"ground_model",
1788 | "color":"#f01E00",
1789 | "color[]":[
1790 | 240,
1791 | 30,
1792 | 0
1793 | ],
1794 | "blink":1,
1795 | "icon":"Airdefence",
1796 | "icon_bg":"none",
1797 | "x":0.514671,
1798 | "y":0.462683
1799 | },
1800 | {
1801 | "type":"ground_model",
1802 | "color":"#f01E00",
1803 | "color[]":[
1804 | 240,
1805 | 30,
1806 | 0
1807 | ],
1808 | "blink":1,
1809 | "icon":"Airdefence",
1810 | "icon_bg":"none",
1811 | "x":0.481158,
1812 | "y":0.461869
1813 | },
1814 | {
1815 | "type":"ground_model",
1816 | "color":"#f01E00",
1817 | "color[]":[
1818 | 240,
1819 | 30,
1820 | 0
1821 | ],
1822 | "blink":1,
1823 | "icon":"Airdefence",
1824 | "icon_bg":"none",
1825 | "x":0.532386,
1826 | "y":0.477872
1827 | },
1828 | {
1829 | "type":"ground_model",
1830 | "color":"#f01E00",
1831 | "color[]":[
1832 | 240,
1833 | 30,
1834 | 0
1835 | ],
1836 | "blink":1,
1837 | "icon":"Airdefence",
1838 | "icon_bg":"none",
1839 | "x":0.530310,
1840 | "y":0.476298
1841 | },
1842 | {
1843 | "type":"ground_model",
1844 | "color":"#f01E00",
1845 | "color[]":[
1846 | 240,
1847 | 30,
1848 | 0
1849 | ],
1850 | "blink":1,
1851 | "icon":"Airdefence",
1852 | "icon_bg":"none",
1853 | "x":0.515792,
1854 | "y":0.463814
1855 | },
1856 | {
1857 | "type":"ground_model",
1858 | "color":"#f01E00",
1859 | "color[]":[
1860 | 240,
1861 | 30,
1862 | 0
1863 | ],
1864 | "blink":1,
1865 | "icon":"Airdefence",
1866 | "icon_bg":"none",
1867 | "x":0.513220,
1868 | "y":0.463393
1869 | },
1870 | {
1871 | "type":"ground_model",
1872 | "color":"#f01E00",
1873 | "color[]":[
1874 | 240,
1875 | 30,
1876 | 0
1877 | ],
1878 | "blink":1,
1879 | "icon":"Airdefence",
1880 | "icon_bg":"none",
1881 | "x":0.501019,
1882 | "y":0.459843
1883 | },
1884 | {
1885 | "type":"ground_model",
1886 | "color":"#f01E00",
1887 | "color[]":[
1888 | 240,
1889 | 30,
1890 | 0
1891 | ],
1892 | "blink":1,
1893 | "icon":"Airdefence",
1894 | "icon_bg":"none",
1895 | "x":0.498416,
1896 | "y":0.459962
1897 | },
1898 | {
1899 | "type":"ground_model",
1900 | "color":"#f01E00",
1901 | "color[]":[
1902 | 240,
1903 | 30,
1904 | 0
1905 | ],
1906 | "blink":1,
1907 | "icon":"Airdefence",
1908 | "icon_bg":"none",
1909 | "x":0.482748,
1910 | "y":0.461941
1911 | },
1912 | {
1913 | "type":"ground_model",
1914 | "color":"#f01E00",
1915 | "color[]":[
1916 | 240,
1917 | 30,
1918 | 0
1919 | ],
1920 | "blink":1,
1921 | "icon":"Airdefence",
1922 | "icon_bg":"none",
1923 | "x":0.480573,
1924 | "y":0.463375
1925 | },
1926 | {
1927 | "type":"ground_model",
1928 | "color":"#f01E00",
1929 | "color[]":[
1930 | 240,
1931 | 30,
1932 | 0
1933 | ],
1934 | "blink":1,
1935 | "icon":"Airdefence",
1936 | "icon_bg":"none",
1937 | "x":0.464893,
1938 | "y":0.478184
1939 | },
1940 | {
1941 | "type":"ground_model",
1942 | "color":"#f01E00",
1943 | "color[]":[
1944 | 240,
1945 | 30,
1946 | 0
1947 | ],
1948 | "blink":1,
1949 | "icon":"Airdefence",
1950 | "icon_bg":"none",
1951 | "x":0.463381,
1952 | "y":0.480307
1953 | },
1954 | {
1955 | "type":"ground_model",
1956 | "color":"#185AFF",
1957 | "color[]":[
1958 | 24,
1959 | 90,
1960 | 255
1961 | ],
1962 | "blink":0,
1963 | "icon":"Airdefence",
1964 | "icon_bg":"none",
1965 | "x":0.534225,
1966 | "y":0.519272
1967 | },
1968 | {
1969 | "type":"ground_model",
1970 | "color":"#185AFF",
1971 | "color[]":[
1972 | 24,
1973 | 90,
1974 | 255
1975 | ],
1976 | "blink":0,
1977 | "icon":"Airdefence",
1978 | "icon_bg":"none",
1979 | "x":0.532750,
1980 | "y":0.521420
1981 | },
1982 | {
1983 | "type":"ground_model",
1984 | "color":"#185AFF",
1985 | "color[]":[
1986 | 24,
1987 | 90,
1988 | 255
1989 | ],
1990 | "blink":0,
1991 | "icon":"Airdefence",
1992 | "icon_bg":"none",
1993 | "x":0.501269,
1994 | "y":0.537802
1995 | },
1996 | {
1997 | "type":"ground_model",
1998 | "color":"#185AFF",
1999 | "color[]":[
2000 | 24,
2001 | 90,
2002 | 255
2003 | ],
2004 | "blink":0,
2005 | "icon":"Airdefence",
2006 | "icon_bg":"none",
2007 | "x":0.498707,
2008 | "y":0.538274
2009 | },
2010 | {
2011 | "type":"ground_model",
2012 | "color":"#185AFF",
2013 | "color[]":[
2014 | 24,
2015 | 90,
2016 | 255
2017 | ],
2018 | "blink":0,
2019 | "icon":"Airdefence",
2020 | "icon_bg":"none",
2021 | "x":0.466205,
2022 | "y":0.519219
2023 | },
2024 | {
2025 | "type":"defending_point",
2026 | "color":"#185AFF",
2027 | "color[]":[
2028 | 24,
2029 | 90,
2030 | 255
2031 | ],
2032 | "blink":0,
2033 | "icon":"defending_point",
2034 | "icon_bg":"none",
2035 | "x":0.358463,
2036 | "y":0.584135
2037 | },
2038 | {
2039 | "type":"bombing_point",
2040 | "color":"#fa3200",
2041 | "color[]":[
2042 | 250,
2043 | 50,
2044 | 0
2045 | ],
2046 | "blink":0,
2047 | "icon":"bombing_point",
2048 | "icon_bg":"none",
2049 | "x":0.634161,
2050 | "y":0.393387
2051 | },
2052 | {
2053 | "type":"defending_point",
2054 | "color":"#185AFF",
2055 | "color[]":[
2056 | 24,
2057 | 90,
2058 | 255
2059 | ],
2060 | "blink":0,
2061 | "icon":"defending_point",
2062 | "icon_bg":"none",
2063 | "x":0.563007,
2064 | "y":0.600426
2065 | },
2066 | {
2067 | "type":"bombing_point",
2068 | "color":"#fa3200",
2069 | "color[]":[
2070 | 250,
2071 | 50,
2072 | 0
2073 | ],
2074 | "blink":0,
2075 | "icon":"bombing_point",
2076 | "icon_bg":"none",
2077 | "x":0.579187,
2078 | "y":0.414266
2079 | },
2080 | {
2081 | "type":"defending_point",
2082 | "color":"#185AFF",
2083 | "color[]":[
2084 | 24,
2085 | 90,
2086 | 255
2087 | ],
2088 | "blink":0,
2089 | "icon":"defending_point",
2090 | "icon_bg":"none",
2091 | "x":0.642489,
2092 | "y":0.575685
2093 | },
2094 | {
2095 | "type":"bombing_point",
2096 | "color":"#fa3200",
2097 | "color[]":[
2098 | 250,
2099 | 50,
2100 | 0
2101 | ],
2102 | "blink":0,
2103 | "icon":"bombing_point",
2104 | "icon_bg":"none",
2105 | "x":0.361541,
2106 | "y":0.418501
2107 | },
2108 | {
2109 | "type":"defending_point",
2110 | "color":"#185AFF",
2111 | "color[]":[
2112 | 24,
2113 | 90,
2114 | 255
2115 | ],
2116 | "blink":0,
2117 | "icon":"defending_point",
2118 | "icon_bg":"none",
2119 | "x":0.415718,
2120 | "y":0.606006
2121 | },
2122 | {
2123 | "type":"bombing_point",
2124 | "color":"#fa3200",
2125 | "color[]":[
2126 | 250,
2127 | 50,
2128 | 0
2129 | ],
2130 | "blink":0,
2131 | "icon":"bombing_point",
2132 | "icon_bg":"none",
2133 | "x":0.421365,
2134 | "y":0.394176
2135 | },
2136 | {
2137 | "type":"respawn_base_fighter",
2138 | "color":"#185AFF",
2139 | "color[]":[
2140 | 24,
2141 | 90,
2142 | 255
2143 | ],
2144 | "blink":0,
2145 | "icon":"respawn_base_fighter",
2146 | "icon_bg":"none",
2147 | "x":0.500008,
2148 | "y":0.590881,
2149 | "dx":0.000023,
2150 | "dy":-300.000000
2151 | },
2152 | {
2153 | "type":"respawn_base_fighter",
2154 | "color":"#fa3200",
2155 | "color[]":[
2156 | 250,
2157 | 50,
2158 | 0
2159 | ],
2160 | "blink":0,
2161 | "icon":"respawn_base_fighter",
2162 | "icon_bg":"none",
2163 | "x":0.499986,
2164 | "y":0.407975,
2165 | "dx":0.000023,
2166 | "dy":300.000000
2167 | },
2168 | {
2169 | "type":"respawn_base_bomber",
2170 | "color":"#185AFF",
2171 | "color[]":[
2172 | 24,
2173 | 90,
2174 | 255
2175 | ],
2176 | "blink":0,
2177 | "icon":"respawn_base_bomber",
2178 | "icon_bg":"none",
2179 | "x":0.499978,
2180 | "y":0.651926,
2181 | "dx":0.000023,
2182 | "dy":-300.000000
2183 | },
2184 | {
2185 | "type":"respawn_base_bomber",
2186 | "color":"#fa3200",
2187 | "color[]":[
2188 | 250,
2189 | 50,
2190 | 0
2191 | ],
2192 | "blink":0,
2193 | "icon":"respawn_base_bomber",
2194 | "icon_bg":"none",
2195 | "x":0.499998,
2196 | "y":0.346863,
2197 | "dx":0.000023,
2198 | "dy":300.000000
2199 | }
2200 | ]
2201 | ```
2202 |
2203 | ### HTTP Response
2204 | - Retrieves a JSON containing a array of [MapObject](#MapObject)
2205 |
2206 | ### MapObject
2207 | - #### Fields
2208 | - name: **type**
2209 | * contains: string
2210 | * description: the type of map object can be one of the following values -> _ground_model_, _aircraft_
2211 |
2212 | - name: **color**
2213 | * contains: string
2214 | * description: the hex color code associated to the object
2215 |
2216 | - name: **color[]**
2217 | * contains: array of string
2218 | * description: the RGB code for each color associated to the object
2219 |
2220 | - name: **blink**
2221 | * contains: integer
2222 | * description:
2223 |
2224 | - name: **icon**
2225 | * contains: string
2226 | * description: the name of the icon associated to object. If this value is **Player** then the current object is the current player.
2227 |
2228 | - name: **icon_bg**
2229 | * contains: string
2230 | * description: the name of background icon associated to the object
2231 |
2232 | - name: **x**
2233 | * contains: float
2234 | * description: the _x_ position of player in map
2235 |
2236 | - name: **y**
2237 | * contains: float
2238 | * description: the _y_ position of player in map
2239 |
2240 | - name: **sx** (airfields only)
2241 | * contains: float
2242 | * description:
2243 |
2244 | - name: **sy** (airfields only)
2245 | * contains: float
2246 | * description:
2247 |
2248 | - name: **ex** (airfields only)
2249 | * contains: float
2250 | * description:
2251 |
2252 | - name: **ey** (airfields only)
2253 | * contains: float
2254 | * description:
2255 |
2256 | - name: **dx** (aircrafts only)
2257 | * contains: float
2258 | * description: x-component of direction vector of aircraft: $\texttt{dx} = cos(\vec V)$
2259 |
2260 | - name: **dy** (aircrafts only)
2261 | * contains: float
2262 | * description: y-component of direction vector of aircraft: $\texttt{dy} = sin(\vec V)$
2263 |
--------------------------------------------------------------------------------
/Mapinfo/MapInfo.md:
--------------------------------------------------------------------------------
1 | # MapInfo
2 | - Contains information about current map
3 |
4 |
5 |
6 | #### HTTP Request
7 | - GET http://localhost:8111/map_info.json
8 | - GET http://localhost:8111/map.img
9 |
10 | #### HTTP Response :white_check_mark:
11 | ```json
12 | {
13 | "grid_steps": [
14 | "3250.0",
15 | "3250.0"
16 | ],
17 | "grid_zero": [
18 | "-32768.0",
19 | "32768.0"
20 | ],
21 | "map_generation": "1",
22 | "map_max": [
23 | "32768.0",
24 | "32768.0"
25 | ],
26 | "map_min": [
27 | "-32768.0",
28 | "-32768.0"
29 | ]
30 | }
31 | ```
32 |
33 | ### Fields
34 |
35 | - name: **grid_steps**
36 | * contains: array of floats
37 | * description:
38 |
39 | - name: **grid_zero**
40 | * contains: array of floats
41 | * description:
42 |
43 | - name: **map_generation**
44 | * contains: integer
45 | * description:
46 |
47 | - name: **map_max**
48 | * contains: array of floats
49 | * description:
50 |
51 | - name: **map_min**
52 | * contains: array of floats
53 | * description:
--------------------------------------------------------------------------------
/Mission/Mission.md:
--------------------------------------------------------------------------------
1 | # Mission
2 | - This URL retrieves data from the current mission
3 |
4 |
5 |
6 | #### HTTP Request
7 |
8 | - GET http://localhost:8111/mission.json
9 |
10 | #### Query parameters
11 |
12 | - None
13 |
14 | #### HTTP Response :white_check_mark:
15 |
16 | - Example:
17 |
18 | ```json
19 | {
20 | "objectives" : [
21 | {
22 | "primary" : true,
23 | "status" : "in_progress",
24 | "text" : "Decole"
25 | }
26 | ],
27 | "status" : "running"
28 | }
29 | ```
30 |
31 | ### Fields
32 | - name: **objectives**
33 | * type: JSON array containing all mission objectives
34 | * description:
35 |
36 | - name: **primary**
37 | * type: boolean
38 | * description: flag to determine if this is a primary mission
39 |
40 | - name: **status**
41 | * type: string
42 | * description: contains the status of current primary objective
43 | * possible values: "in_progress", "completed" or "failed"
44 |
45 | - name: **text**
46 | * type: string
47 | * description: contains instruction of what the player needs to do for complete the mission
48 |
49 | - name: **status**
50 | - type: string
51 | - descruption: contains status of the current mission can be "running" or "fail"
52 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | # War Thunder localhost API docs
3 | Repository dedicated to provide a full documentation to War Thunder localhost:8111 api
4 |
5 | # API Client Implementation
6 | - [https://github.com/lucasvmx/WarTelemetry](https://github.com/lucasvmx/WarTelemetry)
7 |
8 | # Documents
9 | - [GameChat](Gamechat/GameChat.md)
10 | - [HudMsg](Hudmsg/Hudmsg.md)
11 | - [Indicators](Indicators/Indicators.md)
12 | - [MapObjects](MapObjects/MapObjects.md)
13 | - [MapInfo](Mapinfo/MapInfo.md)
14 | - [Mission](Mission/Mission.md)
15 | - [State](State/State.md)
16 |
17 | # Endpoints
18 | - http://localhost:8111/gamechat
19 | - http://localhost:8111/hudmsg
20 | - http://localhost:8111/indicators
21 | - http://localhost:8111/map_info.json
22 | - http://localhost:8111/map_obj.json
23 | - http://localhost:8111/mission.json
24 | - http://localhost:8111/state
25 | - http://localhost:8111/map.img
26 |
27 | # War Thunder
28 | You can download War Thunder by clicking [here](https://warthunder.com/en/game/)
29 |
--------------------------------------------------------------------------------
/State/State.md:
--------------------------------------------------------------------------------
1 | # State
2 | - This URL retrieves data of current aircraft state
3 |
4 |
5 |
6 | #### HTTP Request
7 |
8 | - GET http://localhost:8111/state
9 |
10 | - Example:
11 |
12 | ```json
13 | {
14 | "valid":true,
15 | "aileron, %":-0,
16 | "elevator, %":-20,
17 | "rudder, %":-0,
18 | "flaps, %":0,
19 | "H, m":4936,
20 | "TAS, km/h":237,
21 | "IAS, km/h":185,
22 | "M":0.20,
23 | "AoA, deg":1.1,
24 | "AoS, deg":-0.1,
25 | "Ny":1.00,
26 | "Vy, m/s":3.2,
27 | "Wx, deg/s":-0,
28 | "Mfuel, kg":750,
29 | "Mfuel0, kg":2620,
30 | "throttle 1, %":100,
31 | "mixture 1, %":100,
32 | "magneto 1":3,
33 | "power 1, hp":484.0,
34 | "RPM 1":1957,
35 | "manifold pressure 1, atm":0.81,
36 | "oil temp 1, C":73,
37 | "pitch 1, deg":28.2,
38 | "thrust 1, kgs":473,
39 | "efficiency 1, %":85,
40 | "throttle 2, %":100,
41 | "mixture 2, %":100,
42 | "magneto 2":3,
43 | "power 2, hp":501.2,
44 | "RPM 2":2016,
45 | "manifold pressure 2, atm":0.82,
46 | "oil temp 2, C":75,
47 | "pitch 2, deg":28.2,
48 | "thrust 2, kgs":488,
49 | "efficiency 2, %":84,
50 | "throttle 3, %":100,
51 | "mixture 3, %":100,
52 | "magneto 3":3,
53 | "power 3, hp":483.9,
54 | "RPM 3":1957,
55 | "manifold pressure 3, atm":0.81,
56 | "oil temp 3, C":73,
57 | "pitch 3, deg":28.2,
58 | "thrust 3, kgs":473,
59 | "efficiency 3, %":85
60 | }
61 | ```
62 |
63 | ### Fields
64 |
65 | #### Legend
66 |
67 |
68 | Symbol |
69 | Description |
70 |
71 |
72 | N |
73 | The engine number |
74 |
75 |
76 |
77 | - name: **valid**
78 | * contains: boolean
79 | * description:
80 |
81 | - name: **aileron, %**
82 | * contains: integer
83 | * description:
84 |
85 | - name: **elevator, %**
86 | * contains: integer
87 | * description:
88 |
89 | - name: **rudder, %**
90 | * contains: integer
91 | * description:
92 |
93 | - name: **H, m**
94 | * contains: integer
95 | * description: current aircraft altitude in meters
96 |
97 | - name: **TAS, km/h**
98 | * contains: integer
99 | * description: the true airspeed in kilometers per hour
100 |
101 | - name: **IAS, km/h**
102 | * contains: integer
103 | * description: the indicated airspeed in kilometers per hour
104 |
105 | - name: **M**
106 | * contains: decimal
107 | * description:
108 |
109 | - name: **AoA, deg**
110 | * contains: decimal
111 | * description: aircraft angle of attack in degrees
112 |
113 | - name: **AoS, deg**
114 | * contains: decimal
115 | * description:
116 |
117 | - name: **Ny**
118 | * contains: decimal
119 | * description:
120 |
121 | - name: **Vy, m/s**
122 | * contains: decimal
123 | * description: aircraft vertical speed in meters per second
124 |
125 | - name: **Wx, deg/s**
126 | * contains: integer
127 | * description: aircraft rotation on *x* axis in degrees per second
128 |
129 | - name: **Mfuel, kg**
130 | * contains: integer
131 | * description:
132 |
133 | - name: **Mfuel0, kg**
134 | * contains: integer
135 | * description:
136 |
137 | - name: **throttle _N_, %**
138 | * contains: integer
139 | * description:
140 |
141 | - name: **radiator _N_, %**
142 | * contains: integer
143 | * description:
144 |
145 | - name: **magneto _N_**
146 | * contains: integer
147 | * description:
148 |
149 | - name: **power _N_, hp**
150 | * contains: decimal
151 | * description: power of engine nº 1 in horse-power
152 |
153 | - name: **RPM _N_**
154 | * contains: integer
155 | * description:
156 |
157 | - name: **manifold pressure _N_, atm**
158 | * contains: decimal
159 | * description:
160 |
161 | - name: **water temp _N_, C**
162 | * contains: integer
163 | * description: water temperature of engine nº 1 in celsius
164 |
165 | - name: **oil temp _N_, C**
166 | * contains: integer
167 | * description:
168 |
169 | - name: **pitch _N_, deg**
170 | * contains: decimal
171 | * description:
172 |
173 | - name: **thrust _N_, kgs**
174 | * contains: integer
175 | * description:
176 |
177 | - name: **efficiency _N_, %**
178 | * contains: integer
179 | * description:
180 |
181 |
182 |
--------------------------------------------------------------------------------
/script.py:
--------------------------------------------------------------------------------
1 | #
2 | # Python script to get localhost JSON data and transform into markdown fields
3 | #
4 |
5 | import json
6 | import os
7 | import os.path
8 | import urllib
9 | import urllib.request
10 | from sys import exit
11 |
12 | # URL constants
13 | base_url = 'http://localhost:8111'
14 | gamechat_url = f'{base_url}/gamechat'
15 | hudmsg_url = f'{base_url}/hudmsg'
16 | indicators_url = f'{base_url}/indicators'
17 | mapobjects_url = f'{base_url}/map_obj.json'
18 | mapinfo_url = f'{base_url}/map_info.json'
19 | mission_url = f'{base_url}/mission.json'
20 | state_url = f'{base_url}/state'
21 |
22 | # Filename constants
23 | gamechat_file = 'gamechat.md'
24 | hudmsg_file = 'hudmsg.md'
25 | indicators_file = 'indicators.md'
26 | mapobjects_file = 'mapobjects.md'
27 | mapinfo_file = 'mapinfo.md'
28 | mission_file = 'mission.md'
29 | state_file = 'state.md'
30 |
31 | # Type constants
32 | wt_data_types = {
33 | "GAMECHAT": { "URL": gamechat_url, "FILE": gamechat_file},
34 | "HUDMSG": { "URL": hudmsg_url, "FILE": hudmsg_file},
35 | "INDICATORS": { "URL": indicators_url, "FILE": indicators_file },
36 | "MAPOBJECTS": { "URL": mapobjects_url, "FILE": mapobjects_file },
37 | "MAPINFO": { "URL": mapinfo_url, "FILE": mapinfo_file },
38 | "MISSION": { "URL": mission_url, "FILE": mission_file },
39 | "STATE": { "URL": state_url, "FILE": state_file }
40 | }
41 |
42 | def get_correct_typename(typename: str):
43 | v = {
44 | "str": "string",
45 | "bool": "boolean",
46 | "int": "integer",
47 | "float": "decimal"
48 | }
49 |
50 | for k in v.keys():
51 | if k == typename:
52 | return v[f'{k}']
53 |
54 | return typename
55 |
56 | def get_url_and_filename(data_type: str):
57 | if not data_type in wt_data_types.keys():
58 | raise("invalid key")
59 |
60 | return [wt_data_types[data_type]["URL"], wt_data_types[data_type]["FILE"]]
61 |
62 | def get_wt_data(data_type: str):
63 |
64 | data: bytes = b''
65 |
66 | output_folder = "OUTPUT"
67 |
68 | try:
69 | os.mkdir(output_folder)
70 | except:
71 | pass
72 |
73 | # Extract data
74 | try:
75 | global url, filename
76 | url, filename = get_url_and_filename(data_type)
77 | except Exception as e:
78 | print("could not get url and filename: {}".format(e))
79 | exit(1)
80 |
81 | data: bytes = b''
82 |
83 | # Do HTTP request
84 | try:
85 | with urllib.request.urlopen(url) as f:
86 | print("requesting {}".format(url))
87 | data += f.read()
88 | except:
89 | print("failed to get resource: {}".format(url))
90 | return
91 |
92 | payload = data.decode('utf-8')
93 | json_info = list[str](json.loads(payload))
94 |
95 | # Write result to markdown
96 | dest_file = os.path.join(output_folder, filename)
97 |
98 | with open(dest_file, "w") as file:
99 | index = 0
100 | for k in json_info:
101 | datatype = str(type(json_info[index]))
102 | start = datatype.find('\'')
103 | end = datatype.find('\'', start + 1)
104 | if end == -1:
105 | print('error')
106 | continue
107 |
108 | _type = get_correct_typename(datatype[start+1:end:])
109 | name = k
110 |
111 | markdown = f"""
112 | - name: **{name}**
113 | * contains: {_type}
114 | * description:
115 | """
116 |
117 | file.write(markdown)
118 | index+=1
119 |
120 | def get_all_wt_data():
121 |
122 | for key in wt_data_types.keys():
123 | get_wt_data(key)
124 |
125 |
126 | if __name__ == "__main__":
127 | get_all_wt_data()
128 |
--------------------------------------------------------------------------------