z_json now throws a conversion exception if anything goes wrong; the loader will catch conversion exceptions and never intentionally throw an exception - defaults to returning default entities if it can't find the file. create_entity_by_name, _load_template_by_name completed. Next up is the TemplateActor create_instance.
New test class. Also required - Template classes for Sense objects and Tool objects.
TemplateActor._create_tool_list() tested, implemented.
TemplateActor.create_instance() implemented. ALSO! Important - default x, y, of Actor objects is -1.
Messed around with the levels and assets.
Changed the EntityIndex - now you must provide the level when you call create_instance instead of setting it when it's created. Also added a player_actor data member to Level with set and get. Also changed the loader to set the player_actor when it loads (test present in testLoaderLevel).
Added a get_level_controller function to LoaderLevel.
You can now load into a level from the level menu. Also, there's a weird but where if you set the sidebar to certain lengths the cursor and level become misaligned; I suspect strongly it has something to do with me accidentally putting in multiple types of division. See bottom of z_defs for invalid values.
Fixed that stupid bug. Turns out, it was being caused if there were an even number of rows. I should see if it happens with cols, too.
Fixed the cols bug as well.
Updates the screens; fixed bugs with selection in UIScreenLevelMenu (you could do things like arrow down out of the right arrow to the last selection which were not intended).