示例#1
0
        public NormalRunController(
            InaraApi api,
            PersistentState state,
            EliteJournalParser logs,
            DataMangler dm)
        {
            this.api   = api;
            this.state = state;
            this.logs  = logs;
            this.dm    = dm;

            MaterialTypeLookup = dm.MaterialTypeLookup;

            MaterialTypes = new List <string>(dm.MaterialTypes);
            MaterialTypes.Add("Grand");

            MaterialOrder = new List <string>(dm.MaterialOrder);
            foreach (var type in MaterialTypes)
            {
                MaterialOrder.Add(type + " Total");
            }

            form                   = new MatUpdateForm(MaterialOrder);
            form.ReloadMats       += OnReloadMats;
            form.PostAndSave      += OnPostAndSave;
            form.CloseWithoutSave += OnCloseWithoutSave;
            form.Activated        += ReloadMatsIfNecessary;
        }
示例#2
0
        static void Main(string[] args)
        {
            var dm          = DataMangler.GetInstance();
            var journalPath = Filesystem.GuessJournalPath();
            var logs        = new EliteJournalParser(journalPath);
            var handler     = new InventoryHandler(dm.EngineerCostLookup);

            int data = 0;

            handler.InventoryChanged += (o, e) =>
            {
                if (e.Name == "scandatabanks" && e.Delta != 0)
                {
                    data += e.Delta;
                    Console.WriteLine("scandatabanks: " + data.ToString());
                }
            };

            foreach (var entry in logs.GetLogEntries())
            {
                entry.Accept(handler);
            }

            // Prevent the console from closing
            Console.ReadLine();
        }
示例#3
0
        public ICollection <string> GetCmdrs(string journalPath)
        {
            CharacterHandler   ChHandler = new CharacterHandler();
            EliteJournalParser Logs      = new EliteJournalParser(journalPath);

            foreach (var entry in Logs.GetLogEntries())
            {
                entry.Accept(ChHandler);
            }

            return(ChHandler.Cmdrs);
        }
示例#4
0
 public CheapHackController(EliteJournalParser logs,
                            PersistentState state)
 {
     Logs  = logs;
     State = state;
 }
示例#5
0
        static void Main(string[] args)
        {
            EliteJournalParser logs   = new EliteJournalParser("");
            DataMangler        dm     = DataMangler.GetInstance();
            InventorySet       Deltas = new InventorySet();
            IDictionary <string, IList <EliteJournalEntry> > MatSeen =
                new Dictionary <string, IList <EliteJournalEntry> >();

            EliteJournalDebugHandler dhandler
                = new EliteJournalDebugHandler();

            InventoryHandler mhandler
                = new InventoryHandler(dm.EngineerCostLookup);

            mhandler.InventoryChanged += (object sender, InventoryEventArgs e) =>
            {
                Deltas.AddMat(e.Name, e.Delta);
                if (!MatSeen.ContainsKey(e.Name))
                {
                    MatSeen[e.Name] = new List <EliteJournalEntry>();
                }
                MatSeen[e.Name].Add(e.JournalEntry);
            };

            var handlers = new List <EliteJournalHandler>()
            {
                dhandler, mhandler
            };

            foreach (var entry in logs.GetLogEntries())
            {
                entry.Accept(dhandler);
                entry.Accept(mhandler);
            }

            #region Show unknown log entries

            foreach (var evt in dhandler.UnknownEvents)
            {
                Console.WriteLine("Unknown Event: " + evt);
            }

            #endregion

            #region Show confirmed material names

            var deltas = new InventorySet();
            var seen   = new Dictionary <string, IList <EliteJournalEntry> >();

            // Normalize the names to lowercase
            foreach (var mat in Deltas)
            {
                var name = mat.Key.ToLower();
                deltas.AddMat(name, mat.Value);

                if (!seen.ContainsKey(name))
                {
                    seen[name] = new List <EliteJournalEntry>();
                }

                // Insert seen events in the appropriate order
                var i = 0;
                foreach (var e in MatSeen[mat.Key])
                {
                    bool wasInserted = false;

                    while (i < seen[name].Count)
                    {
                        if (seen[name][i].Timestamp > e.Timestamp)
                        {
                            seen[name].Insert(i, e);
                            wasInserted = true;
                            break;
                        }
                        i++;
                    }

                    if (!wasInserted)
                    {
                        seen[name].Add(e);
                    }
                }
            }

            foreach (var mat in deltas)
            {
                if (dm.IgnoreCommodities.Contains(mat.Key))
                {
                    Console.WriteLine("\"Ignored Commodity\",\"{0}\",{1},\"{2}\"",
                                      mat.Key.ToLower(), mat.Value,
                                      seen[mat.Key][0].Timestamp);
                }
            }

            foreach (var mat in deltas)
            {
                if (!dm.IgnoreCommodities.Contains(mat.Key))
                {
                    Console.WriteLine("\"Confirmed Material\",\"{0}\",{1},\"{2}\"",
                                      mat.Key.ToLower(), mat.Value,
                                      seen[mat.Key][0].Timestamp);
                }
            }

            #endregion

            // Prevent the console from closing
            Console.ReadLine();
        }
示例#6
0
        static void Main()
        {
            // We would like to thank Microsoft for their generous donation of
            // these next two codes.
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Set up Internal Constants
            DataMangler dm = DataMangler.GetInstance();

            // Set up Registry Keys
            Configuration cfg = new Configuration();

            // See if we need to upgrade the state file
            HandleUpgrade();

            // Program will run in a loop until user chooses "Exit"
            // on the chooser, or in the main window
            ChooseCmdrController choose = new ChooseCmdrController(cfg);

            while (choose.Run())
            {
                // Picard Persistent State
                PersistentState state = new PersistentState(
                    Filesystem.GetStatePath(choose.CmdrName));

                // This needs to be refactored out entirely since the
                // name is basically chosen on startup.  But for now
                // this should solve the problem.
                state.CurrentState.EliteCmdrName = choose.CmdrName;

                // Inara.cz API
                InaraApi api = new InaraApi();

                // Elite Dangerous Gameplay Logs
                EliteJournalParser logs = new EliteJournalParser(
                    choose.JournalPath);

                // Show a login dialog box and handle user authentication with Inara
                AuthenticationController authCtrl = new AuthenticationController(api, state);
                authCtrl.Run();

                // If unauthenticated, that means they closed the login form
                // Just exit without error, don't write anything
                if (!api.isAuthenticated)
                {
                    continue;
                }

                if (!state.HasHistory())
                {
                    // If there is no stored history, perform an initial
                    // import and then exit
                    FirstRunController firstRunCtrl = new FirstRunController(
                        api, state);
                    firstRunCtrl.Run();
                }
                else
                {
                    // If there is stored history, run the main program.
                    NormalRunController normalRunCtrl = new NormalRunController(
                        api, state, logs, dm);
                    normalRunCtrl.Run();
                }
            }

            /*if(!state.HasEliteCmdrName())
             * {
             *  StateFileUpgrader.StateFileUpgrader drat = new StateFileUpgrader.StateFileUpgrader(logs, state);
             *  drat.Run();
             * }
             *
             * if (state.HasEliteCmdrName())
             * {
             * }*/
        }