The tradeoff when using bitmasks as opposed to separate variables for each energy is memory space over speed. Using bitmasks makes good use of memory, but it takes a couple of operations to read & write. Using variables is very fast, but wasteful of memory if your variables only have a couple of states and don't use the full dynamic range of their type.
All programming is tradeoffs. Well, that and finesse. Style. Pressure. OK, but tradeoffs are a big part of it.