Co-locate the two cockpit-pod projects into a single repository:
- Console/ : TeslaConsole, the net48 WinForms operator console (decompiled
reconstruction) plus its differential + catalog test suite.
- Launcher/ : TeslaLauncher, the net6 pod-side Service + Agent rewrite.
Adds a combined TeslaSuite.sln, root README documenting the shared wire
contract (and its current duplication, the main follow-up), and a root
.gitignore. Histories were not preserved per request; this is a fresh start
from the current working state of both projects.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
267 lines
9.4 KiB
C#
267 lines
9.4 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Forms;
|
|
|
|
namespace TeslaConsole;
|
|
|
|
public class dlgOptionalStartParams : Form
|
|
{
|
|
private IContainer components;
|
|
|
|
private Label label1;
|
|
|
|
private TableLayoutPanel tlpResolution;
|
|
|
|
private Label label2;
|
|
|
|
private CheckBox chkCustomResolution;
|
|
|
|
private TextBox txtResX;
|
|
|
|
private TextBox txtResY;
|
|
|
|
private Label label3;
|
|
|
|
private Label label4;
|
|
|
|
private CheckBox chkLiveCamera;
|
|
|
|
private Button cmdOK;
|
|
|
|
private CheckBox chkGameClient;
|
|
|
|
private CheckBox chkMissionReview;
|
|
|
|
private Label label5;
|
|
|
|
public Size? Resolution
|
|
{
|
|
get
|
|
{
|
|
if (chkCustomResolution.Checked && txtResX.Text != "" && txtResY.Text != "")
|
|
{
|
|
return new Size(int.Parse(txtResX.Text), int.Parse(txtResY.Text));
|
|
}
|
|
return null;
|
|
}
|
|
set
|
|
{
|
|
chkCustomResolution.Checked = value.HasValue;
|
|
if (value.HasValue)
|
|
{
|
|
txtResX.Text = value.Value.Width.ToString();
|
|
txtResY.Text = value.Value.Height.ToString();
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool IsGameClient
|
|
{
|
|
get
|
|
{
|
|
return chkGameClient.Checked;
|
|
}
|
|
set
|
|
{
|
|
chkGameClient.Checked = value;
|
|
}
|
|
}
|
|
|
|
public bool IsLiveCam
|
|
{
|
|
get
|
|
{
|
|
return chkLiveCamera.Checked;
|
|
}
|
|
set
|
|
{
|
|
chkLiveCamera.Checked = value;
|
|
}
|
|
}
|
|
|
|
public bool IsMissionReview
|
|
{
|
|
get
|
|
{
|
|
return chkMissionReview.Checked;
|
|
}
|
|
set
|
|
{
|
|
chkMissionReview.Checked = value;
|
|
}
|
|
}
|
|
|
|
public dlgOptionalStartParams()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void chkCustomResolution_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
tlpResolution.Enabled = chkCustomResolution.Checked;
|
|
}
|
|
|
|
private void txtRes_TextChanged(object sender, EventArgs e)
|
|
{
|
|
TextBox textBox = (TextBox)sender;
|
|
int selectionStart = textBox.SelectionStart;
|
|
int selectionLength = textBox.SelectionLength;
|
|
textBox.Text = Regex.Replace(textBox.Text, "[^0-9]", "");
|
|
textBox.Select(selectionStart, selectionLength);
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing && components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
this.label1 = new System.Windows.Forms.Label();
|
|
this.tlpResolution = new System.Windows.Forms.TableLayoutPanel();
|
|
this.txtResX = new System.Windows.Forms.TextBox();
|
|
this.label2 = new System.Windows.Forms.Label();
|
|
this.txtResY = new System.Windows.Forms.TextBox();
|
|
this.label3 = new System.Windows.Forms.Label();
|
|
this.label4 = new System.Windows.Forms.Label();
|
|
this.chkCustomResolution = new System.Windows.Forms.CheckBox();
|
|
this.chkLiveCamera = new System.Windows.Forms.CheckBox();
|
|
this.cmdOK = new System.Windows.Forms.Button();
|
|
this.chkGameClient = new System.Windows.Forms.CheckBox();
|
|
this.chkMissionReview = new System.Windows.Forms.CheckBox();
|
|
this.label5 = new System.Windows.Forms.Label();
|
|
this.tlpResolution.SuspendLayout();
|
|
base.SuspendLayout();
|
|
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.label1.Location = new System.Drawing.Point(12, 9);
|
|
this.label1.Name = "label1";
|
|
this.label1.Size = new System.Drawing.Size(195, 32);
|
|
this.label1.TabIndex = 0;
|
|
this.label1.Text = "Select options you would like sent to Red Planet when it starts.";
|
|
this.tlpResolution.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.tlpResolution.ColumnCount = 3;
|
|
this.tlpResolution.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50f));
|
|
this.tlpResolution.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
|
this.tlpResolution.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50f));
|
|
this.tlpResolution.Controls.Add(this.txtResX, 0, 1);
|
|
this.tlpResolution.Controls.Add(this.label2, 0, 0);
|
|
this.tlpResolution.Controls.Add(this.txtResY, 2, 1);
|
|
this.tlpResolution.Controls.Add(this.label3, 1, 1);
|
|
this.tlpResolution.Controls.Add(this.label4, 2, 0);
|
|
this.tlpResolution.Enabled = false;
|
|
this.tlpResolution.Location = new System.Drawing.Point(27, 67);
|
|
this.tlpResolution.Name = "tlpResolution";
|
|
this.tlpResolution.RowCount = 2;
|
|
this.tlpResolution.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
|
this.tlpResolution.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
|
this.tlpResolution.Size = new System.Drawing.Size(180, 42);
|
|
this.tlpResolution.TabIndex = 1;
|
|
this.txtResX.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.txtResX.Location = new System.Drawing.Point(3, 17);
|
|
this.txtResX.MaxLength = 5;
|
|
this.txtResX.Name = "txtResX";
|
|
this.txtResX.Size = new System.Drawing.Size(75, 20);
|
|
this.txtResX.TabIndex = 3;
|
|
this.txtResX.TextChanged += new System.EventHandler(txtRes_TextChanged);
|
|
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
|
|
this.label2.AutoSize = true;
|
|
this.label2.Location = new System.Drawing.Point(3, 0);
|
|
this.label2.Name = "label2";
|
|
this.label2.Size = new System.Drawing.Size(35, 13);
|
|
this.label2.TabIndex = 3;
|
|
this.label2.Text = "Width";
|
|
this.txtResY.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.txtResY.Location = new System.Drawing.Point(102, 17);
|
|
this.txtResY.MaxLength = 5;
|
|
this.txtResY.Name = "txtResY";
|
|
this.txtResY.Size = new System.Drawing.Size(75, 20);
|
|
this.txtResY.TabIndex = 5;
|
|
this.txtResY.TextChanged += new System.EventHandler(txtRes_TextChanged);
|
|
this.label3.Anchor = System.Windows.Forms.AnchorStyles.None;
|
|
this.label3.AutoSize = true;
|
|
this.label3.Location = new System.Drawing.Point(84, 21);
|
|
this.label3.Name = "label3";
|
|
this.label3.Size = new System.Drawing.Size(12, 13);
|
|
this.label3.TabIndex = 6;
|
|
this.label3.Text = "x";
|
|
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
|
|
this.label4.AutoSize = true;
|
|
this.label4.Location = new System.Drawing.Point(102, 0);
|
|
this.label4.Name = "label4";
|
|
this.label4.Size = new System.Drawing.Size(38, 13);
|
|
this.label4.TabIndex = 7;
|
|
this.label4.Text = "Height";
|
|
this.chkCustomResolution.AutoSize = true;
|
|
this.chkCustomResolution.Location = new System.Drawing.Point(12, 44);
|
|
this.chkCustomResolution.Name = "chkCustomResolution";
|
|
this.chkCustomResolution.Size = new System.Drawing.Size(114, 17);
|
|
this.chkCustomResolution.TabIndex = 2;
|
|
this.chkCustomResolution.Text = "Custom Resolution";
|
|
this.chkCustomResolution.UseVisualStyleBackColor = true;
|
|
this.chkCustomResolution.CheckedChanged += new System.EventHandler(chkCustomResolution_CheckedChanged);
|
|
this.chkLiveCamera.AutoSize = true;
|
|
this.chkLiveCamera.Location = new System.Drawing.Point(12, 185);
|
|
this.chkLiveCamera.Name = "chkLiveCamera";
|
|
this.chkLiveCamera.Size = new System.Drawing.Size(85, 17);
|
|
this.chkLiveCamera.TabIndex = 3;
|
|
this.chkLiveCamera.Text = "Live Camera";
|
|
this.chkLiveCamera.UseVisualStyleBackColor = true;
|
|
this.cmdOK.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
|
|
this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
|
this.cmdOK.Location = new System.Drawing.Point(132, 244);
|
|
this.cmdOK.Name = "cmdOK";
|
|
this.cmdOK.Size = new System.Drawing.Size(75, 23);
|
|
this.cmdOK.TabIndex = 4;
|
|
this.cmdOK.Text = "OK";
|
|
this.cmdOK.UseVisualStyleBackColor = true;
|
|
this.chkGameClient.AutoSize = true;
|
|
this.chkGameClient.Location = new System.Drawing.Point(12, 162);
|
|
this.chkGameClient.Name = "chkGameClient";
|
|
this.chkGameClient.Size = new System.Drawing.Size(83, 17);
|
|
this.chkGameClient.TabIndex = 5;
|
|
this.chkGameClient.Text = "Game Client";
|
|
this.chkGameClient.UseVisualStyleBackColor = true;
|
|
this.chkMissionReview.AutoSize = true;
|
|
this.chkMissionReview.Location = new System.Drawing.Point(12, 208);
|
|
this.chkMissionReview.Name = "chkMissionReview";
|
|
this.chkMissionReview.Size = new System.Drawing.Size(100, 17);
|
|
this.chkMissionReview.TabIndex = 6;
|
|
this.chkMissionReview.Text = "Mission Review";
|
|
this.chkMissionReview.UseVisualStyleBackColor = true;
|
|
this.label5.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.label5.Location = new System.Drawing.Point(9, 127);
|
|
this.label5.Name = "label5";
|
|
this.label5.Size = new System.Drawing.Size(195, 32);
|
|
this.label5.TabIndex = 7;
|
|
this.label5.Text = "Select which roles you would like this machine to fill.";
|
|
base.AcceptButton = this.cmdOK;
|
|
base.AutoScaleDimensions = new System.Drawing.SizeF(6f, 13f);
|
|
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
base.ClientSize = new System.Drawing.Size(219, 279);
|
|
base.Controls.Add(this.label5);
|
|
base.Controls.Add(this.chkMissionReview);
|
|
base.Controls.Add(this.chkGameClient);
|
|
base.Controls.Add(this.cmdOK);
|
|
base.Controls.Add(this.chkLiveCamera);
|
|
base.Controls.Add(this.label1);
|
|
base.Controls.Add(this.chkCustomResolution);
|
|
base.Controls.Add(this.tlpResolution);
|
|
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
|
base.MaximizeBox = false;
|
|
base.MinimizeBox = false;
|
|
base.Name = "dlgOptionalStartParams";
|
|
this.Text = "Select Optional Parameters";
|
|
this.tlpResolution.ResumeLayout(false);
|
|
this.tlpResolution.PerformLayout();
|
|
base.ResumeLayout(false);
|
|
base.PerformLayout();
|
|
}
|
|
}
|