63 lines
2.2 KiB
C#
63 lines
2.2 KiB
C#
using static AgroBase.Models.Enums;
|
|
|
|
namespace OperationControl.Mapas.Creation
|
|
{
|
|
/// <summary>
|
|
/// Estado transitório da criação de mapa.
|
|
/// Não altera o Workspace até o operador explicitamente concluir.
|
|
/// </summary>
|
|
public sealed class MapaEstadoCriacao
|
|
{
|
|
private readonly List<MapaRuaCriacao> _ruas = new();
|
|
|
|
public bool EmCriacao { get; internal set; }
|
|
public string Nome { get; internal set; } = string.Empty;
|
|
public TipoMapaOperacao Tipo { get; internal set; } = TipoMapaOperacao.Indefinido;
|
|
public MapaModoCapturaCriacao ModoCaptura { get; internal set; } = MapaModoCapturaCriacao.Manual;
|
|
public bool GravacaoAutomaticaAtiva { get; internal set; }
|
|
public double DistanciaMinimaCapturaAutomaticaMetros { get; internal set; } = 0.50;
|
|
public int IndiceRuaAtual { get; internal set; }
|
|
|
|
public IReadOnlyList<MapaRuaCriacao> Ruas => _ruas;
|
|
internal List<MapaRuaCriacao> RuasMutaveis => _ruas;
|
|
|
|
public int QuantidadeRuas => _ruas.Count;
|
|
public int QuantidadeRuasValidas => _ruas.Count(x => x != null && x.Valida);
|
|
public int QuantidadePontosTotal => _ruas.Sum(x => x?.QuantidadePontos ?? 0);
|
|
|
|
public MapaRuaCriacao? RuaAtual
|
|
{
|
|
get
|
|
{
|
|
if (IndiceRuaAtual < 0 || IndiceRuaAtual >= _ruas.Count)
|
|
return null;
|
|
|
|
return _ruas[IndiceRuaAtual];
|
|
}
|
|
}
|
|
|
|
public bool PodeCriarNovaRua =>
|
|
EmCriacao &&
|
|
!GravacaoAutomaticaAtiva &&
|
|
RuaAtual?.Valida == true;
|
|
|
|
public bool PodeSalvar =>
|
|
EmCriacao &&
|
|
!GravacaoAutomaticaAtiva &&
|
|
_ruas.Count > 0 &&
|
|
_ruas.All(x => x != null && x.Valida);
|
|
|
|
internal void Limpar()
|
|
{
|
|
_ruas.Clear();
|
|
EmCriacao = false;
|
|
Nome = string.Empty;
|
|
Tipo = TipoMapaOperacao.Indefinido;
|
|
ModoCaptura = MapaModoCapturaCriacao.Manual;
|
|
GravacaoAutomaticaAtiva = false;
|
|
DistanciaMinimaCapturaAutomaticaMetros = 0.50;
|
|
IndiceRuaAtual = 0;
|
|
}
|
|
}
|
|
}
|