Exemple #1
0
        /// <summary>
        /// Update the characters position from ESI (will override the position read from any log files
        /// </summary>
        private async void UpdatePositionFromESI()
        {
            if (string.IsNullOrEmpty(ESIAccessToken))
            {
                return;
            }

            ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
            esiClient.SetCharacterData(ESIAuthData);
            ESI.NET.EsiResponse <ESI.NET.Models.Location.Location> esr = await esiClient.Location.Location();

            if (ESIHelpers.ValidateESICall <ESI.NET.Models.Location.Location>(esr))
            {
                Location = EveManager.Instance.SystemIDToName[esr.Data.SolarSystemId];
                System s = EVEData.EveManager.Instance.GetEveSystem(Location);
                if (s != null)
                {
                    Region = s.Region;
                }
                else
                {
                    Region = "";
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Update the characters position from ESI (will override the position read from any log files
        /// </summary>
        private async Task UpdatePositionFromESI()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                return;
            }

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);
                ESI.NET.EsiResponse <ESI.NET.Models.Location.Location> esr = await esiClient.Location.Location();

                if (ESIHelpers.ValidateESICall <ESI.NET.Models.Location.Location>(esr))
                {
                    if (!EveManager.Instance.SystemIDToName.Keys.Contains(esr.Data.SolarSystemId))
                    {
                        Location = "";
                        Region   = "";
                        return;
                    }
                    Location = EveManager.Instance.SystemIDToName[esr.Data.SolarSystemId];
                    System s = EVEData.EveManager.Instance.GetEveSystem(Location);
                    if (s != null)
                    {
                        Region = s.Region;
                    }
                    else
                    {
                        Region = "";
                    }
                }
            }
            catch { }
        }
Exemple #3
0
        /// <summary>
        /// Update the character info from the ESI data if linked
        /// </summary>
        private async Task UpdateInfoFromESI()
        {
            if (ID == 0 || !ESILinked)
            {
                return;
            }

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);


                //               if (CorporationID == -1 || AllianceID == -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Character.Information> esr = await esiClient.Character.Information((int)ID);

                    if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.Character.Information>(esr))
                    {
                        CorporationID = esr.Data.CorporationId;
                        AllianceID    = esr.Data.AllianceId;
                    }
                }


                if (AllianceID != 0)
                {
                    int page         = 0;
                    int maxPageCount = 1;
                    do
                    {
                        page++;

                        esiClient.SetCharacterData(ESIAuthData);
                        ESI.NET.EsiResponse <List <ESI.NET.Models.Contacts.Contact> > esr = await esiClient.Contacts.ListForAlliance(page);

                        if (EVEData.ESIHelpers.ValidateESICall <List <ESI.NET.Models.Contacts.Contact> >(esr))
                        {
                            if (esr.Pages.HasValue)
                            {
                                maxPageCount = (int)esr.Pages;
                            }

                            foreach (ESI.NET.Models.Contacts.Contact con in esr.Data)
                            {
                                Standings[con.ContactId] = (float)con.Standing;
                                LabelMap[con.ContactId]  = con.LabelId;
                            }
                        }
                    }while (page < maxPageCount);
                }
            }
            catch (Exception)
            {
            }

            EveManager.Instance.ResolveAllianceIDs(Standings.Keys.ToList());
        }
Exemple #4
0
        /// <summary>
        /// Add Destination to the route
        /// </summary>
        /// <param name="systemID">System to set destination to</param>
        /// <param name="clear">Clear all waypoints before setting?</param>
        public async void AddDestination(long systemID, bool clear)
        {
            if (clear)
            {
                Waypoints.Clear();
                ActiveRoute.Clear();
            }

            Waypoints.Add(EveManager.Instance.SystemIDToName[systemID]);


            UpdateActiveRoute();


            ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
            esiClient.SetCharacterData(ESIAuthData);

            bool firstRoute = true;

            foreach (Navigation.RoutePoint rp in ActiveRoute)
            {
                // explicitly add interim waypoints for ansiblex gates or actual waypoints
                if (rp.GateToTake == Navigation.GateType.Ansibex || Waypoints.Contains(rp.SystemName))
                {
                    long wayPointSysID = EveManager.Instance.GetEveSystem(rp.SystemName).ID;
                    ESI.NET.EsiResponse <string> esr = await esiClient.UserInterface.Waypoint(wayPointSysID, false, firstRoute);

                    if (EVEData.ESIHelpers.ValidateESICall <string>(esr))
                    {
                        routeNeedsUpdate = true;
                    }

                    firstRoute = false;
                }
            }

/*
 *          ESI.NET.EsiResponse<string> esr = await esiClient.UserInterface.Waypoint(systemID, false, true);
 *          if(EVEData.ESIHelpers.ValidateESICall<string>(esr))
 *          {
 *              routeNeedsUpdate = true;
 *          }
 */
        }
Exemple #5
0
        /// <summary>
        /// Update the characters logged on status from ESI
        /// </summary>
        private async Task UpdateOnlineStatus()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                return;
            }

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);
                ESI.NET.EsiResponse <ESI.NET.Models.Location.Activity> esr = await esiClient.Location.Online();

                if (ESIHelpers.ValidateESICall <ESI.NET.Models.Location.Activity>(esr))
                {
                    IsOnline = esr.Data.Online;
                }
            }
            catch { }
        }
Exemple #6
0
        /// <summary>
        /// Update the characters FleetInfo
        /// </summary>
        private async void UpdateFleetInfo()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                return;
            }

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                ESI.NET.EsiResponse <ESI.NET.Models.Fleets.FleetInfo> esr = await esiClient.Fleets.FleetInfo();

                if (ESIHelpers.ValidateESICall <ESI.NET.Models.Fleets.FleetInfo>(esr))
                {
                    FleetInfo.FleetID = esr.Data.FleetId;

                    // in fleet, extract info
                    ESI.NET.EsiResponse <List <ESI.NET.Models.Fleets.Member> > esrf = await esiClient.Fleets.Members(esr.Data.FleetId);

                    if (ESIHelpers.ValidateESICall <List <ESI.NET.Models.Fleets.Member> >(esrf))
                    {
                        foreach (ESI.NET.Models.Fleets.Member fm in esrf.Data)
                        {
                            //fm.CharacterId
                        }
                    }
                }
                else
                {
                    FleetInfo.FleetID = 0;
                    FleetInfo.Members.Clear();
                }
            }
            catch { }
        }
Exemple #7
0
        /// <summary>
        /// Update the character info from the ESI data if linked
        /// </summary>
        private async Task UpdateInfoFromESI()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                if (ESILinked)
                {
                    ESIAccessTokenExpiry = DateTime.Now;
                }
                return;
            }

            List <long> AllianceToResolve = new List <long>();

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                //if (CorporationID == -1 || AllianceID == -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Character.Information> esr = await esiClient.Character.Information((int)ID);

                    if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.Character.Information>(esr))
                    {
                        CorporationID = esr.Data.CorporationId;
                        AllianceID    = esr.Data.AllianceId;
                    }
                }

                // if we have an alliance, and no current standings set
                if (AllianceID != 0 && Standings.Count == 0)
                {
                    int page         = 0;
                    int maxPageCount = 1;
                    do
                    {
                        page++;

                        // SJS here.. list modifeied exception

                        esiClient.SetCharacterData(ESIAuthData);
                        ESI.NET.EsiResponse <List <ESI.NET.Models.Contacts.Contact> > esr = await esiClient.Contacts.ListForAlliance(page);

                        if (EVEData.ESIHelpers.ValidateESICall <List <ESI.NET.Models.Contacts.Contact> >(esr))
                        {
                            if (esr.Pages.HasValue)
                            {
                                maxPageCount = (int)esr.Pages;
                            }

                            if (esr.Data == null)
                            {
                                // in an alliance with no contacts
                                continue;
                            }

                            foreach (ESI.NET.Models.Contacts.Contact con in esr.Data)
                            {
                                Standings[con.ContactId] = (float)con.Standing;
                                // Removed LabelMap[con.ContactId] = con.LabelIds;

                                if (con.ContactType == "alliance")
                                {
                                    AllianceToResolve.Add(con.ContactId);
                                }
                            }
                        }
                    }while (page < maxPageCount);
                }
            }
            catch (Exception)
            {
            }

            await EveManager.Instance.ResolveAllianceIDs(AllianceToResolve);
        }
Exemple #8
0
        /// <summary>
        /// Update the characters FleetInfo
        /// </summary>
        private async Task UpdateFleetInfo()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                return;
            }

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                if (FleetInfo.NextFleetMembershipCheck < DateTime.Now)
                {
                    // route is cached for 60s, however checking this can hit the rate limit
                    FleetInfo.NextFleetMembershipCheck = DateTime.Now + TimeSpan.FromSeconds(240);

                    ESI.NET.EsiResponse <ESI.NET.Models.Fleets.FleetInfo> esr = await esiClient.Fleets.FleetInfo();

                    if (ESIHelpers.ValidateESICall <ESI.NET.Models.Fleets.FleetInfo>(esr))
                    {
                        FleetInfo.FleetID     = esr.Data.FleetId;
                        FleetInfo.IsFleetBoss = esr.Data.Role == "fleet_commander" ? true : false;
                    }
                    else
                    {
                        FleetInfo.FleetID = 0;

                        Application.Current.Dispatcher.Invoke((Action)(() =>
                        {
                            FleetInfo.Members.Clear();
                        }), DispatcherPriority.Normal);
                    }
                }

                if (FleetInfo.FleetID != 0 && FleetInfo.IsFleetBoss)
                {
                    List <long> characterIDsToResolve = new List <long>();

                    ESI.NET.EsiResponse <List <ESI.NET.Models.Fleets.Member> > esrf = await esiClient.Fleets.Members(FleetInfo.FleetID);

                    if (ESIHelpers.ValidateESICall <List <ESI.NET.Models.Fleets.Member> >(esrf))
                    {
                        foreach (Fleet.FleetMember ff in FleetInfo.Members)
                        {
                            ff.IsValid = false;
                        }

                        foreach (ESI.NET.Models.Fleets.Member esifm in esrf.Data)
                        {
                            Fleet.FleetMember fm = null;

                            foreach (Fleet.FleetMember ff in FleetInfo.Members)
                            {
                                if (ff.CharacterID == esifm.CharacterId)
                                {
                                    fm         = ff;
                                    fm.IsValid = true;
                                }
                            }

                            if (fm == null)
                            {
                                fm         = new Fleet.FleetMember();
                                fm.IsValid = true;

                                Application.Current.Dispatcher.Invoke((Action)(() =>
                                {
                                    FleetInfo.Members.Add(fm);
                                }), DispatcherPriority.Normal);
                            }

                            fm.Name        = EveManager.Instance.GetCharacterName(esifm.CharacterId);
                            fm.Location    = EveManager.Instance.GetEveSystemNameFromID(esifm.SolarSystemId);
                            fm.CharacterID = esifm.CharacterId;
                            if (EveManager.Instance.ShipTypes.ContainsKey(esifm.ShipTypeId.ToString()))
                            {
                                fm.ShipType = EveManager.Instance.ShipTypes[esifm.ShipTypeId.ToString()];
                            }
                            else
                            {
                                fm.ShipType = "Unknown : " + esifm.ShipTypeId.ToString();
                            }

                            if (String.IsNullOrEmpty(fm.Name))
                            {
                                characterIDsToResolve.Add(esifm.CharacterId);
                            }
                        }

                        if (characterIDsToResolve.Count > 0)
                        {
                            EveManager.Instance.ResolveCharacterIDs(characterIDsToResolve).Wait();
                        }

                        foreach (Fleet.FleetMember ff in FleetInfo.Members.ToList())
                        {
                            if (!ff.IsValid)
                            {
                                Application.Current.Dispatcher.Invoke((Action)(() =>
                                {
                                    FleetInfo.Members.Remove(ff);
                                }), DispatcherPriority.Normal);
                            }
                        }
                    }
                    else
                    {
                        // something went wrong (probably lost fleet_commander), reset this check
                        FleetInfo.NextFleetMembershipCheck = DateTime.Now + TimeSpan.FromSeconds(60);
                        FleetInfo.FleetID = 0;

                        Application.Current.Dispatcher.Invoke((Action)(() =>
                        {
                            FleetInfo.Members.Clear();
                        }), DispatcherPriority.Normal);
                    }
                }
            }
            catch { }
        }
Exemple #9
0
        /// <summary>
        /// Update the active route for the character
        /// </summary>
        private async void UpdateActiveRoute()
        {
            if (esiSendRouteClear)
            {
                esiSendRouteClear   = false;
                esiRouteNeedsUpdate = false;

                System s = EveManager.Instance.GetEveSystem(Location);
                if (s != null)
                {
                    ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                    esiClient.SetCharacterData(ESIAuthData);

                    ESI.NET.EsiResponse <string> esr = await esiClient.UserInterface.Waypoint(s.ID, false, true);

                    if (EVEData.ESIHelpers.ValidateESICall <string>(esr))
                    {
                        // failed to clear route
                    }
                }

                return;
            }



            if (Waypoints.Count == 0)
            {
                return;
            }

            {
                // new routing
                string start = string.Empty;
                string end   = Location;

                Application.Current.Dispatcher.Invoke((Action)(() =>
                {
                    lock (ActiveRouteLock)
                    {
                        if (Location == Waypoints[0])
                        {
                            Waypoints.RemoveAt(0);
                        }
                    }

                    ActiveRoute.Clear();
                }), DispatcherPriority.Normal);

                // loop through all the waypoints
                for (int i = 0; i < Waypoints.Count; i++)
                {
                    start = end;
                    end   = Waypoints[i];

                    List <Navigation.RoutePoint> sysList = Navigation.Navigate(start, end, UseAnsiblexGates, false, NavigationMode);

                    if (sysList != null)
                    {
                        Application.Current.Dispatcher.Invoke((Action)(() =>
                        {
                            lock (ActiveRouteLock)
                            {
                                foreach (Navigation.RoutePoint s in sysList)
                                {
                                    ActiveRoute.Add(s);
                                }
                            }
                        }), DispatcherPriority.Normal, null);
                    }
                }
            }

            if (esiRouteNeedsUpdate && !esiRouteUpdating)
            {
                esiRouteNeedsUpdate = false;
                esiRouteUpdating    = true;

                List <long> WayPointsToAdd = new List <long>();

                lock (ActiveRouteLock)
                {
                    foreach (Navigation.RoutePoint rp in ActiveRoute)
                    {
                        // explicitly add interim waypoints for ansiblex gates or actual waypoints
                        if (rp.GateToTake == Navigation.GateType.Ansibex || Waypoints.Contains(rp.SystemName))
                        {
                            long wayPointSysID = EveManager.Instance.GetEveSystem(rp.SystemName).ID;

                            if (rp.GateToTake == Navigation.GateType.Ansibex)
                            {
                                foreach (JumpBridge jb in EveManager.Instance.JumpBridges)
                                {
                                    if (jb.From == rp.SystemName)
                                    {
                                        if (jb.FromID != 0)
                                        {
                                            wayPointSysID = jb.FromID;
                                        }
                                        break;
                                    }

                                    if (jb.To == rp.SystemName)
                                    {
                                        if (jb.ToID != 0)
                                        {
                                            wayPointSysID = jb.ToID;
                                        }
                                        break;
                                    }
                                }
                            }
                            WayPointsToAdd.Add(wayPointSysID);
                        }
                    }
                }

                bool firstRoute = true;

                foreach (long SysID in WayPointsToAdd)
                {
                    ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                    esiClient.SetCharacterData(ESIAuthData);

                    ESI.NET.EsiResponse <string> esr = await esiClient.UserInterface.Waypoint(SysID, false, firstRoute);

                    if (EVEData.ESIHelpers.ValidateESICall <string>(esr))
                    {
                        //                        routeNeedsUpdate = true;
                    }
                    firstRoute = false;

                    // with a shorter wait, ive found the occasional out of order route
                    Thread.Sleep(200);
                }

                esiRouteUpdating = false;
            }
        }
Exemple #10
0
        public async Task <List <JumpBridge> > FindJumpGates(string JumpBridgeFilterString = " » ")
        {
            List <JumpBridge> jbl = new List <JumpBridge>();

            if (!ESILinked)
            {
                return(jbl);
            }

            await UpdateLock.WaitAsync();

            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                Dictionary <long, ESI.NET.Models.Universe.Structure> SystemJumpGateList = new Dictionary <long, ESI.NET.Models.Universe.Structure>();

                esiClient.SetCharacterData(ESIAuthData);

                try
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.SearchResults> esr = await esiClient.Search.Query(SearchType.Character, JumpBridgeFilterString, SearchCategory.Structure);

                    if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.SearchResults>(esr))
                    {
                        if (esr.Data.Structures == null)
                        {
                            return(jbl);
                        }

                        foreach (long stationID in esr.Data.Structures)
                        {
                            esiClient.SetCharacterData(ESIAuthData);
                            ESI.NET.EsiResponse <ESI.NET.Models.Universe.Structure> esrs = await esiClient.Universe.Structure(stationID);

                            if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.Universe.Structure>(esrs))
                            {
                                SystemJumpGateList[stationID] = esrs.Data;

                                // found a jump gate
                                if (esrs.Data.TypeId == 35841)
                                {
                                    string[] parts = esrs.Data.Name.Split(' ');
                                    string   from  = parts[0];
                                    string   to    = parts[2];

                                    EveManager.Instance.AddUpdateJumpBridge(from, to, stationID);
                                }
                            }

                            Thread.Sleep(100);
                        }
                    }
                }
                catch
                {
                    // ESI-Search failed
                }
            }
            UpdateLock.Release();

            return(jbl);
        }
Exemple #11
0
        /// <summary>
        /// Update the character info from the ESI data if linked
        /// </summary>
        public async Task UpdateInfoFromESI()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                if (ESILinked)
                {
                    ESIAccessTokenExpiry = DateTime.Now;
                }
                return;
            }

            List <long> AllianceToResolve = new List <long>();

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                //if (CorporationID == -1 || AllianceID == -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Character.Information> esr = await esiClient.Character.Information((int)ID);

                    if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.Character.Information>(esr))
                    {
                        CorporationID = esr.Data.CorporationId;
                        AllianceID    = esr.Data.AllianceId;
                    }
                }

                // if we have an alliance, and no current standings set
                if (AllianceID != 0 && Standings.Count == 0)
                {
                    int page         = 0;
                    int maxPageCount = 1;
                    do
                    {
                        page++;

                        // SJS here.. list modifeied exception

                        esiClient.SetCharacterData(ESIAuthData);
                        ESI.NET.EsiResponse <List <ESI.NET.Models.Contacts.Contact> > esr = await esiClient.Contacts.ListForAlliance(page);

                        if (EVEData.ESIHelpers.ValidateESICall <List <ESI.NET.Models.Contacts.Contact> >(esr))
                        {
                            if (esr.Pages.HasValue)
                            {
                                maxPageCount = (int)esr.Pages;
                            }

                            if (esr.Data == null)
                            {
                                // in an alliance with no contacts
                                continue;
                            }

                            foreach (ESI.NET.Models.Contacts.Contact con in esr.Data)
                            {
                                Standings[con.ContactId] = (float)con.Standing;
                                // Removed LabelMap[con.ContactId] = con.LabelIds;

                                if (con.ContactType == "alliance")
                                {
                                    AllianceToResolve.Add(con.ContactId);
                                }
                            }
                        }
                    }while (page < maxPageCount);
                }

                // get the character portrait
                string characterPortrait = EveManager.Instance.SaveDataRootFolder + "\\Portraits\\" + ID + ".png";
                if (!File.Exists(characterPortrait))
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Images> esri = await esiClient.Character.Portrait((int)ID);

                    if (esri.Data != null)
                    {
                        WebClient webClient = new WebClient();
                        webClient.DownloadFile(esri.Data.x128, characterPortrait);
                    }
                }

                Application.Current.Dispatcher.Invoke((Action)(() =>
                {
                    Uri imageLoc = new Uri(characterPortrait);
                    Portrait = new BitmapImage(imageLoc);
                }), DispatcherPriority.Normal, null);

                //get the corp info
                if (CorporationID != -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Corporation.Corporation> esrc = await esiClient.Corporation.Information((int)CorporationID);

                    if (esrc.Data != null)
                    {
                        CorporationName   = esrc.Data.Name;
                        CorporationTicker = esrc.Data.Ticker;
                    }
                }

                //get the Alliance info
                if (AllianceID > 0)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Alliance.Alliance> esra = await esiClient.Alliance.Information((int)AllianceID);

                    if (esra.Data != null)
                    {
                        AllianceName   = esra.Data.Name;
                        AllianceTicker = esra.Data.Ticker;
                    }
                }
                else
                {
                    AllianceName   = null;
                    AllianceTicker = null;
                }
            }
            catch (Exception)
            {
            }

            await EveManager.Instance.ResolveAllianceIDs(AllianceToResolve);
        }
Exemple #12
0
        /// <summary>
        /// Update the active route for the character
        /// </summary>
        private async void UpdateActiveRoute()
        {
            if (Waypoints.Count == 0)
            {
                return;
            }


            lock (ActiveRouteLock)
            {
                // new routing

                string start = string.Empty;
                string end   = Location;

                Application.Current.Dispatcher.Invoke((Action)(() =>
                {
                    if (Location == Waypoints[0])
                    {
                        Waypoints.RemoveAt(0);
                    }

                    ActiveRoute.Clear();
                }), DispatcherPriority.ApplicationIdle);

                // loop through all the waypoints and query ESI for the route
                for (int i = 0; i < Waypoints.Count; i++)
                {
                    start = end;
                    end   = Waypoints[i];

                    List <Navigation.RoutePoint> sysList = Navigation.Navigate(start, end, UseAnsiblexGates, NavigationMode);

                    if (sysList != null)
                    {
                        foreach (Navigation.RoutePoint s in sysList)
                        {
                            Application.Current.Dispatcher.Invoke((Action)(() =>
                            {
                                ActiveRoute.Add(s);
                            }), DispatcherPriority.ContextIdle, null);
                        }
                    }
                }
            }

            if (esiRouteNeedsUpdate)
            {
                esiRouteNeedsUpdate = false;



                List <long> WayPointsToAdd = new List <long>();


                lock (ActiveRouteLock)
                {
                    foreach (Navigation.RoutePoint rp in ActiveRoute)
                    {
                        // explicitly add interim waypoints for ansiblex gates or actual waypoints
                        if (rp.GateToTake == Navigation.GateType.Ansibex || Waypoints.Contains(rp.SystemName))
                        {
                            long wayPointSysID = EveManager.Instance.GetEveSystem(rp.SystemName).ID;
                            WayPointsToAdd.Add(wayPointSysID);
                        }
                    }
                }

                bool firstRoute = true;


                foreach (long SysID in WayPointsToAdd)
                {
                    ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                    esiClient.SetCharacterData(ESIAuthData);

                    ESI.NET.EsiResponse <string> esr = await esiClient.UserInterface.Waypoint(SysID, false, firstRoute);

                    if (EVEData.ESIHelpers.ValidateESICall <string>(esr))
                    {
//                        routeNeedsUpdate = true;
                    }
                    firstRoute = false;

                    //Thread.Sleep(50);
                }
            }
        }
Exemple #13
0
        /// <summary>
        /// Update the character info from the ESI data if linked
        /// </summary>
        public async Task UpdateInfoFromESI()
        {
            if (ID == 0 || !ESILinked || ESIAuthData == null)
            {
                if (ESILinked)
                {
                    ESIAccessTokenExpiry = DateTime.Now;
                }
                return;
            }

            List <long> AllianceToResolve = new List <long>();

            try
            {
                ESI.NET.EsiClient esiClient = EveManager.Instance.ESIClient;
                esiClient.SetCharacterData(ESIAuthData);

                //if (CorporationID == -1 || AllianceID == -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Character.Information> esr = await esiClient.Character.Information((int)ID);

                    if (EVEData.ESIHelpers.ValidateESICall <ESI.NET.Models.Character.Information>(esr))
                    {
                        CorporationID = esr.Data.CorporationId;
                        AllianceID    = esr.Data.AllianceId;
                    }
                }

                // if we have an alliance, and no current standings set
                if (AllianceID != 0 && Standings.Count == 0)
                {
                    int page         = 0;
                    int maxPageCount = 1;
                    do
                    {
                        page++;

                        // SJS here.. list modifeied exception

                        esiClient.SetCharacterData(ESIAuthData);
                        ESI.NET.EsiResponse <List <ESI.NET.Models.Contacts.Contact> > esr = await esiClient.Contacts.ListForAlliance(page);

                        if (EVEData.ESIHelpers.ValidateESICall <List <ESI.NET.Models.Contacts.Contact> >(esr))
                        {
                            if (esr.Pages.HasValue)
                            {
                                maxPageCount = (int)esr.Pages;
                            }

                            if (esr.Data == null)
                            {
                                // in an alliance with no contacts
                                continue;
                            }

                            foreach (ESI.NET.Models.Contacts.Contact con in esr.Data)
                            {
                                Standings[con.ContactId] = (float)con.Standing;
                                // Removed LabelMap[con.ContactId] = con.LabelIds;

                                if (con.ContactType == "alliance")
                                {
                                    AllianceToResolve.Add(con.ContactId);
                                }
                            }
                        }
                    }while (page < maxPageCount);
                }

                // get the character portrait
                string characterPortrait = EveManager.Instance.SaveDataRootFolder + "\\Portraits\\" + ID;
                if (!File.Exists(characterPortrait))
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Images> esri = await esiClient.Character.Portrait((int)ID);

                    if (esri.Data != null)
                    {
                        try
                        {
                            HttpClient hc       = new HttpClient();
                            var        response = await hc.GetAsync(esri.Data.x128);

                            using (var fs = new FileStream(characterPortrait, FileMode.CreateNew))
                            {
                                await response.Content.CopyToAsync(fs);
                            }
                        }
                        catch
                        {
                        }
                    }
                }

                if (File.Exists(characterPortrait))
                {
                    Application.Current.Dispatcher.Invoke((Action)(() =>
                    {
                        try
                        {
                            Uri imageLoc = new Uri(characterPortrait);
                            Portrait = new BitmapImage(imageLoc);
                        }
                        catch
                        {
                            // something wrong with the portrait
                        }
                    }), DispatcherPriority.Normal, null);
                }

                //get the corp info
                if (CorporationID != -1)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Corporation.Corporation> esrc = await esiClient.Corporation.Information((int)CorporationID);

                    if (esrc.Data != null)
                    {
                        CorporationName   = esrc.Data.Name;
                        CorporationTicker = esrc.Data.Ticker;
                    }
                }

                //get the Alliance info
                if (AllianceID > 0)
                {
                    ESI.NET.EsiResponse <ESI.NET.Models.Alliance.Alliance> esra = await esiClient.Alliance.Information((int)AllianceID);

                    if (esra.Data != null)
                    {
                        AllianceName   = esra.Data.Name;
                        AllianceTicker = esra.Data.Ticker;
                    }
                }
                else
                {
                    AllianceName   = null;
                    AllianceTicker = null;
                }

                // get the edencom and trig standings
                {
                    EdenCommStandingsGood = false;
                    TrigStandingsGood     = false;

                    ESI.NET.EsiResponse <List <ESI.NET.Models.Standing> > essl = await esiClient.Character.Standings();

                    if (essl.Data != null)
                    {
                        foreach (ESI.NET.Models.Standing standing in essl.Data)
                        {
                            if (standing.FromId == 500027 && standing.Value > 0)
                            {
                                EdenCommStandingsGood = true;
                            }

                            if (standing.FromId == 500026 && standing.Value > 0)
                            {
                                TrigStandingsGood = true;
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            await EveManager.Instance.ResolveAllianceIDs(AllianceToResolve);
        }