As a programmer I’m sure you understand that there are uncountable ways to approach the problem and that there are design considerations that will influence how best to go about this. I haven’t played the game but the first question seems to be are you building this in 2d or do you intend to build this as a 3d game.
Worth checking the market place for practical examples, this is a common approach to learning. There are square/hex grid based examples but I’m sure you can adapt the techniques for managing the states of your tiles from these? Also input from an artist might be valuable, for example do you implement some form of zoning on top of a heightmap based landscape (like arrays of bounds) or do you produce a mesh and cut it into sections in which case texturing may be a nause but you could probably use the overlap events to determine what is where when and how. Both pose challenges but your artist might be able to give you a steer on which is more viable or you may get input from someone who’s working on this sort of project but ultimately at some point the knowledge you seek will fall into the ‘trade secrets’ category and like every good designer you will need to be a bit inventive 