mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-01-22 18:02:16 +00:00
holy ashit
This commit is contained in:
parent
3b1c71e671
commit
31cc9148dd
38 changed files with 2506 additions and 3067 deletions
1030
.vs/config/applicationhost.config
Normal file
1030
.vs/config/applicationhost.config
Normal file
File diff suppressed because it is too large
Load diff
|
@ -32,23 +32,16 @@ using System.Threading;
|
|||
namespace ShiftOS.Objects.ShiftFS
|
||||
{
|
||||
|
||||
public enum Permissions
|
||||
{
|
||||
User,
|
||||
Administrator,
|
||||
Superuser,
|
||||
All
|
||||
}
|
||||
public class File
|
||||
{
|
||||
public string Name;
|
||||
public byte[] Data;
|
||||
public byte[] HeaderData;
|
||||
public bool ReadAccessToLowUsers;
|
||||
public Permissions permissions;
|
||||
public UserPermissions permissions;
|
||||
public System.IO.Stream GetStream()
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
return new System.IO.MemoryStream(Data);
|
||||
}
|
||||
|
@ -59,7 +52,7 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
return null;
|
||||
}
|
||||
|
||||
public File(string name, byte[] data, bool ReadAccess_to_low_users, Permissions perm)
|
||||
public File(string name, byte[] data, bool ReadAccess_to_low_users, UserPermissions perm)
|
||||
{
|
||||
Name = name;
|
||||
Data = data;
|
||||
|
@ -73,31 +66,31 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
public List<File> Files = new List<File>();
|
||||
public List<Directory> Subdirectories = new List<Directory>();
|
||||
public bool ReadAccessToLowUsers;
|
||||
public Permissions permissions;
|
||||
public UserPermissions permissions;
|
||||
public void AddFile(File file)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Files.Add(file);
|
||||
}
|
||||
}
|
||||
public void RemoveFile(string name)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Files.Remove(Files.Find(x => x.Name == name));
|
||||
}
|
||||
}
|
||||
public void RemoveFile(File file)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Files.Remove(file);
|
||||
}
|
||||
}
|
||||
public File FindFileByName(string name)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
return Files.Find(x => x.Name == name);
|
||||
}
|
||||
|
@ -105,28 +98,28 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
}
|
||||
public void AddDirectory(Directory dir)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Subdirectories.Add(dir);
|
||||
}
|
||||
}
|
||||
public void RemoveDirectory(string name)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Subdirectories.Remove(Subdirectories.Find(x => x.Name == name));
|
||||
}
|
||||
}
|
||||
public void RemoveDirectory(Directory dir)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
Subdirectories.Remove(dir);
|
||||
}
|
||||
}
|
||||
public Directory FindDirectoryByName(string name)
|
||||
{
|
||||
if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All)
|
||||
if ((int)CurrentUser <= (int)permissions)
|
||||
{
|
||||
return Subdirectories.Find(x => x.Name == name);
|
||||
}
|
||||
|
@ -136,7 +129,7 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
|
||||
public static class Utils
|
||||
{
|
||||
public static Permissions CurrentUser { get; set; }
|
||||
public static UserPermissions CurrentUser { get; set; }
|
||||
|
||||
public static List<Directory> Mounts { get; set; }
|
||||
|
||||
|
@ -232,7 +225,7 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
{
|
||||
try
|
||||
{
|
||||
dir.AddFile(new File(pathlist[pathlist.Length - 1], Encoding.UTF8.GetBytes(contents), false, Permissions.All));
|
||||
dir.AddFile(new File(pathlist[pathlist.Length - 1], Encoding.UTF8.GetBytes(contents), false, CurrentUser));
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
@ -281,7 +274,7 @@ namespace ShiftOS.Objects.ShiftFS
|
|||
|
||||
if (!FileExists(path))
|
||||
{
|
||||
dir.AddFile(new File(pathlist[pathlist.Length - 1], contents, false, Permissions.All));
|
||||
dir.AddFile(new File(pathlist[pathlist.Length - 1], contents, false, CurrentUser));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<Compile Include="Shop.cs" />
|
||||
<Compile Include="Unite\Download.cs" />
|
||||
<Compile Include="Unite\ReleaseQuery.cs" />
|
||||
<Compile Include="UserConfig.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
|
|
37
ShiftOS.Objects/UserConfig.cs
Normal file
37
ShiftOS.Objects/UserConfig.cs
Normal file
|
@ -0,0 +1,37 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ShiftOS.Objects
|
||||
{
|
||||
public class UserConfig
|
||||
{
|
||||
public string UniteUrl { get; set; }
|
||||
public string DigitalSocietyAddress { get; set; }
|
||||
public int DigitalSocietyPort { get; set; }
|
||||
|
||||
public static UserConfig Get()
|
||||
{
|
||||
var conf = new UserConfig
|
||||
{
|
||||
UniteUrl = "http://getshiftos.ml",
|
||||
DigitalSocietyAddress = "michaeltheshifter.me",
|
||||
DigitalSocietyPort = 13370
|
||||
};
|
||||
|
||||
if (!File.Exists("servers.json"))
|
||||
{
|
||||
File.WriteAllText("servers.json", JsonConvert.SerializeObject(conf, Formatting.Indented));
|
||||
}
|
||||
else
|
||||
{
|
||||
conf = JsonConvert.DeserializeObject<UserConfig>(File.ReadAllText("servers.json"));
|
||||
}
|
||||
return conf;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -189,7 +189,7 @@ namespace ShiftOS.Server
|
|||
//Update the shiftos website with the user's codepoints.
|
||||
if (!string.IsNullOrWhiteSpace(sav.UniteAuthToken))
|
||||
{
|
||||
var wreq = WebRequest.Create("http://getshiftos.ml/API/SetCodepoints/" + sav.Codepoints.ToString());
|
||||
var wreq = WebRequest.Create(UserConfig.Get().UniteUrl + "/API/SetCodepoints/" + sav.Codepoints.ToString());
|
||||
wreq.Headers.Add("Authentication: Token " + sav.UniteAuthToken);
|
||||
wreq.GetResponse();
|
||||
}
|
||||
|
@ -216,6 +216,21 @@ namespace ShiftOS.Server
|
|||
WriteEncFile(savefile, JsonConvert.SerializeObject(save));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var wr = System.Net.HttpWebRequest.Create("http://getshiftos.ml/API/GetCodepoints");
|
||||
wr.Headers.Add("Authentication: Token " + save.UniteAuthToken);
|
||||
var response = wr.GetResponse();
|
||||
using (var rstr = response.GetResponseStream())
|
||||
{
|
||||
using (var sreader = new StreamReader(rstr))
|
||||
{
|
||||
long cp = Convert.ToInt64(sreader.ReadToEnd());
|
||||
save.Codepoints = cp;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
Program.server.DispatchTo(new Guid(guid), new NetObject("mud_savefile", new ServerMessage
|
||||
{
|
||||
|
|
|
@ -69,10 +69,10 @@ namespace ShiftOS.WinForms.Applications
|
|||
//
|
||||
// lvitems
|
||||
//
|
||||
this.lvitems.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.lvitems.Location = new System.Drawing.Point(120, 0);
|
||||
this.lvitems.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lvitems.Location = new System.Drawing.Point(149, 0);
|
||||
this.lvitems.Name = "lvitems";
|
||||
this.lvitems.Size = new System.Drawing.Size(514, 332);
|
||||
this.lvitems.Size = new System.Drawing.Size(485, 332);
|
||||
this.lvitems.TabIndex = 0;
|
||||
this.lvitems.UseCompatibleStateImageBehavior = false;
|
||||
this.lvitems.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.lvitems_ItemSelectionChanged);
|
||||
|
@ -81,8 +81,8 @@ namespace ShiftOS.WinForms.Applications
|
|||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.pinnedItems);
|
||||
this.panel1.Controls.Add(this.lvitems);
|
||||
this.panel1.Controls.Add(this.pinnedItems);
|
||||
this.panel1.Controls.Add(this.lbcurrentfolder);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 24);
|
||||
|
@ -95,8 +95,9 @@ namespace ShiftOS.WinForms.Applications
|
|||
this.pinnedItems.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.pinnedItems.Location = new System.Drawing.Point(0, 0);
|
||||
this.pinnedItems.Name = "pinnedItems";
|
||||
this.pinnedItems.Size = new System.Drawing.Size(114, 332);
|
||||
this.pinnedItems.Size = new System.Drawing.Size(149, 332);
|
||||
this.pinnedItems.TabIndex = 3;
|
||||
this.pinnedItems.Click += new System.EventHandler(this.pinnedItems_Click);
|
||||
//
|
||||
// lbcurrentfolder
|
||||
//
|
||||
|
|
|
@ -34,8 +34,8 @@ using System.Threading.Tasks;
|
|||
using System.Windows.Forms;
|
||||
|
||||
using static ShiftOS.Objects.ShiftFS.Utils;
|
||||
using Newtonsoft.Json;
|
||||
using ShiftOS.Engine;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ShiftOS.WinForms.Applications
|
||||
{
|
||||
|
@ -129,8 +129,14 @@ namespace ShiftOS.WinForms.Applications
|
|||
{
|
||||
int amountsCalled = -1;
|
||||
amountsCalled = amountsCalled + 1;
|
||||
pinnedItems.Nodes.Add(path);
|
||||
pinnedItems.Nodes[amountsCalled].Nodes.Add("test");
|
||||
List<string> Pinned = new List<string>();
|
||||
if(FileExists(Paths.GetPath("data") + "/pinned_items.dat"))
|
||||
{
|
||||
Pinned = JsonConvert.DeserializeObject<List<string>>(ReadAllText(Paths.GetPath("data") + "/pinned_items.dat"));
|
||||
}
|
||||
Pinned.Add(path);
|
||||
WriteAllText(Paths.GetPath("data") + "/pinned_items.dat", JsonConvert.SerializeObject(Pinned));
|
||||
ResetList();
|
||||
}
|
||||
|
||||
public void ChangeDirectory(string path)
|
||||
|
@ -153,8 +159,40 @@ namespace ShiftOS.WinForms.Applications
|
|||
}
|
||||
}
|
||||
|
||||
public void PopulatePinned(TreeNode node, string[] items)
|
||||
{
|
||||
foreach(var dir in items)
|
||||
{
|
||||
var treenode = new TreeNode();
|
||||
if (DirectoryExists(dir))
|
||||
{
|
||||
var dinf = GetDirectoryInfo(dir);
|
||||
treenode.Text = dinf.Name;
|
||||
}
|
||||
else if (FileExists(dir))
|
||||
{
|
||||
var finf = GetFileInfo(dir);
|
||||
treenode.Text = finf.Name;
|
||||
}
|
||||
treenode.Tag = dir;
|
||||
node.Nodes.Add(treenode);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetList()
|
||||
{
|
||||
pinnedItems.Nodes.Clear();
|
||||
List<string> Pinned = new List<string>();
|
||||
if(FileExists(Paths.GetPath("data") + "/pinned_items.dat"))
|
||||
{
|
||||
Pinned = JsonConvert.DeserializeObject<List<string>>(ReadAllText(Paths.GetPath("data") + "/pinned_items.dat"));
|
||||
}
|
||||
var node = new TreeNode();
|
||||
node.Text = "Pinned";
|
||||
PopulatePinned(node, Pinned.ToArray());
|
||||
pinnedItems.Nodes.Add(node);
|
||||
node.ExpandAll();
|
||||
|
||||
if(lvitems.LargeImageList == null)
|
||||
{
|
||||
lvitems.LargeImageList = new ImageList();
|
||||
|
@ -423,14 +461,14 @@ namespace ShiftOS.WinForms.Applications
|
|||
{
|
||||
if (result == true)
|
||||
{
|
||||
if (currentdir != "__system")
|
||||
if (currentdir != "__system" && lvitems.SelectedItems[0].Text != "Up one")
|
||||
{
|
||||
pinDirectory(currentdir + "/" + lvitems.SelectedItems[0].Text);
|
||||
ResetList();
|
||||
}
|
||||
else
|
||||
{
|
||||
Infobox.Show("Cannot Pin", "You cannot pin a system drive.");
|
||||
Infobox.Show("Cannot Pin", "You can only pin files or folders.");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -438,5 +476,26 @@ namespace ShiftOS.WinForms.Applications
|
|||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void pinnedItems_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (pinnedItems.SelectedNode != null)
|
||||
{
|
||||
string path = pinnedItems.SelectedNode.Tag.ToString();
|
||||
if (DirectoryExists(path))
|
||||
{
|
||||
currentdir = path;
|
||||
ResetList();
|
||||
}
|
||||
else if (FileExists(path))
|
||||
{
|
||||
FileSkimmerBackend.OpenFile(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
769
ShiftOS.WinForms/Applications/Pong.Designer.cs
generated
769
ShiftOS.WinForms/Applications/Pong.Designer.cs
generated
|
@ -1,769 +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.pnlhighscore = new System.Windows.Forms.Panel();
|
||||
this.lbhighscore = new System.Windows.Forms.ListView();
|
||||
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.btnmatchmake = new System.Windows.Forms.Button();
|
||||
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.pnlintro);
|
||||
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.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(912, 504);
|
||||
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.Location = new System.Drawing.Point(0, 36);
|
||||
this.lbhighscore.Name = "lbhighscore";
|
||||
this.lbhighscore.Size = new System.Drawing.Size(539, 246);
|
||||
this.lbhighscore.TabIndex = 1;
|
||||
this.lbhighscore.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// 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.btnmatchmake);
|
||||
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(0, 0);
|
||||
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, 159);
|
||||
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(188, 215);
|
||||
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(878, 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(912, 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, 460);
|
||||
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(440, 460);
|
||||
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, 460);
|
||||
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;
|
||||
//
|
||||
// btnmatchmake
|
||||
//
|
||||
this.btnmatchmake.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnmatchmake.Location = new System.Drawing.Point(188, 253);
|
||||
this.btnmatchmake.Name = "btnmatchmake";
|
||||
this.btnmatchmake.Size = new System.Drawing.Size(242, 28);
|
||||
this.btnmatchmake.TabIndex = 16;
|
||||
this.btnmatchmake.Text = "Or, play against another Shifter!";
|
||||
this.btnmatchmake.UseVisualStyleBackColor = true;
|
||||
this.btnmatchmake.Click += new System.EventHandler(this.btnmatchmake_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.Size = new System.Drawing.Size(912, 504);
|
||||
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.ListView 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;
|
||||
internal System.Windows.Forms.Button btnmatchmake;
|
||||
}
|
||||
}
|
|
@ -1,977 +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.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);
|
||||
if (IsMultiplayerSession)
|
||||
{
|
||||
if (IsLeader)
|
||||
{
|
||||
paddleHuman.Location = new Point(paddleHuman.Location.X, (loc.Y) - (paddleHuman.Height / 2));
|
||||
ServerManager.Forward(OpponentGUID, "pong_mp_setopponenty", paddleHuman.Top.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
paddleComputer.Location = new Point(paddleComputer.Location.X, (loc.Y) - (paddleComputer.Height / 2));
|
||||
ServerManager.Forward(OpponentGUID, "pong_mp_setopponenty", paddleComputer.Top.ToString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
int OpponentY = 0;
|
||||
|
||||
bool IsLeader = false;
|
||||
|
||||
int LeaderX = 0;
|
||||
int LeaderY = 0;
|
||||
|
||||
// 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;
|
||||
//}
|
||||
//I don't know the point of this but I'm fucking 86ing it. - Michael
|
||||
|
||||
//Set the computer player to move according to the ball's position.
|
||||
if (IsMultiplayerSession == true)
|
||||
{
|
||||
//If we're multiplayer, then we want to set the computer Y to the opponent's Y.
|
||||
//If we're the leader, we set the AI paddle, else we set the player paddle.
|
||||
if (IsLeader)
|
||||
paddleComputer.Top = OpponentY;
|
||||
else
|
||||
paddleHuman.Top = OpponentY;
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
|
||||
bool BallPhysics = true;
|
||||
|
||||
if (IsMultiplayerSession)
|
||||
{
|
||||
//Logic for moving the ball in Multiplayer.
|
||||
if (IsLeader)
|
||||
{
|
||||
ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Move it to the leader's ball position.
|
||||
ball.Location = new Point(LeaderX, LeaderY);
|
||||
BallPhysics = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{// Move the game ball.
|
||||
ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel);
|
||||
}
|
||||
if (BallPhysics)
|
||||
{
|
||||
// Check for top wall.
|
||||
if (ball.Location.Y < 0)
|
||||
{
|
||||
ball.Location = new Point(ball.Location.X, 0);
|
||||
yVel = -yVel;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
}
|
||||
|
||||
// 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;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
}
|
||||
|
||||
|
||||
// Check for player paddle.
|
||||
if (ball.Bounds.IntersectsWith(paddleHuman.Bounds))
|
||||
{
|
||||
ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width + 1, 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;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.writesound);
|
||||
|
||||
}
|
||||
|
||||
// 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;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.writesound);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Check for left wall.
|
||||
if (ball.Location.X < -100)
|
||||
{
|
||||
//If we are in multiplayer, and not the leader, we won.
|
||||
if (IsMultiplayerSession)
|
||||
{
|
||||
if (IsLeader)
|
||||
{
|
||||
//We lost.
|
||||
NotifyLoseToTarget();
|
||||
}
|
||||
else
|
||||
{
|
||||
//We won.
|
||||
NotifyWinToTarget();
|
||||
Win();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (IsMultiplayerSession)
|
||||
{
|
||||
//If we are the leader we won.
|
||||
if (IsLeader)
|
||||
{
|
||||
NotifyWinToTarget();
|
||||
Win();
|
||||
}
|
||||
else
|
||||
{
|
||||
NotifyLoseToTarget();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Win();
|
||||
}
|
||||
}
|
||||
|
||||
if (IsMultiplayerSession)
|
||||
{
|
||||
if (IsLeader)
|
||||
{
|
||||
ServerManager.Forward(OpponentGUID, "pong_mp_setballpos", JsonConvert.SerializeObject(ball.Location));
|
||||
}
|
||||
}
|
||||
|
||||
if (IsLeader)
|
||||
{
|
||||
//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;
|
||||
}
|
||||
}
|
||||
if (!IsMultiplayerSession)
|
||||
{
|
||||
computerspeed = Math.Abs(yVel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ServerMessageReceivedHandler(ServerMessage msg)
|
||||
{
|
||||
if(msg.Name == "pong_mp_setballpos")
|
||||
{
|
||||
var pt = JsonConvert.DeserializeObject<Point>(msg.Contents);
|
||||
LeaderX = pt.X;
|
||||
LeaderY = pt.Y;
|
||||
}
|
||||
else if(msg.Name == "pong_mp_youlose")
|
||||
{
|
||||
LoseMP();
|
||||
}
|
||||
else if(msg.Name == "pong_mp_setopponenty")
|
||||
{
|
||||
int y = Convert.ToInt32(msg.Contents);
|
||||
OpponentY = y;
|
||||
}
|
||||
else if(msg.Name == "pong_handshake_matchmake")
|
||||
{
|
||||
PossibleMatchmakes.Add(msg.Contents);
|
||||
}
|
||||
else if(msg.Name == "pong_handshake_complete")
|
||||
{
|
||||
LeaveMatchmake();
|
||||
StartLevel();
|
||||
}
|
||||
else if(msg.Name == "pong_handshake_giveleaderid")
|
||||
{
|
||||
IsLeader = false;
|
||||
OpponentGUID = msg.Contents;
|
||||
YouGUID = ServerManager.thisGuid.ToString();
|
||||
SendFollowerGUID();
|
||||
}
|
||||
else if(msg.Name == "pong_handshake_left")
|
||||
{
|
||||
if (this.PossibleMatchmakes.Contains(msg.Contents))
|
||||
this.PossibleMatchmakes.Remove(msg.Contents);
|
||||
}
|
||||
else if(msg.Name == "pong_handshake_setfollowerguid")
|
||||
{
|
||||
IsLeader = false;
|
||||
OpponentGUID = msg.Contents;
|
||||
}
|
||||
else if(msg.Name == "pong_mp_youwin")
|
||||
{
|
||||
Win();
|
||||
}
|
||||
}
|
||||
|
||||
public void NotifyLoseToTarget()
|
||||
{
|
||||
ServerManager.Forward(OpponentGUID, "pong_mp_youwin", null);
|
||||
}
|
||||
|
||||
public void NotifyWinToTarget()
|
||||
{
|
||||
ServerManager.Forward(OpponentGUID, "pong_mp_youlose", null);
|
||||
}
|
||||
|
||||
public void LeaveMatchmake()
|
||||
{
|
||||
ServerManager.Forward("all", "pong_handshake_left", YouGUID);
|
||||
}
|
||||
|
||||
List<string> PossibleMatchmakes = new List<string>();
|
||||
|
||||
public void SendLeaderGUID()
|
||||
{
|
||||
ServerManager.Forward(OpponentGUID, "pong_handshake_giveleaderid", YouGUID);
|
||||
}
|
||||
|
||||
|
||||
public void StartMultiplayer()
|
||||
{
|
||||
IsMultiplayerSession = true;
|
||||
YouGUID = ServerManager.thisGuid.ToString();
|
||||
ServerManager.SendMessage("pong_handshake_matchmake", YouGUID);
|
||||
}
|
||||
|
||||
|
||||
public void SendFollowerGUID()
|
||||
{
|
||||
ServerManager.Forward(OpponentGUID, "pong_handshake_setfollowerguid", YouGUID);
|
||||
}
|
||||
|
||||
public void LoseMP()
|
||||
{
|
||||
ball.Location = new Point(this.Size.Width / 2 + 200, this.Size.Height / 2);
|
||||
if(IsLeader)
|
||||
if (xVel > 0)
|
||||
xVel = -xVel;
|
||||
lblbeatai.Show();
|
||||
lblbeatai.Text = "The opponent has beaten you!";
|
||||
tmrcountdown.Start();
|
||||
gameTimer.Stop();
|
||||
counter.Stop();
|
||||
|
||||
}
|
||||
|
||||
public void Win()
|
||||
{
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
// 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;
|
||||
if (SaveSystem.CurrentSave.UniteAuthToken != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var unite = new ShiftOS.Unite.UniteClient("http://getshiftos.ml", SaveSystem.CurrentSave.UniteAuthToken);
|
||||
if (unite.GetPongLevel() < level)
|
||||
unite.SetPongLevel(level);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
[Obsolete("This method does nothing. Use UniteClient for highscore queries.")]
|
||||
public void SendHighscores()
|
||||
{
|
||||
}
|
||||
|
||||
// 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;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
break;
|
||||
case 2:
|
||||
lblcountdown.Text = "2";
|
||||
countdown = countdown - 1;
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
break;
|
||||
case 3:
|
||||
lblcountdown.Text = "3";
|
||||
countdown = countdown - 1;
|
||||
lblcountdown.Show();
|
||||
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
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);
|
||||
if (!string.IsNullOrWhiteSpace(SaveSystem.CurrentSave.UniteAuthToken))
|
||||
{
|
||||
var unite = new ShiftOS.Unite.UniteClient("http://getshiftos.ml", SaveSystem.CurrentSave.UniteAuthToken);
|
||||
if (unite.GetPongCP() < totalreward)
|
||||
{
|
||||
unite.SetPongCP(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();
|
||||
}
|
||||
|
||||
bool IsMultiplayerSession = false;
|
||||
|
||||
string YouGUID = "";
|
||||
string OpponentGUID = "";
|
||||
|
||||
public void SetupHighScores()
|
||||
{
|
||||
lbhighscore.Items.Clear();
|
||||
lbhighscore.View = View.Details;
|
||||
lbhighscore.FullRowSelect = true;
|
||||
lbhighscore.Columns.Clear();
|
||||
var n = new ColumnHeader();
|
||||
n.Text = "Player";
|
||||
n.Width = lbhighscore.Width / 3;
|
||||
var l = new ColumnHeader();
|
||||
l.Text = "Level";
|
||||
l.Width = n.Width;
|
||||
var c = new ColumnHeader();
|
||||
c.Text = "Codepoints";
|
||||
c.Width = n.Width;
|
||||
lbhighscore.Columns.Add(n);
|
||||
lbhighscore.Columns.Add(l);
|
||||
lbhighscore.Columns.Add(c);
|
||||
|
||||
var t = new Thread(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
var unite = new ShiftOS.Unite.UniteClient("http://getshiftos.ml", SaveSystem.CurrentSave.UniteAuthToken);
|
||||
var hs = unite.GetPongHighscores();
|
||||
foreach (var score in hs.Highscores)
|
||||
{
|
||||
string username = unite.GetDisplayNameId(score.UserId);
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
var name_item = new ListViewItem();
|
||||
name_item.Text = username;
|
||||
lbhighscore.Items.Add(name_item);
|
||||
name_item.SubItems.Add(score.Level.ToString());
|
||||
name_item.SubItems.Add(score.CodepointsCashout.ToString());
|
||||
}));
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Infobox.Show("Service unavailable.", "The Pong Highscore service is unavailable at this time.");
|
||||
this.Invoke(new Action(pnlgamestats.BringToFront));
|
||||
return;
|
||||
}
|
||||
});
|
||||
t.Start();
|
||||
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();
|
||||
}
|
||||
|
||||
public void StartLevel()
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
private void btnmatchmake_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.StartMultiplayer();
|
||||
pnlintro.Hide();
|
||||
lblbeatai.Text = "Beat the other player to earn Codepoints.";
|
||||
lblcountdown.Text = "Waiting for another player...";
|
||||
lblcountdown.Left = (this.Width - lblcountdown.Width) / 2;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,317 +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.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;
|
||||
}
|
||||
}
|
|
@ -1,274 +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 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, long> UpgradesToBuy = new Dictionary<string, long>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,342 +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.WinForms.Tools;
|
||||
|
||||
namespace ShiftOS.WinForms.Applications
|
||||
{
|
||||
[Launcher("Skin Loader", true, "al_skin_loader", "Customization")]
|
||||
[RequiresUpgrade("skinning")]
|
||||
[WinOpen("skin_loader")]
|
||||
[DefaultTitle("Skin Loader")]
|
||||
[DefaultIcon("iconSkinLoader")]
|
||||
public partial class Skin_Loader : UserControl, IShiftOSWindow
|
||||
{
|
||||
public Skin_Loader()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetupControls(pnlborder);
|
||||
SetupControls(pnldesktop);
|
||||
LoadedSkin = JsonConvert.DeserializeObject<Skin>(JsonConvert.SerializeObject(SkinEngine.LoadedSkin));
|
||||
this.Load += (o, a) => { SetupUI(); };
|
||||
|
||||
}
|
||||
|
||||
public void SetupControls(Control ctrl)
|
||||
{
|
||||
ctrl.Tag = "keepbg keepfg keepfont";
|
||||
foreach (Control c in ctrl.Controls)
|
||||
SetupControls(c);
|
||||
}
|
||||
|
||||
public Skin LoadedSkin { get; set; }
|
||||
|
||||
public void SetupUI()
|
||||
{
|
||||
SetupDesktop();
|
||||
Setup();
|
||||
}
|
||||
|
||||
public void SetupDesktop()
|
||||
{
|
||||
menuStrip1.Renderer = new ShiftOSMenuRenderer();
|
||||
|
||||
this.DoubleBuffered = true;
|
||||
desktoppanel.BackColor = Color.Green;
|
||||
|
||||
//upgrades
|
||||
|
||||
if (SaveSystem.CurrentSave != null)
|
||||
{
|
||||
desktoppanel.Visible = ShiftoriumFrontend.UpgradeInstalled("desktop");
|
||||
lbtime.Visible = ShiftoriumFrontend.UpgradeInstalled("desktop_clock_widget");
|
||||
|
||||
//skinning
|
||||
lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor;
|
||||
|
||||
sysmenuholder.Visible = ShiftoriumFrontend.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'.
|
||||
pnldesktop.BackColor = Color.FromArgb(LoadedSkin.DesktopColor.R, LoadedSkin.DesktopColor.G, LoadedSkin.DesktopColor.B);
|
||||
//Not doing this will cause an ArgumentException.
|
||||
|
||||
pnldesktop.BackgroundImage = GetImage("desktopbackground");
|
||||
pnldesktop.BackgroundImageLayout = GetImageLayout("desktopbackground");
|
||||
desktoppanel.BackgroundImage = GetImage("desktoppanel");
|
||||
menuStrip1.BackgroundImage = GetImage("applauncher");
|
||||
lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor;
|
||||
lbtime.Font = LoadedSkin.DesktopPanelClockFont;
|
||||
lbtime.Text = Applications.Terminal.GetTime();
|
||||
lbtime.Left = desktoppanel.Width - lbtime.Width - LoadedSkin.DesktopPanelClockFromRight.X;
|
||||
lbtime.Top = LoadedSkin.DesktopPanelClockFromRight.Y;
|
||||
|
||||
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.BackColor = LoadedSkin.DesktopPanelColor;
|
||||
desktoppanel.BackgroundImageLayout = GetImageLayout("desktoppanel");
|
||||
desktoppanel.Height = LoadedSkin.DesktopPanelHeight;
|
||||
if (LoadedSkin.DesktopPanelPosition == 1)
|
||||
{
|
||||
desktoppanel.Dock = DockStyle.Bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
desktoppanel.Dock = DockStyle.Top;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ImageLayout GetImageLayout(string img)
|
||||
{
|
||||
if (LoadedSkin.SkinImageLayouts.ContainsKey(img))
|
||||
{
|
||||
return LoadedSkin.SkinImageLayouts[img];
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadedSkin.SkinImageLayouts.Add(img, ImageLayout.Tile);
|
||||
return ImageLayout.Tile;
|
||||
}
|
||||
}
|
||||
|
||||
public Image GetImage(string img)
|
||||
{
|
||||
var type = typeof(Skin);
|
||||
|
||||
foreach (var field in type.GetFields())
|
||||
{
|
||||
foreach (var attr in field.GetCustomAttributes(false))
|
||||
{
|
||||
if (attr is ImageAttribute)
|
||||
{
|
||||
var iattr = attr as ImageAttribute;
|
||||
if (iattr.Name == img)
|
||||
{
|
||||
byte[] image = (byte[])field.GetValue(LoadedSkin);
|
||||
return SkinEngine.ImageFromBinary(image);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
bool IsDialog = false;
|
||||
|
||||
public void Setup()
|
||||
{
|
||||
pnlcontents.BackColor = LoadedSkin.ControlColor;
|
||||
|
||||
this.lbtitletext.Text = Localization.Parse("{TEMPLATE}");
|
||||
this.Dock = DockStyle.Fill;
|
||||
|
||||
if (SaveSystem.CurrentSave != null)
|
||||
{
|
||||
this.pnltitle.Visible = ShiftoriumFrontend.UpgradeInstalled("wm_titlebar");
|
||||
this.pnlclose.Visible = ShiftoriumFrontend.UpgradeInstalled("close_button");
|
||||
this.pnlminimize.Visible = (IsDialog == false) && ShiftoriumFrontend.UpgradeInstalled("minimize_button");
|
||||
this.pnlmaximize.Visible = (IsDialog == false) && ShiftoriumFrontend.UpgradeInstalled("maximize_button");
|
||||
SetupSkin();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.pnltitle.Visible = false;
|
||||
this.pnlclose.Visible = false;
|
||||
this.pnlminimize.Visible = false;
|
||||
this.pnlmaximize.Visible = false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void SetupSkin()
|
||||
{
|
||||
pnltitlemaster.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");
|
||||
|
||||
|
||||
lbtitletext.BackColor = 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 = LoadedSkin.TitleTextLeft;
|
||||
break;
|
||||
default:
|
||||
lbtitletext.Left = (pnltitle.Width - lbtitletext.Width) / 2;
|
||||
lbtitletext.Top = LoadedSkin.TitleTextLeft.Y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public Point FromRight(Point input)
|
||||
{
|
||||
return new Point(pnltitle.Width - input.X, input.Y);
|
||||
}
|
||||
|
||||
private void btnapply_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShiftOS.Objects.ShiftFS.Utils.WriteAllText(Paths.GetPath("skin.json"), JsonConvert.SerializeObject(LoadedSkin));
|
||||
SkinEngine.LoadSkin();
|
||||
}
|
||||
|
||||
private void btnclose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void btnloaddefault_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.LoadedSkin = new ShiftOS.Engine.Skin();
|
||||
SetupUI();
|
||||
}
|
||||
|
||||
private void btnexport_Click(object sender, EventArgs e)
|
||||
{
|
||||
AppearanceManager.SetupDialog(new FileDialog(new[] { ".skn" }, FileOpenerStyle.Save, new Action<string>((filename) =>
|
||||
{
|
||||
ShiftOS.Objects.ShiftFS.Utils.WriteAllText(filename, JsonConvert.SerializeObject(LoadedSkin));
|
||||
string fname = filename.Split('/')[filename.Split('/').Length - 1];
|
||||
if(!System.IO.Directory.Exists(Paths.SharedFolder + "\\skins"))
|
||||
{
|
||||
System.IO.Directory.CreateDirectory(Paths.SharedFolder + "\\skins");
|
||||
}
|
||||
|
||||
string path = Paths.SharedFolder + "\\skins\\" + SaveSystem.CurrentSave.Username + "-" + fname;
|
||||
System.IO.File.WriteAllText(path, JsonConvert.SerializeObject(LoadedSkin));
|
||||
|
||||
})));
|
||||
}
|
||||
|
||||
private void btnimport_Click(object sender, EventArgs e)
|
||||
{
|
||||
AppearanceManager.SetupDialog(new FileDialog(new[] { ".skn" }, FileOpenerStyle.Open, new Action<string>((filename) =>
|
||||
{
|
||||
LoadedSkin = JsonConvert.DeserializeObject<Skin>(ShiftOS.Objects.ShiftFS.Utils.ReadAllText(filename));
|
||||
SetupUI();
|
||||
})));
|
||||
}
|
||||
|
||||
public void OnLoad()
|
||||
{
|
||||
|
||||
SetupUI();
|
||||
}
|
||||
|
||||
public void OnSkinLoad()
|
||||
{
|
||||
SetupUI();
|
||||
}
|
||||
|
||||
public bool OnUnload()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void OnUpgrade()
|
||||
{
|
||||
SetupUI();
|
||||
}
|
||||
}
|
||||
}
|
192
ShiftOS.WinForms/Applications/TriWrite.Designer.cs
generated
192
ShiftOS.WinForms/Applications/TriWrite.Designer.cs
generated
|
@ -1,192 +0,0 @@
|
|||
namespace ShiftOS.WinForms.Applications
|
||||
{
|
||||
partial class TriWrite
|
||||
{
|
||||
/// <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 Component 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()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TriWrite));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.addContactToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tvcontacts = new System.Windows.Forms.TreeView();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.txtbody = new System.Windows.Forms.Label();
|
||||
this.lbtitle = new System.Windows.Forms.Label();
|
||||
this.txtcontents = new System.Windows.Forms.TextBox();
|
||||
this.menuStrip2 = new System.Windows.Forms.MenuStrip();
|
||||
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuStrip3 = new System.Windows.Forms.MenuStrip();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.menuStrip2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addContactToolStripMenuItem,
|
||||
this.removeToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(872, 24);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// addContactToolStripMenuItem
|
||||
//
|
||||
this.addContactToolStripMenuItem.Name = "addContactToolStripMenuItem";
|
||||
this.addContactToolStripMenuItem.Size = new System.Drawing.Size(32, 19);
|
||||
//
|
||||
// removeToolStripMenuItem
|
||||
//
|
||||
this.removeToolStripMenuItem.Name = "removeToolStripMenuItem";
|
||||
this.removeToolStripMenuItem.Size = new System.Drawing.Size(32, 19);
|
||||
//
|
||||
// tvcontacts
|
||||
//
|
||||
this.tvcontacts.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.tvcontacts.Location = new System.Drawing.Point(0, 24);
|
||||
this.tvcontacts.Name = "tvcontacts";
|
||||
this.tvcontacts.Size = new System.Drawing.Size(224, 551);
|
||||
this.tvcontacts.TabIndex = 1;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.txtbody);
|
||||
this.panel1.Controls.Add(this.lbtitle);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(224, 24);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(648, 551);
|
||||
this.panel1.TabIndex = 2;
|
||||
//
|
||||
// txtbody
|
||||
//
|
||||
this.txtbody.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.txtbody.Location = new System.Drawing.Point(7, 54);
|
||||
this.txtbody.Name = "txtbody";
|
||||
this.txtbody.Size = new System.Drawing.Size(626, 481);
|
||||
this.txtbody.TabIndex = 1;
|
||||
this.txtbody.Text = resources.GetString("txtbody.Text");
|
||||
//
|
||||
// lbtitle
|
||||
//
|
||||
this.lbtitle.AutoSize = true;
|
||||
this.lbtitle.Location = new System.Drawing.Point(7, 4);
|
||||
this.lbtitle.Name = "lbtitle";
|
||||
this.lbtitle.Size = new System.Drawing.Size(44, 13);
|
||||
this.lbtitle.TabIndex = 0;
|
||||
this.lbtitle.Tag = "header1";
|
||||
this.lbtitle.Text = "TriWrite";
|
||||
//
|
||||
// txtcontents
|
||||
//
|
||||
this.txtcontents.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtcontents.Location = new System.Drawing.Point(0, 53);
|
||||
this.txtcontents.Multiline = true;
|
||||
this.txtcontents.Name = "txtcontents";
|
||||
this.txtcontents.Size = new System.Drawing.Size(527, 460);
|
||||
this.txtcontents.TabIndex = 1;
|
||||
this.txtcontents.TabStop = false;
|
||||
//
|
||||
// menuStrip2
|
||||
//
|
||||
this.menuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.openToolStripMenuItem,
|
||||
this.saveToolStripMenuItem});
|
||||
this.menuStrip2.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip2.Name = "menuStrip2";
|
||||
this.menuStrip2.Size = new System.Drawing.Size(527, 24);
|
||||
this.menuStrip2.TabIndex = 2;
|
||||
this.menuStrip2.Text = "menuStrip2";
|
||||
//
|
||||
// newToolStripMenuItem
|
||||
//
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(43, 20);
|
||||
this.newToolStripMenuItem.Text = "New";
|
||||
//
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
|
||||
this.openToolStripMenuItem.Text = "Open";
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(43, 20);
|
||||
this.saveToolStripMenuItem.Text = "Save";
|
||||
//
|
||||
// menuStrip3
|
||||
//
|
||||
this.menuStrip3.Location = new System.Drawing.Point(0, 30);
|
||||
this.menuStrip3.Name = "menuStrip3";
|
||||
this.menuStrip3.Size = new System.Drawing.Size(527, 24);
|
||||
this.menuStrip3.TabIndex = 3;
|
||||
this.menuStrip3.Text = "menuStrip3";
|
||||
//
|
||||
// TriWrite
|
||||
//
|
||||
this.Controls.Add(this.txtcontents);
|
||||
this.Controls.Add(this.menuStrip3);
|
||||
this.Controls.Add(this.menuStrip2);
|
||||
this.Name = "TriWrite";
|
||||
this.Size = new System.Drawing.Size(527, 513);
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.menuStrip2.ResumeLayout(false);
|
||||
this.menuStrip2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem addContactToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem;
|
||||
private System.Windows.Forms.TreeView tvcontacts;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label txtbody;
|
||||
private System.Windows.Forms.Label lbtitle;
|
||||
private System.Windows.Forms.TextBox txtcontents;
|
||||
private System.Windows.Forms.MenuStrip menuStrip2;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.MenuStrip menuStrip3;
|
||||
}
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
using ShiftOS.Objects.ShiftFS;
|
||||
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;
|
||||
|
||||
namespace ShiftOS.WinForms.Applications
|
||||
{
|
||||
[WinOpen("triwrite")]
|
||||
[AppscapeEntry("TriWrite", "Part of the trilogy of office applications for enhancement of your system. TriWrite is easliy the best text editor out there for ShiftOS.", 1024, 750, null, "Office")]
|
||||
[DefaultTitle("TriWrite")]
|
||||
[Launcher("TriWrite", false, null, "Office")]
|
||||
public partial class TriWrite : UserControl, IShiftOSWindow
|
||||
{
|
||||
|
||||
public TriWrite()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void newToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
txtcontents.Text = "";
|
||||
}
|
||||
|
||||
private void openToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var txt = new List<string>();
|
||||
txt.Add(".txt");
|
||||
|
||||
AppearanceManager.SetupDialog(new FileDialog(txt.ToArray(), FileOpenerStyle.Open, new Action<string>((file) => this.LoadFile(file))));
|
||||
}
|
||||
|
||||
public void LoadFile(string file)
|
||||
{
|
||||
txtcontents.Text = Utils.ReadAllText(file);
|
||||
}
|
||||
|
||||
public void SaveFile(string file)
|
||||
{
|
||||
Utils.WriteAllText(file, txtcontents.Text);
|
||||
}
|
||||
|
||||
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var txt = new List<string>();
|
||||
txt.Add(".txt");
|
||||
|
||||
AppearanceManager.SetupDialog(new FileDialog(txt.ToArray(), FileOpenerStyle.Save, new Action<string>((file) => this.SaveFile(file))));
|
||||
}
|
||||
|
||||
public void OnLoad()
|
||||
{
|
||||
}
|
||||
|
||||
public void OnSkinLoad()
|
||||
{
|
||||
}
|
||||
|
||||
public bool OnUnload()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void OnUpgrade()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -130,7 +130,113 @@ To add a contact, simply click "Add Contact", and to remove one, click "Remove".
|
|||
<metadata name="menuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>132, 17</value>
|
||||
</metadata>
|
||||
<metadata name="menuStrip3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>247, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="bold.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="italic.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="underline.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="strikethrough.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="left.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="center.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="right.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -86,6 +86,7 @@ namespace ShiftOS.WinForms.Controls
|
|||
|
||||
public void WriteLine(string text)
|
||||
{
|
||||
Engine.AudioManager.PlayStream(Properties.Resources.writesound);
|
||||
this.HideSelection = true;
|
||||
this.Select(this.TextLength, 0);
|
||||
this.SelectionFont = ConstructFont();
|
||||
|
@ -119,6 +120,135 @@ namespace ShiftOS.WinForms.Controls
|
|||
base.OnMouseUp(mevent);
|
||||
}
|
||||
|
||||
protected override void OnKeyDown(KeyEventArgs e)
|
||||
{
|
||||
base.OnKeyDown(e);
|
||||
if (!TerminalBackend.InStory)
|
||||
{
|
||||
switch (e.KeyCode) {
|
||||
case Keys.Add:
|
||||
case Keys.Alt:
|
||||
case Keys.Apps:
|
||||
case Keys.Attn:
|
||||
case Keys.BrowserBack:
|
||||
case Keys.BrowserFavorites:
|
||||
case Keys.BrowserForward:
|
||||
case Keys.BrowserHome:
|
||||
case Keys.BrowserRefresh:
|
||||
case Keys.BrowserSearch:
|
||||
case Keys.BrowserStop:
|
||||
case Keys.Cancel:
|
||||
case Keys.Capital:
|
||||
case Keys.Clear:
|
||||
case Keys.Control:
|
||||
case Keys.ControlKey:
|
||||
case Keys.Crsel:
|
||||
case Keys.Decimal:
|
||||
case Keys.Divide:
|
||||
case Keys.Down:
|
||||
case Keys.End:
|
||||
case Keys.Enter:
|
||||
case Keys.EraseEof:
|
||||
case Keys.Escape:
|
||||
case Keys.Execute:
|
||||
case Keys.Exsel:
|
||||
case Keys.F1:
|
||||
case Keys.F10:
|
||||
case Keys.F11:
|
||||
case Keys.F12:
|
||||
case Keys.F13:
|
||||
case Keys.F14:
|
||||
case Keys.F15:
|
||||
case Keys.F16:
|
||||
case Keys.F17:
|
||||
case Keys.F18:
|
||||
case Keys.F19:
|
||||
case Keys.F2:
|
||||
case Keys.F20:
|
||||
case Keys.F21:
|
||||
case Keys.F22:
|
||||
case Keys.F23:
|
||||
case Keys.F24:
|
||||
case Keys.F3:
|
||||
case Keys.F4:
|
||||
case Keys.F5:
|
||||
case Keys.F6:
|
||||
case Keys.F7:
|
||||
case Keys.F8:
|
||||
case Keys.F9:
|
||||
case Keys.FinalMode:
|
||||
case Keys.HanguelMode:
|
||||
case Keys.HanjaMode:
|
||||
case Keys.Help:
|
||||
case Keys.Home:
|
||||
case Keys.IMEAccept:
|
||||
case Keys.IMEConvert:
|
||||
case Keys.IMEModeChange:
|
||||
case Keys.IMENonconvert:
|
||||
case Keys.Insert:
|
||||
case Keys.JunjaMode:
|
||||
case Keys.KeyCode:
|
||||
case Keys.LaunchApplication1:
|
||||
case Keys.LaunchApplication2:
|
||||
case Keys.LaunchMail:
|
||||
case Keys.LButton:
|
||||
case Keys.LControlKey:
|
||||
case Keys.Left:
|
||||
case Keys.LineFeed:
|
||||
case Keys.LMenu:
|
||||
case Keys.LShiftKey:
|
||||
case Keys.LWin:
|
||||
case Keys.MButton:
|
||||
case Keys.MediaNextTrack:
|
||||
case Keys.MediaPlayPause:
|
||||
case Keys.MediaPreviousTrack:
|
||||
case Keys.MediaStop:
|
||||
case Keys.Menu:
|
||||
case Keys.Modifiers:
|
||||
case Keys.Multiply:
|
||||
case Keys.Next:
|
||||
case Keys.NoName:
|
||||
case Keys.None:
|
||||
case Keys.NumLock:
|
||||
case Keys.Pa1:
|
||||
case Keys.Packet:
|
||||
case Keys.PageUp:
|
||||
case Keys.Pause:
|
||||
case Keys.Play:
|
||||
case Keys.Print:
|
||||
case Keys.PrintScreen:
|
||||
case Keys.ProcessKey:
|
||||
case Keys.RButton:
|
||||
case Keys.RControlKey:
|
||||
case Keys.Right:
|
||||
case Keys.RMenu:
|
||||
case Keys.RShiftKey:
|
||||
case Keys.RWin:
|
||||
case Keys.Scroll:
|
||||
case Keys.Select:
|
||||
case Keys.SelectMedia:
|
||||
case Keys.Separator:
|
||||
case Keys.Shift:
|
||||
case Keys.ShiftKey:
|
||||
case Keys.Sleep:
|
||||
case Keys.Subtract:
|
||||
case Keys.Tab:
|
||||
case Keys.Up:
|
||||
case Keys.VolumeDown:
|
||||
case Keys.VolumeMute:
|
||||
case Keys.VolumeUp:
|
||||
case Keys.XButton1:
|
||||
case Keys.XButton2:
|
||||
case Keys.Zoom:
|
||||
|
||||
break;
|
||||
default:
|
||||
//Engine.AudioManager.PlayStream(Properties.Resources.typesound); // infernal beeping noise only enable for the trailers
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TerminalBox() : base()
|
||||
{
|
||||
this.Tag = "keepbg keepfg keepfont";
|
||||
|
|
62
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.Designer.cs
generated
Normal file
62
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.Designer.cs
generated
Normal file
|
@ -0,0 +1,62 @@
|
|||
namespace ShiftOS.WinForms.DesktopWidgets
|
||||
{
|
||||
partial class HeartbeatWidget
|
||||
{
|
||||
/// <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 Component 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.lbheartbeat = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lbheartbeat
|
||||
//
|
||||
this.lbheartbeat.AutoSize = true;
|
||||
this.lbheartbeat.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lbheartbeat.Location = new System.Drawing.Point(0, 0);
|
||||
this.lbheartbeat.Name = "lbheartbeat";
|
||||
this.lbheartbeat.Size = new System.Drawing.Size(35, 13);
|
||||
this.lbheartbeat.TabIndex = 0;
|
||||
this.lbheartbeat.Text = "label1";
|
||||
//
|
||||
// HeartbeatWidget
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoSize = true;
|
||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.Controls.Add(this.lbheartbeat);
|
||||
this.Name = "HeartbeatWidget";
|
||||
this.Size = new System.Drawing.Size(35, 13);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label lbheartbeat;
|
||||
}
|
||||
}
|
51
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.cs
Normal file
51
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.cs
Normal file
|
@ -0,0 +1,51 @@
|
|||
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.WinForms.Tools;
|
||||
using ShiftOS.Engine;
|
||||
|
||||
namespace ShiftOS.WinForms.DesktopWidgets
|
||||
{
|
||||
[DesktopWidget("Server ping", "See the time spent between client requests and server replies in the digital society.")]
|
||||
public partial class HeartbeatWidget : UserControl, IDesktopWidget
|
||||
{
|
||||
public HeartbeatWidget()
|
||||
{
|
||||
InitializeComponent();
|
||||
tmr.Interval = 1;
|
||||
tmr.Tick += (o, a) =>
|
||||
{
|
||||
if(ts != ServerManager.DigitalSocietyPing)
|
||||
{
|
||||
ts = ServerManager.DigitalSocietyPing;
|
||||
lbheartbeat.Text = "Server ping: " + ts.ToString() + " MS";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
//Fun fact. I misspelled this as "TimeSpam."
|
||||
long ts = 0;
|
||||
|
||||
public void OnSkinLoad()
|
||||
{
|
||||
ControlManager.SetupControls(this);
|
||||
}
|
||||
|
||||
public void OnUpgrade()
|
||||
{
|
||||
}
|
||||
|
||||
Timer tmr = new Timer();
|
||||
|
||||
public void Setup()
|
||||
{
|
||||
tmr.Start();
|
||||
}
|
||||
}
|
||||
}
|
120
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.resx
Normal file
120
ShiftOS.WinForms/DesktopWidgets/HeartbeatWidget.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
135
ShiftOS.WinForms/GUILogin.Designer.cs
generated
Normal file
135
ShiftOS.WinForms/GUILogin.Designer.cs
generated
Normal file
|
@ -0,0 +1,135 @@
|
|||
namespace ShiftOS.WinForms
|
||||
{
|
||||
partial class GUILogin
|
||||
{
|
||||
/// <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.pnlloginform = new System.Windows.Forms.Panel();
|
||||
this.btnlogin = new System.Windows.Forms.Button();
|
||||
this.txtpassword = new System.Windows.Forms.TextBox();
|
||||
this.txtusername = new System.Windows.Forms.TextBox();
|
||||
this.lblogintitle = new System.Windows.Forms.Label();
|
||||
this.btnshutdown = new System.Windows.Forms.Button();
|
||||
this.pnlloginform.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlloginform
|
||||
//
|
||||
this.pnlloginform.Controls.Add(this.btnlogin);
|
||||
this.pnlloginform.Controls.Add(this.txtpassword);
|
||||
this.pnlloginform.Controls.Add(this.txtusername);
|
||||
this.pnlloginform.Location = new System.Drawing.Point(13, 13);
|
||||
this.pnlloginform.Name = "pnlloginform";
|
||||
this.pnlloginform.Size = new System.Drawing.Size(358, 236);
|
||||
this.pnlloginform.TabIndex = 0;
|
||||
this.pnlloginform.Tag = "";
|
||||
//
|
||||
// btnlogin
|
||||
//
|
||||
this.btnlogin.AutoSize = true;
|
||||
this.btnlogin.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.btnlogin.Location = new System.Drawing.Point(159, 163);
|
||||
this.btnlogin.Name = "btnlogin";
|
||||
this.btnlogin.Size = new System.Drawing.Size(43, 23);
|
||||
this.btnlogin.TabIndex = 2;
|
||||
this.btnlogin.Text = "Login";
|
||||
this.btnlogin.UseVisualStyleBackColor = true;
|
||||
this.btnlogin.Click += new System.EventHandler(this.btnlogin_Click);
|
||||
//
|
||||
// txtpassword
|
||||
//
|
||||
this.txtpassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtpassword.Location = new System.Drawing.Point(69, 115);
|
||||
this.txtpassword.Name = "txtpassword";
|
||||
this.txtpassword.Size = new System.Drawing.Size(300, 20);
|
||||
this.txtpassword.TabIndex = 1;
|
||||
this.txtpassword.UseSystemPasswordChar = true;
|
||||
//
|
||||
// txtusername
|
||||
//
|
||||
this.txtusername.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtusername.Location = new System.Drawing.Point(3, 14);
|
||||
this.txtusername.Name = "txtusername";
|
||||
this.txtusername.Size = new System.Drawing.Size(300, 20);
|
||||
this.txtusername.TabIndex = 0;
|
||||
//
|
||||
// lblogintitle
|
||||
//
|
||||
this.lblogintitle.AutoSize = true;
|
||||
this.lblogintitle.Location = new System.Drawing.Point(99, 553);
|
||||
this.lblogintitle.Name = "lblogintitle";
|
||||
this.lblogintitle.Size = new System.Drawing.Size(103, 13);
|
||||
this.lblogintitle.TabIndex = 1;
|
||||
this.lblogintitle.Tag = "header1 keepbg";
|
||||
this.lblogintitle.Text = "Welcome to ShiftOS";
|
||||
//
|
||||
// btnshutdown
|
||||
//
|
||||
this.btnshutdown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnshutdown.AutoSize = true;
|
||||
this.btnshutdown.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.btnshutdown.Location = new System.Drawing.Point(924, 652);
|
||||
this.btnshutdown.Name = "btnshutdown";
|
||||
this.btnshutdown.Size = new System.Drawing.Size(65, 23);
|
||||
this.btnshutdown.TabIndex = 2;
|
||||
this.btnshutdown.Text = "Shutdown";
|
||||
this.btnshutdown.UseVisualStyleBackColor = true;
|
||||
this.btnshutdown.Click += new System.EventHandler(this.btnshutdown_Click);
|
||||
//
|
||||
// GUILogin
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Black;
|
||||
this.ClientSize = new System.Drawing.Size(1001, 687);
|
||||
this.Controls.Add(this.btnshutdown);
|
||||
this.Controls.Add(this.lblogintitle);
|
||||
this.Controls.Add(this.pnlloginform);
|
||||
this.ForeColor = System.Drawing.Color.White;
|
||||
this.Name = "GUILogin";
|
||||
this.Text = "GUILogin";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.GUILogin_FormClosing);
|
||||
this.Load += new System.EventHandler(this.GUILogin_Load);
|
||||
this.pnlloginform.ResumeLayout(false);
|
||||
this.pnlloginform.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel pnlloginform;
|
||||
private System.Windows.Forms.Button btnlogin;
|
||||
private System.Windows.Forms.TextBox txtpassword;
|
||||
private System.Windows.Forms.TextBox txtusername;
|
||||
private System.Windows.Forms.Label lblogintitle;
|
||||
private System.Windows.Forms.Button btnshutdown;
|
||||
}
|
||||
}
|
136
ShiftOS.WinForms/GUILogin.cs
Normal file
136
ShiftOS.WinForms/GUILogin.cs
Normal file
|
@ -0,0 +1,136 @@
|
|||
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 ShiftOS.Objects;
|
||||
using ShiftOS.WinForms.Tools;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
{
|
||||
public partial class GUILogin : Form
|
||||
{
|
||||
public GUILogin()
|
||||
{
|
||||
InitializeComponent();
|
||||
uiTimer.Tick += (o, a) =>
|
||||
{
|
||||
btnlogin.Left = txtusername.Left + ((txtusername.Width - btnlogin.Width) / 2);
|
||||
btnlogin.Top = txtpassword.Top + txtpassword.Height + 5;
|
||||
|
||||
lblogintitle.Left = pnlloginform.Left + ((pnlloginform.Width - lblogintitle.Width) / 2);
|
||||
lblogintitle.Top = pnlloginform.Top - lblogintitle.Width - 5;
|
||||
|
||||
};
|
||||
uiTimer.Interval = 100;
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
this.TopMost = true;
|
||||
}
|
||||
|
||||
Timer uiTimer = new Timer();
|
||||
|
||||
public event Action<ClientSave> LoginComplete;
|
||||
|
||||
private void GUILogin_Load(object sender, EventArgs e)
|
||||
{
|
||||
uiTimer.Start();
|
||||
ControlManager.SetupControl(lblogintitle);
|
||||
ControlManager.SetupControls(pnlloginform);
|
||||
ControlManager.SetupControl(btnshutdown);
|
||||
pnlloginform.CenterParent();
|
||||
txtusername.CenterParent();
|
||||
txtusername.Location = new System.Drawing.Point(txtusername.Location.X, 77);
|
||||
txtpassword.CenterParent();
|
||||
btnlogin.CenterParent();
|
||||
btnlogin.Location = new System.Drawing.Point(btnlogin.Location.X, 143);
|
||||
this.BackColor = SkinEngine.LoadedSkin.LoginScreenColor;
|
||||
this.BackgroundImage = SkinEngine.GetImage("login");
|
||||
this.BackgroundImageLayout = SkinEngine.GetImageLayout("login");
|
||||
}
|
||||
|
||||
private ClientSave User = null;
|
||||
|
||||
bool userRequestClose = true;
|
||||
bool shuttingdown = false;
|
||||
|
||||
private void GUILogin_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = userRequestClose;
|
||||
if (!e.Cancel)
|
||||
{
|
||||
uiTimer.Stop();
|
||||
if (shuttingdown == false)
|
||||
{
|
||||
LoginComplete?.Invoke(User);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnlogin_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(txtusername.Text))
|
||||
{
|
||||
Infobox.Show("Enter a username", "You must enter your username to login.");
|
||||
return;
|
||||
}
|
||||
|
||||
//Don't check for blank passwords.
|
||||
|
||||
var user = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == txtusername.Text);
|
||||
if(user == null)
|
||||
{
|
||||
Infobox.Show("Invalid username", "That username was not found on your system.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.Password != txtpassword.Text)
|
||||
{
|
||||
Infobox.Show("Access denied.", "That password didn't work. Please try a different one.");
|
||||
return;
|
||||
}
|
||||
|
||||
User = user;
|
||||
userRequestClose = false;
|
||||
shuttingdown = false;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void btnshutdown_Click(object sender, EventArgs e)
|
||||
{
|
||||
userRequestClose = false;
|
||||
shuttingdown = true;
|
||||
this.Close();
|
||||
SaveSystem.CurrentUser = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == "root");
|
||||
TerminalBackend.InvokeCommand("sos.shutdown");
|
||||
}
|
||||
}
|
||||
|
||||
public class GUILoginFrontend : ILoginFrontend
|
||||
{
|
||||
public bool UseGUILogin
|
||||
{
|
||||
get
|
||||
{
|
||||
return Shiftorium.UpgradeInstalled("gui_based_login_screen");
|
||||
}
|
||||
}
|
||||
|
||||
public event Action<ClientSave> LoginComplete;
|
||||
|
||||
public void Login()
|
||||
{
|
||||
var lform = new GUILogin();
|
||||
lform.LoginComplete += (user) =>
|
||||
{
|
||||
LoginComplete?.Invoke(user);
|
||||
};
|
||||
lform.Show();
|
||||
}
|
||||
}
|
||||
}
|
120
ShiftOS.WinForms/GUILogin.resx
Normal file
120
ShiftOS.WinForms/GUILogin.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -312,11 +312,15 @@ You must join the digital society, rise up the ranks, and save us.
|
|||
sve.Codepoints = 0;
|
||||
sve.Upgrades = new Dictionary<string, bool>();
|
||||
sve.ID = Guid.NewGuid();
|
||||
sve.StoriesExperienced = new List<string>();
|
||||
sve.StoriesExperienced.Add("mud_fundamentals");
|
||||
Infobox.Show("Welcome to ShiftOS.", "Welcome to ShiftOS, " + client.GetDisplayName() + ". We have created a save file for you. Now, go on and Shift It Your Way.", () =>
|
||||
{
|
||||
sve.StoryPosition = 8675309;
|
||||
SaveSystem.CurrentSave = sve;
|
||||
Shiftorium.Silent = true;
|
||||
SaveSystem.SaveGame();
|
||||
Shiftorium.Silent = false;
|
||||
|
||||
});
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ namespace ShiftOS.WinForms
|
|||
Console.Write(" ");
|
||||
ConsoleEx.BackgroundColor = ConsoleColor.Black;
|
||||
}
|
||||
Engine.AudioManager.PlayStream(Properties.Resources.typesound);
|
||||
Desktop.InvokeOnWorkerThread(() => Engine.AudioManager.PlayStream(Properties.Resources.typesound));
|
||||
formatProgress++;
|
||||
Thread.Sleep(175);
|
||||
}
|
||||
|
@ -135,15 +135,15 @@ namespace ShiftOS.WinForms
|
|||
{
|
||||
Console.WriteLine("Creating: " + dir);
|
||||
Thread.Sleep(125);
|
||||
Engine.AudioManager.PlayStream(Properties.Resources.writesound);
|
||||
Desktop.InvokeOnWorkerThread(() => Engine.AudioManager.PlayStream(Properties.Resources.writesound));
|
||||
}
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Next, let's get user information.");
|
||||
Console.WriteLine();
|
||||
ShiftOS.Engine.OutOfBoxExperience.PromptForLogin();
|
||||
|
||||
}
|
||||
|
||||
private static bool isValid(string text, string chars)
|
||||
{
|
||||
foreach(var c in text)
|
||||
|
|
|
@ -49,6 +49,7 @@ namespace ShiftOS.WinForms
|
|||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
//if ANYONE puts code before those two winforms config lines they will be declared a drunky. - Michael
|
||||
LoginManager.Init(new GUILoginFrontend());
|
||||
CrashHandler.SetGameMetadata(Assembly.GetExecutingAssembly());
|
||||
SkinEngine.SetIconProber(new ShiftOSIconProvider());
|
||||
ShiftOS.Engine.AudioManager.Init(new ShiftOSAudioProvider());
|
||||
|
|
|
@ -7,6 +7,13 @@
|
|||
Dependencies: "desktop",
|
||||
Category: "Enhancements",
|
||||
},
|
||||
{
|
||||
Name: "GUI Based Login Screen",
|
||||
Cost: 500,
|
||||
Description: "Tired of using the text-based login screen in ShiftOS? Well, we have a functioning window manager, and a functioning desktop, why not use these tools to create a functioning and awesome-looking login screen?",
|
||||
Dependencies: "skinning;desktop;wm_free_placement",
|
||||
Category: "Kernel & System"
|
||||
},
|
||||
{
|
||||
Name: "Shift Screensavers",
|
||||
Cost: 100,
|
||||
|
|
|
@ -70,9 +70,7 @@
|
|||
<Compile Include="Applications\About.Designer.cs">
|
||||
<DependentUpon>About.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Applications\TriWrite.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Applications\TriWrite.cs" />
|
||||
<Compile Include="Applications\TriWrite.Designer.cs">
|
||||
<DependentUpon>TriWrite.cs</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -178,9 +176,7 @@
|
|||
<Compile Include="Applications\Notifications.Designer.cs">
|
||||
<DependentUpon>Notifications.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Applications\Pong.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Applications\Pong.cs" />
|
||||
<Compile Include="Applications\Pong.Designer.cs">
|
||||
<DependentUpon>Pong.cs</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -202,9 +198,7 @@
|
|||
<Compile Include="Applications\Shiftnet.Designer.cs">
|
||||
<DependentUpon>Shiftnet.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Applications\ShiftoriumFrontend.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Applications\ShiftoriumFrontend.cs" />
|
||||
<Compile Include="Applications\ShiftoriumFrontend.Designer.cs">
|
||||
<DependentUpon>ShiftoriumFrontend.cs</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -226,9 +220,7 @@
|
|||
<Compile Include="Applications\ShopItemCreator.Designer.cs">
|
||||
<DependentUpon>ShopItemCreator.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Applications\Skin Loader.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Applications\Skin Loader.cs" />
|
||||
<Compile Include="Applications\Skin Loader.Designer.cs">
|
||||
<DependentUpon>Skin Loader.cs</DependentUpon>
|
||||
</Compile>
|
||||
|
@ -298,6 +290,12 @@
|
|||
<Compile Include="DesktopWidgets\CodepointsWidget.Designer.cs">
|
||||
<DependentUpon>CodepointsWidget.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DesktopWidgets\HeartbeatWidget.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DesktopWidgets\HeartbeatWidget.Designer.cs">
|
||||
<DependentUpon>HeartbeatWidget.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DesktopWidgets\TerminalWidget.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
|
@ -317,6 +315,12 @@
|
|||
<DependentUpon>DownloadControl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUIFunctions.cs" />
|
||||
<Compile Include="GUILogin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUILogin.Designer.cs">
|
||||
<DependentUpon>GUILogin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HackerCommands.cs" />
|
||||
<Compile Include="IDesktopWidget.cs" />
|
||||
<Compile Include="JobTasks.cs" />
|
||||
|
@ -502,6 +506,9 @@
|
|||
<EmbeddedResource Include="DesktopWidgets\CodepointsWidget.resx">
|
||||
<DependentUpon>CodepointsWidget.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="DesktopWidgets\HeartbeatWidget.resx">
|
||||
<DependentUpon>HeartbeatWidget.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="DesktopWidgets\TerminalWidget.resx">
|
||||
<DependentUpon>TerminalWidget.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -511,6 +518,9 @@
|
|||
<EmbeddedResource Include="DownloadControl.resx">
|
||||
<DependentUpon>DownloadControl.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUILogin.resx">
|
||||
<DependentUpon>GUILogin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Oobe.resx">
|
||||
<DependentUpon>Oobe.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||
using System.Windows.Forms;
|
||||
using ShiftOS.Engine;
|
||||
using System.Net;
|
||||
using ShiftOS.Objects;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
{
|
||||
|
@ -59,7 +60,7 @@ namespace ShiftOS.WinForms
|
|||
|
||||
try
|
||||
{
|
||||
var webrequest = HttpWebRequest.Create("http://getshiftos.ml/Auth/Login?appname=ShiftOS&appdesc=ShiftOS+client&version=1_0_beta_2_4");
|
||||
var webrequest = HttpWebRequest.Create(UserConfig.Get().UniteUrl + "/Auth/Login?appname=ShiftOS&appdesc=ShiftOS+client&version=1_0_beta_2_4");
|
||||
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{u}:{p}"));
|
||||
webrequest.Headers.Add("Authentication: Basic " + base64);
|
||||
var response = webrequest.GetResponse();
|
||||
|
|
|
@ -10,6 +10,7 @@ using System.Windows.Forms;
|
|||
using ShiftOS.Engine;
|
||||
using Newtonsoft.Json;
|
||||
using System.Net;
|
||||
using ShiftOS.Objects;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
{
|
||||
|
@ -99,7 +100,7 @@ namespace ShiftOS.WinForms
|
|||
|
||||
try
|
||||
{
|
||||
var webrequest = HttpWebRequest.Create("http://getshiftos.ml/Auth/Register?appname=ShiftOS&appdesc=ShiftOS+client&version=1_0_beta_2_4&displayname=" + txtdisplay.Text + "&sysname=" + txtsysname.Text);
|
||||
var webrequest = HttpWebRequest.Create(UserConfig.Get().UniteUrl + "/Auth/Register?appname=ShiftOS&appdesc=ShiftOS+client&version=1_0_beta_2_4&displayname=" + txtdisplay.Text + "&sysname=" + txtsysname.Text);
|
||||
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{u}:{p}"));
|
||||
webrequest.Headers.Add("Authentication: Basic " + base64);
|
||||
var response = webrequest.GetResponse();
|
||||
|
|
|
@ -515,6 +515,17 @@ namespace ShiftOS.WinForms
|
|||
if(resizing == true)
|
||||
{
|
||||
this.Width += e.X;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -522,6 +533,17 @@ namespace ShiftOS.WinForms
|
|||
{
|
||||
resizing = false;
|
||||
pnlcontents.Show();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
private void pnlleft_MouseMove(object sender, MouseEventArgs e)
|
||||
|
@ -530,6 +552,17 @@ namespace ShiftOS.WinForms
|
|||
{
|
||||
this.Left += e.X;
|
||||
this.Width -= e.X;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -547,6 +580,17 @@ namespace ShiftOS.WinForms
|
|||
{
|
||||
this.Width += e.X;
|
||||
this.Height += e.Y;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -557,6 +601,17 @@ namespace ShiftOS.WinForms
|
|||
this.Width -= e.X;
|
||||
this.Height += e.Y;
|
||||
this.Left += e.X;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -276,6 +276,17 @@ namespace ShiftOS.Engine
|
|||
return true;
|
||||
}
|
||||
|
||||
[Command("restart")]
|
||||
public static bool Restart()
|
||||
{
|
||||
SaveSystem.CurrentSave.Upgrades = new Dictionary<string, bool>();
|
||||
SaveSystem.CurrentSave.Codepoints = 0;
|
||||
SaveSystem.CurrentSave.StoriesExperienced.Clear();
|
||||
SaveSystem.CurrentSave.StoriesExperienced.Add("mud_fundamentals");
|
||||
SaveSystem.SaveGame();
|
||||
Shiftorium.InvokeUpgradeInstalled();
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("freecp")]
|
||||
public static bool FreeCodepoints(Dictionary<string, object> args)
|
||||
|
@ -283,8 +294,8 @@ namespace ShiftOS.Engine
|
|||
if (args.ContainsKey("amount"))
|
||||
try
|
||||
{
|
||||
Int64 codepointsToAdd = Convert.ToInt64(args["amount"].ToString());
|
||||
SaveSystem.TransferCodepointsFrom("dev", codepointsToAdd);
|
||||
long codepointsToAdd = Convert.ToInt64(args["amount"].ToString());
|
||||
SaveSystem.CurrentSave.Codepoints += codepointsToAdd;
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -293,7 +304,7 @@ namespace ShiftOS.Engine
|
|||
return true;
|
||||
}
|
||||
|
||||
SaveSystem.TransferCodepointsFrom("dev", 1000);
|
||||
SaveSystem.CurrentSave.Codepoints += 1000;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
65
ShiftOS_TheReturn/LoginManager.cs
Normal file
65
ShiftOS_TheReturn/LoginManager.cs
Normal file
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ShiftOS.Objects;
|
||||
|
||||
namespace ShiftOS.Engine
|
||||
{
|
||||
public static class LoginManager
|
||||
{
|
||||
private static ILoginFrontend _login = null;
|
||||
|
||||
public static void Init(ILoginFrontend login)
|
||||
{
|
||||
_login = login;
|
||||
}
|
||||
|
||||
public static void PromptForLogin()
|
||||
{
|
||||
_login.LoginComplete += (user) =>
|
||||
{
|
||||
LoginComplete?.Invoke(user);
|
||||
};
|
||||
_login.Login();
|
||||
}
|
||||
|
||||
public static bool ShouldUseGUILogin
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_login == null)
|
||||
return false;
|
||||
return _login.UseGUILogin;
|
||||
}
|
||||
}
|
||||
|
||||
public static event Action<ClientSave> LoginComplete;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for GUI-based logins.
|
||||
/// </summary>
|
||||
public interface ILoginFrontend
|
||||
{
|
||||
/// <summary>
|
||||
/// When implemented, shows the login UI.
|
||||
/// </summary>
|
||||
void Login();
|
||||
|
||||
/// <summary>
|
||||
/// Gets whether the ShiftOS engine should use a GUI-based login system or the default one.
|
||||
/// </summary>
|
||||
bool UseGUILogin { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when the login is complete.
|
||||
/// </summary>
|
||||
event Action<ClientSave> LoginComplete;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -70,7 +70,7 @@ namespace ShiftOS.Engine
|
|||
{
|
||||
var root = new ShiftOS.Objects.ShiftFS.Directory();
|
||||
root.Name = "System";
|
||||
root.permissions = Permissions.All;
|
||||
root.permissions = UserPermissions.Guest;
|
||||
System.IO.File.WriteAllText(Paths.SaveFile, JsonConvert.SerializeObject(root));
|
||||
}
|
||||
|
||||
|
@ -98,13 +98,25 @@ namespace ShiftOS.Engine
|
|||
}
|
||||
|
||||
Thread.Sleep(350);
|
||||
Console.WriteLine("Initiating kernel...");
|
||||
Console.WriteLine("ShiftKernel v0.4.2");
|
||||
Console.WriteLine("(MIT) DevX 2017, Very Little Rights Reserved");
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine("THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR");
|
||||
Console.WriteLine("IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,");
|
||||
Console.WriteLine("FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE");
|
||||
Console.WriteLine("AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER");
|
||||
Console.WriteLine("LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,");
|
||||
Console.WriteLine("OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE");
|
||||
Console.WriteLine("SOFTWARE.");
|
||||
Console.WriteLine("");
|
||||
Thread.Sleep(250);
|
||||
Console.WriteLine("Reading filesystem...");
|
||||
Console.WriteLine("[init] Kernel boot complete.");
|
||||
Console.WriteLine("[sfs] Loading SFS driver v3");
|
||||
Thread.Sleep(100);
|
||||
Console.WriteLine("Reading configuration...");
|
||||
Console.WriteLine("[sfs] 4096 blocks read.");
|
||||
Console.WriteLine("[simpl-conf] Reading configuration files (global-3.conf)");
|
||||
|
||||
Console.WriteLine("{CONNECTING_TO_MUD}");
|
||||
Console.WriteLine("[inetd] Connecting to network...");
|
||||
|
||||
if (defaultConf.ConnectToMud == true)
|
||||
{
|
||||
|
@ -113,32 +125,32 @@ namespace ShiftOS.Engine
|
|||
{
|
||||
//Connection successful! Stop waiting!
|
||||
guidReceived = true;
|
||||
Console.WriteLine("Connection successful.");
|
||||
Console.WriteLine("[inetd] Connection successful.");
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
ServerManager.Initiate("secondary4162.cloudapp.net", 13370);
|
||||
ServerManager.Initiate(UserConfig.Get().DigitalSocietyAddress, UserConfig.Get().DigitalSocietyPort);
|
||||
//This haults the client until the connection is successful.
|
||||
while (ServerManager.thisGuid == new Guid())
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
Console.WriteLine("GUID received - bootstrapping complete.");
|
||||
Console.WriteLine("[inetd] DHCP GUID recieved, finished setup");
|
||||
FinishBootstrap();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//No errors, this never gets called.
|
||||
Console.WriteLine("{ERROR}: " + ex.Message);
|
||||
Console.WriteLine("[inetd] SEVERE: " + ex.Message);
|
||||
Thread.Sleep(3000);
|
||||
ServerManager.StartLANServer();
|
||||
while (ServerManager.thisGuid == new Guid())
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
Console.WriteLine("GUID received - bootstrapping complete.");
|
||||
Console.WriteLine("[inetd] DHCP GUID recieved, finished setup");
|
||||
FinishBootstrap();
|
||||
}
|
||||
}
|
||||
|
@ -196,14 +208,60 @@ namespace ShiftOS.Engine
|
|||
Thread.Sleep(75);
|
||||
|
||||
Thread.Sleep(50);
|
||||
Console.WriteLine("{SYSTEM_INITIATED}");
|
||||
Console.WriteLine("[usr-man] Accepting logins on local tty 1.");
|
||||
|
||||
Sysname:
|
||||
bool waitingForNewSysName = false;
|
||||
bool gobacktosysname = false;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(CurrentSave.SystemName))
|
||||
{
|
||||
Infobox.PromptText("Enter a system name", "Your system does not have a name. All systems within the digital society must have a name. Please enter one.", (name) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
Infobox.Show("Invalid name", "Please enter a valid name.", () =>
|
||||
{
|
||||
gobacktosysname = true;
|
||||
waitingForNewSysName = false;
|
||||
});
|
||||
else if (name.Length < 5)
|
||||
Infobox.Show("Value too small.", "Your system name must have at least 5 characters in it.", () =>
|
||||
{
|
||||
gobacktosysname = true;
|
||||
waitingForNewSysName = false;
|
||||
});
|
||||
else
|
||||
{
|
||||
CurrentSave.SystemName = name;
|
||||
if (!string.IsNullOrWhiteSpace(CurrentSave.UniteAuthToken))
|
||||
{
|
||||
var unite = new Unite.UniteClient("http://getshiftos.ml", CurrentSave.UniteAuthToken);
|
||||
unite.SetSysName(name);
|
||||
}
|
||||
SaveSystem.SaveGame();
|
||||
gobacktosysname = false;
|
||||
waitingForNewSysName = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
while (waitingForNewSysName)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
|
||||
if (gobacktosysname)
|
||||
{
|
||||
goto Sysname;
|
||||
}
|
||||
|
||||
if (CurrentSave.Users == null)
|
||||
CurrentSave.Users = new List<ClientSave>();
|
||||
|
||||
|
||||
if(CurrentSave.Users.Count == 0)
|
||||
if (CurrentSave.Users.Count == 0)
|
||||
{
|
||||
CurrentSave.Users.Add(new ClientSave
|
||||
{
|
||||
|
@ -211,76 +269,101 @@ namespace ShiftOS.Engine
|
|||
Password = "",
|
||||
Permissions = UserPermissions.Root
|
||||
});
|
||||
Console.WriteLine("No users found. Creating new user with username \"root\", with no password.");
|
||||
Console.WriteLine("[usr-man] WARN: No users found. Creating new user with username \"root\", with no password.");
|
||||
}
|
||||
TerminalBackend.InStory = false;
|
||||
|
||||
TerminalBackend.PrefixEnabled = false;
|
||||
|
||||
Login:
|
||||
string username = "";
|
||||
int progress = 0;
|
||||
bool goback = false;
|
||||
TextSentEventHandler ev = null;
|
||||
ev = (text) =>
|
||||
if (LoginManager.ShouldUseGUILogin)
|
||||
{
|
||||
if (progress == 0)
|
||||
Action<ClientSave> Completed = null;
|
||||
Completed += (user) =>
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
CurrentUser = user;
|
||||
LoginManager.LoginComplete -= Completed;
|
||||
};
|
||||
LoginManager.LoginComplete += Completed;
|
||||
Desktop.InvokeOnWorkerThread(() =>
|
||||
{
|
||||
LoginManager.PromptForLogin();
|
||||
});
|
||||
while (CurrentUser == null)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Login:
|
||||
string username = "";
|
||||
int progress = 0;
|
||||
bool goback = false;
|
||||
TextSentEventHandler ev = null;
|
||||
ev = (text) =>
|
||||
{
|
||||
if (progress == 0)
|
||||
{
|
||||
if (CurrentSave.Users.FirstOrDefault(x => x.Username == text) == null)
|
||||
string loginstr = CurrentSave.SystemName + " login: ";
|
||||
string getuser = text.Remove(0, loginstr.Length);
|
||||
if (!string.IsNullOrWhiteSpace(getuser))
|
||||
{
|
||||
Console.WriteLine("User not found.");
|
||||
if (CurrentSave.Users.FirstOrDefault(x => x.Username == getuser) == null)
|
||||
{
|
||||
Console.WriteLine("User not found.");
|
||||
goback = true;
|
||||
progress++;
|
||||
TerminalBackend.TextSent -= ev;
|
||||
return;
|
||||
}
|
||||
username = getuser;
|
||||
progress++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Username not provided.");
|
||||
TerminalBackend.TextSent -= ev;
|
||||
goback = true;
|
||||
progress++;
|
||||
TerminalBackend.TextSent -= ev;
|
||||
return;
|
||||
}
|
||||
username = text;
|
||||
progress++;
|
||||
}
|
||||
else
|
||||
else if (progress == 1)
|
||||
{
|
||||
Console.WriteLine("Username not provided.");
|
||||
string passwordstr = "password: ";
|
||||
string getpass = text.Remove(0, passwordstr.Length);
|
||||
var user = CurrentSave.Users.FirstOrDefault(x => x.Username == username);
|
||||
if (user.Password == getpass)
|
||||
{
|
||||
Console.WriteLine("Welcome to ShiftOS.");
|
||||
CurrentUser = user;
|
||||
Thread.Sleep(2000);
|
||||
progress++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Access denied.");
|
||||
goback = true;
|
||||
progress++;
|
||||
}
|
||||
TerminalBackend.TextSent -= ev;
|
||||
goback = true;
|
||||
progress++;
|
||||
}
|
||||
}
|
||||
else if (progress == 1)
|
||||
};
|
||||
TerminalBackend.TextSent += ev;
|
||||
|
||||
Console.Write(CurrentSave.SystemName + " login: ");
|
||||
while (progress == 0)
|
||||
{
|
||||
var user = CurrentSave.Users.FirstOrDefault(x => x.Username == username);
|
||||
if (user.Password == text)
|
||||
{
|
||||
Console.WriteLine("Welcome to ShiftOS.");
|
||||
CurrentUser = user;
|
||||
Thread.Sleep(2000);
|
||||
progress++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Access denied.");
|
||||
goback = true;
|
||||
progress++;
|
||||
}
|
||||
TerminalBackend.TextSent -= ev;
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
};
|
||||
TerminalBackend.TextSent += ev;
|
||||
Console.WriteLine(CurrentSave.SystemName + " login:");
|
||||
while(progress == 0)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
if (goback)
|
||||
goto Login;
|
||||
Console.Write("password: ");
|
||||
while (progress == 1)
|
||||
Thread.Sleep(10);
|
||||
if (goback)
|
||||
goto Login;
|
||||
}
|
||||
if (goback)
|
||||
goto Login;
|
||||
Console.WriteLine("password:");
|
||||
while (progress == 1)
|
||||
Thread.Sleep(10);
|
||||
if (goback)
|
||||
goto Login;
|
||||
|
||||
|
||||
TerminalBackend.PrefixEnabled = true;
|
||||
Shiftorium.LogOrphanedUpgrades = true;
|
||||
Desktop.InvokeOnWorkerThread(new Action(() =>
|
||||
|
|
|
@ -35,6 +35,7 @@ using ShiftOS;
|
|||
using static ShiftOS.Engine.SaveSystem;
|
||||
using Newtonsoft.Json;
|
||||
using System.Net.Sockets;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ShiftOS.Engine
|
||||
{
|
||||
|
@ -54,6 +55,12 @@ namespace ShiftOS.Engine
|
|||
private static NetObjectClient client { get; set; }
|
||||
private static bool UserDisconnect = false;
|
||||
|
||||
public static long DigitalSocietyPing
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public static void Disconnect()
|
||||
{
|
||||
UserDisconnect = true;
|
||||
|
@ -139,6 +146,11 @@ namespace ShiftOS.Engine
|
|||
};
|
||||
client.OnReceived += (o, a) =>
|
||||
{
|
||||
if (PingTimer.IsRunning)
|
||||
{
|
||||
DigitalSocietyPing = PingTimer.ElapsedMilliseconds;
|
||||
PingTimer.Reset();
|
||||
}
|
||||
var msg = a.Data.Object as ServerMessage;
|
||||
if (msg.Name == "Welcome")
|
||||
{
|
||||
|
@ -207,6 +219,8 @@ namespace ShiftOS.Engine
|
|||
}
|
||||
}
|
||||
|
||||
private static Stopwatch PingTimer = new Stopwatch();
|
||||
|
||||
public static void SendMessage(string name, string contents)
|
||||
{
|
||||
var sMsg = new ServerMessage
|
||||
|
@ -215,7 +229,7 @@ namespace ShiftOS.Engine
|
|||
Contents = contents,
|
||||
GUID = thisGuid.ToString(),
|
||||
};
|
||||
|
||||
PingTimer.Start();
|
||||
client.Send(new NetObject("msg", sMsg));
|
||||
|
||||
}
|
||||
|
|
|
@ -111,6 +111,7 @@
|
|||
<Compile Include="IShiftOSWindow.cs" />
|
||||
<Compile Include="KernelWatchdog.cs" />
|
||||
<Compile Include="Localization.cs" />
|
||||
<Compile Include="LoginManager.cs" />
|
||||
<Compile Include="NotificationDaemon.cs" />
|
||||
<Compile Include="OutOfBoxExperience.cs" />
|
||||
<Compile Include="Paths.cs" />
|
||||
|
|
|
@ -267,6 +267,22 @@ namespace ShiftOS.Engine
|
|||
[ShifterHidden]
|
||||
public Dictionary<string, byte[]> AppIcons = new Dictionary<string, byte[]>();
|
||||
|
||||
[ShifterMeta("System")]
|
||||
[ShifterCategory("Login Screen")]
|
||||
[RequiresUpgrade("gui_based_login_screen")]
|
||||
[ShifterName("Login Screen Background Color")]
|
||||
[ShifterDescription("Change the background color of the login screen.")]
|
||||
public Color LoginScreenColor = Skin.DesktopBG;
|
||||
|
||||
[ShifterMeta("System")]
|
||||
[ShifterCategory("Login Screen")]
|
||||
[RequiresUpgrade("skinning;gui_based_login_screen")]
|
||||
[ShifterName("Login Screen Background Image")]
|
||||
[ShifterDescription("Set an image as your login screen!")]
|
||||
[Image("login")]
|
||||
public byte[] LoginScreenBG = null;
|
||||
|
||||
|
||||
[RequiresUpgrade("shift_screensaver")]
|
||||
[ShifterMeta("System")]
|
||||
[ShifterCategory("Screen saver")]
|
||||
|
|
|
@ -5,13 +5,20 @@ using System.Net;
|
|||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using ShiftOS.Objects;
|
||||
|
||||
namespace ShiftOS.Unite
|
||||
{
|
||||
public class UniteClient
|
||||
{
|
||||
public string Token { get; private set; }
|
||||
public string BaseURL { get; private set; }
|
||||
public string BaseURL
|
||||
{
|
||||
get
|
||||
{
|
||||
return UserConfig.Get().UniteUrl;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetDisplayNameId(string id)
|
||||
{
|
||||
|
@ -25,7 +32,8 @@ namespace ShiftOS.Unite
|
|||
|
||||
public UniteClient(string baseurl, string usertoken)
|
||||
{
|
||||
BaseURL = baseurl;
|
||||
//Handled by the servers.json file
|
||||
//BaseURL = baseurl;
|
||||
Token = usertoken;
|
||||
}
|
||||
|
||||
|
|
|
@ -47,6 +47,11 @@ namespace ShiftOS.Engine
|
|||
}
|
||||
|
||||
var user = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == name);
|
||||
if(user.Username != SaveSystem.CurrentUser.Username)
|
||||
{
|
||||
Console.WriteLine("Error: Cannot remove yourself.");
|
||||
return true;
|
||||
}
|
||||
SaveSystem.CurrentSave.Users.Remove(user);
|
||||
Console.WriteLine($"Removing user \"{name}\" from system...");
|
||||
SaveSystem.SaveGame();
|
||||
|
@ -55,13 +60,121 @@ namespace ShiftOS.Engine
|
|||
|
||||
|
||||
|
||||
|
||||
[Command("set_acl")]
|
||||
[RequiresArgument("user")]
|
||||
[RequiresArgument("val")]
|
||||
public static bool SetUserPermission(Dictionary<string, object> args)
|
||||
{
|
||||
int permission = 0;
|
||||
string username = args["user"].ToString();
|
||||
try
|
||||
{
|
||||
permission = Convert.ToInt32(args["val"].ToString());
|
||||
}
|
||||
catch
|
||||
{
|
||||
Console.WriteLine("Error: Permission value must be an integer.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if(SaveSystem.CurrentSave.Users.FirstOrDefault(x=>x.Username==username) == null)
|
||||
{
|
||||
Console.WriteLine("Error: User not found.");
|
||||
return true;
|
||||
}
|
||||
|
||||
UserPermissions uperm = UserPermissions.Guest;
|
||||
|
||||
switch (permission)
|
||||
{
|
||||
case 0:
|
||||
uperm = UserPermissions.Guest;
|
||||
break;
|
||||
case 1:
|
||||
uperm = UserPermissions.User;
|
||||
break;
|
||||
case 2:
|
||||
uperm = UserPermissions.Admin;
|
||||
break;
|
||||
case 3:
|
||||
uperm = UserPermissions.Root;
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine("Permission value must be between 0 and 4.");
|
||||
return true;
|
||||
}
|
||||
|
||||
//Permissions are backwards... oops...
|
||||
if(uperm < SaveSystem.CurrentUser.Permissions)
|
||||
{
|
||||
Console.WriteLine("Error: Cannot set user permissions to values greater than your own!");
|
||||
return true;
|
||||
}
|
||||
|
||||
var oldperm = SaveSystem.Users.FirstOrDefault(x => x.Username == username).Permissions;
|
||||
if (SaveSystem.CurrentUser.Permissions > oldperm)
|
||||
{
|
||||
Console.WriteLine("Error: Can't set the permission of this user. They have more rights than you.");
|
||||
return true;
|
||||
}
|
||||
|
||||
SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == username).Permissions = uperm;
|
||||
Console.WriteLine("User permissions updated.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
[Command("users", description = "Get a list of all users on the system.")]
|
||||
public static bool GetUsers()
|
||||
{
|
||||
foreach (var u in SaveSystem.CurrentSave.Users)
|
||||
{
|
||||
if (u.Username == SaveSystem.CurrentUser.Username)
|
||||
{
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.Magenta;
|
||||
ConsoleEx.Bold = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.Gray;
|
||||
ConsoleEx.Bold = false;
|
||||
}
|
||||
Console.WriteLine(u.Username);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[Namespace("user")]
|
||||
[RequiresUpgrade("mud_fundamentals")]
|
||||
public static class UserManagementCommands
|
||||
{
|
||||
[Command("login", description = "Log in as another user.")]
|
||||
[RequiresArgument("user")]
|
||||
[RequiresArgument("pass")]
|
||||
public static bool Login(Dictionary<string, object> args)
|
||||
{
|
||||
string user = args["user"].ToString();
|
||||
string pass = args["pass"].ToString();
|
||||
|
||||
var usr = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == user);
|
||||
if(usr==null)
|
||||
{
|
||||
Console.WriteLine("Error: No such user.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (usr.Password != pass)
|
||||
{
|
||||
Console.WriteLine("Access denied.");
|
||||
return true;
|
||||
}
|
||||
|
||||
SaveSystem.CurrentUser = usr;
|
||||
Console.WriteLine("Access granted.");
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("setpass", description ="Allows you to set your password to a new value.", usage ="old:,new:")]
|
||||
[RequiresArgument("old")]
|
||||
|
|
Loading…
Reference in a new issue