I think things are getting confusing because you're using -10 and counting up. But the test in UpdateShields is checking if shields < 0 when it should be checking > 0

I feel that this is the wrong way around. Things which are being damaged should lose value. Good things should be positive, bad things should be negative.

Initialise your player to have 10 shields and count down when hit.
Then test if your shields < 0, if so, make the player die.

Then later on, if your player collects a shield powerup, you can add shields to it instead of removing shields... which makes no sense to me.