Thanks! I'll take all the advice I can get.
I have a grid that flags a tile if it's "Blocking" or not in a 2d array. I'm not thrilled with the performance speed wise, but since it lowered my FPS from 2000 to 700, I'm going to say "I'll worry about it if everything drops bellow 200fps."
Right now I have it so that the line of sight works spirals a check outward from the player each step to 15 tiles. That more than covers the long way on 16x9 screens. The formula to see what square to check is GetTileAt(Mathf.Abs(X)-(Mathf.Sign(X), Mathf.Abs(Y)-(Mathf.Sign(Y)). This will always check the diagnal block closest to the player, and (oddly enough) deal with straight lines appropriately too.
What I'm really trying to decide on how to handle is what happens if you have multiple light sources? Like you're approaching a campfire with a torch. The obvious answer is "Add them together", but then lets say I put out my torch... how do I figure out which part of that luminosity is the torch, and which is the campfire? I'm debating between:
A) Do a 'negative illumination' function that gets called when a light source is put out. And is my leading contender right now.
B) Add all light sources on a tile to a list of objects ( List<GameObject> LightSources ) and add remove them when a source is added removed.
I feel like B is way over engineered now that I'm looking at it.
I sometimes wish I wasn't doing a shaded value, and just did it Ultima style where things are either visible, or not. But I feel like this really makes the cave spooky.