mirror of
				https://github.com/MaddyThorson/StrawberryBF.git
				synced 2025-11-04 01:41:33 +08:00 
			
		
		
		
	Sample game. Easing methods. Colors.
This commit is contained in:
		@ -26,11 +26,13 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
		public float Value
 | 
			
		||||
		{
 | 
			
		||||
			[Inline]
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				return value;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			[Inline]
 | 
			
		||||
			set
 | 
			
		||||
			{
 | 
			
		||||
				this.value = Math.Max(0, value);
 | 
			
		||||
@ -38,6 +40,13 @@ namespace Strawberry
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		public void Clear()
 | 
			
		||||
		{
 | 
			
		||||
			value = 0;
 | 
			
		||||
			Active = false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void Update()
 | 
			
		||||
		{
 | 
			
		||||
			if (value > 0)
 | 
			
		||||
@ -54,5 +63,10 @@ namespace Strawberry
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static public implicit operator bool(Timer timer)
 | 
			
		||||
		{
 | 
			
		||||
			return timer.value > 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -77,8 +77,6 @@ namespace Strawberry
 | 
			
		||||
				let hit = First<Solid>(.(sign, 0));
 | 
			
		||||
				if (hit != null)
 | 
			
		||||
				{
 | 
			
		||||
					ZeroRemainderX();
 | 
			
		||||
 | 
			
		||||
					let c = Collision(
 | 
			
		||||
						Point.Right * sign,
 | 
			
		||||
						Math.Abs(amount),
 | 
			
		||||
@ -110,8 +108,6 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
				if (hit != null)
 | 
			
		||||
				{
 | 
			
		||||
					ZeroRemainderY();
 | 
			
		||||
 | 
			
		||||
					let c = Collision(
 | 
			
		||||
						Point.Right * sign,
 | 
			
		||||
						Math.Abs(amount),
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,32 @@ namespace Strawberry
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		public void Move(Vector amount)
 | 
			
		||||
		{
 | 
			
		||||
			MoveX(amount.X);
 | 
			
		||||
			MoveY(amount.Y);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		public void MoveToX(float x)
 | 
			
		||||
		{
 | 
			
		||||
			MoveX(x - (X + remainder.X));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		public void MoveToY(float y)
 | 
			
		||||
		{
 | 
			
		||||
			MoveY(y - (Y + remainder.Y));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		public void MoveTo(Vector target)
 | 
			
		||||
		{
 | 
			
		||||
			MoveToX(target.X);
 | 
			
		||||
			MoveToY(target.Y);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public abstract void MoveExactX(int amount);
 | 
			
		||||
		public abstract void MoveExactY(int amount);
 | 
			
		||||
		public abstract List<Actor> GetRiders(List<Actor> into);
 | 
			
		||||
 | 
			
		||||
@ -6,14 +6,7 @@ namespace Strawberry
 | 
			
		||||
		public this(Point position, int width)
 | 
			
		||||
			: base(position)
 | 
			
		||||
		{
 | 
			
		||||
			Hitbox = Rect(0, 0, width, 6);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void Update()
 | 
			
		||||
		{
 | 
			
		||||
			base.Update();
 | 
			
		||||
 | 
			
		||||
			MoveY(-10 * Time.Delta);
 | 
			
		||||
			Hitbox = Rect(0, 0, width, 2);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void MoveExactX(int amount)
 | 
			
		||||
@ -80,7 +73,7 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
		public override void Draw()
 | 
			
		||||
		{
 | 
			
		||||
			DrawHitbox(.(255, 255, 255, 255));
 | 
			
		||||
			DrawHitbox(.LightGray);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -10,13 +10,6 @@ namespace Strawberry
 | 
			
		||||
			Hitbox = hitbox;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void Update()
 | 
			
		||||
		{
 | 
			
		||||
			base.Update();
 | 
			
		||||
 | 
			
		||||
			MoveY(0.1f);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override List<Actor> GetRiders(List<Actor> into)
 | 
			
		||||
		{
 | 
			
		||||
			for (var a in Scene.All<Actor>(scope List<Actor>))
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										36
									
								
								src/Static/Ease.bf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/Static/Ease.bf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Strawberry
 | 
			
		||||
{
 | 
			
		||||
	static public class Ease
 | 
			
		||||
	{
 | 
			
		||||
		public delegate float Easer(float t);
 | 
			
		||||
 | 
			
		||||
		static public float CubeIn(float t)
 | 
			
		||||
		{
 | 
			
		||||
			return t * t * t;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static public float CubeOut(float t)
 | 
			
		||||
		{
 | 
			
		||||
			return Invert(t, scope => CubeIn);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static public float CubeInOut(float t)
 | 
			
		||||
		{
 | 
			
		||||
			return Follow(t, scope => CubeIn, scope => CubeOut);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		static public float Invert(float t, Easer easer)
 | 
			
		||||
		{
 | 
			
		||||
		    return 1 - easer(1 - t);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[Inline]
 | 
			
		||||
		static public float Follow(float t, Easer a, Easer b)
 | 
			
		||||
		{
 | 
			
		||||
			return (t <= 0.5f) ? a(t * 2) / 2 : b(t * 2 - 1) / 2 + 0.5f;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -13,6 +13,9 @@ namespace Strawberry
 | 
			
		||||
		static public readonly Color Cyan 			= 0xFF00FFFF;
 | 
			
		||||
		static public readonly Color Magenta 		= 0xFFFF00FF;
 | 
			
		||||
		static public readonly Color Yellow 		= 0x00FFFFFF;
 | 
			
		||||
		static public readonly Color DarkGray		= 0x3F3F3FFF;
 | 
			
		||||
		static public readonly Color Gray			= 0x7F7F7FFF;
 | 
			
		||||
		static public readonly Color LightGray		= 0xBFBFBFFF;
 | 
			
		||||
 | 
			
		||||
		public uint8 R;
 | 
			
		||||
		public uint8 G;
 | 
			
		||||
 | 
			
		||||
@ -51,6 +51,16 @@ namespace Strawberry
 | 
			
		||||
			return Point((int)Math.Round(X), (int)Math.Round(Y));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static public Vector Lerp(Vector a, Vector b, float t)
 | 
			
		||||
		{
 | 
			
		||||
			if (t == 0)
 | 
			
		||||
				return a;
 | 
			
		||||
			else if (t == 1)
 | 
			
		||||
				return b;
 | 
			
		||||
			else
 | 
			
		||||
				return a + (b - a) * t;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void ToString(String strBuffer)
 | 
			
		||||
		{
 | 
			
		||||
			strBuffer.Set("Vector [ ");
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user