diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 81a10e3..3f5e35e 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -795,20 +795,34 @@ namespace OpenSim | |||
795 | /// <summary> | 795 | /// <summary> |
796 | /// Create an estate with an initial region. | 796 | /// Create an estate with an initial region. |
797 | /// </summary> | 797 | /// </summary> |
798 | /// <remarks> | ||
799 | /// This method doesn't allow an estate to be created with the same name as existing estates. | ||
800 | /// </remarks> | ||
798 | /// <param name="regInfo"></param> | 801 | /// <param name="regInfo"></param> |
799 | public void CreateEstate(RegionInfo regInfo) | 802 | /// <param name="existingName">A list of estate names that already exist.</param> |
803 | /// <returns>true if the estate was created, false otherwise</returns> | ||
804 | public bool CreateEstate(RegionInfo regInfo, List<string> existingNames) | ||
800 | { | 805 | { |
801 | // Create a new estate | 806 | // Create a new estate |
802 | regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); | 807 | regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); |
808 | string newName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); | ||
803 | 809 | ||
804 | regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); | 810 | if (existingNames.Contains(newName)) |
811 | { | ||
812 | MainConsole.Instance.OutputFormat("An estate named {0} already exists. Please try again.", newName); | ||
813 | return false; | ||
814 | } | ||
815 | |||
816 | regInfo.EstateSettings.EstateName = newName; | ||
805 | 817 | ||
806 | // FIXME: Later on, the scene constructor will reload the estate settings no matter what. | 818 | // FIXME: Later on, the scene constructor will reload the estate settings no matter what. |
807 | // Therefore, we need to do an initial save here otherwise the new estate name will be reset | 819 | // Therefore, we need to do an initial save here otherwise the new estate name will be reset |
808 | // back to the default. The reloading of estate settings by scene could be eliminated if it | 820 | // back to the default. The reloading of estate settings by scene could be eliminated if it |
809 | // knows that the passed in settings in RegionInfo are already valid. Also, it might be | 821 | // knows that the passed in settings in RegionInfo are already valid. Also, it might be |
810 | // possible to eliminate some additional later saves made by callers of this method. | 822 | // possible to eliminate some additional later saves made by callers of this method. |
811 | regInfo.EstateSettings.Save(); | 823 | regInfo.EstateSettings.Save(); |
824 | |||
825 | return true; | ||
812 | } | 826 | } |
813 | 827 | ||
814 | /// <summary> | 828 | /// <summary> |
@@ -825,16 +839,21 @@ namespace OpenSim | |||
825 | MainConsole.Instance.Output("Your region is not part of an estate."); | 839 | MainConsole.Instance.Output("Your region is not part of an estate."); |
826 | 840 | ||
827 | List<EstateSettings> estates = EstateDataService.LoadEstateSettingsAll(); | 841 | List<EstateSettings> estates = EstateDataService.LoadEstateSettingsAll(); |
842 | List<string> estateNames = new List<string>(); | ||
843 | foreach (EstateSettings estate in estates) | ||
844 | estateNames.Add(estate.EstateName); | ||
828 | 845 | ||
829 | while (true) | 846 | while (true) |
830 | { | 847 | { |
831 | if (estates.Count == 0) | 848 | if (estates.Count == 0) |
832 | { | 849 | { |
833 | MainConsole.Instance.Output( | 850 | MainConsole.Instance.Output( |
834 | "There aren't any existing estates. You will need to create a new one for this region."); | 851 | "No existing estates found. You must create a new one for this region."); |
835 | 852 | ||
836 | CreateEstate(regInfo); | 853 | if (CreateEstate(regInfo, estateNames)) |
837 | break; | 854 | break; |
855 | else | ||
856 | continue; | ||
838 | } | 857 | } |
839 | else | 858 | else |
840 | { | 859 | { |
@@ -844,15 +863,13 @@ namespace OpenSim | |||
844 | 863 | ||
845 | if (response == "no") | 864 | if (response == "no") |
846 | { | 865 | { |
847 | CreateEstate(regInfo); | 866 | if (CreateEstate(regInfo, estateNames)) |
848 | break; | 867 | break; |
868 | else | ||
869 | continue; | ||
849 | } | 870 | } |
850 | else | 871 | else |
851 | { | 872 | { |
852 | List<string> estateNames = new List<string>(); | ||
853 | foreach (EstateSettings estate in estates) | ||
854 | estateNames.Add(estate.EstateName); | ||
855 | |||
856 | response | 873 | response |
857 | = MainConsole.Instance.CmdPrompt( | 874 | = MainConsole.Instance.CmdPrompt( |
858 | string.Format( | 875 | string.Format( |
@@ -865,7 +882,7 @@ namespace OpenSim | |||
865 | List<int> estateIDs = EstateDataService.GetEstates(response); | 882 | List<int> estateIDs = EstateDataService.GetEstates(response); |
866 | if (estateIDs.Count < 1) | 883 | if (estateIDs.Count < 1) |
867 | { | 884 | { |
868 | MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); | 885 | MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again."); |
869 | continue; | 886 | continue; |
870 | } | 887 | } |
871 | 888 | ||