package com.jotuntech.sketcher.client.command; import java.nio.ByteBuffer; import com.jotuntech.sketcher.client.Client; import com.jotuntech.sketcher.client.Command; import com.jotuntech.sketcher.client.Connection; import com.jotuntech.sketcher.common.Canvas; import com.jotuntech.sketcher.common.Layer; import com.jotuntech.sketcher.common.User; public class LayerDataCommand implements Command { int layerKey; boolean phantom; byte[] data; public LayerDataCommand() { } public LayerDataCommand(int layerKey, boolean phantom, byte[] data) { this.layerKey = layerKey; this.phantom = phantom; this.data = data; } public int perform(Client client, User user) { Canvas canvas = client.getCanvas(); if(canvas == null) { return Connection.SEND_NONE; } Layer layer; if(phantom) { if(user == null) { return Connection.SEND_NONE; } layer = user.getPhantomLayer(); } else { layer = canvas.getLayerMap().get(layerKey); if(layer == null) { return Connection.SEND_NONE; } } layer.decode(data); return Connection.SEND_NONE; } public void decode(ByteBuffer in) { layerKey = in.getInt(); phantom = in.get() != 0; data = new byte[in.remaining()]; in.get(data); } public void encode(ByteBuffer out) { out.putInt(layerKey); out.put((byte) (phantom ? 0xFF : 0x00)); out.put(data); } }