From: Ian Jackson Date: Wed, 31 Mar 2021 00:00:48 +0000 (+0100) Subject: script: Implement pieceops.Insert X-Git-Tag: otter-0.5.0~339 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=fb8e56ac6e3af362cf9e0d3629b5f1bbd1a22233;p=otter.git script: Implement pieceops.Insert Acked-by: Ian Jackson --- diff --git a/templates/script.ts b/templates/script.ts index 0d588557..a826c887 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -1093,6 +1093,28 @@ pieceops.Modify = function piece_modify(piece, p, info, false); } +pieceops.Insert = function +(piece: PieceId, xp: any, info: PreparedPieceState) { + console.log('PIECE UPDATE INSERT ',piece,info) + let delem = document.createElementNS(svg_ns,'defs'); + delem.setAttributeNS(null,'id','defs'+piece); + delem.innerHTML = info.svg; + defs_marker.insertAdjacentElement('afterend', delem); + let pelem = piece_element('piece',piece); + let uelem = document.createElementNS(svg_ns,'use'); + uelem.setAttributeNS(null,'id',"use"+piece); + uelem.setAttributeNS(null,'href',"#piece"+piece); + uelem.setAttributeNS(null,'data-piece',piece); + let p = { + uelem: uelem, + pelem: pelem, + delem: delem, + } as any as PieceInfo; // fudge this, piece_modify_core will fix it + pieces[piece] = p; + p.uos = info.uos; + piece_modify_core(piece, p, info, false); +} + pieceops.Delete = function (piece: PieceId, p: PieceInfo, info: {}) { console.log('PIECE UPDATE DELETE ', piece) @@ -1119,6 +1141,12 @@ function piece_modify_image(piece: PieceId, p: PieceInfo, function piece_modify(piece: PieceId, p: PieceInfo, info: PreparedPieceState, conflict_expected: boolean) { piece_modify_image(piece, p, info); + piece_modify_core(piece, p, info, conflict_expected); +} + +function piece_modify_core(piece: PieceId, p: PieceInfo, + info: PreparedPieceState, + conflict_expected: boolean) { p.uelem.setAttributeNS(null, "x", info.pos[0]+""); p.uelem.setAttributeNS(null, "y", info.pos[1]+""); p.held = info.held; @@ -1173,21 +1201,6 @@ messages.Image = function(j: TransmitUpdateEntry_Image) { console.log('IMAGE DONE'); } -/* -pieceops.Insert = function -(piece: PieceId, p: null, - info: { svg: string, held: PlayerId, pos: Pos, z: number, zg: Generation}) { - console.log('PIECE UPDATE INSERT ',piece,info) - delem = document.createElementNS(svg_ns,'defs'); - delem.setAttributeNS(null,'id','defs'+piece); - delem.innerHTML = info.svg; - space.appendChild(delem); - pelem = - - nelem.setAttributeNS(null,'stroke',stroke); - nelem.setAttributeNS(null,'fill','none'); -*/ - function piece_set_zlevel(piece: PieceId, p: PieceInfo, modify : (oldtop_piece: PieceId) => void) { // Calls modify, which should set .z and/or .gz, and/or