mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	add sample uno-files
This commit is contained in:
		
							
								
								
									
										154
									
								
								samples/Uno/PlayerPads.uno
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								samples/Uno/PlayerPads.uno
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,154 @@ | ||||
| using Uno; | ||||
| using Uno.Collections; | ||||
| using Uno.Graphics; | ||||
| using Uno.Scenes; | ||||
| using Uno.Designer; | ||||
| using Uno.Content; | ||||
| using Uno.Content.Models; | ||||
| using Uno.UI; | ||||
|  | ||||
| namespace PONG2D | ||||
| { | ||||
| 	public class PlayerPads : Node | ||||
| 	{ | ||||
|  | ||||
| 		Image _player1Image; | ||||
| 		Image _player2Image; | ||||
|  | ||||
| 		[Inline] | ||||
| 		public Image Player1 | ||||
| 		{ | ||||
| 			get { return _player1Image; } | ||||
| 			set | ||||
| 			{ | ||||
| 				if (_player1Image != value) | ||||
| 				{ | ||||
| 					_player1Image = value; | ||||
| 					 | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		[Inline] | ||||
| 		public Image Player2 | ||||
| 		{ | ||||
| 			get { return _player2Image; } | ||||
| 			set | ||||
| 			{ | ||||
| 				if (_player2Image != value) | ||||
| 				{ | ||||
| 					_player2Image = value; | ||||
| 					 | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		[Hide] | ||||
| 		public float2 Player1Pos | ||||
| 		{ | ||||
| 			get { return (Player1.ActualPosition); } | ||||
| 			set | ||||
| 			{ | ||||
| 				if (Player1 != null) | ||||
| 					Player1.Position = value; | ||||
| 				 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		[Hide] | ||||
| 		public float2 Player2Pos | ||||
| 		{ | ||||
| 			get { return (Player2.ActualPosition); } | ||||
| 			set | ||||
| 			{ | ||||
| 				if (Player2 != null) | ||||
| 					Player2.Position = value; | ||||
| 				 | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		public Rect Player1Rect | ||||
| 		{ | ||||
| 			get { return new Rect(Player1Pos, float2(Player1.Width, Player2.Height)); } | ||||
| 			set | ||||
| 			{ | ||||
| 				Player1Pos = value.Position; | ||||
| 				if (Player1 != null) | ||||
| 				{ | ||||
| 					Player1.Width = value.Size.X; | ||||
| 					Player1.Height = value.Size.Y; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		public Rect Player2Rect | ||||
| 		{ | ||||
| 			get { return new Rect(Player2Pos, float2(Player2.Width, Player2.Height)); } | ||||
| 			set | ||||
| 			{ | ||||
| 				Player2Pos = value.Position; | ||||
| 				if (Player2 != null) | ||||
| 				{ | ||||
| 					Player2.Width = value.Size.X; | ||||
| 					Player2.Height = value.Size.Y; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public Ball Ball | ||||
| 		{ | ||||
| 			get; | ||||
| 			set; | ||||
| 		} | ||||
| 		 | ||||
| 		public float PadVelocity { get; set; } | ||||
|  | ||||
| 		public PlayerPads() | ||||
| 		{ | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		void UpdatePositions() | ||||
| 		{ | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		protected override void OnUpdate() | ||||
| 		{ | ||||
| 			base.OnUpdate(); | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.W)) | ||||
| 			{ | ||||
| 				Player1Pos = float2(0, Player1Pos.Y - PadVelocity); | ||||
| 			} | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.S)) | ||||
| 			{ | ||||
| 				Player1Pos = float2(0, Player1Pos.Y + PadVelocity); | ||||
| 			} | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.Up)) | ||||
| 			{ | ||||
| 				Player2Pos = float2(0, Player2Pos.Y - PadVelocity); | ||||
| 			} | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.Down)) | ||||
| 			{ | ||||
| 				Player2Pos = float2(0, Player2Pos.Y + PadVelocity); | ||||
| 			} | ||||
| 			 | ||||
| 			if (Ball != null) | ||||
| 			{ | ||||
| 				 | ||||
| 				if (Ball.BallRectangle.Intersects(Player1Rect) || | ||||
| 					Ball.BallRectangle.Intersects(Player2Rect)) | ||||
| 				{ | ||||
| 					 | ||||
| 					Ball.BallVelocity = float2(Ball.BallVelocity.X * -1f, Ball.BallVelocity.Y); | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										139
									
								
								samples/Uno/Pong.uno
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								samples/Uno/Pong.uno
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | ||||
| using Uno; | ||||
| using Uno.Collections; | ||||
| using Uno.Graphics; | ||||
| using Uno.Scenes; | ||||
| using Uno.Content; | ||||
| using Uno.Content.Models; | ||||
|  | ||||
| namespace PONG2D | ||||
| { | ||||
| 	public class Pong : Node | ||||
| 	{ | ||||
| 		float2 _player1Pos; | ||||
| 		float2 _player2Pos; | ||||
| 		float2 ballPosition; | ||||
| 		float2 ballVelocity; | ||||
| 		float2 rectangleSize; | ||||
| 		 | ||||
| 		Rect player1Rect; | ||||
| 		Rect player2Rect; | ||||
| 		Rect ballRect; | ||||
| 		 | ||||
| 		float2 resolution = Context.VirtualResolution; | ||||
| 		 | ||||
| 		Random random = new Random(1); | ||||
| 		 | ||||
| 		 | ||||
| 		float2 Player1Pos | ||||
| 		{ | ||||
| 			get { return _player1Pos; } | ||||
| 			set | ||||
| 			{ | ||||
| 				_player1Pos = Math.Clamp(value, float2(0, 0), resolution - rectangleSize); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		float2 Player2Pos | ||||
| 		{ | ||||
| 			get { return _player2Pos; } | ||||
| 			set | ||||
| 			{ | ||||
| 				_player2Pos = Math.Clamp(value, float2(0, 0), resolution - rectangleSize); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		public Pong() | ||||
| 		{ | ||||
| 			Uno.Scenes.Input.AddGlobalListener(this); | ||||
| 		} | ||||
| 		 | ||||
| 		protected override void OnInitialize() | ||||
| 		{ | ||||
| 			base.OnInitialize(); | ||||
| 			UpdateValues();	 | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		void UpdateValues() | ||||
| 		{ | ||||
| 			rectangleSize = float2(resolution.X / 80f, resolution.Y / 5f); | ||||
| 			_player1Pos = float2(0f); | ||||
| 			_player2Pos = float2(Context.VirtualResolution.X - rectangleSize.X, 0f); | ||||
| 			 | ||||
| 			player1Rect = new Rect(_player1Pos, rectangleSize); | ||||
| 			player2Rect = new Rect(_player2Pos, rectangleSize); | ||||
| 			 | ||||
| 			ballPosition = float2(resolution.X * 0.5f - 10f, resolution.Y * 0.5f - 10f); | ||||
| 			ballRect = new Rect(ballPosition, float2(20f)); | ||||
| 			 | ||||
| 			 | ||||
| 			SpwanBall(); | ||||
| 			 | ||||
| 		} | ||||
| 		 | ||||
| 		void SpwanBall() | ||||
| 		{ | ||||
| 			ballRect.Position = float2(resolution.X * 0.5f - 10f, resolution.Y * 0.5f - 10f); | ||||
| 			ballVelocity = float2(5f, 10f) * 0.5f; | ||||
| 		} | ||||
| 		 | ||||
| 		void OnWindowResize(object sender, EventArgs args) | ||||
| 		{ | ||||
| 			//UpdateValues(); | ||||
| 		} | ||||
| 		 | ||||
| 		protected override void OnUpdate() | ||||
| 		{ | ||||
| 			base.OnUpdate(); | ||||
| 			 | ||||
| 			var padVelocity = resolution.Y * (float)Application.Current.FrameInterval * 4f; | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.Up)) | ||||
| 			{ | ||||
| 				Player1Pos = float2(Player1Pos.X, Player1Pos.Y - padVelocity);	 | ||||
| 			} | ||||
| 			 | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.Down)) | ||||
| 			{ | ||||
| 				Player1Pos = float2(Player1Pos.X, Player1Pos.Y + padVelocity);	 | ||||
| 			} | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.W)) | ||||
| 			{ | ||||
| 				Player2Pos = float2(Player2Pos.X, Player2Pos.Y - padVelocity);	 | ||||
| 			} | ||||
|  | ||||
| 			if (Input.IsKeyDown(Uno.Platform.Key.S)) | ||||
| 			{ | ||||
| 				Player2Pos = float2(Player2Pos.X, Player2Pos.Y + padVelocity);	 | ||||
| 			} | ||||
| 			player1Rect.Position = Player1Pos; | ||||
| 			player2Rect.Position = Player2Pos; | ||||
| 			 | ||||
| 			if (ballRect.Position.X > resolution.X || ballRect.Position.X < 0) | ||||
| 			{ | ||||
| 				SpwanBall(); | ||||
| 			} | ||||
| 			if (ballRect.Position.Y > resolution.Y || | ||||
| 				ballRect.Position.Y < 0) | ||||
| 			{ | ||||
| 				ballVelocity.Y *= -1f; | ||||
| 			} | ||||
| 			 | ||||
| 			if (ballRect.Intersects(player1Rect) || | ||||
| 				ballRect.Intersects(player2Rect)) | ||||
| 			{ | ||||
| 				ballVelocity.X *= -1f; | ||||
| 			} | ||||
| 			 | ||||
| 			ballRect.Position += ballVelocity; | ||||
| 			 | ||||
| 		} | ||||
| 		 | ||||
|         protected override void OnDraw() | ||||
|         { | ||||
| 			Uno.Drawing.RoundedRectangle.Draw(player1Rect.Position, player1Rect.Size, float4(1f), 0); | ||||
| 			Uno.Drawing.RoundedRectangle.Draw(player2Rect.Position, player2Rect.Size, float4(1f), 0); | ||||
| 			Uno.Drawing.RoundedRectangle.Draw(ballRect.Position, ballRect.Size, float4(1f), 0f); | ||||
|         } | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										136
									
								
								samples/Uno/TowerBlock.uno
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								samples/Uno/TowerBlock.uno
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,136 @@ | ||||
| using Uno; | ||||
| using Uno.Collections; | ||||
| using Uno.Graphics; | ||||
| using Uno.Scenes; | ||||
| using Uno.Content; | ||||
| using Uno.Content.Models; | ||||
| using Uno.Physics.Box2D; | ||||
|  | ||||
| using TowerBuilder.Box2DMath; | ||||
|  | ||||
| namespace TowerBuilder | ||||
| { | ||||
| 	public class TowerBlock : TestBed | ||||
| 	{ | ||||
| 		Body floorBody, deleteBody, mouseBody; | ||||
|  | ||||
| 		private List<Body> bodies = new List<Body>(); | ||||
| 		private List<Body> bodiesToDelete = new List<Body>(); | ||||
|  | ||||
| 		private ContactListener contactListener; | ||||
|  | ||||
| 		protected override void OnInitializeTestBed() | ||||
| 		{ | ||||
| 			World.Gravity = float2(0, -25.0f); | ||||
| 			World.ContactListener = contactListener = new ContactListener(this); | ||||
| 			 | ||||
| 			bodies.Clear(); | ||||
| 			bodiesToDelete.Clear(); | ||||
|  | ||||
| 			CreateFloor(); | ||||
| 			CreateDeleteBody(); | ||||
| 			CreateBox2(); | ||||
| 		} | ||||
|  | ||||
| 		void CreateFloor() | ||||
| 		{ | ||||
| 			var bodyDef = new BodyDef(); | ||||
| 			bodyDef.position = float2(0, -40.0f); | ||||
|  | ||||
| 			floorBody = World.CreateBody(bodyDef); | ||||
|  | ||||
| 			var shape = new PolygonShape(); | ||||
| 			shape.SetAsBox(30.0f, 10.0f); | ||||
|  | ||||
| 			var fixtureDef = new FixtureDef(); | ||||
| 			fixtureDef.shape = shape; | ||||
| 			fixtureDef.density = 1.0f; | ||||
|  | ||||
| 			floorBody.CreateFixture(fixtureDef); | ||||
| 		} | ||||
|  | ||||
| 		void CreateDeleteBody() | ||||
| 		{ | ||||
| 			var bodyDef = new BodyDef(); | ||||
| 			bodyDef.position = float2(0, -44.0f); | ||||
|  | ||||
| 			deleteBody = World.CreateBody(bodyDef); | ||||
|  | ||||
| 			var shape = new PolygonShape(); | ||||
| 			shape.SetAsBox(200.0f, 10.0f); | ||||
|  | ||||
| 			var fixtureDef = new FixtureDef(); | ||||
| 			fixtureDef.shape = shape; | ||||
| 			fixtureDef.density = 1.0f; | ||||
|  | ||||
| 			deleteBody.CreateFixture(fixtureDef); | ||||
| 		} | ||||
|  | ||||
| 		Random random = new Random((int) (Uno.Diagnostics.Clock.GetSeconds() * 1000000)); | ||||
| 		void CreateBox2() | ||||
| 		{ | ||||
| 			var bodyDef = new BodyDef(); | ||||
| 			bodyDef.type = BodyType.Dynamic; | ||||
| 			bodyDef.position = float2(random.NextFloat(-25f, 25f), 50.0f); | ||||
| 			bodyDef.angularVelocity = random.NextFloat() * 40 - 20; | ||||
| 			bodyDef.userData = float3(0, 0, 0); | ||||
|  | ||||
| 			var body = World.CreateBody(bodyDef); | ||||
|  | ||||
| 			var shape = new PolygonShape(); | ||||
| 			shape.SetAsBox(0.75f, 0.75f); | ||||
|  | ||||
| 			var fixtureDef = new FixtureDef(); | ||||
| 			fixtureDef.shape = shape; | ||||
| 			fixtureDef.density = 5.0f; | ||||
| 			//fixtureDef.friction = 0.75f; | ||||
|  | ||||
| 			body.CreateFixture(fixtureDef); | ||||
|  | ||||
| 			bodies.Add(body); | ||||
| 		} | ||||
| 		 | ||||
| 		private int c = 0; | ||||
| 		protected override void OnFixedUpdate() | ||||
| 		{ | ||||
| 			base.OnFixedUpdate(); | ||||
| 			 | ||||
| 			debug_log bodies.Count; | ||||
| 			if(c++ % 8 == 0 && bodies.Count < 20) CreateBox2(); | ||||
|  | ||||
| 			foreach(var body in bodiesToDelete) | ||||
| 			{ | ||||
| 				World.DestroyBody(body); | ||||
| 				bodies.Remove(body); | ||||
| 			} | ||||
|  | ||||
| 			bodiesToDelete.Clear(); | ||||
| 		} | ||||
|  | ||||
| 		public class ContactListener : IContactListener | ||||
| 		{ | ||||
| 			private TowerBlock b; | ||||
| 			public ContactListener(TowerBlock b) | ||||
| 			{ | ||||
| 				this.b = b; | ||||
| 			} | ||||
|  | ||||
| 			public void BeginContact(Contact contact) | ||||
| 			{ | ||||
| 				if(contact.GetFixtureA().GetBody() == b.deleteBody) | ||||
| 				{ | ||||
| 					b.bodiesToDelete.Add(contact.GetFixtureB().GetBody()); | ||||
| 				} | ||||
| 				else if(contact.GetFixtureB().GetBody() == b.deleteBody) | ||||
| 				{ | ||||
| 					b.bodiesToDelete.Add(contact.GetFixtureA().GetBody()); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
|         	public void EndContact(Contact contact)  {} | ||||
| 			public void PreSolve(Contact contact, ref Manifold manifold) {} | ||||
| 			public void PostSolve(Contact contact, ref ContactImpulse impulse) {} | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user