Files
Sprite-Stacker/SpriteStacker/Form1.cs
2026-03-20 10:25:32 +00:00

129 lines
3.9 KiB
C#

using SpriteStacker.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SpriteStacker
{
public partial class Form1 : Form
{
public static Thread MainThread;
public static bool running = true;
Model model = new Model(25, 25);
public double LastFT = 0;
public Form1()
{
InitializeComponent();
ResizeDisplay();
MainThread = new Thread(mainThread);
MainThread.SetApartmentState(ApartmentState.STA);
model.SetBitmapLayers(new Bitmap[]
{
Resources._1,
Resources._2,
Resources._3,
Resources._4,
Resources._5,
Resources._6,
Resources._7,
Resources._8,
Resources._9,
Resources._10,
Resources._11,
Resources._12,
Resources._13,
Resources._14,
Resources._15,
Resources._16,
Resources._17,
Resources._18,
Resources._19,
Resources._20,
Resources._21,
Resources._22,
Resources._23,
Resources._24,
Resources._25,
Resources._26
});
//model.AddLayers(20);
Random rnd = new Random();
Color[] colors = new Color[] { Color.FromArgb(255,128,128) };
for (int i = 0; i < 150; i++)
{
for(int j = 0; j < 150; j++)
{
//int Y = rnd.Next(0, 21);
//model.SetData(rnd.Next(0, 25), rnd.Next(0, 25),Y , new Voxel(Color.FromArgb((int)(180 * ( (Y + 1.0) / 22.0 )), (int)(255 * ((Y + 1.0) / 22.0)), (int)(128 * ((Y + 1.0) / 22.0)))));
}
}
//model.DrawLayersToImages();
MainThread.Start();
}
public void mainThread()
{
LastFT = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
while (running)
{
Display.Refresh();
if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds - LastFT > 16)
{
LastFT = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
if (Camera.Rotation == 360) Camera.Rotation = 0;
Camera.Rotation++;
}
}
}
private void PaintDisplay(object sender, PaintEventArgs e)
{
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
model.DrawSpriteStack(e.Graphics);
}
private void ResizeDisplay()
{
Display.Left = 0;
Display.Top = 0;
Display.Width = Width;
Display.Height = Height - 32;
Camera.Width = Width; Camera.Height = Height - 32;
}
private void ResizeWindow(object sender, EventArgs e)
{
ResizeDisplay();
}
private void KillThreads(object sender, FormClosingEventArgs e)
{
running = false;
}
private void FrameTimer(object sender, EventArgs e)
{
}
private void KeyPressEvent(object sender, KeyPressEventArgs e)
{
}
private void KeyDownEvent(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.W) Camera.LocY++;
if (e.KeyCode == Keys.S) Camera.LocY--;
if (e.KeyCode == Keys.A) Camera.LocX++;
if (e.KeyCode == Keys.D) Camera.LocX--;
}
}
}