예제 #1
0
        /// <summary>
        /// Tries adding a game to the collection with the provided executable path
        /// </summary>
        /// <param name="exePath"></param>
        /// <returns></returns>
        public UserGameInfo TryAddGame(string exePath)
        {
            string lower    = exePath.ToLower();
            string fileName = Path.GetFileName(exePath).ToLower();
            string dir      = Path.GetDirectoryName(exePath);

            var possibilities = Games.Values.Where(c => c.ExecutableName == fileName);

            foreach (GenericGameInfo game in possibilities)
            {
                // check if the Context matches
                string[] context = game.ExecutableContext;
                bool     notAdd  = false;
                if (context != null)
                {
                    for (int j = 0; j < context.Length; j++)
                    {
                        string con = Path.Combine(dir, context[j]);
                        if (!File.Exists(con) &&
                            !Directory.Exists(con))
                        {
                            notAdd = true;
                            break;
                        }
                    }
                }

                if (notAdd)
                {
                    continue;
                }

                // search for the same exe on the user profile
                if (GameManager.Instance.User.Games.Any(c => c.ExePath.ToLower() == lower))
                {
                    continue;
                }

#if RELEASE
                if (game.Debug)
                {
                    continue;
                }
#endif

                Log.WriteLine($"Found game: {game.GameName}, full path: {exePath}");
                UserGameInfo uinfo = new UserGameInfo();
                uinfo.InitializeDefault(game, exePath);
                GameManager.Instance.User.Games.Add(uinfo);
                GameManager.Instance.SaveUserProfile();

                return(uinfo);
            }

            return(null);
        }
예제 #2
0
        public UserGameInfo AddGame(GenericGameInfo game, string exePath)
        {
            UserGameInfo gInfo = new UserGameInfo();

            gInfo.InitializeDefault(game, exePath);
            user.Games.Add(gInfo);

            SaveUserProfile();

            return(gInfo);
        }
예제 #3
0
        /// <summary>
        /// Tries adding a game to the collection with the provided executable path
        /// </summary>
        /// <param name="exePath"></param>
        /// <returns></returns>
        public UserGameInfo TryAddGame(string exePath)
        {
            string lower = exePath.ToLower();
            string dir   = Path.GetDirectoryName(exePath);

            var possibilities = GetAllHandlers(exePath);

            foreach (GameHandlerMetadata metadata in possibilities)
            {
                // check if the Context matches
                string[] context = metadata.ExeContext;
                bool     notAdd  = false;
                if (context != null)
                {
                    for (int j = 0; j < context.Length; j++)
                    {
                        string con = Path.Combine(dir, context[j]);
                        if (!File.Exists(con) &&
                            !Directory.Exists(con))
                        {
                            notAdd = true;
                            break;
                        }
                    }
                }

                if (notAdd ||
                    user.Games.Any(c => c.ExePath.ToLower() == lower))
                {
                    continue;
                }

                Log.WriteLine($"Found game: {metadata.Title}, on path: {exePath}");
                UserGameInfo uinfo = new UserGameInfo();
                uinfo.InitializeDefault(metadata, exePath);
                user.Games.Add(uinfo);
                user.Save();

                return(uinfo);
            }

            return(null);
        }
예제 #4
0
        /// <summary>
        /// Tries adding a game to the collection with the provided IGameInfo
        /// </summary>
        /// <param name="exePath"></param>
        /// <returns></returns>
        public UserGameInfo TryAddGame(string exePath, GameHandlerMetadata metadata)
        {
            string lower = exePath.ToLower();
            string dir   = Path.GetDirectoryName(exePath);

            if (user.Games.Any(c => c.ExePath.ToLower() == lower))
            {
                return(null);
            }

            Log.WriteLine($"Added game: {metadata.Title}, on path: {exePath}");
            UserGameInfo uinfo = new UserGameInfo();

            uinfo.InitializeDefault(metadata, exePath);
            user.Games.Add(uinfo);
            user.Save();

            return(uinfo);
        }
예제 #5
0
        /// <summary>
        /// Tries adding a game to the collection with the provided IGameInfo
        /// </summary>
        /// <param name="exePath"></param>
        /// <returns></returns>
        public UserGameInfo TryAddGame(string exePath, GenericGameInfo game)
        {
            string lower = exePath.ToLower();

            // search for the same exe on the user profile
            if (GameManager.Instance.User.Games.Any(c => c.ExePath.ToLower() == lower))
            {
                return(null);
            }

            Log.WriteLine($"Found game: {game.GameName}, full path: {exePath}");
            UserGameInfo uinfo = new UserGameInfo();

            uinfo.InitializeDefault(game, exePath);
            GameManager.Instance.User.Games.Add(uinfo);
            GameManager.Instance.SaveUserProfile();

            return(uinfo);
        }