mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 04:18:43 +00:00
273 lines
No EOL
9.8 KiB
C#
273 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()
|
|
{
|
|
Console.WriteLine("This is just a test.");
|
|
|
|
Vec2 v;
|
|
s.Taskbar.Clear(new Pixel(0,255,0,255));
|
|
|
|
//#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, new Pixel(0, 0, 128, 255));
|
|
|
|
//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)
|
|
{
|
|
Console.WriteLine("This is just a test.");
|
|
Tick++;
|
|
MouseX = (uint)m.X;
|
|
MouseY = (uint)m.Y;
|
|
//m.HandleMouse();
|
|
|
|
if (OddRefresh)
|
|
{
|
|
s.Taskbar.SetPixel(312, 4, Colors.Black);
|
|
s.Taskbar.SetPixel(313, 4, Colors.Black);
|
|
s.Taskbar.SetPixel(312, 5, Colors.Black);
|
|
s.Taskbar.SetPixel(313, 5, Colors.Black);
|
|
OddRefresh = false;
|
|
}
|
|
else
|
|
{
|
|
s.Taskbar.SetPixel(312, 4, new Pixel(0,255,0,255));
|
|
s.Taskbar.SetPixel(313, 4, new Pixel(0,255,0,255));
|
|
s.Taskbar.SetPixel(312, 5, new Pixel(0,255,0,255));
|
|
s.Taskbar.SetPixel(313, 5, new Pixel(0,255,0,255));
|
|
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, new Pixel(255, 0, 0, 255));
|
|
ProcessKeyboard(c);
|
|
HadCharPrev = true;
|
|
}
|
|
else if (HadCharPrev)
|
|
{
|
|
v = new Vec2(150, 100);
|
|
s.Taskbar.DrawCircleOutline(v, 20, new Pixel(0, 255, 0, 255));
|
|
HadCharPrev = false;
|
|
}
|
|
chrsProcd = 0;
|
|
|
|
if (m.Buttons != Mouse.MouseState.None)
|
|
{
|
|
v = new Vec2(150, 100);
|
|
s.Taskbar.DrawCircleOutline(v, 30, new Pixel(255, 0, 0, 255));
|
|
}
|
|
else
|
|
{
|
|
v = new Vec2(150, 100);
|
|
s.Taskbar.DrawCircleOutline(v, 30, new Pixel(0, 255, 0, 255));
|
|
}
|
|
|
|
//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
|
|
}
|
|
} |