readPad method
Reads the controller in the context's slot into its snapshot: the first player's is slot 0, the next one to connect slot 1, and so on, as the lights on a console's controllers are numbered.
A second player, not a second look at the first. read is the first slot; a backend that tells controllers apart answers the others. One that does not, as this default, reports every slot past the first as disconnected rather than showing the first pad twice.
Implementation
@override
void readPad(PadReadContext context) {
_reads++;
final pad = _slots[context.index];
if (pad == null) {
context.out.disconnect();
} else {
context.out.copyFrom(pad);
}
}