aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/MainMenu/MainMenu.cs
diff options
context:
space:
mode:
authorwilliam341 <[email protected]>2017-06-18 16:43:30 -0700
committerGitHub <[email protected]>2017-06-18 16:43:30 -0700
commitba80dcf3f80018cbb041b62ad8a40268427d1311 (patch)
treef0bd18b2355d34c07c744c3cd82a4725a799eecd /ShiftOS.WinForms/MainMenu/MainMenu.cs
parent771c20cfb3a703e0f1550fdcf9eb07b78298c944 (diff)
parent12acff8742f4c64976bfabee1b70dc515190fc7c (diff)
downloadshiftos_thereturn-ba80dcf3f80018cbb041b62ad8a40268427d1311.tar.gz
shiftos_thereturn-ba80dcf3f80018cbb041b62ad8a40268427d1311.tar.bz2
shiftos_thereturn-ba80dcf3f80018cbb041b62ad8a40268427d1311.zip
Merge pull request #2 from shiftos-game/master
wew
Diffstat (limited to 'ShiftOS.WinForms/MainMenu/MainMenu.cs')
-rw-r--r--ShiftOS.WinForms/MainMenu/MainMenu.cs230
1 files changed, 230 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/MainMenu/MainMenu.cs b/ShiftOS.WinForms/MainMenu/MainMenu.cs
new file mode 100644
index 0000000..f6bc833
--- /dev/null
+++ b/ShiftOS.WinForms/MainMenu/MainMenu.cs
@@ -0,0 +1,230 @@
+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 ShiftOS.WinForms.Tools;
+
+namespace ShiftOS.WinForms.MainMenu
+{
+ public partial class MainMenu : Form
+ {
+ private void StartGame()
+ {
+ new Loading().Show();
+ }
+
+ public MainMenu(IDesktop desk)
+ {
+ InitializeComponent();
+ (desk as WinformsDesktop).ParentMenu = this;
+ this.FormBorderStyle = FormBorderStyle.None;
+ this.WindowState = FormWindowState.Maximized;
+#if DEBUG
+ var asm = Assembly.GetExecutingAssembly();
+
+ string asmName = asm.GetName().Name;
+ string vstring = "";
+ var version = asm.GetCustomAttributes(true).FirstOrDefault(x => x is AssemblyVersionAttribute) as AssemblyVersionAttribute;
+ if (version != null)
+ vstring = version.Version;
+ lbbuilddetails.Text = $"{asmName} - version number: {vstring} - THIS IS AN UNSTABLE RELEASE.";
+
+#else
+ lbbuilddetails.Hide();
+#endif
+ }
+
+ public void HideOptions()
+ {
+ pnloptions.Hide();
+ flmenu.BringToFront();
+ flmenu.CenterParent();
+ currentMenu = flmenu;
+ CategoryText = Localization.Parse("{MAINMENU_TITLE}");
+ }
+
+ public string CategoryText
+ {
+ get
+ {
+ return lbcurrentui.Text;
+ }
+ set
+ {
+ lbcurrentui.Text = value;
+ lbcurrentui.CenterParent();
+ lbcurrentui.Top = currentMenu.Top - (lbcurrentui.Height * 2);
+ }
+ }
+
+ private Control currentMenu = null;
+
+ private void MainMenu_Load(object sender, EventArgs e)
+ {
+ Tools.ControlManager.SetupControls(this);
+ shiftos.CenterParent();
+ shiftos.Top = 35;
+
+
+ var tickermove = new Timer();
+ var tickerreset = new Timer();
+ tickermove.Tick += (o, a) =>
+ {
+ if (lbticker.Left <= (0 - lbticker.Width))
+ {
+ tickermove.Stop();
+ tickerreset.Start();
+ }
+ else
+ {
+ lbticker.Top = (this.ClientSize.Height - (lbticker.Height * 2));
+ lbticker.Left -= 2;
+ }
+ };
+ tickerreset.Tick += (o, a) =>
+ {
+ lbticker.Visible = false;
+ lbticker.Text = GetTickerMessage();
+ lbticker.Left = this.Width;
+ lbticker.Visible = true;
+ tickerreset.Stop();
+ tickermove.Start();
+ };
+
+ tickermove.Interval = 1;
+ tickerreset.Interval = 1000;
+
+ pnloptions.Hide();
+ flcampaign.Hide();
+ flmenu.CenterParent();
+
+ tickerreset.Start();
+
+ currentMenu = flmenu;
+ CategoryText = Localization.Parse("{MAINMENU_TITLE}");
+
+ }
+
+ private Random rnd = new Random();
+
+ private string GetTickerMessage()
+ {
+ return Localization.Parse("{MAINMENU_TIPTEXT_" + rnd.Next(10) + "}");
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ if(System.IO.File.Exists(System.IO.Path.Combine(Paths.SaveDirectory, "autosave.save")))
+ {
+ btncontinue.Show();
+ }
+ else
+ {
+ btncontinue.Hide();
+ }
+ flmenu.Hide();
+ flcampaign.Show();
+ flcampaign.BringToFront();
+ flcampaign.CenterParent();
+ currentMenu = flcampaign;
+ CategoryText = Localization.Parse("{MAINMENU_CAMPAIGN}");
+
+ }
+
+ private void button5_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ (Desktop.CurrentDesktop as WinformsDesktop).IsSandbox = true;
+ StartGame();
+ }
+
+ private void button3_Click(object sender, EventArgs e)
+ {
+ var conf = ShiftOS.Objects.UserConfig.Get();
+
+ txtdsaddress.Text = conf.DigitalSocietyAddress;
+ txtdsport.Text = conf.DigitalSocietyPort.ToString();
+
+
+ pnloptions.Show();
+ pnloptions.BringToFront();
+ pnloptions.CenterParent();
+ currentMenu = pnloptions;
+ CategoryText = Localization.Parse("{GEN_SETTINGS}");
+
+ }
+
+ private void opt_btncancel_Click(object sender, EventArgs e)
+ {
+ HideOptions();
+ }
+
+ private void btnsave_Click(object sender, EventArgs e)
+ {
+ var conf = ShiftOS.Objects.UserConfig.Get();
+
+ conf.DigitalSocietyAddress = txtdsaddress.Text;
+
+ int p = 0;
+
+ if(int.TryParse(txtdsport.Text, out p) == false || p < 0 || p > 65535)
+ {
+ Infobox.Show("{TITLE_INVALIDPORT}", "{PROMPT_INVALIDPORT}");
+ return;
+ }
+
+ conf.DigitalSocietyPort = p;
+
+ System.IO.File.WriteAllText("servers.json", Newtonsoft.Json.JsonConvert.SerializeObject(conf, Newtonsoft.Json.Formatting.Indented));
+
+ HideOptions();
+ }
+
+ private void button10_Click(object sender, EventArgs e)
+ {
+ flcampaign.Hide();
+ flmenu.Show();
+ flmenu.BringToFront();
+ flmenu.CenterParent();
+ currentMenu = flmenu;
+ CategoryText = Localization.Parse("{MAINMENU_TITLE}");
+ }
+
+ private void btncontinue_Click(object sender, EventArgs e)
+ {
+ StartGame();
+
+ }
+
+ private void btnnewgame_Click(object sender, EventArgs e)
+ {
+ string path = System.IO.Path.Combine(Paths.SaveDirectory, "autosave.save");
+ if (System.IO.File.Exists(path))
+ {
+ Infobox.PromptYesNo("Campaign", "You are about to start a new game, which will erase any previous progress. Are you sure you want to do this?", (result) =>
+ {
+ if (result == true)
+ {
+ System.IO.File.Delete(path);
+ StartGame();
+ }
+ });
+ }
+ else
+ {
+ StartGame();
+ }
+ }
+ }
+}