z: ZCoord,
zg: Generation,
pinned: bool,
- angle: VisiblePieceAngle,
+ angle: CompassAngle,
uos: &'r [UoDescription],
}
let defs = p.make_defs(&pri)?;
alldefs.push((pri.id, defs));
+ let vangle = match pri.angle {
+ VisiblePieceAngle(PieceAngle::Compass(vangle)) => vangle,
+ };
+
let for_info = SessionPieceLoadJson {
held: &pr.held,
z: pr.zlevel.z.clone(),
zg: pr.zlevel.zg,
pinned: pr.pinned,
- angle: pri.angle,
+ angle: vangle,
uos: &p.ui_operations()?,
};
#[derive(Clone,Copy,Debug)]
#[derive(Serialize,Deserialize)]
#[serde(transparent)]
-pub struct VisiblePieceAngle(PieceAngle);
+pub struct VisiblePieceAngle(pub PieceAngle);
#[derive(Clone,Debug)]
#[derive(Serialize,Deserialize)]
cseq_updatesvg : number | null,
z : ZCoord,
zg : Generation,
+ angle: number,
pinned: boolean,
uos : UoDescription[],
uelem : SVGGraphicsElement,
};
};
if (all_targets.length) {
+ add_uo(all_targets, {
+ def_key: 'l',
+ kind: 'Client',
+ wrc: 'Predictable',
+ opname: "left",
+ desc: "rotate left",
+ });
+ add_uo(all_targets, {
+ def_key: 'r',
+ kind: 'Client',
+ wrc: 'Predictable',
+ opname: "right",
+ desc: "rotate right",
+ });
add_uo(all_targets, {
def_key: 'b',
kind: 'Client',
}
}
+keyops_local['left' ] = function (uo: UoRecord) { rotate_targets(uo, +1); }
+keyops_local['right'] = function (uo: UoRecord) { rotate_targets(uo, -1); }
+
+function rotate_targets(uo: UoRecord, dangle: number): boolean {
+ for (let piece of uo.targets!) {
+ let p = pieces[piece]!;
+ p.angle += dangle + 8;
+ p.angle %= 8;
+ let transform =
+ api_piece(api, 'rotate', piece,p, p.angle);
+ }
+ recompute_keybindings();
+ return true;
+}
+
type LowerTodoItem = {
piece: PieceId,
p: PieceInfo,
}
}
+#[wasm_bindgen]
+pub fn angle_transform(angle: u8) -> JsString {
+ zcoord::misc::raw_angle_transform(angle).into()
+}
+
#[wasm_bindgen]
pub fn setup(s: &str) -> JsString {
// returning String produces a wasm-opt error, as here