send scores to big display
This commit is contained in:
		
							parent
							
								
									a89392beb8
								
							
						
					
					
						commit
						7f00160780
					
				
					 22 changed files with 305 additions and 126 deletions
				
			
		| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
using TanksServer.DrawSteps;
 | 
			
		||||
using TanksServer.Helpers;
 | 
			
		||||
using TanksServer.ServicePointDisplay;
 | 
			
		||||
using TanksServer.Services;
 | 
			
		||||
 | 
			
		||||
namespace TanksServer.TickSteps;
 | 
			
		||||
| 
						 | 
				
			
			@ -8,30 +8,14 @@ internal sealed class DrawStateToFrame(
 | 
			
		|||
    IEnumerable<IDrawStep> drawSteps, LastFinishedFrameProvider lastFrameProvider
 | 
			
		||||
) : ITickStep
 | 
			
		||||
{
 | 
			
		||||
    private const uint GameFieldPixelCount = MapService.PixelsPerRow * MapService.PixelsPerColumn;
 | 
			
		||||
    private readonly List<IDrawStep> _drawSteps = drawSteps.ToList();
 | 
			
		||||
 | 
			
		||||
    public Task TickAsync()
 | 
			
		||||
    {
 | 
			
		||||
        var buffer = CreateGameFieldPixelBuffer();
 | 
			
		||||
        var buffer = PixelDisplayBufferView.New(0, 0, MapService.TilesPerRow, MapService.PixelsPerColumn);
 | 
			
		||||
        foreach (var step in _drawSteps)
 | 
			
		||||
            step.Draw(buffer);
 | 
			
		||||
        lastFrameProvider.LastFrame = buffer;
 | 
			
		||||
        return Task.CompletedTask;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static DisplayPixelBuffer CreateGameFieldPixelBuffer()
 | 
			
		||||
    {
 | 
			
		||||
        var data = new byte[10 + GameFieldPixelCount / 8];
 | 
			
		||||
        var result = new DisplayPixelBuffer(data)
 | 
			
		||||
        {
 | 
			
		||||
            Magic1 = 0,
 | 
			
		||||
            Magic2 = 19,
 | 
			
		||||
            X = 0,
 | 
			
		||||
            Y = 0,
 | 
			
		||||
            WidthInTiles = MapService.TilesPerRow,
 | 
			
		||||
            HeightInPixels = MapService.PixelsPerColumn
 | 
			
		||||
        };
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
using System.Net.Sockets;
 | 
			
		||||
using TanksServer.Models;
 | 
			
		||||
using TanksServer.Services;
 | 
			
		||||
 | 
			
		||||
namespace TanksServer.TickSteps;
 | 
			
		||||
 | 
			
		||||
internal sealed class SendToServicePointDisplay(
 | 
			
		||||
    IOptions<ServicePointDisplayConfiguration> options,
 | 
			
		||||
    LastFinishedFrameProvider lastFinishedFrameProvider
 | 
			
		||||
) : ITickStep, IDisposable
 | 
			
		||||
{
 | 
			
		||||
    private readonly UdpClient? _udpClient = options.Value.Enable
 | 
			
		||||
        ? new(options.Value.Hostname, options.Value.Port)
 | 
			
		||||
        : null;
 | 
			
		||||
 | 
			
		||||
    public Task TickAsync()
 | 
			
		||||
    {
 | 
			
		||||
        return _udpClient?.SendAsync(lastFinishedFrameProvider.LastFrame.Data).AsTask() ?? Task.CompletedTask;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Dispose()
 | 
			
		||||
    {
 | 
			
		||||
        _udpClient?.Dispose();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -4,7 +4,9 @@ using TanksServer.Services;
 | 
			
		|||
namespace TanksServer.TickSteps;
 | 
			
		||||
 | 
			
		||||
internal sealed class ShootFromTanks(
 | 
			
		||||
    TankManager tanks, IOptions<TanksConfiguration> options, BulletManager bulletManager
 | 
			
		||||
    TankManager tanks,
 | 
			
		||||
    IOptions<TanksConfiguration> options,
 | 
			
		||||
    BulletManager bulletManager
 | 
			
		||||
) : ITickStep
 | 
			
		||||
{
 | 
			
		||||
    private readonly TanksConfiguration _config = options.Value;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,4 +36,4 @@ internal sealed class ShootFromTanks(
 | 
			
		|||
 | 
			
		||||
        bulletManager.Spawn(new Bullet(tank.Owner, position, tank.Rotation));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue