Extended Save/LoadState
Monkey Forums/Monkey Code/Extended Save/LoadState
| ||
I've made a simple module that I'd like to share with everyone. It allows you to input a key and a value when saving and loading state, great for when you want to store lots of different information. You can also remove an old key and its value. Kinda works like TMap from BlitzMax! This should work on all targets, but I've heard that some targets have a limitation on the state size. extstate.monkey: Strict Import mojo.app Global stateString:String Global workString:String Global startChar:String = "<" Global endChar:String = ">" Function SaveStateExt:Void(key:String, value:String) key = key.ToLower() stateString = LoadState() If stateString.Contains(key + startChar) Then workString = stateString.Split(key + startChar)[1] If workString.Contains(endChar) Then workString = workString.Split(endChar)[0] Else Return stateString = stateString.Replace(key + startChar + workString + endChar, key + startChar + value + endChar) Else stateString += key + startChar + value + endChar EndIf SaveState(stateString) End Function LoadStateExt:String(key:String) key = key.ToLower() stateString = LoadState() If stateString.Contains(key + startChar) Then workString = stateString.Split(key + startChar)[1] If workString.Contains(endChar) Then workString = workString.Split(endChar)[0] Else Return "" Return workString Else Return "" EndIf End Function RemoveStateExt:Bool(key:String) key = key.ToLower() stateString = LoadState() If stateString.Contains(key + startChar) Then workString = stateString.Split(key + startChar)[1] If workString.Contains(endChar) Then workString = workString.Split(endChar)[0] Else Return False stateString = stateString.Replace(key + startChar + workString + endChar, "") SaveState(stateString) Return True Else Return False EndIf End example.monkey: Strict Import mojo Import extstate Function Main:Int() New Game Return 0 End Class Game Extends App Method OnCreate:Int() 'Clear the state SaveState("") 'Input some junk SaveStateExt("Test1", "This is test 1") SaveStateExt("Test2", "BLARG") SaveStateExt("Test3", "Test 3 here!") SaveStateExt("Test4", "Forth test") SaveStateExt("Test5", "And the final 5th test!! :D") 'Replace test 2 SaveStateExt("test2", "And this is test 2") 'Remove test 5 RemoveStateExt("test5") 'Print our junk! Print LoadStateExt("tEsT2") Print LoadStateExt("tEsT5") Return 0 End End |