Fixing typos and added text for Automatic dynamic loading and IDEs

This commit is contained in:
kaltokri 2024-02-15 16:45:51 +01:00
parent 0ee7a38c61
commit 51f134538d

View File

@ -26,21 +26,21 @@ files on [GitHub] with a browser. But using [Git] will ease up the steps to keep
the Moose version on your hard disk up to date. the Moose version on your hard disk up to date.
You will need to interact with [GitHub]. At least to download the Moose files. You will need to interact with [GitHub]. At least to download the Moose files.
For non developers the page can be confusing. Take your time and read this For non-developers the page can be confusing. Take your time and read this
documentation. We are not able to explain every single detail on using [GitHub] documentation. We are not able to explain every single detail on using [GitHub]
and [Git]. Especially because it is changing really quick and this documentaion and [Git]. Especially because it is changing really quick and this documentation
will not. So try to use the help system of [GitHub] or find some videos on will not. So try to use the help system of [GitHub] or find some videos on
[YouTube]. If you get stuck ask for help in the [Moose Discord]. [YouTube]. If you get stuck ask for help in the [Moose Discord].
Moose uses more then one repository on [GitHub] which doesn't exactly make it Moose uses more than one repository on [GitHub] which doesn't exactly make it
any clearer. A list can be found on the [reposities] page. any clearer. A list can be found on the [reposities] page.
# Branches: master & develop # Branches: master & develop
As already explained in the [overview] two branches are used: As already explained in the [overview] two branches are used:
- [master]: Stable release branch. - Branch [master]: Stable release branch.
- [develop]: Newest development with more OPS classes. - Branch [develop]: Newest development with more OPS classes.
As a starter it is okay to begin your journey with the `master` branch. As a starter it is okay to begin your journey with the `master` branch.
If you are interested in some newer classes you need to use the `develop` If you are interested in some newer classes you need to use the `develop`
@ -48,8 +48,8 @@ branch. The later one is also very stable, but it's missing more detailed
documentation and example missions for some of the new OPS classes. documentation and example missions for some of the new OPS classes.
You can switch between these branches with a drop down in the upper left corner You can switch between these branches with a drop down in the upper left corner
of th [GitHub] repository page. The list of branches is long. So it is a best of the [GitHub] repository page. The list of branches is long. So it is a best
practise to save a bookmark in your browser with the links above. practice to save a bookmark in your browser with the links above.
Both branches are available on most of the different repositories. But because Both branches are available on most of the different repositories. But because
of a limitation of [GitHub pages], we had to split the documentation in two of a limitation of [GitHub pages], we had to split the documentation in two
different repositories: different repositories:
@ -61,7 +61,7 @@ different repositories:
Moose consists of more than 140 individual files with the file extension `.lua`. Moose consists of more than 140 individual files with the file extension `.lua`.
They are places in a [directory tree], which makes it more organized and its They are places in a [directory tree], which makes it more organized and its
semantic is pre-defined for IntelliSense to work. semantic is pre-defined for [IntelliSense] to work.
On every change which is pushed to [GitHub] a build job will combine all of On every change which is pushed to [GitHub] a build job will combine all of
these files to a single file called `Moose.lua`. In a second step all these files to a single file called `Moose.lua`. In a second step all
@ -69,9 +69,9 @@ comments will be removed to decrease the file size and the result will be saved
as `Moose_.lua`. These both files are created for users of Moose to include in as `Moose_.lua`. These both files are created for users of Moose to include in
your missions. your missions.
The individual `.lua` files are used by the Mosse developers and power users. The individual `.lua` files are used by the Moose developers and power users.
It is complicated to use them, but in combination with an IDE and a debugger it It is complicated to use them, but in combination with an IDE and a debugger it
is very usefull to analyse even complex problems or write new additions to the is very useful to analyze even complex problems or write new additions to the
Moose framework. Moose framework.
# Static loading # Static loading
@ -84,7 +84,7 @@ with another file ending.
If you change the script file after adding it to the mission, the changes are If you change the script file after adding it to the mission, the changes are
not available on mission start. You have to re-add the script after each change. not available on mission start. You have to re-add the script after each change.
This can be very annoying and often leads to forgetting to add the change again. This can be very annoying and often leads to forgetting to add the change again.
Then you wonder why the script does not deliver the desired result. Then you wonder why the mission does not deliver the desired result.
But when the mission is finished you can upload it to your dedicated DCS server But when the mission is finished you can upload it to your dedicated DCS server
or give it to a friend and it should run without problems. This way of embedding or give it to a friend and it should run without problems. This way of embedding
@ -95,7 +95,7 @@ portable.
The other way of loading scripts is by using `DO SCRIPT`. This time the mission The other way of loading scripts is by using `DO SCRIPT`. This time the mission
editor don't show a file browse button. Instead you see a (very small) text editor don't show a file browse button. Instead you see a (very small) text
field to enter the code directly into it. It is only usefull for very small field to enter the code directly into it. It is only useful for very small
script snippets. But we can use it to load a file from your hard drive like script snippets. But we can use it to load a file from your hard drive like
this: this:
@ -107,14 +107,14 @@ dofile([[C:\MyScripts\hello-world.lua]])
So all lines above do the same. In [Lua] you need to specify the path with So all lines above do the same. In [Lua] you need to specify the path with
slashes, escape backslashes or use double square brackets around the string. slashes, escape backslashes or use double square brackets around the string.
But double square brackets is usefull, because you can copy paste the path Double square brackets are usefull, because you can copy paste the path
without any modification. without any modification.
If you upload a mission with this code, you need to create the folder If you upload a mission with this code, you need to create the folder
`C:\MyScripts\` on the server file system and upload the newest version of `C:\MyScripts\` on the server file system and upload the newest version of
`hello-world.lua`, too. The same applies if you give the mission to a friend. `hello-world.lua`, too. The same applies, if you give the mission to a friend.
This makes the mission less portable, but on the other hand the mission uses the This makes the mission less portable, but on the other hand the mission uses the
file on the hard disk without the need to add it to the mission again. file on the hard disk, without the need to add it to the mission again.
All you need to do is save the file and restart the mission. All you need to do is save the file and restart the mission.
The following can be used to increase portability: The following can be used to increase portability:
@ -129,7 +129,7 @@ structure is already available on all target systems. But you need to ensure
mission and script are both in sync to avoid problems. If you changed both and mission and script are both in sync to avoid problems. If you changed both and
upload only one of them to your server, you may get trouble. upload only one of them to your server, you may get trouble.
There is another method you may find usefull to dynamically load scripts: There is another method you may find useful to dynamically load scripts:
```lua ```lua
assert(loadfile('C:/MyScripts/hello-world.lua'))() assert(loadfile('C:/MyScripts/hello-world.lua'))()
@ -138,7 +138,7 @@ assert(loadfile([[C:\MyScripts\hello-world.lua]]))()
``` ```
It is a little bit harder to read and write because of all these different It is a little bit harder to read and write because of all these different
brackets. Especially the one on line 3. But it is a little safer then `dofile`. brackets. Especially the one on line 3. But it is a little safer than `dofile`.
Because of readability I prefer to use `dofile`. Because of readability I prefer to use `dofile`.
# Dynamic loading of Moose # Dynamic loading of Moose
@ -150,11 +150,31 @@ will use the new version. But I prefer to add Moose by a `DO SCRIPT FILE`
trigger so I can add and test the new version for each mission step by step. trigger so I can add and test the new version for each mission step by step.
But we added two different ways to load the Moose source files automatically. But we added two different ways to load the Moose source files automatically.
This is usefull for Moose developers and it is a requirement to use a debugger. This is useful for Moose developers and it is a requirement to use a debugger.
This will be explained later in the [Debugger Guide]. This will be explained later in the [Debugger Guide].
# Automatic dynamic loading # Automatic dynamic loading
With the code below you can have the advantages of both approaches.
- Copy the code into your mission script at the beginning.
- Save the mission script into the folder Missions in your [Saved Games folder].
- Change script filename in line 2 to match to your script.
- [De-Sanitize] your `MissionScripting.lua`.
Now the mission will use the script on your hard drive instead of the script
embedded in th MIZ file, as long as it is available. So you can chnge the
script, save it and restart the mission, without the need to readd it after each
change.
If you reach a stable state in your script development and want to upload the
mission to your server or give it to a friend, then just add the script again
like in the static method and save the mission.
{: .important }
> Do not forget to readd the script, prior uploading or sharing the mission,
> or it will run with an outdated version of your script and may fail if the
> objects in the mission don't match to this old version.
```lua ```lua
-- Use script file from hard disk instead of the one included in the .miz file -- Use script file from hard disk instead of the one included in the .miz file
if lfs and io then if lfs and io then
@ -165,13 +185,13 @@ if lfs and io then
if f~=nil then if f~=nil then
io.close(f) io.close(f)
env.info( '*** LOAD MOOSE MISSION SCRIPT FROM HARD DISK *** ' ) env.info( '*** LOAD MISSION SCRIPT FROM HARD DISK *** ' )
dofile(MissionScript) dofile(MissionScript)
do return end do return end
end end
end end
else else
env.error( '*** LOAD MOOSE MISSION SCRIPT FROM HARD DISK FAILED (Desanitize lfs and io)*** ' ) env.error( '*** LOAD MISSION SCRIPT FROM HARD DISK FAILED (Desanitize lfs and io)*** ' )
end end
-- --
@ -182,7 +202,41 @@ MESSAGE:New( "Hello World! This messages is printed by MOOSE!", 35, "INFO" ):ToA
# IDE vs. Notepad++ # IDE vs. Notepad++
As a beginner you should start with a good text editor, which supports syntax
highlighting of [Lua] code. This must not be [Notepad++]. It can be any other
powerful editor of your choice. Do yourself a favor and don't use the Windows
editor.
If you are a developer of [Lua] or another programming language, then your are
most likely familiar with an IDE (Integrated Develop Environment).
Otherwise you should know, that an IDE may help you with code completion,
Refactoring, Autocorrection, Formatting Source Code, showing documentation
as popup on mouse hover over keywords and Debugging.
There are different IDEs available. And not all IDEs support all features.
The three most important for Moose are:
- [Eclipse LDT]
- [Visual Studio Code]
- [PyCharm] (or [IntelliJ IDEA])
Eclipse has the best support for hover documentation and [IntelliSense] with
Moose. The Inventor of Moose (FlightControl) did an amazing job by adding an
integration to Eclipse LDT (a special version for Lua).
Unfortunately Eclipse LDT is not maintained any longer (last release 2018).
And the debugger doesn't work anymore, since an update of DCS.
In Visual Studio Code the support of Lua can be added by an addon.
The debugger works with Moose and DCS, but showing the LuaDoc and [IntelliSense]
is very limited.
PyCharm supports Lua also with an addon. The debugger works with Moose and DCS,
but showing the LuaDoc and [IntelliSense] is very limited.
It is up to you to choose the IDE according to your taste. Guides on how to
setup Moose with different IDEs and Debuggers are provided later in this
documentation.
[Git]: https://en.wikipedia.org/wiki/Git [Git]: https://en.wikipedia.org/wiki/Git
[GitHub]: https://github.com/ [GitHub]: https://github.com/
@ -200,3 +254,10 @@ MESSAGE:New( "Hello World! This messages is printed by MOOSE!", 35, "INFO" ):ToA
[Lua]: https://www.lua.org/ [Lua]: https://www.lua.org/
[Create your own Hello world]: ../beginner/hello-world-build.md [Create your own Hello world]: ../beginner/hello-world-build.md
[Debugger Guide]: debugger.md [Debugger Guide]: debugger.md
[IntelliSense]: https://en.wikipedia.org/wiki/IntelliSense
[De-Sanitize]: desanitize-dcs.md
[Notepad++]: https://notepad-plus-plus.org/downloads/
[Eclipse LDT]: https://projects.eclipse.org/projects/tools.ldt
[Visual Studio Code]: https://code.visualstudio.com/
[PyCharm]: https://www.jetbrains.com/pycharm/
[IntelliJ IDEA]: https://www.jetbrains.com/idea/