The line which you removed - "SetAnimationFrame to Shop.At((Tile.IID)%LevelWidth,(Tile.IID)/LevelWidth)" was designed to refresh the tile sprite frame to reflect that of the array, meaning that if the array x.10,y.20 = 1, it would set the corresponding tile to play frame 1. This means that the array can be saved as a string, and then loaded on startup.
Does this make sense?
Ahh, gotcha. Thought it was meant to do something like that but couldn't really figure it out. :)
At the moment way I restructured it, painted values are saved into array. So if you paint few tiles as animation frame 2 value '2' is saved to corresponding location at the array. As of now, there isn't anyway to change frame you are painting, but this would be a simple variable you can change via button or something.
What this array makes possible is that you can save/load levels. Right now there is no level generation from array, which should not be too hard to implement. Saving arrays as strings and loading them at startup is a good idea, there are some good examples of that around here :)
Saving and loading could be implemented with arrays 'load' and 'asJson' functions, think I removed one of them as it wasn't really doing anything :) What you'd need is a save/load buttons which trigger these functions, and multiple arrays to save/load levels to/from.
This is not really the simplest stuff, but once you get some basic principles down it should clear up nicely! :)