Copy and Paste for Structures

<
>
July 14, 2021

For easier editing of Blueprints it’s useful to be able to copy and paste Structures.
For this to work I introduced:

cursor_item: Option<Structure>

to track what’s currently within the ‘clipboard’.
I also extended every Structure with the function

as_template(&self) -> Self

which should return whatever makes sense for the copy and paste operation.
For example the content and current cooldown shouldn’t be copied, while an Assembler’s Recipe should be.
For the Assembler the implementation then looks like this:

pub fn as_template(&self) -> Self {
    Self {
        recipe: self.recipe,
        ..Default::default()
    }
}

If the cursor_item is set, I render a Structure with a slight transparency at the cursor location.
The copy&paste then looks like this: