52 lines
2.4 KiB
TypeScript
52 lines
2.4 KiB
TypeScript
class KeyActionFactory {
|
|
|
|
static fromJsObject(jsObject: any): KeyAction {
|
|
switch (jsObject.keyActionType) {
|
|
case KeyActionType.NoneAction:
|
|
return new NoneAction().fromJsObject(jsObject);
|
|
case KeyActionType.KeystrokeAction:
|
|
return new KeystrokeAction().fromJsObject(jsObject);
|
|
case KeyActionType.KeystrokeWithModifiersAction:
|
|
return new KeystrokeWithModifiersAction().fromJsObject(jsObject);
|
|
case KeyActionType.DualRoleKeystrokeAction:
|
|
return new DualRoleKeystrokeAction().fromJsObject(jsObject);
|
|
case KeyActionType.SwitchLayerAction:
|
|
return new SwitchLayerAction().fromJsObject(jsObject);
|
|
case KeyActionType.SwitchKeymapAction:
|
|
return new SwitchKeymapAction().fromJsObject(jsObject);
|
|
case KeyActionType.MouseAction:
|
|
return new MouseAction().fromJsObject(jsObject);
|
|
case KeyActionType.PlayMacroAction:
|
|
return new PlayMacroAction().fromJsObject(jsObject);
|
|
default:
|
|
throw `Invalid KeyAction.keyActionType: "${jsObject.actionType}"`;
|
|
}
|
|
}
|
|
|
|
static fromBinary(buffer: UhkBuffer): KeyAction {
|
|
let keyActionFirstByte = buffer.readUInt8();
|
|
buffer.backtrack();
|
|
|
|
switch (keyActionFirstByte) {
|
|
case KeyActionId.NoneAction:
|
|
return new NoneAction().fromBinary(buffer);
|
|
case KeyActionId.KeystrokeAction:
|
|
return new KeystrokeAction().fromBinary(buffer);
|
|
case KeyActionId.KeystrokeWithModifiersAction:
|
|
return new KeystrokeWithModifiersAction().fromBinary(buffer);
|
|
case KeyActionId.DualRoleKeystrokeAction:
|
|
return new DualRoleKeystrokeAction().fromBinary(buffer);
|
|
case KeyActionId.SwitchLayerAction:
|
|
return new SwitchLayerAction().fromBinary(buffer);
|
|
case KeyActionId.SwitchKeymapAction:
|
|
return new SwitchKeymapAction().fromBinary(buffer);
|
|
case KeyActionId.MouseAction:
|
|
return new MouseAction().fromBinary(buffer);
|
|
case KeyActionId.PlayMacroAction:
|
|
return new PlayMacroAction().fromBinary(buffer);
|
|
default:
|
|
throw `Invalid KeyAction first byte: ${keyActionFirstByte}`;
|
|
}
|
|
}
|
|
}
|