ShiftOS-C-/source/WindowsFormsApplication1/CreditScroller.cs
MichaelTheShifter 6b804f03eb Full ShiftUI conversion
The only bugs are that windows don't show in the center of the screen,
and Gecko webbrowsers are not serializing properly to be converted to
ShiftUI widgets (you can use the ToWidget() extension method to convert
a WinForms control to a ShiftUI widget)

Also multiple desktop panels are removed due to some odd bug I can't
diagnose. Will add them back in the future. Promise. I loved creating
GNOME2 skins.
2016-07-19 21:53:26 -04:00

273 lines
9.1 KiB
C#

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 ShiftUI;
namespace ShiftOS
{
public partial class CreditScroller : Form
{
public CreditScroller()
{
InitializeComponent();
}
#region pong visualizer variables
bool pongVisible = false;
Random rand = new Random();
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 countdown = 3;
#endregion
int offset = 0;
private void tmrredraw_Tick(object sender, EventArgs e)
{
pgcontents.Visible = pongVisible;
lbcreditstext.Top = pnlscroll.Height - offset;
if(pongVisible)
lbcreditstext.Left = (pnlscroll.Width - lbcreditstext.Width);
else
lbcreditstext.Left = (pnlscroll.Width - lbcreditstext.Width) / 2;
offset += 1;
}
private void CreditScroller_Load(object sender, EventArgs e)
{
Audio.Play("hackerbattle_ambient");
tmrredraw.Interval = 50;
lbcreditstext.Text = Properties.Resources.Credits.Replace("#VER#", Consts.Version);
tmrredraw.Start();
newgame();
}
private void btnclose_Click(object sender, EventArgs e)
{
this.Close();
}
private void pongGameTimer_Tick(object sender, EventArgs e)
{
//Move player according to ball
if(ball.Left < 250 + xVel / 10 && xVel < 0)
{
if(ball.Top > paddleHuman.Top + 50)
{
paddleHuman.Top += computerspeed * 2 + ((int)yveldec / 2);
}
else if(ball.Top < paddleHuman.Top + 50)
{
paddleHuman.Top -= computerspeed * 2 + ((int)yveldec / 2);
}
}
//Set the computer player to move according to the ball's position.
if (ball.Location.X > 500 - xVel * 10 && xVel > 0)
{
if (ball.Location.Y > paddleComputer.Location.Y + 50)
{
paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed * 2 + ((int)yveldec / 2));
}
if (ball.Location.Y < paddleComputer.Location.Y + 50)
{
paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed * 2 + ((int)yveldec / 2));
}
casualposition = rand.Next(-150, 201);
}
//Set Xvel and Yvel speeds from decimal
if (xVel > 0)
xVel = (int)Math.Round(xveldec);
if (xVel < 0)
xVel = (int)-Math.Round(xveldec);
if (yVel > 0)
yVel = (int)Math.Round(yveldec);
if (yVel < 0)
yVel = (int)-Math.Round(yveldec);
// Move the game ball.
ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel);
// Check for top wall.
if (ball.Location.Y < 0)
{
ball.Location = new Point(ball.Location.X, 0);
yVel = -yVel;
}
// Check for bottom wall.
if (ball.Location.Y > pgcontents.Height - ball.Height)
{
ball.Location = new Point(ball.Location.X, pgcontents.Height - ball.Size.Height);
yVel = -yVel;
}
// Check for player paddle.
if (ball.Bounds.IntersectsWith(paddleHuman.Bounds))
{
ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y);
//randomly increase x or y speed of ball
switch (rand.Next(1, 3))
{
case 1:
xveldec = xveldec + incrementx;
break;
case 2:
if (yveldec > 0)
yveldec = yveldec + incrementy;
if (yveldec < 0)
yveldec = yveldec - incrementy;
break;
}
xVel = -xVel;
}
// Check for computer paddle.
if (ball.Bounds.IntersectsWith(paddleComputer.Bounds))
{
ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y);
xveldec = xveldec + incrementx;
xVel = -xVel;
}
// Check for left wall.
if (ball.Location.X < -100)
{
ball.Location = new Point(pgcontents.Size.Width / 2 + 200, pgcontents.Size.Height / 2);
paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y);
paddleHuman.Location = new Point(paddleHuman.Location.X, ball.Location.Y);
if (xVel > 0)
xVel = -xVel;
pongGameTimer.Stop();
tmrcountdown.Start();
counter.Stop();
}
// Check for right wall.
if (ball.Location.X > pgcontents.Width - ball.Size.Width - paddleComputer.Width + 100)
{
ball.Location = new Point(pgcontents.Size.Width / 2 + 200, pgcontents.Size.Height / 2);
paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y);
paddleHuman.Location = new Point(paddleHuman.Location.X, ball.Location.Y);
if (xVel > 0)
xVel = -xVel;
beatairewardtotal = beatairewardtotal + beataireward;
tmrcountdown.Start();
pongGameTimer.Stop();
counter.Stop();
}
//lblstats.Text = "Xspeed: " & Math.Abs(xVel) & " Yspeed: " & Math.Abs(yVel) & " Human Location: " & paddleHuman.Location.ToString & " Computer Location: " & paddleComputer.Location.ToString & Environment.NewLine & " Ball Location: " & ball.Location.ToString & " Xdec: " & xveldec & " Ydec: " & yveldec & " Xinc: " & incrementx & " Yinc: " & incrementy
lblstatsX.Text = "Xspeed: " + xveldec;
lblstatsY.Text = "Yspeed: " + yveldec;
lbllevelandtime.Text = "Level: " + level;
if (xVel > 20 || xVel < -20)
{
paddleHuman.Width = Math.Abs(xVel);
paddleComputer.Width = Math.Abs(xVel);
}
else
{
paddleHuman.Width = 20;
paddleComputer.Width = 20;
}
computerspeed = Math.Abs(yVel);
// pgcontents.Refresh()
// pgcontents.CreateGraphics.FillRectangle(Brushes.Black, ball.Location.X, ball.Location.Y, ball.Width, ball.Height)
}
private void counter_Tick(object sender, EventArgs e)
{
secondsleft = secondsleft - 1;
if (secondsleft == -1)
{
secondsleft = 60;
level = level + 1;
}
}
private void tmrcountdown_Tick(object sender, EventArgs e)
{
switch (countdown)
{
case 0:
countdown = 3;
lblcountdown.Hide();
pongGameTimer.Start();
counter.Start();
tmrcountdown.Stop();
break;
case 1:
lblcountdown.Text = "1";
countdown = countdown - 1;
break;
case 2:
lblcountdown.Text = "2";
countdown = countdown - 1;
break;
case 3:
lblcountdown.Text = "3";
countdown = countdown - 1;
lblcountdown.Show();
break;
}
}
private void newgame()
{
level = 1;
beataireward = 2;
beatairewardtotal = 0;
secondsleft = 60;
//reset stats text
lblstatsX.Text = "Xspeed: ";
lblstatsY.Text = "Yspeed: ";
levelxspeed = 3;
levelyspeed = 3;
incrementx = 0.4;
incrementy = 0.2;
xveldec = levelxspeed;
yveldec = levelyspeed;
tmrcountdown.Start();
if (xVel < 0)
xVel = Math.Abs(xVel);
lbllevelandtime.Text = "Level: " + level + " - " + secondsleft + " Seconds Left";
}
}
}