mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +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