aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms
diff options
context:
space:
mode:
authorMichael VanOverbeek <[email protected]>2017-04-07 17:01:23 +0000
committerMichael VanOverbeek <[email protected]>2017-04-07 17:01:23 +0000
commitedf4aef6adf8a2a45c347f70804fc5ac93070576 (patch)
tree40dbd454b0a4e4878f6f2f8e635ad83246213823 /ShiftOS.WinForms
parent9aa1becb306f5acf139bf0dc864304ebff8ffabf (diff)
downloadshiftos_thereturn-edf4aef6adf8a2a45c347f70804fc5ac93070576.tar.gz
shiftos_thereturn-edf4aef6adf8a2a45c347f70804fc5ac93070576.tar.bz2
shiftos_thereturn-edf4aef6adf8a2a45c347f70804fc5ac93070576.zip
Merge
Diffstat (limited to 'ShiftOS.WinForms')
-rw-r--r--ShiftOS.WinForms/Applications/FormatEditor.cs186
-rw-r--r--ShiftOS.WinForms/Applications/Pong.Designer.cs744
-rw-r--r--ShiftOS.WinForms/Applications/Pong.cs675
-rw-r--r--ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs261
-rw-r--r--ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs196
-rw-r--r--ShiftOS.WinForms/Controls/TerminalBox.cs115
-rw-r--r--ShiftOS.WinForms/Oobe.cs540
-rw-r--r--ShiftOS.WinForms/Tools/ControlManager.cs325
-rw-r--r--ShiftOS.WinForms/WindowBorder.cs490
-rw-r--r--ShiftOS.WinForms/WinformsDesktop.cs746
-rw-r--r--ShiftOS.WinForms/WinformsWindowManager.cs183
11 files changed, 0 insertions, 4461 deletions
diff --git a/ShiftOS.WinForms/Applications/FormatEditor.cs b/ShiftOS.WinForms/Applications/FormatEditor.cs
deleted file mode 100644
index c5afc02..0000000
--- a/ShiftOS.WinForms/Applications/FormatEditor.cs
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-
-namespace ShiftOS.WinForms.Applications {
- [MultiplayerOnly]
- [Launcher("FormatEditor", true, "al_format_editor", "Games")]
- [RequiresUpgrade("format_editor")]
- [WinOpen("formateditor")]
- [DefaultIcon("iconFormatEditor")]
-
- public partial class FormatEditor : UserControl, IShiftOSWindow {
-
- IList<CommandFormat> parts = new List<CommandFormat>();
- CommandParser parser = new CommandParser();
- IList<Panel> editorBoxes = new List<Panel>();
-
- string commandMode = "namespace";
- int avcount = 0;
-
- public FormatEditor() {
- InitializeComponent();
- }
-
- public void OnLoad() {
- OnUpgrade();
- }
-
- public void OnSkinLoad() { }
-
- public bool OnUnload() { return true; }
-
- public void OnUpgrade() {
- btnAddOptionalText.Visible = ShiftoriumFrontend.UpgradeInstalled("format_editor_optional_text");
- btnAddRegexText.Visible = ShiftoriumFrontend.UpgradeInstalled("format_editor_regex");
- btnAddColor.Visible = ShiftoriumFrontend.UpgradeInstalled("format_editor_syntax_highlighting");
- }
-
- private void addPart(CommandFormat part) {
- parser.AddPart(part);
-
- addPart(part.Draw());
- }
-
- private void addPart(Control part) {
- Panel container = new Panel();
-
- Control drawnPart = part;
- container.Size = drawnPart.Size;
- container.Controls.Add(drawnPart);
-
- int woffset = 0;
- if (editorBoxes.Count > 0) {
- woffset = editorBoxes.Last().Width + editorBoxes.Last().Location.X;
- } else {
- woffset = 0;
- }
-
- container.Location = new Point(woffset, 0);
- editorBoxes.Add(container);
- panelEditor.Controls.Add(container);
- }
-
- private void btnAddText_Click(object sender, EventArgs e) {
- addPart(new CommandFormatText());
- }
-
- private void btnAddOptionalText_Click(object sender, EventArgs e) {
- addPart(new CommandFormatOptionalText());
- }
-
- private void btnAddRegexText_Click(object sender, EventArgs e) {
-
- }
-
- private void btnAddColor_Click(object sender, EventArgs e) {
-
- }
-
- private void btnAddCommand_Click(object sender, EventArgs e) {
- switch (commandMode) {
- case "namespace":
- addPart(new CommandFormatNamespace());
- commandMode = "command";
- btnAddCommand.Text = "+ Command";
- break;
- case "command":
- addPart(new CommandFormatCommand());
- commandMode = "argument";
- btnAddCommand.Text = "+ Argument";
- break;
- case "argument":
- addPart(new CommandFormatArgument());
- commandMode = "value";
- btnAddCommand.Text = "+ \"Value\"";
- break;
- case "value":
- addPart(new CommandFormatValue());
- avcount++;
- if (avcount >= 2) {
- commandMode = "";
- btnAddCommand.Text = "";
- btnAddCommand.Enabled = false;
- }else {
- commandMode = "argument";
- btnAddCommand.Text = "+ Argument";
- }
- break;
- }
- }
-
- private void richTextBox1_TextChanged(object sender, EventArgs e) {
- var result = parser.ParseCommand(richTextBox1.Text);
-
- if (result.Equals(default(KeyValuePair<KeyValuePair<string, string>, Dictionary<string, string>>))) {
- lblExampleCommand.Text = "Syntax Error";
- } else {
- string argvs = "{";
-
- foreach (KeyValuePair<string, string> entry in result.Value) {
- argvs += entry.Key + "=\"" + entry.Value + "\", ";
- }
-
- argvs += "}";
-
- lblExampleCommand.Text = result.Key + argvs;
- }
- }
-
- private void btnTest_Click(object sender, EventArgs e) {
-
- }
-
- private void btnSave_Click(object sender, EventArgs e) {
- CurrentCommandParser.parser = parser;
-
- FileSkimmerBackend.GetFile(new string[] { ".cf" }, FileOpenerStyle.Save, new Action<string>((result) => {
- Objects.ShiftFS.Utils.WriteAllText(result, parser.Save());
- }));
- }
-
- private void btnLoad_Click(object sender, EventArgs e) {
- FileSkimmerBackend.GetFile(new string[] { ".cf" }, FileOpenerStyle.Open, new Action<string>((result) => {
- parser = CommandParser.Load(Objects.ShiftFS.Utils.ReadAllText(result));
- foreach(CommandFormat part in parser.parts) {
- addPart(part.Draw());
- }
- }));
- }
-
- private void btnApply_Click(object sender, EventArgs e) {
- CurrentCommandParser.parser = parser;
- }
- }
-}
diff --git a/ShiftOS.WinForms/Applications/Pong.Designer.cs b/ShiftOS.WinForms/Applications/Pong.Designer.cs
deleted file mode 100644
index faaf0f5..0000000
--- a/ShiftOS.WinForms/Applications/Pong.Designer.cs
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using ShiftOS.WinForms.Controls;
-
-namespace ShiftOS.WinForms.Applications
-{
- partial class Pong
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.gameTimer = new System.Windows.Forms.Timer(this.components);
- this.counter = new System.Windows.Forms.Timer(this.components);
- this.tmrcountdown = new System.Windows.Forms.Timer(this.components);
- this.tmrstoryline = new System.Windows.Forms.Timer(this.components);
- this.pgcontents = new ShiftOS.WinForms.Controls.Canvas();
- this.pnlgamestats = new System.Windows.Forms.Panel();
- this.button1 = new System.Windows.Forms.Button();
- this.label12 = new System.Windows.Forms.Label();
- this.lblnextstats = new System.Windows.Forms.Label();
- this.Label7 = new System.Windows.Forms.Label();
- this.lblpreviousstats = new System.Windows.Forms.Label();
- this.Label4 = new System.Windows.Forms.Label();
- this.btnplayon = new System.Windows.Forms.Button();
- this.Label3 = new System.Windows.Forms.Label();
- this.btncashout = new System.Windows.Forms.Button();
- this.Label2 = new System.Windows.Forms.Label();
- this.lbllevelreached = new System.Windows.Forms.Label();
- this.pnlhighscore = new System.Windows.Forms.Panel();
- this.lbhighscore = new System.Windows.Forms.ListBox();
- this.label10 = new System.Windows.Forms.Label();
- this.pnlfinalstats = new System.Windows.Forms.Panel();
- this.btnplayagain = new System.Windows.Forms.Button();
- this.lblfinalcodepoints = new System.Windows.Forms.Label();
- this.Label11 = new System.Windows.Forms.Label();
- this.lblfinalcomputerreward = new System.Windows.Forms.Label();
- this.Label9 = new System.Windows.Forms.Label();
- this.lblfinallevelreward = new System.Windows.Forms.Label();
- this.lblfinallevelreached = new System.Windows.Forms.Label();
- this.lblfinalcodepointswithtext = new System.Windows.Forms.Label();
- this.pnllose = new System.Windows.Forms.Panel();
- this.lblmissedout = new System.Windows.Forms.Label();
- this.lblbutyougained = new System.Windows.Forms.Label();
- this.btnlosetryagain = new System.Windows.Forms.Button();
- this.Label5 = new System.Windows.Forms.Label();
- this.Label1 = new System.Windows.Forms.Label();
- this.pnlintro = new System.Windows.Forms.Panel();
- this.Label6 = new System.Windows.Forms.Label();
- this.btnstartgame = new System.Windows.Forms.Button();
- this.Label8 = new System.Windows.Forms.Label();
- this.lblbeatai = new System.Windows.Forms.Label();
- this.lblcountdown = new System.Windows.Forms.Label();
- this.ball = new ShiftOS.WinForms.Controls.Canvas();
- this.paddleHuman = new System.Windows.Forms.PictureBox();
- this.paddleComputer = new System.Windows.Forms.Panel();
- this.lbllevelandtime = new System.Windows.Forms.Label();
- this.lblstatscodepoints = new System.Windows.Forms.Label();
- this.lblstatsY = new System.Windows.Forms.Label();
- this.lblstatsX = new System.Windows.Forms.Label();
- this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
- this.button2 = new System.Windows.Forms.Button();
- this.pgcontents.SuspendLayout();
- this.pnlgamestats.SuspendLayout();
- this.pnlhighscore.SuspendLayout();
- this.pnlfinalstats.SuspendLayout();
- this.pnllose.SuspendLayout();
- this.pnlintro.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).BeginInit();
- this.flowLayoutPanel1.SuspendLayout();
- this.SuspendLayout();
- //
- // gameTimer
- //
- this.gameTimer.Interval = 30;
- this.gameTimer.Tick += new System.EventHandler(this.gameTimer_Tick);
- //
- // counter
- //
- this.counter.Interval = 1000;
- this.counter.Tick += new System.EventHandler(this.counter_Tick);
- //
- // tmrcountdown
- //
- this.tmrcountdown.Interval = 1000;
- this.tmrcountdown.Tick += new System.EventHandler(this.countdown_Tick);
- //
- // tmrstoryline
- //
- this.tmrstoryline.Interval = 1000;
- this.tmrstoryline.Tick += new System.EventHandler(this.tmrstoryline_Tick);
- //
- // pgcontents
- //
- this.pgcontents.BackColor = System.Drawing.Color.White;
- this.pgcontents.Controls.Add(this.pnlhighscore);
- this.pgcontents.Controls.Add(this.pnlgamestats);
- this.pgcontents.Controls.Add(this.pnlfinalstats);
- this.pgcontents.Controls.Add(this.pnllose);
- this.pgcontents.Controls.Add(this.pnlintro);
- this.pgcontents.Controls.Add(this.lblbeatai);
- this.pgcontents.Controls.Add(this.lblcountdown);
- this.pgcontents.Controls.Add(this.ball);
- this.pgcontents.Controls.Add(this.paddleHuman);
- this.pgcontents.Controls.Add(this.paddleComputer);
- this.pgcontents.Controls.Add(this.lbllevelandtime);
- this.pgcontents.Controls.Add(this.lblstatscodepoints);
- this.pgcontents.Controls.Add(this.lblstatsY);
- this.pgcontents.Controls.Add(this.lblstatsX);
- this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pgcontents.Location = new System.Drawing.Point(0, 0);
- this.pgcontents.Name = "pgcontents";
- this.pgcontents.Size = new System.Drawing.Size(700, 400);
- this.pgcontents.TabIndex = 20;
- this.pgcontents.Paint += new System.Windows.Forms.PaintEventHandler(this.pgcontents_Paint);
- this.pgcontents.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove);
- //
- // pnlgamestats
- //
- this.pnlgamestats.Controls.Add(this.button1);
- this.pnlgamestats.Controls.Add(this.label12);
- this.pnlgamestats.Controls.Add(this.lblnextstats);
- this.pnlgamestats.Controls.Add(this.Label7);
- this.pnlgamestats.Controls.Add(this.lblpreviousstats);
- this.pnlgamestats.Controls.Add(this.Label4);
- this.pnlgamestats.Controls.Add(this.btnplayon);
- this.pnlgamestats.Controls.Add(this.Label3);
- this.pnlgamestats.Controls.Add(this.btncashout);
- this.pnlgamestats.Controls.Add(this.Label2);
- this.pnlgamestats.Controls.Add(this.lbllevelreached);
- this.pnlgamestats.Location = new System.Drawing.Point(56, 76);
- this.pnlgamestats.Name = "pnlgamestats";
- this.pnlgamestats.Size = new System.Drawing.Size(466, 284);
- this.pnlgamestats.TabIndex = 6;
- this.pnlgamestats.Visible = false;
- //
- // button1
- //
- this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.button1.Location = new System.Drawing.Point(32, 223);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(191, 35);
- this.button1.TabIndex = 10;
- this.button1.Text = "{PONG_VIEW_HIGHSCORES}";
- this.button1.UseVisualStyleBackColor = true;
- this.button1.Click += new System.EventHandler(this.btnhighscore_Click);
- //
- // label12
- //
- this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label12.Location = new System.Drawing.Point(8, 187);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(245, 33);
- this.label12.TabIndex = 9;
- this.label12.Text = "{PONG_HIGHSCORE_EXP}";
- this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblnextstats
- //
- this.lblnextstats.AutoSize = true;
- this.lblnextstats.Location = new System.Drawing.Point(278, 136);
- this.lblnextstats.Name = "lblnextstats";
- this.lblnextstats.Size = new System.Drawing.Size(0, 13);
- this.lblnextstats.TabIndex = 8;
- //
- // Label7
- //
- this.Label7.AutoSize = true;
- this.Label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label7.Location = new System.Drawing.Point(278, 119);
- this.Label7.Name = "Label7";
- this.Label7.Size = new System.Drawing.Size(124, 16);
- this.Label7.TabIndex = 7;
- this.Label7.Text = "Next Level Stats:";
- //
- // lblpreviousstats
- //
- this.lblpreviousstats.AutoSize = true;
- this.lblpreviousstats.Location = new System.Drawing.Point(278, 54);
- this.lblpreviousstats.Name = "lblpreviousstats";
- this.lblpreviousstats.Size = new System.Drawing.Size(0, 13);
- this.lblpreviousstats.TabIndex = 6;
- //
- // Label4
- //
- this.Label4.AutoSize = true;
- this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label4.Location = new System.Drawing.Point(278, 37);
- this.Label4.Name = "Label4";
- this.Label4.Size = new System.Drawing.Size(154, 16);
- this.Label4.TabIndex = 5;
- this.Label4.Text = "Previous Level Stats:";
- //
- // btnplayon
- //
- this.btnplayon.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnplayon.Location = new System.Drawing.Point(32, 147);
- this.btnplayon.Name = "btnplayon";
- this.btnplayon.Size = new System.Drawing.Size(191, 35);
- this.btnplayon.TabIndex = 4;
- this.btnplayon.Text = "Play on for 3 codepoints!";
- this.btnplayon.UseVisualStyleBackColor = true;
- this.btnplayon.Click += new System.EventHandler(this.btnplayon_Click);
- //
- // Label3
- //
- this.Label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label3.Location = new System.Drawing.Point(8, 111);
- this.Label3.Name = "Label3";
- this.Label3.Size = new System.Drawing.Size(245, 33);
- this.Label3.TabIndex = 3;
- this.Label3.Text = "{PONG_PLAYON_DESC}";
- this.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // btncashout
- //
- this.btncashout.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btncashout.Location = new System.Drawing.Point(32, 73);
- this.btncashout.Name = "btncashout";
- this.btncashout.Size = new System.Drawing.Size(191, 35);
- this.btncashout.TabIndex = 2;
- this.btncashout.Text = "Cash out with 1 codepoint!";
- this.btncashout.UseVisualStyleBackColor = true;
- this.btncashout.Click += new System.EventHandler(this.btncashout_Click);
- //
- // Label2
- //
- this.Label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label2.Location = new System.Drawing.Point(8, 37);
- this.Label2.Name = "Label2";
- this.Label2.Size = new System.Drawing.Size(245, 33);
- this.Label2.TabIndex = 1;
- this.Label2.Text = "{PONG_CASHOUT_DESC}";
- this.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lbllevelreached
- //
- this.lbllevelreached.AutoSize = true;
- this.lbllevelreached.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lbllevelreached.Location = new System.Drawing.Point(149, 6);
- this.lbllevelreached.Name = "lbllevelreached";
- this.lbllevelreached.Size = new System.Drawing.Size(185, 20);
- this.lbllevelreached.TabIndex = 0;
- this.lbllevelreached.Text = "You Reached Level 2!";
- //
- // pnlhighscore
- //
- this.pnlhighscore.Controls.Add(this.lbhighscore);
- this.pnlhighscore.Controls.Add(this.flowLayoutPanel1);
- this.pnlhighscore.Controls.Add(this.label10);
- this.pnlhighscore.Location = new System.Drawing.Point(67, 29);
- this.pnlhighscore.Name = "pnlhighscore";
- this.pnlhighscore.Size = new System.Drawing.Size(539, 311);
- this.pnlhighscore.TabIndex = 14;
- this.pnlhighscore.Visible = false;
- //
- // lbhighscore
- //
- this.lbhighscore.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lbhighscore.FormattingEnabled = true;
- this.lbhighscore.Location = new System.Drawing.Point(0, 36);
- this.lbhighscore.MultiColumn = true;
- this.lbhighscore.Name = "lbhighscore";
- this.lbhighscore.SelectionMode = System.Windows.Forms.SelectionMode.None;
- this.lbhighscore.Size = new System.Drawing.Size(539, 246);
- this.lbhighscore.TabIndex = 1;
- //
- // label10
- //
- this.label10.Dock = System.Windows.Forms.DockStyle.Top;
- this.label10.Location = new System.Drawing.Point(0, 0);
- this.label10.Name = "label10";
- this.label10.Size = new System.Drawing.Size(539, 36);
- this.label10.TabIndex = 0;
- this.label10.Text = "{HIGH_SCORES}";
- this.label10.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // pnlfinalstats
- //
- this.pnlfinalstats.Controls.Add(this.btnplayagain);
- this.pnlfinalstats.Controls.Add(this.lblfinalcodepoints);
- this.pnlfinalstats.Controls.Add(this.Label11);
- this.pnlfinalstats.Controls.Add(this.lblfinalcomputerreward);
- this.pnlfinalstats.Controls.Add(this.Label9);
- this.pnlfinalstats.Controls.Add(this.lblfinallevelreward);
- this.pnlfinalstats.Controls.Add(this.lblfinallevelreached);
- this.pnlfinalstats.Controls.Add(this.lblfinalcodepointswithtext);
- this.pnlfinalstats.Location = new System.Drawing.Point(172, 74);
- this.pnlfinalstats.Name = "pnlfinalstats";
- this.pnlfinalstats.Size = new System.Drawing.Size(362, 226);
- this.pnlfinalstats.TabIndex = 9;
- this.pnlfinalstats.Visible = false;
- //
- // btnplayagain
- //
- this.btnplayagain.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnplayagain.Location = new System.Drawing.Point(5, 194);
- this.btnplayagain.Name = "btnplayagain";
- this.btnplayagain.Size = new System.Drawing.Size(352, 29);
- this.btnplayagain.TabIndex = 16;
- this.btnplayagain.Text = "{PLAY}";
- this.btnplayagain.UseVisualStyleBackColor = true;
- this.btnplayagain.Click += new System.EventHandler(this.btnplayagain_Click);
- //
- // lblfinalcodepoints
- //
- this.lblfinalcodepoints.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblfinalcodepoints.Location = new System.Drawing.Point(3, 124);
- this.lblfinalcodepoints.Name = "lblfinalcodepoints";
- this.lblfinalcodepoints.Size = new System.Drawing.Size(356, 73);
- this.lblfinalcodepoints.TabIndex = 15;
- this.lblfinalcodepoints.Text = "134 CP";
- this.lblfinalcodepoints.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // Label11
- //
- this.Label11.AutoSize = true;
- this.Label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label11.Location = new System.Drawing.Point(162, 82);
- this.Label11.Name = "Label11";
- this.Label11.Size = new System.Drawing.Size(33, 33);
- this.Label11.TabIndex = 14;
- this.Label11.Text = "+";
- this.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblfinalcomputerreward
- //
- this.lblfinalcomputerreward.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblfinalcomputerreward.Location = new System.Drawing.Point(193, 72);
- this.lblfinalcomputerreward.Name = "lblfinalcomputerreward";
- this.lblfinalcomputerreward.Size = new System.Drawing.Size(151, 52);
- this.lblfinalcomputerreward.TabIndex = 12;
- this.lblfinalcomputerreward.Text = "34";
- this.lblfinalcomputerreward.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // Label9
- //
- this.Label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label9.Location = new System.Drawing.Point(179, 31);
- this.Label9.Name = "Label9";
- this.Label9.Size = new System.Drawing.Size(180, 49);
- this.Label9.TabIndex = 11;
- this.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblfinallevelreward
- //
- this.lblfinallevelreward.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblfinallevelreward.Location = new System.Drawing.Point(12, 72);
- this.lblfinallevelreward.Name = "lblfinallevelreward";
- this.lblfinallevelreward.Size = new System.Drawing.Size(151, 52);
- this.lblfinallevelreward.TabIndex = 10;
- this.lblfinallevelreward.Text = "100";
- this.lblfinallevelreward.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblfinallevelreached
- //
- this.lblfinallevelreached.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblfinallevelreached.Location = new System.Drawing.Point(3, 31);
- this.lblfinallevelreached.Name = "lblfinallevelreached";
- this.lblfinallevelreached.Size = new System.Drawing.Size(170, 49);
- this.lblfinallevelreached.TabIndex = 9;
- this.lblfinallevelreached.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblfinalcodepointswithtext
- //
- this.lblfinalcodepointswithtext.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblfinalcodepointswithtext.Location = new System.Drawing.Point(3, 2);
- this.lblfinalcodepointswithtext.Name = "lblfinalcodepointswithtext";
- this.lblfinalcodepointswithtext.Size = new System.Drawing.Size(356, 26);
- this.lblfinalcodepointswithtext.TabIndex = 1;
- this.lblfinalcodepointswithtext.Text = "You cashed out with 134 codepoints!";
- this.lblfinalcodepointswithtext.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // pnllose
- //
- this.pnllose.Controls.Add(this.lblmissedout);
- this.pnllose.Controls.Add(this.lblbutyougained);
- this.pnllose.Controls.Add(this.btnlosetryagain);
- this.pnllose.Controls.Add(this.Label5);
- this.pnllose.Controls.Add(this.Label1);
- this.pnllose.Location = new System.Drawing.Point(209, 71);
- this.pnllose.Name = "pnllose";
- this.pnllose.Size = new System.Drawing.Size(266, 214);
- this.pnllose.TabIndex = 10;
- this.pnllose.Visible = false;
- //
- // lblmissedout
- //
- this.lblmissedout.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblmissedout.Location = new System.Drawing.Point(3, 175);
- this.lblmissedout.Name = "lblmissedout";
- this.lblmissedout.Size = new System.Drawing.Size(146, 35);
- this.lblmissedout.TabIndex = 3;
- this.lblmissedout.Text = "You Missed Out On: 500 Codepoints";
- this.lblmissedout.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblbutyougained
- //
- this.lblbutyougained.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblbutyougained.Location = new System.Drawing.Point(3, 125);
- this.lblbutyougained.Name = "lblbutyougained";
- this.lblbutyougained.Size = new System.Drawing.Size(146, 35);
- this.lblbutyougained.TabIndex = 3;
- this.lblbutyougained.Text = "But you gained 5 Codepoints";
- this.lblbutyougained.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // btnlosetryagain
- //
- this.btnlosetryagain.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnlosetryagain.Location = new System.Drawing.Point(155, 176);
- this.btnlosetryagain.Name = "btnlosetryagain";
- this.btnlosetryagain.Size = new System.Drawing.Size(106, 35);
- this.btnlosetryagain.TabIndex = 2;
- this.btnlosetryagain.Text = "Try Again";
- this.btnlosetryagain.UseVisualStyleBackColor = true;
- this.btnlosetryagain.Click += new System.EventHandler(this.btnlosetryagain_Click);
- //
- // Label5
- //
- this.Label5.Location = new System.Drawing.Point(7, 26);
- this.Label5.Name = "Label5";
- this.Label5.Size = new System.Drawing.Size(260, 163);
- this.Label5.TabIndex = 1;
- //
- // Label1
- //
- this.Label1.Dock = System.Windows.Forms.DockStyle.Top;
- this.Label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label1.Location = new System.Drawing.Point(0, 0);
- this.Label1.Name = "Label1";
- this.Label1.Size = new System.Drawing.Size(266, 16);
- this.Label1.TabIndex = 0;
- this.Label1.Text = "You lose!";
- this.Label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // pnlintro
- //
- this.pnlintro.Controls.Add(this.Label6);
- this.pnlintro.Controls.Add(this.btnstartgame);
- this.pnlintro.Controls.Add(this.Label8);
- this.pnlintro.Location = new System.Drawing.Point(52, 29);
- this.pnlintro.Name = "pnlintro";
- this.pnlintro.Size = new System.Drawing.Size(595, 303);
- this.pnlintro.TabIndex = 13;
- //
- // Label6
- //
- this.Label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label6.Location = new System.Drawing.Point(3, 39);
- this.Label6.Name = "Label6";
- this.Label6.Size = new System.Drawing.Size(589, 227);
- this.Label6.TabIndex = 15;
- this.Label6.Text = "{PONG_DESC}";
- this.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.Label6.Click += new System.EventHandler(this.Label6_Click);
- //
- // btnstartgame
- //
- this.btnstartgame.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnstartgame.Location = new System.Drawing.Point(186, 273);
- this.btnstartgame.Name = "btnstartgame";
- this.btnstartgame.Size = new System.Drawing.Size(242, 28);
- this.btnstartgame.TabIndex = 15;
- this.btnstartgame.Text = "{PLAY}";
- this.btnstartgame.UseVisualStyleBackColor = true;
- this.btnstartgame.Click += new System.EventHandler(this.btnstartgame_Click);
- //
- // Label8
- //
- this.Label8.AutoSize = true;
- this.Label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Label8.ForeColor = System.Drawing.Color.Black;
- this.Label8.Location = new System.Drawing.Point(250, 5);
- this.Label8.Name = "Label8";
- this.Label8.Size = new System.Drawing.Size(280, 31);
- this.Label8.TabIndex = 14;
- this.Label8.Text = "{PONG_WELCOME}";
- this.Label8.Click += new System.EventHandler(this.Label8_Click);
- //
- // lblbeatai
- //
- this.lblbeatai.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblbeatai.Location = new System.Drawing.Point(47, 41);
- this.lblbeatai.Name = "lblbeatai";
- this.lblbeatai.Size = new System.Drawing.Size(600, 30);
- this.lblbeatai.TabIndex = 8;
- this.lblbeatai.Text = "You got 2 codepoints for beating the Computer!";
- this.lblbeatai.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.lblbeatai.Visible = false;
- //
- // lblcountdown
- //
- this.lblcountdown.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblcountdown.Location = new System.Drawing.Point(182, 152);
- this.lblcountdown.Name = "lblcountdown";
- this.lblcountdown.Size = new System.Drawing.Size(315, 49);
- this.lblcountdown.TabIndex = 7;
- this.lblcountdown.Text = "3";
- this.lblcountdown.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.lblcountdown.Visible = false;
- //
- // ball
- //
- this.ball.BackColor = System.Drawing.Color.Black;
- this.ball.Location = new System.Drawing.Point(300, 152);
- this.ball.Name = "ball";
- this.ball.Size = new System.Drawing.Size(20, 20);
- this.ball.TabIndex = 2;
- this.ball.MouseEnter += new System.EventHandler(this.ball_MouseEnter);
- this.ball.MouseLeave += new System.EventHandler(this.ball_MouseLeave);
- //
- // paddleHuman
- //
- this.paddleHuman.BackColor = System.Drawing.Color.Black;
- this.paddleHuman.Location = new System.Drawing.Point(10, 134);
- this.paddleComputer.MaximumSize = new System.Drawing.Size(20, 150);
- this.paddleHuman.Name = "paddleHuman";
- this.paddleHuman.Size = new System.Drawing.Size(20, 100);
- this.paddleHuman.TabIndex = 3;
- this.paddleHuman.TabStop = false;
- //
- // paddleComputer
- //
- this.paddleComputer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.paddleComputer.BackColor = System.Drawing.Color.Black;
- this.paddleComputer.Location = new System.Drawing.Point(666, 134);
- this.paddleComputer.MaximumSize = new System.Drawing.Size(20, 150);
- this.paddleComputer.Name = "paddleComputer";
- this.paddleComputer.Size = new System.Drawing.Size(20, 100);
- this.paddleComputer.TabIndex = 1;
- //
- // lbllevelandtime
- //
- this.lbllevelandtime.Dock = System.Windows.Forms.DockStyle.Top;
- this.lbllevelandtime.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lbllevelandtime.Location = new System.Drawing.Point(0, 0);
- this.lbllevelandtime.Name = "lbllevelandtime";
- this.lbllevelandtime.Size = new System.Drawing.Size(700, 22);
- this.lbllevelandtime.TabIndex = 4;
- this.lbllevelandtime.Text = "Level: 1 - 58 Seconds Left";
- this.lbllevelandtime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblstatscodepoints
- //
- this.lblstatscodepoints.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.lblstatscodepoints.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblstatscodepoints.Location = new System.Drawing.Point(239, 356);
- this.lblstatscodepoints.Name = "lblstatscodepoints";
- this.lblstatscodepoints.Size = new System.Drawing.Size(219, 35);
- this.lblstatscodepoints.TabIndex = 12;
- this.lblstatscodepoints.Text = "Codepoints: ";
- this.lblstatscodepoints.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblstatsY
- //
- this.lblstatsY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.lblstatsY.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblstatsY.Location = new System.Drawing.Point(542, 356);
- this.lblstatsY.Name = "lblstatsY";
- this.lblstatsY.Size = new System.Drawing.Size(144, 35);
- this.lblstatsY.TabIndex = 11;
- this.lblstatsY.Text = "Yspeed:";
- this.lblstatsY.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblstatsX
- //
- this.lblstatsX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.lblstatsX.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblstatsX.Location = new System.Drawing.Point(3, 356);
- this.lblstatsX.Name = "lblstatsX";
- this.lblstatsX.Size = new System.Drawing.Size(144, 35);
- this.lblstatsX.TabIndex = 5;
- this.lblstatsX.Text = "Xspeed: ";
- this.lblstatsX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // flowLayoutPanel1
- //
- this.flowLayoutPanel1.AutoSize = true;
- this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.flowLayoutPanel1.Controls.Add(this.button2);
- this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft;
- this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 282);
- this.flowLayoutPanel1.Name = "flowLayoutPanel1";
- this.flowLayoutPanel1.Size = new System.Drawing.Size(539, 29);
- this.flowLayoutPanel1.TabIndex = 2;
- //
- // button2
- //
- this.button2.AutoSize = true;
- this.button2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.button2.Location = new System.Drawing.Point(476, 3);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(60, 23);
- this.button2.TabIndex = 0;
- this.button2.Text = "{CLOSE}";
- this.button2.UseVisualStyleBackColor = true;
- this.button2.Click += new System.EventHandler(this.button2_Click);
- //
- // Pong
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.White;
- this.Controls.Add(this.pgcontents);
- this.DoubleBuffered = true;
- this.Name = "Pong";
- this.Text = "{PONG_NAME}";
- this.Size = new System.Drawing.Size(820, 500);
- this.Load += new System.EventHandler(this.Pong_Load);
- this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove);
- this.pgcontents.ResumeLayout(false);
- this.pnlgamestats.ResumeLayout(false);
- this.pnlgamestats.PerformLayout();
- this.pnlhighscore.ResumeLayout(false);
- this.pnlhighscore.PerformLayout();
- this.pnlfinalstats.ResumeLayout(false);
- this.pnlfinalstats.PerformLayout();
- this.pnllose.ResumeLayout(false);
- this.pnlintro.ResumeLayout(false);
- this.pnlintro.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).EndInit();
- this.flowLayoutPanel1.ResumeLayout(false);
- this.flowLayoutPanel1.PerformLayout();
- this.ResumeLayout(false);
-
- }
- internal System.Windows.Forms.Panel paddleComputer;
- internal System.Windows.Forms.Timer gameTimer;
- internal System.Windows.Forms.PictureBox paddleHuman;
- internal System.Windows.Forms.Label lbllevelandtime;
- internal System.Windows.Forms.Label lblstatsX;
- internal System.Windows.Forms.Timer counter;
- internal System.Windows.Forms.Panel pnlgamestats;
- internal System.Windows.Forms.Label lblnextstats;
- internal System.Windows.Forms.Label Label7;
- internal System.Windows.Forms.Label lblpreviousstats;
- internal System.Windows.Forms.Label Label4;
- internal System.Windows.Forms.Button btnplayon;
- internal System.Windows.Forms.Label Label3;
- internal System.Windows.Forms.Button btncashout;
- internal System.Windows.Forms.Label Label2;
- internal System.Windows.Forms.Label lbllevelreached;
- internal System.Windows.Forms.Label lblcountdown;
- internal System.Windows.Forms.Timer tmrcountdown;
- internal System.Windows.Forms.Label lblbeatai;
- internal System.Windows.Forms.Panel pnlfinalstats;
- internal System.Windows.Forms.Button btnplayagain;
- internal System.Windows.Forms.Label lblfinalcodepoints;
- internal System.Windows.Forms.Label Label11;
- internal System.Windows.Forms.Label lblfinalcomputerreward;
- internal System.Windows.Forms.Label Label9;
- internal System.Windows.Forms.Label lblfinallevelreward;
- internal System.Windows.Forms.Label lblfinallevelreached;
- internal System.Windows.Forms.Label lblfinalcodepointswithtext;
- internal System.Windows.Forms.Panel pnllose;
- internal System.Windows.Forms.Label lblmissedout;
- internal System.Windows.Forms.Label lblbutyougained;
- internal System.Windows.Forms.Button btnlosetryagain;
- internal System.Windows.Forms.Label Label5;
- internal System.Windows.Forms.Label Label1;
- internal System.Windows.Forms.Label lblstatscodepoints;
- internal System.Windows.Forms.Label lblstatsY;
- internal System.Windows.Forms.Panel pnlintro;
- internal System.Windows.Forms.Label Label6;
- internal System.Windows.Forms.Button btnstartgame;
- internal System.Windows.Forms.Label Label8;
- internal System.Windows.Forms.Timer tmrstoryline;
- private System.Windows.Forms.Panel pnlhighscore;
- private System.Windows.Forms.ListBox lbhighscore;
- private System.Windows.Forms.Label label10;
- internal Canvas pgcontents;
- internal Canvas ball;
- internal System.Windows.Forms.Button button1;
- internal System.Windows.Forms.Label label12;
- private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
- private System.Windows.Forms.Button button2;
- }
-}
diff --git a/ShiftOS.WinForms/Applications/Pong.cs b/ShiftOS.WinForms/Applications/Pong.cs
deleted file mode 100644
index 157ce8c..0000000
--- a/ShiftOS.WinForms/Applications/Pong.cs
+++ /dev/null
@@ -1,675 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using Newtonsoft.Json;
-using ShiftOS.Engine;
-using ShiftOS.Objects;
-
-namespace ShiftOS.WinForms.Applications
-{
- [MultiplayerOnly]
- [Launcher("Pong", true, "al_pong", "Games")]
- [WinOpen("pong")]
- [DefaultIcon("iconPong")]
- public partial class Pong : UserControl, IShiftOSWindow
- {
- //I can assure you guaranteed that there is an acorn somewhere, in this place, and the sailors are looking for it
- int xVel = 7;
- int yVel = 8;
- int computerspeed = 8;
- int level = 1;
- int secondsleft = 60;
- int casualposition;
- double xveldec = 3.0;
- double yveldec = 3.0;
- double incrementx = 0.4;
- double incrementy = 0.2;
- int levelxspeed = 3;
- int levelyspeed = 3;
- int beatairewardtotal;
- int beataireward = 1;
- int[] levelrewards = new int[50];
- int totalreward;
- int countdown = 3;
-
- bool aiShouldIsbeEnabled = true;
-
- public Pong()
- {
- InitializeComponent();
- }
-
- private void Pong_Load(object sender, EventArgs e)
- {
- setuplevelrewards();
- }
-
-
-
- // Move the paddle according to the mouse position.
- private void pongMain_MouseMove(object sender, MouseEventArgs e)
- {
- var loc = this.PointToClient(MousePosition);
- paddleHuman.Location = new Point(paddleHuman.Location.X, (loc.Y) - (paddleHuman.Height / 2));
- }
-
-
- // ERROR: Handles clauses are not supported in C#
- private void gameTimer_Tick(object sender, EventArgs e)
- {
- if (this.Left < Screen.PrimaryScreen.Bounds.Width)
- {
- ball.BackColor = SkinEngine.LoadedSkin.ControlTextColor;
- paddleComputer.BackColor = SkinEngine.LoadedSkin.ControlTextColor;
- paddleHuman.BackColor = SkinEngine.LoadedSkin.ControlTextColor;
-
- //Check if paddle upgrade has been bought and change paddles accordingly
- if (ShiftoriumFrontend.UpgradeInstalled("pong_increased_paddle_size"))
- {
- paddleHuman.Height = 150;
- paddleComputer.Height = 150;
- }
-
- //Set the computer player to move according to the ball's position.
- if (aiShouldIsbeEnabled)
- if (ball.Location.X > 500 - xVel * 10 && xVel > 0)
- {
- if (ball.Location.Y > paddleComputer.Location.Y + 50)
- {
- paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed);
- }
- if (ball.Location.Y < paddleComputer.Location.Y + 50)
- {
- paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed);
- }
- casualposition = rand.Next(-150, 201);
- }
- else
- {
- //used to be me.location.y
- if (paddleComputer.Location.Y > this.Size.Height / 2 - paddleComputer.Height + casualposition)
- {
- paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed);
- }
- //used to be me.location.y
- if (paddleComputer.Location.Y < this.Size.Height / 2 - paddleComputer.Height + casualposition)
- {
- paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed);
- }
- }
-
- //Set Xvel and Yvel speeds from decimal
- if (xVel > 0)
- xVel = (int)Math.Round(xveldec);
- if (xVel < 0)
- xVel = (int)-Math.Round(xveldec);
- if (yVel > 0)
- yVel = (int)Math.Round(yveldec);
- if (yVel < 0)
- yVel = (int)-Math.Round(yveldec);
-
- // Move the game ball.
- ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel);
-
- // Check for top wall.
- if (ball.Location.Y < 0)
- {
- ball.Location = new Point(ball.Location.X, 0);
- yVel = -yVel;
- }
-
- // Check for bottom wall.
- if (ball.Location.Y > pgcontents.Height - ball.Height)
- {
- ball.Location = new Point(ball.Location.X, pgcontents.Height - ball.Size.Height);
- yVel = -yVel;
- }
-
- // Check for player paddle.
- if (ball.Bounds.IntersectsWith(paddleHuman.Bounds))
- {
- ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y);
- //randomly increase x or y speed of ball
- switch (rand.Next(1, 3))
- {
- case 1:
- xveldec = xveldec + incrementx;
- break;
- case 2:
- if (yveldec > 0)
- yveldec = yveldec + incrementy;
- if (yveldec < 0)
- yveldec = yveldec - incrementy;
- break;
- }
- xVel = -xVel;
- }
-
- // Check for computer paddle.
- if (ball.Bounds.IntersectsWith(paddleComputer.Bounds))
- {
- ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y);
- xveldec = xveldec + incrementx;
- xVel = -xVel;
- }
-
- // Check for left wall.
- if (ball.Location.X < -100)
- {
- ball.Location = new Point(this.Size.Width / 2 + 200, this.Size.Height / 2);
- paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y);
- if (xVel > 0)
- xVel = -xVel;
- pnllose.Show();
- gameTimer.Stop();
- counter.Stop();
- lblmissedout.Text = Localization.Parse("{YOU_MISSED_OUT_ON}:") + Environment.NewLine + lblstatscodepoints.Text.Replace(Localization.Parse("{CODEPOINTS}: "), "") + Localization.Parse(" {CODEPOINTS}");
- if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade_2"))
- {
- totalreward = levelrewards[level - 1] + beatairewardtotal;
- double onePercent = (totalreward / 100);
- lblbutyougained.Show();
- lblbutyougained.Text = Localization.Parse("{BUT_YOU_GAINED}:") + Environment.NewLine + onePercent.ToString("") + (Localization.Parse(" {CODEPOINTS}"));
- SaveSystem.TransferCodepointsFrom("pong", (totalreward / 100));
- }
- else
- {
- lblbutyougained.Hide();
- }
- }
-
- // Check for right wall.
- if (ball.Location.X > this.Width - ball.Size.Width - paddleComputer.Width + 100)
- {
- ball.Location = new Point(this.Size.Width / 2 + 200, this.Size.Height / 2);
- paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y);
- if (xVel > 0)
- xVel = -xVel;
- beatairewardtotal = beatairewardtotal + beataireward;
- lblbeatai.Show();
- lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD_SECONDARY}}: {beataireward}");
- tmrcountdown.Start();
- gameTimer.Stop();
- counter.Stop();
- }
-
- //lblstats.Text = "Xspeed: " & Math.Abs(xVel) & " Yspeed: " & Math.Abs(yVel) & " Human Location: " & paddleHuman.Location.ToString & " Computer Location: " & paddleComputer.Location.ToString & Environment.NewLine & " Ball Location: " & ball.Location.ToString & " Xdec: " & xveldec & " Ydec: " & yveldec & " Xinc: " & incrementx & " Yinc: " & incrementy
- lblstatsX.Text = Localization.Parse("{H_VEL}: ") + xveldec;
- lblstatsY.Text = Localization.Parse("{V_VEL}: ") + yveldec;
- lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ") + (levelrewards[level - 1] + beatairewardtotal).ToString();
- lbllevelandtime.Text = Localization.Parse("{LEVEL}: " + level + " - " + secondsleft + " {SECONDS_LEFT}");
-
- if (xVel > 20 || xVel < -20)
- {
- paddleHuman.Width = Math.Abs(xVel);
- paddleComputer.Width = Math.Abs(xVel);
- }
- else
- {
- paddleHuman.Width = 20;
- paddleComputer.Width = 20;
- }
-
- computerspeed = Math.Abs(yVel);
-
- // pgcontents.Refresh()
- // pgcontents.CreateGraphics.FillRectangle(Brushes.Black, ball.Location.X, ball.Location.Y, ball.Width, ball.Height)
-
- }
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void counter_Tick(object sender, EventArgs e)
- {
- if (this.Left < Screen.PrimaryScreen.Bounds.Width)
- {
- secondsleft = secondsleft - 1;
- if (secondsleft == 1)
- {
- secondsleft = 60;
- level = level + 1;
- generatenextlevel();
- pnlgamestats.Show();
- pnlgamestats.BringToFront();
- pnlgamestats.Location = new Point((pgcontents.Width / 2) - (pnlgamestats.Width / 2), (pgcontents.Height / 2) - (pnlgamestats.Height / 2));
-
- counter.Stop();
- gameTimer.Stop();
- SendHighscores();
- }
- lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ") + (levelrewards[level - 1] + beatairewardtotal).ToString();
- }
- }
-
- public void SendHighscores()
- {
- var highscore = new PongHighscore
- {
- UserName = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}",
- HighestLevel = level,
- HighestCodepoints = totalreward
- };
- ServerManager.SendMessage("pong_sethighscore", JsonConvert.SerializeObject(highscore));
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void btnplayon_Click(object sender, EventArgs e)
- {
- xveldec = levelxspeed;
- yveldec = levelyspeed;
-
- secondsleft = 60;
-
- tmrcountdown.Start();
- lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD}}: {beataireward}");
- pnlgamestats.Hide();
- lblbeatai.Show();
- ball.Location = new Point(paddleHuman.Location.X + paddleHuman.Width + 50, paddleHuman.Location.Y + paddleHuman.Height / 2);
- if (xVel < 0)
- xVel = Math.Abs(xVel);
- lbllevelandtime.Text = Localization.Parse("{LEVEL}: " + level + " - " + secondsleft + " {SECONDS_LEFT}");
- }
-
- //Increase the ball speed stats for the next level
- private void generatenextlevel()
- {
- lbllevelreached.Text = Localization.Parse("{YOU_REACHED_LEVEL} " + level + "!");
-
- lblpreviousstats.Text = Localization.Parse("{INITIAL_H_VEL}: " + levelxspeed + Environment.NewLine + "{INITIAL_V_VEL}: " + levelyspeed + Environment.NewLine + "{INC_H_VEL}: " + incrementx + Environment.NewLine + "{INC_V_VEL}: " + incrementy);
-
- switch (rand.Next(1, 3))
- {
- case 1:
- levelxspeed = levelxspeed + 1;
- break;
- case 2:
- levelxspeed = levelxspeed + 2;
- break;
- }
-
- switch (rand.Next(1, 3))
- {
- case 1:
- levelyspeed = levelyspeed + 1;
- break;
- case 2:
- levelyspeed = levelyspeed + 2;
- break;
- }
-
- switch (rand.Next(1, 6))
- {
- case 1:
- incrementx = incrementx + 0.1;
- break;
- case 2:
- incrementx = incrementx + 0.2;
- break;
- case 3:
- incrementy = incrementy + 0.1;
- break;
- case 4:
- incrementy = incrementy + 0.2;
- break;
- case 5:
- incrementy = incrementy + 0.3;
- break;
- }
-
- lblnextstats.Text = Localization.Parse("{INITIAL_H_VEL}: " + levelxspeed + Environment.NewLine + "{INITIAL_V_VEL}: " + levelyspeed + Environment.NewLine + "{INC_H_VEL}: " + incrementx + Environment.NewLine + "{INC_V_VEL}: " + incrementy);
-
- if (level < 15)
- {
- if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade"))
- {
- beataireward = level * 10;
- } else
- {
- beataireward = level * 5;
- }
- }
- else
- {
- if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade"))
- {
- double br = levelrewards[level - 1] / 10;
- beataireward = (int)Math.Round(br) * 10;
- } else
- {
- double br = levelrewards[level - 1] / 10;
- beataireward = (int)Math.Round(br) * 5;
- }
- }
-
- totalreward = levelrewards[level - 1] + beatairewardtotal;
-
- btncashout.Text = Localization.Parse("{CASH_OUT_WITH_CODEPOINTS}");
- btnplayon.Text = Localization.Parse("{PONG_PLAY_ON_FOR_MORE}");
- }
-
- private void setuplevelrewards()
- {
- if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade"))
- {
- levelrewards[0] = 0;
- levelrewards[1] = 40;
- levelrewards[2] = 120;
- levelrewards[3] = 280;
- levelrewards[4] = 580;
- levelrewards[5] = 800;
- levelrewards[6] = 1200;
- levelrewards[7] = 1800;
- levelrewards[8] = 2400;
- levelrewards[9] = 3200;
- levelrewards[10] = 4000;
- levelrewards[11] = 5000;
- levelrewards[12] = 6000;
- levelrewards[13] = 8000;
- levelrewards[14] = 10000;
- levelrewards[15] = 12000;
- levelrewards[16] = 16000;
- levelrewards[17] = 20000;
- levelrewards[18] = 26000;
- levelrewards[19] = 32000;
- levelrewards[20] = 40000;
- levelrewards[21] = 50000;
- levelrewards[22] = 64000;
- levelrewards[23] = 80000;
- levelrewards[24] = 100000;
- levelrewards[25] = 120000;
- levelrewards[26] = 150000;
- levelrewards[27] = 180000;
- levelrewards[28] = 220000;
- levelrewards[29] = 280000;
- levelrewards[30] = 360000;
- levelrewards[31] = 440000;
- levelrewards[32] = 540000;
- levelrewards[33] = 640000;
- levelrewards[34] = 800000;
- levelrewards[35] = 1000000;
- levelrewards[36] = 1280000;
- levelrewards[37] = 1600000;
- levelrewards[38] = 2000000;
- levelrewards[39] = 3000000;
- levelrewards[40] = 4000000;
- } else
- {
- levelrewards[0] = 0;
- levelrewards[1] = 20;
- levelrewards[2] = 60;
- levelrewards[3] = 140;
- levelrewards[4] = 290;
- levelrewards[5] = 400;
- levelrewards[6] = 600;
- levelrewards[7] = 900;
- levelrewards[8] = 1200;
- levelrewards[9] = 1600;
- levelrewards[10] = 2000;
- levelrewards[11] = 2500;
- levelrewards[12] = 3000;
- levelrewards[13] = 4000;
- levelrewards[14] = 5000;
- levelrewards[15] = 6000;
- levelrewards[16] = 8000;
- levelrewards[17] = 10000;
- levelrewards[18] = 13000;
- levelrewards[19] = 16000;
- levelrewards[20] = 20000;
- levelrewards[21] = 25000;
- levelrewards[22] = 32000;
- levelrewards[23] = 40000;
- levelrewards[24] = 50000;
- levelrewards[25] = 60000;
- levelrewards[26] = 75000;
- levelrewards[27] = 90000;
- levelrewards[28] = 110000;
- levelrewards[29] = 140000;
- levelrewards[30] = 180000;
- levelrewards[31] = 220000;
- levelrewards[32] = 270000;
- levelrewards[33] = 320000;
- levelrewards[34] = 400000;
- levelrewards[35] = 500000;
- levelrewards[36] = 640000;
- levelrewards[37] = 800000;
- levelrewards[38] = 1000000;
- levelrewards[39] = 1500000;
- levelrewards[40] = 2000000;
- }
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void countdown_Tick(object sender, EventArgs e)
- {
- if (this.Left < Screen.PrimaryScreen.Bounds.Width)
- {
- switch (countdown)
- {
- case 0:
- countdown = 3;
- lblcountdown.Hide();
- lblbeatai.Hide();
- gameTimer.Start();
- counter.Start();
- tmrcountdown.Stop();
- break;
- case 1:
- lblcountdown.Text = "1";
- countdown = countdown - 1;
- break;
- case 2:
- lblcountdown.Text = "2";
- countdown = countdown - 1;
- break;
- case 3:
- lblcountdown.Text = "3";
- countdown = countdown - 1;
- lblcountdown.Show();
- break;
- }
-
- }
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void btncashout_Click(object sender, EventArgs e)
- {
- pnlgamestats.Hide();
- pnlfinalstats.Show();
- lblfinalcodepointswithtext.Text = Localization.Parse("{YOU_WON} " + totalreward + " {CODEPOINTS}!");
- lblfinallevelreached.Text = Localization.Parse("{CODEPOINTS_FOR_BEATING_LEVEL}: ") + (level - 1).ToString();
- lblfinallevelreward.Text = levelrewards[level - 1].ToString();
- lblfinalcomputerreward.Text = beatairewardtotal.ToString();
- lblfinalcodepoints.Text = totalreward + Localization.Parse(" {CODEPOINTS_SHORT}");
- SaveSystem.TransferCodepointsFrom("pong", totalreward);
- }
-
- private void newgame()
- {
- pnlfinalstats.Hide();
- pnllose.Hide();
- pnlintro.Hide();
-
- level = 1;
- totalreward = 0;
- if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade"))
- {
- beataireward = 10;
- } else
- {
- beataireward = 5;
- }
- beatairewardtotal = 0;
- secondsleft = 60;
- lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ");
- //reset stats text
- lblstatsX.Text = Localization.Parse("{H_VEL}: ");
- lblstatsY.Text = Localization.Parse("{V_VEL}: ");
-
- levelxspeed = 3;
- levelyspeed = 3;
-
- incrementx = 0.4;
- incrementy = 0.2;
-
- xveldec = levelxspeed;
- yveldec = levelyspeed;
-
- tmrcountdown.Start();
- lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD}}: {beataireward}");
- pnlgamestats.Hide();
- lblbeatai.Show();
- ball.Location = new Point(paddleHuman.Location.X + paddleHuman.Width + 50, (paddleHuman.Location.Y + paddleHuman.Height) / 2);
- if (xVel < 0)
- xVel = Math.Abs(xVel);
- lbllevelandtime.Text = Localization.Parse("{{LEVEL}}: " + level + " - " + secondsleft + " {SECONDS_LEFT}");
- }
-
- public void btnhighscore_Click(object s, EventArgs a)
- {
- pnlhighscore.BringToFront();
- SetupHighScores();
- }
-
- public void SetupHighScores()
- {
- lbhighscore.Items.Clear();
- ServerManager.MessageReceived += (msg) =>
- {
- if(msg.Name == "pong_highscores")
- {
- var hs = JsonConvert.DeserializeObject<List<PongHighscore>>(msg.Contents);
-
- var orderedhs = hs.OrderByDescending(i => i.HighestLevel);
-
- foreach(var score in orderedhs)
- {
- this.Invoke(new Action(() =>
- {
- lbhighscore.Items.Add($"{score.UserName}\t\t\t{score.HighestLevel}\t\t{score.HighestCodepoints} CP");
- }));
- }
- }
- };
- ServerManager.SendMessage("pong_gethighscores", null);
- pnlhighscore.Show();
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void btnplayagain_Click(object sender, EventArgs e)
- {
- newgame();
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void btnlosetryagain_Click(object sender, EventArgs e)
- {
- newgame();
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void btnstartgame_Click(object sender, EventArgs e)
- {
- newgame();
- }
-
- Random rand = new Random();
- // ERROR: Handles clauses are not supported in C#
- private void tmrstoryline_Tick(object sender, EventArgs e)
- {
- // Random chance of showing getshiftnet storyline
- int i = rand.Next(0, 100);
-
- if (i >= 25 && i <= 50)
- {
- tmrstoryline.Stop();
- }
-
- }
-
- // ERROR: Handles clauses are not supported in C#
- private void me_closing(object sender, FormClosingEventArgs e)
- {
- tmrstoryline.Stop();
- }
-
- private void Label6_Click(object sender, EventArgs e)
- {
-
- }
-
- private void Label8_Click(object sender, EventArgs e)
- {
-
- }
-
- private void pgcontents_Paint(object sender, PaintEventArgs e) {
-
- }
-
- private void ball_MouseEnter(object sender, EventArgs e) {
- aiShouldIsbeEnabled = false;
- }
-
- private void ball_MouseLeave(object sender, EventArgs e) {
- aiShouldIsbeEnabled = true;
- }
-
- public void OnLoad()
- {
- pnlintro.BringToFront();
- pnlintro.Show();
- pnlhighscore.Hide();
- pnlgamestats.Hide();
- pnlfinalstats.Hide();
- }
-
- public void OnSkinLoad()
- {
- }
-
- public bool OnUnload()
- {
- return true;
- }
-
- public void OnUpgrade()
- {
- }
-
- private void button2_Click(object sender, EventArgs e)
- {
- pnlhighscore.Hide();
- }
- }
-}
diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs
deleted file mode 100644
index e0e76fa..0000000
--- a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using ShiftOS.WinForms.Controls;
-
-namespace ShiftOS.WinForms.Applications
-{
- partial class ShiftoriumFrontend
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- this.panel1 = new System.Windows.Forms.Panel();
- this.panel2 = new System.Windows.Forms.Panel();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.lbupgradedesc = new System.Windows.Forms.Label();
- this.pnlupgradeactions = new System.Windows.Forms.Panel();
- this.btnbuy = new System.Windows.Forms.Button();
- this.lbupgradetitle = new System.Windows.Forms.Label();
- this.pnllist = new System.Windows.Forms.Panel();
- this.label1 = new System.Windows.Forms.Label();
- this.pgupgradeprogress = new ShiftOS.WinForms.Controls.ShiftedProgressBar();
- this.lbupgrades = new System.Windows.Forms.ListBox();
- this.panel1.SuspendLayout();
- this.panel2.SuspendLayout();
- this.pnlupgradeactions.SuspendLayout();
- this.pnllist.SuspendLayout();
- this.SuspendLayout();
- //
- // panel1
- //
- this.panel1.Controls.Add(this.panel2);
- this.panel1.Controls.Add(this.pnllist);
- this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel1.Location = new System.Drawing.Point(0, 0);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(782, 427);
- this.panel1.TabIndex = 0;
- //
- // panel2
- //
- this.panel2.Controls.Add(this.lbupgradedesc);
- this.panel2.Controls.Add(this.pnlupgradeactions);
- this.panel2.Controls.Add(this.lbupgradetitle);
- this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel2.Location = new System.Drawing.Point(406, 0);
- this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(376, 427);
- this.panel2.TabIndex = 1;
- //
- // label2
- //
- if (ShiftoriumFrontend.UpgradeInstalled("shiftorium_gui_codepoints_display"))
- {
- this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(128, 357);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(135, 13);
- this.label2.TabIndex = 3;
- this.label2.Text = "You have: %cp Codepoints";
- this.label2.Click += new System.EventHandler(this.label2_Click);
- } else
- {
- this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(128, 357);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(1, 1);
- this.label2.TabIndex = 3;
- this.label2.Text = "";
- this.label2.Click += new System.EventHandler(this.label2_Click);
- }
- //
- // lbupgradedesc
- //
- this.lbupgradedesc.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lbupgradedesc.Location = new System.Drawing.Point(0, 42);
- this.lbupgradedesc.Name = "lbupgradedesc";
- this.lbupgradedesc.Size = new System.Drawing.Size(376, 348);
- this.lbupgradedesc.TabIndex = 2;
- this.lbupgradedesc.Text = "{SHIFTORIUM_EXP}";
- this.lbupgradedesc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.lbupgradedesc.UseCompatibleTextRendering = true;
- //
- // pnlupgradeactions
- //
- this.pnlupgradeactions.Controls.Add(this.btnbuy);
- this.pnlupgradeactions.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.pnlupgradeactions.Location = new System.Drawing.Point(0, 390);
- this.pnlupgradeactions.Name = "pnlupgradeactions";
- this.pnlupgradeactions.Size = new System.Drawing.Size(376, 37);
- this.pnlupgradeactions.TabIndex = 1;
- //
- // btnbuy
- //
- this.btnbuy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.btnbuy.AutoSize = true;
- this.btnbuy.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.btnbuy.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnbuy.Location = new System.Drawing.Point(327, 9);
- this.btnbuy.Name = "btnbuy";
- this.btnbuy.Size = new System.Drawing.Size(37, 25);
- this.btnbuy.TabIndex = 0;
- this.btnbuy.Text = "Buy";
- this.btnbuy.UseVisualStyleBackColor = true;
- this.btnbuy.Visible = false;
- this.btnbuy.Click += new System.EventHandler(this.btnbuy_Click);
- //
- // lbupgradetitle
- //
- this.lbupgradetitle.Dock = System.Windows.Forms.DockStyle.Top;
- this.lbupgradetitle.Location = new System.Drawing.Point(0, 0);
- this.lbupgradetitle.Name = "lbupgradetitle";
- this.lbupgradetitle.Size = new System.Drawing.Size(376, 42);
- this.lbupgradetitle.TabIndex = 0;
- this.lbupgradetitle.Text = "{WELCOME_TO_SHIFTORIUM}";
- this.lbupgradetitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.lbupgradetitle.UseCompatibleTextRendering = true;
- //
- // pnllist
- //
- this.pnllist.Controls.Add(this.label2);
- this.pnllist.Controls.Add(this.label1);
- this.pnllist.Controls.Add(this.pgupgradeprogress);
- this.pnllist.Controls.Add(this.lbupgrades);
- this.pnllist.Dock = System.Windows.Forms.DockStyle.Left;
- this.pnllist.Location = new System.Drawing.Point(0, 0);
- this.pnllist.Name = "pnllist";
- this.pnllist.Size = new System.Drawing.Size(406, 427);
- this.pnllist.TabIndex = 0;
- //
- // label1
- //
- this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(3, 399);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(137, 13);
- this.label1.TabIndex = 2;
- this.label1.Text = "{UPGRADE_PROGRESS}:";
- //
- // label3
- //
- this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(3, 399);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(137, 13);
- this.label3.TabIndex = 2;
- int upgradepercent = (pgupgradeprogress.Value / 100) * 100;
- this.label3.Text = upgradepercent.ToString();
- //
- // pgupgradeprogress
- //
- this.pgupgradeprogress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.pgupgradeprogress.BlockSize = 5;
- this.pgupgradeprogress.Location = new System.Drawing.Point(146, 390);
- this.pgupgradeprogress.Maximum = 100;
- this.pgupgradeprogress.Name = "pgupgradeprogress";
- this.pgupgradeprogress.Size = new System.Drawing.Size(254, 23);
- this.pgupgradeprogress.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
- this.pgupgradeprogress.TabIndex = 1;
- this.pgupgradeprogress.Value = 25;
- //
- // lbupgrades
- //
- this.lbupgrades.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.lbupgrades.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
- this.lbupgrades.FormattingEnabled = true;
- this.lbupgrades.Location = new System.Drawing.Point(3, 66);
- this.lbupgrades.Name = "lbupgrades";
- this.lbupgrades.Size = new System.Drawing.Size(397, 277);
- this.lbupgrades.TabIndex = 0;
- this.lbupgrades.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lbupgrades_DrawItem);
- //
- // ShiftoriumFrontend
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.Black;
- this.Controls.Add(this.panel1);
- this.ForeColor = System.Drawing.Color.LightGreen;
- this.Name = "ShiftoriumFrontend";
- this.Text = "{SHIFTORIUM_NAME}";
- this.Size = new System.Drawing.Size(782, 427);
- this.Load += new System.EventHandler(this.Shiftorium_Load);
- this.panel1.ResumeLayout(false);
- this.panel2.ResumeLayout(false);
- this.pnlupgradeactions.ResumeLayout(false);
- this.pnlupgradeactions.PerformLayout();
- this.pnllist.ResumeLayout(false);
- this.pnllist.PerformLayout();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.Panel panel2;
- private System.Windows.Forms.Panel pnllist;
- private System.Windows.Forms.ListBox lbupgrades;
- private System.Windows.Forms.Label lbupgradedesc;
- private System.Windows.Forms.Panel pnlupgradeactions;
- private System.Windows.Forms.Label lbupgradetitle;
- private System.Windows.Forms.Button btnbuy;
- private ShiftedProgressBar pgupgradeprogress;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label3;
- }
-} \ No newline at end of file
diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
deleted file mode 100644
index 0580b47..0000000
--- a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-using static ShiftOS.Engine.SkinEngine;
-using backend = ShiftOS.Engine.Shiftorium;
-namespace ShiftOS.WinForms.Applications
-{
- [Launcher("Shiftorium", true, "al_shiftorium", "Utilities")]
- [RequiresUpgrade("shiftorium_gui")]
- [MultiplayerOnly]
- [WinOpen("shiftorium")]
- [DefaultTitle("Shiftorium")]
- [DefaultIcon("iconShiftorium")]
- public partial class ShiftoriumFrontend : UserControl, IShiftOSWindow
- {
-
- public static System.Timers.Timer timer100;
-
-
- public ShiftoriumFrontend()
- {
-
- InitializeComponent();
- PopulateShiftorium();
- lbupgrades.SelectedIndexChanged += (o, a) =>
- {
- try
- {
- lbupgrades.Refresh();
- SelectUpgrade(lbupgrades.SelectedItem.ToString());
- }
- catch { }
- };
- this.pgupgradeprogress.Maximum = backend.GetDefaults().Count;
- this.pgupgradeprogress.Value = SaveSystem.CurrentSave.CountUpgrades();
- backend.Installed += () =>
- {
- this.pgupgradeprogress.Maximum = backend.GetDefaults().Count;
- this.pgupgradeprogress.Value = SaveSystem.CurrentSave.CountUpgrades();
- };
-
- }
-
- public void SelectUpgrade(string name)
- {
- btnbuy.Show();
- var upg = upgrades[name];
- lbupgradetitle.Text = Localization.Parse(upg.Name);
- lbupgradedesc.Text = Localization.Parse(upg.Description);
- }
-
- Dictionary<string, ShiftoriumUpgrade> upgrades = new Dictionary<string, ShiftoriumUpgrade>();
-
- public void PopulateShiftorium()
- {
- lbupgrades.Items.Clear();
- upgrades.Clear();
- Timer();
- label2.Text = "You have: " + SaveSystem.CurrentSave.Codepoints.ToString() + " Codepoints";
-
- foreach (var upg in backend.GetAvailable())
- {
- String name = Localization.Parse(upg.Name) + " - " + upg.Cost.ToString() + "CP";
- upgrades.Add(name, upg);
- lbupgrades.Items.Add(name);
- }
- }
-
- public static bool UpgradeInstalled(string upg)
- {
- return backend.UpgradeInstalled(upg);
- }
-
- public static bool UpgradeAttributesUnlocked(FieldInfo finf)
- {
- return backend.UpgradeAttributesUnlocked(finf);
- }
-
- public static bool UpgradeAttributesUnlocked(MethodInfo finf)
- {
- return backend.UpgradeAttributesUnlocked(finf);
- }
-
- public static bool UpgradeAttributesUnlocked(Type finf)
- {
- return backend.UpgradeAttributesUnlocked(finf);
- }
-
- public static bool UpgradeAttributesUnlocked(PropertyInfo finf)
- {
- return backend.UpgradeAttributesUnlocked(finf);
- }
-
- private void lbupgrades_DrawItem(object sender, DrawItemEventArgs e)
- {
- var foreground = new SolidBrush(LoadedSkin.ControlTextColor);
- var background = new SolidBrush(LoadedSkin.ControlColor);
-
- e.Graphics.FillRectangle(background, e.Bounds);
- try
- {
- if (lbupgrades.GetSelected(e.Index) == true)
- {
- e.Graphics.FillRectangle(foreground, e.Bounds);
- e.Graphics.DrawString(lbupgrades.Items[e.Index].ToString(), e.Font, background, e.Bounds.Location);
- }
- else
- {
- e.Graphics.FillRectangle(background, e.Bounds);
- e.Graphics.DrawString(lbupgrades.Items[e.Index].ToString(), e.Font, foreground, e.Bounds.Location);
- }
- }
- catch
- {
- }
- }
-
- private void btnbuy_Click(object sender, EventArgs e)
- {
- backend.Silent = true;
- backend.Buy(upgrades[lbupgrades.SelectedItem.ToString()].ID, upgrades[lbupgrades.SelectedItem.ToString()].Cost);
- backend.Silent = false;
- PopulateShiftorium();
- btnbuy.Hide();
- }
-
- private void Shiftorium_Load(object sender, EventArgs e) {
-
- }
-
- public void OnLoad()
- {
- }
-
- public void OnSkinLoad()
- {
-
- }
-
- public bool OnUnload()
- {
- return true;
- }
-
- public void OnUpgrade()
- {
-
- }
-
- private void label2_Click(object sender, EventArgs e)
- {
-
- }
-
- void Timer()
- {
- timer100 = new System.Timers.Timer();
- timer100.Interval = 2000;
- //timer100.Elapsed += ???;
- timer100.AutoReset = true;
- timer100.Enabled = true;
- }
- }
-}
diff --git a/ShiftOS.WinForms/Controls/TerminalBox.cs b/ShiftOS.WinForms/Controls/TerminalBox.cs
deleted file mode 100644
index 9e4c61c..0000000
--- a/ShiftOS.WinForms/Controls/TerminalBox.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-using ShiftOS.WinForms.Tools;
-
-namespace ShiftOS.WinForms.Controls
-{
- public class TerminalBox : RichTextBox, ITerminalWidget
- {
- public void SelectBottom()
- {
- try
- {
- this.Select(this.Text.Length, 0);
- this.ScrollToCaret();
- }
- catch { }
- }
-
- protected override void OnClick(EventArgs e)
- {
- base.OnClick(e);
- this.Select(this.TextLength, 0);
- }
-
- public void Write(string text)
- {
- this.HideSelection = true;
- this.Select(this.TextLength, 0);
- this.SelectionFont = ConstructFont();
- this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
- this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
- this.AppendText(Localization.Parse(text));
- this.HideSelection = false;
- }
-
- private Font ConstructFont()
- {
- FontStyle fs = FontStyle.Regular;
- if (ConsoleEx.Bold)
- fs = fs | FontStyle.Bold;
- if (ConsoleEx.Italic)
- fs = fs | FontStyle.Italic;
- if (ConsoleEx.Underline)
- fs = fs | FontStyle.Underline;
-
- return new Font(this.Font, fs);
- }
-
- public void WriteLine(string text)
- {
- this.HideSelection = true;
- this.Select(this.TextLength, 0);
- this.SelectionFont = ConstructFont();
- this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
- this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
- this.AppendText(Localization.Parse(text) + Environment.NewLine);
- this.HideSelection = false;
- }
-
- bool quickCopying = false;
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- //if right-clicking, then we initiate a quick-copy.
- if (e.Button == MouseButtons.Right)
- quickCopying = true;
-
- //Override the mouse event so that it's a left-click at all times.
- base.OnMouseDown(new MouseEventArgs(MouseButtons.Left, e.Clicks, e.X, e.Y, e.Delta));
- }
-
- protected override void OnMouseUp(MouseEventArgs mevent)
- {
- if(quickCopying == true)
- {
- if (!string.IsNullOrWhiteSpace(this.SelectedText))
- {
- this.Copy();
- }
- }
- base.OnMouseUp(mevent);
- }
- }
-}
diff --git a/ShiftOS.WinForms/Oobe.cs b/ShiftOS.WinForms/Oobe.cs
deleted file mode 100644
index 7370396..0000000
--- a/ShiftOS.WinForms/Oobe.cs
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using Newtonsoft.Json;
-using ShiftOS.Engine;
-using ShiftOS.Objects;
-using ShiftOS.Objects.ShiftFS;
-
-namespace ShiftOS.WinForms
-{
- public partial class Oobe : Form, IOobe, ITutorial
- {
- public Oobe()
- {
- InitializeComponent();
- this.FormBorderStyle = FormBorderStyle.None;
- this.WindowState = FormWindowState.Maximized;
- this.BackColor = Color.Black;
-
- }
-
-
- string rtext;
- string gtexttotype;
- int charcount;
- int slashcount;
- Label textgeninput;
- public bool upgraded = false;
-
- private bool typing = false;
-
- public void TextType(string texttotype)
- {
- while(typing == true)
- {
-
- }
-
- charcount = texttotype.Length;
- gtexttotype = texttotype;
- slashcount = 1;
- foreach (var c in gtexttotype)
- {
- typing = true;
- rtext += c;
-
- this.Invoke(new Action(() =>
- {
- textgeninput.Text = rtext + "|";
- }));
- slashcount++;
- if (slashcount == 5)
- slashcount = 1;
- Thread.Sleep(50);
- }
- rtext += Environment.NewLine;
- typing = false;
- }
-
- public Save MySave = null;
-
- public event EventHandler OnComplete;
-
- private int tutPrg = 0;
-
- public int TutorialProgress
- {
- get
- {
- return tutPrg;
- }
-
- set
- {
- tutPrg = value;
- }
- }
-
- public void StartShowing(Save save)
- {
- var t = new Thread(new ThreadStart(() =>
- {
- try
- {
- textgeninput = this.lblHijack;
- TextType("Your system is now being hijacked.");
- rtext = "";
- Thread.Sleep(1000);
- textgeninput = this.lblhackwords;
- this.Invoke(new Action(() =>
- {
- lblHijack.Hide();
- }));
- TextType("Hello, and welcome to ShiftOS.");
- Thread.Sleep(500);
- TextType("You have been cordially and involuntarily selected to participate in the development and testing of this operating system.");
- Thread.Sleep(500);
- TextType("My identity shall remain secret, but if you've been through this before, you'll know exactly who I am.");
- Thread.Sleep(500);
- TextType("But that doesn't matter.");
- Thread.Sleep(500);
- TextType("I will now begin to prepare your system for the installation of ShiftOS.");
- Thread.Sleep(1000);
- FakeSetupScreen fakeForm = null;
- this.Invoke(new Action(() =>
- {
- fakeForm = new FakeSetupScreen(this);
- fakeForm.Show();
- MySave = save;
- lblhackwords.GotFocus += (o, a) =>
- {
- try
- {
- fakeForm.Invoke(new Action(() =>
- {
- fakeForm.Focus();
- fakeForm.BringToFront();
- }));
- }
- catch { }
- };
- fakeForm.TextSent += (txt) =>
- {
- TextType(txt);
- };
- }));
- while (fakeForm?.Visible == true)
- {
- Thread.Sleep(10);
- }
- if (fakeForm.CreateNewSave == true)
- {
- TextType("That's all the information I need for now.");
- Thread.Sleep(2000);
- TextType("Beginning installation of ShiftOS on " + MySave.SystemName + ".");
- Thread.Sleep(500);
- TextType("Creating new user: " + MySave.Username);
- TextType("...with 0 Codepoints, 0 installed upgrades, no legion, and no user shops...");
- MySave.Codepoints = 0;
- MySave.CurrentLegions = new List<string>();
- MySave.MyShop = "";
- TextType("User created successfully.");
- Thread.Sleep(450);
- TextType("You may be wondering what all that meant... You see, in ShiftOS, your user account holds everything I need to know about you.");
- Thread.Sleep(640);
- TextType("It holds the amount of Codepoints you have - Codepoints are a special currency you can get by doing various tasks in ShiftOS.");
- Thread.Sleep(500);
- TextType("It also holds all the upgrades you've installed onto ShiftOS - features, applications, enhancements, patches, all that stuff.");
- Thread.Sleep(500);
- TextType("As for the legions and the shop thing, I'll reveal that to you when it becomes necessary.");
- Thread.Sleep(500);
- TextType("Your user account is stored on a server of mine called the multi-user domain. It holds every single user account, every script, every application, every thing within ShiftOS.");
- Thread.Sleep(600);
- TextType("Every time you boot ShiftOS, if you are connected to the Internet, you will immediately connect to the multi-user domain and ShiftOS will attempt to authenticate using the last ");
- TextType("successful username and password pair.");
- Thread.Sleep(500);
- TextType("When you are in the MUD, you are in the middle of a free-for-all. I don't want it to be this way, it just is. I've employed you to help me develop and test the MUD and ShiftOS, ");
- TextType("but you have a secondary task if you choose to accept it.");
- Thread.Sleep(500);
- TextType("There have been a few rebelious groups in the MUD - who have cracked ShiftOS's security barriers - and they're using these exploits to steal others' Codepoints, upgrades, ");
- TextType("and even spread damaging viruses.");
- Thread.Sleep(500);
- TextType("I want you to stop them.");
- Thread.Sleep(500);
- TextType("Whoever can stop these hackers will gain eternal control over the multi-user domain. They will be given the ability to do as they please, so long as it doesn't interfere with my experiments.");
- Thread.Sleep(500);
- TextType("I have been installing ShiftOS on your system in the background as I was talking with you. Before I can set you free, I need to give you a tutorial on how to use the system.");
- Thread.Sleep(500);
- TextType("I will reboot your system in Tutorial Mode now. Complete the tutorial, and you shall be on your way.");
-
- Thread.Sleep(3000);
- SaveSystem.CurrentSave = MySave;
- SaveSystem.CurrentSave.StoryPosition = 1;
- Utils.WriteAllText(Paths.GetPath("user.dat"), JsonConvert.SerializeObject(new
- {
- username = MySave.Username,
- password = MySave.Password
- }));
- Shiftorium.Silent = true;
- SaveSystem.SaveGame(); //Yknow, just incase it crashes.
- }
- else
- {
- TextType("Your login attempt was successful, " + SaveSystem.CurrentSave.Username + ".");
- Thread.Sleep(500);
- TextType($"According to my data on you, you have earned {SaveSystem.CurrentSave.Codepoints} Codepoints so far.");
- Thread.Sleep(500);
- TextType($"You have also acquired {SaveSystem.CurrentSave.CountUpgrades()} Shiftorium upgrades out of the {SaveSystem.CurrentSave.Upgrades.Count} available.");
- Thread.Sleep(500);
- TextType("I will now let you proceed to your system.");
- Thread.Sleep(1000);
- }
- this.Invoke(new Action(this.Close));
- }
- catch (Exception e)
- {
- TextType("I have experienced an error.");
- TextType(e.ToString());
- }
- }));
- this.Show();
- this.BringToFront();
- this.TopMost = true;
- t.IsBackground = true;
- t.Start();
- }
-
- public void Clear()
- {
- this.Invoke(new Action(() =>
- {
- rtext = "";
- textgeninput.Text = "";
- }));
- }
-
- public void ShowSaveTransfer(Save save)
- {
- this.Show();
- var fSetup = new FakeSetupScreen(this, 7);
-
- var t = new Thread(() =>
- {
- textgeninput = lblhackwords;
- Clear();
- TextType("Welcome back to ShiftOS.");
- Thread.Sleep(500);
- TextType("Since your last time inside ShiftOS, the operating system has changed. Your user account is no longer stored on your local system.");
- Thread.Sleep(500);
- this.Invoke(new Action(() =>
- {
- //UPS is drunky heaven over here... it's a liquor store, I think... - Drunk Michael
- fSetup.UserReregistered += (u, p, s) =>
- {
- save.Username = u;
- save.Password = p;
- save.SystemName = s;
- SaveSystem.CurrentSave = save;
- SaveSystem.CurrentSave.Upgrades = new Dictionary<string, bool>();
- Shiftorium.Init();
-
- SaveSystem.SaveGame();
- if(Utils.FileExists(Paths.SaveFileInner))
- Utils.Delete(Paths.SaveFileInner);
- this.Close();
- };
- fSetup.Show();
- }));
- });
- t.IsBackground = true;
- t.Start();
- }
-
- public void PromptForLogin()
- {
- this.Show();
- this.TopMost = true;
- lblHijack.Text = "";
- textgeninput = lblhackwords;
-
- var fsw = new FakeSetupScreen(this, 10);
- fsw.Show();
- fsw.TopMost = true;
- fsw.DoneLoggingIn += () =>
- {
- this.Close();
- };
- }
-
- public void StartTrailer()
- {
- while(AppearanceManager.OpenForms.Count > 0)
- {
- AppearanceManager.OpenForms[0].Close();
- }
-
- this.Show();
- this.TopMost = true;
- this.TransparencyKey = Color.Magenta;
- this.BackColor = this.TransparencyKey;
- textgeninput = lblHijack;
- textgeninput.BackColor = Color.Black;
- textgeninput.Font = new Font("Lucida Console", 13F, FontStyle.Bold);
- textgeninput.AutoSize = true;
- textgeninput.TextAlign = ContentAlignment.MiddleCenter;
- textgeninput.TextChanged += (o, a) =>
- {
- textgeninput.Location = new Point(
- (this.Width - textgeninput.Width) / 2,
- (this.Height - textgeninput.Height) / 2
- );
- };
- var t = new Thread(() =>
- {
- Clear();
- Thread.Sleep(5000);
- TextType("Michael VanOverbeek");
- TextType("presents...");
- Thread.Sleep(2000);
- Clear();
- Thread.Sleep(1000);
- TextType("A community-developed game");
- Thread.Sleep(3000);
- Clear();
- Thread.Sleep(1000);
- this.Invoke(new Action(() =>
- {
- textgeninput.Font = new Font("Lucida Console", 14F, FontStyle.Bold);
- this.BackColor = Color.Black;
- }));
- TextType("Welcome to ShiftOS.");
- Thread.Sleep(4000);
- Clear();
- textgeninput = lblhackwords;
- TextType("Hello.");
- Thread.Sleep(500);
- TextType("You have been cordially and involuntarily selected to participate in the development and testing of an experimental operating system called ShiftOS.");
- Thread.Sleep(500);
- TextType("I want ShiftOS to be the most advanced operating system in the world.");
- Thread.Sleep(500);
- TextType("In ShiftOS, you start out with nothing.");
- Thread.Sleep(500);
- TextType("And your goal is to upgrade the operating system from a barebones command line to a fully graphical operating system.");
- Thread.Sleep(500);
- TextType("Along the way, you'll meet many people - hackers, rebels, programmers, administrators and many more.");
- Thread.Sleep(500);
- TextType("You'll meet new friends and foes.");
- Thread.Sleep(500);
- TextType("Your goal: Take it over. Upgrade the operating system, and take over its multi-user domain.");
- Thread.Sleep(500);
- TextType("I won't reveal quite what you have to do, but if you can handle it, head over to http://getshiftos.ml/ and download the operating system now.");
- Thread.Sleep(5000);
- Clear();
- textgeninput = lblHijack;
- TextType("Think you can handle it?");
- });
- t.IsBackground = false;
- t.Start();
- }
-
- public void Start()
- {
- Shiftorium.Silent = false;
- foreach(var frm in AppearanceManager.OpenForms)
- {
- (frm as Form).Invoke(new Action(() => {
- frm.Close();
- }));
- }
-
- TerminalBackend.CommandProcessed += (cmd, args) =>
- {
- if(cmd == "sos.help")
- {
- if (TutorialProgress == 0)
- TutorialProgress = 1;
- }
- else if(cmd == "sos.status")
- {
- if (TutorialProgress == 1)
- TutorialProgress = 2;
-
- }
- else if(cmd == "shiftorium.list")
- {
- if (TutorialProgress == 2)
- {
- TutorialProgress = 3;
- SaveSystem.TransferCodepointsFrom("sys", 50);
- }
- }
- else if(cmd == "shiftorium.info" && args == "{\"upgrade\":\"mud_fundamentals\"}")
- {
- if (TutorialProgress == 3)
- TutorialProgress = 4;
- }
- else if(cmd == "win.open")
- {
- if (TutorialProgress == 4)
- TutorialProgress = 5;
- }
- };
- if(this.Visible == false)
- this.Show();
- var t = new Thread(() =>
- {
- textgeninput = lblHijack;
- Clear();
- textgeninput = lblhackwords;
- Clear();
-
- this.Invoke(new Action(() =>
- {
- textgeninput.Font = SkinEngine.LoadedSkin.TerminalFont;
- }));
- TextType("ShiftOS has been installed successfully.");
- Thread.Sleep(500);
- TextType("Before you can continue to the operating system, here's a little tutorial on how to use it.");
- Thread.Sleep(500);
- TextType("Starting a Terminal...");
- Applications.Terminal term = null;
- this.Invoke(new Action(() =>
- {
- term = new Applications.Terminal();
- this.Controls.Add(term);
- term.Location = new Point(
- (this.Width - term.Width) / 2,
- (this.Height - term.Height) / 2
- );
- term.Show();
- term.OnLoad();
- term.OnSkinLoad();
- term.OnUpgrade();
- }));
- TextType("This little text box is called a Terminal.");
- Thread.Sleep(500);
- TextType("Normally, it would appear in full-screen, but this window is hosting it as a control so you can see this text as well.");
- Thread.Sleep(500);
- TextType("In ShiftOS, the Terminal is your main control centre for the operating system. You can see system status, check Codepoints, open other programs, buy upgrades, and more.");
- Thread.Sleep(500);
- TextType("Go ahead and type 'sos.help' to see a list of commands.");
- while(TutorialProgress == 0)
- {
-
- }
- TextType("As you can see, sos.help gives you a list of all commands in the system.");
- Thread.Sleep(500);
- TextType("You can run any command, by typing in their Namespace, followed by a period (.), followed by their Command Name.");
- Thread.Sleep(500);
- TextType("Go ahead and run the 'status' command within the 'sos' namespace to see what the command does.");
- while(TutorialProgress == 1)
- {
-
- }
- TextType("Brilliant. The sos.status command will tell you how many Codepoints you have, as well as how many upgrades you have installed and how many are available.");
- Thread.Sleep(500);
- TextType("Codepoints, as you know, are a special currency within ShiftOS. They are used to buy things within the multi-user domain, such as upgrades, scripts, and applications.");
- Thread.Sleep(500);
- TextType("You can earn Codepoints by doing things in ShiftOS - such as completing jobs for other users, making things like skins, scripts, documents, etc, and playing games like Pong.");
- Thread.Sleep(500);
- TextType("At times, you'll be given Codepoints to help complete a task. You will receive Codepoints from 'sys' - the multi-user domain itself.");
- //SaveSystem.TransferCodepointsFrom("sys", 50);
- TextType("Right now, you don't have any upgrades. Upgrades can give ShiftOS additional features and capabilities - like new core applications, supported file types, and new Terminal commands.");
- Thread.Sleep(500);
- TextType("You can easily get upgrades using the Shiftorium - a repository of approved ShiftOS upgrades.");
- Thread.Sleep(500);
- TextType("To start using the Shiftorium, simply type 'shiftorium.list' to see available upgrades.");
- while(TutorialProgress == 2)
- {
-
- }
- Clear();
- TextType("Right now, you have enough Codepoints to buy the 'mud_fundamentals' upgrade. You can use shiftorium.info to see information about this upgrade.");
- Thread.Sleep(500);
- TextType("Some commands, like shiftorium.info, require you to pass information to them in the form of arguments.");
- Thread.Sleep(500);
- TextType("Argument pairs sit at the end of the command, and are enclosed in curly braces.");
- Thread.Sleep(500);
- TextType("Inside these curly braces, you can input an argument key, followed by a colon, followed by the value. Then, if you need multiple arguments, you can put a comma after the value, and then insert another argument pair.");
- Thread.Sleep(500);
- TextType("There are different value types - numeric values, which can be any positive or negative 32-bit integer");
- Thread.Sleep(500);
- TextType("Then there are boolean values which can be either 'true' or 'false'");
- Thread.Sleep(500);
- TextType("Then there are string values, which are enclosed in double-quotes.");
- Thread.Sleep(500);
- TextType(" If for some reason you need to use a double-quote inside a string, you must escape it using a single backslash followed by the quote, like this: key:\"My \\\"awesome\\\" value.\"");
- Thread.Sleep(500);
- TextType("If you want to escape a backslash inside a string, simply type two backslashes instead of one - for example key:\"Back\\\\slash.\"");
- Thread.Sleep(500);
- TextType("shiftorium.info requires an upgrade argument, which is a string type. Go ahead and give shiftorium.info's upgrade argument the 'mud_fundamentals' upgrade's ID.");
- while(TutorialProgress == 3)
- {
-
- }
- TextType("As you can see, mud_fundamentals is very useful. In fact, a lot of useful upgrades depend on it. You should buy it!");
- Thread.Sleep(500);
- TextType("shiftorium.info already gave you a command that will let you buy the upgrade - go ahead and run that command!");
- while (!Shiftorium.UpgradeInstalled("mud_fundamentals"))
- {
-
- }
- TextType("Hooray! You now have the MUD Fundamentals upgrade.");
- Thread.Sleep(500);
- TextType("You can also earn more Codepoints by playing Pong. To open Pong, you can use the win.open command.");
- Thread.Sleep(500);
- TextType("If you run win.open without arguments, you can see a list of applications that you can open.");
- Thread.Sleep(500);
- TextType("Just run win.open without arguments, and this tutorial will be completed!");
- while(TutorialProgress == 4)
- {
-
- }
- TextType("This concludes the ShiftOS beginners' guide brought to you by the multi-user domain. Stay safe in a connected world.");
- Thread.Sleep(2000);
- this.Invoke(new Action(() =>
- {
- OnComplete?.Invoke(this, EventArgs.Empty);
- this.Close();
- SaveSystem.CurrentSave.StoryPosition = 2;
- SaveSystem.SaveGame();
- AppearanceManager.SetupWindow(new Applications.Terminal());
- }));
- });
- t.IsBackground = true;
- t.Start();
- }
- }
-}
diff --git a/ShiftOS.WinForms/Tools/ControlManager.cs b/ShiftOS.WinForms/Tools/ControlManager.cs
deleted file mode 100644
index 52663d7..0000000
--- a/ShiftOS.WinForms/Tools/ControlManager.cs
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-using static ShiftOS.Engine.AppearanceManager;
-
-
-namespace ShiftOS.WinForms.Tools
-{
- public static class ControlManager
- {
- [DllImport("user32.dll")]
- public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
-
- private const int WM_SETREDRAW = 11;
-
- public static void SuspendDrawing(Control parent)
- {
- SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
- }
-
- public static void ResumeDrawing(Control parent)
- {
- SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
- parent.Refresh();
- }
-
- public static void Close(this UserControl ctrl)
- {
- for (int i = 0; i < AppearanceManager.OpenForms.Count; i++)
- {
- if (OpenForms[i].ParentWindow == ctrl)
- {
- (OpenForms[i] as Form).Close();
- return;
- }
- }
- }
-
-
- public static void SetupWindows()
- {
- if (SaveSystem.CurrentSave != null)
- {
- int screen_height_start = 0;
- if (Shiftorium.UpgradeInstalled("wm_free_placement"))
- {
- }
- else if (Shiftorium.UpgradeInstalled("wm_4_windows"))
- {
- int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2;
- int screen_height_half = (Screen.PrimaryScreen.Bounds.Height - screen_height_start) / 2;
-
- for (int i = 0; i < OpenForms.Count; i++)
- {
- var frm = OpenForms[i] as WindowBorder;
-
- switch (i)
- {
- case 0:
- frm.Location = new System.Drawing.Point(0, screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
-
- break;
- case 1:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
- break;
- case 2:
- frm.Location = new System.Drawing.Point(0, screen_height_half + screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 3) ? screen_width_half : screen_width_half * 2, screen_height_half);
- break;
- case 3:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_half + screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
- break;
- }
- }
-
- }
- else if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2;
- int screen_height = (Screen.PrimaryScreen.Bounds.Height) - screen_height_start;
-
-
-
- for (int i = 0; i < OpenForms.Count; i++)
- {
-
-
- var frm = OpenForms[i] as WindowBorder;
- switch (i)
- {
- case 0:
- frm.Location = new System.Drawing.Point(0, screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, screen_height);
- break;
- case 1:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, screen_height);
- break;
- }
- OpenForms[i] = frm;
- }
- }
- else
- {
- var frm = OpenForms[0] as WindowBorder;
- frm.Location = new Point(0, 0);
- frm.Size = Desktop.Size;
- OpenForms[0] = frm;
-
- }
- }
- else
- {
- var frm = OpenForms[0] as WindowBorder;
- frm.Location = new Point(0, 0);
- frm.Size = Desktop.Size;
- OpenForms[0] = frm;
-
- }
- }
-
- internal static Color ConvertColor(ConsoleColor cCol)
- {
- switch (cCol)
- {
- case ConsoleColor.Black:
- return Color.Black;
- case ConsoleColor.Gray:
- return Color.Gray;
- case ConsoleColor.DarkGray:
- return Color.DarkGray;
- case ConsoleColor.Blue:
- return Color.Blue;
- case ConsoleColor.Cyan:
- return Color.Cyan;
- case ConsoleColor.DarkBlue:
- return Color.DarkBlue;
- case ConsoleColor.DarkCyan:
- return Color.DarkCyan;
- case ConsoleColor.DarkGreen:
- return Color.DarkGreen;
- case ConsoleColor.DarkMagenta:
- return Color.DarkMagenta;
- case ConsoleColor.DarkRed:
- return Color.DarkRed;
- case ConsoleColor.DarkYellow:
- return Color.YellowGreen;
- case ConsoleColor.Yellow:
- return Color.Yellow;
- case ConsoleColor.Green:
- return Color.Green;
- case ConsoleColor.Magenta:
- return Color.Magenta;
- case ConsoleColor.Red:
- return Color.Red;
- case ConsoleColor.White:
- return Color.White;
- default:
- return Color.Black;
- }
-
- }
-
- public static void SetCursor(Control ctrl)
- {
-#if STUPID
- if (!(ctrl is WebBrowser))
- {
- var mouse = SkinEngine.GetImage("mouse");
- if (mouse == null)
- mouse = Properties.Resources.DefaultMouse;
-
- var mBmp = new Bitmap(mouse);
- mBmp.MakeTransparent(Color.FromArgb(1, 0, 1));
- var gfx = Graphics.FromImage(mBmp);
- var handle = mBmp.GetHicon();
-
- var cursor = new Cursor(handle);
- ctrl.Cursor = cursor;
- }
-#endif
- }
-
- public static void SetupControl(Control ctrl)
- {
- SuspendDrawing(ctrl);
- SetCursor(ctrl);
- if (!(ctrl is MenuStrip) && !(ctrl is ToolStrip) && !(ctrl is StatusStrip) && !(ctrl is ContextMenuStrip))
- {
- string tag = "";
-
- try
- {
- tag = ctrl.Tag.ToString();
- }
- catch { }
-
- if (!tag.Contains("keepbg"))
- {
- if (ctrl.BackColor != Control.DefaultBackColor)
- {
- ctrl.BackColor = SkinEngine.LoadedSkin.ControlColor;
- }
- }
-
- ctrl.ForeColor = SkinEngine.LoadedSkin.ControlTextColor;
-
- ctrl.Font = SkinEngine.LoadedSkin.MainFont;
-
- if (tag.Contains("header1"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.HeaderFont;
- }
-
- if (tag.Contains("header2"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.Header2Font;
- }
-
- if (tag.Contains("header3"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.Header3Font;
- }
-
- try
- {
- ctrl.Text = Localization.Parse(ctrl.Text);
- }
- catch
- {
-
- }
- ctrl.KeyDown += (o, a) =>
- {
- if (a.Control && a.KeyCode == Keys.T)
- {
- a.SuppressKeyPress = true;
-
-
- if (SaveSystem.CurrentSave != null)
- {
- if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- Engine.AppearanceManager.SetupWindow(new Applications.Terminal());
- }
- }
- }
-
- ShiftOS.Engine.Scripting.LuaInterpreter.RaiseEvent("on_key_down", a);
- //a.Handled = true;
- };
- if (ctrl is Button)
- {
- (ctrl as Button).FlatStyle = FlatStyle.Flat;
- }
- else if (ctrl is WindowBorder)
- {
- (ctrl as WindowBorder).Setup();
- }
- }
-
- MakeDoubleBuffered(ctrl);
- ResumeDrawing(ctrl);
- }
-
- public static void MakeDoubleBuffered(Control c)
- {
- if (System.Windows.Forms.SystemInformation.TerminalServerSession)
- return;
-
- System.Reflection.PropertyInfo aProp =
- typeof(System.Windows.Forms.Control).GetProperty(
- "DoubleBuffered",
- System.Reflection.BindingFlags.NonPublic |
- System.Reflection.BindingFlags.Instance);
-
- aProp.SetValue(c, true, null);
-
- }
-
- public static void SetupControls(Control frm)
- {
- SetupControl(frm);
-
- for (int i = 0; i < frm.Controls.Count; i++)
- {
- SetupControls(frm.Controls[i]);
- }
- }
-
- }
-}
diff --git a/ShiftOS.WinForms/WindowBorder.cs b/ShiftOS.WinForms/WindowBorder.cs
deleted file mode 100644
index 0308f8a..0000000
--- a/ShiftOS.WinForms/WindowBorder.cs
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-using static ShiftOS.Engine.SkinEngine;
-using System.Runtime.InteropServices;
-using ShiftOS.Engine;
-using ShiftOS.WinForms.Tools;
-using ShiftOS.WinForms.Applications;
-
-/// <summary>
-/// Window border.
-/// </summary>
-namespace ShiftOS.WinForms
-{
- /// <summary>
- /// Window border.
- /// </summary>
- public partial class WindowBorder : Form, IWindowBorder
- {
- /// <summary>
- /// Raises the closing event.
- /// </summary>
- /// <param name="e">E.</param>
- protected override void OnClosing(CancelEventArgs e)
- {
- if ((ParentWindow as IShiftOSWindow).OnUnload())
- {
- if (!SaveSystem.ShuttingDown)
- {
- if(Engine.AppearanceManager.OpenForms.Contains(this))
- Engine.AppearanceManager.OpenForms.Remove(this);
- Desktop.ResetPanelButtons();
- }
- }
- base.OnClosing(e);
- }
-
- /// <summary>
- /// The parent window.
- /// </summary>
- private UserControl _parentWindow = null;
-
- /// <summary>
- /// Gets or sets the parent window.
- /// </summary>
- /// <value>The parent window.</value>
- public IShiftOSWindow ParentWindow
- {
- get
- {
- return (IShiftOSWindow)_parentWindow;
- }
- set
- {
- _parentWindow = (UserControl)value;
- }
- }
-
- internal void SetTitle(string title)
- {
- lbtitletext.Text = title;
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ShiftOS.WinForms.WindowBorder"/> class.
- /// </summary>
- /// <param name="win">Window.</param>
- public WindowBorder(UserControl win)
- {
- InitializeComponent();
- this._parentWindow = win;
- Shiftorium.Installed += () =>
- {
- try
- {
- this.ParentForm.Invoke(new Action(() =>
- {
- Setup();
- }));
- }
- catch { }
- };
- SkinEngine.SkinLoaded += () =>
- {
- try
- {
- Setup();
- (ParentWindow as IShiftOSWindow).OnSkinLoad();
- ControlManager.SetupControls(this.pnlcontents);
- }
- catch
- {
-
- }
- };
-
- this.Width = LoadedSkin.LeftBorderWidth + _parentWindow.Width + LoadedSkin.RightBorderWidth;
- this.Height = LoadedSkin.TitlebarHeight + _parentWindow.Height + LoadedSkin.BottomBorderWidth;
-
- this.pnlcontents.Controls.Add(this._parentWindow);
- this._parentWindow.Dock = DockStyle.Fill;
- this._parentWindow.Show();
- ControlManager.SetupControls(this._parentWindow);
-
-
- Desktop.ShowWindow(this);
-
- }
-
- /// <summary>
- /// Universals the key down.
- /// </summary>
- /// <returns>The key down.</returns>
- /// <param name="o">O.</param>
- /// <param name="a">The alpha component.</param>
- public static void Universal_KeyDown(object o, KeyEventArgs a)
- {
- if (a.Control && a.KeyCode == Keys.T)
- {
- a.SuppressKeyPress = true;
-
-
- if (SaveSystem.CurrentSave != null)
- {
- if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- Engine.AppearanceManager.SetupWindow(new Applications.Terminal());
- }
- }
- }
-
- ShiftOS.Engine.Scripting.LuaInterpreter.RaiseEvent("on_key_down", a);
- }
-
- /// <summary>
- /// Windows the border load.
- /// </summary>
- /// <returns>The border load.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- public void WindowBorder_Load(object sender, EventArgs e)
- {
- this.DoubleBuffered = true;
-
- this._parentWindow.TextChanged += (o, a) =>
- {
- Setup();
- Desktop.ResetPanelButtons();
-
- };
-
- this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2;
- this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2;
-
- if (!this.IsDialog)
- {
- Engine.AppearanceManager.OpenForms.Add(this);
- }
-
- SaveSystem.GameReady += () =>
- {
- if (Shiftorium.UpgradeInstalled("wm_free_placement"))
- {
- AppearanceManager.Invoke(new Action(() =>
- {
- this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2;
- this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2;
-
- }));
- }
- AppearanceManager.Invoke(new Action(() =>
- {
- Setup();
- }));
- };
-
- ControlManager.SetupControls(this);
-
- Setup();
-
- var sWin = (IShiftOSWindow)ParentWindow;
-
- sWin.OnLoad();
- }
-
- /// <summary>
- /// Setup this instance.
- /// </summary>
- public void Setup()
- {
- this.lbtitletext.Text = NameChangerBackend.GetName(ParentWindow);
-
- if (SaveSystem.CurrentSave != null)
- {
- this.pnltitle.Visible = Shiftorium.UpgradeInstalled("wm_titlebar");
- this.pnlclose.Visible = Shiftorium.UpgradeInstalled("close_button");
- this.pnlminimize.Visible = (IsDialog == false) && Shiftorium.UpgradeInstalled("minimize_button");
- this.pnlmaximize.Visible = (IsDialog == false) && Shiftorium.UpgradeInstalled("maximize_button");
- SetupSkin();
- }
- else
- {
- this.pnltitle.Visible = false;
- this.pnlclose.Visible = false;
- this.pnlminimize.Visible = false;
- this.pnlmaximize.Visible = false;
-
- }
- }
-
- /// <summary>
- /// Setups the skin.
- /// </summary>
- /// <returns>The skin.</returns>
- public void SetupSkin()
- {
- this.DoubleBuffered = true;
- this.TransparencyKey = LoadedSkin.SystemKey;
- pnltitle.Height = LoadedSkin.TitlebarHeight;
- pnltitle.BackColor = LoadedSkin.TitleBackgroundColor;
- pnltitle.BackgroundImage = GetImage("titlebar");
- pnltitleleft.Visible = LoadedSkin.ShowTitleCorners;
- pnltitleright.Visible = LoadedSkin.ShowTitleCorners;
- pnltitleleft.BackColor = LoadedSkin.TitleLeftCornerBackground;
- pnltitleright.BackColor = LoadedSkin.TitleRightCornerBackground;
- pnltitleleft.Width = LoadedSkin.TitleLeftCornerWidth;
- pnltitleright.Width = LoadedSkin.TitleRightCornerWidth;
- pnltitleleft.BackgroundImage = GetImage("titleleft");
- pnltitleleft.BackgroundImageLayout = GetImageLayout("titleleft");
- pnltitleright.BackgroundImage = GetImage("titleright");
- pnltitleright.BackgroundImageLayout = GetImageLayout("titleright");
- pnltitle.BackgroundImageLayout = GetImageLayout("titlebar"); //RETARD ALERT. WHY WASN'T THIS THERE WHEN IMAGELAYOUTS WERE FIRST IMPLEMENTED?
-
- lbtitletext.BackColor = (pnltitle.BackgroundImage != null) ? Color.Transparent : LoadedSkin.TitleBackgroundColor;
- lbtitletext.ForeColor = LoadedSkin.TitleTextColor;
- lbtitletext.Font = LoadedSkin.TitleFont;
-
- pnlleft.BackColor = LoadedSkin.BorderLeftBackground;
- pnlleft.BackgroundImage = GetImage("leftborder");
- pnlleft.BackgroundImageLayout = GetImageLayout("leftborder");
- pnlleft.Width = LoadedSkin.LeftBorderWidth;
- pnlright.BackColor = LoadedSkin.BorderRightBackground;
- pnlright.BackgroundImage = GetImage("rightborder");
- pnlright.BackgroundImageLayout = GetImageLayout("rightborder");
- pnlright.Width = LoadedSkin.RightBorderWidth;
-
- pnlbottom.BackColor = LoadedSkin.BorderBottomBackground;
- pnlbottom.BackgroundImage = GetImage("bottomborder");
- pnlbottom.BackgroundImageLayout = GetImageLayout("bottomborder");
- pnlbottom.Height = LoadedSkin.BottomBorderWidth;
-
- pnlbottomr.BackColor = LoadedSkin.BorderBottomRightBackground;
- pnlbottomr.BackgroundImage = GetImage("bottomrborder");
- pnlbottomr.BackgroundImageLayout = GetImageLayout("bottomrborder");
- pnlbottoml.BackColor = LoadedSkin.BorderBottomLeftBackground;
- pnlbottoml.BackgroundImage = GetImage("bottomlborder");
- pnlbottoml.BackgroundImageLayout = GetImageLayout("bottomlborder");
-
- lbtitletext.ForeColor = LoadedSkin.TitleTextColor;
- lbtitletext.Font = LoadedSkin.TitleFont;
- pnlclose.BackColor = LoadedSkin.CloseButtonColor;
- pnlclose.BackgroundImage = GetImage("closebutton");
- pnlclose.BackgroundImageLayout = GetImageLayout("closebutton");
- pnlminimize.BackColor = LoadedSkin.MinimizeButtonColor;
- pnlminimize.BackgroundImage = GetImage("minimizebutton");
- pnlminimize.BackgroundImageLayout = GetImageLayout("minimizebutton");
- pnlmaximize.BackColor = LoadedSkin.MaximizeButtonColor;
- pnlmaximize.BackgroundImage = GetImage("maximizebutton");
- pnlmaximize.BackgroundImageLayout = GetImageLayout("maximizebutton");
-
- pnlclose.Size = LoadedSkin.CloseButtonSize;
- pnlminimize.Size = LoadedSkin.MinimizeButtonSize;
- pnlmaximize.Size = LoadedSkin.MaximizeButtonSize;
- pnlclose.Location = FromRight(LoadedSkin.CloseButtonFromSide);
- pnlminimize.Location = FromRight(LoadedSkin.MinimizeButtonFromSide);
- pnlmaximize.Location = FromRight(LoadedSkin.MaximizeButtonFromSide);
- pnlclose.Left -= pnlclose.Width;
- pnlmaximize.Left -= pnlmaximize.Width;
- pnlminimize.Left -= pnlminimize.Width;
-
- switch (LoadedSkin.TitleTextCentered)
- {
- case false:
- lbtitletext.Location = new Point(16 + LoadedSkin.TitlebarIconFromSide.X + LoadedSkin.TitleTextLeft.X,
- LoadedSkin.TitleTextLeft.Y);
- break;
- default:
- lbtitletext.Left = (pnltitle.Width - lbtitletext.Width) / 2;
- lbtitletext.Top = LoadedSkin.TitleTextLeft.Y;
- break;
- }
-
- if (Shiftorium.UpgradeInstalled("app_icons"))
- {
- pnlicon.Show();
- pnlicon.Size = new Size(16, 16);
- pnlicon.BackColor = Color.Transparent;
- pnlicon.BackgroundImage = GetIcon(this.ParentWindow.GetType().Name);
- pnlicon.BackgroundImageLayout = ImageLayout.Stretch;
- pnlicon.Location = LoadedSkin.TitlebarIconFromSide;
- }
- else
- {
- pnlicon.Hide();
- }
- }
-
- /// <summary>
- /// Froms the right.
- /// </summary>
- /// <returns>The right.</returns>
- /// <param name="input">Input.</param>
- public Point FromRight(Point input)
- {
- return new Point(pnltitle.Width - input.X, input.Y);
- }
-
- /// <summary>
- /// Lbtitletexts the click.
- /// </summary>
- /// <returns>The click.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void lbtitletext_Click(object sender, EventArgs e)
- {
-
- }
-
- /// <summary>
- /// Pnlcloses the click.
- /// </summary>
- /// <returns>The click.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void pnlclose_Click(object sender, EventArgs e)
- {
- this.Close();
- }
-
- /// <summary>
- /// Pnlmaximizes the click.
- /// </summary>
- /// <returns>The click.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void pnlmaximize_Click(object sender, EventArgs e)
- {
- if (maximized == false)
- Desktop.MaximizeWindow(this);
- else
- Desktop.RestoreWindow(this);
- maximized = !maximized;
- SetupSkin();
- }
-
- bool minimized = false;
- bool maximized = false;
-
- public bool IsMinimized
- {
- get
- {
- return minimized;
- }
- }
-
- public bool IsMaximized
- {
- get
- {
- return maximized;
- }
- }
-
-
- /// <summary>
- /// Pnlminimizes the click.
- /// </summary>
- /// <returns>The click.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void pnlminimize_Click(object sender, EventArgs e)
- {
- if (minimized == false)
- Desktop.MinimizeWindow(this);
- else
- Desktop.RestoreWindow(this);
- minimized = !minimized;
- }
-
-
- /// <summary>
- /// The W m NCLBUTTONDOW.
- /// </summary>
- public const int WM_NCLBUTTONDOWN = 0xA1;
- /// <summary>
- /// The H t CAPTIO.
- /// </summary>
- public const int HT_CAPTION = 0x2;
-
- /// <summary>
- /// The is dialog.
- /// </summary>
- public bool IsDialog = false;
-
-
- [DllImportAttribute("user32.dll")]
- /// <summary>
- /// Sends the message.
- /// </summary>
- /// <returns>The message.</returns>
- /// <param name="hWnd">H window.</param>
- /// <param name="Msg">Message.</param>
- /// <param name="wParam">W parameter.</param>
- /// <param name="lParam">L parameter.</param>
- public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
- [DllImportAttribute("user32.dll")]
- /// <summary>
- /// Releases the capture.
- /// </summary>
- /// <returns>The capture.</returns>
- public static extern bool ReleaseCapture();
-
- /// <summary>
- /// Pnltitles the mouse move.
- /// </summary>
- /// <returns>The mouse move.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void pnltitle_MouseMove(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Left && Shiftorium.UpgradeInstalled("draggable_windows"))
- {
- ReleaseCapture();
- SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
- }
- }
-
- /// <summary>
- /// Pnltitles the paint.
- /// </summary>
- /// <returns>The paint.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void pnltitle_Paint(object sender, PaintEventArgs e) {
-
- }
-
- /// <summary>
- /// Lbtitletexts the mouse move.
- /// </summary>
- /// <returns>The mouse move.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void lbtitletext_MouseMove(object sender, MouseEventArgs e) {
- pnltitle_MouseMove(sender, e);
- }
- }
-}
diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs
deleted file mode 100644
index d30adb4..0000000
--- a/ShiftOS.WinForms/WinformsDesktop.cs
+++ /dev/null
@@ -1,746 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-using static ShiftOS.Engine.SkinEngine;
-using ShiftOS.WinForms.Tools;
-using ShiftOS.WinForms.Applications;
-using Newtonsoft.Json;
-using ShiftOS.Engine.Scripting;
-using System.Threading;
-
-/// <summary>
-/// Winforms desktop.
-/// </summary>
-namespace ShiftOS.WinForms
-{
- /// <summary>
- /// Winforms desktop.
- /// </summary>
- public partial class WinformsDesktop : Form, IDesktop
- {
- private bool InScreensaver = false;
- private int millisecondsUntilScreensaver = 300000;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ShiftOS.WinForms.WinformsDesktop"/> class.
- /// </summary>
- public WinformsDesktop()
- {
- InitializeComponent();
- this.TopMost = false;
-
- NotificationDaemon.NotificationMade += (note) =>
- {
- //Soon this will pop a balloon note.
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = "Notifications (" + NotificationDaemon.GetUnreadCount().ToString() + ")";
- }));
- };
-
- NotificationDaemon.NotificationRead += () =>
- {
- //Soon this will pop a balloon note.
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = "Notifications (" + NotificationDaemon.GetUnreadCount().ToString() + ")";
- }));
- };
-
- this.LocationChanged += (o, a) =>
- {
- if (this.Left != 0)
- this.Left = 0;
- if (this.Top != 0)
- this.Top = 0;
- };
-
- this.SizeChanged += (o, a) =>
- {
- if (this.ClientRectangle != Screen.PrimaryScreen.Bounds)
- {
- this.WindowState = FormWindowState.Maximized;
- }
- };
-
- SaveSystem.GameReady += () =>
- {
- if (this.Visible == true)
- this.Invoke(new Action(() => SetupDesktop()));
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = "Notifications (" + NotificationDaemon.GetUnreadCount().ToString() + ")";
- }));
- };
- Shiftorium.Installed += () =>
- {
- if (this.Visible == true)
- this.Invoke(new Action(() => SetupDesktop()));
- };
- var time = new System.Windows.Forms.Timer();
- time.Interval = 100;
- this.KeyDown += (o, a) =>
- {
- if (a.Control && a.KeyCode == Keys.T)
- {
- Engine.AppearanceManager.SetupWindow(new Applications.Terminal());
- }
- /*if (a.Control && a.KeyCode == Keys.Tab)
- {
- // CtrlTabMenu
- CtrlTabMenu.Show();
- if (a.Shift) CtrlTabMenu.CycleBack();
- else CtrlTabMenu.CycleForwards();
- }*/ //nyi
-
- ShiftOS.Engine.Scripting.LuaInterpreter.RaiseEvent("on_key_down", a);
- };
- SkinEngine.SkinLoaded += () =>
- {
- SetupDesktop();
- };
- time.Tick += (o, a) =>
- {
- if (Shiftorium.IsInitiated == true)
- {
- if (SaveSystem.CurrentSave != null && TutorialManager.IsInTutorial == false)
- {
- lbtime.Text = Applications.Terminal.GetTime();
- lbtime.Left = desktoppanel.Width - lbtime.Width - LoadedSkin.DesktopPanelClockFromRight.X;
- lbtime.Top = LoadedSkin.DesktopPanelClockFromRight.Y;
- }
- }
-
- try
- {
- if (SaveSystem.CurrentSave != null)
- {
- if (SaveSystem.CurrentSave.LastMonthPaid != DateTime.Now.Month)
- {
- if (SaveSystem.CurrentSave.Codepoints >= DownloadManager.GetAllSubscriptions()[SaveSystem.CurrentSave.ShiftnetSubscription].CostPerMonth)
- {
- SaveSystem.CurrentSave.Codepoints -= DownloadManager.GetAllSubscriptions()[SaveSystem.CurrentSave.ShiftnetSubscription].CostPerMonth;
- SaveSystem.CurrentSave.LastMonthPaid = DateTime.Now.Month;
- }
- else
- {
- SaveSystem.CurrentSave.ShiftnetSubscription = 0;
- SaveSystem.CurrentSave.LastMonthPaid = DateTime.Now.Month;
- Infobox.Show("Shiftnet", "You do not have enough Codepoints to pay for your Shiftnet subscription this month. You have been downgraded to the free plan.");
- }
- }
- }
- }
- catch { }
-
-
- btnnotifications.Left = lbtime.Left - btnnotifications.Width - 2;
- btnnotifications.Top = (desktoppanel.Height - btnnotifications.Height) / 2;
- };
- time.Start();
-
- var ssThread = new Thread(() =>
- {
- while(this.Visible == true)
- {
- var mousePos = Cursor.Position;
- while(Cursor.Position == mousePos)
- {
- if(millisecondsUntilScreensaver <= 0)
- {
- ShowScreensaver();
- InScreensaver = true;
- }
- millisecondsUntilScreensaver--;
- Thread.Sleep(1);
- }
- millisecondsUntilScreensaver = 300000;
- InScreensaver = false;
- HideScreensaver();
- }
- });
- ssThread.IsBackground = true;
- ssThread.Start();
-
- this.DoubleBuffered = true;
- }
-
- public void HideScreensaver()
- {
- if (ResetDesktop == true)
- {
- this.Invoke(new Action(() =>
- {
- this.TopMost = false;
- pnlscreensaver.Hide();
- Cursor.Show();
- SetupDesktop();
- ResetDesktop = false;
-
- }));
- }
- }
-
- private bool ResetDesktop = false;
-
- private void ShowScreensaver()
- {
- if (Shiftorium.UpgradeInstalled("screensavers"))
- {
- this.Invoke(new Action(() =>
- {
- pnlscreensaver.Show();
- this.TopMost = true;
- pnlssicon.Show();
- pnlssicon.BackColor = Color.Green;
- pnlssicon.BackgroundImage = GetImage("screensaver");
- pnlssicon.BackgroundImageLayout = GetImageLayout("screensaver");
-
- if (pnlssicon.BackgroundImage != null)
- {
- pnlssicon.Size = pnlssicon.BackgroundImage.Size;
- }
-
- Cursor.Hide();
-
- var t = new Thread(() =>
- {
- var rnd = new Random();
- while (InScreensaver == true)
- {
- int x = rnd.Next(0, this.Width);
- int y = rnd.Next(0, this.Height);
-
- this.Invoke(new Action(() =>
- {
- pnlssicon.Location = new Point(x, y);
- }));
-
- Thread.Sleep(5000);
- }
- ResetDesktop = true;
- });
- t.IsBackground = true;
- t.Start();
- }));
- }
- }
-
-
- /// <summary>
- /// Populates the panel buttons.
- /// </summary>
- /// <returns>The panel buttons.</returns>
- public void PopulatePanelButtons()
- {
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- panelbuttonholder.Controls.Clear();
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("wm_panel_buttons"))
- {
- foreach (WindowBorder form in Engine.AppearanceManager.OpenForms)
- {
- if (form != null)
- {
- if (form.Visible == true)
- {
- EventHandler onClick = (o, a) =>
- {
- if (form == focused)
- {
- if (form.IsMinimized)
- {
- RestoreWindow(form);
- }
- else
- {
- MinimizeWindow(form);
- }
- }
- else
- {
- form.BringToFront();
- focused = form;
- }
- };
-
- var pnlbtn = new Panel();
- pnlbtn.Margin = new Padding(2, LoadedSkin.PanelButtonFromTop, 0, 0);
- pnlbtn.BackColor = LoadedSkin.PanelButtonColor;
- pnlbtn.BackgroundImage = GetImage("panelbutton");
- pnlbtn.BackgroundImageLayout = GetImageLayout("panelbutton");
-
- var pnlbtntext = new Label();
- pnlbtntext.Text = NameChangerBackend.GetName(form.ParentWindow);
- pnlbtntext.AutoSize = true;
- pnlbtntext.Location = LoadedSkin.PanelButtonFromLeft;
- pnlbtntext.ForeColor = LoadedSkin.PanelButtonTextColor;
- pnlbtntext.BackColor = Color.Transparent;
-
- pnlbtn.BackColor = LoadedSkin.PanelButtonColor;
- if (pnlbtn.BackgroundImage != null)
- {
- pnlbtntext.BackColor = Color.Transparent;
- }
- pnlbtn.Size = LoadedSkin.PanelButtonSize;
- pnlbtn.Tag = "keepbg";
- pnlbtntext.Tag = "keepbg";
- pnlbtn.Controls.Add(pnlbtntext);
- this.panelbuttonholder.Controls.Add(pnlbtn);
- pnlbtn.Show();
- pnlbtntext.Show();
-
- if (Shiftorium.UpgradeInstalled("useful_panel_buttons"))
- {
- pnlbtn.Click += onClick;
- pnlbtntext.Click += onClick;
- }
- pnlbtntext.Font = LoadedSkin.PanelButtonFont;
-
- }
- }
- }
- }
- }
- }
-
- LuaInterpreter.RaiseEvent("on_panelbutton_populate", this);
- }
-
- /// <summary>
- /// Setups the desktop.
- /// </summary>
- /// <returns>The desktop.</returns>
- public void SetupDesktop()
- {
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- ToolStripManager.Renderer = new ShiftOSMenuRenderer();
-
- this.DoubleBuffered = true;
- this.FormBorderStyle = FormBorderStyle.None;
- this.WindowState = FormWindowState.Maximized;
- desktoppanel.BackColor = Color.Green;
-
- //upgrades
-
- if (Shiftorium.IsInitiated == true)
- {
- desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop");
- lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget");
-
- btnnotifications.Visible = Shiftorium.UpgradeInstalled("panel_notifications");
-
- //skinning
- lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor;
-
- panelbuttonholder.Top = 0;
- panelbuttonholder.Left = LoadedSkin.PanelButtonHolderFromLeft;
- panelbuttonholder.Height = desktoppanel.Height;
- panelbuttonholder.BackColor = Color.Transparent;
- panelbuttonholder.Margin = new Padding(0, 0, 0, 0);
-
- sysmenuholder.Visible = Shiftorium.UpgradeInstalled("app_launcher");
-
- //The Color Picker can give us transparent colors - which Windows Forms fucking despises when dealing with form backgrounds.
- //To compensate, we must recreate the desktop color and make the alpha channel '255'.
- this.BackColor = Color.FromArgb(LoadedSkin.DesktopColor.R, LoadedSkin.DesktopColor.G, LoadedSkin.DesktopColor.B);
- //Not doing this will cause an ArgumentException.
-
- DitheringEngine.DitherImage(SkinEngine.GetImage("desktopbackground"), new Action<Image>((img) =>
- {
- this.BackgroundImage = img;
- }));
- this.BackgroundImageLayout = GetImageLayout("desktopbackground");
- desktoppanel.BackColor = LoadedSkin.DesktopPanelColor;
-
- var pnlimg = GetImage("desktoppanel");
- if (pnlimg != null)
- {
- var bmp = new Bitmap(pnlimg);
- bmp.MakeTransparent(Color.FromArgb(1, 0, 1));
- pnlimg = bmp;
- }
-
- desktoppanel.BackgroundImage = pnlimg;
- if (desktoppanel.BackgroundImage != null)
- {
- desktoppanel.BackColor = Color.Transparent;
- }
- var appimg = GetImage("applauncher");
- if (appimg != null)
- {
- var bmp = new Bitmap(appimg);
- bmp.MakeTransparent(Color.FromArgb(1, 0, 1));
- appimg = bmp;
- }
- menuStrip1.BackgroundImage = appimg;
- lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor;
- lbtime.Font = LoadedSkin.DesktopPanelClockFont;
- if (desktoppanel.BackgroundImage == null)
- {
- lbtime.BackColor = LoadedSkin.DesktopPanelClockBackgroundColor;
- }
- else
- {
- lbtime.BackColor = Color.Transparent;
- }
- apps.Text = LoadedSkin.AppLauncherText;
- sysmenuholder.Location = LoadedSkin.AppLauncherFromLeft;
- sysmenuholder.Size = LoadedSkin.AppLauncherHolderSize;
- apps.Size = sysmenuholder.Size;
- menuStrip1.Renderer = new ShiftOSMenuRenderer(new AppLauncherColorTable());
- desktoppanel.BackgroundImageLayout = GetImageLayout("desktoppanel");
- desktoppanel.Height = LoadedSkin.DesktopPanelHeight;
- if (LoadedSkin.DesktopPanelPosition == 1)
- {
- desktoppanel.Dock = DockStyle.Bottom;
- }
- else
- {
- desktoppanel.Dock = DockStyle.Top;
- }
- }
- }
- else
- {
- desktoppanel.Hide();
- }
-
- LuaInterpreter.RaiseEvent("on_desktop_skin", this);
-
- PopulatePanelButtons();
- }
-
- public ToolStripMenuItem GetALCategoryWithName(string text)
- {
- foreach (ToolStripMenuItem menuitem in apps.DropDownItems)
- {
- if (menuitem.Text == text)
- return menuitem;
- }
-
- var itm = new ToolStripMenuItem();
- itm.Text = text;
- apps.DropDownItems.Add(itm);
- return itm;
- }
-
- /// <summary>
- /// Populates the app launcher.
- /// </summary>
- /// <returns>The app launcher.</returns>
- /// <param name="items">Items.</param>
- public void PopulateAppLauncher(LauncherItem[] items)
- {
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- apps.DropDownItems.Clear();
-
- Dictionary<string, List<ToolStripMenuItem>> sortedItems = new Dictionary<string, List<ToolStripMenuItem>>();
-
-
-
- foreach (var kv in items)
- {
- var item = new ToolStripMenuItem();
- item.Text = (kv.LaunchType == null) ? kv.DisplayData.Name : Applications.NameChangerBackend.GetNameRaw(kv.LaunchType);
- item.Image = (kv.LaunchType == null) ? null : SkinEngine.GetIcon(kv.LaunchType.Name);
- item.Click += (o, a) =>
- {
- if (kv is LuaLauncherItem)
- {
- var interpreter = new Engine.Scripting.LuaInterpreter();
- interpreter.ExecuteFile((kv as LuaLauncherItem).LaunchPath);
- }
- else
- {
- Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow);
- }
-
- };
- if (sortedItems.ContainsKey(kv.DisplayData.Category))
- {
- sortedItems[kv.DisplayData.Category].Add(item);
- }
- else
- {
- sortedItems.Add(kv.DisplayData.Category, new List<ToolStripMenuItem>());
- sortedItems[kv.DisplayData.Category].Add(item);
- }
- }
-
- foreach (var kv in sortedItems)
- {
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("app_launcher_categories"))
- {
- var cat = GetALCategoryWithName(kv.Key);
- foreach (var subItem in kv.Value)
- {
- cat.DropDownItems.Add(subItem);
- }
- }
-
- else
- {
- foreach (var subItem in kv.Value)
- {
- apps.DropDownItems.Add(subItem);
- }
- }
- }
- }
-
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("al_shutdown"))
- {
- apps.DropDownItems.Add(new ToolStripSeparator());
- var item = new ToolStripMenuItem();
- item.Text = Localization.Parse("{SHUTDOWN}");
- item.Click += (o, a) =>
- {
- TerminalBackend.InvokeCommand("sos.shutdown");
- };
- apps.DropDownItems.Add(item);
-
- }
- }
- }
- LuaInterpreter.RaiseEvent("on_al_populate", items);
- }
-
-
- /// <summary>
- /// Desktops the load.
- /// </summary>
- /// <returns>The load.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void Desktop_Load(object sender, EventArgs e)
- {
-
- SaveSystem.Begin();
-
- SetupDesktop();
-
- SaveSystem.GameReady += () =>
- {
- this.Invoke(new Action(() =>
- {
- LuaInterpreter.RaiseEvent("on_desktop_load", this);
- }));
- };
- }
-
- /// <summary>
- /// Shows the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="border">Border.</param>
- public void ShowWindow(IWindowBorder border)
- {
- var brdr = border as Form;
- focused = border;
- brdr.GotFocus += (o, a) =>
- {
- focused = border;
- };
- brdr.FormBorderStyle = FormBorderStyle.None;
- brdr.Show();
- brdr.TopMost = true;
- }
-
- /// <summary>
- /// Kills the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="border">Border.</param>
- public void KillWindow(IWindowBorder border)
- {
- border.Close();
- }
-
- private IWindowBorder focused = null;
-
- public string DesktopName
- {
- get
- {
- return "ShiftOS Desktop";
- }
- }
-
-
- /// <summary>
- /// Minimizes the window.
- /// </summary>
- /// <param name="brdr">Brdr.</param>
- public void MinimizeWindow(IWindowBorder brdr)
- {
- var loc = (brdr as WindowBorder).Location;
- var sz = (brdr as WindowBorder).Size;
- (brdr as WindowBorder).Tag = JsonConvert.SerializeObject(new
- {
- Size = sz,
- Location = loc
- });
- (brdr as WindowBorder).Location = new Point(this.GetSize().Width * 2, this.GetSize().Height * 2);
- }
-
- /// <summary>
- /// Maximizes the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="brdr">Brdr.</param>
- public void MaximizeWindow(IWindowBorder brdr)
- {
- int startY = (LoadedSkin.DesktopPanelPosition == 1) ? 0 : LoadedSkin.DesktopPanelHeight;
- int h = this.GetSize().Height - LoadedSkin.DesktopPanelHeight;
- var loc = (brdr as WindowBorder).Location;
- var sz = (brdr as WindowBorder).Size;
- (brdr as WindowBorder).Tag = JsonConvert.SerializeObject(new
- {
- Size = sz,
- Location = loc
- });
- (brdr as WindowBorder).Location = new Point(0, startY);
- (brdr as WindowBorder).Size = new Size(this.GetSize().Width, h);
-
- }
-
- /// <summary>
- /// Restores the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="brdr">Brdr.</param>
- public void RestoreWindow(IWindowBorder brdr)
- {
- dynamic tag = JsonConvert.DeserializeObject<dynamic>((brdr as WindowBorder).Tag.ToString());
- (brdr as WindowBorder).Location = tag.Location;
- (brdr as WindowBorder).Size = tag.Size;
-
- }
-
- /// <summary>
- /// Invokes the on worker thread.
- /// </summary>
- /// <returns>The on worker thread.</returns>
- /// <param name="act">Act.</param>
- public void InvokeOnWorkerThread(Action act)
- {
- this.Invoke(act);
- }
-
- public void OpenAppLauncher(Point loc)
- {
- apps.DropDown.Left = loc.X;
- apps.DropDown.Top = loc.Y;
- apps.ShowDropDown();
- }
-
- /// <summary>
- /// Gets the size.
- /// </summary>
- /// <returns>The size.</returns>
- public Size GetSize()
- {
- return this.Size;
- }
-
- private void btnnotifications_Click(object sender, EventArgs e)
- {
- AppearanceManager.SetupWindow(new Applications.Notifications());
- }
-
- private void desktoppanel_Paint(object sender, PaintEventArgs e)
- {
- e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
- }
- }
-
- [ShiftOS.Engine.Scripting.Exposed("desktop")]
- public class DesktopFunctions
- {
- public static bool ShowDefaultElements = true;
-
- public dynamic getWindow()
- {
- return Desktop.CurrentDesktop;
- }
-
- public void showDefaultElements(bool val)
- {
- ShowDefaultElements = val;
- SkinEngine.LoadSkin();
- }
-
- public dynamic getOpenWindows()
- {
- return AppearanceManager.OpenForms;
- }
-
- public string getALItemName(LauncherItem kv)
- {
- return (kv.LaunchType == null) ? kv.DisplayData.Name : Applications.NameChangerBackend.GetNameRaw(kv.LaunchType);
- }
-
- public void openAppLauncher(Point loc)
- {
- Desktop.OpenAppLauncher(loc);
- }
-
- public string getWindowTitle(IWindowBorder form)
- {
- return NameChangerBackend.GetName(form.ParentWindow);
- }
-
- public void openApp(LauncherItem kv)
- {
- if (kv is LuaLauncherItem)
- {
- var interpreter = new Engine.Scripting.LuaInterpreter();
- interpreter.ExecuteFile((kv as LuaLauncherItem).LaunchPath);
- }
- else
- {
- Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow);
- }
- }
- }
-} \ No newline at end of file
diff --git a/ShiftOS.WinForms/WinformsWindowManager.cs b/ShiftOS.WinForms/WinformsWindowManager.cs
deleted file mode 100644
index eeaa6c9..0000000
--- a/ShiftOS.WinForms/WinformsWindowManager.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine;
-using ShiftOS.WinForms.Tools;
-
-namespace ShiftOS.WinForms
-{
- internal class WinformsWindowManager : WindowManager
- {
- public override void Close(IShiftOSWindow win)
- {
- (win as UserControl).Close();
- }
-
- public override void InvokeAction(Action act)
- {
- Desktop.InvokeOnWorkerThread(act);
- }
-
- public override void Maximize(IWindowBorder form)
- {
- try
- {
- var deskSize = new Size(0, 0);
- deskSize.Width = Screen.PrimaryScreen.Bounds.Width;
- deskSize.Height = Screen.PrimaryScreen.Bounds.Height;
-
- deskSize.Height -= SkinEngine.LoadedSkin.DesktopPanelHeight;
-
- var deskStart = new Point((SkinEngine.LoadedSkin.DesktopPanelPosition == 0) ? SkinEngine.LoadedSkin.DesktopPanelHeight : 0, 0);
-
- (form as WindowBorder).Location = deskStart;
- (form as WindowBorder).Size = deskSize;
-
-
- }
- catch
- {
- }
- }
-
- public override void Minimize(IWindowBorder border)
- {
- try
- {
-
- }
- catch { }
- }
-
- public override void SetTitle(IShiftOSWindow win, string title)
- {
- var wb = (win as UserControl).ParentForm as WindowBorder;
- wb.SetTitle(title);
- }
-
- public override void SetupDialog(IShiftOSWindow form)
- {
- if (!Shiftorium.UpgradeAttributesUnlocked(form.GetType()))
- {
- Console.WriteLine("{APP_NOT_FOUND}");
- return;
- }
-
- var wb = new WindowBorder(form as UserControl);
- wb.IsDialog = true;
-
-
- wb.Show();
- }
-
- public override void SetupWindow(IShiftOSWindow form)
- {
- if (!AppearanceManager.CanOpenWindow(form))
- {
- Infobox.Show("{MULTIPLAYER_ONLY}", "{MULTIPLAYER_ONLY_EXP}");
- return;
- }
-
- foreach(var attr in form.GetType().GetCustomAttributes(true))
- {
- if(attr is MultiplayerOnlyAttribute)
- {
- if(KernelWatchdog.MudConnected == false)
- {
- Infobox.PromptYesNo("Disconnected from MUD", "This application requires a connection to the MUD. Would you like to reconnect?", new Action<bool>((answer) =>
- {
- if(answer == true)
- {
- KernelWatchdog.MudConnected = true;
- SetupWindow(form);
- }
- }));
- return;
- }
- }
- }
-
- if (!Shiftorium.UpgradeAttributesUnlocked(form.GetType()))
- {
- Console.WriteLine("{APP_NOT_FOUND}");
- return;
- }
-
- if (SaveSystem.CurrentSave != null)
- {
- if (!form.GetType().Name.Contains(typeof(Applications.Dialog).Name))
- {
- int maxWindows = 0;
-
- //Window manager will step in here.
- if (Shiftorium.UpgradeInstalled("wm_unlimited_windows"))
- {
- maxWindows = 0;
- }
- else if (Shiftorium.UpgradeInstalled("wm_4_windows"))
- {
- maxWindows = 4;
- }
- else if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- maxWindows = 2;
- }
- else
- {
- maxWindows = 1;
- }
-
-
- if (maxWindows > 0)
- {
- List<WindowBorder> formstoclose = new List<WindowBorder>();
-
- foreach (WindowBorder frm in AppearanceManager.OpenForms)
- {
- formstoclose.Add(frm);
-
- }
-
- while (formstoclose.Count > maxWindows - 1)
- {
- formstoclose[0].Close();
- formstoclose.RemoveAt(0);
- }
- }
- }
- }
-
- var wb = new WindowBorder(form as UserControl);
-
- ControlManager.SetupWindows();
- }
- }
-}