Lot of changes (Update to MDK2) master
authorGreg Burri <greg.burri@gmail.com>
Sun, 3 Nov 2024 22:45:58 +0000 (23:45 +0100)
committerGreg Burri <greg.burri@gmail.com>
Sun, 3 Nov 2024 22:45:58 +0000 (23:45 +0100)
49 files changed:
.gitignore
AutoPilot/AutoPilot.csproj
AutoPilot/AutoPilot.mdk.ini [new file with mode: 0644]
AutoPilot/AutoPilot.mdk.local.ini [new file with mode: 0644]
AutoPilot/MDK/Bootstrapper.cs [deleted file]
AutoPilot/MDK/MDK.options.props [deleted file]
AutoPilot/MDK/MDK.paths.props [deleted file]
AutoPilot/packages.config [new file with mode: 0644]
BaseMiner/BaseApp.csproj [deleted file]
BaseMiner/BaseMiner.csproj [new file with mode: 0644]
BaseMiner/BaseMiner.mdk.ini [new file with mode: 0644]
BaseMiner/BaseMiner.mdk.local.ini [new file with mode: 0644]
BaseMiner/MDK/Bootstrapper.cs [deleted file]
BaseMiner/MDK/MDK.options.props [deleted file]
BaseMiner/MDK/MDK.paths.props [deleted file]
BaseMiner/Program.cs
BaseMiner/packages.config [new file with mode: 0644]
MiningRover/MDK/Bootstrapper.cs [deleted file]
MiningRover/MDK/MDK.options.props [deleted file]
MiningRover/MDK/MDK.paths.props [deleted file]
MiningRover/MiningRover.csproj
MiningRover/MiningRover.csproj.old [new file with mode: 0644]
MiningRover/MiningRover.mdk.ini [new file with mode: 0644]
MiningRover/MiningRover.mdk.local.ini [new file with mode: 0644]
MiningRover/packages.config [new file with mode: 0644]
MissileController/.gitignore [new file with mode: 0644]
MissileController/MDK/Bootstrapper.cs [deleted file]
MissileController/MDK/MDK.options.props [deleted file]
MissileController/MDK/MDK.paths.props [deleted file]
MissileController/MissileController.csproj
MissileController/MissileController.mdk.ini [new file with mode: 0644]
MissileController/MissileController.mdk.local.ini [new file with mode: 0644]
MissileController/Program.cs
MissileController/packages.config [new file with mode: 0644]
MissileLauncher/.gitignore [new file with mode: 0644]
MissileLauncher/MDK/Bootstrapper.cs [deleted file]
MissileLauncher/MDK/MDK.options.props [deleted file]
MissileLauncher/MDK/MDK.paths.props [deleted file]
MissileLauncher/MissileLauncher.csproj
MissileLauncher/MissileLauncher.mdk.ini [new file with mode: 0644]
MissileLauncher/MissileLauncher.mdk.local.ini [new file with mode: 0644]
MissileLauncher/Program.cs
MissileLauncher/README.md [new file with mode: 0644]
MissileLauncher/packages.config [new file with mode: 0644]
README.md [new file with mode: 0644]
SECommon/SECommon.projitems
SECommon/Utils.cs [new file with mode: 0644]
SEScripts.sln
TODO.md

index e623aa7..87fcdba 100644 (file)
@@ -1,6 +1,8 @@
 ## Ignore Visual Studio temporary files, build results, and
 ## files generated by popular Visual Studio add-ons.
 
 ## Ignore Visual Studio temporary files, build results, and
 ## files generated by popular Visual Studio add-ons.
 
+*backup*
+
 .vs
 
 # User-specific files
 .vs
 
 # User-specific files
index 23f7ce1..227ed1b 100644 (file)
@@ -1,59 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{141E1804-F644-48F8-A3D8-BEFEEE66ECBA}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>IngameScript</RootNamespace>
-    <AssemblyName>AutoPilot</AssemblyName>
-    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-    <LangVersion>6</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="netstandard" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <Import Project="MDK/MDK.options.props" />
-  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
-  <ItemGroup>
-    <Compile Include="MDK\Bootstrapper.cs" />
-    <AdditionalFiles Include="MDK\MDK.options.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <AdditionalFiles Include="MDK\MDK.paths.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <Compile Include="Program.cs" />
-    <AdditionalFiles Include="Instructions.readme" />
-    <AdditionalFiles Include="thumb.png" />
-    <AdditionalFiles Include="MDK\whitelist.cache" />
-  </ItemGroup>
-  <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="AfterBuild">
-    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
-    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
-  </Target>
-</Project>
\ No newline at end of file
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>netframework48</TargetFramework>
+        <RootNamespace>IngameScript</RootNamespace>
+        <LangVersion>6</LangVersion>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <Configurations>Release;Debug</Configurations>
+        <Platforms>x64</Platforms>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Mal.Mdk2.PbAnalyzers" Version="2.1.9">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.PbPackager" Version="2.0.6">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.References" Version="2.2.2" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <None Remove="Instructions.readme" />
+      <AdditionalFiles Include="Instructions.readme" />
+    </ItemGroup>
+
+    <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
+
+</Project>
diff --git a/AutoPilot/AutoPilot.mdk.ini b/AutoPilot/AutoPilot.mdk.ini
new file mode 100644 (file)
index 0000000..5add8f4
--- /dev/null
@@ -0,0 +1,22 @@
+; This file is project specific and should be checked in to source control.
+
+[mdk]
+; This is a programmable block script project.
+; You should not change this.
+type=programmableblock
+
+; Toggle trace (on|off) (verbose output)
+trace=off
+
+; What type of minification to use (none|trim|stripcomments|lite|full)
+; none: No minification
+; trim: Removes unused types (NOT members).
+; stripcomments: trim + removes comments.
+; lite: stripcomments + removes leading/trailing whitespace.
+; full: lite + renames identifiers to shorter names.
+minify=none
+
+; A list of files and folder to ignore when creating the script.
+; This is a comma separated list of glob patterns. 
+; See https://code.visualstudio.com/docs/editor/glob-patterns
+ignores=obj/**/*,MDK/**/*,**/*.debug.cs
diff --git a/AutoPilot/AutoPilot.mdk.local.ini b/AutoPilot/AutoPilot.mdk.local.ini
new file mode 100644 (file)
index 0000000..4b66820
--- /dev/null
@@ -0,0 +1,7 @@
+; This file is _local_ to your machine and should not be checked in to source control.
+
+[mdk]
+; Where to output the script to (auto|specific path)
+output=auto
+; Override the default binary path (auto|specific path)
+binarypath=auto
\ No newline at end of file
diff --git a/AutoPilot/MDK/Bootstrapper.cs b/AutoPilot/MDK/Bootstrapper.cs
deleted file mode 100644 (file)
index dd86886..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using Malware.MDKUtilities;
-
-namespace IngameScript.MDK
-{
-    public class TestBootstrapper
-    {
-        // All the files in this folder, as well as all files containing the file ".debug.", will be excluded
-        // from the build process. You can use this to create utilites for testing your scripts directly in 
-        // Visual Studio.
-
-        static TestBootstrapper()
-        {
-            // Initialize the MDK utility framework
-            MDKUtilityFramework.Load();
-        }
-
-        public static void Main()
-        {
-            // In order for your program to actually run, you will need to provide a mockup of all the facilities 
-            // your script uses from the game, since they're not available outside of the game.
-
-            // Create and configure the desired program.
-            var program = MDKFactory.CreateProgram<Program>();
-            MDKFactory.Run(program);
-        }
-    }
-}
\ No newline at end of file
diff --git a/AutoPilot/MDK/MDK.options.props b/AutoPilot/MDK/MDK.options.props
deleted file mode 100644 (file)
index 0a291ca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    Contains basic settings that should be included in code repositories
-    -->
-    <MDKVersion>1.5.17</MDKVersion>
-    <MDKTrimTypes>
-      <Enabled>no</Enabled>
-    </MDKTrimTypes>
-    <MDKMinify>
-      <Level>None</Level>
-    </MDKMinify>
-    <MDKIgnore>
-      <Folder>mdk</Folder>
-    </MDKIgnore>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/AutoPilot/MDK/MDK.paths.props b/AutoPilot/MDK/MDK.paths.props
deleted file mode 100644 (file)
index 6cd170a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    You can safely exclude this file from code repositories and use different 
-    user settings per machine.
-    -->
-    <MDKVersion>1.4.14</MDKVersion>
-    <MDKUseGameBinPath>no</MDKUseGameBinPath>
-    <MDKGameBinPath>G:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64</MDKGameBinPath>
-    <MDKInstallPath>c:\users\lyssmetal\appdata\local\microsoft\visualstudio\17.0_6c02a30d\extensions\twejjmj5.r1e</MDKInstallPath>
-    <MDKOutputPath>C:\Users\LyssMetal\AppData\Roaming\SpaceEngineers\IngameScripts\local</MDKOutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Sandbox.Common">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Game">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Graphics">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.Game">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.ObjectBuilders">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage">
-      <HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Audio">
-      <HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Game">
-      <HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Input">
-      <HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Library">
-      <HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Math">
-      <HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render">
-      <HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render11">
-      <HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Scripting">
-      <HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="MDKUtilities">
-      <HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
-      <Private>true</Private>
-    </Reference>
-    <Reference Include="System.Collections.Immutable">
-      <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Analyzer Include="$(MDKInstallPath)\Analyzers\MDKAnalyzer.dll" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/AutoPilot/packages.config b/AutoPilot/packages.config
new file mode 100644 (file)
index 0000000..0653ff6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Mal.Mdk2.PbPackager" version="2.0.0-alpha073" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/BaseMiner/BaseApp.csproj b/BaseMiner/BaseApp.csproj
deleted file mode 100644 (file)
index 0681571..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{22A83955-FE9B-4EBA-8980-D9DE01353C4C}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>IngameScript</RootNamespace>
-    <AssemblyName>BaseApp</AssemblyName>
-    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-    <LangVersion>6</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="netstandard" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <Import Project="MDK/MDK.options.props" />
-  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
-  <ItemGroup>
-    <Compile Include="MDK\Bootstrapper.cs" />
-    <AdditionalFiles Include="MDK\MDK.options.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <AdditionalFiles Include="MDK\MDK.paths.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <Compile Include="Program.cs" />
-    <AdditionalFiles Include="MDK\whitelist.cache" />
-  </ItemGroup>
-  <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="AfterBuild">
-    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
-    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
-  </Target>
-</Project>
\ No newline at end of file
diff --git a/BaseMiner/BaseMiner.csproj b/BaseMiner/BaseMiner.csproj
new file mode 100644 (file)
index 0000000..227ed1b
--- /dev/null
@@ -0,0 +1,31 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>netframework48</TargetFramework>
+        <RootNamespace>IngameScript</RootNamespace>
+        <LangVersion>6</LangVersion>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <Configurations>Release;Debug</Configurations>
+        <Platforms>x64</Platforms>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Mal.Mdk2.PbAnalyzers" Version="2.1.9">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.PbPackager" Version="2.0.6">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.References" Version="2.2.2" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <None Remove="Instructions.readme" />
+      <AdditionalFiles Include="Instructions.readme" />
+    </ItemGroup>
+
+    <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
+
+</Project>
diff --git a/BaseMiner/BaseMiner.mdk.ini b/BaseMiner/BaseMiner.mdk.ini
new file mode 100644 (file)
index 0000000..5add8f4
--- /dev/null
@@ -0,0 +1,22 @@
+; This file is project specific and should be checked in to source control.
+
+[mdk]
+; This is a programmable block script project.
+; You should not change this.
+type=programmableblock
+
+; Toggle trace (on|off) (verbose output)
+trace=off
+
+; What type of minification to use (none|trim|stripcomments|lite|full)
+; none: No minification
+; trim: Removes unused types (NOT members).
+; stripcomments: trim + removes comments.
+; lite: stripcomments + removes leading/trailing whitespace.
+; full: lite + renames identifiers to shorter names.
+minify=none
+
+; A list of files and folder to ignore when creating the script.
+; This is a comma separated list of glob patterns. 
+; See https://code.visualstudio.com/docs/editor/glob-patterns
+ignores=obj/**/*,MDK/**/*,**/*.debug.cs
diff --git a/BaseMiner/BaseMiner.mdk.local.ini b/BaseMiner/BaseMiner.mdk.local.ini
new file mode 100644 (file)
index 0000000..4b66820
--- /dev/null
@@ -0,0 +1,7 @@
+; This file is _local_ to your machine and should not be checked in to source control.
+
+[mdk]
+; Where to output the script to (auto|specific path)
+output=auto
+; Override the default binary path (auto|specific path)
+binarypath=auto
\ No newline at end of file
diff --git a/BaseMiner/MDK/Bootstrapper.cs b/BaseMiner/MDK/Bootstrapper.cs
deleted file mode 100644 (file)
index dd86886..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using Malware.MDKUtilities;
-
-namespace IngameScript.MDK
-{
-    public class TestBootstrapper
-    {
-        // All the files in this folder, as well as all files containing the file ".debug.", will be excluded
-        // from the build process. You can use this to create utilites for testing your scripts directly in 
-        // Visual Studio.
-
-        static TestBootstrapper()
-        {
-            // Initialize the MDK utility framework
-            MDKUtilityFramework.Load();
-        }
-
-        public static void Main()
-        {
-            // In order for your program to actually run, you will need to provide a mockup of all the facilities 
-            // your script uses from the game, since they're not available outside of the game.
-
-            // Create and configure the desired program.
-            var program = MDKFactory.CreateProgram<Program>();
-            MDKFactory.Run(program);
-        }
-    }
-}
\ No newline at end of file
diff --git a/BaseMiner/MDK/MDK.options.props b/BaseMiner/MDK/MDK.options.props
deleted file mode 100644 (file)
index 0a291ca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    Contains basic settings that should be included in code repositories
-    -->
-    <MDKVersion>1.5.17</MDKVersion>
-    <MDKTrimTypes>
-      <Enabled>no</Enabled>
-    </MDKTrimTypes>
-    <MDKMinify>
-      <Level>None</Level>
-    </MDKMinify>
-    <MDKIgnore>
-      <Folder>mdk</Folder>
-    </MDKIgnore>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/BaseMiner/MDK/MDK.paths.props b/BaseMiner/MDK/MDK.paths.props
deleted file mode 100644 (file)
index 6cd170a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    You can safely exclude this file from code repositories and use different 
-    user settings per machine.
-    -->
-    <MDKVersion>1.4.14</MDKVersion>
-    <MDKUseGameBinPath>no</MDKUseGameBinPath>
-    <MDKGameBinPath>G:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64</MDKGameBinPath>
-    <MDKInstallPath>c:\users\lyssmetal\appdata\local\microsoft\visualstudio\17.0_6c02a30d\extensions\twejjmj5.r1e</MDKInstallPath>
-    <MDKOutputPath>C:\Users\LyssMetal\AppData\Roaming\SpaceEngineers\IngameScripts\local</MDKOutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Sandbox.Common">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Game">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Graphics">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.Game">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.ObjectBuilders">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage">
-      <HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Audio">
-      <HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Game">
-      <HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Input">
-      <HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Library">
-      <HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Math">
-      <HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render">
-      <HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render11">
-      <HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Scripting">
-      <HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="MDKUtilities">
-      <HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
-      <Private>true</Private>
-    </Reference>
-    <Reference Include="System.Collections.Immutable">
-      <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Analyzer Include="$(MDKInstallPath)\Analyzers\MDKAnalyzer.dll" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
index 0275435..23c6a6e 100644 (file)
@@ -61,7 +61,7 @@ namespace IngameScript
             this.output.Print("Base system starting...");
 
             this.InitMiningSystem();
             this.output.Print("Base system starting...");
 
             this.InitMiningSystem();
-            
+
             this.minerConnector = this.GridTerminalSystem.GetBlockWithName("[Base] Connector Miner") as IMyShipConnector;
             if (this.minerConnector == null)
                 this.output.Print($"Error: miner connector not found");
             this.minerConnector = this.GridTerminalSystem.GetBlockWithName("[Base] Connector Miner") as IMyShipConnector;
             if (this.minerConnector == null)
                 this.output.Print($"Error: miner connector not found");
diff --git a/BaseMiner/packages.config b/BaseMiner/packages.config
new file mode 100644 (file)
index 0000000..0653ff6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Mal.Mdk2.PbPackager" version="2.0.0-alpha073" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/MiningRover/MDK/Bootstrapper.cs b/MiningRover/MDK/Bootstrapper.cs
deleted file mode 100644 (file)
index dd86886..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using Malware.MDKUtilities;
-
-namespace IngameScript.MDK
-{
-    public class TestBootstrapper
-    {
-        // All the files in this folder, as well as all files containing the file ".debug.", will be excluded
-        // from the build process. You can use this to create utilites for testing your scripts directly in 
-        // Visual Studio.
-
-        static TestBootstrapper()
-        {
-            // Initialize the MDK utility framework
-            MDKUtilityFramework.Load();
-        }
-
-        public static void Main()
-        {
-            // In order for your program to actually run, you will need to provide a mockup of all the facilities 
-            // your script uses from the game, since they're not available outside of the game.
-
-            // Create and configure the desired program.
-            var program = MDKFactory.CreateProgram<Program>();
-            MDKFactory.Run(program);
-        }
-    }
-}
\ No newline at end of file
diff --git a/MiningRover/MDK/MDK.options.props b/MiningRover/MDK/MDK.options.props
deleted file mode 100644 (file)
index 0a291ca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    Contains basic settings that should be included in code repositories
-    -->
-    <MDKVersion>1.5.17</MDKVersion>
-    <MDKTrimTypes>
-      <Enabled>no</Enabled>
-    </MDKTrimTypes>
-    <MDKMinify>
-      <Level>None</Level>
-    </MDKMinify>
-    <MDKIgnore>
-      <Folder>mdk</Folder>
-    </MDKIgnore>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/MiningRover/MDK/MDK.paths.props b/MiningRover/MDK/MDK.paths.props
deleted file mode 100644 (file)
index 6cd170a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    You can safely exclude this file from code repositories and use different 
-    user settings per machine.
-    -->
-    <MDKVersion>1.4.14</MDKVersion>
-    <MDKUseGameBinPath>no</MDKUseGameBinPath>
-    <MDKGameBinPath>G:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64</MDKGameBinPath>
-    <MDKInstallPath>c:\users\lyssmetal\appdata\local\microsoft\visualstudio\17.0_6c02a30d\extensions\twejjmj5.r1e</MDKInstallPath>
-    <MDKOutputPath>C:\Users\LyssMetal\AppData\Roaming\SpaceEngineers\IngameScripts\local</MDKOutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Sandbox.Common">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Game">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Graphics">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.Game">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.ObjectBuilders">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage">
-      <HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Audio">
-      <HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Game">
-      <HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Input">
-      <HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Library">
-      <HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Math">
-      <HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render">
-      <HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render11">
-      <HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Scripting">
-      <HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="MDKUtilities">
-      <HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
-      <Private>true</Private>
-    </Reference>
-    <Reference Include="System.Collections.Immutable">
-      <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Analyzer Include="$(MDKInstallPath)\Analyzers\MDKAnalyzer.dll" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
index dd8931c..227ed1b 100644 (file)
@@ -1,85 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{DBCD62FE-F7AA-4A03-9241-0A4BE6952664}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>IngameScript</RootNamespace>
-    <AssemblyName>MiningRover</AssemblyName>
-    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-    <LangVersion>6</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="netstandard" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <Import Project="MDK/MDK.options.props" />
-  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
-  <ItemGroup>
-    <Compile Include="MDK\Bootstrapper.cs" />
-    <AdditionalFiles Include="MDK\MDK.options.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <AdditionalFiles Include="MDK\MDK.paths.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <Compile Include="Program.cs" />
-    <AdditionalFiles Include="Instructions.readme" />
-    <AdditionalFiles Include="thumb.png" />
-    <AdditionalFiles Include="MDK\whitelist.cache" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.8">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="AfterBuild">
-    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
-    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
-  </Target>
-</Project>
\ No newline at end of file
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>netframework48</TargetFramework>
+        <RootNamespace>IngameScript</RootNamespace>
+        <LangVersion>6</LangVersion>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <Configurations>Release;Debug</Configurations>
+        <Platforms>x64</Platforms>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Mal.Mdk2.PbAnalyzers" Version="2.1.9">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.PbPackager" Version="2.0.6">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.References" Version="2.2.2" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <None Remove="Instructions.readme" />
+      <AdditionalFiles Include="Instructions.readme" />
+    </ItemGroup>
+
+    <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
+
+</Project>
diff --git a/MiningRover/MiningRover.csproj.old b/MiningRover/MiningRover.csproj.old
new file mode 100644 (file)
index 0000000..560d61c
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\Mal.Mdk2.PbPackager.2.0.0-alpha073\build\Mal.Mdk2.PbPackager.props" Condition="Exists('..\packages\Mal.Mdk2.PbPackager.2.0.0-alpha073\build\Mal.Mdk2.PbPackager.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{DBCD62FE-F7AA-4A03-9241-0A4BE6952664}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>IngameScript</RootNamespace>
+    <AssemblyName>MiningRover</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <TargetFrameworkProfile />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+    <LangVersion>6</LangVersion>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="netstandard" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <Import Project="MDK/MDK.options.props" />
+  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
+  <ItemGroup>
+    <Compile Include="MDK\Bootstrapper.cs" />
+    <AdditionalFiles Include="MDK\MDK.options.props">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </AdditionalFiles>
+    <AdditionalFiles Include="MDK\MDK.paths.props">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </AdditionalFiles>
+    <Compile Include="Program.cs" />
+    <AdditionalFiles Include="Instructions.readme" />
+    <AdditionalFiles Include="thumb.png" />
+    <AdditionalFiles Include="MDK\whitelist.cache" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.8">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="AfterBuild">
+    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
+    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
+  </Target>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\Mal.Mdk2.PbPackager.2.0.0-alpha073\build\Mal.Mdk2.PbPackager.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mal.Mdk2.PbPackager.2.0.0-alpha073\build\Mal.Mdk2.PbPackager.props'))" />
+  </Target>
+</Project>
\ No newline at end of file
diff --git a/MiningRover/MiningRover.mdk.ini b/MiningRover/MiningRover.mdk.ini
new file mode 100644 (file)
index 0000000..5add8f4
--- /dev/null
@@ -0,0 +1,22 @@
+; This file is project specific and should be checked in to source control.
+
+[mdk]
+; This is a programmable block script project.
+; You should not change this.
+type=programmableblock
+
+; Toggle trace (on|off) (verbose output)
+trace=off
+
+; What type of minification to use (none|trim|stripcomments|lite|full)
+; none: No minification
+; trim: Removes unused types (NOT members).
+; stripcomments: trim + removes comments.
+; lite: stripcomments + removes leading/trailing whitespace.
+; full: lite + renames identifiers to shorter names.
+minify=none
+
+; A list of files and folder to ignore when creating the script.
+; This is a comma separated list of glob patterns. 
+; See https://code.visualstudio.com/docs/editor/glob-patterns
+ignores=obj/**/*,MDK/**/*,**/*.debug.cs
diff --git a/MiningRover/MiningRover.mdk.local.ini b/MiningRover/MiningRover.mdk.local.ini
new file mode 100644 (file)
index 0000000..4b66820
--- /dev/null
@@ -0,0 +1,7 @@
+; This file is _local_ to your machine and should not be checked in to source control.
+
+[mdk]
+; Where to output the script to (auto|specific path)
+output=auto
+; Override the default binary path (auto|specific path)
+binarypath=auto
\ No newline at end of file
diff --git a/MiningRover/packages.config b/MiningRover/packages.config
new file mode 100644 (file)
index 0000000..0653ff6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Mal.Mdk2.PbPackager" version="2.0.0-alpha073" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/MissileController/.gitignore b/MissileController/.gitignore
new file mode 100644 (file)
index 0000000..354bf1e
--- /dev/null
@@ -0,0 +1,2 @@
+# MDK
+MissileController.csproj.mdk.local.ini
\ No newline at end of file
diff --git a/MissileController/MDK/Bootstrapper.cs b/MissileController/MDK/Bootstrapper.cs
deleted file mode 100644 (file)
index dd86886..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using Malware.MDKUtilities;
-
-namespace IngameScript.MDK
-{
-    public class TestBootstrapper
-    {
-        // All the files in this folder, as well as all files containing the file ".debug.", will be excluded
-        // from the build process. You can use this to create utilites for testing your scripts directly in 
-        // Visual Studio.
-
-        static TestBootstrapper()
-        {
-            // Initialize the MDK utility framework
-            MDKUtilityFramework.Load();
-        }
-
-        public static void Main()
-        {
-            // In order for your program to actually run, you will need to provide a mockup of all the facilities 
-            // your script uses from the game, since they're not available outside of the game.
-
-            // Create and configure the desired program.
-            var program = MDKFactory.CreateProgram<Program>();
-            MDKFactory.Run(program);
-        }
-    }
-}
\ No newline at end of file
diff --git a/MissileController/MDK/MDK.options.props b/MissileController/MDK/MDK.options.props
deleted file mode 100644 (file)
index 0a291ca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    Contains basic settings that should be included in code repositories
-    -->
-    <MDKVersion>1.5.17</MDKVersion>
-    <MDKTrimTypes>
-      <Enabled>no</Enabled>
-    </MDKTrimTypes>
-    <MDKMinify>
-      <Level>None</Level>
-    </MDKMinify>
-    <MDKIgnore>
-      <Folder>mdk</Folder>
-    </MDKIgnore>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/MissileController/MDK/MDK.paths.props b/MissileController/MDK/MDK.paths.props
deleted file mode 100644 (file)
index 6cd170a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    You can safely exclude this file from code repositories and use different 
-    user settings per machine.
-    -->
-    <MDKVersion>1.4.14</MDKVersion>
-    <MDKUseGameBinPath>no</MDKUseGameBinPath>
-    <MDKGameBinPath>G:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64</MDKGameBinPath>
-    <MDKInstallPath>c:\users\lyssmetal\appdata\local\microsoft\visualstudio\17.0_6c02a30d\extensions\twejjmj5.r1e</MDKInstallPath>
-    <MDKOutputPath>C:\Users\LyssMetal\AppData\Roaming\SpaceEngineers\IngameScripts\local</MDKOutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Sandbox.Common">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Game">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Graphics">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.Game">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.ObjectBuilders">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage">
-      <HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Audio">
-      <HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Game">
-      <HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Input">
-      <HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Library">
-      <HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Math">
-      <HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render">
-      <HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render11">
-      <HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Scripting">
-      <HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="MDKUtilities">
-      <HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
-      <Private>true</Private>
-    </Reference>
-    <Reference Include="System.Collections.Immutable">
-      <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Analyzer Include="$(MDKInstallPath)\Analyzers\MDKAnalyzer.dll" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
index bfd62ec..227ed1b 100644 (file)
@@ -1,59 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{F902E413-8F1A-423D-98A5-F26B684E28BA}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>IngameScript</RootNamespace>
-    <AssemblyName>MissileController</AssemblyName>
-    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-    <LangVersion>6</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="netstandard" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <Import Project="MDK/MDK.options.props" />
-  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
-  <ItemGroup>
-    <Compile Include="MDK\Bootstrapper.cs" />
-    <AdditionalFiles Include="MDK\MDK.options.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <AdditionalFiles Include="MDK\MDK.paths.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <Compile Include="Program.cs" />
-    <AdditionalFiles Include="Instructions.readme" />
-    <AdditionalFiles Include="thumb.png" />
-    <AdditionalFiles Include="MDK\whitelist.cache" />
-  </ItemGroup>
-  <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="AfterBuild">
-    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
-    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
-  </Target>
-</Project>
\ No newline at end of file
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>netframework48</TargetFramework>
+        <RootNamespace>IngameScript</RootNamespace>
+        <LangVersion>6</LangVersion>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <Configurations>Release;Debug</Configurations>
+        <Platforms>x64</Platforms>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Mal.Mdk2.PbAnalyzers" Version="2.1.9">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.PbPackager" Version="2.0.6">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.References" Version="2.2.2" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <None Remove="Instructions.readme" />
+      <AdditionalFiles Include="Instructions.readme" />
+    </ItemGroup>
+
+    <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
+
+</Project>
diff --git a/MissileController/MissileController.mdk.ini b/MissileController/MissileController.mdk.ini
new file mode 100644 (file)
index 0000000..5add8f4
--- /dev/null
@@ -0,0 +1,22 @@
+; This file is project specific and should be checked in to source control.
+
+[mdk]
+; This is a programmable block script project.
+; You should not change this.
+type=programmableblock
+
+; Toggle trace (on|off) (verbose output)
+trace=off
+
+; What type of minification to use (none|trim|stripcomments|lite|full)
+; none: No minification
+; trim: Removes unused types (NOT members).
+; stripcomments: trim + removes comments.
+; lite: stripcomments + removes leading/trailing whitespace.
+; full: lite + renames identifiers to shorter names.
+minify=none
+
+; A list of files and folder to ignore when creating the script.
+; This is a comma separated list of glob patterns. 
+; See https://code.visualstudio.com/docs/editor/glob-patterns
+ignores=obj/**/*,MDK/**/*,**/*.debug.cs
diff --git a/MissileController/MissileController.mdk.local.ini b/MissileController/MissileController.mdk.local.ini
new file mode 100644 (file)
index 0000000..4b66820
--- /dev/null
@@ -0,0 +1,7 @@
+; This file is _local_ to your machine and should not be checked in to source control.
+
+[mdk]
+; Where to output the script to (auto|specific path)
+output=auto
+; Override the default binary path (auto|specific path)
+binarypath=auto
\ No newline at end of file
index 3fcc33c..dc0e79c 100644 (file)
@@ -34,7 +34,7 @@ namespace IngameScript
 
         const float EPSILON = 0.05f;
         const double DELAY_BEFORE_TRAVELLING_MODE = 3000; // [ms].
 
         const float EPSILON = 0.05f;
         const double DELAY_BEFORE_TRAVELLING_MODE = 3000; // [ms].
-        const double AUTO_DESTRUCTION_AFTER = 60000; // [ms] (1 min).
+        const double AUTO_DESTRUCTION_AFTER = 60000; // [ms] (1 min). Or if the hydrogen tank is empty.
 
 
         enum State
 
 
         enum State
diff --git a/MissileController/packages.config b/MissileController/packages.config
new file mode 100644 (file)
index 0000000..0653ff6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Mal.Mdk2.PbPackager" version="2.0.0-alpha073" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/MissileLauncher/.gitignore b/MissileLauncher/.gitignore
new file mode 100644 (file)
index 0000000..b6f50b2
--- /dev/null
@@ -0,0 +1,2 @@
+# MDK
+MissileLauncher.csproj.mdk.local.ini
\ No newline at end of file
diff --git a/MissileLauncher/MDK/Bootstrapper.cs b/MissileLauncher/MDK/Bootstrapper.cs
deleted file mode 100644 (file)
index dd86886..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using Malware.MDKUtilities;
-
-namespace IngameScript.MDK
-{
-    public class TestBootstrapper
-    {
-        // All the files in this folder, as well as all files containing the file ".debug.", will be excluded
-        // from the build process. You can use this to create utilites for testing your scripts directly in 
-        // Visual Studio.
-
-        static TestBootstrapper()
-        {
-            // Initialize the MDK utility framework
-            MDKUtilityFramework.Load();
-        }
-
-        public static void Main()
-        {
-            // In order for your program to actually run, you will need to provide a mockup of all the facilities 
-            // your script uses from the game, since they're not available outside of the game.
-
-            // Create and configure the desired program.
-            var program = MDKFactory.CreateProgram<Program>();
-            MDKFactory.Run(program);
-        }
-    }
-}
\ No newline at end of file
diff --git a/MissileLauncher/MDK/MDK.options.props b/MissileLauncher/MDK/MDK.options.props
deleted file mode 100644 (file)
index 0a291ca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    Contains basic settings that should be included in code repositories
-    -->
-    <MDKVersion>1.5.17</MDKVersion>
-    <MDKTrimTypes>
-      <Enabled>no</Enabled>
-    </MDKTrimTypes>
-    <MDKMinify>
-      <Level>None</Level>
-    </MDKMinify>
-    <MDKIgnore>
-      <Folder>mdk</Folder>
-    </MDKIgnore>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/MissileLauncher/MDK/MDK.paths.props b/MissileLauncher/MDK/MDK.paths.props
deleted file mode 100644 (file)
index 6cd170a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <!-- 
-    You can safely exclude this file from code repositories and use different 
-    user settings per machine.
-    -->
-    <MDKVersion>1.4.14</MDKVersion>
-    <MDKUseGameBinPath>no</MDKUseGameBinPath>
-    <MDKGameBinPath>G:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64</MDKGameBinPath>
-    <MDKInstallPath>c:\users\lyssmetal\appdata\local\microsoft\visualstudio\17.0_6c02a30d\extensions\twejjmj5.r1e</MDKInstallPath>
-    <MDKOutputPath>C:\Users\LyssMetal\AppData\Roaming\SpaceEngineers\IngameScripts\local</MDKOutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Sandbox.Common">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Game">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Sandbox.Graphics">
-      <HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.Game">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="SpaceEngineers.ObjectBuilders">
-      <HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage">
-      <HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Audio">
-      <HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Game">
-      <HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Input">
-      <HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Library">
-      <HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Math">
-      <HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render">
-      <HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Render11">
-      <HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="VRage.Scripting">
-      <HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="MDKUtilities">
-      <HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
-      <Private>true</Private>
-    </Reference>
-    <Reference Include="System.Collections.Immutable">
-      <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
-      <Private>false</Private>
-    </Reference>
-    <Analyzer Include="$(MDKInstallPath)\Analyzers\MDKAnalyzer.dll" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
index 1e05b49..462908c 100644 (file)
@@ -1,59 +1,34 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{761F968E-CE71-404B-A20A-7C1458D6C014}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>IngameScript</RootNamespace>
-    <AssemblyName>MissileLauncher</AssemblyName>
-    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-    <LangVersion>6</LangVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="netstandard" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <Import Project="MDK/MDK.options.props" />
-  <Import Project="MDK/MDK.paths.props" Condition="exists('MDK/MDK.paths.props')" />
-  <ItemGroup>
-    <Compile Include="MDK\Bootstrapper.cs" />
-    <AdditionalFiles Include="MDK\MDK.options.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <AdditionalFiles Include="MDK\MDK.paths.props">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </AdditionalFiles>
-    <Compile Include="Program.cs" />
-    <AdditionalFiles Include="Instructions.readme" />
-    <AdditionalFiles Include="thumb.png" />
-    <AdditionalFiles Include="MDK\whitelist.cache" />
-  </ItemGroup>
-  <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="AfterBuild">
-    <Copy SourceFiles="MDK\MDK.options.props" DestinationFolder="$(TargetDir)\MDK" />
-    <Copy SourceFiles="MDK\MDK.paths.props" DestinationFolder="$(TargetDir)\MDK" />
-  </Target>
-</Project>
\ No newline at end of file
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>netframework48</TargetFramework>
+        <RootNamespace>IngameScript</RootNamespace>
+        <LangVersion>6</LangVersion>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <Configurations>Release;Debug</Configurations>
+        <Platforms>x64</Platforms>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <None Remove="Instructions.readme" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <AdditionalFiles Include="Instructions.readme" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Mal.Mdk2.PbAnalyzers" Version="2.1.9">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.PbPackager" Version="2.0.6">
+        <PrivateAssets>all</PrivateAssets>
+        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      </PackageReference>
+      <PackageReference Include="Mal.Mdk2.References" Version="2.2.2" />
+    </ItemGroup>
+
+    <Import Project="..\SECommon\SECommon.projitems" Label="Shared" />
+
+</Project>
diff --git a/MissileLauncher/MissileLauncher.mdk.ini b/MissileLauncher/MissileLauncher.mdk.ini
new file mode 100644 (file)
index 0000000..5add8f4
--- /dev/null
@@ -0,0 +1,22 @@
+; This file is project specific and should be checked in to source control.
+
+[mdk]
+; This is a programmable block script project.
+; You should not change this.
+type=programmableblock
+
+; Toggle trace (on|off) (verbose output)
+trace=off
+
+; What type of minification to use (none|trim|stripcomments|lite|full)
+; none: No minification
+; trim: Removes unused types (NOT members).
+; stripcomments: trim + removes comments.
+; lite: stripcomments + removes leading/trailing whitespace.
+; full: lite + renames identifiers to shorter names.
+minify=none
+
+; A list of files and folder to ignore when creating the script.
+; This is a comma separated list of glob patterns. 
+; See https://code.visualstudio.com/docs/editor/glob-patterns
+ignores=obj/**/*,MDK/**/*,**/*.debug.cs
diff --git a/MissileLauncher/MissileLauncher.mdk.local.ini b/MissileLauncher/MissileLauncher.mdk.local.ini
new file mode 100644 (file)
index 0000000..4b66820
--- /dev/null
@@ -0,0 +1,7 @@
+; This file is _local_ to your machine and should not be checked in to source control.
+
+[mdk]
+; Where to output the script to (auto|specific path)
+output=auto
+; Override the default binary path (auto|specific path)
+binarypath=auto
\ No newline at end of file
index 130d36d..3c50631 100644 (file)
@@ -4,6 +4,7 @@ using Sandbox.Game.GameSystems;
 using Sandbox.ModAPI.Ingame;
 using Sandbox.ModAPI.Interfaces;
 
 using Sandbox.ModAPI.Ingame;
 using Sandbox.ModAPI.Interfaces;
 
+using SpaceEngineers.Game.Entities.Blocks;
 using SpaceEngineers.Game.ModAPI.Ingame;
 
 using System;
 using SpaceEngineers.Game.ModAPI.Ingame;
 
 using System;
@@ -21,141 +22,290 @@ using VRage.Game.GUI.TextPanel;
 using VRage.Game.ModAPI.Ingame;
 using VRage.Game.ModAPI.Ingame.Utilities;
 using VRage.Game.ObjectBuilders.Definitions;
 using VRage.Game.ModAPI.Ingame;
 using VRage.Game.ModAPI.Ingame.Utilities;
 using VRage.Game.ObjectBuilders.Definitions;
+using VRage.GameServices;
 
 using VRageMath;
 
 
 using VRageMath;
 
-using static VRageRender.Utils.MyWingedEdgeMesh;
+// using static VRageRender.Utils.MyWingedEdgeMesh;
 
 namespace IngameScript
 {
 
 namespace IngameScript
 {
-    enum State
-    {
-        NORMAL,
-        STARTING_SEQUENCE,
-        FILLING_TANK,
-        LAUNCHING,
-    }
-
     class Missile
     {
     class Missile
     {
-        string prefix;
-        readonly string tankName = "Hydrogen Tank";
-        readonly string connectorName = "Connector";
-        readonly string mergeBlockName = "Merge Block";
-        readonly string programmableBlockName = "Programmable Block";
+        //string prefix;
+        //readonly string tankName = "Hydrogen Tank";
+        //readonly string connectorName = "Connector";
+        //readonly string mergeBlockName = "Merge Block";
+        //readonly string programmableBlockName = "Programmable Block";
 
 
-        State currentState = State.NORMAL;
+        //State currentState = State.NOMINAL;
 
 
-        IMyGridTerminalSystem gridTerminalSystem;
+        //IMyGridTerminalSystem gridTerminalSystem;
 
 
-        IMyGasTank tank = null;
-        IMyShipConnector connector = null;
-        IMyShipMergeBlock mergeBlock = null;
-        IMyProgrammableBlock programmableBlock = null;
+        public IMyGasTank Tank { get; }
+        public IMyShipConnector Connector { get; }
+        public IMyShipMergeBlock MergeBlock { get; }
+        public IMyProgrammableBlock ProgrammableBlock { get; }
 
 
-        // bool loop = false; // Not used for the moment.
-        public Missile(string prefix, IMyGridTerminalSystem gridTerminalSystem)
+        public Missile(IMyGasTank tank, IMyShipConnector connector, IMyShipMergeBlock mergeBlock, IMyProgrammableBlock programmableBlock)
         {
         {
-            this.prefix = prefix;
-            this.gridTerminalSystem = gridTerminalSystem;
+            this.Tank = tank;
+            this.Connector = connector;
+            this.MergeBlock = mergeBlock;
+            this.ProgrammableBlock = programmableBlock;
         }
     }
 
         }
     }
 
-    partial class Program : MyGridProgram
+    class Launcher
     {
     {
-        const string GRID_PREFIX = "[PML]";
-        const string MISSILE_GRID_PREFIX = "[PM]";
-        const double HYDRO_TANK_FILLED_PERCENT = 20;
+        enum State
+        {
+            NOMINAL,
+            STARTING_SEQUENCE,
+            FILLING_TANK,
+            LAUNCHING,
+        }
 
 
-        const float EPSILON = 0.05f;
+        int number;
+        IMyCubeGrid grid;
+        Output output;
 
 
-        readonly Output output;
+        Missile missile;
 
 
-        public Program()
+        State currentState = State.NOMINAL;
+
+        IMyGridTerminalSystem gridTerminal;
+        IMyShipConnector connector;
+
+        //IReadOnlyList<IMyShipWelder> welders;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="number"></param>
+        /// <param name="gridTerminal"></param>
+        /// <param name="grid"></param>
+        /// <param name="output">To output some text</param>
+        /// <param name="connector">Connector of the launcher (not the missile)</param>
+        public Launcher(int number, IMyGridTerminalSystem gridTerminal, IMyCubeGrid grid, Output output, IMyShipConnector connector)
         {
         {
-            var output = this.Me.GetSurface(0);
-            this.output = new Output(output);
-            this.output.Print("Missile launcher system starting...");
+            this.number = number;
+            this.grid = grid;
+            this.gridTerminal = gridTerminal;
+            this.output = output;
+            this.connector = connector;
+
+            //this.connector = this.gridTerminal.GetBlockWithName(String.Format("{0} {1}", Program.GRID_PREFIX, String.Format(LAUNCHER_SMALL_CONNECTOR_NAME, number))) as IMyShipConnector;
+            //output.Print($"{this.connector}");
+        }
 
 
-            this.Runtime.UpdateFrequency = UpdateFrequency.Update100;
+        public void Launch()
+        {
+            if (this.currentState == State.NOMINAL)
+                this.currentState = State.STARTING_SEQUENCE;
+        }
 
 
-            this.output.Print("Missile launcher system started");
+        void Print(string message)
+        {
+            this.output.Print(String.Format("{0:00} {1}", this.number, message));
         }
 
         }
 
-        void UpdateState()
+        public void UpdateState()
         {
             switch (this.currentState)
             {
                 case State.STARTING_SEQUENCE:
         {
             switch (this.currentState)
             {
                 case State.STARTING_SEQUENCE:
-                    this.tank = this.GridTerminalSystem.GetBlockWithName("[PM] Hydrogen Tank") as IMyGasTank;
-                    if (this.tank == null)
+                    var missileConnector = this.connector.OtherConnector;
+                    if (missileConnector == null)
                     {
                     {
-                        this.output.Print("Cannot find the missile hydrogen tank");
+                        this.Print("Cannot find the missile connector");
                         break;
                     }
 
                         break;
                     }
 
-                    this.connector = this.GridTerminalSystem.GetBlockWithName("[PM] Connector") as IMyShipConnector;
-                    if (this.connector == null)
+                    var missileGrid = missileConnector.CubeGrid;
+
+                    IMyGasTank tank = this.gridTerminal.GetBlock<IMyGasTank>("[PM] Hydrogen Tank", missileGrid);  //Utils.GetBlock( this.gridTerminal.GetBlockWithName("[PM] Hydrogen Tank") as IMyGasTank;
+                    this.output.Print($"tank: {tank}");
+                    if (tank == null)
                     {
                     {
-                        this.output.Print("Cannot find the missile connector");
+                        this.Print("Cannot find the missile hydrogen tank");
                         break;
                     }
 
                         break;
                     }
 
-                    this.mergeBlock = this.GridTerminalSystem.GetBlockWithName("[PM] Merge Block") as IMyShipMergeBlock;
-                    if (this.mergeBlock == null)
+                    IMyShipMergeBlock mergeBlock = this.gridTerminal.GetBlock<IMyShipMergeBlock>("[PM] Merge Block", missileGrid);
+                    if (mergeBlock == null)
                     {
                     {
-                        this.output.Print("Cannot find the missile merge block");
+                        this.Print("Cannot find the missile merge block");
                         break;
                     }
 
                         break;
                     }
 
-                    this.programmableBlock = this.GridTerminalSystem.GetBlockWithName("[PM] Programmable Block") as IMyProgrammableBlock;
-                    if (this.programmableBlock == null)
+                    IMyProgrammableBlock programmableBlock = this.gridTerminal.GetBlock<IMyProgrammableBlock>("[PM] Programmable Block", missileGrid);
+
+                    if (programmableBlock == null)
                     {
                     {
-                        this.output.Print("Cannot find the missile programmable block");
+                        this.Print("Cannot find the missile programmable block");
                         break;
                     }
 
                         break;
                     }
 
-                    this.tank.Stockpile = true;
-                    this.connector.Connect();
+                    tank.Stockpile = true;
+
+                    this.missile = new Missile(tank, connector, mergeBlock, programmableBlock);
 
                     this.currentState = State.FILLING_TANK;
 
                     this.currentState = State.FILLING_TANK;
-                    break; ;
+                    break;
 
                 case State.FILLING_TANK:
 
                 case State.FILLING_TANK:
-                    this.output.Print("Waiting missile tank filled...");
-                    if (this.tank.FilledRatio >= HYDRO_TANK_FILLED_PERCENT / 100)
+                    this.Print("Waiting missile tank filled...");
+
+                    if (this.missile.Tank.FilledRatio >= Program.HYDRO_TANK_FILLED_PERCENT / 100)
                     {
                     {
-                        this.tank.Stockpile = false;
+                        this.missile.Tank.Stockpile = false;
                         this.currentState = State.LAUNCHING;
                     }
                     break;
 
                 case State.LAUNCHING:
                         this.currentState = State.LAUNCHING;
                     }
                     break;
 
                 case State.LAUNCHING:
-                    this.output.Print("Launching missile...");
+                    this.Print("Launching missile...");
 
 
-                    if (this.programmableBlock.TryRun("START"))
-                        this.output.Print("Missile launched!");
+                    if (this.missile.ProgrammableBlock.TryRun("START"))
+                        this.Print("Missile launched!");
                     else
                     else
-                        this.output.Print("ERROR: Can't send START command to missile");
+                        this.Print("ERROR: Can't send START command to missile");
 
 
-                    this.mergeBlock.Enabled = false;
+                    this.missile.MergeBlock.Enabled = false;
                     this.connector.Disconnect();
                     this.connector.Disconnect();
-
-                    if (this.loop)
-                        this.currentState = State.STARTING_SEQUENCE;
-                    else
-                        this.currentState = State.NORMAL;
+                    this.currentState = State.NOMINAL;
 
                     break;
 
 
                     break;
 
-                case State.NORMAL:
+                case State.NOMINAL:
                     break; // Nothing;
             }
                     break; // Nothing;
             }
+        }
+    }
+
+    partial class Program : MyGridProgram
+    {
+        enum State
+        {
+            NOMINAL,
+            LAUNCHING_ONE,
+            LAUNCHING_ALL,
+            LAUNCHING_CONTINUOUS,
+        }
+
+        public const string GRID_PREFIX = "[PML]";
+        public const string MISSILE_GRID_PREFIX = "[PM]";
+        public const double HYDRO_TANK_FILLED_PERCENT = 20;
+
+        const string LAUNCHER_GRID_NAME = "Launcher"; // Following by a number: "01", "02", etc.
+        const string LAUNCHER_SMALL_CONNECTOR_NAME = "Connector Launcher"; // Following by a number: "01", "02", etc.
+        //const string WELDER_NAME_GROUP = "Welder {0:00}"; // Example for group 1: ["Welder 01A", "Welder 01B", "Welder 01C"].
+
+        const float EPSILON = 0.05f;
+
+        readonly Output output;
+
+        IMyCubeGrid grid;
+
+        List<Launcher> launchers = new List<Launcher>();
+        int nbLaunched = 0;
+        int nextToLaunch = 0;
+
+        State currentState = State.NOMINAL;
+
+        //bool continuous_launching = false;
+
+        public Program()
+        {
+            var output = this.Me.GetSurface(0);
+            this.output = new Output(output);
+            this.output.Print("Missile launcher system starting...");
+
+            this.grid = this.Me.CubeGrid;
+
+            var connectorNamePrefix = String.Format("{0} {1} ", GRID_PREFIX, LAUNCHER_SMALL_CONNECTOR_NAME);
+
+            // Find all launcher sub-grid and create the associated launcher.
+            var launcherConnectors = new List<IMyShipConnector>();
+            this.GridTerminalSystem.GetBlocksOfType(
+                launcherConnectors, 
+                (IMyShipConnector connector) => connector.CustomName.StartsWith(connectorNamePrefix)
+            );
+
+            this.output.Print($"launcherConnectors.Count = {launcherConnectors.Count}");
+
+            foreach (var connector in launcherConnectors)
+            //for (int i = 0; i < launcherConnectors.Count; i++) 
+            {
+                var n = int.Parse(connector.CustomName.Substring(connectorNamePrefix.Length));
+                this.output.Print($"n = {n}");
+
+                //var n = i + 1;
+                //var connector = launcherConnectors[i];
+
+                // Find associated welders.
+                //var welders = new List<IMyShipWelder>();
+                //this.GridTerminalSystem.GetBlocksOfType(
+                //    welders,
+                //    (IMyShipWelder welder) => welder.CustomName.StartsWith(String.Format("{0} {1}", GRID_PREFIX, String.Format(WELDER_NAME_GROUP, n)))
+                //);
+
+                this.launchers.Add(new Launcher(n, this.GridTerminalSystem, connector.CubeGrid, this.output, connector));
+            }
+
+            this.Runtime.UpdateFrequency = UpdateFrequency.Update100;       
+
+            this.output.Print("Missile launcher system started");
+        }
+
+        void LaunchNext()
+        {
+            if (this.launchers.Count > 0)
+            {
+                this.launchers[this.nextToLaunch].Launch();
+                this.nextToLaunch = (this.nextToLaunch + 1) % this.launchers.Count;
+            }
+        }
 
 
+        void Reset()
+        {
+            this.nbLaunched = 0;
+            this.currentState = State.NOMINAL;
+        }
+
+        void UpdateState()
+        {
+            switch (this.currentState)
+            {
+                case State.LAUNCHING_ONE:
+                    this.LaunchNext();
+                    this.Reset();
+                    break;
+
+                case State.LAUNCHING_ALL:
+                    if (this.nbLaunched >= launchers.Count)
+                    {
+                        this.Reset();
+                    }
+                    else
+                    {
+                        this.LaunchNext();
+                    }
+                    break;
+
+                case State.LAUNCHING_CONTINUOUS:
+                    this.LaunchNext();
+                    break;
+            }
+
+            foreach (var launcher in this.launchers)
+                launcher.UpdateState();
         }
 
         public void Save()
         {
         }
 
         public void Save()
         {
+
         }
 
         public void Main(string argument, UpdateType updateSource)
         }
 
         public void Main(string argument, UpdateType updateSource)
@@ -164,23 +314,28 @@ namespace IngameScript
             {
                 this.UpdateState();
             }
             {
                 this.UpdateState();
             }
-            else if ((updateSource & (UpdateType.Terminal | UpdateType.Trigger)) != 0)
+            else if ((updateSource & (UpdateType.Terminal | UpdateType.Trigger)) != 0)  
             {
                 switch (argument)
                 {
                     case "LAUNCH ONE":
             {
                 switch (argument)
                 {
                     case "LAUNCH ONE":
-                        this.loop = false;
-                        this.currentState = State.STARTING_SEQUENCE;
+                        this.output.Print("Launching one missile...");
+                        this.currentState = State.LAUNCHING_ONE;
+                        break;
+
+                    case "LAUNCH ALL":
+                        this.output.Print("Launching all missiles...");
+                        this.currentState = State.LAUNCHING_ALL;
                         break;
 
                         break;
 
-                    case "LAUNCH SOME":
-                        this.loop = true;
-                        this.currentState = State.STARTING_SEQUENCE;
+                    case "LAUNCH CONTINUOUS":
+                        this.output.Print("Launching missiles in continous...");
+                        this.currentState = State.LAUNCHING_CONTINUOUS;
                         break;
 
                     case "STOP":
                         break;
 
                     case "STOP":
-                        this.loop = false;
-                        this.currentState = State.NORMAL;
+                        this.output.Print("Stopping lauching...");
+                        this.currentState = State.NOMINAL;
                         break;
 
                     default:
                         break;
 
                     default:
diff --git a/MissileLauncher/README.md b/MissileLauncher/README.md
new file mode 100644 (file)
index 0000000..dfa5bc6
--- /dev/null
@@ -0,0 +1,2 @@
+# Missile launcher
+
diff --git a/MissileLauncher/packages.config b/MissileLauncher/packages.config
new file mode 100644 (file)
index 0000000..0653ff6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Mal.Mdk2.PbPackager" version="2.0.0-alpha073" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..87366ae
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# SDK for Space Engineers scripts
+* https://github.com/malforge/mdk2
+       * Wiki: https://github.com/malforge/mdk2/wiki
+* API Doc: https://github.com/malware-dev/MDK-SE/wiki/Namespace-Index
+
+# Modules
+
+AutoPilot: Automatic control of piloting on planet.
+SSPifou: The main control for the spaceship SSPifou.
+MissileController: Run in the missile computer to pilot it to its target.
+MissileLauncher: Can launch multiple missiles.
+
+# MissileController
+
+## Elements
+
+* 
\ No newline at end of file
index ab9ad4d..6efd50c 100644 (file)
@@ -10,5 +10,6 @@
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="$(MSBuildThisFileDirectory)Output.cs" />
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="$(MSBuildThisFileDirectory)Output.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Utils.cs" />
   </ItemGroup>
 </Project>
\ No newline at end of file
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/SECommon/Utils.cs b/SECommon/Utils.cs
new file mode 100644 (file)
index 0000000..393c175
--- /dev/null
@@ -0,0 +1,24 @@
+
+using Sandbox.ModAPI.Ingame;
+
+using System.Collections.Generic;
+using System.Linq;
+
+using VRage.Game.ModAPI.Ingame;
+
+namespace IngameScript
+{
+    static class Utils
+    {
+        public static T GetBlock<T>(this IMyGridTerminalSystem gridTerminal, string name, IMyCubeGrid grid)
+            where T: class, IMyTerminalBlock
+        {
+            var l = new List<T>();
+            gridTerminal.GetBlocksOfType<T>(l, (T block) => block.CustomName == name && block.CubeGrid == grid);
+            if (l.Count > 0)
+                return l.First();
+            else
+                return null;
+        }
+    }
+}
\ No newline at end of file
index f75f310..2951aed 100644 (file)
@@ -3,39 +3,51 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 17
 VisualStudioVersion = 17.7.34024.191
 MinimumVisualStudioVersion = 10.0.40219.1
 # Visual Studio Version 17
 VisualStudioVersion = 17.7.34024.191
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseApp", "BaseMiner\BaseApp.csproj", "{22A83955-FE9B-4EBA-8980-D9DE01353C4C}"
-EndProject
 Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SECommon", "SECommon\SECommon.shproj", "{9E97399C-4FE6-495B-AA87-ACC2213647CD}"
 EndProject
 Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SECommon", "SECommon\SECommon.shproj", "{9E97399C-4FE6-495B-AA87-ACC2213647CD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoPilot", "AutoPilot\AutoPilot.csproj", "{141E1804-F644-48F8-A3D8-BEFEEE66ECBA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoPilot", "AutoPilot\AutoPilot.csproj", "{141E1804-F644-48F8-A3D8-BEFEEE66ECBA}"
 EndProject
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiningRover", "MiningRover\MiningRover.csproj", "{DBCD62FE-F7AA-4A03-9241-0A4BE6952664}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MiningRover", "MiningRover\MiningRover.csproj", "{DBCD62FE-F7AA-4A03-9241-0A4BE6952664}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A3A0A2EE-BB1F-426A-80EA-3B19273EDCCD}"
        ProjectSection(SolutionItems) = preProject
                .gitignore = .gitignore
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A3A0A2EE-BB1F-426A-80EA-3B19273EDCCD}"
        ProjectSection(SolutionItems) = preProject
                .gitignore = .gitignore
+               README.md = README.md
                TODO.md = TODO.md
        EndProjectSection
 EndProject
                TODO.md = TODO.md
        EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MissileController", "MissileController\MissileController.csproj", "{F902E413-8F1A-423D-98A5-F26B684E28BA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MissileController", "MissileController\MissileController.csproj", "{F902E413-8F1A-423D-98A5-F26B684E28BA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MissileLauncher", "MissileLauncher\MissileLauncher.csproj", "{761F968E-CE71-404B-A20A-7C1458D6C014}"
 EndProject
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MissileLauncher", "MissileLauncher\MissileLauncher.csproj", "{761F968E-CE71-404B-A20A-7C1458D6C014}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BaseMiner", "BaseMiner\BaseMiner.csproj", "{1C2F7DB3-26AD-4C5E-B6C5-D6715B3CFB36}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|x64 = Debug|x64
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|x64 = Debug|x64
+               Release|x64 = Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {22A83955-FE9B-4EBA-8980-D9DE01353C4C}.Debug|x64.ActiveCfg = Debug|x64
-               {22A83955-FE9B-4EBA-8980-D9DE01353C4C}.Debug|x64.Build.0 = Debug|x64
                {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Debug|x64.ActiveCfg = Debug|x64
                {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Debug|x64.Build.0 = Debug|x64
                {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Debug|x64.ActiveCfg = Debug|x64
                {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Debug|x64.Build.0 = Debug|x64
+               {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Release|x64.ActiveCfg = Debug|x64
+               {141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.Release|x64.Build.0 = Debug|x64
                {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Debug|x64.ActiveCfg = Debug|x64
                {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Debug|x64.Build.0 = Debug|x64
                {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Debug|x64.ActiveCfg = Debug|x64
                {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Debug|x64.Build.0 = Debug|x64
+               {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Release|x64.ActiveCfg = Debug|x64
+               {DBCD62FE-F7AA-4A03-9241-0A4BE6952664}.Release|x64.Build.0 = Debug|x64
                {F902E413-8F1A-423D-98A5-F26B684E28BA}.Debug|x64.ActiveCfg = Debug|x64
                {F902E413-8F1A-423D-98A5-F26B684E28BA}.Debug|x64.Build.0 = Debug|x64
                {F902E413-8F1A-423D-98A5-F26B684E28BA}.Debug|x64.ActiveCfg = Debug|x64
                {F902E413-8F1A-423D-98A5-F26B684E28BA}.Debug|x64.Build.0 = Debug|x64
+               {F902E413-8F1A-423D-98A5-F26B684E28BA}.Release|x64.ActiveCfg = Debug|x64
+               {F902E413-8F1A-423D-98A5-F26B684E28BA}.Release|x64.Build.0 = Debug|x64
                {761F968E-CE71-404B-A20A-7C1458D6C014}.Debug|x64.ActiveCfg = Debug|x64
                {761F968E-CE71-404B-A20A-7C1458D6C014}.Debug|x64.Build.0 = Debug|x64
                {761F968E-CE71-404B-A20A-7C1458D6C014}.Debug|x64.ActiveCfg = Debug|x64
                {761F968E-CE71-404B-A20A-7C1458D6C014}.Debug|x64.Build.0 = Debug|x64
+               {761F968E-CE71-404B-A20A-7C1458D6C014}.Release|x64.ActiveCfg = Debug|x64
+               {761F968E-CE71-404B-A20A-7C1458D6C014}.Release|x64.Build.0 = Debug|x64
+               {1C2F7DB3-26AD-4C5E-B6C5-D6715B3CFB36}.Debug|x64.ActiveCfg = Debug|x64
+               {1C2F7DB3-26AD-4C5E-B6C5-D6715B3CFB36}.Debug|x64.Build.0 = Debug|x64
+               {1C2F7DB3-26AD-4C5E-B6C5-D6715B3CFB36}.Release|x64.ActiveCfg = Release|x64
+               {1C2F7DB3-26AD-4C5E-B6C5-D6715B3CFB36}.Release|x64.Build.0 = Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
@@ -44,10 +56,11 @@ Global
                SolutionGuid = {F4600B8D-80EE-4075-8A61-BE8847A00BD7}
        EndGlobalSection
        GlobalSection(SharedMSBuildProjectFiles) = preSolution
                SolutionGuid = {F4600B8D-80EE-4075-8A61-BE8847A00BD7}
        EndGlobalSection
        GlobalSection(SharedMSBuildProjectFiles) = preSolution
-               SECommon\SECommon.projitems*{141e1804-f644-48f8-a3d8-befeee66ecba}*SharedItemsImports = 4
-               SECommon\SECommon.projitems*{22a83955-fe9b-4eba-8980-d9de01353c4c}*SharedItemsImports = 4
-               SECommon\SECommon.projitems*{761f968e-ce71-404b-a20a-7c1458d6c014}*SharedItemsImports = 4
+               SECommon\SECommon.projitems*{141e1804-f644-48f8-a3d8-befeee66ecba}*SharedItemsImports = 5
+               SECommon\SECommon.projitems*{1c2f7db3-26ad-4c5e-b6c5-d6715b3cfb36}*SharedItemsImports = 5
+               SECommon\SECommon.projitems*{761f968e-ce71-404b-a20a-7c1458d6c014}*SharedItemsImports = 5
                SECommon\SECommon.projitems*{9e97399c-4fe6-495b-aa87-acc2213647cd}*SharedItemsImports = 13
                SECommon\SECommon.projitems*{9e97399c-4fe6-495b-aa87-acc2213647cd}*SharedItemsImports = 13
-               SECommon\SECommon.projitems*{f902e413-8f1a-423d-98a5-f26b684e28ba}*SharedItemsImports = 4
+               SECommon\SECommon.projitems*{dbcd62fe-f7aa-4a03-9241-0a4be6952664}*SharedItemsImports = 5
+               SECommon\SECommon.projitems*{f902e413-8f1a-423d-98a5-f26b684e28ba}*SharedItemsImports = 5
        EndGlobalSection
 EndGlobal
        EndGlobalSection
 EndGlobal
diff --git a/TODO.md b/TODO.md
index 9d74dee..2dd8bc9 100644 (file)
--- a/TODO.md
+++ b/TODO.md
@@ -1,3 +1,15 @@
-* Make procedure to deploy tank + button
-* Make procedure to pack tank + button
-* Security system for Loir: Can't 
\ No newline at end of file
+# Active
+## SSPifou
+
+* Missile autodestruction (after 1min or when tank empty)
+* Finish missile launchers
+* Add external lights + commands 
+* Command to stop thrusters
+* Add weapons rack
+* Embedded computer:
+       * Auto landing + auto stabilization
+       * Display of ore, ingot, ammo status
+       * Autocraft of some element: ammo + components
+
+
+# Finished
\ No newline at end of file