This project is a bit too in-depth to exclusively have a notes post, so I'm going to build checklists here as well.
Bases Project Outline
This project is somewhat complex and wrapped around itself tightly.
Have a research framework, and within it include a list of allowable fixtures. These should all be off in the default state, they're added in the init, which for now will add all.
I need framework for attaching fixtures -- not the UI for it yet but the actual data structure and I guess the placement of fixtures as well.
Pylons should have two menu sections -- one that lets you remove a pylon or indicates how many fixtures are attached, and goes into a menu where you can interact with or remove fixtures. The other section lets you place fixtures -- I'll worry about the UI of creating them later.
I guess for now have a Test fixture that just debugs its coordinates and a feature-unique signifier.
I need UI for placing fixtures -- the polar thing and the free move thing.
You should be able to place pylons from other pylons as well, forming a "chain" between them.
You should be able to warp to any pylons along the chain -- will make base UX way better. No gravity here.
Next
This will get the framework for everything set up. I'll then be able to:
Build out actual fixtures
Do the research stuff (well no, I need atomization first, which is its own separate project)
Handle procgen recipes that tie back into the fixture system but also modules and items -- probably its own separate project as well.
Context-specific menus (without tabbing) are probably okay -- just make sure that they close when you move if they have the map-move-hide class.
Keydown or whatever the first key event is should trigger map move hide, it shouldn't be on every movement for performance reasons. Same deal with shatterloop
Pylons initial menu
When you interact with a pylon, bring up a menu that either lets you name it (with a "name" linkbutton to the right of it) or lets you warp to existing pylons.
Naming a pylon and saving it should store it in the .data{} object.
Stored pylons should go to a different menu entirely.
The warp option on init should bring up the list of stored pylons.
When one is picked, warp you to it in the same orientation as you are with the current pylon. Make sure gravity isn't still running, and auto-open the pylon menu. Delete the old pylon.