
Current work in progress with wall-mounted lights, switches and windows. All derive from Wall without an independent redefinition, so they should be compatible with any other mods and have their property values scale accordingly if the default Walls are changed. All three also come with bricks/planks/smooth texture variants.
The WallSwitch uses a custom Graphic_Flickable graphic class, which is a simplified subclass of my custom Graphic_States class. These new graphical classes will allow modders to define multiple sets of regular graphics (Graphic_Multi, Graphic_Appearances, Graphic_Single, etc.) for use by a single ThingDef without having to compile a new DLL. For example, the WallSwitch uses Graphic_Flickable to have two different sets of Graphic_Appearances for its On and Off states. Graphic_States currently requires the addition of a CompProperties_States ThingComp to the ThingDef so that custom states can be defined, while Graphic_Flickable only requires a CompProperties_Flickable.
I've also created a CompProperties_Commands class that will enable the creation of simple Command gizmos to modify the properties of Thing and its Comps. I'll be using this to add color switching to the wall lights (either via preset color definitions or direct RGB adjustments) but the gizmos could be used for other things, like adding different levels of power generation/fuel consumption to a generator or adjusting the appearance of a Thing using Graphic_States.
Feedback and suggestions are appreciated, especially regarding the graphics. I tried to stay somewhat close to the vanilla Rimworld art style but was not terribly successful. The WallSwitch I'm fairly happy with, though i'll probably end up changing the blue glow of the On state.