aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Applications
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms/Applications')
-rw-r--r--ShiftOS.WinForms/Applications/FormatEditor.cs187
-rw-r--r--ShiftOS.WinForms/Applications/Pong.Designer.cs757
-rw-r--r--ShiftOS.WinForms/Applications/Pong.cs705
-rw-r--r--ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs317
-rw-r--r--ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs274
5 files changed, 2240 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/Applications/FormatEditor.cs b/ShiftOS.WinForms/Applications/FormatEditor.cs
new file mode 100644
index 0000000..7491e36
--- /dev/null
+++ b/ShiftOS.WinForms/Applications/FormatEditor.cs
@@ -0,0 +1,187 @@
+/*
+ * 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("Format Editor", true, "al_format_editor", "Customization")]
+ [RequiresUpgrade("format_editor")]
+ [WinOpen("formateditor")]
+ [DefaultTitle("Format Editor")]
+ [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
new file mode 100644
index 0000000..e619eaa
--- /dev/null
+++ b/ShiftOS.WinForms/Applications/Pong.Designer.cs
@@ -0,0 +1,757 @@
+/*
+ * 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.pnlhighscore = new System.Windows.Forms.Panel();
+ this.lbhighscore = new System.Windows.Forms.ListBox();
+ this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.button2 = new System.Windows.Forms.Button();
+ this.label10 = new System.Windows.Forms.Label();
+ 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.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.pgcontents.SuspendLayout();
+ this.pnlhighscore.SuspendLayout();
+ this.flowLayoutPanel1.SuspendLayout();
+ this.pnlgamestats.SuspendLayout();
+ this.pnlfinalstats.SuspendLayout();
+ this.pnllose.SuspendLayout();
+ this.pnlintro.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).BeginInit();
+ 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(1867, 819);
+ 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);
+ //
+ // 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(688, 302);
+ 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;
+ //
+ // 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);
+ //
+ // 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;
+ //
+ // 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(104, 375);
+ 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!";
+ //
+ // 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.Tag = "header1";
+ 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.Tag = "header2";
+ 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.Tag = "header2";
+ 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.Tag = "header2";
+ 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.Tag = "header2";
+ 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(1139, 41);
+ this.pnlintro.Name = "pnlintro";
+ this.pnlintro.Size = new System.Drawing.Size(595, 303);
+ this.pnlintro.TabIndex = 13;
+ this.pnlintro.Tag = "header2";
+ //
+ // 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.Tag = "header2";
+ 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.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(1833, 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(1867, 22);
+ this.lbllevelandtime.TabIndex = 4;
+ this.lbllevelandtime.Tag = "header1";
+ 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.AutoSize = true;
+ 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, 775);
+ this.lblstatscodepoints.Name = "lblstatscodepoints";
+ this.lblstatscodepoints.Size = new System.Drawing.Size(116, 23);
+ this.lblstatscodepoints.TabIndex = 12;
+ this.lblstatscodepoints.Tag = "header2";
+ 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.AutoSize = true;
+ 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(1395, 775);
+ this.lblstatsY.Name = "lblstatsY";
+ this.lblstatsY.Size = new System.Drawing.Size(76, 23);
+ this.lblstatsY.TabIndex = 11;
+ this.lblstatsY.Tag = "header2";
+ 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.AutoSize = true;
+ 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, 775);
+ this.lblstatsX.Name = "lblstatsX";
+ this.lblstatsX.Size = new System.Drawing.Size(83, 23);
+ this.lblstatsX.TabIndex = 5;
+ this.lblstatsX.Tag = "header2";
+ this.lblstatsX.Text = "Xspeed: ";
+ this.lblstatsX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // 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.Size = new System.Drawing.Size(1867, 819);
+ this.Load += new System.EventHandler(this.Pong_Load);
+ this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove);
+ this.pgcontents.ResumeLayout(false);
+ this.pgcontents.PerformLayout();
+ this.pnlhighscore.ResumeLayout(false);
+ this.pnlhighscore.PerformLayout();
+ this.flowLayoutPanel1.ResumeLayout(false);
+ this.flowLayoutPanel1.PerformLayout();
+ this.pnlgamestats.ResumeLayout(false);
+ this.pnlgamestats.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.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
new file mode 100644
index 0000000..a7b1aeb
--- /dev/null
+++ b/ShiftOS.WinForms/Applications/Pong.cs
@@ -0,0 +1,705 @@
+/*
+ * 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;
+using ShiftOS.WinForms.Tools;
+
+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));
+ }
+
+ private void CenterPanels()
+ {
+ pnlfinalstats.CenterParent();
+ pnlgamestats.CenterParent();
+ pnlhighscore.CenterParent();
+ pnlintro.CenterParent();
+ pnllose.CenterParent();
+ lblcountdown.CenterParent();
+ lblbeatai.Left = (this.Width - lblbeatai.Width) / 2;
+ SetupStats();
+ }
+
+ public void SetupStats()
+ {
+ lblstatsX.Location = new Point(5, this.Height - lblstatsX.Height - 5);
+ lblstatsY.Location = new Point(this.Width - lblstatsY.Width - 5, this.Height - lblstatsY.Height - 5);
+ lblstatscodepoints.Top = this.Height - lblstatscodepoints.Height - 5;
+ lblstatscodepoints.Left = (this.Width - lblstatscodepoints.Width) / 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 > (this.Width - (this.Width / 3)) - 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 - except it's fucking C# and this comment is misleading as fuck. OH WAIT! I didn't write it! And none of the current devs did either! - Michael
+ if (paddleComputer.Location.Y > this.Size.Height / 2 - paddleComputer.Height + casualposition)
+ {
+ paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed);
+ }
+ //Rylan is hot. Used to be //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();
+ }
+ SetupStats();
+ }
+
+ 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();
+ CenterPanels();
+ lblbeatai.Hide();
+ }
+
+ public void OnSkinLoad()
+ {
+ CenterPanels();
+ this.SizeChanged += (o, a) =>
+ {
+ CenterPanels();
+ };
+ }
+
+ public bool OnUnload()
+ {
+ return true;
+ }
+
+ public void OnUpgrade()
+ {
+ CenterPanels();
+ }
+
+ 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
new file mode 100644
index 0000000..32d508b
--- /dev/null
+++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs
@@ -0,0 +1,317 @@
+/*
+ * 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.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.lbcodepoints = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.pgupgradeprogress = new ShiftOS.WinForms.Controls.ShiftedProgressBar();
+ this.lbupgrades = new System.Windows.Forms.ListBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.btncat_back = new System.Windows.Forms.Button();
+ this.btncat_forward = new System.Windows.Forms.Button();
+ this.lblcategorytext = new System.Windows.Forms.Label();
+ this.lbnoupgrades = new System.Windows.Forms.Label();
+ this.panel1.SuspendLayout();
+ this.panel2.SuspendLayout();
+ this.pnlupgradeactions.SuspendLayout();
+ this.pnllist.SuspendLayout();
+ this.panel3.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;
+ //
+ // 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.lbnoupgrades);
+ this.pnllist.Controls.Add(this.panel3);
+ this.pnllist.Controls.Add(this.lbcodepoints);
+ 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;
+ //
+ // lbcodepoints
+ //
+ this.lbcodepoints.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.lbcodepoints.AutoSize = true;
+ this.lbcodepoints.Location = new System.Drawing.Point(128, 357);
+ this.lbcodepoints.Name = "lbcodepoints";
+ this.lbcodepoints.Size = new System.Drawing.Size(135, 13);
+ this.lbcodepoints.TabIndex = 3;
+ this.lbcodepoints.Text = "You have: %cp Codepoints";
+ this.lbcodepoints.Click += new System.EventHandler(this.lbcodepoints_Click);
+ //
+ // 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}:";
+ //
+ // 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, 105);
+ this.lbupgrades.Name = "lbupgrades";
+ this.lbupgrades.Size = new System.Drawing.Size(397, 238);
+ this.lbupgrades.TabIndex = 0;
+ this.lbupgrades.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lbupgrades_DrawItem);
+ //
+ // 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;
+ //
+ // panel3
+ //
+ this.panel3.Controls.Add(this.lblcategorytext);
+ this.panel3.Controls.Add(this.btncat_forward);
+ this.panel3.Controls.Add(this.btncat_back);
+ this.panel3.Location = new System.Drawing.Point(6, 76);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(394, 23);
+ this.panel3.TabIndex = 5;
+ //
+ // btncat_back
+ //
+ this.btncat_back.AutoSize = true;
+ this.btncat_back.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btncat_back.Dock = System.Windows.Forms.DockStyle.Left;
+ this.btncat_back.Location = new System.Drawing.Point(0, 0);
+ this.btncat_back.Name = "btncat_back";
+ this.btncat_back.Size = new System.Drawing.Size(29, 23);
+ this.btncat_back.TabIndex = 0;
+ this.btncat_back.Text = "<--";
+ this.btncat_back.UseVisualStyleBackColor = true;
+ this.btncat_back.Click += new System.EventHandler(this.btncat_back_Click);
+ //
+ // btncat_forward
+ //
+ this.btncat_forward.AutoSize = true;
+ this.btncat_forward.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btncat_forward.Dock = System.Windows.Forms.DockStyle.Right;
+ this.btncat_forward.Location = new System.Drawing.Point(365, 0);
+ this.btncat_forward.Name = "btncat_forward";
+ this.btncat_forward.Size = new System.Drawing.Size(29, 23);
+ this.btncat_forward.TabIndex = 1;
+ this.btncat_forward.Text = "-->";
+ this.btncat_forward.UseVisualStyleBackColor = true;
+ this.btncat_forward.Click += new System.EventHandler(this.btncat_forward_Click);
+ //
+ // lblcategorytext
+ //
+ this.lblcategorytext.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lblcategorytext.Location = new System.Drawing.Point(29, 0);
+ this.lblcategorytext.Name = "lblcategorytext";
+ this.lblcategorytext.Size = new System.Drawing.Size(336, 23);
+ this.lblcategorytext.TabIndex = 2;
+ this.lblcategorytext.Text = "label2";
+ this.lblcategorytext.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // lbnoupgrades
+ //
+ this.lbnoupgrades.AutoSize = true;
+ this.lbnoupgrades.Location = new System.Drawing.Point(69, 183);
+ this.lbnoupgrades.Name = "lbnoupgrades";
+ this.lbnoupgrades.Size = new System.Drawing.Size(71, 13);
+ this.lbnoupgrades.TabIndex = 6;
+ this.lbnoupgrades.Tag = "header2";
+ this.lbnoupgrades.Text = "No upgrades!";
+ this.lbnoupgrades.Visible = false;
+ //
+ // 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.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.panel3.ResumeLayout(false);
+ this.panel3.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 lbcodepoints;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.Label lblcategorytext;
+ private System.Windows.Forms.Button btncat_forward;
+ private System.Windows.Forms.Button btncat_back;
+ private System.Windows.Forms.Label lbnoupgrades;
+ }
+} \ No newline at end of file
diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
new file mode 100644
index 0000000..0762897
--- /dev/null
+++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
@@ -0,0 +1,274 @@
+/*
+ * 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 int CategoryId = 0;
+ public static System.Timers.Timer timer100;
+
+
+ public ShiftoriumFrontend()
+ {
+ cp_update = new System.Windows.Forms.Timer();
+ cp_update.Tick += (o, a) =>
+ {
+ lbcodepoints.Text = $"You have {SaveSystem.CurrentSave.Codepoints} Codepoints.";
+ };
+ cp_update.Interval = 100;
+ 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()
+ {
+ try
+ {
+ lbnoupgrades.Hide();
+ lbupgrades.Items.Clear();
+ upgrades.Clear();
+ Timer();
+
+ foreach (var upg in backend.GetAvailable().Where(x => x.Category == backend.GetCategories()[CategoryId]))
+ {
+ String name = Localization.Parse(upg.Name) + " - " + upg.Cost.ToString() + "CP";
+ upgrades.Add(name, upg);
+ lbupgrades.Items.Add(name);
+ }
+
+ if (lbupgrades.Items.Count == 0)
+ {
+ lbnoupgrades.Show();
+ lbnoupgrades.Location = new Point(
+ (lbupgrades.Width - lbnoupgrades.Width) / 2,
+ (lbupgrades.Height - lbnoupgrades.Height) / 2
+ );
+
+ }
+ else
+ {
+ lbnoupgrades.Hide();
+ }
+ lblcategorytext.Text = Shiftorium.GetCategories()[CategoryId];
+ btncat_back.Visible = (CategoryId > 0);
+ btncat_forward.Visible = (CategoryId < backend.GetCategories().Length - 1);
+ }
+ catch
+ {
+ lbnoupgrades.Show();
+ lbnoupgrades.Location = new Point(
+ (lbupgrades.Width - lbnoupgrades.Width) / 2,
+ (lbupgrades.Height - lbnoupgrades.Height) / 2
+ );
+
+ }
+ }
+
+ 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)
+ {
+ long cpCost = 0;
+ backend.Silent = true;
+ Dictionary<string, int> UpgradesToBuy = new Dictionary<string, int>();
+ foreach (var itm in lbupgrades.SelectedItems)
+ {
+ cpCost += upgrades[itm.ToString()].Cost;
+ UpgradesToBuy.Add(upgrades[itm.ToString()].ID, upgrades[itm.ToString()].Cost);
+ }
+ if (SaveSystem.CurrentSave.Codepoints < cpCost)
+ {
+ Infobox.Show("Insufficient Codepoints", $"You do not have enough Codepoints to perform this action. You need {cpCost - SaveSystem.CurrentSave.Codepoints} more.");
+
+ }
+ else
+ {
+ foreach(var upg in UpgradesToBuy)
+ {
+ backend.Buy(upg.Key, upg.Value);
+ }
+ }
+
+ backend.Silent = false;
+ PopulateShiftorium();
+ btnbuy.Hide();
+ }
+
+ private void Shiftorium_Load(object sender, EventArgs e) {
+
+ }
+
+ public void OnLoad()
+ {
+ cp_update.Start();
+ lbnoupgrades.Hide();
+ }
+
+ public void OnSkinLoad()
+ {
+
+ }
+
+ Timer cp_update = new System.Windows.Forms.Timer();
+
+ public bool OnUnload()
+ {
+ cp_update.Stop();
+ cp_update = null;
+ return true;
+ }
+
+ public void OnUpgrade()
+ {
+ lbupgrades.SelectionMode = (UpgradeInstalled("shiftorium_gui_bulk_buy") == true) ? SelectionMode.MultiExtended : SelectionMode.One;
+ lbcodepoints.Visible = Shiftorium.UpgradeInstalled("shiftorium_gui_codepoints_display");
+ }
+
+ private void lbcodepoints_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ void Timer()
+ {
+ timer100 = new System.Timers.Timer();
+ timer100.Interval = 2000;
+ //timer100.Elapsed += ???;
+ timer100.AutoReset = true;
+ timer100.Enabled = true;
+ }
+
+ private void btncat_back_Click(object sender, EventArgs e)
+ {
+ if(CategoryId > 0)
+ {
+ CategoryId--;
+ PopulateShiftorium();
+ }
+ }
+
+ private void btncat_forward_Click(object sender, EventArgs e)
+ {
+ if(CategoryId < backend.GetCategories().Length - 1)
+ {
+ CategoryId++;
+ PopulateShiftorium();
+ }
+ }
+ }
+}