101 lines
3.9 KiB
C#
101 lines
3.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace EduNetworkBuilder
|
|
{
|
|
//Holds a little bit of information pertaining to the current animation.
|
|
[Serializable]
|
|
public class AnimationClass
|
|
{
|
|
Point ImageStartPoint = new Point();
|
|
Rectangle Where;
|
|
Size HowBig; //how big is each animation.
|
|
public DateTime NextAnimation;
|
|
int AnimationCount = 0;
|
|
int AnimationSpeed = 150; //ms between animations
|
|
int maxAnim = 12;
|
|
bool erased = true;
|
|
|
|
public bool AnimationDone { get { if (AnimationCount > 0) return false; return true; } }
|
|
public bool FinalErase = false;
|
|
|
|
public AnimationClass(AnimationName What, Rectangle where)
|
|
{
|
|
Where = where;
|
|
switch(What)
|
|
{
|
|
case AnimationName.Fire1:
|
|
ImageStartPoint = new Point(0,0);
|
|
HowBig = new Size(100, 100);
|
|
AnimationCount = 12;
|
|
maxAnim = 12;
|
|
AnimationSpeed = 100;
|
|
break;
|
|
case AnimationName.Explo1:
|
|
ImageStartPoint = new Point(0, 400);
|
|
HowBig = new Size(100, 100);
|
|
AnimationCount = 12;
|
|
maxAnim = 12;
|
|
AnimationSpeed = 100;
|
|
break;
|
|
case AnimationName.Smoke1:
|
|
ImageStartPoint = new Point(0, 200);
|
|
HowBig = new Size(100, 100);
|
|
AnimationCount = 6;
|
|
maxAnim = 6;
|
|
break;
|
|
case AnimationName.Spark1:
|
|
ImageStartPoint = new Point(0, 300);
|
|
HowBig = new Size(100, 100);
|
|
AnimationCount = 6;
|
|
maxAnim = 6;
|
|
break;
|
|
case AnimationName.Lightning1:
|
|
ImageStartPoint = new Point(0, 600);
|
|
HowBig = new Size(100, 100);
|
|
AnimationCount = 6;
|
|
maxAnim = 6;
|
|
break;
|
|
}
|
|
NextAnimation = DateTime.UtcNow.AddMilliseconds(AnimationSpeed);
|
|
}
|
|
|
|
public void DrawAnimation(Image TheNetworkImage, PictureBox myPB)
|
|
{
|
|
if (AnimationCount < 0) return;
|
|
if (!erased) return;
|
|
int sx = (maxAnim - AnimationCount) * HowBig.Width;
|
|
int sy = ImageStartPoint.Y;
|
|
if(sx >= Properties.Resources.Animations.Width)
|
|
{
|
|
sy = sy + HowBig.Height;
|
|
sx = sx - Properties.Resources.Animations.Width;
|
|
}
|
|
//Console.WriteLine("Anim: x:" + sx + " y:" + sy);
|
|
Rectangle AniminSnip = new Rectangle(sx, sy, HowBig.Width, HowBig.Height);
|
|
Graphics.FromImage(TheNetworkImage).DrawImage(Properties.Resources.Animations, Where, AniminSnip, GraphicsUnit.Pixel);
|
|
myPB.Invalidate(Where);
|
|
}
|
|
|
|
public void EraseAnimation(Image TheNetworkImage, PictureBox myPB, Image TheNetworkImageBackground)
|
|
{
|
|
if (DateTime.UtcNow >= NextAnimation)
|
|
{
|
|
//Console.WriteLine("\nThis happened at: " + DateTime.UtcNow.ToString("mm:ss.fff tt"));
|
|
if (TheNetworkImageBackground == null) return;//do nothing if no animation set
|
|
Graphics.FromImage(TheNetworkImage).DrawImage(TheNetworkImageBackground, Where, Where, GraphicsUnit.Pixel);
|
|
myPB.Invalidate(Where);
|
|
erased = true;
|
|
NextAnimation = DateTime.UtcNow.AddMilliseconds(AnimationSpeed);
|
|
//Console.WriteLine("next: "+ NextAnimation.ToString("mm:ss.fff tt"));
|
|
AnimationCount--;
|
|
}
|
|
}
|
|
}
|
|
}
|