mirror of
https://github.com/sbrl/Nibriboard.git
synced 2018-01-10 21:33:49 +00:00
[server] Rework line part reflections.
This commit is contained in:
parent
551ceeb17e
commit
e0d7bf4bc4
4 changed files with 39 additions and 42 deletions
|
@ -5,24 +5,6 @@ using SBRL.Utilities;
|
|||
|
||||
namespace Nibriboard.Client
|
||||
{
|
||||
public class LinePartEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// The client who drew the additional points.
|
||||
/// </summary>
|
||||
public NibriClient DrawingClient;
|
||||
/// <summary>
|
||||
/// The id of the line that justu had some points added to it.
|
||||
/// </summary>
|
||||
public string LineId;
|
||||
/// <summary>
|
||||
/// The new points that got added to the line.
|
||||
/// </summary>
|
||||
public List<LocationReference> NewPoints;
|
||||
}
|
||||
|
||||
public delegate void OnLinePartAddition(object sender, LinePartEventArgs eventArgs);
|
||||
|
||||
/// <summary>
|
||||
/// Manages the construction of lines that the clients are drawing bit by bit.
|
||||
/// </summary>
|
||||
|
@ -47,11 +29,6 @@ namespace Nibriboard.Client
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fired when points get added to a line in this incubator.
|
||||
/// </summary>
|
||||
public event OnLinePartAddition OnLinePartAddition;
|
||||
|
||||
public LineIncubator()
|
||||
{
|
||||
}
|
||||
|
@ -72,7 +49,7 @@ namespace Nibriboard.Client
|
|||
/// </summary>
|
||||
/// <param name="lineId">The line id to add the points to.</param>
|
||||
/// <param name="points">The points to add to the lines.</param>
|
||||
public void AddBit(NibriClient drawingClient, string lineId, List<LocationReference> points)
|
||||
public void AddBit(string lineId, List<LocationReference> points)
|
||||
{
|
||||
// Create a new line if one doesn't exist already
|
||||
if(!currentLines.ContainsKey(lineId))
|
||||
|
@ -80,12 +57,6 @@ namespace Nibriboard.Client
|
|||
|
||||
// Add these points to the line
|
||||
currentLines[lineId].Points.AddRange(points);
|
||||
|
||||
OnLinePartAddition(this, new LinePartEventArgs() {
|
||||
DrawingClient = drawingClient,
|
||||
LineId = lineId,
|
||||
NewPoints = points
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
31
Nibriboard/Client/Messages/LinePartReflectionMessage.cs
Normal file
31
Nibriboard/Client/Messages/LinePartReflectionMessage.cs
Normal file
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using SBRL.Utilities;
|
||||
|
||||
namespace Nibriboard.Client.Messages
|
||||
{
|
||||
/// <summary>
|
||||
/// The reflection of a <see cref="LinePartMessage" /> that's sent to everyone else on the same plane.
|
||||
/// Contains a list of point the client has added to the line they're drawing.
|
||||
/// </summary>
|
||||
public class LinePartReflectionMessage : Message
|
||||
{
|
||||
/// <summary>
|
||||
/// The id of the client drawing the line.
|
||||
/// </summary>
|
||||
public int OtherClientId;
|
||||
/// <summary>
|
||||
/// The id of the line to add the points to.
|
||||
/// </summary>
|
||||
public string LineId;
|
||||
/// <summary>
|
||||
/// The points to add to the line
|
||||
/// </summary>
|
||||
public List<Vector2> Points;
|
||||
|
||||
public LinePartReflectionMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -122,8 +122,6 @@ namespace Nibriboard.Client
|
|||
manager = inManager;
|
||||
client = inClient;
|
||||
|
||||
manager.LineIncubator.OnLinePartAddition += handleLinePartAddition;
|
||||
|
||||
client.DataReceived += async (WebSocket clientSocket, string frame) => {
|
||||
try
|
||||
{
|
||||
|
@ -401,6 +399,12 @@ namespace Nibriboard.Client
|
|||
|
||||
manager.LineIncubator.AddBit(message.LineId, linePoints);
|
||||
|
||||
manager.BroadcastPlane(this, new LinePartReflectionMessage() {
|
||||
OtherClientId = Id,
|
||||
LineId = message.LineId,
|
||||
Points = message.Points
|
||||
});
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
@ -448,16 +452,6 @@ namespace Nibriboard.Client
|
|||
Send(clientNotification);
|
||||
}
|
||||
|
||||
protected void handleLinePartAddition(object sender, LinePartEventArgs eventArgs)
|
||||
{
|
||||
// Ignore line part additions for ourselves and for clienst who aren't on the same plane as us
|
||||
if(eventArgs.DrawingClient.Id == Id ||
|
||||
eventArgs.DrawingClient.CurrentPlane != CurrentPlane)
|
||||
return;
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@
|
|||
<Compile Include="Client\Messages\ErrorMessage.cs" />
|
||||
<Compile Include="Client\Messages\PlaneChangeOkMessage.cs" />
|
||||
<Compile Include="Client\RawChunkReference.cs" />
|
||||
<Compile Include="Client\Messages\LinePartReflectionMessage.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="ClientFiles\index.html" />
|
||||
|
|
Loading…
Reference in a new issue