You can safely exclude this file from code repositories and use different
user settings per machine.
-->
- <MDKVersion>1.5.17</MDKVersion>
+ <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\bnnd2422.thc</MDKInstallPath>
+ <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="System.Collections.Immutable">
- <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
- <Private>false</Private>
- </Reference>
<Reference Include="Sandbox.Common">
<HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Game">
<HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Graphics">
<HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.Game">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.ObjectBuilders">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage">
<HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Audio">
<HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Game">
<HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Input">
<HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Library">
<HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Math">
<HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render">
<HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render11">
<HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Scripting">
<HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="MDKUtilities">
<HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
- <Private>True</Private>
+ <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>
You can safely exclude this file from code repositories and use different
user settings per machine.
-->
- <MDKVersion>1.5.17</MDKVersion>
+ <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\bnnd2422.thc</MDKInstallPath>
+ <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="System.Collections.Immutable">
- <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
- <Private>false</Private>
- </Reference>
<Reference Include="Sandbox.Common">
<HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Game">
<HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Graphics">
<HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.Game">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.ObjectBuilders">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage">
<HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Audio">
<HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Game">
<HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Input">
<HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Library">
<HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Math">
<HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render">
<HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render11">
<HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Scripting">
<HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="MDKUtilities">
<HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
- <Private>True</Private>
+ <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>
var output = this.Me.GetSurface(0);
this.output = new Output(output, CONSOLE_NB_LINES);
- this.output.Print("Base mining system starting...");
+ 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.Runtime.UpdateFrequency = UpdateFrequency.Update100;
+
+ this.output.Print("Base system has started");
+ }
+
+ void InitMiningSystem()
+ {
+ this.output.Print("Mining system initializing...");
this.GridTerminalSystem.GetBlocksOfType(
- this.drills,
+ this.drills,
(IMyShipDrill drill) => drill.CustomName.StartsWith(GRID_PREFIX)
);
);
this.output.Print($"Nb of rotating lights: {this.rotatingLights.Count}");
-
- this.minerConnector = this.GridTerminalSystem.GetBlockWithName("[Base] Connector Miner") as IMyShipConnector;
- if (this.minerConnector == null)
- this.output.Print($"Error: miner connector not found");
-
- this.Runtime.UpdateFrequency = UpdateFrequency.Update100;
- this.output.Print("base Mining system has started");
+ this.output.Print("Mining system initialized");
}
public void Save()
You can safely exclude this file from code repositories and use different
user settings per machine.
-->
- <MDKVersion>1.5.17</MDKVersion>
+ <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\bnnd2422.thc</MDKInstallPath>
+ <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="System.Collections.Immutable">
- <HintPath>$(MDKGameBinPath)\System.Collections.Immutable.dll</HintPath>
- <Private>false</Private>
- </Reference>
<Reference Include="Sandbox.Common">
<HintPath>$(MDKGameBinPath)\Sandbox.Common.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Game">
<HintPath>$(MDKGameBinPath)\Sandbox.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="Sandbox.Graphics">
<HintPath>$(MDKGameBinPath)\Sandbox.Graphics.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.Game">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="SpaceEngineers.ObjectBuilders">
<HintPath>$(MDKGameBinPath)\SpaceEngineers.ObjectBuilders.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage">
<HintPath>$(MDKGameBinPath)\VRage.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Audio">
<HintPath>$(MDKGameBinPath)\VRage.Audio.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Game">
<HintPath>$(MDKGameBinPath)\VRage.Game.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Input">
<HintPath>$(MDKGameBinPath)\VRage.Input.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Library">
<HintPath>$(MDKGameBinPath)\VRage.Library.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Math">
<HintPath>$(MDKGameBinPath)\VRage.Math.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render">
<HintPath>$(MDKGameBinPath)\VRage.Render.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Render11">
<HintPath>$(MDKGameBinPath)\VRage.Render11.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="VRage.Scripting">
<HintPath>$(MDKGameBinPath)\VRage.Scripting.dll</HintPath>
- <Private>False</Private>
+ <Private>false</Private>
</Reference>
<Reference Include="MDKUtilities">
<HintPath>$(MDKInstallPath)\MDKUtilities.dll</HintPath>
- <Private>True</Private>
+ <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>
--- /dev/null
+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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+using Sandbox.Game.Entities.Cube;
+using Sandbox.Game.EntityComponents;
+//using Sandbox.ModAPI;
+using Sandbox.ModAPI.Ingame;
+using Sandbox.ModAPI.Interfaces;
+
+using SpaceEngineers.Game.ModAPI.Ingame;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Text;
+
+using VRage;
+using VRage.Collections;
+using VRage.Game;
+using VRage.Game.Components;
+using VRage.Game.GUI.TextPanel;
+using VRage.Game.ModAPI.Ingame;
+using VRage.Game.ModAPI.Ingame.Utilities;
+using VRage.Game.ObjectBuilders.Definitions;
+
+using VRageMath;
+
+namespace IngameScript
+{
+ partial class Program : MyGridProgram
+ {
+ const string MISSILE_GRID_PREFIX = "[PM]";
+
+ const float EPSILON = 0.05f;
+ const double DELAY_BEFORE_TRAVELLING_MODE = 3000; // [ms].
+ const double AUTO_DESTRUCTION_AFTER = 60000; // [ms] (1 min).
+
+
+ enum State
+ {
+ NORMAL,
+ LAUNCHING,
+ TRAVELLING,
+ }
+
+ State currentState = State.NORMAL;
+
+ readonly Output output;
+
+ int tickFromStart;
+ IMyThrust forwardThruster;
+ IMyFlightMovementBlock aiMove;
+ IMyOffensiveCombatBlock aiCombat;
+ IMySensorBlock sensor;
+ List<IMyWarhead> warheads = new List<IMyWarhead>();
+ IMyGasTank gasTank;
+ IMyLightingBlock light;
+
+ public Program()
+ {
+ var output = this.Me.GetSurface(0);
+ this.output = new Output(output);
+
+ this.output.Print("Missile controller system starting...");
+
+ this.Runtime.UpdateFrequency = UpdateFrequency.Update10;
+
+ this.output.Print("Missile controller system started");
+ }
+
+ void UpdateState10()
+ {
+ if (this.forwardThruster == null)
+ this.forwardThruster = this.GridTerminalSystem.GetBlockWithName("[PM] Hydrogen Thruster 01") as IMyThrust;
+ if (this.forwardThruster == null)
+ {
+ this.output.Print("Error: Cannot find forward thruster");
+ return;
+ }
+
+ if (this.aiMove == null)
+ this.aiMove = this.GridTerminalSystem.GetBlockWithName("[PM] AI Flight (Move)") as IMyFlightMovementBlock;
+ if (this.aiMove == null)
+ {
+ this.output.Print("Error: Cannot find AI move");
+ return;
+ }
+
+ if (this.aiCombat == null)
+ this.aiCombat = this.GridTerminalSystem.GetBlockWithName("[PM] AI Offensive (Combat)") as IMyOffensiveCombatBlock;
+ if (this.aiCombat == null)
+ {
+ this.output.Print("Error: Cannot find AI combat");
+ return;
+ }
+
+ if (this.sensor == null)
+ this.sensor = this.GridTerminalSystem.GetBlockWithName("[PM] Sensor") as IMySensorBlock;
+ if (this.sensor == null)
+ {
+ this.output.Print("Error: Cannot find sensor");
+ return;
+ }
+
+ if (this.warheads.Count == 0)
+ this.GridTerminalSystem.GetBlockGroupWithName("[PM] Warheads").GetBlocksOfType(this.warheads);
+ if (this.warheads.Count == 0)
+ {
+ this.output.Print("Error: Cannot find any warhead");
+ return;
+ }
+
+ if (this.gasTank == null)
+ this.gasTank = this.GridTerminalSystem.GetBlockWithName("[PM] Hydrogen Tank") as IMyGasTank;
+ if (this.gasTank == null)
+ {
+ this.output.Print("Error: Cannot find gas tank");
+ return;
+ }
+
+ if (this.light == null)
+ this.light = this.GridTerminalSystem.GetBlockWithName("[PM] Light") as IMyLightingBlock;
+ if (this.light == null)
+ {
+ this.output.Print("Error: Cannot find light");
+ return;
+ }
+
+ switch (this.currentState)
+ {
+ case State.LAUNCHING:
+ // this.output.Print($"Tick: {this.tickFromStart}");
+ //this.forwardThruster.ove
+ this.forwardThruster.ThrustOverridePercentage = 1;
+ if (this.MsSinceLaunch > DELAY_BEFORE_TRAVELLING_MODE)
+ {
+ this.forwardThruster.ThrustOverridePercentage = 0;
+ this.aiMove.Enabled = true;
+ this.aiCombat.Enabled = true;
+
+ foreach (var warhead in this.warheads)
+ warhead.IsArmed = true;
+
+ this.output.Print($"Travelling mode");
+ this.currentState = State.TRAVELLING;
+ }
+ break;
+
+ case State.TRAVELLING:
+ var detectedEntity = this.sensor.LastDetectedEntity;
+
+ if (this.MsSinceLaunch > AUTO_DESTRUCTION_AFTER - 3000)
+ this.light.BlinkIntervalSeconds = 0.5f;
+
+ if (this.gasTank.FilledRatio <= EPSILON || detectedEntity.Type != MyDetectedEntityType.None || this.MsSinceLaunch > AUTO_DESTRUCTION_AFTER)
+ {
+ Detonate();
+ }
+ break;
+
+ case State.NORMAL:
+ break; // Nothing;
+ }
+ }
+
+ void Detonate()
+ {
+ foreach (var warhead in this.warheads)
+ warhead.Detonate();
+ }
+
+ public void Save()
+ {
+ }
+
+ double MsSinceLaunch
+ {
+ get { return (double)this.tickFromStart / 60 * 1000; }
+ }
+
+ public void Main(string argument, UpdateType updateSource)
+ {
+ if ((updateSource & UpdateType.Update10) != 0)
+ {
+ this.tickFromStart += 10;
+ this.UpdateState10();
+ }
+ else if ((updateSource & (UpdateType.Script | UpdateType.Terminal | UpdateType.Trigger)) != 0)
+ {
+ switch (argument)
+ {
+ case "START":
+ this.output.Print("Launching mode");
+ this.tickFromStart = 0;
+ this.currentState = State.LAUNCHING;
+ break;
+
+ default:
+ this.output.Print($"Uknown command: {argument}");
+ break;
+ }
+ }
+ }
+ }
+}
--- /dev/null
+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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+using Sandbox.Game.Entities.Cube;
+using Sandbox.Game.EntityComponents;
+using Sandbox.Game.GameSystems;
+using Sandbox.ModAPI.Ingame;
+using Sandbox.ModAPI.Interfaces;
+
+using SpaceEngineers.Game.ModAPI.Ingame;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Linq;
+using System.Text;
+
+using VRage;
+using VRage.Collections;
+using VRage.Game;
+using VRage.Game.Components;
+using VRage.Game.GUI.TextPanel;
+using VRage.Game.ModAPI.Ingame;
+using VRage.Game.ModAPI.Ingame.Utilities;
+using VRage.Game.ObjectBuilders.Definitions;
+
+using VRageMath;
+
+using static VRageRender.Utils.MyWingedEdgeMesh;
+
+namespace IngameScript
+{
+ enum State
+ {
+ NORMAL,
+ STARTING_SEQUENCE,
+ FILLING_TANK,
+ LAUNCHING,
+ }
+
+ class Missile
+ {
+ 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;
+
+ IMyGridTerminalSystem gridTerminalSystem;
+
+ IMyGasTank tank = null;
+ IMyShipConnector connector = null;
+ IMyShipMergeBlock mergeBlock = null;
+ IMyProgrammableBlock programmableBlock = null;
+
+ // bool loop = false; // Not used for the moment.
+ public Missile(string prefix, IMyGridTerminalSystem gridTerminalSystem)
+ {
+ this.prefix = prefix;
+ this.gridTerminalSystem = gridTerminalSystem;
+ }
+ }
+
+ partial class Program : MyGridProgram
+ {
+ const string GRID_PREFIX = "[PML]";
+ const string MISSILE_GRID_PREFIX = "[PM]";
+ const double HYDRO_TANK_FILLED_PERCENT = 20;
+
+ const float EPSILON = 0.05f;
+
+ readonly Output output;
+
+ public Program()
+ {
+ var output = this.Me.GetSurface(0);
+ this.output = new Output(output);
+ this.output.Print("Missile launcher system starting...");
+
+ this.Runtime.UpdateFrequency = UpdateFrequency.Update100;
+
+ this.output.Print("Missile launcher system started");
+ }
+
+ void UpdateState()
+ {
+ switch (this.currentState)
+ {
+ case State.STARTING_SEQUENCE:
+ this.tank = this.GridTerminalSystem.GetBlockWithName("[PM] Hydrogen Tank") as IMyGasTank;
+ if (this.tank == null)
+ {
+ this.output.Print("Cannot find the missile hydrogen tank");
+ break;
+ }
+
+ this.connector = this.GridTerminalSystem.GetBlockWithName("[PM] Connector") as IMyShipConnector;
+ if (this.connector == null)
+ {
+ this.output.Print("Cannot find the missile connector");
+ break;
+ }
+
+ this.mergeBlock = this.GridTerminalSystem.GetBlockWithName("[PM] Merge Block") as IMyShipMergeBlock;
+ if (this.mergeBlock == null)
+ {
+ this.output.Print("Cannot find the missile merge block");
+ break;
+ }
+
+ this.programmableBlock = this.GridTerminalSystem.GetBlockWithName("[PM] Programmable Block") as IMyProgrammableBlock;
+ if (this.programmableBlock == null)
+ {
+ this.output.Print("Cannot find the missile programmable block");
+ break;
+ }
+
+ this.tank.Stockpile = true;
+ this.connector.Connect();
+
+ this.currentState = State.FILLING_TANK;
+ break; ;
+
+ case State.FILLING_TANK:
+ this.output.Print("Waiting missile tank filled...");
+ if (this.tank.FilledRatio >= HYDRO_TANK_FILLED_PERCENT / 100)
+ {
+ this.tank.Stockpile = false;
+ this.currentState = State.LAUNCHING;
+ }
+ break;
+
+ case State.LAUNCHING:
+ this.output.Print("Launching missile...");
+
+ if (this.programmableBlock.TryRun("START"))
+ this.output.Print("Missile launched!");
+ else
+ this.output.Print("ERROR: Can't send START command to missile");
+
+ this.mergeBlock.Enabled = false;
+ this.connector.Disconnect();
+
+ if (this.loop)
+ this.currentState = State.STARTING_SEQUENCE;
+ else
+ this.currentState = State.NORMAL;
+
+ break;
+
+ case State.NORMAL:
+ break; // Nothing;
+ }
+
+ }
+
+ public void Save()
+ {
+ }
+
+ public void Main(string argument, UpdateType updateSource)
+ {
+ if ((updateSource & UpdateType.Update100) != 0)
+ {
+ this.UpdateState();
+ }
+ else if ((updateSource & (UpdateType.Terminal | UpdateType.Trigger)) != 0)
+ {
+ switch (argument)
+ {
+ case "LAUNCH ONE":
+ this.loop = false;
+ this.currentState = State.STARTING_SEQUENCE;
+ break;
+
+ case "LAUNCH SOME":
+ this.loop = true;
+ this.currentState = State.STARTING_SEQUENCE;
+ break;
+
+ case "STOP":
+ this.loop = false;
+ this.currentState = State.NORMAL;
+ break;
+
+ default:
+ this.output.Print($"Uknown command: {argument}");
+ break;
+ }
+ }
+ }
+ }
+}
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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
+ TODO.md = TODO.md
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MissileController", "MissileController\MissileController.csproj", "{F902E413-8F1A-423D-98A5-F26B684E28BA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MissileLauncher", "MissileLauncher\MissileLauncher.csproj", "{761F968E-CE71-404B-A20A-7C1458D6C014}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
{141E1804-F644-48F8-A3D8-BEFEEE66ECBA}.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
+ {F902E413-8F1A-423D-98A5-F26B684E28BA}.Debug|x64.ActiveCfg = Debug|x64
+ {F902E413-8F1A-423D-98A5-F26B684E28BA}.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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
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*{9e97399c-4fe6-495b-aa87-acc2213647cd}*SharedItemsImports = 13
+ SECommon\SECommon.projitems*{f902e413-8f1a-423d-98a5-f26b684e28ba}*SharedItemsImports = 4
EndGlobalSection
EndGlobal
--- /dev/null
+* Make procedure to deploy tank + button
+* Make procedure to pack tank + button
+* Security system for Loir: Can't
\ No newline at end of file