You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.2 KiB
35 lines
1.2 KiB
3 years ago
|
import {ClientActionPB, ServerActionPB} from "../proto/action";
|
||
|
import {SyncableAction} from "../actions/ServerAction";
|
||
|
import {SendableAction} from "../actions/ClientAction";
|
||
|
import {unpackHexColor} from "../util/ColorUtils";
|
||
|
import {USER_ACTIVE_COLOR} from "../actions/UserAction";
|
||
|
import {CELL_COLOR} from "../actions/CellAction";
|
||
|
import {storageCoordsFromPb} from "./MapFromPb";
|
||
|
|
||
|
function sendableActionFromPB(action: ClientActionPB): SendableAction {
|
||
|
if (action.cellSetColor) {
|
||
|
if (!action.cellSetColor.at) {
|
||
|
throw Error("No location set in cellSetColor")
|
||
|
}
|
||
|
return {
|
||
|
type: CELL_COLOR,
|
||
|
at: storageCoordsFromPb(action.cellSetColor.at),
|
||
|
color: unpackHexColor(action.cellSetColor.color),
|
||
|
}
|
||
|
} else if (action.userSetActiveColor) {
|
||
|
return {
|
||
|
type: USER_ACTIVE_COLOR,
|
||
|
color: unpackHexColor(action.userSetActiveColor.color)
|
||
|
}
|
||
|
} else {
|
||
|
throw Error("No action set in ClientAction")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function syncableActionFromPb(action: ServerActionPB): SyncableAction {
|
||
|
if (action.client) {
|
||
|
return sendableActionFromPB(action.client)
|
||
|
} else {
|
||
|
throw Error("No action set in ServerAction")
|
||
|
}
|
||
|
}
|