mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-28 17:20: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