diff --git a/Assets/Fungus/Scripts/Commands/SavePoint.cs b/Assets/Fungus/Scripts/Commands/SavePoint.cs
index c6185a6d..687abee7 100644
--- a/Assets/Fungus/Scripts/Commands/SavePoint.cs
+++ b/Assets/Fungus/Scripts/Commands/SavePoint.cs
@@ -20,7 +20,9 @@ namespace Fungus
/// Use the parent Block's name as the Save Point Key. N.B. If you change the Block name later it will break the save file!
UseBlockName,
/// Use a custom string for the key. This allows you to use multiple Save Points in the same block and save files will still work if the Block is renamed later.
- Custom
+ Custom,
+ /// Use both the parent Block's name as well as a custom string for the Save Point key. This allows you to use your custom key every block, provided your Block names are unique.///
+ Both
}
///
@@ -43,6 +45,10 @@ namespace Fungus
[Tooltip("A string key which uniquely identifies this save point.")]
[SerializeField] protected string customKey = "";
+ [Tooltip("A string to seperate the block name and custom key when using KeyMode.Both.")]
+ [SerializeField]
+ protected string keySeparator = "_";
+
[Tooltip("How the description for this Save Point is defined.")]
[SerializeField] protected DescriptionMode descriptionMode = DescriptionMode.Timestamp;
@@ -73,6 +79,10 @@ namespace Fungus
{
return ParentBlock.BlockName;
}
+ else if (keyMode == KeyMode.Both)
+ {
+ return ParentBlock.BlockName + keySeparator + customKey;
+ }
else
{
return customKey;
@@ -123,6 +133,10 @@ namespace Fungus
{
return "key: ";
}
+ else if (keyMode == KeyMode.Both)
+ {
+ return "key: " + keySeparator + customKey;
+ }
return "key: " + customKey;
}
@@ -135,7 +149,13 @@ namespace Fungus
public override bool IsPropertyVisible(string propertyName)
{
if (propertyName == "customKey" &&
- keyMode != KeyMode.Custom)
+ (keyMode != KeyMode.Custom && keyMode != KeyMode.Both))
+ {
+ return false;
+ }
+
+ if (propertyName == "keySeparator" &&
+ keyMode != KeyMode.Both)
{
return false;
}