The MeckLab is where the user can modify or create new Meck designs.
The Lab itself is split into three 'pages'. Chassis Assignment, Critical Assignment, and Equipment Assignment
The Chassis page is where you will define the Meck's name/model, tonnage, and various technology options, movement, heat sinks, etc. This will also display a breakdown of the weights of all the meck's different components.
The Criticals page is where you manage the placement of all the Meck's components. Many (such as engines, sensors, actuators) are locked-in and cannot be moved. The critical hits table is broken down into several Frames: one for each location of the Meck, as well as a 'pending equipment' frame for equipment which has not yet been designated to a critical slot.
The Equipment page is where you add new equipment (namely weapons) to a Meck's potential load-out. New Equipment will be transfered to the Meck's pending equipment frame.
Above the pages, an overlay gui will allow the user to save, load, reset loadouts, as well as other general options.
The core of the Lab is a WorkingMeck object. This is a composition of python classes which are written to be highly mutable. The workingMeck is wired together with the controls in the Lab. In theory, when a workingMeck is
written to a Meck object (a not-so-mutable but lighter version of WorkingMeck), WorkingMeck will grep all its info from the gui controls' properties through its @property decorated attributes.
If an existing Meck design is loaded into the Lab, a bootstrap method will create a new 'blank' WorkingMeck, then go through the Lab gui and define its initial properties to reflect those of the Meck being loaded. Retroactively, the Lab's WorkingMeck should update itself to meet the loaded meck's attributes.