Added a 'entity_name' property to Entity. Also, switched ToolZapGun from a list of inputs to a constructor taking arbitrary arguments; it passes the arguments on to its parent, modifying the ones it wants to be immutable. This strikes me as dangerous; on the other hand, it saves me having to update all the constructors of every subclass each time I want to make a change, and PyCharm's refactoring is...difficult to use.
Changed some names in the constructors to be prefaced with underscores; will format properly when I start to head out. Updated UIScreenSelectTool to more properly handle even numbers of tools, to draw the tool's name under the selection bar.
Activated free look - bound to 'L'.
Created, added targeting screen. I looked at Tool and all of my functions require a user and level. Why? It already knows about the level - and should know about the user, too! Going to mess around with Tool and make it more sensible now, before I make a bunch of them.
Changed functions in Tool to no longer use _level. _user is more trickly though - in order to do that you would need two-stage loading (to get the Actor object to assign to the Tool). Which would you rather do - two-stage loading, or passing a _user through all the functions?
Changed the loading to bind the _user data member of the Tool to the Actor it's assigned to when it loads; if no Actor (like on floor), defaults to None.
Eliminated the '_user' parameter from all Tool functions. Also, the LOS algorithm excluded the square of the origin, which is...not ideal; fixed that.
Eliminated the '_user' parameter from all Tool functions. Also, the LOS algorithm excluded the square of the origin, which is...not ideal; fixed that.