Exemplo n.º 1
0
        public LaunchWindow()
        {
            string gameConfigurationFolder = "GameConfiguration";
            string gameConfigurationsPath  = Path.Combine(gameConfigurationFolder, "gameConfigs.json");

            InitializeComponent();

            if (!Directory.Exists(gameConfigurationFolder))
            {
                Directory.CreateDirectory(gameConfigurationFolder);
            }

            //Loading the last used configurations for hammer
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Valve\Hammer\General");

            var configs = new List <GameConfiguration>();

            //try loading json
            if (File.Exists(gameConfigurationsPath))
            {
                string jsonLoadText = File.ReadAllText(gameConfigurationsPath);
                configs.AddRange(JsonConvert.DeserializeObject <List <GameConfiguration> >(jsonLoadText));
            }

            //try loading from registry
            if (rk != null)
            {
                string BinFolder = (string)rk.GetValue("Directory");


                string gameData = Path.Combine(BinFolder, "GameConfig.txt");

                configs.AddRange(GameConfigurationParser.Parse(gameData));
            }

            //finalise config loading
            if (configs.Any())
            {
                //remove duplicates
                configs = configs.GroupBy(g => g.Name).Select(grp => grp.First()).ToList();

                //save
                string jsonSaveText = JsonConvert.SerializeObject(configs, Formatting.Indented);
                File.WriteAllText(gameConfigurationsPath, jsonSaveText);

                if (configs.Count == 1)
                {
                    Launch(configs.First());
                }


                GameGrid.ItemsSource = configs;
            }
            else//oh noes
            {
                LaunchButton.IsEnabled = false;
                WarningLabel.Content   = "No Hammer configurations found. Cannot launch.";
            }
        }
Exemplo n.º 2
0
        public LaunchWindow()
        {
            try
            {
                string gameConfigurationFolder = "./GameConfiguration";
                string gameConfigurationsPath  = Path.Combine(gameConfigurationFolder, "gameConfigs.json");

                InitializeComponent();

                if (!Directory.Exists(gameConfigurationFolder))
                {
                    Directory.CreateDirectory(gameConfigurationFolder);
                }

                //Loading the last used configurations for hammer
                RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Valve\Hammer\General");

                var configs = new List <GameConfiguration>();

                //try loading json
                if (File.Exists(gameConfigurationsPath))
                {
                    string jsonLoadText = File.ReadAllText(gameConfigurationsPath);
                    configs.AddRange(JsonConvert.DeserializeObject <List <GameConfiguration> >(jsonLoadText));
                }

                //try loading from registry
                if (rk != null)
                {
                    string BinFolder = (string)rk.GetValue("Directory");


                    string gameData = Path.Combine(BinFolder, "GameConfig.txt");
                    try
                    {
                        configs.AddRange(GameConfigurationParser.Parse(gameData));
                    }
                    catch (Exception e)
                    {
                        ExceptionHandler.LogException(e);
                    }
                }

                //finalise config loading
                if (configs.Any())
                {
                    //remove duplicates
                    configs = configs.GroupBy(g => g.Name).Select(grp => grp.First()).ToList();

                    //save
                    string jsonSaveText = JsonConvert.SerializeObject(configs, Formatting.Indented);
                    File.WriteAllText(gameConfigurationsPath, jsonSaveText);
                    GameConfigurationManager.GameConfigurations = configs;

                    if (configs.Count == 1)
                    {
                        Launch(configs.First());
                    }


                    GameGrid.ItemsSource = configs;
                }
                else//oh noes
                {
                    LaunchButton.IsEnabled = false;
                    WarningLabel.Content   = "No Hammer configurations found. Cannot launch.";
                }

                //Handle command line args for game configs
                string[] commandLineArgs = Environment.GetCommandLineArgs();
                for (int i = 0; i < commandLineArgs.Length; i++)
                {
                    var arg = commandLineArgs[i];
                    try
                    {
                        // look for game args
                        if (arg == "--game")
                        {
                            // make sure args don't go out of bounds
                            if (i + 1 > commandLineArgs.Length)
                            {
                                break;
                            }

                            string argGameConfig = commandLineArgs[i + 1].ToLower();

                            foreach (GameConfiguration config in configs)
                            {
                                string configName = config.Name.ToLower();

                                if (argGameConfig == configName)
                                {
                                    Launch(config);
                                }
                            }
                        }
                    }
                    catch (ArgumentOutOfRangeException e)
                    {
                        //Ignore error
                    }
                }
            }
            catch (Exception e) { ExceptionHandler.LogException(e); }

            Instance = this;
        }
Exemplo n.º 3
0
        public LaunchWindow()
        {
            try
            {

                string gameConfigurationFolder = CompilePalPath.Directory + "GameConfiguration";
                string gameConfigurationsPath = Path.Combine(gameConfigurationFolder, "gameConfigs.json");

                InitializeComponent();

                if (!Directory.Exists(gameConfigurationFolder))
                    Directory.CreateDirectory(gameConfigurationFolder);

                //Loading the last used configurations for hammer
                RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Valve\Hammer\General");

                var configs = new List<GameConfiguration>();

                //try loading json
                if (File.Exists(gameConfigurationsPath))
                {
                    string jsonLoadText = File.ReadAllText(gameConfigurationsPath);
                    configs.AddRange(JsonConvert.DeserializeObject<List<GameConfiguration>>(jsonLoadText));
                }

                //try loading from registry
                if (rk != null)
                {
                    string BinFolder = (string)rk.GetValue("Directory");

                    string gameData = Path.Combine(BinFolder, "GameConfig.txt");

                    configs.AddRange(GameConfigurationParser.Parse(gameData));
                }

                //finalise config loading
                if (configs.Any())
                {
                    //remove duplicates
                    configs = configs.GroupBy(g => g.Name).Select(grp => grp.First()).ToList();

                    //save
                    string jsonSaveText = JsonConvert.SerializeObject(configs, Formatting.Indented);
                    File.WriteAllText(gameConfigurationsPath, jsonSaveText);

                    if (configs.Count == 1)
                        Launch(configs.First());

                    GameGrid.ItemsSource = configs;
                }
                else//oh noes
                {
                    LaunchButton.IsEnabled = false;
                    WarningLabel.Content = "No Hammer configurations found. Cannot launch.";
                }

                //Handle command line args for game configs
                string[] commandLineArgs = Environment.GetCommandLineArgs();
                foreach (string arg in commandLineArgs)
                {
                    try
                    {
                        //If arg type is a game, continue
                        if (arg.Substring(0, 6).ToLower() == "-game:")
                        {
                            //Make everything lowercase, remove arg type, and remove spaces
                            string argGameConfig = arg.ToLower().Remove(0, 6).Replace(" ", "");

                            //Search all configs to see if arg is a match
                            foreach (GameConfiguration config in configs)
                            {
                                //Remove spaces and make everything lowercase
                                string configName = config.Name.ToLower().Replace(" ", "");

                                //If arg matches, launch that configuration
                                if (argGameConfig == configName)
                                {
                                    Launch(config);
                                }
                            }
                        }
                    }
                    catch (ArgumentOutOfRangeException e)
                    {
                        //Ignore error
                    }
                }
            }
            catch (Exception e) { ExceptionHandler.LogException(e); }
        }