make dodge exist again

kbd input doesn't work at all, the collision detection sucks, and
if you maximise the window the game instantly becomes easy, but
it's a start.
This commit is contained in:
RogueAI42 2017-06-29 21:18:34 +10:00
parent 78b957eae9
commit 027788fa85
4 changed files with 671 additions and 0 deletions

View file

@ -0,0 +1,230 @@
namespace ShiftOS.WinForms.Applications
{
partial class Dodge
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Dodge));
this.pgcontents = new System.Windows.Forms.Panel();
this.player = new System.Windows.Forms.PictureBox();
this.QuitButton = new System.Windows.Forms.PictureBox();
this.BeginButton = new System.Windows.Forms.PictureBox();
this.DescriptionLabel = new System.Windows.Forms.Label();
this.object_small2 = new System.Windows.Forms.PictureBox();
this.object_mid2 = new System.Windows.Forms.PictureBox();
this.object_large = new System.Windows.Forms.PictureBox();
this.object_small = new System.Windows.Forms.PictureBox();
this.object_mid = new System.Windows.Forms.PictureBox();
this.scorelabel = new System.Windows.Forms.Label();
this.PicBonus = new System.Windows.Forms.PictureBox();
this.clock = new System.Windows.Forms.Timer(this.components);
this.pgcontents.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.player)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.QuitButton)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.BeginButton)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.object_small2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.object_mid2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.object_large)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.object_small)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.object_mid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PicBonus)).BeginInit();
this.SuspendLayout();
//
// pgcontents
//
this.pgcontents.BackColor = System.Drawing.Color.White;
this.pgcontents.Controls.Add(this.player);
this.pgcontents.Controls.Add(this.QuitButton);
this.pgcontents.Controls.Add(this.BeginButton);
this.pgcontents.Controls.Add(this.DescriptionLabel);
this.pgcontents.Controls.Add(this.object_small2);
this.pgcontents.Controls.Add(this.object_mid2);
this.pgcontents.Controls.Add(this.object_large);
this.pgcontents.Controls.Add(this.object_small);
this.pgcontents.Controls.Add(this.object_mid);
this.pgcontents.Controls.Add(this.scorelabel);
this.pgcontents.Controls.Add(this.PicBonus);
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(597, 567);
this.pgcontents.TabIndex = 21;
this.pgcontents.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pgcontents_MouseMove);
//
// player
//
this.player.BackColor = System.Drawing.Color.Transparent;
this.player.Image = ((System.Drawing.Image)(resources.GetObject("player.Image")));
this.player.Location = new System.Drawing.Point(192, 445);
this.player.Name = "player";
this.player.Size = new System.Drawing.Size(32, 32);
this.player.TabIndex = 18;
this.player.TabStop = false;
//
// QuitButton
//
this.QuitButton.Image = ((System.Drawing.Image)(resources.GetObject("QuitButton.Image")));
this.QuitButton.Location = new System.Drawing.Point(216, 424);
this.QuitButton.Name = "QuitButton";
this.QuitButton.Size = new System.Drawing.Size(200, 50);
this.QuitButton.TabIndex = 12;
this.QuitButton.TabStop = false;
this.QuitButton.Click += new System.EventHandler(this.QuitButton_Click);
//
// BeginButton
//
this.BeginButton.Image = ((System.Drawing.Image)(resources.GetObject("BeginButton.Image")));
this.BeginButton.Location = new System.Drawing.Point(3, 424);
this.BeginButton.Name = "BeginButton";
this.BeginButton.Size = new System.Drawing.Size(200, 50);
this.BeginButton.TabIndex = 11;
this.BeginButton.TabStop = false;
this.BeginButton.Click += new System.EventHandler(this.BeginButton_Click);
//
// DescriptionLabel
//
this.DescriptionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DescriptionLabel.Location = new System.Drawing.Point(3, 3);
this.DescriptionLabel.Name = "DescriptionLabel";
this.DescriptionLabel.Size = new System.Drawing.Size(413, 409);
this.DescriptionLabel.TabIndex = 10;
this.DescriptionLabel.Text = "Placeholder";
//
// object_small2
//
this.object_small2.Image = ((System.Drawing.Image)(resources.GetObject("object_small2.Image")));
this.object_small2.Location = new System.Drawing.Point(75, 43);
this.object_small2.Name = "object_small2";
this.object_small2.Size = new System.Drawing.Size(75, 20);
this.object_small2.TabIndex = 17;
this.object_small2.TabStop = false;
//
// object_mid2
//
this.object_mid2.Image = ((System.Drawing.Image)(resources.GetObject("object_mid2.Image")));
this.object_mid2.Location = new System.Drawing.Point(279, 134);
this.object_mid2.Name = "object_mid2";
this.object_mid2.Size = new System.Drawing.Size(125, 20);
this.object_mid2.TabIndex = 16;
this.object_mid2.TabStop = false;
//
// object_large
//
this.object_large.Image = ((System.Drawing.Image)(resources.GetObject("object_large.Image")));
this.object_large.Location = new System.Drawing.Point(49, 208);
this.object_large.Name = "object_large";
this.object_large.Size = new System.Drawing.Size(175, 20);
this.object_large.TabIndex = 15;
this.object_large.TabStop = false;
//
// object_small
//
this.object_small.Image = ((System.Drawing.Image)(resources.GetObject("object_small.Image")));
this.object_small.Location = new System.Drawing.Point(290, 294);
this.object_small.Name = "object_small";
this.object_small.Size = new System.Drawing.Size(75, 20);
this.object_small.TabIndex = 13;
this.object_small.TabStop = false;
//
// object_mid
//
this.object_mid.Image = ((System.Drawing.Image)(resources.GetObject("object_mid.Image")));
this.object_mid.Location = new System.Drawing.Point(58, 371);
this.object_mid.Name = "object_mid";
this.object_mid.Size = new System.Drawing.Size(125, 20);
this.object_mid.TabIndex = 14;
this.object_mid.TabStop = false;
//
// scorelabel
//
this.scorelabel.AutoSize = true;
this.scorelabel.BackColor = System.Drawing.Color.Transparent;
this.scorelabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.scorelabel.Location = new System.Drawing.Point(3, 4);
this.scorelabel.Name = "scorelabel";
this.scorelabel.Size = new System.Drawing.Size(51, 55);
this.scorelabel.TabIndex = 19;
this.scorelabel.Text = "0";
//
// PicBonus
//
this.PicBonus.Image = ((System.Drawing.Image)(resources.GetObject("PicBonus.Image")));
this.PicBonus.Location = new System.Drawing.Point(187, 84);
this.PicBonus.Name = "PicBonus";
this.PicBonus.Size = new System.Drawing.Size(16, 11);
this.PicBonus.TabIndex = 20;
this.PicBonus.TabStop = false;
this.PicBonus.Visible = false;
//
// clock
//
this.clock.Interval = 20;
this.clock.Tick += new System.EventHandler(this.clock_Tick);
//
// Dodge
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pgcontents);
this.Name = "Dodge";
this.Size = new System.Drawing.Size(597, 567);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Dodge_KeyDown);
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Dodge_KeyUp);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Dodge_MouseMove);
this.pgcontents.ResumeLayout(false);
this.pgcontents.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.player)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.QuitButton)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.BeginButton)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.object_small2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.object_mid2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.object_large)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.object_small)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.object_mid)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PicBonus)).EndInit();
this.ResumeLayout(false);
}
#endregion
internal System.Windows.Forms.Panel pgcontents;
internal System.Windows.Forms.PictureBox player;
internal System.Windows.Forms.PictureBox QuitButton;
internal System.Windows.Forms.PictureBox BeginButton;
internal System.Windows.Forms.Label DescriptionLabel;
internal System.Windows.Forms.PictureBox object_small2;
internal System.Windows.Forms.PictureBox object_mid2;
internal System.Windows.Forms.PictureBox object_large;
internal System.Windows.Forms.PictureBox object_small;
internal System.Windows.Forms.PictureBox object_mid;
internal System.Windows.Forms.Label scorelabel;
internal System.Windows.Forms.PictureBox PicBonus;
internal System.Windows.Forms.Timer clock;
}
}

View file

@ -0,0 +1,224 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
using Microsoft.VisualBasic;
namespace ShiftOS.WinForms.Applications
{
[AppscapeEntry("dodge", "Dodge", "Dodge falling objects and stay alive as long as you can. Play this fun and exciting game while earning code points!", 500, 1590, "", "Games")]
[WinOpen("dodge")]
[Launcher("Dodge", false, "", "Games")]
public partial class Dodge : UserControl, IShiftOSWindow
{
decimal speed; //the speed the game runs at
int score; //the score/code points the player gets
bool usingkeys = false; //user can use mouse or keyboard, mouse by default, chnages to true if key pressed
decimal time = 0; //Records the time spent playing, used for codepoints formula
int bonusesfound; //Number or bonus play collects
int keyboardinput = 0; //for smooth keyboard gameplay, 1=left, 2=right, 0=none
Point LocalMousePosition = new Point(0, 0); // the position of the mouse relative to our control
public Dodge()
{
InitializeComponent();
}
public void OnSkinLoad()
{
}
public bool OnUnload()
{
return true;
}
public void OnUpgrade()
{
}
private void QuitButton_Click(object sender, EventArgs e)
{
AppearanceManager.Close(this); //quits the game (In case user donsn't have close button)
}
private void Dodge_KeyUp(object sender, KeyEventArgs e)
{
keyboardinput = 0;
}
public void OnLoad()
{
player.Visible = false; // hide player and score until game starts
scorelabel.Visible = false;
DescriptionLabel.Text = "Welcome to Dodge. Dodge is a simple arcade game with one objective: survive the falling objects! Use the arrow or mouse to move the player and avoid as many objects as you can. The longer you survive, the more code point you will be rewarded with. Beware, it gets harder..."; // set the description text
//to impliment skinning, simply set the picturebox to the new skinned image.
//For example:
//player.Image = Image.FromFile("PATH TO SKINNED IMAGE");
}
private void BeginButton_Click(object sender, EventArgs e)
{
//Hide buttons
BeginButton.Visible = false;
QuitButton.Visible = false;
DescriptionLabel.Visible = false;
player.Visible = true; // show the player
speed = 2; // controls speed of game, will increase as game progresses
scorelabel.Visible = true; // show score label
bonusesfound = 0;
//Make sure all objects are in the correct position
object_small.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), 300);
object_small2.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), 49);
object_mid.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), 377);
object_mid2.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), 140);
object_large.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), 214);
PicBonus.Location = new Point(((int)Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
//Reset time
time = 0;
usingkeys = false;
System.Threading.Thread.Sleep(100); // slight delay before game starts (in milliseconds)
main(); // start the main game function
//sig() //infobox sigs -COMMENT THIS OUT
}
private void Dodge_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Right: // detect right key press
usingkeys = true; // turn off mouse control
keyboardinput = 2;
break;
case Keys.Left:
usingkeys = true;
keyboardinput = 1;
break;
}
}
private void main()
{
clock.Start(); //the timer restart this sub every tick, making an endless loop between them.
//score system
scorelabel.Text = score.ToString();
score = (int)((speed / 10) + (time / 20) + bonusesfound);
//Speed increase
speed = speed + (speed * (decimal)0.001);
//increase time
time = time + (decimal)0.05; //loops every 0.05 seconds so time increases by 1 every second (have I done the maths correctly?)
//Make objects fall
object_large.Location = new Point(object_large.Location.X, (int)(object_large.Location.Y + speed));
object_mid.Location = new Point(object_mid.Location.X, (int)(object_mid.Location.Y + speed));
object_mid2.Location = new Point(object_mid2.Location.X, (int)(object_mid2.Location.Y + speed));
object_small.Location = new Point(object_small.Location.X, (int)(object_small.Location.Y + speed));
object_small2.Location = new Point(object_small2.Location.X, (int)(object_small2.Location.Y + speed));
//mouse controls
if (!usingkeys) // tests if mouse control is enabled
{
player.Left = LocalMousePosition.X - (player.Width / 2) - 5; //sets the x location to that of the mouse
}
//keyboard controls
if (usingkeys)
{
if (keyboardinput == 1)
player.Location = new Point((int)(player.Location.X - (speed * 4)), player.Location.Y);
if (keyboardinput == 2)
player.Location = new Point((int)(player.Location.X + (speed * 4)), player.Location.Y); // move right
}
//move object back to the top of the screen
if (object_small.Location.Y > 522)
object_small.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20); //picks a random number between 0 and the window width and sets the x position to this value. uses -20 for y as it is above the top of window
if (object_small2.Location.Y > 522)
object_small2.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
if (object_mid.Location.Y > 522)
object_mid.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
if (object_mid2.Location.Y > 522)
object_mid2.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
if (object_large.Location.Y > 522)
object_large.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
//Makes sure the player is on the screen (Anti-cheating)
if (player.Location.X > pgcontents.Width)
player.Location = new Point(385, player.Location.Y);
if (player.Location.X < 0)
player.Location = new Point(0, player.Location.Y);
//Bonus
if (!PicBonus.Visible)
{
int ran = (int)Math.Ceiling(VBMath.Rnd() * 300); //random 1 in 500 chance
if (ran == 1)
PicBonus.Visible = true;
}
else
{
PicBonus.Location = new Point(PicBonus.Location.X, (int)(PicBonus.Location.Y + speed));
if (PicBonus.Location.Y > 522)
PicBonus.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
PicBonus.Visible = false;
}
//check collisions
if (player.Bounds.IntersectsWith(object_mid.Bounds) || player.Bounds.IntersectsWith(object_mid2.Bounds) || player.Bounds.IntersectsWith(object_large.Bounds) || player.Bounds.IntersectsWith(object_small.Bounds) || player.Bounds.IntersectsWith(object_small2.Bounds))
{
clock.Stop(); //breaks loop
System.Threading.Thread.Sleep(333); //delay for a third of a second
player.Visible = false; //hide game
DescriptionLabel.Text = "Sorry, you just lost the game, however, you earnt a total of " + score.ToString() + " code points. To earn more code points, press the begin button now. To exit, press the quit button"; // change the description to the die message
SaveSystem.CurrentSave.Codepoints += (ulong) score;
DescriptionLabel.Visible = true; //show non-game elements
BeginButton.Visible = true;
QuitButton.Visible = true;
scorelabel.Visible = false;
}
if (player.Bounds.IntersectsWith(PicBonus.Bounds))
{
PicBonus.Visible = false;
bonusesfound = bonusesfound + 1;
PicBonus.Location = new Point((int)(Math.Ceiling(VBMath.Rnd() * pgcontents.Width)), -20);
}
}
private void clock_Tick(object sender, EventArgs e)
{
main(); //repeat the main function (endless loop)
}
private void sig()
{
Infobox.Show("FLAG", "There is no foul on the play, the punt was blocked.");
}
private void Dodge_MouseMove(object sender, MouseEventArgs e)
{
LocalMousePosition = e.Location;
}
private void pgcontents_MouseMove(object sender, MouseEventArgs e)
{
LocalMousePosition = e.Location;
}
}
}

View file

@ -0,0 +1,208 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="player.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAANlJREFUSEvVjtsOwyAMQ/v/P90hnKW5ADFSq27nYUscY/c4H2aj4OjIQkM9sNF2
Zqitwzi+o/BpkE3ETHawBZmbCxbDmtpkE+2MoYT7Ch+tM8OOdTMa/EaBjbYzQ2G1cbN5jTOFN2UE478k
nNuvAn2NWDtYoStuz+cths8vST9Bgb5AfF+g4KS4PZyzO8D4VxG7BUPeLigR65ypg3ncKG17BVn8qwIo
Qb+twK6zecgbBe0NkL1j1zAD2RPxMLRmkVGAU6cmLm4syn/n8YJGM2Xk5pGbQQ6W8/wAaLdSOxZqwToA
AAAASUVORK5CYII=
</value>
</data>
<data name="QuitButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAMgAAAAyCAIAAACWMwO2AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAh5JREFUeF7tltt1g0AMBV2XC3I9qcbNuBgnzrk/0r4gh5tEeObvGrEgdiy4PAEM
XABcyDGAg0AssIBYYAGxwAJigQXEAguIBRYQCywgFlhALLCAWGABscACYoGFM4n1+LiqncjtroI+4bTr
x0M/t8wK7zf9/kIXHN3PmNnVi6GOlKoStnXEyK9w8iFi6dimu4os/gOFUENKBdk1Frra2MRiYtUVqxkK
6S/f7m07E2xiddh8rfKoR6ViJK0G75EsVy5DLAfqUakUUZjNRvzUCcTahXpUqkTYo9VXbyyOO4pYDtSj
UiG2z6sXaWYFDRHLgXpUqsM+r9KOxnrEcqAeleqwV6zJyEIsB+pRqQ5hh1ZfWF8g1i+jHpXqgFj/HPWo
VIco1nqLolihHrEcqEelOkxE6TIREbEcqEelQkRTVu/CmYfx2GQlxNqBelQqRNRhYda0eLNYwYpUh1gJ
9ahUiR1mhe1s9zMeHi40lQKxEupRqRZRiOE+pbKOOOuK7PFcTsSqLVYeWl+kvWoL+vOoqYvrNIfbVRAr
oR6V6pGGzYrhe27HQl0fECuhHpVqsk+u8Xa2861lZCZiJdSjUmn6fr1M6BwZj67BOgsLwkkb5+LkHuqj
HpXOS8+WU0+Mv0bPWOnUbP2ShyPQI1Y6PVEuxPKhR6z0JkgvXoVGvrV6N7HAD2KBBcQCC4gFFhALLCAW
WEAssCCxAI5HjgEcyPP5CT/xA4PFRMqaAAAAAElFTkSuQmCC
</value>
</data>
<data name="BeginButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAMgAAAAyCAIAAACWMwO2AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAnVJREFUeF7t2c1t60AMRWHXpYJcj6txMykmkeFZDCkOxVF0DQs4Z/UCzY+e+CGb
3IhU/RKdGrBIErBIErBIErBIErBIErBIErBIErBIErBIErBIErBIErBIErBIErBI0nVg/TyW9rKD7s+2
ctvz3takJQe8Gh2yPH7aCpNZ7o7e/F+GV/en7Lzfd9Xeuf30xe26akVfv7h3IKTI0u82u+zD6H0KPIGl
qAorGlFxbzC4+q1r9uJJWAM3wFJnhuHs+F8pfgJ2kOX5BPPfoh1OfhpW+GLAUpfBWrO23AgOwfJat3f2
vVbbFUVYy9L9e3sFsNTtwErtHIBlt+yoCivCuj9TO8BS91lYRsURVhOwzEp/FbDU5bByOtOwrKtjA63D
su9nbwOWugzWnoNZWHb9RnGtIqz3k36xWQssdXbYw8KPX9g7nObheU7Bsq/Y3QgsdUVY4eev7O222eXW
RHaWvXkO1ogQsNSVYb1yIyjs7SefwjJebHblLKwZbheovXP76Ysz03bDDsZthmCl7M8nMeHOMtmV07BC
RcBSl8NacxPvl/wLVro+0XMAltn0fgAsdbuwEg+zsJzRZMPZsMyj173AUvdJWHVZp8My+9Z7gaXuo7D8
WcM9iZ7kUQqrf7o8HsAStwvL6jFTOADLHxdeqYHVb+3/RA0sSTksz8AO4Qis4MztvQbPebCiq9eApSj+
1nF+WMW928HNXHomLE/2HbAUlWccfP7i3okZR7nt/4MVvTOwJO3qGI1orWYjH9zw/opHe3R/VHKpe+tL
uboQLLpUwCJJwCJJwCJJwCJJwCJJwCJJwCJJwCJJwCJJwCJJDRbRyd1uf3/6zkvyT2tRAAAAAElFTkSu
QmCC
</value>
</data>
<data name="object_small2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEsAAAAUCAIAAABK9FefAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAC9JREFUWEftzwEBAAAIwjD6l9Ych6/BMuF6OeRzyOeQzyGfQz6HfA75HPLNDJsl
D4jAV3xQnIczAAAAAElFTkSuQmCC
</value>
</data>
<data name="object_mid2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAH0AAAAUCAIAAAAvGaXgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAEJJREFUWEft0DEBADAMwKD6N7091dA8IIEh87jlveG94b3hveG94b3hveG94b3h
veG94b3hveG94b3hveG9se9cm/mqBdmGSM9R1gAAAABJRU5ErkJggg==
</value>
</data>
<data name="object_large.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAK8AAAAUCAIAAAB0/fqUAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAEFJREFUaEPt0gEJACAQALHvX/pFEA47bBk28FnYtYHYQGwgNhAbiA3EBmIDsYHY
QGwgNhAbiA3EBmIDsYG8DXDNHAnVW5/1c3lZAAAAAElFTkSuQmCC
</value>
</data>
<data name="object_small.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEsAAAAUCAIAAABK9FefAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAC9JREFUWEftzwEBAAAIwjD6l9Ych6/BMuF6OeRzyOeQzyGfQz6HfA75HPLNDJsl
D4jAV3xQnIczAAAAAElFTkSuQmCC
</value>
</data>
<data name="object_mid.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAH0AAAAUCAIAAAAvGaXgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vQAADr0BR/uQrQAAAEJJREFUWEft0DEBADAMwKD6N7091dA8IIEh87jlveG94b3hveG94b3hveG94b3h
veG94b3hveG94b3hveG9se9cm/mqBdmGSM9R1gAAAABJRU5ErkJggg==
</value>
</data>
<data name="PicBonus.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAE1JREFUKFOtjUEOACEIA3k6P2dJSroVuWicA2lksHaDu3MmEcEJmrCQXqMWSjtV
T/PckKik+WdsIPX6vmHPcwMMpRYKTvkBJFWbcILZB/dcg5IyZV67AAAAAElFTkSuQmCC
</value>
</data>
<metadata name="clock.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View file

@ -83,6 +83,12 @@
<Compile Include="Applications\Clock.Designer.cs">
<DependentUpon>Clock.cs</DependentUpon>
</Compile>
<Compile Include="Applications\Dodge.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Applications\Dodge.Designer.cs">
<DependentUpon>Dodge.cs</DependentUpon>
</Compile>
<Compile Include="Applications\IconManager.cs">
<SubType>UserControl</SubType>
</Compile>
@ -499,6 +505,9 @@
<EmbeddedResource Include="Applications\Clock.resx">
<DependentUpon>Clock.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Applications\Dodge.resx">
<DependentUpon>Dodge.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Applications\IconManager.resx">
<DependentUpon>IconManager.cs</DependentUpon>
</EmbeddedResource>