// This is GZDB hints configuration file. It's dev-only stuff so bare minimum of boilerplate is present in the parser class
// (e.g. create your Hints.cfg exactly the way it's done here or face consequences).
// "class" should exactly match your classname; "group" can be anything. "general" and "multiselection" groups are shown automatically when appropriate.
// Supported tags are <b> for Bold and <br> for line break. Action name inside of <k> tag will insert keyboard shortcut for given action in bold.
// Only single-line comments are supported.

class VerticesMode
group general
"Hold <k>builder_pan_view</k> and move the mouse to pan the view"
"Press <k>builder_classicselect</k> to select a vertex"
"Hold <k>builder_classicselect</k> and drag to use rectangular selection"
"Press <k>builder_clearselection</k> to clear selection"
"Press <k>builder_insertitem</k> to insert a new vertex"
"Press <k>builder_deleteitem</k> to delete selected vertices"
"Press <k>builder_dissolveitem</k> to delete selected vertices and try to preserve surrounding geometry"
"Press <k>builder_classicedit</k> to edit properties of current selection"
"Use <k>builder_griddec</k> and <k>builder_gridinc</k> to change grid size"
"Press <k>buildermodes_drawlinesmode</k> to start drawing lines"
"Check <b>'Vertices'</b> menu for additional actions"

group multiselection
"Hold <b>Shift</b> to toggle additive selection"
"Hold <b>Ctrl</b> to enable subtractive selection"
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"


class LinedefsMode
group general
"Hold <k>builder_pan_view</k> and move the mouse to pan the view"
"Press <k>builder_classicselect</k> to select a linedef"
"Hold <k>builder_classicselect</k> and drag to use rectangular selection"
"Press <k>builder_clearselection</k> to clear selection"
"Press <k>builder_deleteitem</k> to delete selected linedef(s)"
"Press <k>builder_dissolveitem</k> to delete selected linedef(s) and try to preserve surrounding geometry"
"Press <k>builder_classicedit</k> to edit properties of current selection"
"Use <k>builder_griddec</k> and <k>builder_gridinc</k> to change grid size"
"Press <k>buildermodes_drawlinesmode</k> or <k>builder_insertitem</k> to start drawing lines"
"Press <k>buildermodes_fliplinedefs</k> to flip the selected linedefs around keeping sidedefs on the correct side"
"Press <k>buildermodes_selectsinglesided</k> to keep only the single-sided lines in your selection selected"
"Press <k>buildermodes_selectdoublesided</k> to keep only the double-sided lines in your selection selected"
"Check <b>'Linedefs'</b> menu for additional actions"

group multiselection
"Hold <b>Shift</b> to toggle additive selection"
"Hold <b>Ctrl</b> to enable subtractive selection"
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"
"Hold <b>Alt</b> to enable things (de)selection"


class SectorsMode
group general
"Hold <k>builder_pan_view</k> and move the mouse to pan the view"
"Press <k>builder_classicselect</k> to select a sector. Hold <b>Alt</b> to (de)select things inside of a sector"
"Hold <k>builder_classicselect</k> and drag to use rectangular selection"
"Press <k>builder_clearselection</k> to clear selection"
"Press <k>builder_deleteitem</k> to delete selected sector(s)"
"Press <k>builder_classicedit</k> to edit properties of current selection"
"Use <k>builder_griddec</k> and <k>builder_gridinc</k> to change grid size"
"Press <k>buildermodes_joinsectors</k> to join two or more selected sectors together and keep all linedefs"
"Press <k>buildermodes_mergesectors</k> to join two or more selected sectors together and remove the shared linedefs"
"Press <k>buildermodes_gradientbrightness</k> to create a brightness or color gradient over all selected sectors from the first to the last selected sector"
"Press <k>buildermodes_gradientfloors</k> to create a floor heights gradient over all selected sectors from the first to the last selected sector"
"Press <k>buildermodes_gradientceilings</k> to create a ceiling heights gradient over all selected sectors from the first to the last selected sector"
"Press <k>buildermodes_makedoor</k> to create doors from the highlighted or selected sectors"
"Press <k>buildermodes_drawlinesmode</k> or <k>builder_insertitem</k> to start drawing lines"
"Check <b>'Sectors'</b> menu for additional actions"

group multiselection
"Hold <b>Shift</b> to toggle additive selection"
"Hold <b>Ctrl</b> to enable subtractive selection"
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"
"Hold <b>Alt</b> to enable things (de)selection"


class ThingsMode
group general
"Hold <k>builder_pan_view</k> and move the mouse to pan the view"
"Press <k>builder_classicselect</k> to select a thing"
"Hold <k>builder_classicedit</k> to drag selected or highlighted things"
"Hold <b>Shift-</b><k>builder_classicedit</k> to clone-drag selected or highlighted things"
"Hold <k>builder_classicselect</k> and drag to use rectangular selection"
"Press <k>builder_clearselection</k> to clear selection"
"Press <k>builder_deleteitem</k> to delete selected thing(s)"
"Press <k>builder_classicedit</k> to edit properties of current selection"
"Use <k>builder_griddec</k> and <k>builder_gridinc</k> to change grid size"
"Press <k>builder_insertitem</k> to create a new thing"
"Press <k>buildermodes_thinglookatcursor</k> to point selected things to cursor position. Hold <b>Ctrl</b> to point away from cursor"
"Press <k>buildermodes_thingaligntowall</k> to align selected things to closest linedef"
"Press <k>buildermodes_drawlinesmode</k> to start drawing lines"
"Check <b>'Things'</b> menu for additional actions"

group multiselection
"Hold <b>Shift</b> to toggle additive selection"
"Hold <b>Ctrl</b> to enable subtractive selection"
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"


class BaseVisualMode
group general
"Use <k>builder_moveforward</k>, <k>builder_movebackward</k>, <k>builder_moveleft</k> and <k>builder_moveright</k> to move around. Hold <b>Shift</b> to double the speed"
"Use <k>builder_moveup</k> and <k>builder_movedown</k> to move up and down"
"Press <k>builder_gztogglevisualvertices</k> to toggle vertex handles rendering (UDMF only)"

group things
"Use <k>builder_moveforward</k>, <k>builder_movebackward</k>, <k>builder_moveleft</k> and <k>builder_moveright</k> to move around. Hold <b>Shift</b> to double the speed"
"Use <k>builder_moveup</k> and <k>builder_movedown</k> to move up and down"
"Press <k>builder_gztogglevisualvertices</k> to toggle vertex handles rendering (UDMF only)"
"Press <k>builder_insertitem</k> to insert a thing at current cursor position"
"Press <k>builder_visualselect</k> to select the highlighted thing"
"Press <k>builder_clearselection</k> to clear selection"
"Press <k>builder_deleteitem</k> to delete selected things"
"Use <k>buildermodes_raisesector8</k> and <k>buildermodes_lowersector8</k> to change height of selected/targeted things by 8 map units"
"Use <k>buildermodes_lowersectortonearest</k> and <k>buildermodes_raisesectortonearest</k> to align selected/targeted things to floor or ceiling"
"Use <k>builder_movethingfwd</k>, <k>builder_movethingback</k>, <k>builder_movethingleft</k> and <k>builder_movethingright</k> to move selected things around"
"Use <k>buildermodes_scaleupx</k>, <k>buildermodes_scaledownx</k>, <k>buildermodes_scaleupy</k> and <k>buildermodes_scaledowny</k> to scale selected things (UDMF only)"
"Press <k>builder_placethingatcursor</k> to move selected things to cursor location" 
"Press <k>buildermodes_showvisualthings</k> to cycle through the different ways the things are shown"

group sidedefs
"Use <k>builder_moveforward</k>, <k>builder_movebackward</k>, <k>builder_moveleft</k> and <k>builder_moveright</k> to move around. Hold <b>Shift</b> to double the speed"
"Use <k>builder_moveup</k> and <k>builder_movedown</k> to move up and down"
"Press <k>builder_gztogglevisualvertices</k> to toggle vertex handles rendering (UDMF only)"
"Press <k>builder_insertitem</k> to insert a thing at current cursor position"
"Press <k>builder_visualselect</k> to select the highlighted surface. Hold <b>Shift</b> to select adjacent surfaces with the same texture. Hold <b>Ctrl</b> to select adjacent surfaces with the same height. Hold <b>Alt</b> to stop selecting adjacent surfaces when already selected surface is encountered"
"Press <k>builder_deleteitem</k> to remove textures from selected surfaces"
"Use <k>buildermodes_movetextureleft</k>, <k>buildermodes_movetextureright</k>, <k>buildermodes_movetextureup</k> and <k>buildermodes_movetexturedown</k> to change texture offsets by 1 mp."
"Use <k>buildermodes_movetextureleft8</k>, <k>buildermodes_movetextureright8</k>, <k>buildermodes_movetextureup8</k> and <k>buildermodes_movetexturedown8</k> to change texture offsets by current grid size"
"Use <k>buildermodes_scaleupx</k>, <k>buildermodes_scaledownx</k>, <k>buildermodes_scaleupy</k> and <k>buildermodes_scaledowny</k> to scale selected textures (UDMF only)"
"Press <k>buildermodes_textureselect</k> to open texture browser"
"Use <k>buildermodes_texturecopy</k>, <k>buildermodes_texturepaste</k> and <k>buildermodes_floodfilltextures</k> to copy,  paste and flood-fill highlighted texture"
"Use <k>buildermodes_texturecopyoffsets</k> and <k>buildermodes_texturepasteoffsets</k> to copy and paste texture offsets"
"Use <k>buildermodes_visualautoalignx</k>, <k>buildermodes_visualautoalign</k> or <k>buildermodes_visualautoalign</k> to auto align textures on X, Y and XY axis"
"Use <k>buildermodes_visualfittextures</k> to fit texture's width or height to selected surfaces (UDMF only)"
"Use <k>buildermodes_resettexture</k> to reset global texture offsets"
"Use <k>buildermodes_resettextureudmf</k> to reset local texture offsets and scale (UDMF only)"
"Use <k>buildermodes_toggleupperunpegged</k> or <k>buildermodes_togglelowerunpegged</k> to toggle Upper or Lower Unpegged setting"

group sectors
"Use <k>builder_moveforward</k>, <k>builder_movebackward</k>, <k>builder_moveleft</k> and <k>builder_moveright</k> to move around. Hold <b>Shift</b> to double the speed"
"Use <k>builder_moveup</k> and <k>builder_movedown</k> to move up and down"
"Press <k>builder_gztogglevisualvertices</k> to toggle vertex handles rendering (UDMF only)"
"Press <k>builder_insertitem</k> to insert a thing at current cursor position"
"Press <k>builder_visualselect</k> to select the highlighted surface. Hold <b>Shift</b> to select adjacent surfaces with the same texture. Hold <b>Ctrl</b> to select adjacent surfaces with the same height"
"Press <k>builder_deleteitem</k> to remove textures from selected surfaces"
"Use <k>buildermodes_movetextureleft</k>, <k>buildermodes_movetextureright</k>, <k>buildermodes_movetextureup</k> and <k>buildermodes_movetexturedown</k> to change texture offsets by 1 mp. (UDMF only)"
"Use <k>buildermodes_movetextureleft8</k>, <k>buildermodes_movetextureright8</k>, <k>buildermodes_movetextureup8</k> and <k>buildermodes_movetexturedown8</k> to change texture offsets by current grid size (UDMF only)"
"Use <k>buildermodes_scaleupx</k>, <k>buildermodes_scaledownx</k>, <k>buildermodes_scaleupy</k> and <k>buildermodes_scaledowny</k> to scale selected textures (UDMF only)"
"Use <k>buildermodes_resettextureudmf</k> to reset local texture offsets and scale (UDMF only)"
"Press <k>buildermodes_textureselect</k> to open texture browser"
"Use <k>buildermodes_texturecopy</k> and <k>buildermodes_texturepaste</k> to copy and paste highlighted texture"


group vertices
"Use <k>builder_moveforward</k>, <k>builder_movebackward</k>, <k>builder_moveleft</k> and <k>builder_moveright</k> to move around. Hold <b>Shift</b> to double the speed"
"Use <k>builder_moveup</k> and <k>builder_movedown</k> to move up and down"
"Press <k>builder_gztogglevisualvertices</k> to toggle vertex handles rendering (UDMF only)"
"Press <k>builder_insertitem</k> to insert a thing at current cursor position"
"Press <k>builder_deleteitem</k> to reset vertex height offsets for selected vertex handles"


class DragGeometryMode
group general
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt</b> to snap by grid increment"
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"

class DragThingsMode
group general
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt</b> to snap by grid increment"
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"

class DrawGeometryMode
group general
"Press <k>builder_classicselect</k> to place a vertex"
"Press <k>buildermodes_removepoint</k> to remove last vertex"
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt - Shift</b> to snap to 8 cardinal directions"
"Press <k>builder_acceptmode</k> to accept"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"


class DrawCurveMode
group general
"Press <k>builder_classicselect</k> to place a vertex"
"Use <k>buildermodes_increasesubdivlevel</k> and <k>buildermodes_decreasesubdivlevel</k> to change detail level of the curve"
"Press <k>buildermodes_removepoint</k> to remove last vertex"
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt - Shift</b> to snap to 8 cardinal directions"
"Press <k>builder_acceptmode</k> to accept"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"


class DrawRectangleMode
group general
"Press <k>builder_classicselect</k> to place a vertex"
"Use <k>buildermodes_increasebevel</k> and <k>buildermodes_decreasebevel</k> to change corners bevel by current grid size" 
"Use <k>buildermodes_increasesubdivlevel</k> and <k>buildermodes_decreasesubdivlevel</k> to change bevel detail level"
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"
"Place second vertex to finish drawing"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"


class DrawEllipseMode
group general
"Press <k>builder_classicselect</k> to place a vertex"
"Use <k>buildermodes_increasebevel</k> and <k>buildermodes_decreasebevel</k> to change bevel by current grid size" 
"Use <k>buildermodes_increasesubdivlevel</k> and <k>buildermodes_decreasesubdivlevel</k> to change the number of points in ellipse"
"Use <k>buildermodes_rotateclockwise</k> and <k>buildermodes_rotatecounterclockwise</k> to rotate ellipse shape"
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"
"Place second vertex to finish drawing"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"


class DrawGridMode
group general
"Use <k>buildermodes_increasebevel</k> and <k>buildermodes_decreasebevel</k> to change the number of horizontal slices"
"Use <k>buildermodes_increasesubdivlevel</k> and <k>buildermodes_decreasesubdivlevel</k> to change the number of vertical slices"
"Hold <b>Shift</b> to toggle grid snapping"
"Hold <b>Ctrl</b> to toggle snapping to nearest vertex"
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"
"Place second vertex to finish drawing"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"

group gridlockhelp
"Use <k>builder_griddec</k> and <k>builder_gridinc</k> to change grid size."
"Hold <b>Alt - Shift</b> to snap to 4 cardinal directions"
"Place second vertex to finish drawing"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"


class CurveLinedefsMode
group general
"<b>LMB-drag</b> or use <k>buildermodes_increasebevel</k> and <k>buildermodes_decreasebevel</k> to change curve depth. Hold <b>Shift</b> while dragging to change by 1 map unit" 
"<b>RMB-drag</b> or use <k>buildermodes_rotateclockwise</k> and <k>buildermodes_rotatecounterclockwise</k> to change curve bulginess. Hold <b>Shift</b> while dragging to change by 1 degree"
"<b>LMB+RMB-drag</b> or use <k>buildermodes_increasesubdivlevel</k> and <k>buildermodes_decreasesubdivlevel</k> to change the number of points in the curve"
"Press <k>builder_acceptmode</k> to accept"
"Press <k>builder_cancelmode</k> or <k>builder_classicedit</k> to cancel"