Noah Petherbridge
77297fd60d
Two new tools added to the Level Editor: * Pan Tool: left-click to scroll the level around safely. * Text Tool: write text onto your level. Features of the Text Tool: * Can choose from the game's built-in fonts, size and enter the message you want to write. * The mouse cursor previews the text when hovered over the level. * Click to "stamp" the text onto your level. The currently selected color swatch will be used to color the text in. * Adds two new fonts: Azulian.ttf and Rive.ttf that can be selected in the Text Tool. Some implementation notes: * Added package native/engine_sdl.go that handles the lower-level SDL2_TTF logic to rasterize the text into a black&white image. * WASM not supported yet (if the game even still built for WASM); native/engine_wasm.go stubs out the TextToImage() call with a "not supported" error just in case. Other changes: * New Toolbar icons: they are 24x24 instead of 32x32 to make more room for more tools. * The toolbar now shows two buttons per row for a more densely packed layout. For very narrow screen widths (< 600px) the default Vertical Toolbar layout will use one-button-per-row to not eat too much screen real estate. * In the Horizontal Toolbars layout there are 2 buttons per column.
34 lines
514 B
Go
34 lines
514 B
Go
package drawtool
|
|
|
|
// Tool is a draw mode for an editable Canvas.
|
|
type Tool int
|
|
|
|
// Draw modes for editable Canvas.
|
|
const (
|
|
PencilTool Tool = iota // draw pixels where the mouse clicks
|
|
LineTool
|
|
RectTool
|
|
EllipseTool
|
|
ActorTool // drag and move actors
|
|
LinkTool
|
|
EraserTool
|
|
PanTool
|
|
TextTool
|
|
)
|
|
|
|
var toolNames = []string{
|
|
"Pencil",
|
|
"Line",
|
|
"Rectangle",
|
|
"Ellipse",
|
|
"Doodad", // readable name for ActorTool
|
|
"Link",
|
|
"Eraser",
|
|
"PanTool",
|
|
"TextTool",
|
|
}
|
|
|
|
func (t Tool) String() string {
|
|
return toolNames[t]
|
|
}
|