ID:137261
 
It would be useful to be able to drag a selection box around multiple atoms in DreamSeeker. This could probably be implemented in DM as it stands, but every mouse movement with an active selection box would require client-server communication for each cell-sized edge segment of the box that needs to be created/deleted/moved. The following features would eliminate the need for client-server communication for every mouse movement:

/client
var/select_icon
proc/BeginSelect(turf/t)
proc/EndSelect(turf/t)
proc/Select(atom/a)

/atom
proc/Select(client/c)

select_icon would be a 16 state icon, containing one state for each possible combination of edges for a cell in the selection box (including a "no edges" state for cells in the interior of the box).

client.BeginSelect would start a new selection box at the given turf. While this selection box remains active, any mouse movement to a different cell will cause the selection box to be redrawn.

client.EndSelect would end the current selection box at the given turf and call client.Select for each atom included in the box.

Neither of these procs would be called by default, but MouseDown and MouseUp procs on either atoms or clients could be overridden to call them.

The default client.Select would call atom.Select for each atom in the box.

All graphical updates to the edges of a selection box while it is still being manipulated could be handled by the client alone.

Good idea. We are pushing for a stable public release right now, so hopefully you can manage without this until we begin the next round of development.

Good to have you back!

--Dan