Пример #1
0
        MockSolarPanel addMockSolarPanel(MockCubeGrid grid)
        {
            int id  = GetId();
            var res = new MockSolarPanel {
                CubeGrid      = grid,
                CustomName    = $"solar panel {id}",
                EntityId      = id,
                CurrentOutput = 100,
                MaxOutput     = 200
            };

            this.gts.Add(res);
            return(res);
        }
Пример #2
0
        Program.SolarPanel getPanel(List <MockSolarPanel> panels)
        {
            var grid  = new MockCubeGrid();
            var grids = new List <IMyCubeGrid> {
                grid
            };

            foreach (MockSolarPanel panel in panels)
            {
                panel.CubeGrid = grid;
            }
            var ps = panels.Select(p => p as IMySolarPanel).ToList();

            return(new Program.SolarPanel(grids, ps));
        }
Пример #3
0
 public void BeforeEach()
 {
     this.baseGrid         = this.getMockCubeGrid("base grid", true);
     this.programableBlock = new MockProgrammableBlock {
         CubeGrid    = this.baseGrid,
         CustomData  = "[solar-manager]\nkeyword=solar",
         CustomName  = "main pb",
         EntityId    = GetId(),
         ProgramType = typeof(Program)
     };
     this.gts = new MockGridTerminalSystem {
         this.programableBlock
     };
     this.program      = null;
     this.run          = null;
     this.solarManager = null;
 }
Пример #4
0
        MockMotorStator addMockStator(MockCubeGrid baseGrid, MockCubeGrid topGrid, string name = null, bool isSolar = true)
        {
            var attachable = new MockMotorRotor {
                CubeGrid = topGrid
            };
            int id  = GetId();
            var res = new MockMotorStator {
                CubeGrid   = baseGrid,
                CustomName = $"{(name ?? "rotor")} {(isSolar ? "solar " : "")}{id}",
                EntityId   = id
            };

            res.MockPendingAttachment = attachable;
            res.Attach();
            this.gts.Add(res);
            return(res);
        }
Пример #5
0
        public void Everything()
        {
            var grid = new MockCubeGrid {
                GridSizeEnum = VRage.Game.MyCubeSize.Small
            };

            var controller = new MockShipController {
                CubeGrid      = grid,
                ShipMass      = new Sandbox.ModAPI.Ingame.MyShipMass(1820, 1820, 1820),
                WorldPosition = Vector3D.Zero,
                WorldMatrix   = MatrixD.Identity
            };


            var gts = new MockGridTerminalSystem {
                PowerWheelTest.GetSuspension(new Vector3D(-1, 0, -1), true, grid),
                PowerWheelTest.GetSuspension(new Vector3D(1, 0, -1), false, grid),
                PowerWheelTest.GetSuspension(new Vector3D(-1, 0, 1), true, grid),
                PowerWheelTest.GetSuspension(new Vector3D(1, 0, 1), false, grid),
            };

            var transformer = new Program.CoordinatesTransformer(controller);

            var ini = new VRage.Game.ModAPI.Ingame.Utilities.MyIni();

            ini.TryParse(@"");

            var saveManager = new Program.ProcessSpawnerMock();

            var command = new Program.CommandLine("mock", null, saveManager);

            var wc = new Program.WheelsController(command, controller, gts, ini, saveManager, transformer);

            Assert.AreEqual(new Vector3D(0, 1, 0), wc.GetContactPlaneW());

            Assert.AreEqual(new Vector3D(0, -1.75, -1), wc.GetPointOfContactW(new Vector3D(0, 0, -1)));

            wc.SetPosition("0.5"); // too anoying to test
        }
Пример #6
0
 public static MockMotorSuspension GetSuspension(Vector3D pos, bool left, MockCubeGrid grid = null)
 {
     return(new MockMotorSuspension {
         CubeGrid = grid ?? new MockCubeGrid {
             GridSizeEnum = VRage.Game.MyCubeSize.Small
         },
         CustomName = "Power",
         DisplayNameText = "Power",
         MaxSteerAngle = 30f,
         Strength = 1,
         Top = new MockAttachableTopBlock {
             Max = new Vector3I(1, 1, 1),
             Min = new Vector3I(-1, -1, -1),
             WorldPosition = pos + new Vector3D(0, -1, 0)
         },
         // This should be the world matrix in case the wheels are in the correct orientation
         WorldMatrix = new MatrixD(
             0, 0, left ? 1 : -1, 0,
             left ? -1 : 1, 0, 0, 0,
             0, -1, 0, 0,
             pos.X, pos.Y, pos.Z, 1),
         WorldPosition = pos
     });
 }
Пример #7
0
        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.
            var grid     = new MockGridTerminalSystem();
            var cubeGrid = new MockCubeGrid()
            {
                CustomName   = "Debug Test Station",
                IsStatic     = true,
                GridSizeEnum = VRage.Game.MyCubeSize.Large
            };

            var programmableBlock = Mock <MockProgrammableBlock>(options: b => b.CubeGrid = cubeGrid);

            programmableBlock.Program = new Program(new DebugInfo
            {
                ProgrammableBlock  = programmableBlock,
                GridTerminalSystem = grid,
                RuntimeInfo        = new MockGridProgramRuntimeInfo()
            });

            var echo = programmableBlock.Program.Echo;

            programmableBlock.Program.Echo = message =>
            {
                echo(message);
                Console.WriteLine(message);
            };

            var ventZone1        = Mock <MockAirVent>(options: b => b.CanPressurize = true, zones: "room-1");
            var lightNormalZone1 = Mock <MockInteriorLight>(zones: "room-1");
            var lightAlertZone1  = Mock <MockInteriorLight>(BlockFunction.Alert, zones: "room-1");
            var ventZone2        = Mock <MockAirVent>(options: b => b.CanPressurize = true, zones: "room-2");
            var lightNormalZone2 = Mock <MockInteriorLight>(zones: "room-2");
            var lightAlertZone2  = Mock <MockInteriorLight>(BlockFunction.Alert, zones: "room-2");

            grid.Add(new IMyTerminalBlock[]
            {
                programmableBlock,
                ventZone1, lightNormalZone1, lightAlertZone1,
                ventZone2, lightNormalZone2, lightAlertZone2
            });

            {
                RunUntil(programmableBlock, p => p.CurrentTick > 2);
                Assert.Equals("", programmableBlock.GetSurface(0).GetText(), "Programmable Block Grid Status");
            }

            {
                RunCycle(programmableBlock);

                var pbSurface0 = programmableBlock.GetSurface(0) as MockTextSurface;
                var pbSprite0  = pbSurface0.SpriteBuffer.First();

                var pbSurface1 = programmableBlock.GetSurface(1) as MockTextSurface;
                var pbSprite1  = pbSurface1.SpriteBuffer.First();

                Assert.True(SpriteType.TEXT == pbSprite0.Type, "Programmable Block main screen texture type");
                Assert.Equals("Station Normal\r\n room-1 Normal\r\n room-2 Normal\r\n", pbSprite0.Data, "Programmable Block main screen text");

                Assert.True(SpriteType.TEXT == pbSprite1.Type, "Programmable Block keyboard texture type");
                Assert.Equals("Time: 0ms (0ms max)\r\nIOPS: 0/0, (0 max)\r\nTick: 2/7\r\n", pbSprite1.Data, "Programmable Block keyboard text");

                Assert.Equals(lightNormalZone1.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.True(lightNormalZone1.Enabled, "Zone 2 normal light should be enabled");
                Assert.Equals(lightAlertZone1.Color, new Color(255, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone1.Enabled, "Zone 1 alert light should be enabled");

                Assert.Equals(lightNormalZone2.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.True(lightNormalZone2.Enabled, "Zone 2 normal light should be enabled");
                Assert.Equals(lightAlertZone2.Color, new Color(255, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone2.Enabled, "Zone 1 alert light should be enabled");
            }

            ventZone1.CanPressurize = false;

            {
                RunCycle(programmableBlock);

                Assert.Equals("Station Normal\r\n room-1 Decompressed\r\n room-2 Normal\r\n", GetMockSpriteText(programmableBlock, 0), "Programmable Block main screen text");
                Assert.Equals("Time: 0ms (0ms max)\r\nIOPS: 0/0, (0 max)\r\nTick: 2/7\r\n", GetMockSpriteText(programmableBlock, 1), "Programmable Block keyboard text");

                Assert.Equals(lightNormalZone1.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.False(lightNormalZone1.Enabled, "Zone 1 normal light should be disabled");
                Assert.Equals(lightAlertZone1.Color, new Color(0, 0, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone1.Enabled, "Zone 1 alert light should be enabled");

                Assert.Equals(lightNormalZone2.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.True(lightNormalZone2.Enabled, "Zone 2 normal light should be enabled");
                Assert.Equals(lightAlertZone2.Color, new Color(255, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone2.Enabled, "Zone 2 alert light should be enabled");
            }

            programmableBlock.Run("toggle battle", UpdateType.Terminal);

            {
                RunCycle(programmableBlock);

                Assert.Equals("Station Battle Stations\r\n room-1 Decompressed\r\n room-2 Normal\r\n", GetMockSpriteText(programmableBlock, 0), "Programmable Block main screen text");
                Assert.Equals("Time: 0ms (0ms max)\r\nIOPS: 0/0, (0 max)\r\nTick: 2/7\r\n", GetMockSpriteText(programmableBlock, 1), "Programmable Block keyboard text");

                Assert.Equals(lightNormalZone1.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.False(lightNormalZone1.Enabled, "Zone 1 normal light should be disabled");
                Assert.Equals(lightAlertZone1.Color, new Color(0, 0, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone1.Enabled, "Zone 1 alert light should be enabled");

                Assert.Equals(lightNormalZone2.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.False(lightNormalZone1.Enabled, "Zone 2 normal light should be disabled");
                Assert.Equals(lightAlertZone2.Color, new Color(255, 0, 0), "Zone 1 alert light color");
                Assert.True(lightAlertZone2.Enabled, "Zone 2 alert light should be enabled");
            }

            programmableBlock.Run("toggle battle", UpdateType.Terminal);
            ventZone1.CanPressurize = true;
            ventZone2.CanPressurize = false;

            {
                RunCycle(programmableBlock);

                Assert.Equals("Station Normal\r\n room-1 Normal\r\n room-2 Decompressed\r\n", GetMockSpriteText(programmableBlock, 0), "Programmable Block main screen text");
                Assert.Equals("Time: 0ms (0ms max)\r\nIOPS: 0/0, (0 max)\r\nTick: 2/7\r\n", GetMockSpriteText(programmableBlock, 1), "Programmable Block keyboard text");

                Assert.Equals(lightNormalZone1.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.True(lightNormalZone1.Enabled, "Zone 1 normal light should be enabled");
                Assert.Equals(lightAlertZone1.Color, new Color(255, 255, 255, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone1.Enabled, "Zone 1 alert light should be enabled");

                Assert.Equals(lightNormalZone2.Color, new Color(255, 255, 255), "Zone 1 normal light color");
                Assert.False(lightNormalZone2.Enabled, "Zone 1 normal light should be disabled");
                Assert.Equals(lightAlertZone2.Color, new Color(0, 0, 255), "Zone 1 alert light color");
                Assert.True(lightAlertZone2.Enabled, "Zone 1 alert light should be enabled");
            }

            Console.WriteLine("Mock completed, press any key to exit.");
            Console.ReadKey(true);
        }