intermediat fleet loader, no processing yet.
This commit is contained in:
		@@ -96,6 +96,7 @@ public partial class CSVDataLoader : IEnableLogger
 | 
			
		||||
 | 
			
		||||
                FleetManager.PostProcessImportedData(); 
 | 
			
		||||
                FleetManager fleetManager = Locator.Current.GetService<FleetManager>()!;
 | 
			
		||||
                fleetManager.InitFromDatabase();
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,21 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Immutable;
 | 
			
		||||
using System.Collections.ObjectModel;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Reactive;
 | 
			
		||||
using System.Reactive.Linq;
 | 
			
		||||
using System.Text.RegularExpressions;
 | 
			
		||||
using Avalonia.Controls.Platform;
 | 
			
		||||
using DynamicData;
 | 
			
		||||
using DynamicData.Binding;
 | 
			
		||||
using ReactiveUI;
 | 
			
		||||
using Splat;
 | 
			
		||||
using StarsAssistant.Model;
 | 
			
		||||
using StarsAssistant.ViewModels;
 | 
			
		||||
 | 
			
		||||
namespace StarsAssistant.Services;
 | 
			
		||||
 | 
			
		||||
public class FleetManager
 | 
			
		||||
public class FleetManager : IEnableLogger
 | 
			
		||||
{
 | 
			
		||||
    protected Services.Game Game = Locator.Current.GetService<Services.Game>()!;
 | 
			
		||||
 | 
			
		||||
@@ -28,31 +33,75 @@ public class FleetManager
 | 
			
		||||
        public int TotalBoranium { get; set; }
 | 
			
		||||
        public int TotalGermanium { get; set; }
 | 
			
		||||
        public int TotalColonists { get; set; }
 | 
			
		||||
 | 
			
		||||
        public override string ToString() => $"To {Destination}: {TotalIronium}I/{TotalBoranium}B/{TotalGermanium}G/{TotalColonists}C";
 | 
			
		||||
    }
 | 
			
		||||
    private IObservable<IChangeSet<FleetSummary, string>>? _fleetSummaries;
 | 
			
		||||
    private IObservable<IChangeSet<FleetSummary>>? _fleetSummaries;
 | 
			
		||||
 | 
			
		||||
    private ReadOnlyObservableCollection<FleetSummary>? summaries;
 | 
			
		||||
 | 
			
		||||
    private IDisposable? d1;
 | 
			
		||||
 | 
			
		||||
    private IDisposable? d2;
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public void test() 
 | 
			
		||||
    {
 | 
			
		||||
        var xxxxx = _fleets.Connect()
 | 
			
		||||
        _fleetSummaries = _fleets.Connect()
 | 
			
		||||
            .Filter(fleet => fleet.TrueDestination != "-- ")
 | 
			
		||||
            .GroupOn(fleet => fleet.TrueDestination)
 | 
			
		||||
            .Transform(group => 
 | 
			
		||||
                group.List.Connect()
 | 
			
		||||
                .ToCollection()
 | 
			
		||||
                .Select(query => 
 | 
			
		||||
            .Log(this, $"{DateTime.Now.ToLongTimeString()} fleetWatcher", grp => $"{grp.TotalChanges} detected")
 | 
			
		||||
            .Transform(group => new FleetSummary
 | 
			
		||||
                {   
 | 
			
		||||
                    var iro = query.Sum(f => f.Ironium);
 | 
			
		||||
                    var bor = query.Sum(f => f.Boranium);
 | 
			
		||||
                    var ger = query.Sum(f => f.Germanium);
 | 
			
		||||
                    var col = query.Sum(f => f.Colonists);
 | 
			
		||||
                    return new FleetSummary 
 | 
			
		||||
                    {
 | 
			
		||||
                        Destination = group.GroupKey,
 | 
			
		||||
                        TotalIronium = iro,
 | 
			
		||||
                        TotalBoranium = bor,
 | 
			
		||||
                        TotalGermanium = ger,
 | 
			
		||||
                        TotalColonists = col
 | 
			
		||||
                    };
 | 
			
		||||
                    Destination = group.GroupKey,
 | 
			
		||||
                    TotalIronium = group.List.Items.Sum(f => f.Ironium),
 | 
			
		||||
                    TotalBoranium = group.List.Items.Sum(f => f.Boranium),
 | 
			
		||||
                    TotalGermanium = group.List.Items.Sum(f => f.Germanium),
 | 
			
		||||
                    TotalColonists = group.List.Items.Sum(f => f.Colonists)
 | 
			
		||||
                })
 | 
			
		||||
            // .Transform(group => 
 | 
			
		||||
            //     group.List.Connect()
 | 
			
		||||
            //     .QueryWhenChanged(query => 
 | 
			
		||||
            //     {
 | 
			
		||||
            //         var iro = query.Sum(f => f.Ironium);
 | 
			
		||||
            //         var bor = query.Sum(f => f.Boranium);
 | 
			
		||||
            //         var ger = query.Sum(f => f.Germanium);
 | 
			
		||||
            //         var col = query.Sum(f => f.Colonists);
 | 
			
		||||
            //         return new FleetSummary 
 | 
			
		||||
            //         {
 | 
			
		||||
            //             Destination = group.GroupKey,
 | 
			
		||||
            //             TotalIronium = iro,
 | 
			
		||||
            //             TotalBoranium = bor,
 | 
			
		||||
            //             TotalGermanium = ger,
 | 
			
		||||
            //             TotalColonists = col
 | 
			
		||||
            //         };
 | 
			
		||||
            //     })                    
 | 
			
		||||
            // )
 | 
			
		||||
        ;
 | 
			
		||||
        
 | 
			
		||||
        _fleetSummaries
 | 
			
		||||
            .ObserveOn(RxApp.MainThreadScheduler)
 | 
			
		||||
            .Bind(out summaries)
 | 
			
		||||
            .DisposeMany()
 | 
			
		||||
            .Subscribe();
 | 
			
		||||
 | 
			
		||||
        d1 = summaries
 | 
			
		||||
            .Subscribe(Observer.Create<FleetSummary>(f => 
 | 
			
		||||
                {
 | 
			
		||||
                    this.Log().Debug($"FleetSummary observed: {f}");
 | 
			
		||||
                }
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
        d2 = _fleetSummaries
 | 
			
		||||
            .ObserveOn(RxApp.MainThreadScheduler)
 | 
			
		||||
            .Subscribe(x => 
 | 
			
		||||
            {
 | 
			
		||||
                var lst = x.ToList();
 | 
			
		||||
                foreach (var f in lst)
 | 
			
		||||
                {
 | 
			
		||||
                    this.Log().Debug($"Reason {f.Reason}, Type {f.Type}: {f.Item.Current}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -145,6 +145,8 @@ public class Game
 | 
			
		||||
            __createTestData();
 | 
			
		||||
 | 
			
		||||
        PlanetManager.InitFromDatabase();
 | 
			
		||||
        FleetManager.InitFromDatabase();
 | 
			
		||||
        FleetManager.test();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user