Exemple #1
0
        private void buttonAddCommander_Click(object sender, EventArgs e)
        {
            CommanderForm cf = new CommanderForm();

            cf.Init(true);

            if (cf.ShowDialog(this) == DialogResult.OK)
            {
                if (cf.Valid && !EDCommander.IsCommanderPresent(cf.CommanderName))
                {
                    EDCommander cmdr = new EDCommander();
                    cf.Update(cmdr);
                    EDCommander.Create(cmdr);
                    UpdateCommandersListBox();
                    _discoveryForm.TravelControl.LoadCommandersListBox();
                    _discoveryForm.ExportControl.PopulateCommanders();
                    _discoveryForm.RefreshHistoryAsync();           // will do a new parse on commander list adding/removing scanners
                    btnDeleteCommander.Enabled = EDCommander.NumberOfCommanders > 1;
                }
                else
                {
                    Forms.MessageBoxTheme.Show(this, "Command name is not valid or duplicate", "Cannot create Commander", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
        }
        private void comboBoxCommander_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxCommander.SelectedIndex >= 0 && comboBoxCommander.Enabled)     // DONT trigger during LoadCommandersListBox
            {
                var itm = (EDCommander)comboBoxCommander.SelectedItem;
                if (itm.Nr >= 0)
                {
                    EDCommander.CurrentCmdrID = itm.Nr;
                }

                buttonSync.Enabled = EDCommander.Current.SyncToEdsm | EDCommander.Current.SyncFromEdsm;

                _discoveryForm.RefreshHistoryAsync(currentcmdr: itm.Nr);                                   // which will cause DIsplay to be called as some point
            }
        }
        private void SubmitToEDSM()
        {
            try
            {
                edsm.apiKey        = EDCommander.Current.APIKey;
                edsm.commanderName = EDCommander.Current.EdsmName;

                var travelHistoryControl = _discoveryForm.TravelControl;
                if (string.IsNullOrEmpty(edsm.commanderName))
                {
                    string commanderName = EDCommander.Current.EdsmName;

                    if (string.IsNullOrEmpty(commanderName))
                    {
                        this.BeginInvoke(new MethodInvoker(() =>
                        {
                            ExtendedControls.MessageBoxTheme.Show("Please enter commander name before submitting the system!");
                            UnfreezeTrilaterationUI();
                        }));
                        return;
                    }
                    edsm.commanderName = commanderName;
                }
                var distances = new Dictionary <string, double>();
                for (int i = 0, count = dataGridViewDistances.Rows.Count - 1; i < count; i++)
                {
                    var systemCell   = dataGridViewDistances[0, i];
                    var distanceCell = dataGridViewDistances[1, i];
                    if (systemCell.Value != null && distanceCell.Value != null)
                    {
                        var system = systemCell.Value.ToString();

                        var value          = distanceCell.Value.ToString().Trim();
                        var parsedDistance = DistanceParser.ParseInterstellarDistance(value);

                        if (parsedDistance.HasValue)
                        {
                            // can over-ride drop down now if it's a real system so you could add duplicates if you wanted (even once I've figured out issue #81 which makes it easy if not likely...)
                            if (!distances.Keys.Contains(system))
                            {
                                distances.Add(system, parsedDistance.Value);
                            }
                        }
                    }
                }

                bool trilatOk = false;
                bool respOk   = true;
                List <KeyValuePair <string, double> > distlist = distances.ToList();

                for (int i = 0; i < distances.Count; i += 20)
                {
                    var dists = new Dictionary <string, double>();
                    for (int j = i; j < i + 20 && j < distances.Count; j++)
                    {
                        dists[distlist[j].Key] = distlist[j].Value;
                    }

                    var responseM = edsm.SubmitDistances(edsm.commanderName, TargetSystem.name, dists);

                    Console.WriteLine(responseM);

                    string infoM;
                    bool   trilaterationOkM;
                    var    responseOkM = edsm.ShowDistanceResponse(responseM, out infoM, out trilaterationOkM);

                    if (trilaterationOkM)
                    {
                        trilatOk = true;
                    }

                    if (!responseOkM)
                    {
                        respOk = false;
                    }

                    Console.WriteLine(infoM);
                }

                BeginInvoke((MethodInvoker) delegate
                {
                    UnfreezeTrilaterationUI();

                    if (respOk && trilatOk)
                    {
                        LogTextSuccess("EDSM submission succeeded, trilateration successful." + Environment.NewLine);
                        _discoveryForm.RefreshHistoryAsync();
                        checkForUnknownSystemsNowKnown();
                    }
                    else if (respOk)
                    {
                        LogTextHighlight("EDSM submission succeeded, but trilateration failed. Try adding more distances." + Environment.NewLine);
                    }
                    else
                    {
                        LogTextHighlight("EDSM submission failed." + Environment.NewLine);
                    }
                });
            }
            catch (Exception ex)
            {
                this.BeginInvoke(new MethodInvoker(() =>
                {
                    LogTextHighlight("SubmitToEDSM Exception:" + ex.Message);
                    LogText(ex.StackTrace);
                }));
            }
        }