more refactoring

This commit is contained in:
Michele Scandura 2020-11-09 16:47:17 +00:00
parent d61f46d07a
commit 886d2a88b0
13 changed files with 592 additions and 573 deletions

View file

@ -15,12 +15,8 @@ namespace SignalRChat.Hubs
{
public class SledgemapperHub : Hub<ISledgemapperClient>
{
private readonly IMediator _mediator;
private readonly MyDbContext _dbcontext;
// public SledgemapperHub(IMediator mediator) => _mediator = mediator;
public SledgemapperHub(MyDbContext dbcontext, IMediator mediator) { _dbcontext = dbcontext; _mediator = mediator; }
private static Dictionary<string, SessionData> _sessions = new Dictionary<string, SessionData>();
public SledgemapperHub() { }
private static Dictionary<string, Session> _sessions = new Dictionary<string, Session>();
public List<string> Colors = new List<string>{"CC0000",
"CC3300",
"FFCC00",
@ -33,86 +29,86 @@ namespace SignalRChat.Hubs
public async Task NewTile(string sessionName, Tile tile)
{
var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
// var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
var existingTile = _sessions[sessionName].Map.TryGetValue(tile.ToString(), out var t);
if (existingTile)
{
_sessions[sessionName].Map.TryRemove(t.ToString(), out var rtile);
}
_sessions[sessionName].Map.TryAdd(tile.ToString(), tile);
// var existingTile = _sessions[sessionName].Map.TryGetValue(tile.ToString(), out var t);
// if (existingTile)
// {
// _sessions[sessionName].Map.TryRemove(t.ToString(), out var rtile);
// }
// _sessions[sessionName].Map.TryAdd(tile.ToString(), tile);
var jsonString = JsonSerializer.Serialize<Tile>(tile);
// var jsonString = JsonSerializer.Serialize<Tile>(tile);
_dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog
{
Operation = "N",
SessionName = sessionName,
Type = "T",
Timestamp = timestamp,
Object = jsonString
});
await _dbcontext.SaveChangesAsync();
// _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog
// {
// Operation = "N",
// SessionName = sessionName,
// Type = "T",
// Timestamp = timestamp,
// Object = jsonString
// });
// await _dbcontext.SaveChangesAsync();
await Clients.Group(sessionName).NewTile(tile);
}
public async Task NewWall(string sessionName, Wall tile)
{
var existingTile = _sessions[sessionName].Walls.TryGetValue(tile.ToString(), out var t);
if (existingTile)
{
_sessions[sessionName].Walls.TryRemove(t.ToString(), out var rtile);
}
_sessions[sessionName].Walls.TryAdd(tile.ToString(), tile);
// var existingTile = _sessions[sessionName].Walls.TryGetValue(tile.ToString(), out var t);
// if (existingTile)
// {
// _sessions[sessionName].Walls.TryRemove(t.ToString(), out var rtile);
// }
// _sessions[sessionName].Walls.TryAdd(tile.ToString(), tile);
await Clients.Group(sessionName).NewWall(tile);
}
public async Task NewOverlay(string sessionName, Overlay tile)
{
var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
var existingTile = _sessions[sessionName].Overlays.TryGetValue(tile.ToString(), out var t);
if (existingTile)
{
_sessions[sessionName].Overlays.TryRemove(t.ToString(), out var rtile);
}
_sessions[sessionName].Overlays.TryAdd(tile.ToString(), tile);
var jsonString = JsonSerializer.Serialize<Overlay>(tile);
// var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
// var existingTile = _sessions[sessionName].Overlays.TryGetValue(tile.ToString(), out var t);
// if (existingTile)
// {
// _sessions[sessionName].Overlays.TryRemove(t.ToString(), out var rtile);
// }
// _sessions[sessionName].Overlays.TryAdd(tile.ToString(), tile);
// var jsonString = JsonSerializer.Serialize<Overlay>(tile);
_dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog
{
Operation = "N",
SessionName = sessionName,
Type = "O",
Timestamp = timestamp,
Object = jsonString
});
await _dbcontext.SaveChangesAsync();
// _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog
// {
// Operation = "N",
// SessionName = sessionName,
// Type = "O",
// Timestamp = timestamp,
// Object = jsonString
// });
// await _dbcontext.SaveChangesAsync();
await Clients.Group(sessionName).NewOverlay(tile);
}
public async Task DeleteTile(string sessionName, Tile tile)
{
_sessions[sessionName].Map.TryRemove(tile.ToString(), out var rtile);
// _sessions[sessionName].Map.TryRemove(tile.ToString(), out var rtile);
await Clients.Group(sessionName).DeleteTile(tile);
}
public async Task DeleteWall(string sessionName, Wall tile)
{
_sessions[sessionName].Walls.TryRemove(tile.ToString(), out var rtile);
//_sessions[sessionName].Walls.TryRemove(tile.ToString(), out var rtile);
await Clients.Group(sessionName).DeleteWall(tile);
}
public async Task DeleteOverlay(string sessionName, Overlay tile)
{
_sessions[sessionName].Overlays.TryRemove(tile.ToString(), out var rtile);
//_sessions[sessionName].Overlays.TryRemove(tile.ToString(), out var rtile);
await Clients.Group(sessionName).DeleteOverlay(tile);
}
public async Task<SessionData> NewSession(string sessionName, string initials)
public async Task<Session> NewSession(string sessionName, string initials)
{
var session = new SessionData();
var session = new Session();
session.Colors = new List<string>(Colors);
session.Colors.Shuffle();
var player = new Player { Position = new Tile { X = 0, Y = 0 }, ConnectionId = Context.ConnectionId, Color = session.Colors[0], Initials = initials };
@ -124,7 +120,7 @@ namespace SignalRChat.Hubs
return session;
}
public async Task<SessionData> JoinSession(string sessionName, string initials)
public async Task<Session> JoinSession(string sessionName, string initials)
{
if (_sessions.ContainsKey(sessionName))
{
@ -148,12 +144,12 @@ namespace SignalRChat.Hubs
await Clients.Group(sessionName).PlayerUpdate(player);
}
public async Task<SessionData> Refresh(string sessionName)
public async Task<Session> Refresh(string sessionName)
{
return _sessions[sessionName];
}
public async Task Sync(string sessionName, SessionData map)
public async Task Sync(string sessionName, Session map)
{
_sessions[sessionName].Map = map.Map;
_sessions[sessionName].Overlays = map.Overlays;