Add MacroAction Helper

This commit is contained in:
Farkas József
2016-09-25 13:55:37 +02:00
parent 927cc80815
commit 2aed594dd1
2 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
import { UhkBuffer } from '../../UhkBuffer';
import {
DelayMacroAction,
KeyMacroAction,
MacroAction,
MacroActionId,
MouseButtonMacroAction,
MoveMouseMacroAction,
ScrollMouseMacroAction,
TextMacroAction,
macroActionType
} from './index';
export class Helper {
static createMacroAction(source: MacroAction | UhkBuffer | any): MacroAction {
if (source instanceof MacroAction) {
return Helper.fromMacroAction(source);
} else if (source instanceof UhkBuffer) {
return Helper.fromUhkBuffer(source);
} else {
return Helper.fromJSONObject(source);
}
}
private static fromUhkBuffer(buffer: UhkBuffer): MacroAction {
let macroActionFirstByte = buffer.readUInt8();
buffer.backtrack();
if (macroActionFirstByte >= MacroActionId.KeyMacroAction && macroActionFirstByte <= MacroActionId.LastKeyMacroAction) {
return new KeyMacroAction().fromBinary(buffer);
} else if (
macroActionFirstByte >= MacroActionId.MouseButtonMacroAction &&
macroActionFirstByte <= MacroActionId.LastMouseButtonMacroAction
) {
return new MouseButtonMacroAction().fromBinary(buffer);
}
switch (macroActionFirstByte) {
case MacroActionId.MoveMouseMacroAction:
return new MoveMouseMacroAction().fromBinary(buffer);
case MacroActionId.ScrollMouseMacroAction:
return new ScrollMouseMacroAction().fromBinary(buffer);
case MacroActionId.DelayMacroAction:
return new DelayMacroAction().fromBinary(buffer);
case MacroActionId.TextMacroAction:
return new TextMacroAction().fromBinary(buffer);
default:
throw `Invalid MacroAction first byte: ${macroActionFirstByte}`;
}
}
private static fromMacroAction(macroAction: MacroAction): MacroAction {
let newMacroAction: MacroAction;
if (macroAction instanceof KeyMacroAction) {
newMacroAction = new KeyMacroAction(macroAction);
} else if (macroAction instanceof MouseButtonMacroAction) {
newMacroAction = new MouseButtonMacroAction(macroAction);
} else if (macroAction instanceof MoveMouseMacroAction) {
newMacroAction = new MoveMouseMacroAction(macroAction);
} else if (macroAction instanceof ScrollMouseMacroAction) {
newMacroAction = new ScrollMouseMacroAction(macroAction);
} else if (macroAction instanceof DelayMacroAction) {
newMacroAction = new DelayMacroAction(macroAction);
} else if (macroAction instanceof TextMacroAction) {
newMacroAction = new TextMacroAction(macroAction);
}
return newMacroAction;
}
private static fromJSONObject(macroAction: any): MacroAction {
switch (macroAction.macroActionType) {
case macroActionType.KeyMacroAction:
return new KeyMacroAction().fromJsObject(macroAction);
case macroActionType.MouseButtonMacroAction:
return new MouseButtonMacroAction().fromJsObject(macroAction);
case macroActionType.MoveMouseMacroAction:
return new MoveMouseMacroAction().fromJsObject(macroAction);
case macroActionType.ScrollMouseMacroAction:
return new ScrollMouseMacroAction().fromJsObject(macroAction);
case macroActionType.DelayMacroAction:
return new DelayMacroAction().fromJsObject(macroAction);
case macroActionType.TextMacroAction:
return new TextMacroAction().fromJsObject(macroAction);
default:
throw `Invalid MacroAction.macroActionType: "${macroAction.macroActionType}"`;
}
}
}

View File

@@ -7,3 +7,4 @@ export * from './MoveMouseMacroAction';
export * from './MouseButtonMacroAction';
export * from './ScrollMouseMacroAction';
export * from './TextMacroAction';
export * from './helper';