58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
"""Paint mode commands for terrain editing."""
|
|
|
|
from mudlib.commands import CommandDefinition, register
|
|
from mudlib.player import Player
|
|
|
|
|
|
async def cmd_paint(player: Player, args: str) -> None:
|
|
"""Toggle paint mode on/off.
|
|
|
|
Paint mode allows admin to edit terrain tile-by-tile.
|
|
"""
|
|
if player.paint_mode:
|
|
# Exit paint mode
|
|
player.paint_mode = False
|
|
player.painting = False
|
|
await player.send("Paint mode off.\r\n")
|
|
else:
|
|
# Enter paint mode
|
|
player.paint_mode = True
|
|
player.painting = False
|
|
await player.send(
|
|
"Paint mode on. Use 'p' to toggle painting, "
|
|
"type a character to set brush.\r\n"
|
|
)
|
|
|
|
|
|
async def cmd_toggle_painting(player: Player, args: str) -> None:
|
|
"""Toggle between survey and painting states within paint mode."""
|
|
if not player.paint_mode:
|
|
await player.send("You must be in paint mode to do that.\r\n")
|
|
return
|
|
|
|
player.painting = not player.painting
|
|
if player.painting:
|
|
await player.send(f"Painting with '{player.paint_brush}'.\r\n")
|
|
else:
|
|
await player.send("Survey mode.\r\n")
|
|
|
|
|
|
async def cmd_set_brush(player: Player, args: str) -> None:
|
|
"""Set the brush character for painting."""
|
|
if not player.paint_mode:
|
|
await player.send("You must be in paint mode to do that.\r\n")
|
|
return
|
|
|
|
char = args.strip()
|
|
if len(char) != 1:
|
|
await player.send("Brush must be a single character.\r\n")
|
|
return
|
|
|
|
player.paint_brush = char
|
|
await player.send(f"Brush set to '{char}'.\r\n")
|
|
|
|
|
|
# Register paint mode commands
|
|
register(CommandDefinition("@paint", cmd_paint))
|
|
register(CommandDefinition("p", cmd_toggle_painting))
|
|
register(CommandDefinition("brush", cmd_set_brush))
|