Cosmos/source2/Users/Orvid/OrvidTestOS/GuessOS.cs

269 lines
No EOL
9.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;
using Cosmos.Hardware;
using Orvid.Graphics;
namespace GuessKernel
{
public class GuessOS : Sys.Kernel
{
public static int Tick = 0;
public static Monitor s = new Monitor();
public static Keyboard k = new Keyboard();
public static Mouse m = new Mouse();
public GuessOS()
{
}
protected override void BeforeRun()
{
m.Initialize();
}
public static uint MouseX
{
get
{
return s.MouseX;
}
set
{
s.MouseX = value;
}
}
public static uint MouseY
{
get
{
return s.MouseY;
}
set
{
s.MouseY = value;
}
}
/// <summary>
/// This is used to draw a small flashing square in
/// the top right corner of the screen.
/// </summary>
private bool OddRefresh = false;
private bool HadCharPrev = false;
protected override void Run()
{
//Vec2 v;
//s.Taskbar.Clear(30);
//#region Draw myself a palette reference
//uint i = 0;
//for (uint height = 0; height < 16; height++)
//{
// for (uint width = 0; width < 16; width++)
// {
// s.Taskbar.SetPixel((width * 4 + 1), (height * 4 + 1), i);
// s.Taskbar.SetPixel((width * 4 + 1), (height * 4 + 2), i);
// s.Taskbar.SetPixel((width * 4 + 1), (height * 4 + 3), i);
// s.Taskbar.SetPixel((width * 4 + 1), (height * 4 + 4), i);
// s.Taskbar.SetPixel((width * 4 + 2), (height * 4 + 1), i);
// s.Taskbar.SetPixel((width * 4 + 2), (height * 4 + 2), i);
// s.Taskbar.SetPixel((width * 4 + 2), (height * 4 + 3), i);
// s.Taskbar.SetPixel((width * 4 + 2), (height * 4 + 4), i);
// s.Taskbar.SetPixel((width * 4 + 3), (height * 4 + 1), i);
// s.Taskbar.SetPixel((width * 4 + 3), (height * 4 + 2), i);
// s.Taskbar.SetPixel((width * 4 + 3), (height * 4 + 3), i);
// s.Taskbar.SetPixel((width * 4 + 3), (height * 4 + 4), i);
// s.Taskbar.SetPixel((width * 4 + 4), (height * 4 + 1), i);
// s.Taskbar.SetPixel((width * 4 + 4), (height * 4 + 2), i);
// s.Taskbar.SetPixel((width * 4 + 4), (height * 4 + 3), i);
// s.Taskbar.SetPixel((width * 4 + 4), (height * 4 + 4), i);
// i++;
// }
//}
//s.Taskbar.SetPixel(1, 1, 255);
//s.Taskbar.SetPixel(1, 2, 255);
//s.Taskbar.SetPixel(1, 3, 255);
//s.Taskbar.SetPixel(1, 4, 255);
//s.Taskbar.SetPixel(2, 1, 255);
//s.Taskbar.SetPixel(2, 2, 255);
//s.Taskbar.SetPixel(2, 3, 255);
//s.Taskbar.SetPixel(2, 4, 255);
//s.Taskbar.SetPixel(3, 1, 255);
//s.Taskbar.SetPixel(3, 2, 255);
//s.Taskbar.SetPixel(3, 3, 255);
//s.Taskbar.SetPixel(3, 4, 255);
//s.Taskbar.SetPixel(4, 1, 255);
//s.Taskbar.SetPixel(4, 2, 255);
//s.Taskbar.SetPixel(4, 3, 255);
//s.Taskbar.SetPixel(4, 4, 255);
//#endregion
//v = new Vec2(150, 100);
//s.Taskbar.DrawCircleOutline(v, 10, (uint)8);
////int i1 = 4;
////int i2 = 9;
////int i3 = 5;
////double i1r = Sqrt(i1);
////double i2r = Sqrt(i2);
////double i3r = Sqrt(i3);
////Cosmos.System.Global.Console.WriteLine("The Square root of 4 is: '" + i1r.ToString() + "'");
////Cosmos.System.Global.Console.WriteLine("The Square root of 9 is: '" + i2r.ToString() + "'");
////Cosmos.System.Global.Console.WriteLine("The Square root of 5 is: '" + i3r.ToString() + "'");
////Vec2 lp = new Vec2(175, 50);
////Vec2 rp = new Vec2(225, 50);
////Vec2 tp = new Vec2(200, 150);
////s.Taskbar.DrawTriangle(lp, rp, tp, 4);
////lp = new Vec2(185, 50);
////rp = new Vec2(235, 50);
////tp = new Vec2(210, 150);
////s.Taskbar.DrawTriangle(lp, rp, tp, 4);
////s.Taskbar.DrawPolygon(new Vec2[] { new Vec2(100, 50), new Vec2(150, 50), new Vec2(175, 75), new Vec2(175, 125), new Vec2(150, 150), new Vec2(100, 150), new Vec2(75, 125), new Vec2(75, 75) }, (uint)4);
//while (true)
//{
// Tick++;
// //m.HandleMouse();
// if (OddRefresh)
// {
// s.Taskbar.SetPixel(312, 4, 255);
// s.Taskbar.SetPixel(313, 4, 255);
// s.Taskbar.SetPixel(312, 5, 255);
// s.Taskbar.SetPixel(313, 5, 255);
// OddRefresh = false;
// }
// else
// {
// s.Taskbar.SetPixel(312, 4, 31);
// s.Taskbar.SetPixel(313, 4, 31);
// s.Taskbar.SetPixel(312, 5, 31);
// s.Taskbar.SetPixel(313, 5, 31);
// OddRefresh = true;
// }
// //OButton b = new OButton();
// //b.Color = 31;
// //b.Location = new Vec2(150, 100);
// //b.Size = new Vec2(75, 20);
// //b.Draw();
// char c;
// if (k.GetChar(out c))
// {
// v = new Vec2(150, 100);
// s.Taskbar.DrawCircleOutline(v, 20, (uint)48);
// ProcessKeyboard(c);
// HadCharPrev = true;
// }
// else if (HadCharPrev)
// {
// v = new Vec2(150, 100);
// s.Taskbar.DrawCircleOutline(v, 20, (uint)30);
// HadCharPrev = false;
// }
// chrsProcd = 0;
// if (m.Buttons != Mouse.MouseState.None)
// {
// v = new Vec2(150, 100);
// s.Taskbar.DrawCircleOutline(v, 30, (uint)8);
// }
// else
// {
// v = new Vec2(150, 100);
// s.Taskbar.DrawCircleOutline(v, 30, (uint)30);
// }
// //for (uint height = 0; height < s.s.PixelHeight; height++)
// // for (uint width = 0; width < s.s.PixelWidth; width++)
// // s.SetPixel(height, width, (byte)(width + height));
// //s.DrawPolygon(new Vec2[] { new Vec2(100, 50), new Vec2(150, 50), new Vec2(175, 75), new Vec2(175, 125), new Vec2(150, 150), new Vec2(100, 150), new Vec2(75, 125), new Vec2(75, 75) }, (uint)4);
// //s.DrawPolygonOutline(new Vec2[] { new Vec2(400, 50), new Vec2(450, 50), new Vec2(475, 75), new Vec2(475, 125), new Vec2(450, 150), new Vec2(400, 150), new Vec2(375, 125), new Vec2(375, 75) }, (uint)4);
// //s.DrawTriangle(new Vec2(75,100), new Vec2(75,75), new Vec2(25,100), (uint)216);
// //v = new Vec2(100, 100);
// //s.Taskbar.DrawCircle(v, 20, (uint)16);
// //s.DrawCircleOutline(new Vec2(150, 100), 20, (uint)8);
// //s.DrawCircleOutline(new Vec2(Mouse.X, Mouse.Y), 15, (uint)16);
// //s.Taskbar.DrawElipticalArc(v, 30, 10, 10, 300, (uint)90);
// //s.Taskbar.DrawReverseRectangle(new Vec2(120, 80), new Vec2(80, 140), (uint)238);
// //s.DrawLine(new Vec2(30, 30), new Vec2(80, 80), 9);
// //s.DrawElipse(new Vec2(150, 50), 10, 10, 8);
// // And finally, update the screen
// s.Update();
//}
}
#region Process keyboard
private int chrsProcd = 0;
private void ProcessKeyboard(char c)
{
if (c == 72 || c == 'w') // Up arrow
{
if (MouseY > 0)
{
MouseY--;
// The following can be used to create
// the appearance that the mouse is in
// multiple places at once.
//DrawCursor();
}
}
else if (c == 80 || c == 's') // Down arrow
{
if (MouseY < s.Height - 4)
{
MouseY++;
//DrawCursor();
}
}
else if (c == 75 || c == 'a') // Left arrow
{
if (MouseX > 0)
{
MouseX--;
//DrawCursor();
}
}
else if (c == 77 || c == 'd') // Right arrow
{
if (MouseX < s.Width - 4)
{
MouseX++;
//DrawCursor();
}
}
// The following allows for processing multiple
// characters per tick.
if (chrsProcd < 7)
{
char c2;
if (k.GetChar(out c2))
{
chrsProcd++;
ProcessKeyboard(c2);
}
}
}
#endregion
}
}