73 lines
2.0 KiB
TypeScript
73 lines
2.0 KiB
TypeScript
var UndeckedClipboard = new class UndeckedClipboard {
|
|
constructor() {}
|
|
|
|
hasKeyInClipboard() {
|
|
return localStorage.getItem('clipboard') != undefined && localStorage.getItem('clipboard').length > 0;
|
|
}
|
|
|
|
copyKey(originKeyX: number, originKeyY: number) {
|
|
localStorage.setItem('clipboard', `key_copy_${PageHandler.currentPageID}.${originKeyX}.${originKeyY}`);
|
|
UndeckedNotification('Key has been copied to clipboard');
|
|
}
|
|
|
|
copyGhostKey(originKeyX: number, originKeyY: number) {
|
|
localStorage.setItem('clipboard', `key_ghost_${PageHandler.currentPageID}.${originKeyX}.${originKeyY}`);
|
|
UndeckedNotification('Key has been copied to clipboard as a ghost');
|
|
}
|
|
|
|
cutKey(originKeyX: number, originKeyY: number) {
|
|
//TODO: Implement something in the front end to show that the item is being cut right now
|
|
localStorage.setItem('clipboard', `key_cut_${PageHandler.currentPageID}.${originKeyX}.${originKeyY}`);
|
|
UndeckedNotification('Key has been cut to clipboard');
|
|
}
|
|
|
|
pasteKey(destinationKeyX: number, destinationKeyY: number) {
|
|
if (this.hasKeyInClipboard()) {
|
|
var clipboard = this.decodeClipboard();
|
|
|
|
if (clipboard.elementType == 'key') {
|
|
socket.emit(
|
|
'page',
|
|
'operation',
|
|
clipboard.operationType,
|
|
clipboard.id,
|
|
clipboard.x,
|
|
clipboard.y,
|
|
PageHandler.currentPageID,
|
|
destinationKeyX,
|
|
destinationKeyY
|
|
);
|
|
|
|
if (clipboard.operationType == 'cut') localStorage.setItem('clipboard', '');
|
|
}
|
|
}
|
|
}
|
|
|
|
decodeClipboard(): {
|
|
elementType: 'key';
|
|
operationType: 'cut' | 'copy' | 'ghost';
|
|
id: string;
|
|
x?: number;
|
|
y?: number;
|
|
} {
|
|
var clipboard = {
|
|
elementType: null,
|
|
operationType: null,
|
|
id: null,
|
|
x: null,
|
|
y: null
|
|
};
|
|
|
|
if (this.hasKeyInClipboard()) {
|
|
var raw = localStorage.getItem('clipboard').split('_');
|
|
clipboard.elementType = raw[0];
|
|
clipboard.operationType = raw[1];
|
|
var args = raw[2].split('.');
|
|
clipboard.id = args[0];
|
|
clipboard.x = args[1];
|
|
clipboard.y = args[2];
|
|
return clipboard;
|
|
} else return clipboard;
|
|
}
|
|
}();
|