# lib-core.command — v0.1.0 Move-Commands für registrierte Units. RTS-Style Click-to-Move (RMB → bewegt selected Units). ## Quick Setup ```lua local command = require("lib-core.command") local input = require("lib-core.input") local selection = require("lib-core.selection") -- target-provider source input.bind("rmb", { "mouse_right" }) command.bind_move_action("rmb") command.bind_target_provider(function() return selection.list() end) -- Register each movable unit (read+write callbacks + speed): local handle = command.register( function() return { x = unit.x, y = unit.y } end, function(nx, ny) unit.x = nx; unit.y = ny end, 100 -- px/s ) -- per-frame: function update(ctx, dt) command.update(dt) end ``` ## API - Registry: `register(get_pos_fn, set_pos_fn, speed) → handle`, `unregister(h)`, `count_registered()` - Speed: `set_speed(h, n)` / `speed(h) → n` - Issue (programmatic): `move_to(handles, x, y)`, `cancel(h)`, `cancel_all()` - State-Query: `current(h) → {type, target_x, target_y}|nil`, `is_moving(h) → bool` - Bindings: `bind_move_action(name)`, `bind_target_provider(fn)` - Settings: `set_arrive_threshold(n)` / `arrive_threshold()`, `set_enabled(b)` / `enabled()` - Per-Frame: `update(dt)` See `meta/docs/superpowers/specs/2026-05-14-p3-7-lib-command-design.md` for full design.