/// <summary> /// In a 'Stage', there is data that is indexed by Room number. The actual rooms don't store /// this data internally, it is only by file name. So we're going to strip apart the filename /// to get the room number. /// </summary> /// <param name="NewArc"></param> private void GetRoomNumber(ZeldaArc NewArc) { int roomNumber = 0; //We're going to trim the Filepath down to just name - ie: "Room0.arc / R00_00.arc" string fileName = Path.GetFileName(NewArc.Filename); //If it starts with "Room" then it's (probably) a Windwaker Archive. if (fileName.Substring(0, 4).ToLower() == "room") { //Use Regex here to grab what is between "Room" and ".arc", since it goes up to "Room23.arc" string[] numbers = Regex.Split(fileName, @"\D+"); string trimmedNumbers = String.Join("", numbers); trimmedNumbers = trimmedNumbers.Trim(); roomNumber = int.Parse(trimmedNumbers); } //If it starts with R ("Rxx_00, xx being Room Number"), it's Twlight Princess else if (fileName.Substring(0, 1).ToLower() == "r") { //I *think* these follow the Rxx_00 pattern, where xx is the room number. _00 can change, xx might be 1 or 3, who knows! //We're going to use RegEx here to make sure we only grab what is between R and _00 which could be multipl.e string[] numbers = Regex.Split(fileName.Substring(0, fileName.Length - 6), @"\D+"); string trimmedNumbers = String.Join("", numbers); trimmedNumbers = trimmedNumbers.Trim(); roomNumber = int.Parse(trimmedNumbers); } else { InvalidRoomNumber popup = new InvalidRoomNumber(); popup.DescriptionLabel.Text = "Failed to determine room number from file name." + Environment.NewLine + "Expected: Room<x>.arc or R<xx>_00, got: " + fileName; popup.ShowDialog(this); roomNumber = (int)popup.roomNumberSelector.Value; Console.WriteLine("User chose: " + roomNumber); } NewArc.RoomNumber = roomNumber; }
/// <summary> /// In a 'Stage', there is data that is indexed by Room number. The actual rooms don't store /// this data internally, it is only by file name. So we're going to strip apart the filename /// to get the room number. /// </summary> /// <param name="NewArc"></param> private void GetRoomNumber(ZeldaArc NewArc) { int roomNumber = 0; //We're going to trim the Filepath down to just name - ie: "Room0.arc / R00_00.arc" string fileName = Path.GetFileName(NewArc.Filename); //If it starts with "Room" then it's (probably) a Windwaker Archive. if (fileName.Substring(0, 4).ToLower() == "room") { //Use Regex here to grab what is between "Room" and ".arc", since it goes up to "Room23.arc" string[] numbers = Regex.Split(fileName, @"\D+"); string trimmedNumbers = String.Join("", numbers); trimmedNumbers = trimmedNumbers.Trim(); roomNumber = int.Parse(trimmedNumbers); } //If it starts with R ("Rxx_00, xx being Room Number"), it's Twlight Princess else if (fileName.Substring(0, 1).ToLower() == "r") { //I *think* these follow the Rxx_00 pattern, where xx is the room number. _00 can change, xx might be 1 or 3, who knows! //We're going to use RegEx here to make sure we only grab what is between R and _00 which could be multipl.e string[] numbers = Regex.Split(fileName.Substring(0, fileName.Length - 6), @"\D+"); string trimmedNumbers = String.Join("", numbers); trimmedNumbers = trimmedNumbers.Trim(); roomNumber = int.Parse(trimmedNumbers); } else { InvalidRoomNumber popup = new InvalidRoomNumber(); popup.DescriptionLabel.Text = "Failed to determine room number from file name." + Environment.NewLine + "Expected: Room<x>.arc or R<xx>_00, got: " + fileName; popup.ShowDialog(this); roomNumber = (int) popup.roomNumberSelector.Value; Console.WriteLine("User chose: " + roomNumber); } NewArc.RoomNumber = roomNumber; }