Esempio n. 1
0
 public IEnumerable<ApiSleeve> GetAllSleeves()
 {
     if (_sleeveCache != null)
         return _sleeveCache;
     if (_lastGetTime >= DateTime.Now.AddMinutes(-1))
         return _sleeveCache ?? new ApiSleeve[0];
     try
     {
         _lastGetTime = DateTime.Now;
         var c = new Octgn.Site.Api.ApiClient();
         var sleeves = c.GetAllSleeves(0, 100);
         if (sleeves.Sleeves == null || sleeves.Sleeves.Length == 0)
         {
             WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the sleeve list from the web. Please check your internet settings."));
             return new ApiSleeve[0];
         }
         _sleeveCache = sleeves.Sleeves.ToArray();
         return _sleeveCache;
     }
     catch (Exception e)
     {
         Log.Error("GetAllSleeves", e);
     }
     WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the sleeve list from the web. Please check your internet settings."));
     return new ApiSleeve[0];
 }
Esempio n. 2
0
 public IEnumerable <ApiSleeve> GetAllSleeves()
 {
     if (_sleeveCache != null)
     {
         return(_sleeveCache);
     }
     if (_lastGetTime >= DateTime.Now.AddMinutes(-1))
     {
         return(_sleeveCache ?? new ApiSleeve[0]);
     }
     try
     {
         _lastGetTime = DateTime.Now;
         var c       = new Octgn.Site.Api.ApiClient();
         var sleeves = c.GetAllSleeves(0, 100);
         if (sleeves.Sleeves == null || sleeves.Sleeves.Length == 0)
         {
             WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the sleeve list from the web. Please check your internet settings."));
             return(new ApiSleeve[0]);
         }
         _sleeveCache = sleeves.Sleeves.ToArray();
         return(_sleeveCache);
     }
     catch (Exception e)
     {
         Log.Error("GetAllSleeves", e);
     }
     WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the sleeve list from the web. Please check your internet settings."));
     return(new ApiSleeve[0]);
 }
Esempio n. 3
0
        public IEnumerable <ApiSleeve> GetUserSleeves()
        {
            try
            {
                var c = new Octgn.Site.Api.ApiClient();

                AuthorizedResponse <IEnumerable <ApiSleeve> > ownedSleeves;
                ownedSleeves = Program.LobbyClient.IsConnected == false?c.GetUserSleeves(Prefs.Username, Prefs.Password.Decrypt()) : c.GetUserSleeves(Program.LobbyClient.Username, Program.LobbyClient.Password);

                if (ownedSleeves.Authorized == false)
                {
                    Log.Warn("Could not download user sleeves, the account was not authorized.");
                    return(new ApiSleeve[0]);
                }
                if (ownedSleeves == null || ownedSleeves.Response == null)
                {
                    WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the user sleeve list from the web. Please check your internet settings."));
                    return(new ApiSleeve[0]);
                }

                return(ownedSleeves.Response);
            }
            catch (Exception e)
            {
                Log.Error("GetUserSleeves", e);
            }
            WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the user sleeve list from the web. Please check your internet settings."));
            return(new ApiSleeve[0]);
        }
Esempio n. 4
0
        private void ButtonJoinClick(object sender, RoutedEventArgs e)
        {
            if (WindowManager.PlayWindow != null)
            {
                MessageBox.Show(
                    "You are currently in a game or game lobby. Please leave before you join game.",
                    "OCTGN",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return;
            }
            var hostedgame = ListViewGameList.SelectedItem as HostedGameViewModel;

            if (hostedgame == null)
            {
                return;
            }
            if (hostedgame.Status == EHostedGame.GameInProgress && hostedgame.Spectator == false)
            {
                TopMostMessageBox.Show(
                    "You can't join a game in progress.",
                    "Error",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information);
                return;
            }
            if (hostedgame.GameSource == "Online")
            {
                var client = new Octgn.Site.Api.ApiClient();
                if (!client.IsGameServerRunning(Program.LobbyClient.Username, Program.LobbyClient.Password))
                {
                    TopMostMessageBox.Show(
                        "The game server is currently down. Please try again later.",
                        "Error",
                        MessageBoxButton.OK,
                        MessageBoxImage.Information);
                    return;
                }
            }
            var game = GameManager.Get().GetById(hostedgame.GameId);

            if (game == null)
            {
                TopMostMessageBox.Show("You don't currently have that game installed.", "Error", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }
            var spectate = hostedgame.Status == EHostedGame.GameInProgress && hostedgame.Spectator == true;
            var task     = new Task(() => this.StartJoinGame(hostedgame, game, spectate));

            task.ContinueWith((t) => { this.Dispatcher.Invoke(new Action(() => this.FinishJoinGame(t))); });
            BorderButtons.IsEnabled = false;
            task.Start();
        }
Esempio n. 5
0
        private void StartJoinGame(HostedGameViewModel hostedGame, DataNew.Entities.Game game, bool spectate)
        {
            if (hostedGame.GameSource == "Online")
            {
                var client = new Octgn.Site.Api.ApiClient();
                if (!client.IsGameServerRunning(Program.LobbyClient.Username, Program.LobbyClient.Password))
                {
                    throw new UserMessageException("The game server is currently down. Please try again later.");
                }
            }
            Log.InfoFormat("Starting to join a game {0} {1}", hostedGame.GameId, hostedGame.Name);
            Program.IsHost        = false;
            Program.IsMatchmaking = false;
            var password = "";

            if (hostedGame.HasPassword)
            {
                Dispatcher.Invoke(new Action(() =>
                {
                    var dlg  = new InputDlg("Password", "Please enter this games password", "");
                    password = dlg.GetString();
                }));
            }
            var username = (Program.LobbyClient.IsConnected == false ||
                            Program.LobbyClient.Me == null ||
                            Program.LobbyClient.Me.UserName == null) ? Prefs.Nickname : Program.LobbyClient.Me.UserName;

            Program.GameEngine            = new GameEngine(game, username, spectate, password);
            Program.CurrentOnlineGameName = hostedGame.Name;
            IPAddress hostAddress = hostedGame.IPAddress;

            if (hostAddress == null)
            {
                Log.WarnFormat("Dns Error, couldn't resolve {0}", AppConfig.GameServerPath);
                throw new UserMessageException("There was a problem with your DNS. Please try again.");
            }

            try
            {
                Log.InfoFormat("Creating client for {0}:{1}", hostAddress, hostedGame.Port);
                Program.Client = new ClientSocket(hostAddress, hostedGame.Port);
                Log.InfoFormat("Connecting client for {0}:{1}", hostAddress, hostedGame.Port);
                Program.Client.Connect();
            }
            catch (Exception e)
            {
                Log.Warn("Start join game error ", e);
                throw new UserMessageException("Could not connect. Please try again.");
            }
        }
Esempio n. 6
0
        public void Load(User user)
        {
            var client = new Octgn.Site.Api.ApiClient();

            if (user == null || user.UserName == null)
            {
                return;
            }
            var au = client.UsersFromUsername(new[] { user.UserName }).FirstOrDefault();

            if (au == null)
            {
                return;
            }
            Load(au);
        }
Esempio n. 7
0
        private void ChangeIconClick(object sender, RoutedEventArgs e)
        {
            if ((SubscriptionModule.Get().IsSubscribed ?? false) == false)
            {
                TopMostMessageBox.Show(
                    "You must be subscribed to set your icon", "Error", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }
            var fd = new OpenFileDialog();

            fd.Filter =
                "All Images|*.BMP;*.JPG;*.JPEG;*.PNG|BMP Files: (*.BMP)|*.BMP|JPEG Files: (*.JPG;*.JPEG)|*.JPG;*.JPEG|PNG Files: (*.PNG)|*.PNG";
            fd.CheckFileExists = true;
            if (!(bool)fd.ShowDialog())
            {
                return;
            }
            if (!File.Exists(fd.FileName))
            {
                return;
            }
            var finfo = new FileInfo(fd.FileName);

            try
            {
                var img = System.Drawing.Image.FromFile(fd.FileName);
                if (img.Width != 16 || img.Height != 16)
                {
                    img = ResizeImage(img, new System.Drawing.Size(16, 16));
                    //throw new UserMessageException("Image must be exactly 16x16 in size.");
                }
                using (var imgStream = new MemoryStream())
                {
                    img.Save(imgStream, ImageFormat.Png);
                    imgStream.Seek(0, SeekOrigin.Begin);
                    var client = new Octgn.Site.Api.ApiClient();
                    var res    = client.SetUserIcon(
                        Program.LobbyClient.Username,
                        Program.LobbyClient.Password,
                        "png",
                        imgStream);

                    switch (res)
                    {
                    case UserIconSetResult.Ok:
                        Task.Factory.StartNew(() =>
                        {
                            Thread.Sleep(5000);
                            this.OnLoaded(null, null);
                        });

                        TopMostMessageBox.Show(
                            "Your icon has been changed. It can take a few minutes for the change to take place.",
                            "Change Icon",
                            MessageBoxButton.OK,
                            MessageBoxImage.Information);
                        break;

                    case UserIconSetResult.ImageSizeBad:
                        throw new UserMessageException("Image must be exactly 16x16 in size.");

                    case UserIconSetResult.NotSubscribed:
                        throw new UserMessageException("You must be subscribed to do that.");

                    case UserIconSetResult.CredentialsError:
                        throw new UserMessageException(
                                  "Incorrect username/password. try exiting OCTGN and reloading it.");

                    default:
                        throw new UserMessageException(
                                  "There was an error uploading your icon. Please try again later.");
                    }
                }
            }
            catch (UserMessageException ex)
            {
                TopMostMessageBox.Show(ex.Message, "Change Icon Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                Log.Warn("ChangeIconClick(UserMessageException)", ex);
            }
            catch (Exception ex)
            {
                TopMostMessageBox.Show(
                    "There was an unknown error. Please try a different image.",
                    "Change Icon Error",
                    MessageBoxButton.OK,
                    MessageBoxImage.Warning);
                Log.Warn("ChangeIconClick", ex);
            }
        }
Esempio n. 8
0
        public IEnumerable<ApiSleeve> GetUserSleeves()
        {
            try
            {
                var c = new Octgn.Site.Api.ApiClient();

                AuthorizedResponse<IEnumerable<ApiSleeve>> ownedSleeves;
                ownedSleeves = Program.LobbyClient.IsConnected == false ? c.GetUserSleeves(Prefs.Username, Prefs.Password.Decrypt()) : c.GetUserSleeves(Program.LobbyClient.Username, Program.LobbyClient.Password);

                if (ownedSleeves.Authorized == false)
                {
                    Log.Warn("Could not download user sleeves, the account was not authorized.");
                    return new ApiSleeve[0];
                }
                if (ownedSleeves == null || ownedSleeves.Response == null)
                {
                    WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the user sleeve list from the web. Please check your internet settings."));
                    return new ApiSleeve[0];
                }

                return ownedSleeves.Response;
            }
            catch (Exception e)
            {
                Log.Error("GetUserSleeves", e);
            }
            WindowManager.GrowlWindow.AddNotification(new ErrorNotification("There was a problem downloading the user sleeve list from the web. Please check your internet settings."));
            return new ApiSleeve[0];
        }
Esempio n. 9
0
        private void ChangeIconClick(object sender, RoutedEventArgs e)
        {
            if ((SubscriptionModule.Get().IsSubscribed ?? false) == false)
            {
                TopMostMessageBox.Show(
                    "You must be subscribed to set your icon", "Error", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }
            var fd = new OpenFileDialog();
            fd.Filter =
                "All Images|*.BMP;*.JPG;*.JPEG;*.PNG|BMP Files: (*.BMP)|*.BMP|JPEG Files: (*.JPG;*.JPEG)|*.JPG;*.JPEG|PNG Files: (*.PNG)|*.PNG";
            fd.CheckFileExists = true;
            if (!(bool)fd.ShowDialog()) return;
            if (!File.Exists(fd.FileName)) return;
            var finfo = new FileInfo(fd.FileName);
            try
            {
                var img = System.Drawing.Image.FromFile(fd.FileName);
                if (img.Width != 16 || img.Height != 16)
                {
                    img = ResizeImage(img, new System.Drawing.Size(16, 16));
                    //throw new UserMessageException("Image must be exactly 16x16 in size.");
                }
                using (var imgStream = new MemoryStream())
                {
                    img.Save(imgStream, ImageFormat.Png);
                    imgStream.Seek(0, SeekOrigin.Begin);
                    var client = new Octgn.Site.Api.ApiClient();
                    var res = client.SetUserIcon(
                        Program.LobbyClient.Username,
                        Program.LobbyClient.Password,
                        "png",
                        imgStream);

                    switch (res)
                    {
                        case UserIconSetResult.Ok:
                            Task.Factory.StartNew(() =>
                                {
                                    Thread.Sleep(5000);
                                    this.OnLoaded(null, null);
                                });

                            TopMostMessageBox.Show(
                                "Your icon has been changed. It can take a few minutes for the change to take place.",
                                "Change Icon",
                                MessageBoxButton.OK,
                                MessageBoxImage.Information);
                            break;
                        case UserIconSetResult.ImageSizeBad:
                            throw new UserMessageException("Image must be exactly 16x16 in size.");
                        case UserIconSetResult.NotSubscribed:
                            throw new UserMessageException("You must be subscribed to do that.");
                        case UserIconSetResult.CredentialsError:
                            throw new UserMessageException(
                                "Incorrect username/password. try exiting OCTGN and reloading it.");
                        default:
                            throw new UserMessageException(
                                "There was an error uploading your icon. Please try again later.");
                    }
                }
            }
            catch (UserMessageException ex)
            {
                TopMostMessageBox.Show(ex.Message, "Change Icon Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                Log.Warn("ChangeIconClick(UserMessageException)", ex);
            }
            catch (Exception ex)
            {
                TopMostMessageBox.Show(
                    "There was an unknown error. Please try a different image.",
                    "Change Icon Error",
                    MessageBoxButton.OK,
                    MessageBoxImage.Warning);
                Log.Warn("ChangeIconClick", ex);
            }
        }
Esempio n. 10
0
 public void Load(User user)
 {
     var client = new Octgn.Site.Api.ApiClient();
     if (user == null || user.UserName == null) return;
     var au = client.UsersFromUsername(new[] { user.UserName }).FirstOrDefault();
     if (au == null) return;
     Load(au);
 }
Esempio n. 11
0
 private void ButtonJoinClick(object sender, RoutedEventArgs e)
 {
     if (Program.IsInMatchmakingQueue)
     {
         MessageBox.Show(
             "You are currently matchmaking. Please leave before you join game.",
             "OCTGN",
             MessageBoxButtons.OK,
             MessageBoxIcon.Error);
         return;
     }
     if (WindowManager.PlayWindow != null)
     {
         MessageBox.Show(
             "You are currently in a game or game lobby. Please leave before you join game.",
             "OCTGN",
             MessageBoxButtons.OK,
             MessageBoxIcon.Error);
         return;
     }
     var hostedgame = ListViewGameList.SelectedItem as HostedGameViewModel;
     if (hostedgame == null) return;
     if (hostedgame.Status == EHostedGame.GameInProgress && hostedgame.Spectator == false)
     {
         TopMostMessageBox.Show(
                 "You can't join a game in progress.",
                 "Error",
                 MessageBoxButton.OK,
                 MessageBoxImage.Information);
         return;
     }
     if (hostedgame.GameSource == "Online")
     {
         var client = new Octgn.Site.Api.ApiClient();
         if (!client.IsGameServerRunning(Program.LobbyClient.Username, Program.LobbyClient.Password))
         {
             TopMostMessageBox.Show(
                 "The game server is currently down. Please try again later.",
                 "Error",
                 MessageBoxButton.OK,
                 MessageBoxImage.Information);
             return;
         }
     }
     var game = GameManager.Get().GetById(hostedgame.GameId);
     if (game == null)
     {
         TopMostMessageBox.Show("You don't currently have that game installed.", "Error", MessageBoxButton.OK, MessageBoxImage.Information);
         return;
     }
     var spectate = hostedgame.Status == EHostedGame.GameInProgress && hostedgame.Spectator == true;
     var task = new Task(() => this.StartJoinGame(hostedgame, game, spectate));
     task.ContinueWith((t) => { this.Dispatcher.Invoke(new Action(() => this.FinishJoinGame(t))); });
     BorderButtons.IsEnabled = false;
     task.Start();
 }
Esempio n. 12
0
        private void StartJoinGame(HostedGameViewModel hostedGame, DataNew.Entities.Game game, bool spectate)
        {
            if (hostedGame.GameSource == "Online")
            {
                var client = new Octgn.Site.Api.ApiClient();
                if (!client.IsGameServerRunning(Program.LobbyClient.Username, Program.LobbyClient.Password))
                {
                    throw new UserMessageException("The game server is currently down. Please try again later.");
                }
            }
            Log.InfoFormat("Starting to join a game {0} {1}", hostedGame.GameId, hostedGame.Name);
            Program.IsHost = false;
            Program.IsMatchmaking = false;
            var password = "";
            if (hostedGame.HasPassword)
            {
                Dispatcher.Invoke(new Action(() =>
                    {
                        var dlg = new InputDlg("Password", "Please enter this games password", "");
                        password = dlg.GetString();
                    }));
            }
            var username = (Program.LobbyClient.IsConnected == false
                || Program.LobbyClient.Me == null
                || Program.LobbyClient.Me.UserName == null) ? Prefs.Nickname : Program.LobbyClient.Me.UserName;
            Program.GameEngine = new GameEngine(game, username, spectate, password);
            Program.CurrentOnlineGameName = hostedGame.Name;
            IPAddress hostAddress = hostedGame.IPAddress;
            if (hostAddress == null)
            {
                Log.WarnFormat("Dns Error, couldn't resolve {0}", AppConfig.GameServerPath);
                throw new UserMessageException("There was a problem with your DNS. Please try again.");
            }

            try
            {
                Log.InfoFormat("Creating client for {0}:{1}", hostAddress, hostedGame.Port);
                Program.Client = new ClientSocket(hostAddress, hostedGame.Port);
                Log.InfoFormat("Connecting client for {0}:{1}", hostAddress, hostedGame.Port);
                Program.Client.Connect();
            }
            catch (Exception e)
            {
                Log.Warn("Start join game error ", e);
                throw new UserMessageException("Could not connect. Please try again.");
            }

        }