public WindowsPhoneGamePlatform(Game game) : base(game) { // Setup the game window. Window = new WindowsPhoneGameWindow(game); // Setup the launch parameters. // - Parameters can optionally start with a forward slash. // - Keys can be separated from values by a colon or equals sign // - Double quotes can be used to enclose spaces in a key or value. int pos = 0; int paramStart = 0; bool inQuotes = false; var keySeperators = new char[] { ':', '=' }; while (pos <= LaunchParameters.Length) { string arg = string.Empty; if (pos < LaunchParameters.Length) { char c = LaunchParameters[pos]; if (c == '"') { inQuotes = !inQuotes; } else if ((c == ' ') && !inQuotes) { arg = LaunchParameters.Substring(paramStart, pos - paramStart).Replace("\"", ""); paramStart = pos + 1; } } else { arg = LaunchParameters.Substring(paramStart).Replace("\"", ""); } ++pos; if (string.IsNullOrWhiteSpace(arg)) { continue; } string key = string.Empty; string value = string.Empty; int keyStart = 0; if (arg.StartsWith("/")) { keyStart = 1; } if (arg.Length > keyStart) { int keyEnd = arg.IndexOfAny(keySeperators, keyStart); if (keyEnd >= 0) { key = arg.Substring(keyStart, keyEnd - keyStart); int valueStart = keyEnd + 1; if (valueStart < arg.Length) { value = arg.Substring(valueStart); } } else { key = arg.Substring(keyStart); } Game.LaunchParameters.Add(key, value); } } Game.PreviousExecutionState = PreviousExecutionState; }
public WindowsPhoneGamePlatform(Game game) : base(game) { // Setup the game window. Window = new WindowsPhoneGameWindow(game); // Setup the launch parameters. // - Parameters can optionally start with a forward slash. // - Keys can be separated from values by a colon or equals sign // - Double quotes can be used to enclose spaces in a key or value. int pos = 0; int paramStart = 0; bool inQuotes = false; var keySeperators = new char[] { ':', '=' }; while (pos <= LaunchParameters.Length) { string arg = string.Empty; if (pos < LaunchParameters.Length) { char c = LaunchParameters[pos]; if (c == '"') inQuotes = !inQuotes; else if ((c == ' ') && !inQuotes) { arg = LaunchParameters.Substring(paramStart, pos - paramStart).Replace("\"", ""); paramStart = pos + 1; } } else { arg = LaunchParameters.Substring(paramStart).Replace("\"", ""); } ++pos; if (string.IsNullOrWhiteSpace(arg)) continue; string key = string.Empty; string value = string.Empty; int keyStart = 0; if (arg.StartsWith("/")) keyStart = 1; if (arg.Length > keyStart) { int keyEnd = arg.IndexOfAny(keySeperators, keyStart); if (keyEnd >= 0) { key = arg.Substring(keyStart, keyEnd - keyStart); int valueStart = keyEnd + 1; if (valueStart < arg.Length) value = arg.Substring(valueStart); } else { key = arg.Substring(keyStart); } Game.LaunchParameters.Add(key, value); } } Game.PreviousExecutionState = PreviousExecutionState; }