From 79ba536b4663d5251cab8393390e01e097009d57 Mon Sep 17 00:00:00 2001 From: david-fong Date: Sat, 7 Nov 2020 18:59:46 -0800 Subject: [PATCH] improve security, performance, and socket.io comms --- client/_barrel.css.map | 2 +- client/chunk/929.js | 2 +- client/chunk/929.js.map | 2 +- client/chunk/game/offline.css.map | 2 +- client/chunk/game/offline.js | 2 +- client/chunk/game/offline.js.map | 2 +- client/chunk/game/online.css.map | 2 +- client/chunk/game/online.js.map | 2 +- ...vents_ts-src_client_game_BrowserGame_ts.js | 179 ------------------ client/index.html | 2 +- client/index.js | 2 +- client/index.js.map | 2 +- client/vendor/socket.io.js | 2 +- client/vendor/socket.io.js.LICENSE.txt | 4 +- client/vendor/socket.io.js.map | 1 - client/vendor/socket.io.map | 2 +- package.json | 4 +- server/index.js | 2 +- 18 files changed, 17 insertions(+), 199 deletions(-) delete mode 100644 client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js delete mode 100644 client/vendor/socket.io.js.map diff --git a/client/_barrel.css.map b/client/_barrel.css.map index dc8892c5..1d2d9671 100644 --- a/client/_barrel.css.map +++ b/client/_barrel.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/assets/style/initial/utils.css","webpack://snakey3/assets/style/initial/components/pickone.css","webpack://snakey3/assets/style/initial/snakey.css","webpack://snakey3/assets/style/initial/defaults.css","webpack://snakey3/assets/style/initial/screen.css","webpack://snakey3/assets/style/initial/screen/home.css","webpack://snakey3/assets/style/initial/screen/colourctrl.css","webpack://snakey3/assets/style/initial/screen/setup.css","webpack://snakey3/assets/style/initial/screen/play.css","webpack://snakey3/assets/style/initial/screen/groupjoiner.css","webpack://snakey3/assets/style/initial/screen/grouplobby.css","webpack://snakey3/assets/style/colour/smooth-stone.css","webpack://snakey3/assets/style/colour/murky-dive.css"],"names":[],"mappings":"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","file":"_barrel.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./assets/style/initial/utils.css","webpack://snakey3/./assets/style/initial/components/pickone.css","webpack://snakey3/./assets/style/initial/snakey.css","webpack://snakey3/./assets/style/initial/defaults.css","webpack://snakey3/./assets/style/initial/screen.css","webpack://snakey3/./assets/style/initial/screen/home.css","webpack://snakey3/./assets/style/initial/screen/colourctrl.css","webpack://snakey3/./assets/style/initial/screen/setup.css","webpack://snakey3/./assets/style/initial/screen/play.css","webpack://snakey3/./assets/style/initial/screen/groupjoiner.css","webpack://snakey3/./assets/style/initial/screen/grouplobby.css","webpack://snakey3/./assets/style/colour/smooth-stone.css","webpack://snakey3/./assets/style/colour/murky-dive.css"],"names":[],"mappings":"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","file":"_barrel.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/929.js b/client/chunk/929.js index 6a5e31e6..c55028a4 100644 --- a/client/chunk/929.js +++ b/client/chunk/929.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[929],{173:(e,t,s)=>{"use strict";s.r(t)},305:(e,t,s)=>{"use strict";var r;s.d(t,{u:()=>r}),function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(r||(r={})),Object.freeze(r)},985:(e,t,s)=>{"use strict";s.d(t,{r:()=>a});var r=s(406),i=s(495);class a{constructor(e){this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new i.N(this),r.R.propNoWrite(this,["static","dimensions","tile"])}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile((e=>e.reset()))}getDestsFromSourcesTo(e){return Array.from(new Set(this.tile.sourcesTo(e).get.flatMap((e=>this.tile.destsFrom(e.coord).get))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}!function(e){e.getImplementation=t=>e._Constructors[t]}(a||(a={}))},495:(e,t,s)=>{"use strict";s.d(t,{N:()=>a});var r,i=s(655);class a{constructor(e){r.set(this,void 0),(0,i.YH)(this,r,e),Object.freeze(this)}get _source(){return(0,i.Q_)(this,r)}at(...e){return(0,i.Q_)(this,r)._getTileAt(...e)}destsFrom(...e){return new o((0,i.Q_)(this,r)._getTileDestsFrom(...e))}sourcesTo(...e){return new o((0,i.Q_)(this,r)._getTileSourcesTo(...e))}}r=new WeakMap,Object.freeze(a),Object.freeze(a.prototype);class o{constructor(e){this.contents=e,Object.seal(this)}get occupied(){return this.contents=this.contents.filter((e=>e.isOccupied)),this}get unoccupied(){return this.contents=this.contents.filter((e=>!e.isOccupied)),this}get get(){return this.contents}}Object.freeze(o),Object.freeze(o.prototype)},329:(e,t,s)=>{"use strict";s.d(t,{T:()=>r,z:()=>n});var r,i=s(80),a=s(406),o=s(780);!function(e){e.getImplementation=t=>e._Constructors[t]}(r||(r={}));class n{_superVisibleGrid(e,t){if(e.tileClass!==o.g)throw new TypeError("never");const s=i.Y.Grid;t.setAttribute("role","presentation"),t.classList.add(s.Class.IMPL_BODY),t.dataset[s.Dataset.IMPL_COORD_SYS]=e.coordSys,t.translate=!1,t.spellcheck=!1,this.baseElem=t;const r=a.R.mkEl("div",[i.Y.Player.Class.SHORT_SPOTLIGHT]),n=a.R.mkEl("div",[i.Y.Player.Class.LONG_SPOTLIGHT]);this.spotlightElems=Object.freeze([r,n])}}Object.freeze(n),Object.freeze(n.prototype)},780:(e,t,s)=>{"use strict";s.d(t,{g:()=>m});var r,i,a,o,n,h=s(655),l=s(406),c=s(80),d=s(951);class u{constructor(e){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),o.set(this,void 0),this.coord=e,l.R.propNoWrite(this,["coord"]),(0,h.YH)(this,r,d.J5.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(d.Uo.CharSeqPair.NULL)}_setOccupant(e,t){(0,h.YH)(this,r,e)}get isOccupied(){return this.occupantId!==d.J5.Id.NULL}evictOccupant(){(0,h.YH)(this,r,d.J5.Id.NULL)}get occupantId(){return(0,h.Q_)(this,r)}get freeHealth(){return(0,h.Q_)(this,i)}set freeHealth(e){(0,h.YH)(this,i,e)}setLangCharSeqPair(e){(0,h.YH)(this,a,e.char),(0,h.YH)(this,o,e.seq)}get langChar(){return(0,h.Q_)(this,a)}get langSeq(){return(0,h.Q_)(this,o)}}r=new WeakMap,i=new WeakMap,a=new WeakMap,o=new WeakMap,Object.freeze(u),Object.freeze(u.prototype);class m extends u{constructor(e){super(e),n.set(this,void 0),(0,h.YH)(this,n,l.R.mkEl("div",[c.Y.General.Class.CENTER_CONTENTS,c.Y.General.Class.STACK_CONTENTS,c.Y.Tile.Class.BASE])).setAttribute("aria-label","Tile");{const e=l.R.mkEl("div",[c.Y.Tile.Class.POINTER_HB]);e.setAttribute("aria-hidden","true"),(0,h.Q_)(this,n).appendChild(e)}{const e=l.R.mkEl("div",[c.Y.Tile.Class.LANG_CHAR_WRAP]);e.setAttribute("role","presentation");const t=this.langCharElem=l.R.mkEl("div",[]);e.appendChild(t),(0,h.Q_)(this,n).appendChild(e)}{const e=this.langSeqElem=l.R.mkEl("div",[c.Y.Tile.Class.LANG_SEQ]);e.setAttribute("role","tooltip"),(0,h.Q_)(this,n).appendChild(e)}l.R.propNoWrite(this,["langCharElem","langSeqElem"])}_addToDom(e){e.appendChild((0,h.Q_)(this,n))}_setOccupant(e,t){super._setOccupant(e,t),this.langCharElem.parentElement.insertAdjacentElement("beforebegin",t.playerElem),this.langSeqElem.textContent=t.username}evictOccupant(){super.evictOccupant(),this.langSeqElem.textContent=this.langSeq}set freeHealth(e){super.freeHealth=e,this.freeHealth>0?(0,h.Q_)(this,n).dataset[c.Y.Tile.Dataset.HEALTH]=this.freeHealth.toString():delete(0,h.Q_)(this,n).dataset[c.Y.Tile.Dataset.HEALTH]}get freeHealth(){return super.freeHealth}setLangCharSeqPair(e){super.setLangCharSeqPair(e),this.langCharElem.textContent=this.langChar,this.langSeqElem.textContent=this.langSeq}}n=new WeakMap,l.R.protoNoEnum(m,["_addToDom"]),Object.freeze(m),Object.freeze(m.prototype)},886:(e,t,s)=>{"use strict";s.d(t,{v:()=>r,y:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),s=Math.floor(this.bash),r=e-this.dash,i=s-this.bash;return r>2*i?new t({dash:e+1,bash:s}):r<.5*i?new t({dash:e,bash:s+1}):Math.min(r,i)>.5?new t({dash:e+1,bash:s+1}):new t({dash:e,bash:s})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e),this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const s of this.grid)for(const r of s)e(r,t++)}shuffledForEachTile(e){this.grid.flat().sort(((e,t)=>Math.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e,t=1){}_getTileSourcesTo(e,t=1){}minMovesFromTo(e,t){}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),s=Math.max(e.fslash,e.bslash),r=-1+e.dash+t;let i=2*t*(e.dash+r);return i+=(s-t-1)*r,i}static getDiameterOfLatticePatchHavingArea(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new t(void 0)}}s.SIZE_LIMITS=Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e),this._superVisibleGrid(e,void 0)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},358:(e,t,s)=>{"use strict";s.d(t,{i:()=>r,G:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e);const s=[];for(let r=0;rMath.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){const s=this.tile.destsFrom(t).unoccupied.get;if(0===s.length)return this.tile.at(t);if(1===s.length)return s[0];s.sort(((t,s)=>t.coord.oneNorm(e)-s.coord.oneNorm(e))).sort(((t,s)=>t.coord.infNorm(e)-s.coord.infNorm(e)));for(let t=1;ts[0].coord.infNorm(e)){s.splice(t);break}if(1===s.length)return s[0];if(s[0].coord.x-t.x==0||s[0].coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s[0];s.shift()}return s[Math.floor(s.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}getRandomCoordAround(e,s){return new t({x:e.x+Math.trunc(2*s*(Math.random()-.5)),y:e.y+Math.trunc(2*s*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let s=e.y-t,r=e.y+t+1,i=e.x-t,a=e.x+t+1;return s>=this.dimensions.height||r<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,s),Math.min(this.dimensions.height,r)).flatMap((e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a))))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const r=[];return e.map((e=>{const i=[];for(;e>0;){let a;do{a=s.getRandomCoord(t)}while(r.find((e=>a._equals(e))));i.push(a),r.push(a),e--}return i}))}static getArea(e){return e.height*e.width}static getDiameterOfLatticePatchHavingArea(e){return Math.sqrt(e)}static getRandomCoord(e){const s=Math.floor(e.width*Math.random()),r=Math.floor(e.height*Math.random());return new t({x:s,y:r})}}s.SIZE_LIMITS=Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e);const t=i.R.mkEl("div",[]);t.style.setProperty("--euclid2-grid-width",this.dimensions.width.toString());for(const e of this.grid)for(const s of e)s._addToDom(t);this._superVisibleGrid(e,t)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},671:(e,t,s)=>{"use strict";var r;s.d(t,{L:()=>r}),function(e){e.EVENT_ID_REJECT=-1}(r||(r={})),Object.freeze(r)},699:(e,t,s)=>{"use strict";s.d(t,{a:()=>r});var r,i=s(671);!function(e){e.INITIAL_REQUEST_ID=-1,e.EVENT_NAME=Object.freeze({BUBBLE:"player-bubble",MOVEMENT:"player-movement"});class t{constructor(e,t){this.eventId=i.L.EVENT_ID_REJECT,this.affectedNeighbours=void 0,this.playerId=e,this.playerLastAcceptedRequestId=t}}e.Bubble=t,e.Movement=class extends t{constructor(e,t,s,r){super(e,t),this.newPlayerHealth=void 0,this.tileHealthModDescs=void 0,this.destModDesc={coord:s.coord,lastKnownUpdateId:s.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:void 0},this.moveType=r}}}(r||(r={})),Object.freeze(r)},191:(e,t,s)=>{"use strict";s.d(t,{R:()=>f});var r,i,a,o,n=s(655),h=s(504),l=s(671),c=(s(699),s(406)),d=s(951),u=s(926),m=s(473);class p{constructor(e,t,s){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),this.gameType=e;const o=this._getGridImplementation(s.coordSys);this.grid=new o({gridClass:o,tileClass:t.tileClass,coordSys:s.coordSys,dimensions:s.gridDimensions}),(0,n.YH)(this,r,t.onGameBecomeOver),this.langFrontend=d.Uo.GET_FRONTEND_DESC_BY_ID(s.langId),this._playerStatusCtor=t.playerStatusCtor,this.players=this.createPlayers(s),this.operators=Object.freeze(this.players.filter((e=>e.isALocalOperator))),this.setCurrentOperator(0);{const e=[];if(this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new m.S(t,e))),this.teams.every((e=>e.id===m.S.ElimOrder.IMMORTAL)))throw new Error("All teams are immortal. The game will never end.")}c.R.propNoWrite(this,["gameType","grid","langFrontend","players","operators","teams","_playerStatusCtor"]),this.players.forEach((e=>e._afterAllPlayersConstruction()))}reset(){return this.grid.reset(),(0,n.YH)(this,a,h.l.Status.PAUSED),Promise.resolve()}createPlayers(e){const t=e.playerDescs=this.gameType===h.l.Type.ONLINE?e.playerDescs:u.J5.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map((e=>e.familyId===u.J5.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new u.J5(this,e):this._createArtifPlayer(e))))}serializeResetState(){const e=[],t=this.players.map((e=>e.coord)),s=[];return this.grid.forEachTile((t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&s.push({coord:t.coord,health:t.freeHealth})})),{csps:e,playerCoords:t,healthCoords:s}}deserializeResetState(e){this.grid.forEachTile(((t,s)=>{t.setLangCharSeqPair(e.csps[s]),t.lastKnownUpdateId++})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(this.grid.tile.at(e))})),e.healthCoords.forEach((e=>{this.grid.tile.at(e.coord).freeHealth=e.health}))}get currentOperator(){return(0,n.Q_)(this,i)}setCurrentOperator(e){const t=this.operators[e];this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),(0,n.YH)(this,i,t))}get status(){return(0,n.Q_)(this,a)}statusBecomePlaying(){if(this.status!==h.l.Status.PLAYING){if(this.status!==h.l.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e._notifyGameNowPlaying()})),this._abstractStatusBecomePlaying(),(0,n.YH)(this,a,h.l.Status.PLAYING)}else console.log("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==h.l.Status.PAUSED?this.status!==h.l.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowPaused()})),this._abstractStatusBecomePaused(),(0,n.YH)(this,a,h.l.Status.PAUSED)):console.log("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){if(this.status!==h.l.Status.PLAYING)throw new Error("Can only end a game that is currently playing.");this.players.forEach((e=>{e._notifyGameNowOver()})),this._abstractStatusBecomeOver(),(0,n.YH)(this,a,h.l.Status.OVER),(0,n.Q_)(this,r).call(this),console.log("game is over!")}_abstractStatusBecomePlaying(){}_abstractStatusBecomePaused(){}_abstractStatusBecomeOver(){}}r=new WeakMap,i=new WeakMap,a=new WeakMap,c.R.protoNoEnum(p,["_abstractStatusBecomePlaying","_abstractStatusBecomePaused","_abstractStatusBecomeOver"]),Object.freeze(p),Object.freeze(p.prototype);class f extends p{constructor(e,t,s){super(e,t,s),o.set(this,void 0),this.eventRecordBitmap=[]}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),(0,n.YH)(this,o,0),e}get nextUnusedEventId(){return(0,n.Q_)(this,o)}_recordEvent(e){const t=e.eventId,s=t%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;if(t===l.L.EVENT_ID_REJECT)throw new TypeError("Do not try to record events for rejected requests.");if(t<0||t!==Math.trunc(t))throw new RangeError("Event ID's must only be assigned positive, integer values.");if(this.eventRecordBitmap[s])throw new Error("Event ID's must be assigned unique values.");this.eventRecordBitmap[s]=!0,this.eventRecordBitmap[(t+h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-h.l.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,(0,n.YH)(this,o,+(0,n.Q_)(this,o)+1)}executeTileModEvent(e,t=!0){Object.freeze(e);const s=this.grid.tile.at(e.coord);if(s.lastKnownUpdateId>e.lastKnownUpdateId)return s;if(s.lastKnownUpdateId===e.lastKnownUpdateId)throw new RangeError("never");return e.newCharSeqPair&&(s.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter((e=>e.tile.destsFrom().get.includes(s))).forEach((e=>e.seqBufferAcceptKey("")))),s.lastKnownUpdateId=e.lastKnownUpdateId,s.freeHealth=e.newFreeHealth,s}executePlayerMoveEvent(e){var t;const s=this.players[e.playerId],r=e.playerLastAcceptedRequestId-s.lastAcceptedRequestId;if(e.eventId===l.L.EVENT_ID_REJECT)return void(0===r&&(s.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,s!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach((e=>{this.executeTileModEvent(e)})),r>1){if(s===this.currentOperator)throw new Error("never")}else{if(s.requestInFlight=!1,!(s===this.currentOperator?1===r:r<=1))throw new RangeError("never");s.status.health=e.newPlayerHealth.health,s.moveTo(i),s.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==l.L.EVENT_ID_REJECT&&this._recordEvent(e)}}o=new WeakMap,Object.freeze(f),Object.freeze(f.prototype)},926:(e,t,s)=>{"use strict";s.d(t,{J5:()=>d});var r,i=s(406),a=s(504),o=s(699),n=s(655),h=s(951),l=s(495);class c extends h.J5{constructor(e,t){if(super(),r.set(this,void 0),Math.trunc(t.playerId)!==t.playerId)throw new RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new l.N(new c.TileGetterSource(this)),i.R.instNoEnum(this,["game"]),i.R.propNoWrite(this,["playerId","isALocalOperator","game","status","tile"])}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){(0,n.YH)(this,r,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return(0,n.Q_)(this,r)}moveTo(e){if(this.hostTile.occupantId!==this.playerId){if(this.game.gameType!==a.l.Type.ONLINE)throw new Error("Linkage between player and occupied tile disagrees.")}else this.hostTile.evictOccupant();if(e.isOccupied){if(this.game.gameType!==a.l.Type.ONLINE)throw new Error("Only one player can occupy a tile at a time.")}else(0,n.YH)(this,r,e),e._setOccupant(this.playerId,this.status.immigrantInfo)}}r=new WeakMap,function(e){var t,s;class r{constructor(e){t.set(this,void 0),s.set(this,void 0),(0,n.YH)(this,t,e),(0,n.YH)(this,s,e.game.grid.tile._source)}_getTileAt(){return(0,n.Q_)(this,s)._getTileAt((0,n.Q_)(this,t).coord)}_getTileDestsFrom(){return(0,n.Q_)(this,s)._getTileDestsFrom((0,n.Q_)(this,t).coord)}_getTileSourcesTo(){return(0,n.Q_)(this,s)._getTileSourcesTo((0,n.Q_)(this,t).coord)}}t=new WeakMap,s=new WeakMap,e.TileGetterSource=r,Object.freeze(r),Object.freeze(r.prototype)}(c||(c={})),i.R.protoNoEnum(c,["_afterAllPlayersConstruction"]),Object.freeze(c),Object.freeze(c.prototype),s(448);class d extends c{constructor(e,t){var s;super(e,t),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(s=t.avatar)&&void 0!==s?s:d.Avatar.GET_RANDOM(),i.R.propNoWrite(this,["familyId","teamId","username","avatar"])}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=o.a.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){if(this.game.status!==a.l.Status.PLAYING)throw new Error("This is not a necessary precondition, but we're doing it anyway.");if(this.requestInFlight)throw new Error("Only one request should ever be in flight at a time.");this.requestInFlight=!0,this.game.processMoveRequest(new o.a.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,s)=>(e[t]=s,e)),[]);return e.slice().sort(((e,s)=>t[e.teamId]-t[s.teamId])).map(((e,s)=>Object.assign({},e,{playerId:s,teamId:t[e.teamId]})))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(d||(d={})),i.R.protoNoEnum(d,["_notifyGameNowPaused","_notifyGameNowPlaying","_notifyGameNowOver"]),Object.freeze(d),Object.freeze(d.prototype)},448:(e,t,s)=>{"use strict";s.d(t,{c:()=>n});var r,i=s(655),a=s(406),o=s(473);class n{constructor(e,t){r.set(this,void 0),this.player=e,this.noCheckGameOver=t,a.R.instNoEnum(this,["player"])}reset(){this.health=0}_afterAllPlayersConstruction(){}get immigrantInfo(){}get health(){return(0,i.Q_)(this,r)}set health(e){const t=this.isDowned;if((0,i.YH)(this,r,e),t||!this.isDowned||this.noCheckGameOver)return;const s=this.player.team,a=this.player.game.teams;if(s.elimOrder===o.S.ElimOrder.STANDING&&s.members.every((e=>e.status.noCheckGameOver||e.status.isDowned))){const e=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING)).length;s.elimOrder=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING&&e.elimOrder!==o.S.ElimOrder.IMMORTAL)).length,e===a.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}r=new WeakMap,a.R.protoNoEnum(n,["_afterAllPlayersConstruction"]),Object.freeze(n),Object.freeze(n.prototype)},473:(e,t,s)=>{"use strict";s.d(t,{S:()=>o});var r,i=s(655),a=s(406);class o{constructor(e,t){if(r.set(this,void 0),0===t.length)throw new Error("Teams must have at least one member.");this.id=e,this.members=t,(0,i.YH)(this,r,this.members.every((e=>e.status.noCheckGameOver))?o.ElimOrder.IMMORTAL:o.ElimOrder.STANDING),a.R.propNoWrite(this,["id","members"])}reset(){this.elimOrder!==o.ElimOrder.IMMORTAL&&(this.elimOrder=o.ElimOrder.STANDING)}get elimOrder(){return(0,i.Q_)(this,r)}set elimOrder(e){if(this.elimOrder===o.ElimOrder.IMMORTAL)throw new TypeError("Cannot change the elimination status of an immortal team.");(0,i.YH)(this,r,e)}}r=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},153:(e,t,s)=>{"use strict";s.d(t,{qM:()=>T,lA:()=>o.l,RQ:()=>a.R,J5:()=>l.J5,Ko:()=>O,gx:()=>n.g});var r,i,a=s(406),o=s(504),n=s(780),h=s(329),l=s(926),c=s(655),d=s(951),u=s(305);class m extends l.J5{constructor(e,t){super(e,t),r.set(this,void 0),i.set(this,void 0),(0,c.YH)(this,i,this.game.langFrontend.remapFunc)}reset(e){super.reset(e),this.prevCoord=e.coord,(0,c.YH)(this,r,"")}processKeyboardInput(e){this.game.status===o.l.Status.PLAYING&&(this.requestInFlight||(" "===e.key?u.u.equals(this.coord,this.prevCoord)||this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord),l.J5.MoveType.BOOST):1!==e.key.length||e.repeat||this.seqBufferAcceptKey(e.key)))}seqBufferAcceptKey(e){const t=this.tile.destsFrom().unoccupied.get;if(0!==t.length)if(e){if(e=(0,c.Q_)(this,i).call(this,e),d.Uo.Seq.REGEXP.test(e)){for(let s=this.seqBuffer+e;s.length;s=s.substring(1)){const e=t.find((e=>e.langSeq.startsWith(s)));if(e)return(0,c.YH)(this,r,s),void(e.langSeq===s&&this.makeMovementRequest(e,l.J5.MoveType.NORMAL))}(0,c.YH)(this,r,""),this.status.visualBell()}}else t.find((e=>e.langSeq.startsWith(this.seqBuffer)))||(0,c.YH)(this,r,"")}moveTo(e){(0,c.YH)(this,r,""),this.prevCoord=this.coord,super.moveTo(e)}_notifyWillBecomeCurrent(){this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems)}get seqBuffer(){return(0,c.Q_)(this,r)}}r=new WeakMap,i=new WeakMap,a.R.protoNoEnum(m,["_notifyWillBecomeCurrent"]),Object.freeze(m),Object.freeze(m.prototype);var p,f,g,y=s(80),E=s(448);class O extends E.c{constructor(e,t){super(e,t),p.set(this,void 0),f.set(this,void 0),g.set(this,void 0),(0,c.YH)(this,p,a.R.mkEl("div",[y.Y.General.Class.CENTER_CONTENTS,y.Y.General.Class.STACK_CONTENTS,y.Y.Player.Class.BASE]));{const e=a.R.mkEl("div",[y.Y.Player.Class.FACE],{});(0,c.YH)(this,f,this.player.isALocalOperator?[e.animate({filter:["brightness(0.7)","brightness(1.0)"]},{duration:300,easing:"ease-in",delay:1}),e.animate({transform:O.makeWiggleAnimation(10,2)},{duration:270,easing:"ease-out",delay:1})]:[]).forEach((e=>e.pause())),e.appendChild(a.R.mkEl("div",[y.Y.Player.Class.DOWNED_OVERLAY])),(0,c.Q_)(this,p).appendChild(e)}}_afterAllPlayersConstruction(){(0,c.YH)(this,g,Object.freeze({playerElem:(0,c.Q_)(this,p),username:this.player.username}))}reset(){super.reset();const e=y.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=e.VALUES.NO}get immigrantInfo(){return(0,c.Q_)(this,g)}_notifyWillBecomeCurrent(e){const t=this.player.game.currentOperator,s=this.player;requestAnimationFrame((t=>{e.forEach((e=>{(0,c.Q_)(this,p).appendChild(e)})),s.status.immigrantInfo.playerElem.scrollIntoView(d.Bl)})),s.teamId!==(null==t?void 0:t.teamId)&&s.game.players.forEach((e=>{const t=e.teamId===s.teamId;(0,c.Q_)(e.status,p).dataset[y.Y.Player.Dataset.FACE_SWATCH]=e.isALocalOperator?t?"me":"meOppo":t?"teammate":"opponent"}))}visualBell(){(0,c.Q_)(this,f),window.requestAnimationFrame((e=>{(0,c.Q_)(this,f).forEach((e=>e.play()))}))}get health(){return super.health}set health(e){const t=this.isDowned;if(super.health=e,t!==this.isDowned){const e=y.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=this.isDowned?this.player.team.elimOrder?e.VALUES.TEAM:e.VALUES.SELF:e.VALUES.NO}}}p=new WeakMap,f=new WeakMap,g=new WeakMap,function(e){var t,s,r;e.makeWiggleAnimation=function(e,t){const s=Array(2*t).fill(e);return s.unshift(0),s.push(0),s.map(((e,t)=>`translate(${t%2?e:-e}%)`))},t=new WeakMap,s=new WeakMap,r=new WeakMap,e.Card=class{constructor(e){t.set(this,void 0),s.set(this,void 0),r.set(this,void 0),this.baseElem=a.R.mkEl("div",[]),this.baseElem.setAttribute("label","Player");const i=(0,c.YH)(this,t,a.R.mkEl("div",[],{textContent:e}));this.baseElem.appendChild(i)}}}(O||(O={})),a.R.protoNoEnum(O,["_afterAllPlayersConstruction"]),Object.freeze(O),Object.freeze(O.prototype);var _=s(358),b=s(886);s(173),(()=>{const e=h.T;e._Constructors=Object.freeze({EUCLID2:_.G,BEEHIVE:b.y}),Object.freeze(e)})();class T{_ctorBrowserGame(){this.htmlElements=Object.freeze({gridImpl:this.grid.baseElem,playersBar:document.createElement("div")}),a.R.propNoWrite(this,["htmlElements"])}_getGridImplementation(e){return h.T.getImplementation(e)}_createOperatorPlayer(e){return new m(this,e)}}a.R.protoNoEnum(T,["_getGridImplementation"]),Object.freeze(T),Object.freeze(T.prototype)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[929],{173:(e,t,s)=>{"use strict";s.r(t)},305:(e,t,s)=>{"use strict";var r;s.d(t,{u:()=>r}),function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(r||(r={})),Object.freeze(r)},985:(e,t,s)=>{"use strict";s.d(t,{r:()=>a});var r=s(406),i=s(495);class a{constructor(e){this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new i.N(this),r.R.propNoWrite(this,["static","dimensions","tile"])}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile((e=>e.reset()))}getDestsFromSourcesTo(e){return Array.from(new Set(this.tile.sourcesTo(e).get.flatMap((e=>this.tile.destsFrom(e.coord).get))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}!function(e){e.getImplementation=t=>e._Constructors[t]}(a||(a={}))},495:(e,t,s)=>{"use strict";s.d(t,{N:()=>a});var r,i=s(655);class a{constructor(e){r.set(this,void 0),(0,i.YH)(this,r,e),Object.freeze(this)}get _source(){return(0,i.Q_)(this,r)}at(...e){return(0,i.Q_)(this,r)._getTileAt(...e)}destsFrom(...e){return new o((0,i.Q_)(this,r)._getTileDestsFrom(...e))}sourcesTo(...e){return new o((0,i.Q_)(this,r)._getTileSourcesTo(...e))}}r=new WeakMap,Object.freeze(a),Object.freeze(a.prototype);class o{constructor(e){this.contents=e,Object.seal(this)}get occupied(){return this.contents=this.contents.filter((e=>e.isOccupied)),this}get unoccupied(){return this.contents=this.contents.filter((e=>!e.isOccupied)),this}get get(){return this.contents}}Object.freeze(o),Object.freeze(o.prototype)},329:(e,t,s)=>{"use strict";s.d(t,{T:()=>r,z:()=>n});var r,i=s(80),a=s(406),o=s(780);!function(e){e.getImplementation=t=>e._Constructors[t]}(r||(r={}));class n{_superVisibleGrid(e,t){if(e.tileClass!==o.g)throw new TypeError("never");const s=i.Y.Grid;t.setAttribute("role","presentation"),t.classList.add(s.Class.IMPL_BODY),t.dataset[s.Dataset.IMPL_COORD_SYS]=e.coordSys,t.translate=!1,t.spellcheck=!1,this.baseElem=t;const r=a.R.mkEl("div",[i.Y.Player.Class.SHORT_SPOTLIGHT]),n=a.R.mkEl("div",[i.Y.Player.Class.LONG_SPOTLIGHT]);this.spotlightElems=Object.freeze([r,n])}}Object.freeze(n),Object.freeze(n.prototype)},780:(e,t,s)=>{"use strict";s.d(t,{g:()=>m});var r,i,a,o,n,h=s(655),l=s(406),c=s(80),d=s(951);class u{constructor(e){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),o.set(this,void 0),this.coord=e,l.R.propNoWrite(this,["coord"]),(0,h.YH)(this,r,d.J5.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(d.Uo.CharSeqPair.NULL)}_setOccupant(e,t){(0,h.YH)(this,r,e)}get isOccupied(){return this.occupantId!==d.J5.Id.NULL}evictOccupant(){(0,h.YH)(this,r,d.J5.Id.NULL)}get occupantId(){return(0,h.Q_)(this,r)}get freeHealth(){return(0,h.Q_)(this,i)}set freeHealth(e){(0,h.YH)(this,i,e)}setLangCharSeqPair(e){(0,h.YH)(this,a,e.char),(0,h.YH)(this,o,e.seq)}get langChar(){return(0,h.Q_)(this,a)}get langSeq(){return(0,h.Q_)(this,o)}}r=new WeakMap,i=new WeakMap,a=new WeakMap,o=new WeakMap,Object.freeze(u),Object.freeze(u.prototype);class m extends u{constructor(e){super(e),n.set(this,void 0),(0,h.YH)(this,n,l.R.mkEl("div",[c.Y.General.Class.CENTER_CONTENTS,c.Y.General.Class.STACK_CONTENTS,c.Y.Tile.Class.BASE])).setAttribute("aria-label","Tile");{const e=l.R.mkEl("div",[c.Y.Tile.Class.POINTER_HB]);e.setAttribute("aria-hidden","true"),(0,h.Q_)(this,n).appendChild(e)}{const e=l.R.mkEl("div",[c.Y.Tile.Class.LANG_CHAR_WRAP]);e.setAttribute("role","presentation");const t=this.langCharElem=l.R.mkEl("div",[]);e.appendChild(t),(0,h.Q_)(this,n).appendChild(e)}{const e=this.langSeqElem=l.R.mkEl("div",[c.Y.Tile.Class.LANG_SEQ]);e.setAttribute("role","tooltip"),(0,h.Q_)(this,n).appendChild(e)}l.R.propNoWrite(this,["langCharElem","langSeqElem"])}_addToDom(e){e.appendChild((0,h.Q_)(this,n))}_setOccupant(e,t){super._setOccupant(e,t),this.langCharElem.parentElement.insertAdjacentElement("beforebegin",t.playerElem),this.langSeqElem.textContent=t.username}evictOccupant(){super.evictOccupant(),this.langSeqElem.textContent=this.langSeq}set freeHealth(e){super.freeHealth=e,this.freeHealth>0?(0,h.Q_)(this,n).dataset[c.Y.Tile.Dataset.HEALTH]=this.freeHealth.toString():delete(0,h.Q_)(this,n).dataset[c.Y.Tile.Dataset.HEALTH]}get freeHealth(){return super.freeHealth}setLangCharSeqPair(e){super.setLangCharSeqPair(e),this.langCharElem.textContent=this.langChar,this.langSeqElem.textContent=this.langSeq}}n=new WeakMap,l.R.protoNoEnum(m,["_addToDom"]),Object.freeze(m),Object.freeze(m.prototype)},886:(e,t,s)=>{"use strict";s.d(t,{v:()=>r,y:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),s=Math.floor(this.bash),r=e-this.dash,i=s-this.bash;return r>2*i?new t({dash:e+1,bash:s}):r<.5*i?new t({dash:e,bash:s+1}):Math.min(r,i)>.5?new t({dash:e+1,bash:s+1}):new t({dash:e,bash:s})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e),this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const s of this.grid)for(const r of s)e(r,t++)}shuffledForEachTile(e){this.grid.flat().sort(((e,t)=>Math.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e,t=1){}_getTileSourcesTo(e,t=1){}minMovesFromTo(e,t){}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),s=Math.max(e.fslash,e.bslash),r=-1+e.dash+t;let i=2*t*(e.dash+r);return i+=(s-t-1)*r,i}static getDiameterOfLatticePatchHavingArea(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new t(void 0)}}s.SIZE_LIMITS=Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e),this._superVisibleGrid(e,void 0)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},358:(e,t,s)=>{"use strict";s.d(t,{i:()=>r,G:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e);const s=[];for(let r=0;rMath.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){const s=this.tile.destsFrom(t).unoccupied.get;if(0===s.length)return this.tile.at(t);if(1===s.length)return s[0];s.sort(((t,s)=>t.coord.oneNorm(e)-s.coord.oneNorm(e))).sort(((t,s)=>t.coord.infNorm(e)-s.coord.infNorm(e)));for(let t=1;ts[0].coord.infNorm(e)){s.splice(t);break}if(1===s.length)return s[0];if(s[0].coord.x-t.x==0||s[0].coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s[0];s.shift()}return s[Math.floor(s.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}getRandomCoordAround(e,s){return new t({x:e.x+Math.trunc(2*s*(Math.random()-.5)),y:e.y+Math.trunc(2*s*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let s=e.y-t,r=e.y+t+1,i=e.x-t,a=e.x+t+1;return s>=this.dimensions.height||r<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,s),Math.min(this.dimensions.height,r)).flatMap((e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a))))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const r=[];return e.map((e=>{const i=[];for(;e>0;){let a;do{a=s.getRandomCoord(t)}while(r.find((e=>a._equals(e))));i.push(a),r.push(a),e--}return i}))}static getArea(e){return e.height*e.width}static getDiameterOfLatticePatchHavingArea(e){return Math.sqrt(e)}static getRandomCoord(e){const s=Math.floor(e.width*Math.random()),r=Math.floor(e.height*Math.random());return new t({x:s,y:r})}}s.SIZE_LIMITS=Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e);const t=i.R.mkEl("div",[]);t.style.setProperty("--euclid2-grid-width",this.dimensions.width.toString());for(const e of this.grid)for(const s of e)s._addToDom(t);this._superVisibleGrid(e,t)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},671:(e,t,s)=>{"use strict";var r;s.d(t,{L:()=>r}),function(e){e.EVENT_ID_REJECT=-1}(r||(r={})),Object.freeze(r)},699:(e,t,s)=>{"use strict";s.d(t,{a:()=>r});var r,i=s(671);!function(e){e.INITIAL_REQUEST_ID=-1,e.EVENT_NAME=Object.freeze({BUBBLE:"player-bubble",MOVEMENT:"player-movement"});class t{constructor(e,t){this.eventId=i.L.EVENT_ID_REJECT,this.affectedNeighbours=void 0,this.playerId=e,this.playerLastAcceptedRequestId=t}}e.Bubble=t,e.Movement=class extends t{constructor(e,t,s,r){super(e,t),this.newPlayerHealth=void 0,this.tileHealthModDescs=void 0,this.destModDesc={coord:s.coord,lastKnownUpdateId:s.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:void 0},this.moveType=r}}}(r||(r={})),Object.freeze(r)},191:(e,t,s)=>{"use strict";s.d(t,{R:()=>f});var r,i,a,o,n=s(655),h=s(504),l=s(671),c=(s(699),s(406)),d=s(951),u=s(926),m=s(473);class p{constructor(e,t,s){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),this.gameType=e;const o=this._getGridImplementation(s.coordSys);this.grid=new o({gridClass:o,tileClass:t.tileClass,coordSys:s.coordSys,dimensions:s.gridDimensions}),(0,n.YH)(this,r,t.onGameBecomeOver),this.langFrontend=d.Uo.GET_FRONTEND_DESC_BY_ID(s.langId),this._playerStatusCtor=t.playerStatusCtor,this.players=this.createPlayers(s),this.operators=Object.freeze(this.players.filter((e=>e.isALocalOperator))),this.setCurrentOperator(0);{const e=[];if(this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new m.S(t,e))),this.teams.every((e=>e.id===m.S.ElimOrder.IMMORTAL)))throw new Error("All teams are immortal. The game will never end.")}c.R.propNoWrite(this,["gameType","grid","langFrontend","players","operators","teams","_playerStatusCtor"]),this.players.forEach((e=>e._afterAllPlayersConstruction()))}reset(){return(0,n.mG)(this,void 0,void 0,(function*(){this.grid.reset(),(0,n.YH)(this,a,h.l.Status.PAUSED)}))}createPlayers(e){const t=e.playerDescs=this.gameType===h.l.Type.ONLINE?e.playerDescs:u.J5.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map((e=>e.familyId===u.J5.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new u.J5(this,e):this._createArtifPlayer(e))))}serializeResetState(){const e=[],t=this.players.map((e=>e.coord)),s=[];return this.grid.forEachTile((t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&s.push({coord:t.coord,health:t.freeHealth})})),{csps:e,playerCoords:t,healthCoords:s}}deserializeResetState(e){this.grid.forEachTile(((t,s)=>{t.setLangCharSeqPair(e.csps[s]),t.lastKnownUpdateId++})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(this.grid.tile.at(e))})),e.healthCoords.forEach((e=>{this.grid.tile.at(e.coord).freeHealth=e.health}))}get currentOperator(){return(0,n.Q_)(this,i)}setCurrentOperator(e){const t=this.operators[e];this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),(0,n.YH)(this,i,t))}get status(){return(0,n.Q_)(this,a)}statusBecomePlaying(){if(this.status!==h.l.Status.PLAYING){if(this.status!==h.l.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e._notifyGameNowPlaying()})),(0,n.YH)(this,a,h.l.Status.PLAYING)}else console.info("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==h.l.Status.PAUSED?this.status!==h.l.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowPaused()})),(0,n.YH)(this,a,h.l.Status.PAUSED)):console.info("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){this.status!==h.l.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowOver()})),(0,n.YH)(this,a,h.l.Status.OVER),(0,n.Q_)(this,r).call(this),console.info("game is over!"))}}r=new WeakMap,i=new WeakMap,a=new WeakMap,c.R.protoNoEnum(p,[]),Object.freeze(p),Object.freeze(p.prototype);class f extends p{constructor(e,t,s){super(e,t,s),o.set(this,void 0),this.eventRecordBitmap=[]}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),(0,n.YH)(this,o,0),e}get nextUnusedEventId(){return(0,n.Q_)(this,o)}_recordEvent(e){const t=e.eventId,s=t%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;if(t===l.L.EVENT_ID_REJECT)throw new TypeError("Do not try to record events for rejected requests.");if(t<0||t!==Math.trunc(t))throw new RangeError("Event ID's must only be assigned positive, integer values.");if(this.eventRecordBitmap[s])throw new Error("Event ID's must be assigned unique values.");this.eventRecordBitmap[s]=!0,this.eventRecordBitmap[(t+h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-h.l.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,(0,n.YH)(this,o,+(0,n.Q_)(this,o)+1)}executeTileModEvent(e,t=!0){Object.freeze(e);const s=this.grid.tile.at(e.coord);if(s.lastKnownUpdateId>e.lastKnownUpdateId)return s;if(s.lastKnownUpdateId===e.lastKnownUpdateId)throw new RangeError("never");return e.newCharSeqPair&&(s.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter((e=>e.tile.destsFrom().get.includes(s))).forEach((e=>e.seqBufferAcceptKey("")))),s.lastKnownUpdateId=e.lastKnownUpdateId,s.freeHealth=e.newFreeHealth,s}executePlayerMoveEvent(e){var t;const s=this.players[e.playerId],r=e.playerLastAcceptedRequestId-s.lastAcceptedRequestId;if(e.eventId===l.L.EVENT_ID_REJECT)return void(0===r&&(s.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,s!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach((e=>{this.executeTileModEvent(e)})),r>1){if(s===this.currentOperator)throw new Error("never")}else{if(s.requestInFlight=!1,!(s===this.currentOperator?1===r:r<=1))throw new RangeError("never");s.status.health=e.newPlayerHealth.health,s.moveTo(i),s.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==l.L.EVENT_ID_REJECT&&this._recordEvent(e)}}o=new WeakMap,Object.freeze(f),Object.freeze(f.prototype)},926:(e,t,s)=>{"use strict";s.d(t,{J5:()=>d});var r,i=s(406),a=s(504),o=s(699),n=s(655),h=s(951),l=s(495);class c extends h.J5{constructor(e,t){if(super(),r.set(this,void 0),Math.trunc(t.playerId)!==t.playerId)throw new RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new l.N(new c.TileGetterSource(this)),i.R.instNoEnum(this,["game"]),i.R.propNoWrite(this,["playerId","isALocalOperator","game","status","tile"])}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){(0,n.YH)(this,r,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return(0,n.Q_)(this,r)}moveTo(e){if(this.hostTile.occupantId!==this.playerId){if(this.game.gameType!==a.l.Type.ONLINE)throw new Error("Linkage between player and occupied tile disagrees.")}else this.hostTile.evictOccupant();if(e.isOccupied){if(this.game.gameType!==a.l.Type.ONLINE)throw new Error("Only one player can occupy a tile at a time.")}else(0,n.YH)(this,r,e),e._setOccupant(this.playerId,this.status.immigrantInfo)}}r=new WeakMap,function(e){var t,s;class r{constructor(e){t.set(this,void 0),s.set(this,void 0),(0,n.YH)(this,t,e),(0,n.YH)(this,s,e.game.grid.tile._source)}_getTileAt(){return(0,n.Q_)(this,s)._getTileAt((0,n.Q_)(this,t).coord)}_getTileDestsFrom(){return(0,n.Q_)(this,s)._getTileDestsFrom((0,n.Q_)(this,t).coord)}_getTileSourcesTo(){return(0,n.Q_)(this,s)._getTileSourcesTo((0,n.Q_)(this,t).coord)}}t=new WeakMap,s=new WeakMap,e.TileGetterSource=r,Object.freeze(r),Object.freeze(r.prototype)}(c||(c={})),i.R.protoNoEnum(c,["_afterAllPlayersConstruction"]),Object.freeze(c),Object.freeze(c.prototype),s(448);class d extends c{constructor(e,t){var s;super(e,t),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(s=t.avatar)&&void 0!==s?s:d.Avatar.GET_RANDOM(),i.R.propNoWrite(this,["familyId","teamId","username","avatar"])}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=o.a.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){if(this.game.status!==a.l.Status.PLAYING)throw new Error("This is not a necessary precondition, but we're doing it anyway.");if(this.requestInFlight)throw new Error("Only one request should ever be in flight at a time.");this.requestInFlight=!0,this.game.processMoveRequest(new o.a.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,s)=>(e[t]=s,e)),[]);return e.slice().sort(((e,s)=>t[e.teamId]-t[s.teamId])).map(((e,s)=>Object.assign({},e,{playerId:s,teamId:t[e.teamId]})))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(d||(d={})),i.R.protoNoEnum(d,["_notifyGameNowPaused","_notifyGameNowPlaying","_notifyGameNowOver"]),Object.freeze(d),Object.freeze(d.prototype)},448:(e,t,s)=>{"use strict";s.d(t,{c:()=>n});var r,i=s(655),a=s(406),o=s(473);class n{constructor(e,t){r.set(this,void 0),this.player=e,this.noCheckGameOver=t,a.R.instNoEnum(this,["player"])}reset(){this.health=0}_afterAllPlayersConstruction(){}get immigrantInfo(){}get health(){return(0,i.Q_)(this,r)}set health(e){const t=this.isDowned;if((0,i.YH)(this,r,e),t||!this.isDowned||this.noCheckGameOver)return;const s=this.player.team,a=this.player.game.teams;if(s.elimOrder===o.S.ElimOrder.STANDING&&s.members.every((e=>e.status.noCheckGameOver||e.status.isDowned))){const e=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING)).length;s.elimOrder=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING&&e.elimOrder!==o.S.ElimOrder.IMMORTAL)).length,e===a.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}r=new WeakMap,a.R.protoNoEnum(n,["_afterAllPlayersConstruction"]),Object.freeze(n),Object.freeze(n.prototype)},473:(e,t,s)=>{"use strict";s.d(t,{S:()=>o});var r,i=s(655),a=s(406);class o{constructor(e,t){if(r.set(this,void 0),0===t.length)throw new Error("Teams must have at least one member.");this.id=e,this.members=t,(0,i.YH)(this,r,this.members.every((e=>e.status.noCheckGameOver))?o.ElimOrder.IMMORTAL:o.ElimOrder.STANDING),a.R.propNoWrite(this,["id","members"])}reset(){this.elimOrder!==o.ElimOrder.IMMORTAL&&(this.elimOrder=o.ElimOrder.STANDING)}get elimOrder(){return(0,i.Q_)(this,r)}set elimOrder(e){if(this.elimOrder===o.ElimOrder.IMMORTAL)throw new TypeError("Cannot change the elimination status of an immortal team.");(0,i.YH)(this,r,e)}}r=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},153:(e,t,s)=>{"use strict";s.d(t,{qM:()=>b,lA:()=>o.l,RQ:()=>a.R,J5:()=>l.J5,Ko:()=>O,gx:()=>n.g});var r,i,a=s(406),o=s(504),n=s(780),h=s(329),l=s(926),c=s(655),d=s(951),u=s(305);class m extends l.J5{constructor(e,t){super(e,t),r.set(this,void 0),i.set(this,void 0),(0,c.YH)(this,i,this.game.langFrontend.remapFunc)}reset(e){super.reset(e),this.prevCoord=e.coord,(0,c.YH)(this,r,"")}processKeyboardInput(e){this.game.status===o.l.Status.PLAYING&&(this.requestInFlight||(" "===e.key?u.u.equals(this.coord,this.prevCoord)||this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord),l.J5.MoveType.BOOST):1!==e.key.length||e.repeat||this.seqBufferAcceptKey(e.key)))}seqBufferAcceptKey(e){const t=this.tile.destsFrom().unoccupied.get;if(0!==t.length)if(e){if(e=(0,c.Q_)(this,i).call(this,e),d.Uo.Seq.REGEXP.test(e)){for(let s=this.seqBuffer+e;s.length;s=s.substring(1)){const e=t.find((e=>e.langSeq.startsWith(s)));if(e)return(0,c.YH)(this,r,s),void(e.langSeq===s&&this.makeMovementRequest(e,l.J5.MoveType.NORMAL))}(0,c.YH)(this,r,""),this.status.visualBell()}}else t.find((e=>e.langSeq.startsWith(this.seqBuffer)))||(0,c.YH)(this,r,"")}moveTo(e){(0,c.YH)(this,r,""),this.prevCoord=this.coord,super.moveTo(e)}_notifyWillBecomeCurrent(){this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems)}get seqBuffer(){return(0,c.Q_)(this,r)}}r=new WeakMap,i=new WeakMap,a.R.protoNoEnum(m,["_notifyWillBecomeCurrent"]),Object.freeze(m),Object.freeze(m.prototype);var p,f,g,E=s(80),y=s(448);class O extends y.c{constructor(e,t){super(e,t),p.set(this,void 0),f.set(this,void 0),g.set(this,void 0),(0,c.YH)(this,p,a.R.mkEl("div",[E.Y.General.Class.CENTER_CONTENTS,E.Y.General.Class.STACK_CONTENTS,E.Y.Player.Class.BASE]));{const e=a.R.mkEl("div",[E.Y.Player.Class.FACE],{});(0,c.YH)(this,f,this.player.isALocalOperator?[e.animate({filter:["brightness(0.7)","brightness(1.0)"]},{duration:300,easing:"ease-in",delay:1}),e.animate({transform:O.makeWiggleAnimation(10,2)},{duration:270,easing:"ease-out",delay:1})]:[]).forEach((e=>e.pause())),e.appendChild(a.R.mkEl("div",[E.Y.Player.Class.DOWNED_OVERLAY])),(0,c.Q_)(this,p).appendChild(e)}}_afterAllPlayersConstruction(){(0,c.YH)(this,g,Object.freeze({playerElem:(0,c.Q_)(this,p),username:this.player.username}))}reset(){super.reset();const e=E.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=e.VALUES.NO}get immigrantInfo(){return(0,c.Q_)(this,g)}_notifyWillBecomeCurrent(e){const t=this.player.game.currentOperator,s=this.player;requestAnimationFrame((t=>{e.forEach((e=>{(0,c.Q_)(this,p).appendChild(e)})),s.status.immigrantInfo.playerElem.scrollIntoView(d.Bl)})),s.teamId!==(null==t?void 0:t.teamId)&&s.game.players.forEach((e=>{const t=e.teamId===s.teamId;(0,c.Q_)(e.status,p).dataset[E.Y.Player.Dataset.FACE_SWATCH]=e.isALocalOperator?t?"me":"meOppo":t?"teammate":"opponent"}))}visualBell(){(0,c.Q_)(this,f),window.requestAnimationFrame((e=>{(0,c.Q_)(this,f).forEach((e=>e.play()))}))}get health(){return super.health}set health(e){const t=this.isDowned;if(super.health=e,t!==this.isDowned){const e=E.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=this.isDowned?this.player.team.elimOrder?e.VALUES.TEAM:e.VALUES.SELF:e.VALUES.NO}}}p=new WeakMap,f=new WeakMap,g=new WeakMap,function(e){var t,s,r;e.makeWiggleAnimation=function(e,t){const s=Array(2*t).fill(e);return s.unshift(0),s.push(0),s.map(((e,t)=>`translate(${t%2?e:-e}%)`))},t=new WeakMap,s=new WeakMap,r=new WeakMap,e.Card=class{constructor(e){t.set(this,void 0),s.set(this,void 0),r.set(this,void 0),this.baseElem=a.R.mkEl("div",[]),this.baseElem.setAttribute("label","Player");const i=(0,c.YH)(this,t,a.R.mkEl("div",[],{textContent:e}));this.baseElem.appendChild(i)}}}(O||(O={})),a.R.protoNoEnum(O,["_afterAllPlayersConstruction"]),Object.freeze(O),Object.freeze(O.prototype);var _=s(358),T=s(886);s(173),(()=>{const e=h.T;e._Constructors=Object.freeze({EUCLID2:_.G,BEEHIVE:T.y}),Object.freeze(e)})();class b{_ctorBrowserGame(){this.htmlElements=Object.freeze({gridImpl:this.grid.baseElem,playersBar:document.createElement("div")}),a.R.propNoWrite(this,["htmlElements"])}_getGridImplementation(e){return h.T.getImplementation(e)}_createOperatorPlayer(e){return new m(this,e)}}a.R.protoNoEnum(b,["_getGridImplementation"]),Object.freeze(b),Object.freeze(b.prototype)}}]); //# sourceMappingURL=929.js.map \ No newline at end of file diff --git a/client/chunk/929.js.map b/client/chunk/929.js.map index 7986250a..679cf675 100644 --- a/client/chunk/929.js.map +++ b/client/chunk/929.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/floor/Coord.ts","webpack://snakey3/./src/base/floor/Grid.ts","webpack://snakey3/./src/base/floor/TileGetter.ts","webpack://snakey3/./src/base/floor/VisibleGrid.ts","webpack://snakey3/./src/base/floor/Tile.ts","webpack://snakey3/./src/base/floor/VisibleTile.ts","webpack://snakey3/./src/base/floor/impl/Beehive.ts","webpack://snakey3/./src/base/floor/impl/Euclid2.ts","webpack://snakey3/./src/base/game/events/EventRecordEntry.ts","webpack://snakey3/./src/base/game/events/PlayerActionEvent.ts","webpack://snakey3/./src/base/game/gameparts/GamepartBase.ts","webpack://snakey3/./src/base/game/gameparts/GamepartEvents.ts","webpack://snakey3/./src/base/game/player/PlayerSkeleton.ts","webpack://snakey3/./src/base/game/player/Player.ts","webpack://snakey3/./src/base/game/player/PlayerStatus.ts","webpack://snakey3/./src/base/game/player/Team.ts","webpack://snakey3/./src/base/game/player/OperatorPlayer.ts","webpack://snakey3/./src/base/game/player/VisiblePlayerStatus.ts","webpack://snakey3/./src/client/game/BrowserGame.ts","webpack://snakey3/./src/base/game/ctormaps/CmapBrowser.ts"],"names":["Coord","System","equals","a","b","_equals","Object","freeze","Grid","desc","this","static","gridClass","dimensions","tile","getArea","forEachTile","reset","originCoord","Array","from","Set","sourcesTo","get","flatMap","sourceToTarget","destsFrom","coord","getRandomCoord","getImplementation","coordSys","_Constructors","TileGetter","source","args","_getTileAt","Query","_getTileDestsFrom","_getTileSourcesTo","prototype","contents","seal","filter","isOccupied","VisibleGrid","VisibleGridMixin","gridImpl","tileClass","TypeError","OHG","setAttribute","classList","add","Class","IMPL_BODY","dataset","Dataset","IMPL_COORD_SYS","translate","spellcheck","baseElem","shortSpotlight","longSpotlight","spotlightElems","Tile","JsUtils","evictOccupant","lastKnownUpdateId","freeHealth","setLangCharSeqPair","playerId","immigrantInfo","occupantId","newFreeHealth","charSeqPair","char","seq","VisibleTile","coordDesc","super","OmHooks","pthb","appendChild","charWrap","charElem","langCharElem","seqElem","langSeqElem","parent","_setOccupant","parentElement","insertAdjacentElement","playerElem","textContent","username","langSeq","toString","langChar","Beehive","dash","bash","other","floorDash","Math","floor","floorBash","d","min","scalar","grid","undefined","SIZE_LIMITS","consumer","i","row","flat","sort","random","forEach","intendedDest","sourceCoord","avoidCoord","getUntToward","sub","origin","radius","dest","playerCounts","dim","shorterSide","fslash","bslash","longerSide","max","width","area","RangeError","sqrt","BeehiveVisibleGrid","_superVisibleGrid","Euclid2","x","y","round","originOneNorm","abs","originInfNorm","originAxialAlignment","height","newRow","col","newTile","push","options","unoccupied","length","at","tileA","TileB","oneNorm","infNorm","splice","axialAlignment","shift","trunc","t","l","r","slice","gridRow","avoidSet","map","numMembers","teamSpawnCoords","find","Euclid2VisibleGrid","gridElem","style","setProperty","_addToDom","EventRecordEntry","EVENT_ID_REJECT","PlayerActionEvent","INITIAL_REQUEST_ID","EVENT_NAME","BUBBLE","MOVEMENT","Bubble","lastAcceptedRequestId","eventId","affectedNeighbours","playerLastAcceptedRequestId","Movement","destTile","moveType","newPlayerHealth","tileHealthModDescs","destModDesc","newCharSeqPair","GamepartBase","gameType","impl","_getGridImplementation","gridDimensions","onGameBecomeOver","langFrontend","langId","_playerStatusCtor","playerStatusCtor","players","createPlayers","operators","player","isALocalOperator","setCurrentOperator","teams","teamId","teammateArray","Team","every","team","id","Error","_afterAllPlayersConstruction","Game","Promise","resolve","gameDesc","playerDescs","Player","playerDesc","familyId","_createOperatorPlayer","_createArtifPlayer","csps","playerCoords","healthCoords","health","ser","index","nextOperatorIndex","nextOperator","currentOperator","_notifyWillBecomeCurrent","status","_notifyGameNowPlaying","_abstractStatusBecomePlaying","console","log","_notifyGameNowPaused","_abstractStatusBecomePaused","_notifyGameNowOver","_abstractStatusBecomeOver","GamepartEvents","eventRecordBitmap","superPromise","fill","wrappedId","doCheckOperatorSeqBuffer","op","includes","seqBufferAcceptKey","clientEventLag","requestInFlight","_recordEvent","executeTileModEvent","moveTo","PlayerSkeleton","game","noCheckGameOver","TileGetterSource","spawnTile","hostTile","_source","avatar","Avatar","GET_RANDOM","type","processMoveRequest","members","CtorArgs","finalize","teamIdCleaner","reduce","prev","originalId","squashedId","pda","pdb","assign","PlayerStatus","newHealth","oldIsDowned","isDowned","elimOrder","numNonStandingTeams","statusBecomeOver","member","ElimOrder","IMMORTAL","STANDING","teamElimOrder","OperatorPlayer","remapFunc","prevCoord","event","key","makeMovementRequest","getUntAwayFrom","repeat","unts","newSeqBuffer","seqBuffer","substring","possibleTarget","startsWith","visualBell","VisiblePlayerStatus","faceElem","animate","duration","easing","delay","transform","makeWiggleAnimation","anim","pause","DDH","KEY","VALUES","NO","currOperator","requestAnimationFrame","time","elem","scrollIntoView","otherPlayer","isTeammate","window","play","TEAM","SELF","pctX","numWiggles","arr","unshift","n","Card","playerName","name","VGr","BrowserGameMixin","htmlElements","playersBar","document","createElement"],"mappings":"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","file":"chunk/929.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/floor/Coord.ts","webpack://snakey3/./src/base/floor/Grid.ts","webpack://snakey3/./src/base/floor/TileGetter.ts","webpack://snakey3/./src/base/floor/VisibleGrid.ts","webpack://snakey3/./src/base/floor/Tile.ts","webpack://snakey3/./src/base/floor/VisibleTile.ts","webpack://snakey3/./src/base/floor/impl/Beehive.ts","webpack://snakey3/./src/base/floor/impl/Euclid2.ts","webpack://snakey3/./src/base/game/events/EventRecordEntry.ts","webpack://snakey3/./src/base/game/events/PlayerActionEvent.ts","webpack://snakey3/./src/base/game/gameparts/GamepartBase.ts","webpack://snakey3/./src/base/game/gameparts/GamepartEvents.ts","webpack://snakey3/./src/base/game/player/PlayerSkeleton.ts","webpack://snakey3/./src/base/game/player/Player.ts","webpack://snakey3/./src/base/game/player/PlayerStatus.ts","webpack://snakey3/./src/base/game/player/Team.ts","webpack://snakey3/./src/base/game/player/OperatorPlayer.ts","webpack://snakey3/./src/base/game/player/VisiblePlayerStatus.ts","webpack://snakey3/./src/client/game/BrowserGame.ts","webpack://snakey3/./src/base/game/ctormaps/CmapBrowser.ts"],"names":["Coord","System","equals","a","b","_equals","Object","freeze","Grid","desc","this","static","gridClass","dimensions","tile","getArea","forEachTile","reset","originCoord","Array","from","Set","sourcesTo","get","flatMap","sourceToTarget","destsFrom","coord","getRandomCoord","getImplementation","coordSys","_Constructors","TileGetter","source","args","_getTileAt","Query","_getTileDestsFrom","_getTileSourcesTo","prototype","contents","seal","filter","isOccupied","VisibleGrid","VisibleGridMixin","gridImpl","tileClass","TypeError","OHG","setAttribute","classList","add","Class","IMPL_BODY","dataset","Dataset","IMPL_COORD_SYS","translate","spellcheck","baseElem","shortSpotlight","longSpotlight","spotlightElems","Tile","JsUtils","evictOccupant","lastKnownUpdateId","freeHealth","setLangCharSeqPair","playerId","immigrantInfo","occupantId","newFreeHealth","charSeqPair","char","seq","VisibleTile","coordDesc","super","OmHooks","pthb","appendChild","charWrap","charElem","langCharElem","seqElem","langSeqElem","parent","_setOccupant","parentElement","insertAdjacentElement","playerElem","textContent","username","langSeq","toString","langChar","Beehive","dash","bash","other","floorDash","Math","floor","floorBash","d","min","scalar","grid","undefined","SIZE_LIMITS","consumer","i","row","flat","sort","random","forEach","intendedDest","sourceCoord","avoidCoord","getUntToward","sub","origin","radius","dest","playerCounts","dim","shorterSide","fslash","bslash","longerSide","max","width","area","RangeError","sqrt","BeehiveVisibleGrid","_superVisibleGrid","Euclid2","x","y","round","originOneNorm","abs","originInfNorm","originAxialAlignment","height","newRow","col","newTile","push","options","unoccupied","length","at","tileA","TileB","oneNorm","infNorm","splice","axialAlignment","shift","trunc","t","l","r","slice","gridRow","avoidSet","map","numMembers","teamSpawnCoords","find","Euclid2VisibleGrid","gridElem","style","setProperty","_addToDom","EventRecordEntry","EVENT_ID_REJECT","PlayerActionEvent","INITIAL_REQUEST_ID","EVENT_NAME","BUBBLE","MOVEMENT","Bubble","lastAcceptedRequestId","eventId","affectedNeighbours","playerLastAcceptedRequestId","Movement","destTile","moveType","newPlayerHealth","tileHealthModDescs","destModDesc","newCharSeqPair","GamepartBase","gameType","impl","_getGridImplementation","gridDimensions","onGameBecomeOver","langFrontend","langId","_playerStatusCtor","playerStatusCtor","players","createPlayers","operators","player","isALocalOperator","setCurrentOperator","teams","teamId","teammateArray","Team","every","team","id","Error","_afterAllPlayersConstruction","Game","gameDesc","playerDescs","Player","playerDesc","familyId","_createOperatorPlayer","_createArtifPlayer","csps","playerCoords","healthCoords","health","ser","index","nextOperatorIndex","nextOperator","currentOperator","_notifyWillBecomeCurrent","status","_notifyGameNowPlaying","console","info","_notifyGameNowPaused","_notifyGameNowOver","GamepartEvents","eventRecordBitmap","superPromise","fill","wrappedId","doCheckOperatorSeqBuffer","op","includes","seqBufferAcceptKey","clientEventLag","requestInFlight","_recordEvent","executeTileModEvent","moveTo","PlayerSkeleton","game","noCheckGameOver","TileGetterSource","spawnTile","hostTile","_source","avatar","Avatar","GET_RANDOM","type","processMoveRequest","members","CtorArgs","finalize","teamIdCleaner","reduce","prev","originalId","squashedId","pda","pdb","assign","PlayerStatus","newHealth","oldIsDowned","isDowned","elimOrder","numNonStandingTeams","statusBecomeOver","member","ElimOrder","IMMORTAL","STANDING","teamElimOrder","OperatorPlayer","remapFunc","prevCoord","event","key","makeMovementRequest","getUntAwayFrom","repeat","unts","newSeqBuffer","seqBuffer","substring","possibleTarget","startsWith","visualBell","VisiblePlayerStatus","faceElem","animate","duration","easing","delay","transform","makeWiggleAnimation","anim","pause","DDH","KEY","VALUES","NO","currOperator","requestAnimationFrame","time","elem","scrollIntoView","otherPlayer","isTeammate","window","play","TEAM","SELF","pctX","numWiggles","arr","unshift","n","Card","playerName","name","VGr","BrowserGameMixin","htmlElements","playersBar","document","createElement"],"mappings":"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","file":"chunk/929.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/offline.css.map b/client/chunk/game/offline.css.map index 906d4e45..701e926d 100644 --- a/client/chunk/game/offline.css.map +++ b/client/chunk/game/offline.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/assets/style/game/zindex.css","webpack://snakey3/assets/style/game/grid.css","webpack://snakey3/assets/style/game/tile.css","webpack://snakey3/assets/style/game/player.css","webpack://snakey3/assets/style/game/coordsys/euclid2.css"],"names":[],"mappings":"AAUA,qBAAkC,SAAc,CAChD,4BAAkC,UAAc,CAChD,wBAAkC,UAAc,CAChD,WAAkC,UAAc,CAChD,wBAAkC,UAAc,CAEhD,6CAAkC,UAAc,CAChD,yBAAkC,UAAc,CAEhD,kBAAkC,SAAc,CAChD,yBAAkC,SAAc,CCnBhD,WAMI,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMJ,CACA,mCAEI,iBACJ,CACA,+BACI,cAAqB,CACrB,WAAmB,CACnB,mBAAoB,CACpB,WACJ,CAGA,wBACI,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACJ,CACA,2CACI,OAAW,CACX,QACJ,CAEA,qBACI,eAAuB,CACvB,eAAsB,CACtB,0BAAoC,CACpC,kBAA2B,CAC3B,iBAA2B,CAC3B,YACJ,CAEA,2CAEI,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,6BAAuC,CACvC,iBACJ,CACA,kBACI,+CACJ,CACA,yBACI,+CACJ,CAEA,cACI,iBACI,YACJ,CACA,mIAEI,kBACJ,CACJ,CC9EA,MAGI,mBAAoB,CACpB,kBACJ,CACA,QACI,WAAY,CAAE,UAClB,CACA,sBACI,mBAAuB,CACvB,cAAsB,CACtB,OAAQ,CAAE,QAEd,CAEA,qCACI,qBAAsB,CACtB,8BAAgC,CAChC,mBACJ,CAEA,YACI,cAAsB,CACtB,qCAAsC,CACtC,sBAA6B,CAC7B,YAAoB,CACpB,kBACJ,CACA,cACI,WACJ,CACA,+BACI,iCAAsC,CACtC,4BAAwC,CACxC,uCAAwC,CAExC,0CAA4C,CAC5C,uBAAyB,CACzB,kCACJ,CAEA,WACI,eAAuB,CACvB,cAAsB,CAEtB,eAAgB,CAAE,kBAAmB,CACrC,cAAgB,CAAE,iBAAmB,CACrC,UAAqB,CACrB,+BAAoC,CACpC,iBAAqB,CACrB,mBAEJ,CACA,6DAFI,iBAIJ,CACA,wCACI,iBACJ,CACA,uCACI,kBACJ,CC9DA,QAOI,uCAAwC,CACxC,YACJ,CACA,cACI,iCAAoC,CACpC,cAAsB,CACtB,2CACJ,CAKA,qFAMI,qBACJ,CACA,wBACI,oBAAqB,CACrB,UACJ,CACA,gDACI,iBACJ,CASI,uCACC,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CACjC,CAQA,yBACI,2FAGC,CACD,aAAiB,CACjB,4CACJ,CACA,wBACI,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACJ,CACA,aAII,iDACI,iBACJ,CACJ,CAGA,oCAEI,sCACJ,CACA,wCAEI,0CACJ,CACA,0CAEI,4CACJ,CACA,0CAEI,4CACJ,CACA,4DAEI,gDACJ,CACA,4DAEI,gDACJ,CCvGA,6CACI,+BAAiC,CACjC,YAAgB,CAChB,yEACwD,CACxD,gCACJ,CACA,mDACI,SAAc,CACd,wBACJ","file":"chunk/game/offline.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./assets/style/game/zindex.css","webpack://snakey3/./assets/style/game/grid.css","webpack://snakey3/./assets/style/game/tile.css","webpack://snakey3/./assets/style/game/player.css","webpack://snakey3/./assets/style/game/coordsys/euclid2.css"],"names":[],"mappings":"AAUA,qBAAkC,SAAc,CAChD,4BAAkC,UAAc,CAChD,wBAAkC,UAAc,CAChD,WAAkC,UAAc,CAChD,wBAAkC,UAAc,CAEhD,6CAAkC,UAAc,CAChD,yBAAkC,UAAc,CAEhD,kBAAkC,SAAc,CAChD,yBAAkC,SAAc,CCnBhD,WAMI,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMJ,CACA,mCAEI,iBACJ,CACA,+BACI,cAAqB,CACrB,WAAmB,CACnB,mBAAoB,CACpB,WACJ,CAGA,wBACI,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACJ,CACA,2CACI,OAAW,CACX,QACJ,CAEA,qBACI,eAAuB,CACvB,eAAsB,CACtB,0BAAoC,CACpC,kBAA2B,CAC3B,iBAA2B,CAC3B,YACJ,CAEA,2CAEI,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,6BAAuC,CACvC,iBACJ,CACA,kBACI,+CACJ,CACA,yBACI,+CACJ,CAEA,cACI,iBACI,YACJ,CACA,mIAEI,kBACJ,CACJ,CC9EA,MAGI,mBAAoB,CACpB,kBACJ,CACA,QACI,WAAY,CAAE,UAClB,CACA,sBACI,mBAAuB,CACvB,cAAsB,CACtB,OAAQ,CAAE,QAEd,CAEA,qCACI,qBAAsB,CACtB,8BAAgC,CAChC,mBACJ,CAEA,YACI,cAAsB,CACtB,qCAAsC,CACtC,sBAA6B,CAC7B,YAAoB,CACpB,kBACJ,CACA,cACI,WACJ,CACA,+BACI,iCAAsC,CACtC,4BAAwC,CACxC,uCAAwC,CAExC,0CAA4C,CAC5C,uBAAyB,CACzB,kCACJ,CAEA,WACI,eAAuB,CACvB,cAAsB,CAEtB,eAAgB,CAAE,kBAAmB,CACrC,cAAgB,CAAE,iBAAmB,CACrC,UAAqB,CACrB,+BAAoC,CACpC,iBAAqB,CACrB,mBAEJ,CACA,6DAFI,iBAIJ,CACA,wCACI,iBACJ,CACA,uCACI,kBACJ,CC9DA,QAOI,uCAAwC,CACxC,YACJ,CACA,cACI,iCAAoC,CACpC,cAAsB,CACtB,2CACJ,CAKA,qFAMI,qBACJ,CACA,wBACI,oBAAqB,CACrB,UACJ,CACA,gDACI,iBACJ,CASI,uCACC,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CACjC,CAQA,yBACI,2FAGC,CACD,aAAiB,CACjB,4CACJ,CACA,wBACI,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACJ,CACA,aAII,iDACI,iBACJ,CACJ,CAGA,oCAEI,sCACJ,CACA,wCAEI,0CACJ,CACA,0CAEI,4CACJ,CACA,0CAEI,4CACJ,CACA,4DAEI,gDACJ,CACA,4DAEI,gDACJ,CCvGA,6CACI,+BAAiC,CACjC,YAAgB,CAChB,yEACwD,CACxD,gCACJ,CACA,mDACI,SAAc,CACd,wBACJ","file":"chunk/game/offline.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/offline.js b/client/chunk/game/offline.js index 7013f564..2210698b 100644 --- a/client/chunk/game/offline.js +++ b/client/chunk/game/offline.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[755],{979:(e,t,r)=>{"use strict";r.d(t,{U:()=>h});var s,i=r(406),o=r(951),n=r(655);!function(e){var t,r;class s{constructor(){this.children=[]}reset(){this.inheritingWeightedHitCount=0,this.children.forEach((e=>e.reset()))}_finalize(){Object.freeze(this.children),this.children.forEach((e=>e._finalize()))}_addCharMapping(e,t){if(!o.Uo.Seq.REGEXP.test(e))throw new RangeError(`Mapping-sequence "${e}" did not match the required regular expression "${o.Uo.Seq.REGEXP.source}".`);if(0===t.length)throw new RangeError("never");let r=this;{let t=this;for(;t;)r=t,t=t.children.find((t=>e.startsWith(t.sequence)))}if(r.sequence===e)throw new Error(`Mappings for all written-characters with a commoncorresponding typeable-sequence should be registered together,but an existing mapping for the sequence "${e}" was found.`);r.children.push(new i(r,e,t))}getLeafNodes(){const e=[];return this._recursiveGetLeafNodes(e),e}_recursiveGetLeafNodes(e){this.children.length?this.children.forEach((t=>{t._recursiveGetLeafNodes(e)})):e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(e,t){const r=Object.values(e).reduce(((e,t)=>e+t.weight),0),i=0===t?e=>1:1===t?e=>e:e=>Math.pow(e/r,t),o=new Map;for(const t in e){const r=e[t].seq,s=new a(t,i(e[t].weight)),n=o.get(r);n?n.push(s):o.set(r,[s])}const n=new s;return Array.from(o).sort(((e,t)=>e[0].length-t[0].length)).forEach((e=>{n._addCharMapping(...e)})),n._finalize(),n}}s.LEAF_CMP=(e,t)=>e.inheritingWeightedHitCount-t.inheritingWeightedHitCount,e.ParentNode=s,Object.freeze(s),Object.freeze(s.prototype);class i extends s{constructor(e,s,i){super(),t.set(this,void 0),r.set(this,void 0),this.sequence=s,(0,n.YH)(this,r,i),(0,n.YH)(this,t,e)}_finalize(){Object.freeze((0,n.Q_)(this,r)),super._finalize()}reset(){super.reset(),(0,n.Q_)(this,r).forEach((e=>{e.reset(),this.incrementNumHits(e,Math.random()*o.Uo.CHAR_HIT_COUNT_SEED_CEILING)}))}chooseOnePair(){const e=(0,n.Q_)(this,r).slice(0).sort(a.CMP).shift(),t={char:e.char,seq:this.sequence};return this.incrementNumHits(e),t}incrementNumHits(e,t=1){e._incrementNumHits(),this._recursiveIncrementNumHits(e.weightInv*t)}_recursiveIncrementNumHits(e){this.inheritingWeightedHitCount+=e,this.children.forEach((t=>t._recursiveIncrementNumHits(e)))}get personalWeightedHitCount(){return this.inheritingWeightedHitCount-(0,n.Q_)(this,t).inheritingWeightedHitCount}andNonRootParents(){const e=[];for(let r=this;r instanceof i;r=(0,n.Q_)(r,t))e.push(r);return e}simpleView(){let e=(0,n.Q_)(this,r).map((e=>e.simpleView()));return Object.assign(Object.create(null),{seq:this.sequence,chars:1===e.length?e[0]:e,kids:this.children.map((e=>e.simpleView()))})}}t=new WeakMap,r=new WeakMap,i.PATH_CMP=(e,t)=>e.personalWeightedHitCount-t.personalWeightedHitCount,e.ChildNode=i,Object.freeze(i),Object.freeze(i.prototype)}(s||(s={})),Object.freeze(s);class a{constructor(e,t){if(t<=0)throw new RangeError(`All weights must be positive, but we were passed the value "${t}" for the character "${e}".`);this.char=e,this.weightInv=1/t}reset(){this.hitCount=0,this.weightedHitCount=0}_incrementNumHits(){this.hitCount+=1,this.weightedHitCount+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char,hits:this.hitCount})}}a.CMP=(e,t)=>e.weightedHitCount-t.weightedHitCount,Object.freeze(a),Object.freeze(a.prototype);class h extends o.Uo{constructor(e,t,r){if(super(),this.frontendDesc=h.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=s.ParentNode.CREATE_TREE_MAP(t,r),this.leafNodes=this.treeMap.getLeafNodes(),i.R.propNoWrite(this,["frontendDesc","treeMap","leafNodes"]),this.leafNodes.length!==this.frontendDesc.numLeaves)throw new Error(`maintenance required: the frontend constant for the language "${this.frontendDesc.id}" needs to be updated to the correct, computed value, which is \`${this.leafNodes.length}\`.`)}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(s.ParentNode.LEAF_CMP);let t=void 0;for(const r of this.leafNodes){const s=r.andNonRootParents();for(let t=0;te.startsWith(s[t].sequence)));if(r){r===s[t].sequence?s.length=0:s.splice(t);break}}if(s.length){t=s[0];for(const e of s)e.personalWeightedHitCount{"use strict";r.r(t),r.d(t,{OfflineGame:()=>_});var s=r(153),i=r(655),o=r(406),n=r(979),a=r(504),h=r(305),c=r(926);class l extends c.J5{constructor(e,t){if(super(e,t),e.gameType===a.l.Type.ONLINE)throw new TypeError("OnlineGames should be using regular Players instead.")}_notifyGameNowPlaying(){this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,r)=>{const s=r.familyId;return new e._Constructors[s](t,r)}}(l||(l={})),o.R.protoNoEnum(l,["movementContinue"]);var d=r(951);class u{constructor(e){const t=[];for(const r of e)t[r]=new u.Entry;this.entries=t,o.R.propNoWrite(this,["entries"])}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(d.J5.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(u||(u={})),Object.freeze(u),Object.freeze(u.prototype);var g,f,m,p,v=r(191),w=r(985),y=r(358),C=r(886);class E extends l{constructor(e,t){super(e,t),g.set(this,void 0),this.behaviour=Object.freeze(Object.assign({},E.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter((e=>e.id!==this.teamId)).flatMap((e=>e.members)),this.targetProximity=[...this.threatProximity],o.R.propNoWrite(this,["threatProximity","targetProximity","behaviour","grid"])}reset(e){super.reset(e),(0,i.YH)(this,g,this.coord)}moveTo(e){(0,i.YH)(this,g,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort(((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord)));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort(((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord))),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.health{w.r._Constructors=Object.freeze({EUCLID2:y.i.Grid,BEEHIVE:C.v.Grid}),Object.freeze(w.r),Object.freeze(w.r.prototype);{const e=l;e._Constructors=Object.freeze({CHASER:E}),Object.freeze(e),Object.freeze(e.prototype)}})();class b extends v.R{constructor(e,t,s){super(e,t,s),f.set(this,void 0),m.set(this,void 0),p.set(this,void 0),this.averageFreeHealth=s.averageFreeHealthPerTile*this.grid.area,this.averageFreeHealthPerTile=s.averageFreeHealthPerTile,this.healthCostOfBoost=a.l.K.HEALTH_COST_OF_BOOST(this.averageFreeHealthPerTile,this.grid.static.getDiameterOfLatticePatchHavingArea),(0,i.YH)(this,m,new Set),this.scoreInfo=new u(this.players.map((e=>e.playerId))),o.R.propNoWrite(this,["averageFreeHealth","averageFreeHealthPerTile","healthCostOfBoost","scoreInfo"]),(0,i.YH)(this,p,r(59)(`./${this.langFrontend.module}.ts`).then((e=>{const t=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),e[this.langFrontend.module]);this.lang=new t(s.langWeightExaggeration),o.R.propNoWrite(this,["lang"]);const r=this.grid.static.getAmbiguityThreshold();if(this.lang.numLeavessuper.reset}});return(0,i.mG)(this,void 0,void 0,(function*(){yield e.reset.call(this),(0,i.YH)(this,f,0),(0,i.Q_)(this,m).clear(),yield(0,i.Q_)(this,p),this.lang.reset(),this.grid.shuffledForEachTile((e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))})),this.teams.forEach((e=>e.reset()));const t=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((e,r)=>{e.members.forEach(((e,s)=>{e.reset(this.grid.tile.at(t[r][s]))}))})),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return l.of(this,e)}dryRunShuffleLangCharSeqAt(e,t=!1){e.setLangCharSeqPair(n.U.CharSeqPair.NULL);let r=this.grid.getDestsFromSourcesTo(e.coord).map((e=>e.langSeq));if(t){const e=n.U.CharSeqPair.NULL.seq;r=r.filter((t=>t!==e))}return this.lang.getNonConflictingChar(r)}get currentFreeHealth(){return(0,i.Q_)(this,f)}get freeHealthTiles(){return(0,i.Q_)(this,m)}dryRunSpawnFreeHealth(e){var t;let r=this.averageFreeHealth-this.currentFreeHealth;if(r<=0)return;const s=[];for(;r>0;){let i;do{i=this.grid.tile.at(this.grid.getRandomCoord())}while(i.isOccupied||s.find((e=>h.u.equals(i.coord,e.coord))));const o=a.l.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()h.u.equals(i.coord,e.coord))))?r.newFreeHealth=(null!==(t=r.newFreeHealth)&&void 0!==t?t:0)+o:s.push({coord:i.coord,lastKnownUpdateId:1+i.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:i.freeHealth+o})}r-=o}return s}executeTileModEvent(e,t=!0){Object.freeze(e);const r=this.grid.tile.at(e.coord);if(e.lastKnownUpdateId!==1+r.lastKnownUpdateId)throw new RangeError("never");return(0,i.YH)(this,f,(0,i.Q_)(this,f)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?(0,i.Q_)(this,m).delete(r):(0,i.Q_)(this,m).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if(this.status!==a.l.Status.PLAYING)return;const t=this.players[e.playerId];if(!t)throw new Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw new RangeError(e.playerLastAcceptedRequestId{var s={"./Emote.ts":[981,858],"./English.ts":[215,184],"./Japanese.ts":[117,410],"./Korean.ts":[181,227],"./Morse.ts":[222,285]};function i(e){if(!r.o(s,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=s[e],i=t[0];return r.e(t[1]).then((()=>r(i)))}i.keys=()=>Object.keys(s),i.id=59,e.exports=i}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[755],{979:(e,t,r)=>{"use strict";r.d(t,{U:()=>h});var s,i=r(406),o=r(951),n=r(655);!function(e){var t,r;class s{constructor(){this.children=[],i.R.propNoWrite(this,["children"])}reset(){this.children.forEach((e=>e.reset())),this.inheritingWeightedHitCount=0}_finalize(){Object.freeze(this.children),this.children.forEach((e=>e._finalize()))}_addCharMapping(e,t){if(!o.Uo.Seq.REGEXP.test(e))throw new RangeError(`Mapping-sequence "${e}" did not match the required regular expression "${o.Uo.Seq.REGEXP.source}".`);if(0===t.length)throw new RangeError("never");let r=this;{let t;for(;void 0!==(t=r.children.find((t=>e.startsWith(t.sequence))));)r=t}if(r.sequence===e)throw new Error(`Mappings for all written-characters with a commoncorresponding typeable-sequence should be registered together,but an existing mapping for the sequence "${e}" was found.`);r.children.push(new h(r,e,t))}getLeafNodes(){const e=[];return this._recursiveGetLeafNodes(e),e}_recursiveGetLeafNodes(e){this.children.length?this.children.forEach((t=>{t._recursiveGetLeafNodes(e)})):e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(e,t){const r=Object.values(e).reduce(((e,t)=>e+t.weight),0),i=0===t?e=>1:1===t?e=>e:e=>Math.pow(e/r,t),o=new Map;for(const t in e){const r=e[t].seq,s=new a(t,i(e[t].weight)),n=o.get(r);n?n.push(s):o.set(r,[s])}const n=new s;return Array.from(o).sort(((e,t)=>e[0].length-t[0].length)).forEach((e=>n._addCharMapping(...e))),n._finalize(),n}}s.LEAF_CMP=(e,t)=>e.inheritingWeightedHitCount-t.inheritingWeightedHitCount,e.ParentNode=s,i.R.protoNoEnum(s,["_finalize","_recursiveGetLeafNodes"]),Object.freeze(s),Object.freeze(s.prototype);class h extends s{constructor(e,s,o){super(),t.set(this,void 0),r.set(this,void 0),this.sequence=s,(0,n.YH)(this,r,o),(0,n.YH)(this,t,e),i.R.propNoWrite(this,["sequence"])}_finalize(){Object.freeze((0,n.Q_)(this,r)),super._finalize()}reset(){super.reset(),(0,n.Q_)(this,r).forEach((e=>{e.reset(),this.incrementNumHits(e,Math.random()*o.Uo.CHAR_HIT_COUNT_SEED_CEILING)}))}chooseOnePair(){let e=(0,n.Q_)(this,r)[0];for(const t of(0,n.Q_)(this,r))t.weightedHitCountt._recursiveIncrementNumHits(e)))}get personalWeightedHitCount(){return this.inheritingWeightedHitCount-(0,n.Q_)(this,t).inheritingWeightedHitCount}andNonRootParents(){const e=[];for(let r=this;r instanceof h;r=(0,n.Q_)(r,t))e.push(r);return e}simpleView(){let e=(0,n.Q_)(this,r).map((e=>e.simpleView()));return Object.assign(Object.create(null),{seq:this.sequence,chars:1===e.length?e[0]:e,kids:this.children.map((e=>e.simpleView()))})}}t=new WeakMap,r=new WeakMap,h.PATH_CMP=(e,t)=>e.personalWeightedHitCount-t.personalWeightedHitCount,e.ChildNode=h,i.R.protoNoEnum(h,["_finalize","_recursiveIncrementNumHits"]),Object.freeze(h),Object.freeze(h.prototype)}(s||(s={})),Object.freeze(s);class a{constructor(e,t){if(t<=0)throw new RangeError(`All weights must be positive, but we were passed the value "${t}" for the character "${e}".`);this.char=e,this.weightInv=1/t}reset(){this.hitCount=0,this.weightedHitCount=0}_incrementNumHits(){this.hitCount+=1,this.weightedHitCount+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char,hits:this.hitCount})}}a.CMP=(e,t)=>e.weightedHitCount-t.weightedHitCount,Object.freeze(a),Object.freeze(a.prototype);class h extends o.Uo{constructor(e,t,r){if(super(),this.frontendDesc=h.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=s.ParentNode.CREATE_TREE_MAP(t,r),this.leafNodes=this.treeMap.getLeafNodes(),i.R.propNoWrite(this,["frontendDesc","treeMap","leafNodes"]),this.leafNodes.length!==this.frontendDesc.numLeaves)throw new Error(`maintenance required: the frontend constant for the language "${this.frontendDesc.id}" needs to be updated to the correct, computed value, which is \`${this.leafNodes.length}\`.`)}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(s.ParentNode.LEAF_CMP);let t=void 0;for(const r of this.leafNodes){const s=r.andNonRootParents();for(let t=0;te.startsWith(s[t].sequence)));if(r){r===s[t].sequence?s.length=0:s.splice(t);break}}if(s.length){t=s[0];for(const e of s)e.personalWeightedHitCount{"use strict";r.r(t),r.d(t,{OfflineGame:()=>b});var s=r(153),i=r(655),o=r(406),n=r(979),a=r(504),h=r(305),c=r(926);class l extends c.J5{constructor(e,t){if(super(e,t),e.gameType===a.l.Type.ONLINE)throw new TypeError("OnlineGames should be using regular Players instead.")}_notifyGameNowPlaying(){this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,r)=>{const s=r.familyId;if(!Object.keys(e._Constructors).includes(s))throw new RangeError(s+" is not a valid artificial player family id.");return new e._Constructors[s](t,r)}}(l||(l={})),o.R.protoNoEnum(l,["movementContinue"]);var d=r(951);class u{constructor(e){const t=[];for(const r of e)t[r]=new u.Entry;this.entries=t,o.R.propNoWrite(this,["entries"])}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(d.J5.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(u||(u={})),Object.freeze(u),Object.freeze(u.prototype);var g,f,p,m,v=r(191),w=r(985),y=r(358),C=r(886);class E extends l{constructor(e,t){super(e,t),g.set(this,void 0),this.behaviour=Object.freeze(Object.assign({},E.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter((e=>e.id!==this.teamId)).flatMap((e=>e.members)),this.targetProximity=[...this.threatProximity],o.R.propNoWrite(this,["threatProximity","targetProximity","behaviour","grid"])}reset(e){super.reset(e),(0,i.YH)(this,g,this.coord)}moveTo(e){(0,i.YH)(this,g,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort(((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord)));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort(((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord))),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.health{w.r._Constructors=Object.freeze({EUCLID2:y.i.Grid,BEEHIVE:C.v.Grid}),Object.freeze(w.r),Object.freeze(w.r.prototype);{const e=l;e._Constructors=Object.freeze({CHASER:E}),Object.freeze(e),Object.freeze(e.prototype)}})();class _ extends v.R{constructor(e,t,s){super(e,t,s),f.set(this,void 0),p.set(this,void 0),m.set(this,void 0),this.averageFreeHealth=s.averageFreeHealthPerTile*this.grid.area,this.averageFreeHealthPerTile=s.averageFreeHealthPerTile,this.healthCostOfBoost=a.l.K.HEALTH_COST_OF_BOOST(this.averageFreeHealthPerTile,this.grid.static.getDiameterOfLatticePatchHavingArea),(0,i.YH)(this,p,new Set),this.scoreInfo=new u(this.players.map((e=>e.playerId))),o.R.propNoWrite(this,["averageFreeHealth","averageFreeHealthPerTile","healthCostOfBoost","scoreInfo"]),(0,i.YH)(this,m,r(59)(`./${this.langFrontend.module}.ts`).then((e=>{const t=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),e[this.langFrontend.module]);this.lang=new t(s.langWeightExaggeration),o.R.propNoWrite(this,["lang"]);const r=this.grid.static.getAmbiguityThreshold();if(this.lang.numLeavessuper.reset}});return(0,i.mG)(this,void 0,void 0,(function*(){yield e.reset.call(this),(0,i.YH)(this,f,0),(0,i.Q_)(this,p).clear(),yield(0,i.Q_)(this,m),this.lang.reset(),this.grid.shuffledForEachTile((e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))})),this.teams.forEach((e=>e.reset()));const t=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((e,r)=>{e.members.forEach(((e,s)=>{e.reset(this.grid.tile.at(t[r][s]))}))})),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return l.of(this,e)}dryRunShuffleLangCharSeqAt(e,t=!1){e.setLangCharSeqPair(n.U.CharSeqPair.NULL);let r=this.grid.getDestsFromSourcesTo(e.coord).map((e=>e.langSeq));if(t){const e=n.U.CharSeqPair.NULL.seq;r=r.filter((t=>t!==e))}return this.lang.getNonConflictingChar(r)}get currentFreeHealth(){return(0,i.Q_)(this,f)}get freeHealthTiles(){return(0,i.Q_)(this,p)}dryRunSpawnFreeHealth(e){var t;let r=this.averageFreeHealth-this.currentFreeHealth;if(r<=0)return;const s=[];for(;r>0;){let i;do{i=this.grid.tile.at(this.grid.getRandomCoord())}while(i.isOccupied||s.find((e=>h.u.equals(i.coord,e.coord))));const o=a.l.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()h.u.equals(i.coord,e.coord))))?r.newFreeHealth=(null!==(t=r.newFreeHealth)&&void 0!==t?t:0)+o:s.push({coord:i.coord,lastKnownUpdateId:1+i.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:i.freeHealth+o})}r-=o}return s}executeTileModEvent(e,t=!0){Object.freeze(e);const r=this.grid.tile.at(e.coord);if(e.lastKnownUpdateId!==1+r.lastKnownUpdateId)throw new RangeError("never");return(0,i.YH)(this,f,(0,i.Q_)(this,f)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?(0,i.Q_)(this,p).delete(r):(0,i.Q_)(this,p).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if(this.status!==a.l.Status.PLAYING)return;const t=this.players[e.playerId];if(!t)throw new Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw new RangeError(e.playerLastAcceptedRequestId{var s={"./Emote.ts":[981,858],"./English.ts":[215,184],"./Japanese.ts":[117,410],"./Korean.ts":[181,227],"./Morse.ts":[222,285]};function i(e){if(!r.o(s,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=s[e],i=t[0];return r.e(t[1]).then((()=>r(i)))}i.keys=()=>Object.keys(s),i.id=59,e.exports=i}}]); //# sourceMappingURL=offline.js.map \ No newline at end of file diff --git a/client/chunk/game/offline.js.map b/client/chunk/game/offline.js.map index d3357181..38fb5350 100644 --- a/client/chunk/game/offline.js.map +++ b/client/chunk/game/offline.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/LangSeqTreeNode.ts","webpack://snakey3/./src/base/lang/Lang.ts","webpack://snakey3/./src/base/game/player/ArtificialPlayer.ts","webpack://snakey3/./src/base/game/ScoreInfo.ts","webpack://snakey3/./src/base/game/player/artificials/Chaser.ts","webpack://snakey3/./src/base/game/ctormaps/CmapManager.ts","webpack://snakey3/./src/base/game/gameparts/GamepartManager.ts","webpack://snakey3/./src/client/game/OfflineGame.ts","webpack://snakey3/./src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object"],"names":["LangSeqTree","ParentNode","this","children","inheritingWeightedHitCount","forEach","child","reset","Object","freeze","_finalize","seq","chars","RangeError","length","node","childNode","find","startsWith","sequence","Error","push","ChildNode","leafNodes","_recursiveGetLeafNodes","forwardDict","weightScaling","averageWeight","values","reduce","sum","next","weight","adjustedWeight","originalWeight","Math","pow","reverseDict","Map","char","weightedChar","WeightedLangChar","charArray","get","set","rootNode","Array","from","sort","mappingA","mappingB","mapping","_addCharMapping","LEAF_CMP","a","b","prototype","parent","characters","super","incrementNumHits","random","slice","CMP","shift","pair","wCharToHit","numTimes","_incrementNumHits","_recursiveIncrementNumHits","weightInv","upstreamNodes","map","simpleView","assign","create","kids","PATH_CMP","personalWeightedHitCount","hitCount","weightedHitCount","hits","Lang","frontendDescId","weightExaggeration","frontendDesc","GET_FRONTEND_DESC_BY_ID","treeMap","CREATE_TREE_MAP","getLeafNodes","JsUtils","numLeaves","id","avoid","nodeToHit","undefined","leaf","andNonRootParents","i","conflictSeq","avoidSeq","splice","chooseOnePair","displayName","root","ArtificialPlayer","Player","game","desc","gameType","Game","TypeError","delayedMovementContinue","cancelTimeout","_scheduledMovementCallbackId","desiredDest","computeDesiredDest","_nextMovementTimerMultiplier","grid","tile","at","langSeq","makeMovementRequest","getUntToward","coord","getNextMoveType","setTimeout","movementContinue","bind","computeNextMovementTimer","of","playerDesc","familyId","_Constructors","ScoreInfo","playerIds","entries","Entry","entry","moveCounts","totalHealthPickedUp","getOwnPropertyNames","key","Chaser","behaviour","Behaviour","DEFAULT","familyArgs","_afterAllPlayersConstruction","threatProximity","teams","filter","team","teamId","flatMap","members","targetProximity","spawnTile","dest","moveTo","pa","pb","minMovesFromTo","threatP","fearDistance","status","isDowned","health","getUntAwayFrom","targetP","bloodThirstDistance","healthReserve","freeHealthTiles","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Grid","Euclid2","Beehive","AP","CHASER","GamepartManager","GamepartEvents","impl","averageFreeHealth","averageFreeHealthPerTile","area","healthCostOfBoost","static","getDiameterOfLatticePatchHavingArea","Set","scoreInfo","players","player","playerId","langFrontend","module","then","langModule","LangConstructor","export","split","nsps","propName","lang","langWeightExaggeration","minLangLeaves","getAmbiguityThreshold","clear","shuffledForEachTile","setLangCharSeqPair","dryRunShuffleLangCharSeqAt","spawnPoints","getSpawnCoords","dimensions","teamIndex","member","memberIndex","Promise","resolve","targetTile","doCheckEmptyTiles","getDestsFromSourcesTo","nullSeq","getNonConflictingChar","sameReqOtherModDescs","healthToSpawn","currentFreeHealth","retval","getRandomCoord","isOccupied","Coord","tileHealthToAdd","otherDesc","newFreeHealth","lastKnownUpdateId","newCharSeqPair","freeHealth","doCheckOperatorSeqBuffer","delete","add","executeTileModEvent","playerLastAcceptedRequestId","lastAcceptedRequestId","managerCheckGamePlayingRequest","executePlayerMoveEvent","destModDesc","moveIsBoost","moveType","newPlayerHealthValue","playerScoreInfo","newPlayerHealth","tileHealthModDescs","dryRunSpawnFreeHealth","eventId","nextUnusedEventId","sourceP","bubbler","executePlayerBubbleEvent","CHECK_VALID_CTOR_ARGS","args","fr","requiredFields","coordSys","gridDimensions","langId","playerDescs","missingFields","fieldName","field","NaN","parseInt","max","parseFloat","OfflineGame","onGameBecomeOver","gameDesc","tileClass","playerStatusCtor","_ctorBrowserGame","callback","millis","handle","clearTimeout","BrowserGame","webpackAsyncContext","req","__webpack_require__","o","e","code","ids","keys","exports"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/LangSeqTreeNode.ts","webpack://snakey3/./src/base/lang/Lang.ts","webpack://snakey3/./src/base/game/player/ArtificialPlayer.ts","webpack://snakey3/./src/base/game/ScoreInfo.ts","webpack://snakey3/./src/base/game/player/artificials/Chaser.ts","webpack://snakey3/./src/base/game/ctormaps/CmapManager.ts","webpack://snakey3/./src/base/game/gameparts/GamepartManager.ts","webpack://snakey3/./src/client/game/OfflineGame.ts","webpack://snakey3/./src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object"],"names":["LangSeqTree","ParentNode","this","children","JsUtils","forEach","child","reset","inheritingWeightedHitCount","Object","freeze","_finalize","seq","chars","RangeError","length","node","childNode","undefined","find","startsWith","sequence","Error","push","ChildNode","leafNodes","_recursiveGetLeafNodes","forwardDict","weightScaling","averageWeight","values","reduce","sum","next","weight","scaleWeight","originalWeight","Math","pow","reverseDict","Map","char","weightedChar","WeightedLangChar","charArray","get","set","rootNode","Array","from","sort","mappingA","mappingB","args","_addCharMapping","LEAF_CMP","a","b","prototype","parent","characters","super","incrementNumHits","random","otherWeightedChar","weightedHitCount","pair","wCharToHit","numTimes","_incrementNumHits","_recursiveIncrementNumHits","weightInv","upstreamNodes","map","simpleView","assign","create","kids","PATH_CMP","personalWeightedHitCount","hitCount","hits","CMP","Lang","frontendDescId","weightExaggeration","frontendDesc","GET_FRONTEND_DESC_BY_ID","treeMap","CREATE_TREE_MAP","getLeafNodes","numLeaves","id","avoid","nodeToHit","leaf","andNonRootParents","i","conflictSeq","avoidSeq","splice","chooseOnePair","displayName","root","ArtificialPlayer","Player","game","desc","gameType","Game","TypeError","delayedMovementContinue","cancelTimeout","_scheduledMovementCallbackId","desiredDest","computeDesiredDest","_nextMovementTimerMultiplier","grid","tile","at","langSeq","makeMovementRequest","getUntToward","coord","getNextMoveType","setTimeout","movementContinue","bind","computeNextMovementTimer","of","playerDesc","familyId","keys","_Constructors","includes","ScoreInfo","playerIds","entries","Entry","entry","moveCounts","totalHealthPickedUp","getOwnPropertyNames","key","Chaser","behaviour","Behaviour","DEFAULT","familyArgs","_afterAllPlayersConstruction","threatProximity","teams","filter","team","teamId","flatMap","members","targetProximity","spawnTile","dest","moveTo","pa","pb","minMovesFromTo","threatP","fearDistance","status","isDowned","health","getUntAwayFrom","targetP","bloodThirstDistance","healthReserve","freeHealthTiles","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Grid","Euclid2","Beehive","AP","GamepartManager","GamepartEvents","impl","averageFreeHealth","averageFreeHealthPerTile","area","healthCostOfBoost","static","getDiameterOfLatticePatchHavingArea","Set","scoreInfo","players","player","playerId","langFrontend","module","then","langModule","LangConstructor","export","split","nsps","propName","lang","langWeightExaggeration","minLangLeaves","getAmbiguityThreshold","clear","shuffledForEachTile","setLangCharSeqPair","dryRunShuffleLangCharSeqAt","spawnPoints","getSpawnCoords","dimensions","teamIndex","member","memberIndex","Promise","resolve","targetTile","doCheckEmptyTiles","getDestsFromSourcesTo","nullSeq","getNonConflictingChar","sameReqOtherModDescs","healthToSpawn","currentFreeHealth","retval","getRandomCoord","isOccupied","Coord","tileHealthToAdd","otherDesc","newFreeHealth","lastKnownUpdateId","newCharSeqPair","freeHealth","doCheckOperatorSeqBuffer","delete","add","executeTileModEvent","playerLastAcceptedRequestId","lastAcceptedRequestId","managerCheckGamePlayingRequest","executePlayerMoveEvent","destModDesc","moveIsBoost","moveType","newPlayerHealthValue","playerScoreInfo","newPlayerHealth","tileHealthModDescs","dryRunSpawnFreeHealth","eventId","nextUnusedEventId","sourceP","bubbler","executePlayerBubbleEvent","CHECK_VALID_CTOR_ARGS","fr","requiredFields","coordSys","gridDimensions","langId","playerDescs","missingFields","fieldName","field","NaN","parseInt","max","parseFloat","OfflineGame","onGameBecomeOver","gameDesc","tileClass","playerStatusCtor","_ctorBrowserGame","callback","millis","handle","clearTimeout","BrowserGame","webpackAsyncContext","req","__webpack_require__","o","e","code","ids","exports"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/online.css.map b/client/chunk/game/online.css.map index 468c22cd..3db85e1f 100644 --- a/client/chunk/game/online.css.map +++ b/client/chunk/game/online.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/assets/style/game/zindex.css","webpack://snakey3/assets/style/game/grid.css","webpack://snakey3/assets/style/game/tile.css","webpack://snakey3/assets/style/game/player.css","webpack://snakey3/assets/style/game/coordsys/euclid2.css"],"names":[],"mappings":"AAUA,qBAAkC,SAAc,CAChD,4BAAkC,UAAc,CAChD,wBAAkC,UAAc,CAChD,WAAkC,UAAc,CAChD,wBAAkC,UAAc,CAEhD,6CAAkC,UAAc,CAChD,yBAAkC,UAAc,CAEhD,kBAAkC,SAAc,CAChD,yBAAkC,SAAc,CCnBhD,WAMI,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMJ,CACA,mCAEI,iBACJ,CACA,+BACI,cAAqB,CACrB,WAAmB,CACnB,mBAAoB,CACpB,WACJ,CAGA,wBACI,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACJ,CACA,2CACI,OAAW,CACX,QACJ,CAEA,qBACI,eAAuB,CACvB,eAAsB,CACtB,0BAAoC,CACpC,kBAA2B,CAC3B,iBAA2B,CAC3B,YACJ,CAEA,2CAEI,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,6BAAuC,CACvC,iBACJ,CACA,kBACI,+CACJ,CACA,yBACI,+CACJ,CAEA,cACI,iBACI,YACJ,CACA,mIAEI,kBACJ,CACJ,CC9EA,MAGI,mBAAoB,CACpB,kBACJ,CACA,QACI,WAAY,CAAE,UAClB,CACA,sBACI,mBAAuB,CACvB,cAAsB,CACtB,OAAQ,CAAE,QAEd,CAEA,qCACI,qBAAsB,CACtB,8BAAgC,CAChC,mBACJ,CAEA,YACI,cAAsB,CACtB,qCAAsC,CACtC,sBAA6B,CAC7B,YAAoB,CACpB,kBACJ,CACA,cACI,WACJ,CACA,+BACI,iCAAsC,CACtC,4BAAwC,CACxC,uCAAwC,CAExC,0CAA4C,CAC5C,uBAAyB,CACzB,kCACJ,CAEA,WACI,eAAuB,CACvB,cAAsB,CAEtB,eAAgB,CAAE,kBAAmB,CACrC,cAAgB,CAAE,iBAAmB,CACrC,UAAqB,CACrB,+BAAoC,CACpC,iBAAqB,CACrB,mBAEJ,CACA,6DAFI,iBAIJ,CACA,wCACI,iBACJ,CACA,uCACI,kBACJ,CC9DA,QAOI,uCAAwC,CACxC,YACJ,CACA,cACI,iCAAoC,CACpC,cAAsB,CACtB,2CACJ,CAKA,qFAMI,qBACJ,CACA,wBACI,oBAAqB,CACrB,UACJ,CACA,gDACI,iBACJ,CASI,uCACC,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CACjC,CAQA,yBACI,2FAGC,CACD,aAAiB,CACjB,4CACJ,CACA,wBACI,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACJ,CACA,aAII,iDACI,iBACJ,CACJ,CAGA,oCAEI,sCACJ,CACA,wCAEI,0CACJ,CACA,0CAEI,4CACJ,CACA,0CAEI,4CACJ,CACA,4DAEI,gDACJ,CACA,4DAEI,gDACJ,CCvGA,6CACI,+BAAiC,CACjC,YAAgB,CAChB,yEACwD,CACxD,gCACJ,CACA,mDACI,SAAc,CACd,wBACJ","file":"chunk/game/online.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./assets/style/game/zindex.css","webpack://snakey3/./assets/style/game/grid.css","webpack://snakey3/./assets/style/game/tile.css","webpack://snakey3/./assets/style/game/player.css","webpack://snakey3/./assets/style/game/coordsys/euclid2.css"],"names":[],"mappings":"AAUA,qBAAkC,SAAc,CAChD,4BAAkC,UAAc,CAChD,wBAAkC,UAAc,CAChD,WAAkC,UAAc,CAChD,wBAAkC,UAAc,CAEhD,6CAAkC,UAAc,CAChD,yBAAkC,UAAc,CAEhD,kBAAkC,SAAc,CAChD,yBAAkC,SAAc,CCnBhD,WAMI,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMJ,CACA,mCAEI,iBACJ,CACA,+BACI,cAAqB,CACrB,WAAmB,CACnB,mBAAoB,CACpB,WACJ,CAGA,wBACI,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACJ,CACA,2CACI,OAAW,CACX,QACJ,CAEA,qBACI,eAAuB,CACvB,eAAsB,CACtB,0BAAoC,CACpC,kBAA2B,CAC3B,iBAA2B,CAC3B,YACJ,CAEA,2CAEI,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,6BAAuC,CACvC,iBACJ,CACA,kBACI,+CACJ,CACA,yBACI,+CACJ,CAEA,cACI,iBACI,YACJ,CACA,mIAEI,kBACJ,CACJ,CC9EA,MAGI,mBAAoB,CACpB,kBACJ,CACA,QACI,WAAY,CAAE,UAClB,CACA,sBACI,mBAAuB,CACvB,cAAsB,CACtB,OAAQ,CAAE,QAEd,CAEA,qCACI,qBAAsB,CACtB,8BAAgC,CAChC,mBACJ,CAEA,YACI,cAAsB,CACtB,qCAAsC,CACtC,sBAA6B,CAC7B,YAAoB,CACpB,kBACJ,CACA,cACI,WACJ,CACA,+BACI,iCAAsC,CACtC,4BAAwC,CACxC,uCAAwC,CAExC,0CAA4C,CAC5C,uBAAyB,CACzB,kCACJ,CAEA,WACI,eAAuB,CACvB,cAAsB,CAEtB,eAAgB,CAAE,kBAAmB,CACrC,cAAgB,CAAE,iBAAmB,CACrC,UAAqB,CACrB,+BAAoC,CACpC,iBAAqB,CACrB,mBAEJ,CACA,6DAFI,iBAIJ,CACA,wCACI,iBACJ,CACA,uCACI,kBACJ,CC9DA,QAOI,uCAAwC,CACxC,YACJ,CACA,cACI,iCAAoC,CACpC,cAAsB,CACtB,2CACJ,CAKA,qFAMI,qBACJ,CACA,wBACI,oBAAqB,CACrB,UACJ,CACA,gDACI,iBACJ,CASI,uCACC,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CACjC,CAQA,yBACI,2FAGC,CACD,aAAiB,CACjB,4CACJ,CACA,wBACI,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACJ,CACA,aAII,iDACI,iBACJ,CACJ,CAGA,oCAEI,sCACJ,CACA,wCAEI,0CACJ,CACA,0CAEI,4CACJ,CACA,0CAEI,4CACJ,CACA,4DAEI,gDACJ,CACA,4DAEI,gDACJ,CCvGA,6CACI,+BAAiC,CACjC,YAAgB,CAChB,yEACwD,CACxD,gCACJ,CACA,mDACI,SAAc,CACd,wBACJ","file":"chunk/game/online.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/online.js.map b/client/chunk/game/online.js.map index bac80ae1..ef372e95 100644 --- a/client/chunk/game/online.js.map +++ b/client/chunk/game/online.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","onGameBecomeOver","gameSocket","gameDesc","super","tileClass","playerStatusCtor","this","socket","_ctorBrowserGame","hasListeners","Error","on","executePlayerMoveEvent","bind","executePlayerBubbleEvent","off","ser","reset","deserializeResetState","emit","desc","Object","freeze","prototype"],"mappings":"iLAkBO,MAAMA,UACL,IAsBJ,YACIC,EACAC,EACAC,GAYA,GAVAC,MACI,iBAAkB,CAClBH,mBACAI,UAAW,KACXC,iBAAkB,MACfH,GAEPI,KAAKC,OAASN,EACdK,KAAKE,mBAEDF,KAAKC,OAAOE,aAAa,yBAAwC,MAAM,IAAIC,MAAM,SAKrF,GAJAJ,KAAKC,OAAOI,GACR,wBACAL,KAAKM,uBAAuBC,KAAKP,OAEjCA,KAAKC,OAAOE,aAAa,uBAAsC,MAAM,IAAIC,MAAM,SAOnF,GANAJ,KAAKC,OAAOI,GACR,sBACAL,KAAKQ,yBAAyBD,KAAKP,OAGvCA,KAAKC,OAAOQ,IAAI,YACZT,KAAKC,OAAOE,aAAa,YAAe,MAAM,IAAIC,MAAM,SAC5DJ,KAAKC,OAAOI,GACR,YACOK,IAA0B,8CACvBV,KAAKW,QACXX,KAAKY,sBAAsBF,GAG3BV,KAAKC,OAAOY,KAAK,mBAGzBb,KAAKC,OAAOY,KAAK,YAWX,mBAAmBC,GACzB,OAAO,IAAI,KAAOd,KAAMc,GAWrB,mBAAmBA,GACtBd,KAAKC,OAAOY,KAAK,wBAAuCC,GAUrD,qBAAqBA,GACxBd,KAAKC,OAAOY,KAAK,sBAAqCC,IAI9D,iBAAoBrB,EAAY,CAAC,OACjCsB,OAAOC,OAAOvB,GACdsB,OAAOC,OAAOvB,EAAWwB","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","onGameBecomeOver","gameSocket","gameDesc","super","tileClass","playerStatusCtor","this","socket","_ctorBrowserGame","hasListeners","Error","on","executePlayerMoveEvent","bind","executePlayerBubbleEvent","off","ser","reset","deserializeResetState","emit","desc","Object","freeze","prototype"],"mappings":"iLAmBO,MAAMA,UACL,IAsBJ,YACIC,EACAC,EACAC,GAYA,GAVAC,MACI,iBAAkB,CAClBH,mBACAI,UAAW,KACXC,iBAAkB,MACfH,GAEPI,KAAKC,OAASN,EACdK,KAAKE,mBAEDF,KAAKC,OAAOE,aAAa,yBAAwC,MAAM,IAAIC,MAAM,SAKrF,GAJAJ,KAAKC,OAAOI,GACR,wBACAL,KAAKM,uBAAuBC,KAAKP,OAEjCA,KAAKC,OAAOE,aAAa,uBAAsC,MAAM,IAAIC,MAAM,SAOnF,GANAJ,KAAKC,OAAOI,GACR,sBACAL,KAAKQ,yBAAyBD,KAAKP,OAGvCA,KAAKC,OAAOQ,IAAI,YACZT,KAAKC,OAAOE,aAAa,YAAe,MAAM,IAAIC,MAAM,SAC5DJ,KAAKC,OAAOI,GACR,YACOK,IAA0B,8CACvBV,KAAKW,QACXX,KAAKY,sBAAsBF,GAG3BV,KAAKC,OAAOY,KAAK,mBAGzBb,KAAKC,OAAOY,KAAK,YAWX,mBAAmBC,GACzB,OAAO,IAAI,KAAOd,KAAMc,GAWrB,mBAAmBA,GACtBd,KAAKC,OAAOY,KAAK,wBAAuCC,GAUrD,qBAAqBA,GACxBd,KAAKC,OAAOY,KAAK,sBAAqCC,IAI9D,iBAAoBrB,EAAY,CAAC,OACjCsB,OAAOC,OAAOvB,GACdsB,OAAOC,OAAOvB,EAAWwB","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js b/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js deleted file mode 100644 index 363f121b..00000000 --- a/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * ATTENTION: An "eval-source-map" devtool has been used. - * This devtool is not neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunksnakey3"] = self["webpackChunksnakey3"] || []).push([["src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts"],{ - -/***/ "./assets/style/game/_barrel.css": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvc3R5bGUvZ2FtZS9fYmFycmVsLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9hc3NldHMvc3R5bGUvZ2FtZS9fYmFycmVsLmNzcz8yODdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IjtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/style/game/_barrel.css\n"); - -/***/ }), - -/***/ "./src/base/floor/Coord.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Coord\": () => /* binding */ Coord\n/* harmony export */ });\n/**\r\n *\r\n */\r\nvar Coord;\r\n(function (Coord) {\r\n let System;\r\n (function (System) {\r\n System[\"EUCLID2\"] = \"EUCLID2\";\r\n System[\"BEEHIVE\"] = \"BEEHIVE\";\r\n })(System = Coord.System || (Coord.System = {}));\r\n // ==============================================================\r\n // Note: The below exports do not require any modifications with\r\n // the additions of new coordinate systems.\r\n // ==============================================================\r\n /**\r\n * Helper function to abstract away some TypeScript casting due to\r\n * the complexity of inheritance and mapped types.\r\n */\r\n function equals(a, b) {\r\n return a._equals(b);\r\n }\r\n Coord.equals = equals;\r\n // Object.freeze(Abstract);\r\n // Object.freeze(Abstract.prototype);\r\n})(Coord || (Coord = {}));\r\nObject.freeze(Coord);\r\n// No prototype to freeze.\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9Db29yZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9mbG9vci9Db29yZC50cz82NDNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IHZhciBDb29yZDtcclxuKGZ1bmN0aW9uIChDb29yZCkge1xyXG4gICAgbGV0IFN5c3RlbTtcclxuICAgIChmdW5jdGlvbiAoU3lzdGVtKSB7XHJcbiAgICAgICAgU3lzdGVtW1wiRVVDTElEMlwiXSA9IFwiRVVDTElEMlwiO1xyXG4gICAgICAgIFN5c3RlbVtcIkJFRUhJVkVcIl0gPSBcIkJFRUhJVkVcIjtcclxuICAgIH0pKFN5c3RlbSA9IENvb3JkLlN5c3RlbSB8fCAoQ29vcmQuU3lzdGVtID0ge30pKTtcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvLyBOb3RlOiBUaGUgYmVsb3cgZXhwb3J0cyBkbyBub3QgcmVxdWlyZSBhbnkgbW9kaWZpY2F0aW9ucyB3aXRoXHJcbiAgICAvLyB0aGUgYWRkaXRpb25zIG9mIG5ldyBjb29yZGluYXRlIHN5c3RlbXMuXHJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gYWJzdHJhY3QgYXdheSBzb21lIFR5cGVTY3JpcHQgY2FzdGluZyBkdWUgdG9cclxuICAgICAqIHRoZSBjb21wbGV4aXR5IG9mIGluaGVyaXRhbmNlIGFuZCBtYXBwZWQgdHlwZXMuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGVxdWFscyhhLCBiKSB7XHJcbiAgICAgICAgcmV0dXJuIGEuX2VxdWFscyhiKTtcclxuICAgIH1cclxuICAgIENvb3JkLmVxdWFscyA9IGVxdWFscztcclxuICAgIC8vIE9iamVjdC5mcmVlemUoQWJzdHJhY3QpO1xyXG4gICAgLy8gT2JqZWN0LmZyZWV6ZShBYnN0cmFjdC5wcm90b3R5cGUpO1xyXG59KShDb29yZCB8fCAoQ29vcmQgPSB7fSkpO1xyXG5PYmplY3QuZnJlZXplKENvb3JkKTtcclxuLy8gTm8gcHJvdG90eXBlIHRvIGZyZWV6ZS5cclxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/Coord.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/Grid.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Grid\": () => /* binding */ Grid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _TileGetter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/TileGetter.ts\");\n\r\n\r\n/**\r\n * # 🗺 The Grid Class\r\n *\r\n * A Collection of Tiles.\r\n */\r\nclass Grid {\r\n /**\r\n * Protected. See `Grid.getImplementation` for how to access class\r\n * literals for construction.\r\n *\r\n * @param desc -\r\n */\r\n constructor(desc) {\r\n this.static = desc.gridClass;\r\n this.dimensions = desc.dimensions;\r\n this.tile = new _TileGetter__WEBPACK_IMPORTED_MODULE_1__.TileGetter(this);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"static\", \"dimensions\", \"tile\"]);\r\n }\r\n get area() {\r\n return this.static.getArea(this.dimensions);\r\n }\r\n /**\r\n * Calls {@link Tile#reset} for each {@link Tile} in this `Grid`.\r\n */\r\n reset() {\r\n this.forEachTile((tile) => tile.reset());\r\n }\r\n /**\r\n * This action is commonly performed by the GameManager when\r\n * shuffling in new CSP's to its grid. Grid implementations are\r\n * encouraged to override it if they have a more efficient way to\r\n * produce the same result.\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return Array.from(new Set(this.tile.sourcesTo(originCoord).get\r\n .flatMap((sourceToTarget) => this.tile.destsFrom(sourceToTarget.coord).get)));\r\n }\r\n getRandomCoord() {\r\n return this.static.getRandomCoord(this.dimensions);\r\n }\r\n}\r\n(function (Grid) {\r\n ;\r\n /**\r\n * @returns\r\n * A Grid class for the specified coordinate system.\r\n *\r\n * @param coordSys -\r\n */\r\n Grid.getImplementation = (coordSys) => {\r\n // Note: At the time of writing this, separating this into\r\n // two lines is necessary (otherwise Typescript will feel\r\n // overwhelmed)\r\n const ctor = Grid._Constructors[coordSys];\r\n return ctor;\r\n };\r\n})(Grid || (Grid = {}));\r\n// Grid gets frozen in PostInit after _Constructors get initialized.\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9HcmlkLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL0dyaWQudHM/YmY3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5pbXBvcnQgeyBUaWxlR2V0dGVyIH0gZnJvbSBcIi4vVGlsZUdldHRlclwiO1xyXG4vKipcclxuICogIyDwn5e6IFRoZSBHcmlkIENsYXNzXHJcbiAqXHJcbiAqIEEgQ29sbGVjdGlvbiBvZiBUaWxlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcmlkIHtcclxuICAgIC8qKlxyXG4gICAgICogUHJvdGVjdGVkLiBTZWUgYEdyaWQuZ2V0SW1wbGVtZW50YXRpb25gIGZvciBob3cgdG8gYWNjZXNzIGNsYXNzXHJcbiAgICAgKiBsaXRlcmFscyBmb3IgY29uc3RydWN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXNjIC1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgIHRoaXMuc3RhdGljID0gZGVzYy5ncmlkQ2xhc3M7XHJcbiAgICAgICAgdGhpcy5kaW1lbnNpb25zID0gZGVzYy5kaW1lbnNpb25zO1xyXG4gICAgICAgIHRoaXMudGlsZSA9IG5ldyBUaWxlR2V0dGVyKHRoaXMpO1xyXG4gICAgICAgIEpzVXRpbHMucHJvcE5vV3JpdGUodGhpcywgW1wic3RhdGljXCIsIFwiZGltZW5zaW9uc1wiLCBcInRpbGVcIl0pO1xyXG4gICAgfVxyXG4gICAgZ2V0IGFyZWEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljLmdldEFyZWEodGhpcy5kaW1lbnNpb25zKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbHMge0BsaW5rIFRpbGUjcmVzZXR9IGZvciBlYWNoIHtAbGluayBUaWxlfSBpbiB0aGlzIGBHcmlkYC5cclxuICAgICAqL1xyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JFYWNoVGlsZSgodGlsZSkgPT4gdGlsZS5yZXNldCgpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBhY3Rpb24gaXMgY29tbW9ubHkgcGVyZm9ybWVkIGJ5IHRoZSBHYW1lTWFuYWdlciB3aGVuXHJcbiAgICAgKiBzaHVmZmxpbmcgaW4gbmV3IENTUCdzIHRvIGl0cyBncmlkLiBHcmlkIGltcGxlbWVudGF0aW9ucyBhcmVcclxuICAgICAqIGVuY291cmFnZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBoYXZlIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvXHJcbiAgICAgKiBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdC5cclxuICAgICAqL1xyXG4gICAgZ2V0RGVzdHNGcm9tU291cmNlc1RvKG9yaWdpbkNvb3JkKSB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLnRpbGUuc291cmNlc1RvKG9yaWdpbkNvb3JkKS5nZXRcclxuICAgICAgICAgICAgLmZsYXRNYXAoKHNvdXJjZVRvVGFyZ2V0KSA9PiB0aGlzLnRpbGUuZGVzdHNGcm9tKHNvdXJjZVRvVGFyZ2V0LmNvb3JkKS5nZXQpKSk7XHJcbiAgICB9XHJcbiAgICBnZXRSYW5kb21Db29yZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWMuZ2V0UmFuZG9tQ29vcmQodGhpcy5kaW1lbnNpb25zKTtcclxuICAgIH1cclxufVxyXG4oZnVuY3Rpb24gKEdyaWQpIHtcclxuICAgIDtcclxuICAgIC8qKlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqIEEgR3JpZCBjbGFzcyBmb3IgdGhlIHNwZWNpZmllZCBjb29yZGluYXRlIHN5c3RlbS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29vcmRTeXMgLVxyXG4gICAgICovXHJcbiAgICBHcmlkLmdldEltcGxlbWVudGF0aW9uID0gKGNvb3JkU3lzKSA9PiB7XHJcbiAgICAgICAgLy8gTm90ZTogQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBzZXBhcmF0aW5nIHRoaXMgaW50b1xyXG4gICAgICAgIC8vIHR3byBsaW5lcyBpcyBuZWNlc3NhcnkgKG90aGVyd2lzZSBUeXBlc2NyaXB0IHdpbGwgZmVlbFxyXG4gICAgICAgIC8vIG92ZXJ3aGVsbWVkKVxyXG4gICAgICAgIGNvbnN0IGN0b3IgPSBHcmlkLl9Db25zdHJ1Y3RvcnNbY29vcmRTeXNdO1xyXG4gICAgICAgIHJldHVybiBjdG9yO1xyXG4gICAgfTtcclxufSkoR3JpZCB8fCAoR3JpZCA9IHt9KSk7XHJcbi8vIEdyaWQgZ2V0cyBmcm96ZW4gaW4gUG9zdEluaXQgYWZ0ZXIgX0NvbnN0cnVjdG9ycyBnZXQgaW5pdGlhbGl6ZWQuXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/Grid.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/Tile.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Tile\": () => /* binding */ Tile\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\nvar _occupantId, _freeHealth, _langChar, _langSeq;\r\n\r\n\r\n\r\n/**\r\n * # The Tile Class\r\n *\r\n * As an implementation choice, tiles are dumb. That is, they have\r\n * no knowledge of their context. Their internals are all managed by\r\n * their host {@link Game} through method calls.\r\n *\r\n * From a caller's point of view, extending classes should have am\r\n * identical constructor signature as that of this base class. This\r\n * can be done by a type assertion statement: ` as\r\n * Tile.ConstructorType`.\r\n *\r\n * @template S\r\n * The coordinate system enum for this tile's coordinate.\r\n */\r\nclass Tile {\r\n /**\r\n * @param coord -\r\n */\r\n constructor(coord) {\r\n _occupantId.set(this, void 0);\r\n _freeHealth.set(this, void 0);\r\n _langChar.set(this, void 0);\r\n _langSeq.set(this, void 0);\r\n this.coord = coord;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"coord\"]);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _occupantId, defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL);\r\n }\r\n reset() {\r\n this.evictOccupant();\r\n this.lastKnownUpdateId = 0;\r\n this.freeHealth = 0;\r\n // This is also done when shuffling individual tiles throughout\r\n // the game, but it is done here since initially, nothing needs\r\n // to be avoided because no CSP's have been set yet.\r\n this.setLangCharSeqPair(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Lang.CharSeqPair.NULL);\r\n }\r\n /**\r\n * Any overrides must make a supercall to this implementation.\r\n *\r\n * Must be followed by a call to `PlayerStatus._onAfterOccupy()`.\r\n *\r\n * @param playerId -\r\n */\r\n _setOccupant(playerId, immigrantInfo) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _occupantId, playerId);\r\n }\r\n get isOccupied() {\r\n return this.occupantId !== defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL;\r\n }\r\n evictOccupant() {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _occupantId, defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL);\r\n }\r\n get occupantId() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _occupantId);\r\n }\r\n get freeHealth() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _freeHealth);\r\n }\r\n set freeHealth(newFreeHealth) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _freeHealth, newFreeHealth);\r\n }\r\n /**\r\n * @override\r\n */\r\n setLangCharSeqPair(charSeqPair) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _langChar, charSeqPair.char);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _langSeq, charSeqPair.seq);\r\n }\r\n get langChar() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _langChar);\r\n }\r\n get langSeq() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _langSeq);\r\n }\r\n}\r\n_occupantId = new WeakMap(), _freeHealth = new WeakMap(), _langChar = new WeakMap(), _langSeq = new WeakMap();\r\n// If this errs when changing the constructor signature, then\r\n// the type definition being asserted should be updated to match.\r\nTile;\r\nObject.freeze(Tile);\r\nObject.freeze(Tile.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9UaWxlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL1RpbGUudHM/Njg1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX29jY3VwYW50SWQsIF9mcmVlSGVhbHRoLCBfbGFuZ0NoYXIsIF9sYW5nU2VxO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IExhbmcsIFBsYXllciB9IGZyb20gXCJkZWZzL1R5cGVEZWZzXCI7XHJcbi8qKlxyXG4gKiAjIFRoZSBUaWxlIENsYXNzXHJcbiAqXHJcbiAqIEFzIGFuIGltcGxlbWVudGF0aW9uIGNob2ljZSwgdGlsZXMgYXJlIGR1bWIuIFRoYXQgaXMsIHRoZXkgaGF2ZVxyXG4gKiBubyBrbm93bGVkZ2Ugb2YgdGhlaXIgY29udGV4dC4gVGhlaXIgaW50ZXJuYWxzIGFyZSBhbGwgbWFuYWdlZCBieVxyXG4gKiB0aGVpciBob3N0IHtAbGluayBHYW1lfSB0aHJvdWdoIG1ldGhvZCBjYWxscy5cclxuICpcclxuICogRnJvbSBhIGNhbGxlcidzIHBvaW50IG9mIHZpZXcsIGV4dGVuZGluZyBjbGFzc2VzIHNob3VsZCBoYXZlIGFtXHJcbiAqIGlkZW50aWNhbCBjb25zdHJ1Y3RvciBzaWduYXR1cmUgYXMgdGhhdCBvZiB0aGlzIGJhc2UgY2xhc3MuIFRoaXNcclxuICogY2FuIGJlIGRvbmUgYnkgYSB0eXBlIGFzc2VydGlvbiBzdGF0ZW1lbnQ6IGA8ZXh0ZW5zaW9uIGNsYXNzPiBhc1xyXG4gKiBUaWxlLkNvbnN0cnVjdG9yVHlwZTxDb29yZC5TeXN0ZW0+YC5cclxuICpcclxuICogQHRlbXBsYXRlIFNcclxuICogVGhlIGNvb3JkaW5hdGUgc3lzdGVtIGVudW0gZm9yIHRoaXMgdGlsZSdzIGNvb3JkaW5hdGUuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVGlsZSB7XHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBjb29yZCAtXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNvb3JkKSB7XHJcbiAgICAgICAgX29jY3VwYW50SWQuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2ZyZWVIZWFsdGguc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2xhbmdDaGFyLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIF9sYW5nU2VxLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuY29vcmQgPSBjb29yZDtcclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcImNvb3JkXCJdKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9vY2N1cGFudElkLCBQbGF5ZXIuSWQuTlVMTCk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmV2aWN0T2NjdXBhbnQoKTtcclxuICAgICAgICB0aGlzLmxhc3RLbm93blVwZGF0ZUlkID0gMDtcclxuICAgICAgICB0aGlzLmZyZWVIZWFsdGggPSAwO1xyXG4gICAgICAgIC8vIFRoaXMgaXMgYWxzbyBkb25lIHdoZW4gc2h1ZmZsaW5nIGluZGl2aWR1YWwgdGlsZXMgdGhyb3VnaG91dFxyXG4gICAgICAgIC8vIHRoZSBnYW1lLCBidXQgaXQgaXMgZG9uZSBoZXJlIHNpbmNlIGluaXRpYWxseSwgbm90aGluZyBuZWVkc1xyXG4gICAgICAgIC8vIHRvIGJlIGF2b2lkZWQgYmVjYXVzZSBubyBDU1AncyBoYXZlIGJlZW4gc2V0IHlldC5cclxuICAgICAgICB0aGlzLnNldExhbmdDaGFyU2VxUGFpcihMYW5nLkNoYXJTZXFQYWlyLk5VTEwpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBbnkgb3ZlcnJpZGVzIG11c3QgbWFrZSBhIHN1cGVyY2FsbCB0byB0aGlzIGltcGxlbWVudGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIE11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGBQbGF5ZXJTdGF0dXMuX29uQWZ0ZXJPY2N1cHkoKWAuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBsYXllcklkIC1cclxuICAgICAqL1xyXG4gICAgX3NldE9jY3VwYW50KHBsYXllcklkLCBpbW1pZ3JhbnRJbmZvKSB7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfb2NjdXBhbnRJZCwgcGxheWVySWQpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGlzT2NjdXBpZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2NjdXBhbnRJZCAhPT0gUGxheWVyLklkLk5VTEw7XHJcbiAgICB9XHJcbiAgICBldmljdE9jY3VwYW50KCkge1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX29jY3VwYW50SWQsIFBsYXllci5JZC5OVUxMKTtcclxuICAgIH1cclxuICAgIGdldCBvY2N1cGFudElkKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9vY2N1cGFudElkKTtcclxuICAgIH1cclxuICAgIGdldCBmcmVlSGVhbHRoKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mcmVlSGVhbHRoKTtcclxuICAgIH1cclxuICAgIHNldCBmcmVlSGVhbHRoKG5ld0ZyZWVIZWFsdGgpIHtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9mcmVlSGVhbHRoLCBuZXdGcmVlSGVhbHRoKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIHNldExhbmdDaGFyU2VxUGFpcihjaGFyU2VxUGFpcikge1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2xhbmdDaGFyLCBjaGFyU2VxUGFpci5jaGFyKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9sYW5nU2VxLCBjaGFyU2VxUGFpci5zZXEpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGxhbmdDaGFyKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9sYW5nQ2hhcik7XHJcbiAgICB9XHJcbiAgICBnZXQgbGFuZ1NlcSgpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbGFuZ1NlcSk7XHJcbiAgICB9XHJcbn1cclxuX29jY3VwYW50SWQgPSBuZXcgV2Vha01hcCgpLCBfZnJlZUhlYWx0aCA9IG5ldyBXZWFrTWFwKCksIF9sYW5nQ2hhciA9IG5ldyBXZWFrTWFwKCksIF9sYW5nU2VxID0gbmV3IFdlYWtNYXAoKTtcclxuLy8gSWYgdGhpcyBlcnJzIHdoZW4gY2hhbmdpbmcgdGhlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgdGhlblxyXG4vLyB0aGUgdHlwZSBkZWZpbml0aW9uIGJlaW5nIGFzc2VydGVkIHNob3VsZCBiZSB1cGRhdGVkIHRvIG1hdGNoLlxyXG5UaWxlO1xyXG5PYmplY3QuZnJlZXplKFRpbGUpO1xyXG5PYmplY3QuZnJlZXplKFRpbGUucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/floor/Tile.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/TileGetter.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TileGetter\": () => /* binding */ TileGetter\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\nvar _source_1;\r\n\r\n/**\r\n * A utility class to get destinations-to or sources-from a tile at\r\n * a specified coordinate. It is recommended to name the calling\r\n * variable \"tile\". A query starts with calling one of the methods\r\n * `at`, `destsFrom`, or `sourcesTo`. Optional filtering mutators\r\n * can be applied intermediately such as `unoccupied`. The query\r\n * ends with one of the getters `occupants` or `get`.\r\n *\r\n * @template S\r\n *\r\n * @template A\r\n * This allows `Source` implementations to accept a coordinate\r\n * specifier as an argument, such as is appropriate with a grid,\r\n * or to provide that information implicitly inside itself as\r\n * part of its spec, as is appropriate with a player.\r\n *\r\n */\r\nclass TileGetter {\r\n constructor(source) {\r\n _source_1.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldSet)(this, _source_1, source);\r\n Object.freeze(this);\r\n }\r\n get _source() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1);\r\n }\r\n at(...args) {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileAt(...args);\r\n }\r\n destsFrom(...args) {\r\n return new Query((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileDestsFrom(...args));\r\n }\r\n sourcesTo(...args) {\r\n return new Query((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileSourcesTo(...args));\r\n }\r\n}\r\n_source_1 = new WeakMap();\r\nObject.freeze(TileGetter);\r\nObject.freeze(TileGetter.prototype);\r\n/**\r\n *\r\n */\r\nclass Query {\r\n constructor(contents) {\r\n this.contents = contents;\r\n Object.seal(this);\r\n }\r\n get occupied() {\r\n this.contents = this.contents.filter((tile) => tile.isOccupied);\r\n return this;\r\n }\r\n get unoccupied() {\r\n this.contents = this.contents.filter((tile) => !tile.isOccupied);\r\n return this;\r\n }\r\n get get() {\r\n const retval = this.contents;\r\n return retval;\r\n }\r\n}\r\nObject.freeze(Query);\r\nObject.freeze(Query.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9UaWxlR2V0dGVyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL1RpbGVHZXR0ZXIudHM/MmJiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX3NvdXJjZV8xO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbi8qKlxyXG4gKiBBIHV0aWxpdHkgY2xhc3MgdG8gZ2V0IGRlc3RpbmF0aW9ucy10byBvciBzb3VyY2VzLWZyb20gYSB0aWxlIGF0XHJcbiAqIGEgc3BlY2lmaWVkIGNvb3JkaW5hdGUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIG5hbWUgdGhlIGNhbGxpbmdcclxuICogdmFyaWFibGUgXCJ0aWxlXCIuIEEgcXVlcnkgc3RhcnRzIHdpdGggY2FsbGluZyBvbmUgb2YgdGhlIG1ldGhvZHNcclxuICogYGF0YCwgYGRlc3RzRnJvbWAsIG9yIGBzb3VyY2VzVG9gLiBPcHRpb25hbCBmaWx0ZXJpbmcgbXV0YXRvcnNcclxuICogY2FuIGJlIGFwcGxpZWQgaW50ZXJtZWRpYXRlbHkgc3VjaCBhcyBgdW5vY2N1cGllZGAuIFRoZSBxdWVyeVxyXG4gKiBlbmRzIHdpdGggb25lIG9mIHRoZSBnZXR0ZXJzIGBvY2N1cGFudHNgIG9yIGBnZXRgLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgU1xyXG4gKlxyXG4gKiBAdGVtcGxhdGUgQVxyXG4gKiBUaGlzIGFsbG93cyBgU291cmNlYCBpbXBsZW1lbnRhdGlvbnMgdG8gYWNjZXB0IGEgY29vcmRpbmF0ZVxyXG4gKiBzcGVjaWZpZXIgYXMgYW4gYXJndW1lbnQsIHN1Y2ggYXMgaXMgYXBwcm9wcmlhdGUgd2l0aCBhIGdyaWQsXHJcbiAqIG9yIHRvIHByb3ZpZGUgdGhhdCBpbmZvcm1hdGlvbiBpbXBsaWNpdGx5IGluc2lkZSBpdHNlbGYgYXNcclxuICogcGFydCBvZiBpdHMgc3BlYywgYXMgaXMgYXBwcm9wcmlhdGUgd2l0aCBhIHBsYXllci5cclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBUaWxlR2V0dGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKHNvdXJjZSkge1xyXG4gICAgICAgIF9zb3VyY2VfMS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zb3VyY2VfMSwgc291cmNlKTtcclxuICAgICAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0IF9zb3VyY2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3NvdXJjZV8xKTtcclxuICAgIH1cclxuICAgIGF0KC4uLmFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc291cmNlXzEpLl9nZXRUaWxlQXQoLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICBkZXN0c0Zyb20oLi4uYXJncykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUXVlcnkoX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc291cmNlXzEpLl9nZXRUaWxlRGVzdHNGcm9tKC4uLmFyZ3MpKTtcclxuICAgIH1cclxuICAgIHNvdXJjZXNUbyguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBRdWVyeShfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zb3VyY2VfMSkuX2dldFRpbGVTb3VyY2VzVG8oLi4uYXJncykpO1xyXG4gICAgfVxyXG59XHJcbl9zb3VyY2VfMSA9IG5ldyBXZWFrTWFwKCk7XHJcbk9iamVjdC5mcmVlemUoVGlsZUdldHRlcik7XHJcbk9iamVjdC5mcmVlemUoVGlsZUdldHRlci5wcm90b3R5cGUpO1xyXG4vKipcclxuICpcclxuICovXHJcbmNsYXNzIFF1ZXJ5IHtcclxuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRzKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xyXG4gICAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0IG9jY3VwaWVkKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmNvbnRlbnRzLmZpbHRlcigodGlsZSkgPT4gdGlsZS5pc09jY3VwaWVkKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuICAgIGdldCB1bm9jY3VwaWVkKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmNvbnRlbnRzLmZpbHRlcigodGlsZSkgPT4gIXRpbGUuaXNPY2N1cGllZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbiAgICBnZXQgZ2V0KCkge1xyXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IHRoaXMuY29udGVudHM7XHJcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgIH1cclxufVxyXG5PYmplY3QuZnJlZXplKFF1ZXJ5KTtcclxuT2JqZWN0LmZyZWV6ZShRdWVyeS5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/floor/TileGetter.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/VisibleGrid.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VisibleGrid\": () => /* binding */ VisibleGrid,\n/* harmony export */ \"VisibleGridMixin\": () => /* binding */ VisibleGridMixin\n/* harmony export */ });\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleTile.ts\");\n\r\n\r\n\r\nvar VisibleGrid;\r\n(function (VisibleGrid) {\r\n ;\r\n VisibleGrid.getImplementation = (coordSys) => {\r\n const ctor = VisibleGrid._Constructors[coordSys];\r\n return ctor;\r\n };\r\n})(VisibleGrid || (VisibleGrid = {}));\r\n/**\r\n *\r\n */\r\nclass VisibleGridMixin {\r\n /**\r\n * Note: I would rather have this implementation go under the\r\n * `VisibleGrid` class, but I don't want to get into mixins as of\r\n * now to get around no-multiple-inheritance.\r\n *\r\n * @param desc -\r\n * @param gridImpl -\r\n */\r\n _superVisibleGrid(desc, gridImpl) {\r\n if (desc.tileClass !== floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__.VisibleTile) {\r\n throw new TypeError(\"never\");\r\n }\r\n const OHG = defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Grid;\r\n gridImpl.setAttribute(\"role\", \"presentation\");\r\n gridImpl.classList.add(OHG.Class.IMPL_BODY);\r\n gridImpl.dataset[OHG.Dataset.IMPL_COORD_SYS] = desc.coordSys;\r\n gridImpl.translate = false; // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translate\r\n gridImpl.spellcheck = false; // typically assumed by the UA, but it doesn't hurt to say explicitly.\r\n // @ts-expect-error : RO=\r\n this.baseElem = gridImpl;\r\n // Initialize spotlight elements:\r\n const shortSpotlight = defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Player.Class.SHORT_SPOTLIGHT]);\r\n const longSpotlight = defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Player.Class.LONG_SPOTLIGHT]);\r\n // @ts-expect-error : RO=\r\n this.spotlightElems = Object.freeze([shortSpotlight, longSpotlight]);\r\n }\r\n}\r\n;\r\nObject.freeze(VisibleGridMixin);\r\nObject.freeze(VisibleGridMixin.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlR3JpZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlR3JpZC50cz85ODVkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9tSG9va3MgfSBmcm9tIFwiZGVmcy9PbUhvb2tzXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IFZpc2libGVUaWxlIH0gZnJvbSBcImZsb29yL1Zpc2libGVUaWxlXCI7XHJcbmV4cG9ydCB2YXIgVmlzaWJsZUdyaWQ7XHJcbihmdW5jdGlvbiAoVmlzaWJsZUdyaWQpIHtcclxuICAgIDtcclxuICAgIFZpc2libGVHcmlkLmdldEltcGxlbWVudGF0aW9uID0gKGNvb3JkU3lzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3RvciA9IFZpc2libGVHcmlkLl9Db25zdHJ1Y3RvcnNbY29vcmRTeXNdO1xyXG4gICAgICAgIHJldHVybiBjdG9yO1xyXG4gICAgfTtcclxufSkoVmlzaWJsZUdyaWQgfHwgKFZpc2libGVHcmlkID0ge30pKTtcclxuLyoqXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlzaWJsZUdyaWRNaXhpbiB7XHJcbiAgICAvKipcclxuICAgICAqIE5vdGU6IEkgd291bGQgcmF0aGVyIGhhdmUgdGhpcyBpbXBsZW1lbnRhdGlvbiBnbyB1bmRlciB0aGVcclxuICAgICAqIGBWaXNpYmxlR3JpZGAgY2xhc3MsIGJ1dCBJIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gbWl4aW5zIGFzIG9mXHJcbiAgICAgKiBub3cgdG8gZ2V0IGFyb3VuZCBuby1tdWx0aXBsZS1pbmhlcml0YW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGVzYyAtXHJcbiAgICAgKiBAcGFyYW0gZ3JpZEltcGwgLVxyXG4gICAgICovXHJcbiAgICBfc3VwZXJWaXNpYmxlR3JpZChkZXNjLCBncmlkSW1wbCkge1xyXG4gICAgICAgIGlmIChkZXNjLnRpbGVDbGFzcyAhPT0gVmlzaWJsZVRpbGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIm5ldmVyXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBPSEcgPSBPbUhvb2tzLkdyaWQ7XHJcbiAgICAgICAgZ3JpZEltcGwuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInByZXNlbnRhdGlvblwiKTtcclxuICAgICAgICBncmlkSW1wbC5jbGFzc0xpc3QuYWRkKE9IRy5DbGFzcy5JTVBMX0JPRFkpO1xyXG4gICAgICAgIGdyaWRJbXBsLmRhdGFzZXRbT0hHLkRhdGFzZXQuSU1QTF9DT09SRF9TWVNdID0gZGVzYy5jb29yZFN5cztcclxuICAgICAgICBncmlkSW1wbC50cmFuc2xhdGUgPSBmYWxzZTsgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90cmFuc2xhdGVcclxuICAgICAgICBncmlkSW1wbC5zcGVsbGNoZWNrID0gZmFsc2U7IC8vIHR5cGljYWxseSBhc3N1bWVkIGJ5IHRoZSBVQSwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBzYXkgZXhwbGljaXRseS5cclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIDogUk89XHJcbiAgICAgICAgdGhpcy5iYXNlRWxlbSA9IGdyaWRJbXBsO1xyXG4gICAgICAgIC8vIEluaXRpYWxpemUgc3BvdGxpZ2h0IGVsZW1lbnRzOlxyXG4gICAgICAgIGNvbnN0IHNob3J0U3BvdGxpZ2h0ID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5TSE9SVF9TUE9UTElHSFRdKTtcclxuICAgICAgICBjb25zdCBsb25nU3BvdGxpZ2h0ID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5MT05HX1NQT1RMSUdIVF0pO1xyXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgOiBSTz1cclxuICAgICAgICB0aGlzLnNwb3RsaWdodEVsZW1zID0gT2JqZWN0LmZyZWV6ZShbc2hvcnRTcG90bGlnaHQsIGxvbmdTcG90bGlnaHRdKTtcclxuICAgIH1cclxufVxyXG47XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZUdyaWRNaXhpbik7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZUdyaWRNaXhpbi5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/VisibleGrid.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/VisibleTile.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VisibleTile\": () => /* binding */ VisibleTile\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/Tile.ts\");\nvar _baseElem;\r\n\r\n\r\n\r\n\r\n/**\r\n * Implicitly handles visuals with help from CSS.\r\n */\r\nclass VisibleTile extends _Tile__WEBPACK_IMPORTED_MODULE_2__.Tile {\r\n constructor(coordDesc) {\r\n super(coordDesc);\r\n _baseElem.set(this, void 0);\r\n {\r\n const base = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _baseElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.CENTER_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.STACK_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.BASE,\r\n ]));\r\n base.setAttribute(\"aria-label\", \"Tile\");\r\n }\r\n {\r\n // Pointer hitbox element.\r\n // Must be the first child. See note in CSS class hook.\r\n const pthb = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.POINTER_HB]);\r\n pthb.setAttribute(\"aria-hidden\", \"true\");\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(pthb);\r\n }\r\n {\r\n const charWrap = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.LANG_CHAR_WRAP]);\r\n charWrap.setAttribute(\"role\", \"presentation\");\r\n const charElem = this.langCharElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n charWrap.appendChild(charElem);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(charWrap);\r\n }\r\n {\r\n const seqElem = this.langSeqElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.LANG_SEQ]);\r\n seqElem.setAttribute(\"role\", \"tooltip\");\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(seqElem);\r\n }\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"langCharElem\", \"langSeqElem\"]);\r\n }\r\n _addToDom(parent) {\r\n parent.appendChild((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem));\r\n }\r\n /**\r\n * @override\r\n */\r\n _setOccupant(playerId, immigrantInfo) {\r\n super._setOccupant(playerId, immigrantInfo);\r\n // It must go at least before the langChar element so that the\r\n // CSS can create a fading trail effect. It must go after the\r\n // hitbox so that it can be hidden to avoid covering the tooltip.\r\n this.langCharElem.parentElement.insertAdjacentElement(\"beforebegin\", immigrantInfo.playerElem);\r\n this.langSeqElem.textContent = immigrantInfo.username;\r\n }\r\n /**\r\n * @override\r\n */\r\n evictOccupant() {\r\n super.evictOccupant();\r\n // Undo setting mouseover text to something player-related\r\n // (See `__setOccupant` for what we did and now need to undo):\r\n this.langSeqElem.textContent = this.langSeq;\r\n }\r\n /**\r\n * @override\r\n */\r\n set freeHealth(newFreeHealth) {\r\n super.freeHealth = newFreeHealth;\r\n if (this.freeHealth > 0) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Dataset.HEALTH] = this.freeHealth.toString();\r\n }\r\n else {\r\n delete (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Dataset.HEALTH];\r\n }\r\n }\r\n /**\r\n * @override\r\n */\r\n // NOTE: For some reason, if we override the setter, the transpiled\r\n // code does not link to the super implementation... Or maybe this\r\n // is just a property of plain ECMA javascript??\r\n get freeHealth() {\r\n return super.freeHealth;\r\n }\r\n /**\r\n * @override\r\n */\r\n setLangCharSeqPair(charSeqPair) {\r\n super.setLangCharSeqPair(charSeqPair);\r\n this.langCharElem.textContent = this.langChar;\r\n this.langSeqElem.textContent = this.langSeq;\r\n }\r\n}\r\n_baseElem = new WeakMap();\r\n// Assert that this extension's constructor has a compatible signature:\r\nVisibleTile;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(VisibleTile, [\"_addToDom\"]);\r\nObject.freeze(VisibleTile);\r\nObject.freeze(VisibleTile.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlVGlsZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlVGlsZS50cz8yNjg4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfYmFzZUVsZW07XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgT21Ib29rcyB9IGZyb20gXCJkZWZzL09tSG9va3NcIjtcclxuaW1wb3J0IHsgVGlsZSB9IGZyb20gXCIuL1RpbGVcIjtcclxuLyoqXHJcbiAqIEltcGxpY2l0bHkgaGFuZGxlcyB2aXN1YWxzIHdpdGggaGVscCBmcm9tIENTUy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBWaXNpYmxlVGlsZSBleHRlbmRzIFRpbGUge1xyXG4gICAgY29uc3RydWN0b3IoY29vcmREZXNjKSB7XHJcbiAgICAgICAgc3VwZXIoY29vcmREZXNjKTtcclxuICAgICAgICBfYmFzZUVsZW0uc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCBiYXNlID0gX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfYmFzZUVsZW0sIEpzVXRpbHMubWtFbChcImRpdlwiLCBbXHJcbiAgICAgICAgICAgICAgICBPbUhvb2tzLkdlbmVyYWwuQ2xhc3MuQ0VOVEVSX0NPTlRFTlRTLFxyXG4gICAgICAgICAgICAgICAgT21Ib29rcy5HZW5lcmFsLkNsYXNzLlNUQUNLX0NPTlRFTlRTLFxyXG4gICAgICAgICAgICAgICAgT21Ib29rcy5UaWxlLkNsYXNzLkJBU0UsXHJcbiAgICAgICAgICAgIF0pKTtcclxuICAgICAgICAgICAgYmFzZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIFwiVGlsZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBQb2ludGVyIGhpdGJveCBlbGVtZW50LlxyXG4gICAgICAgICAgICAvLyBNdXN0IGJlIHRoZSBmaXJzdCBjaGlsZC4gU2VlIG5vdGUgaW4gQ1NTIGNsYXNzIGhvb2suXHJcbiAgICAgICAgICAgIGNvbnN0IHB0aGIgPSBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW09tSG9va3MuVGlsZS5DbGFzcy5QT0lOVEVSX0hCXSk7XHJcbiAgICAgICAgICAgIHB0aGIuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSkuYXBwZW5kQ2hpbGQocHRoYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3QgY2hhcldyYXAgPSBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW09tSG9va3MuVGlsZS5DbGFzcy5MQU5HX0NIQVJfV1JBUF0pO1xyXG4gICAgICAgICAgICBjaGFyV3JhcC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwicHJlc2VudGF0aW9uXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGFyRWxlbSA9IHRoaXMubGFuZ0NoYXJFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtdKTtcclxuICAgICAgICAgICAgY2hhcldyYXAuYXBwZW5kQ2hpbGQoY2hhckVsZW0pO1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSkuYXBwZW5kQ2hpbGQoY2hhcldyYXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcUVsZW0gPSB0aGlzLmxhbmdTZXFFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlRpbGUuQ2xhc3MuTEFOR19TRVFdKTtcclxuICAgICAgICAgICAgc2VxRWxlbS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwidG9vbHRpcFwiKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmFwcGVuZENoaWxkKHNlcUVsZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcImxhbmdDaGFyRWxlbVwiLCBcImxhbmdTZXFFbGVtXCJdKTtcclxuICAgIH1cclxuICAgIF9hZGRUb0RvbShwYXJlbnQpIHtcclxuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIF9zZXRPY2N1cGFudChwbGF5ZXJJZCwgaW1taWdyYW50SW5mbykge1xyXG4gICAgICAgIHN1cGVyLl9zZXRPY2N1cGFudChwbGF5ZXJJZCwgaW1taWdyYW50SW5mbyk7XHJcbiAgICAgICAgLy8gSXQgbXVzdCBnbyBhdCBsZWFzdCBiZWZvcmUgdGhlIGxhbmdDaGFyIGVsZW1lbnQgc28gdGhhdCB0aGVcclxuICAgICAgICAvLyBDU1MgY2FuIGNyZWF0ZSBhIGZhZGluZyB0cmFpbCBlZmZlY3QuIEl0IG11c3QgZ28gYWZ0ZXIgdGhlXHJcbiAgICAgICAgLy8gaGl0Ym94IHNvIHRoYXQgaXQgY2FuIGJlIGhpZGRlbiB0byBhdm9pZCBjb3ZlcmluZyB0aGUgdG9vbHRpcC5cclxuICAgICAgICB0aGlzLmxhbmdDaGFyRWxlbS5wYXJlbnRFbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudChcImJlZm9yZWJlZ2luXCIsIGltbWlncmFudEluZm8ucGxheWVyRWxlbSk7XHJcbiAgICAgICAgdGhpcy5sYW5nU2VxRWxlbS50ZXh0Q29udGVudCA9IGltbWlncmFudEluZm8udXNlcm5hbWU7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBldmljdE9jY3VwYW50KCkge1xyXG4gICAgICAgIHN1cGVyLmV2aWN0T2NjdXBhbnQoKTtcclxuICAgICAgICAvLyBVbmRvIHNldHRpbmcgbW91c2VvdmVyIHRleHQgdG8gc29tZXRoaW5nIHBsYXllci1yZWxhdGVkXHJcbiAgICAgICAgLy8gKFNlZSBgX19zZXRPY2N1cGFudGAgZm9yIHdoYXQgd2UgZGlkIGFuZCBub3cgbmVlZCB0byB1bmRvKTpcclxuICAgICAgICB0aGlzLmxhbmdTZXFFbGVtLnRleHRDb250ZW50ID0gdGhpcy5sYW5nU2VxO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAqL1xyXG4gICAgc2V0IGZyZWVIZWFsdGgobmV3RnJlZUhlYWx0aCkge1xyXG4gICAgICAgIHN1cGVyLmZyZWVIZWFsdGggPSBuZXdGcmVlSGVhbHRoO1xyXG4gICAgICAgIGlmICh0aGlzLmZyZWVIZWFsdGggPiAwKSB7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5kYXRhc2V0W09tSG9va3MuVGlsZS5EYXRhc2V0LkhFQUxUSF0gPSB0aGlzLmZyZWVIZWFsdGgudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSkuZGF0YXNldFtPbUhvb2tzLlRpbGUuRGF0YXNldC5IRUFMVEhdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIC8vIE5PVEU6IEZvciBzb21lIHJlYXNvbiwgaWYgd2Ugb3ZlcnJpZGUgdGhlIHNldHRlciwgdGhlIHRyYW5zcGlsZWRcclxuICAgIC8vIGNvZGUgZG9lcyBub3QgbGluayB0byB0aGUgc3VwZXIgaW1wbGVtZW50YXRpb24uLi4gT3IgbWF5YmUgdGhpc1xyXG4gICAgLy8gaXMganVzdCBhIHByb3BlcnR5IG9mIHBsYWluIEVDTUEgamF2YXNjcmlwdD8/XHJcbiAgICBnZXQgZnJlZUhlYWx0aCgpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZnJlZUhlYWx0aDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIHNldExhbmdDaGFyU2VxUGFpcihjaGFyU2VxUGFpcikge1xyXG4gICAgICAgIHN1cGVyLnNldExhbmdDaGFyU2VxUGFpcihjaGFyU2VxUGFpcik7XHJcbiAgICAgICAgdGhpcy5sYW5nQ2hhckVsZW0udGV4dENvbnRlbnQgPSB0aGlzLmxhbmdDaGFyO1xyXG4gICAgICAgIHRoaXMubGFuZ1NlcUVsZW0udGV4dENvbnRlbnQgPSB0aGlzLmxhbmdTZXE7XHJcbiAgICB9XHJcbn1cclxuX2Jhc2VFbGVtID0gbmV3IFdlYWtNYXAoKTtcclxuLy8gQXNzZXJ0IHRoYXQgdGhpcyBleHRlbnNpb24ncyBjb25zdHJ1Y3RvciBoYXMgYSBjb21wYXRpYmxlIHNpZ25hdHVyZTpcclxuVmlzaWJsZVRpbGU7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oVmlzaWJsZVRpbGUsIFtcIl9hZGRUb0RvbVwiXSk7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZVRpbGUpO1xyXG5PYmplY3QuZnJlZXplKFZpc2libGVUaWxlLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/floor/VisibleTile.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/impl/Beehive.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Beehive\": () => /* binding */ Beehive,\n/* harmony export */ \"BeehiveVisibleGrid\": () => /* binding */ BeehiveVisibleGrid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/Grid.ts\");\n/* harmony import */ var _VisibleGrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n\r\n\r\n\r\n/**\r\n * # 🐝 BEES !\r\n *\r\n * # 🐝 BEES !\r\n *\r\n * # 🐝 BEES !\r\n *\r\n * ```text\r\n * ___ ___\r\n * // \\_// \\__\r\n * \\\\__/ \\__/ \\\r\n * \\\\__/ \\\\__/\r\n * ```\r\n *\r\n *\r\n * [(bees)](https://giphy.com/gifs/oprah-bees-VhFps32TlNgsg)\r\n */\r\nvar Beehive;\r\n(function (Beehive) {\r\n /**\r\n * # Beehive Coord\r\n */\r\n class Coord {\r\n constructor(desc) {\r\n this.dash = desc.dash;\r\n this.bash = desc.bash;\r\n Object.freeze(this);\r\n }\r\n _equals(other) {\r\n return (this.dash === other.dash) && (this.bash === other.bash);\r\n }\r\n round() {\r\n // I'm pretty proud of this despite the fact that I don't\r\n // think there's anything very impressive about it.\r\n const floorDash = Math.floor(this.dash);\r\n const floorBash = Math.floor(this.bash);\r\n const d = floorDash - this.dash;\r\n const b = floorBash - this.bash;\r\n if (d > 2 * b) {\r\n return new Coord({ dash: floorDash + 1, bash: floorBash });\r\n }\r\n else if (d < 0.5 * b) {\r\n return new Coord({ dash: floorDash, bash: floorBash + 1 });\r\n }\r\n else if (Math.min(d, b) > 0.5) {\r\n return new Coord({ dash: floorDash + 1, bash: floorBash + 1 });\r\n }\r\n else {\r\n return new Coord({ dash: floorDash, bash: floorBash });\r\n }\r\n }\r\n add(other) {\r\n return new Coord({\r\n dash: this.dash + other.dash,\r\n bash: this.bash + other.bash,\r\n });\r\n }\r\n sub(other) {\r\n return new Coord({\r\n dash: this.dash - other.dash,\r\n bash: this.bash - other.bash,\r\n });\r\n }\r\n mul(scalar) {\r\n return new Coord({\r\n dash: scalar * this.dash,\r\n bash: scalar * this.bash,\r\n });\r\n }\r\n }\r\n Beehive.Coord = Coord;\r\n Object.freeze(Coord);\r\n Object.freeze(Coord.prototype);\r\n /**\r\n * # Beehive Grid\r\n */\r\n class Grid extends _Grid__WEBPACK_IMPORTED_MODULE_1__.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n // Initialize `grid`:\r\n const grid = undefined;\r\n this.grid = Object.freeze(grid);\r\n }\r\n /**\r\n * @override\r\n */\r\n static getAmbiguityThreshold() {\r\n return 18;\r\n }\r\n /**\r\n * @override\r\n */\r\n static getSizeLimits() { return this.SIZE_LIMITS; }\r\n forEachTile(consumer) {\r\n let i = 0;\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n consumer(tile, i++);\r\n }\r\n }\r\n }\r\n shuffledForEachTile(consumer) {\r\n this.grid.flat()\r\n .sort((a, b) => Math.random() - 0.5)\r\n .forEach((tile) => consumer(tile));\r\n }\r\n getUntToward(intendedDest, sourceCoord) {\r\n return undefined;\r\n }\r\n getUntAwayFrom(avoidCoord, sourceCoord) {\r\n return this.getUntToward(sourceCoord.add(sourceCoord.sub(avoidCoord)), sourceCoord);\r\n }\r\n getRandomCoordAround(origin, radius) {\r\n // Note to self when I implement this:\r\n // Be careful about getting proper uniform random distribution!\r\n return undefined;\r\n }\r\n _getTileAt(coord) {\r\n return undefined;\r\n }\r\n _getTileDestsFrom(coord, radius = 1) {\r\n return undefined;\r\n }\r\n _getTileSourcesTo(coord, radius = 1) {\r\n return undefined;\r\n }\r\n minMovesFromTo(source, dest) {\r\n return undefined;\r\n }\r\n /**\r\n * @override\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return this._getTileDestsFrom(originCoord, 2);\r\n }\r\n static getSpawnCoords(playerCounts, dimensions) {\r\n return undefined;\r\n }\r\n static getArea(dim) {\r\n const shorterSide = Math.min(dim.fslash, dim.bslash);\r\n const longerSide = Math.max(dim.fslash, dim.bslash);\r\n const width = (-1) + dim.dash + shorterSide;\r\n let area = 2 * shorterSide * (dim.dash + width);\r\n area += (longerSide - shorterSide - 1) * width;\r\n return area;\r\n }\r\n static getDiameterOfLatticePatchHavingArea(area) {\r\n if (area < 0.25) {\r\n throw new RangeError(\"determinant of a radical will be strictly negative.\");\r\n }\r\n // Given radius `r` and diameter = `1 + 2*r`, the area is\r\n // `1 + 6*r*(1+r)/2`. Rearrange to solve for `d` given the\r\n // area: `0 = 3r^2 + 3r + (1-a)`. Use quadratic formula.\r\n const radius = ((-3) + Math.sqrt(9 - (12 * (1 - area)))) / 6;\r\n return 1 + (2 * radius);\r\n }\r\n static getRandomCoord(dimensions) {\r\n return new Coord(undefined);\r\n }\r\n }\r\n Grid.SIZE_LIMITS = Object.freeze({\r\n dash: Object.freeze({ min: 10, max: 50 }),\r\n bslash: Object.freeze({ min: 10, max: 50 }),\r\n fslash: Object.freeze({ min: 10, max: 50 }),\r\n });\r\n Beehive.Grid = Grid;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Grid, [\"_getTileAt\", \"_getTileDestsFrom\", \"_getTileSourcesTo\"]);\r\n Object.freeze(Grid);\r\n Object.freeze(Grid.prototype);\r\n})(Beehive || (Beehive = {}));\r\nObject.freeze(Beehive);\r\n/**\r\n */\r\n// Separated for tree-shaking.\r\nclass BeehiveVisibleGrid extends Beehive.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const domGrid = undefined;\r\n // TODO.impl Beehive VisibleGrid ctor.\r\n this._superVisibleGrid(desc, domGrid);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.applyMixins(BeehiveVisibleGrid, [_VisibleGrid__WEBPACK_IMPORTED_MODULE_2__.VisibleGridMixin]);\r\nObject.freeze(BeehiveVisibleGrid);\r\nObject.freeze(BeehiveVisibleGrid.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9pbXBsL0JlZWhpdmUudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZmxvb3IvaW1wbC9CZWVoaXZlLnRzP2RmN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgR3JpZCBhcyBBYnN0cmFjdEdyaWQgfSBmcm9tIFwiLi4vR3JpZFwiO1xyXG5pbXBvcnQgeyBWaXNpYmxlR3JpZE1peGluIH0gZnJvbSBcIi4uL1Zpc2libGVHcmlkXCI7XHJcbi8qKlxyXG4gKiAjIPCfkJ0gQkVFUyAhXHJcbiAqXHJcbiAqICMg8J+QnSBCRUVTICFcclxuICpcclxuICogIyDwn5CdIEJFRVMgIVxyXG4gKlxyXG4gKiBgYGB0ZXh0XHJcbiAqICAgX19fICAgX19fXHJcbiAqICAvLyAgXFxfLy8gIFxcX19cclxuICogIFxcXFxfXy8gIFxcX18vICBcXFxyXG4gKiAgICAgXFxcXF9fLyBcXFxcX18vXHJcbiAqIGBgYFxyXG4gKlxyXG4gKlxyXG4gKiBbKGJlZXMpXShodHRwczovL2dpcGh5LmNvbS9naWZzL29wcmFoLWJlZXMtVmhGcHMzMlRsTmdzZylcclxuICovXHJcbmV4cG9ydCB2YXIgQmVlaGl2ZTtcclxuKGZ1bmN0aW9uIChCZWVoaXZlKSB7XHJcbiAgICAvKipcclxuICAgICAqICMgQmVlaGl2ZSBDb29yZFxyXG4gICAgICovXHJcbiAgICBjbGFzcyBDb29yZCB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2ggPSBkZXNjLmRhc2g7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaCA9IGRlc2MuYmFzaDtcclxuICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2VxdWFscyhvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuZGFzaCA9PT0gb3RoZXIuZGFzaCkgJiYgKHRoaXMuYmFzaCA9PT0gb3RoZXIuYmFzaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvdW5kKCkge1xyXG4gICAgICAgICAgICAvLyBJJ20gcHJldHR5IHByb3VkIG9mIHRoaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IEkgZG9uJ3RcclxuICAgICAgICAgICAgLy8gdGhpbmsgdGhlcmUncyBhbnl0aGluZyB2ZXJ5IGltcHJlc3NpdmUgYWJvdXQgaXQuXHJcbiAgICAgICAgICAgIGNvbnN0IGZsb29yRGFzaCA9IE1hdGguZmxvb3IodGhpcy5kYXNoKTtcclxuICAgICAgICAgICAgY29uc3QgZmxvb3JCYXNoID0gTWF0aC5mbG9vcih0aGlzLmJhc2gpO1xyXG4gICAgICAgICAgICBjb25zdCBkID0gZmxvb3JEYXNoIC0gdGhpcy5kYXNoO1xyXG4gICAgICAgICAgICBjb25zdCBiID0gZmxvb3JCYXNoIC0gdGhpcy5iYXNoO1xyXG4gICAgICAgICAgICBpZiAoZCA+IDIgKiBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoICsgMSwgYmFzaDogZmxvb3JCYXNoIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGQgPCAwLjUgKiBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoLCBiYXNoOiBmbG9vckJhc2ggKyAxIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKE1hdGgubWluKGQsIGIpID4gMC41KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoICsgMSwgYmFzaDogZmxvb3JCYXNoICsgMSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoeyBkYXNoOiBmbG9vckRhc2gsIGJhc2g6IGZsb29yQmFzaCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhZGQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb29yZCh7XHJcbiAgICAgICAgICAgICAgICBkYXNoOiB0aGlzLmRhc2ggKyBvdGhlci5kYXNoLFxyXG4gICAgICAgICAgICAgICAgYmFzaDogdGhpcy5iYXNoICsgb3RoZXIuYmFzaCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1YihvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIGRhc2g6IHRoaXMuZGFzaCAtIG90aGVyLmRhc2gsXHJcbiAgICAgICAgICAgICAgICBiYXNoOiB0aGlzLmJhc2ggLSBvdGhlci5iYXNoLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbXVsKHNjYWxhcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIGRhc2g6IHNjYWxhciAqIHRoaXMuZGFzaCxcclxuICAgICAgICAgICAgICAgIGJhc2g6IHNjYWxhciAqIHRoaXMuYmFzaCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQmVlaGl2ZS5Db29yZCA9IENvb3JkO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShDb29yZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKENvb3JkLnByb3RvdHlwZSk7XHJcbiAgICAvKipcclxuICAgICAqICMgQmVlaGl2ZSBHcmlkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIEdyaWQgZXh0ZW5kcyBBYnN0cmFjdEdyaWQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRlc2MpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgYGdyaWRgOlxyXG4gICAgICAgICAgICBjb25zdCBncmlkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLmdyaWQgPSBPYmplY3QuZnJlZXplKGdyaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0QW1iaWd1aXR5VGhyZXNob2xkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBvdmVycmlkZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBnZXRTaXplTGltaXRzKCkgeyByZXR1cm4gdGhpcy5TSVpFX0xJTUlUUzsgfVxyXG4gICAgICAgIGZvckVhY2hUaWxlKGNvbnN1bWVyKSB7XHJcbiAgICAgICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5ncmlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRpbGUgb2Ygcm93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIodGlsZSwgaSsrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzaHVmZmxlZEZvckVhY2hUaWxlKGNvbnN1bWVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5mbGF0KClcclxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KVxyXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHRpbGUpID0+IGNvbnN1bWVyKHRpbGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50VG93YXJkKGludGVuZGVkRGVzdCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50QXdheUZyb20oYXZvaWRDb29yZCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW50VG93YXJkKHNvdXJjZUNvb3JkLmFkZChzb3VyY2VDb29yZC5zdWIoYXZvaWRDb29yZCkpLCBzb3VyY2VDb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFJhbmRvbUNvb3JkQXJvdW5kKG9yaWdpbiwgcmFkaXVzKSB7XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdG8gc2VsZiB3aGVuIEkgaW1wbGVtZW50IHRoaXM6XHJcbiAgICAgICAgICAgIC8vIEJlIGNhcmVmdWwgYWJvdXQgZ2V0dGluZyBwcm9wZXIgdW5pZm9ybSByYW5kb20gZGlzdHJpYnV0aW9uIVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZ2V0VGlsZUF0KGNvb3JkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlRGVzdHNGcm9tKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlU291cmNlc1RvKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1pbk1vdmVzRnJvbVRvKHNvdXJjZSwgZGVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICBnZXREZXN0c0Zyb21Tb3VyY2VzVG8ob3JpZ2luQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRpbGVEZXN0c0Zyb20ob3JpZ2luQ29vcmQsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U3Bhd25Db29yZHMocGxheWVyQ291bnRzLCBkaW1lbnNpb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRpYyBnZXRBcmVhKGRpbSkge1xyXG4gICAgICAgICAgICBjb25zdCBzaG9ydGVyU2lkZSA9IE1hdGgubWluKGRpbS5mc2xhc2gsIGRpbS5ic2xhc2gpO1xyXG4gICAgICAgICAgICBjb25zdCBsb25nZXJTaWRlID0gTWF0aC5tYXgoZGltLmZzbGFzaCwgZGltLmJzbGFzaCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gKC0xKSArIGRpbS5kYXNoICsgc2hvcnRlclNpZGU7XHJcbiAgICAgICAgICAgIGxldCBhcmVhID0gMiAqIHNob3J0ZXJTaWRlICogKGRpbS5kYXNoICsgd2lkdGgpO1xyXG4gICAgICAgICAgICBhcmVhICs9IChsb25nZXJTaWRlIC0gc2hvcnRlclNpZGUgLSAxKSAqIHdpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJlYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldERpYW1ldGVyT2ZMYXR0aWNlUGF0Y2hIYXZpbmdBcmVhKGFyZWEpIHtcclxuICAgICAgICAgICAgaWYgKGFyZWEgPCAwLjI1KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImRldGVybWluYW50IG9mIGEgcmFkaWNhbCB3aWxsIGJlIHN0cmljdGx5IG5lZ2F0aXZlLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBHaXZlbiByYWRpdXMgYHJgIGFuZCBkaWFtZXRlciA9IGAxICsgMipyYCwgdGhlIGFyZWEgaXNcclxuICAgICAgICAgICAgLy8gYDEgKyA2KnIqKDErcikvMmAuIFJlYXJyYW5nZSB0byBzb2x2ZSBmb3IgYGRgIGdpdmVuIHRoZVxyXG4gICAgICAgICAgICAvLyBhcmVhOiBgMCA9IDNyXjIgKyAzciArICgxLWEpYC4gVXNlIHF1YWRyYXRpYyBmb3JtdWxhLlxyXG4gICAgICAgICAgICBjb25zdCByYWRpdXMgPSAoKC0zKSArIE1hdGguc3FydCg5IC0gKDEyICogKDEgLSBhcmVhKSkpKSAvIDY7XHJcbiAgICAgICAgICAgIHJldHVybiAxICsgKDIgKiByYWRpdXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0UmFuZG9tQ29vcmQoZGltZW5zaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgR3JpZC5TSVpFX0xJTUlUUyA9IE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgIGRhc2g6IE9iamVjdC5mcmVlemUoeyBtaW46IDEwLCBtYXg6IDUwIH0pLFxyXG4gICAgICAgIGJzbGFzaDogT2JqZWN0LmZyZWV6ZSh7IG1pbjogMTAsIG1heDogNTAgfSksXHJcbiAgICAgICAgZnNsYXNoOiBPYmplY3QuZnJlZXplKHsgbWluOiAxMCwgbWF4OiA1MCB9KSxcclxuICAgIH0pO1xyXG4gICAgQmVlaGl2ZS5HcmlkID0gR3JpZDtcclxuICAgIEpzVXRpbHMucHJvdG9Ob0VudW0oR3JpZCwgW1wiX2dldFRpbGVBdFwiLCBcIl9nZXRUaWxlRGVzdHNGcm9tXCIsIFwiX2dldFRpbGVTb3VyY2VzVG9cIl0pO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShHcmlkKTtcclxuICAgIE9iamVjdC5mcmVlemUoR3JpZC5wcm90b3R5cGUpO1xyXG59KShCZWVoaXZlIHx8IChCZWVoaXZlID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShCZWVoaXZlKTtcclxuLyoqXHJcbiAqL1xyXG4vLyBTZXBhcmF0ZWQgZm9yIHRyZWUtc2hha2luZy5cclxuZXhwb3J0IGNsYXNzIEJlZWhpdmVWaXNpYmxlR3JpZCBleHRlbmRzIEJlZWhpdmUuR3JpZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihkZXNjKSB7XHJcbiAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgY29uc3QgZG9tR3JpZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBUT0RPLmltcGwgQmVlaGl2ZSBWaXNpYmxlR3JpZCBjdG9yLlxyXG4gICAgICAgIHRoaXMuX3N1cGVyVmlzaWJsZUdyaWQoZGVzYywgZG9tR3JpZCk7XHJcbiAgICB9XHJcbn1cclxuO1xyXG5Kc1V0aWxzLmFwcGx5TWl4aW5zKEJlZWhpdmVWaXNpYmxlR3JpZCwgW1Zpc2libGVHcmlkTWl4aW5dKTtcclxuT2JqZWN0LmZyZWV6ZShCZWVoaXZlVmlzaWJsZUdyaWQpO1xyXG5PYmplY3QuZnJlZXplKEJlZWhpdmVWaXNpYmxlR3JpZC5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/impl/Beehive.ts\n"); - -/***/ }), - -/***/ "./src/base/floor/impl/Euclid2.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Euclid2\": () => /* binding */ Euclid2,\n/* harmony export */ \"Euclid2VisibleGrid\": () => /* binding */ Euclid2VisibleGrid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/Grid.ts\");\n/* harmony import */ var _VisibleGrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nvar Euclid2;\r\n(function (Euclid2) {\r\n /**\r\n * # Euclid2 Coord\r\n */\r\n class Coord {\r\n constructor(desc) {\r\n this.x = desc.x;\r\n this.y = desc.y;\r\n Object.freeze(this);\r\n }\r\n _equals(other) {\r\n return (this.x === other.x) && (this.y === other.y);\r\n }\r\n round() {\r\n return new Coord({\r\n x: Math.round(this.x),\r\n y: Math.round(this.y),\r\n });\r\n }\r\n /**\r\n * Also known as the \"manhattan norm\".\r\n *\r\n * _Do not override this._\r\n *\r\n * @param other - The norm is taken relative to `other`.\r\n * @returns The sum of the absolute values of each coordinate.\r\n */\r\n oneNorm(other) {\r\n return this.sub(other).originOneNorm();\r\n }\r\n originOneNorm() {\r\n return Math.abs(this.x) + Math.abs(this.y);\r\n }\r\n /**\r\n *\r\n * _Do not override this._\r\n *\r\n * @param other - The norm is taken relative to `other`.\r\n * @returns The length of the longest dimension.\r\n */\r\n infNorm(other) {\r\n return this.sub(other).originInfNorm();\r\n }\r\n originInfNorm() {\r\n return Math.max(Math.abs(this.x), Math.abs(this.y));\r\n }\r\n /**\r\n * @returns\r\n * A number in the range (0, 1). `One` means the x and y coordinates\r\n * align to the x or y axis, and `Zero` means they are plus or minus\r\n * 45 degrees from the x or y axis.\r\n *\r\n * You can try this yourself in [Desmos](https://www.desmos.com/calculator)\r\n * by pasting in the below code segment and adding a slider for `a`\r\n * for continuous values between zero and one.\r\n *\r\n * ```latex\r\n * \\frac{\\left|\\left|x\\right|-\\left|y\\right|\\right|}{\\left|x\\right|+\\left|y\\right|}=a\r\n * ```\r\n *\r\n * @param other - The alignment is taken relative to `other`.\r\n */\r\n axialAlignment(other) {\r\n return this.sub(other).originAxialAlignment();\r\n }\r\n originAxialAlignment() {\r\n return Math.abs(Math.abs(this.x) - Math.abs(this.y))\r\n / (Math.abs(this.x) + Math.abs(this.y));\r\n }\r\n add(other) {\r\n return new Coord({\r\n x: this.x + other.x,\r\n y: this.y + other.y,\r\n });\r\n }\r\n sub(other) {\r\n return new Coord({\r\n x: this.x - other.x,\r\n y: this.y - other.y,\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n mul(scalar) {\r\n return new Coord({\r\n x: scalar * this.x,\r\n y: scalar * this.y,\r\n });\r\n }\r\n }\r\n Euclid2.Coord = Coord;\r\n Object.freeze(Coord);\r\n Object.freeze(Coord.prototype);\r\n /**\r\n * # Euclid2 Grid\r\n */\r\n class Grid extends _Grid__WEBPACK_IMPORTED_MODULE_1__.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const grid = [];\r\n for (let row = 0; row < this.dimensions.height; row++) {\r\n const newRow = [];\r\n for (let col = 0; col < this.dimensions.width; col++) {\r\n const newTile = new desc.tileClass(new Coord({ x: col, y: row }));\r\n newRow.push(newTile);\r\n }\r\n grid.push(Object.freeze(newRow));\r\n }\r\n this.grid = Object.freeze(grid);\r\n }\r\n static getAmbiguityThreshold() {\r\n return 24;\r\n }\r\n static getSizeLimits() { return this.SIZE_LIMITS; }\r\n forEachTile(consumer) {\r\n let i = 0;\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n consumer(tile, i++);\r\n }\r\n }\r\n }\r\n shuffledForEachTile(consumer) {\r\n this.grid.flat()\r\n .sort((a, b) => Math.random() - 0.5)\r\n .forEach((tile) => consumer(tile));\r\n }\r\n getUntToward(intendedDest, sourceCoord) {\r\n const options = this.tile.destsFrom(sourceCoord).unoccupied.get;\r\n if (options.length === 0) {\r\n return this.tile.at(sourceCoord);\r\n }\r\n if (options.length === 1) {\r\n // Minor optimization:\r\n return options[0];\r\n }\r\n options.sort((tileA, TileB) => {\r\n // Break (some) ties by one-norm:\r\n return tileA.coord.oneNorm(intendedDest) - TileB.coord.oneNorm(intendedDest);\r\n }).sort((tileA, TileB) => {\r\n // Break (some) ties by one-norm:\r\n return tileA.coord.infNorm(intendedDest) - TileB.coord.infNorm(intendedDest);\r\n });\r\n // Filter out options that are not equally favourable as the\r\n // most favourable option. I think this is the best method:\r\n // Note: it is safe to start at index `1` because of the\r\n // above short-circuit if `options.length === 1`.\r\n for (let i = 1; i < options.length; i++) {\r\n if (options[i].coord.infNorm(intendedDest) > options[0].coord.infNorm(intendedDest)) {\r\n options.splice(i);\r\n break;\r\n }\r\n }\r\n if (options.length === 1) {\r\n // Minor optimization:\r\n return options[0];\r\n }\r\n // Choose one of the most favourable using some randomness\r\n // weighted to follow a straight-looking path of movement.\r\n if (options[0].coord.x - sourceCoord.x === 0 || options[0].coord.y - sourceCoord.y === 0) {\r\n // (the axial option (if it exists) should be the first\r\n // due to the previous sort's tie-breaker.\r\n if (sourceCoord.axialAlignment(sourceCoord.sub(intendedDest)) - 0.5 > 0.0) {\r\n // The path to the intended destination is aligned more\r\n // with the x or y axis than they are with those axes\r\n // rotated 45 degrees.\r\n return options[0];\r\n }\r\n else {\r\n // Ignore the axial option in further computations:\r\n options.shift();\r\n }\r\n }\r\n // Choose a random non-axial option:\r\n return options[Math.floor(options.length * Math.random())];\r\n }\r\n getUntAwayFrom(avoidCoord, sourceCoord) {\r\n return this.getUntToward(sourceCoord.add(sourceCoord.sub(avoidCoord)), sourceCoord);\r\n }\r\n /**\r\n * @override\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return this._getTileDestsFrom(originCoord, 2);\r\n }\r\n getRandomCoordAround(origin, radius) {\r\n return new Coord({\r\n x: origin.x + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n y: origin.y + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n });\r\n }\r\n _getTileAt(coord) {\r\n // if (coord.x < 0 || coord.x >= this.dimensions.width ||\r\n // coord.y < 0 || coord.y >= this.dimensions.height\r\n // ) {\r\n // throw new RangeError(\"Out of bounds. No such tile exists.\");\r\n // }\r\n return this.grid[coord.y][coord.x];\r\n }\r\n _getTileDestsFrom(coord, radius = 1) {\r\n let t = coord.y - radius;\r\n let b = coord.y + radius + 1;\r\n let l = coord.x - radius;\r\n let r = coord.x + radius + 1;\r\n if (t >= this.dimensions.height || b < 0\r\n || l >= this.dimensions.width || r < 0)\r\n return [];\r\n return this.grid.slice(\r\n // filter for included rows:\r\n Math.max(0, t), Math.min(this.dimensions.height, b)).flatMap((gridRow) => gridRow.slice(\r\n // filter for included slices of rows (columns):\r\n Math.max(0, l), Math.min(this.dimensions.width, r)));\r\n }\r\n _getTileSourcesTo(coord, radius = 1) {\r\n // Same behaviour as getting destinations from `coord`.\r\n return this._getTileDestsFrom(coord, radius);\r\n }\r\n minMovesFromTo(source, dest) {\r\n return Math.min(Math.abs(dest.x - source.x), Math.abs(dest.y - source.y));\r\n }\r\n static getSpawnCoords(playerCounts, dimensions) {\r\n const avoidSet = [];\r\n return playerCounts.map((numMembers) => {\r\n const teamSpawnCoords = [];\r\n while (numMembers > 0) {\r\n let coord;\r\n do {\r\n coord = Grid.getRandomCoord(dimensions);\r\n } while (avoidSet.find((other) => coord._equals(other)));\r\n teamSpawnCoords.push(coord);\r\n avoidSet.push(coord);\r\n numMembers--;\r\n }\r\n return teamSpawnCoords;\r\n });\r\n }\r\n static getArea(dim) {\r\n return dim.height * dim.width;\r\n }\r\n static getDiameterOfLatticePatchHavingArea(area) {\r\n return Math.sqrt(area);\r\n }\r\n static getRandomCoord(dimensions) {\r\n const x = Math.floor(dimensions.width * Math.random());\r\n const y = Math.floor(dimensions.height * Math.random());\r\n return new Coord({ x, y });\r\n }\r\n }\r\n Grid.SIZE_LIMITS = Object.freeze({\r\n height: Object.freeze({ min: 11, max: 51 }),\r\n width: Object.freeze({ min: 11, max: 51 }),\r\n });\r\n Euclid2.Grid = Grid;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Grid, [\"_getTileAt\", \"_getTileDestsFrom\", \"_getTileSourcesTo\"]);\r\n Object.freeze(Grid);\r\n Object.freeze(Grid.prototype);\r\n})(Euclid2 || (Euclid2 = {}));\r\nObject.freeze(Euclid2);\r\n/**\r\n */\r\n// Separated for tree-shaking.\r\nclass Euclid2VisibleGrid extends Euclid2.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const gridElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n gridElem.style.setProperty(\"--euclid2-grid-width\", this.dimensions.width.toString());\r\n // At below use of for loop without breaks: For shallower stack when debugging.\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n tile._addToDom(gridElem);\r\n }\r\n }\r\n this._superVisibleGrid(desc, gridElem);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.applyMixins(Euclid2VisibleGrid, [_VisibleGrid__WEBPACK_IMPORTED_MODULE_2__.VisibleGridMixin]);\r\nObject.freeze(Euclid2VisibleGrid);\r\nObject.freeze(Euclid2VisibleGrid.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9pbXBsL0V1Y2xpZDIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZmxvb3IvaW1wbC9FdWNsaWQyLnRzPzExN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgR3JpZCBhcyBBYnN0cmFjdEdyaWQgfSBmcm9tIFwiLi4vR3JpZFwiO1xyXG5pbXBvcnQgeyBWaXNpYmxlR3JpZE1peGluIH0gZnJvbSBcIi4uL1Zpc2libGVHcmlkXCI7XHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IHZhciBFdWNsaWQyO1xyXG4oZnVuY3Rpb24gKEV1Y2xpZDIpIHtcclxuICAgIC8qKlxyXG4gICAgICogIyBFdWNsaWQyIENvb3JkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIENvb3JkIHtcclxuICAgICAgICBjb25zdHJ1Y3RvcihkZXNjKSB7XHJcbiAgICAgICAgICAgIHRoaXMueCA9IGRlc2MueDtcclxuICAgICAgICAgICAgdGhpcy55ID0gZGVzYy55O1xyXG4gICAgICAgICAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZXF1YWxzKG90aGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy54ID09PSBvdGhlci54KSAmJiAodGhpcy55ID09PSBvdGhlci55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm91bmQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoe1xyXG4gICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZCh0aGlzLngpLFxyXG4gICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZCh0aGlzLnkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQWxzbyBrbm93biBhcyB0aGUgXCJtYW5oYXR0YW4gbm9ybVwiLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogX0RvIG5vdCBvdmVycmlkZSB0aGlzLl9cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBvdGhlciAtIFRoZSBub3JtIGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICogQHJldHVybnMgVGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIGVhY2ggY29vcmRpbmF0ZS5cclxuICAgICAgICAgKi9cclxuICAgICAgICBvbmVOb3JtKG90aGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YihvdGhlcikub3JpZ2luT25lTm9ybSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcmlnaW5PbmVOb3JtKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy54KSArIE1hdGguYWJzKHRoaXMueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogX0RvIG5vdCBvdmVycmlkZSB0aGlzLl9cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBvdGhlciAtIFRoZSBub3JtIGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICogQHJldHVybnMgVGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBkaW1lbnNpb24uXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaW5mTm9ybShvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWIob3RoZXIpLm9yaWdpbkluZk5vcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3JpZ2luSW5mTm9ybSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMueCksIE1hdGguYWJzKHRoaXMueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcmV0dXJuc1xyXG4gICAgICAgICAqIEEgbnVtYmVyIGluIHRoZSByYW5nZSAoMCwgMSkuIGBPbmVgIG1lYW5zIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGVzXHJcbiAgICAgICAgICogYWxpZ24gdG8gdGhlIHggb3IgeSBheGlzLCBhbmQgYFplcm9gIG1lYW5zIHRoZXkgYXJlIHBsdXMgb3IgbWludXNcclxuICAgICAgICAgKiA0NSBkZWdyZWVzIGZyb20gdGhlIHggb3IgeSBheGlzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogWW91IGNhbiB0cnkgdGhpcyB5b3Vyc2VsZiBpbiBbRGVzbW9zXShodHRwczovL3d3dy5kZXNtb3MuY29tL2NhbGN1bGF0b3IpXHJcbiAgICAgICAgICogYnkgcGFzdGluZyBpbiB0aGUgYmVsb3cgY29kZSBzZWdtZW50IGFuZCBhZGRpbmcgYSBzbGlkZXIgZm9yIGBhYFxyXG4gICAgICAgICAqIGZvciBjb250aW51b3VzIHZhbHVlcyBiZXR3ZWVuIHplcm8gYW5kIG9uZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIGBgYGxhdGV4XHJcbiAgICAgICAgICogXFxmcmFje1xcbGVmdHxcXGxlZnR8eFxccmlnaHR8LVxcbGVmdHx5XFxyaWdodHxcXHJpZ2h0fH17XFxsZWZ0fHhcXHJpZ2h0fCtcXGxlZnR8eVxccmlnaHR8fT1hXHJcbiAgICAgICAgICogYGBgXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0gb3RoZXIgLSBUaGUgYWxpZ25tZW50IGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgYXhpYWxBbGlnbm1lbnQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3ViKG90aGVyKS5vcmlnaW5BeGlhbEFsaWdubWVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcmlnaW5BeGlhbEFsaWdubWVudCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKE1hdGguYWJzKHRoaXMueCkgLSBNYXRoLmFicyh0aGlzLnkpKVxyXG4gICAgICAgICAgICAgICAgLyAoTWF0aC5hYnModGhpcy54KSArIE1hdGguYWJzKHRoaXMueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb29yZCh7XHJcbiAgICAgICAgICAgICAgICB4OiB0aGlzLnggKyBvdGhlci54LFxyXG4gICAgICAgICAgICAgICAgeTogdGhpcy55ICsgb3RoZXIueSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1YihvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMueCAtIG90aGVyLngsXHJcbiAgICAgICAgICAgICAgICB5OiB0aGlzLnkgLSBvdGhlci55LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQG92ZXJyaWRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbXVsKHNjYWxhcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIHg6IHNjYWxhciAqIHRoaXMueCxcclxuICAgICAgICAgICAgICAgIHk6IHNjYWxhciAqIHRoaXMueSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgRXVjbGlkMi5Db29yZCA9IENvb3JkO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShDb29yZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKENvb3JkLnByb3RvdHlwZSk7XHJcbiAgICAvKipcclxuICAgICAqICMgRXVjbGlkMiBHcmlkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIEdyaWQgZXh0ZW5kcyBBYnN0cmFjdEdyaWQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRlc2MpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5kaW1lbnNpb25zLmhlaWdodDsgcm93KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgdGhpcy5kaW1lbnNpb25zLndpZHRoOyBjb2wrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RpbGUgPSBuZXcgZGVzYy50aWxlQ2xhc3MobmV3IENvb3JkKHsgeDogY29sLCB5OiByb3cgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKG5ld1RpbGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3JpZC5wdXNoKE9iamVjdC5mcmVlemUobmV3Um93KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ncmlkID0gT2JqZWN0LmZyZWV6ZShncmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldEFtYmlndWl0eVRocmVzaG9sZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDI0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U2l6ZUxpbWl0cygpIHsgcmV0dXJuIHRoaXMuU0laRV9MSU1JVFM7IH1cclxuICAgICAgICBmb3JFYWNoVGlsZShjb25zdW1lcikge1xyXG4gICAgICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMuZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWxlIG9mIHJvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVyKHRpbGUsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2h1ZmZsZWRGb3JFYWNoVGlsZShjb25zdW1lcikge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWQuZmxhdCgpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSlcclxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh0aWxlKSA9PiBjb25zdW1lcih0aWxlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFVudFRvd2FyZChpbnRlbmRlZERlc3QsIHNvdXJjZUNvb3JkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnRpbGUuZGVzdHNGcm9tKHNvdXJjZUNvb3JkKS51bm9jY3VwaWVkLmdldDtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aWxlLmF0KHNvdXJjZUNvb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIC8vIE1pbm9yIG9wdGltaXphdGlvbjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydCgodGlsZUEsIFRpbGVCKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBCcmVhayAoc29tZSkgdGllcyBieSBvbmUtbm9ybTpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWxlQS5jb29yZC5vbmVOb3JtKGludGVuZGVkRGVzdCkgLSBUaWxlQi5jb29yZC5vbmVOb3JtKGludGVuZGVkRGVzdCk7XHJcbiAgICAgICAgICAgIH0pLnNvcnQoKHRpbGVBLCBUaWxlQikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gQnJlYWsgKHNvbWUpIHRpZXMgYnkgb25lLW5vcm06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGlsZUEuY29vcmQuaW5mTm9ybShpbnRlbmRlZERlc3QpIC0gVGlsZUIuY29vcmQuaW5mTm9ybShpbnRlbmRlZERlc3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBvcHRpb25zIHRoYXQgYXJlIG5vdCBlcXVhbGx5IGZhdm91cmFibGUgYXMgdGhlXHJcbiAgICAgICAgICAgIC8vIG1vc3QgZmF2b3VyYWJsZSBvcHRpb24uIEkgdGhpbmsgdGhpcyBpcyB0aGUgYmVzdCBtZXRob2Q6XHJcbiAgICAgICAgICAgIC8vIE5vdGU6IGl0IGlzIHNhZmUgdG8gc3RhcnQgYXQgaW5kZXggYDFgIGJlY2F1c2Ugb2YgdGhlXHJcbiAgICAgICAgICAgIC8vIGFib3ZlIHNob3J0LWNpcmN1aXQgaWYgYG9wdGlvbnMubGVuZ3RoID09PSAxYC5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS5jb29yZC5pbmZOb3JtKGludGVuZGVkRGVzdCkgPiBvcHRpb25zWzBdLmNvb3JkLmluZk5vcm0oaW50ZW5kZWREZXN0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3BsaWNlKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gTWlub3Igb3B0aW1pemF0aW9uOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gQ2hvb3NlIG9uZSBvZiB0aGUgbW9zdCBmYXZvdXJhYmxlIHVzaW5nIHNvbWUgcmFuZG9tbmVzc1xyXG4gICAgICAgICAgICAvLyB3ZWlnaHRlZCB0byBmb2xsb3cgYSBzdHJhaWdodC1sb29raW5nIHBhdGggb2YgbW92ZW1lbnQuXHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zWzBdLmNvb3JkLnggLSBzb3VyY2VDb29yZC54ID09PSAwIHx8IG9wdGlvbnNbMF0uY29vcmQueSAtIHNvdXJjZUNvb3JkLnkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vICh0aGUgYXhpYWwgb3B0aW9uIChpZiBpdCBleGlzdHMpIHNob3VsZCBiZSB0aGUgZmlyc3RcclxuICAgICAgICAgICAgICAgIC8vIGR1ZSB0byB0aGUgcHJldmlvdXMgc29ydCdzIHRpZS1icmVha2VyLlxyXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUNvb3JkLmF4aWFsQWxpZ25tZW50KHNvdXJjZUNvb3JkLnN1YihpbnRlbmRlZERlc3QpKSAtIDAuNSA+IDAuMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRoIHRvIHRoZSBpbnRlbmRlZCBkZXN0aW5hdGlvbiBpcyBhbGlnbmVkIG1vcmVcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSB4IG9yIHkgYXhpcyB0aGFuIHRoZXkgYXJlIHdpdGggdGhvc2UgYXhlc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJvdGF0ZWQgNDUgZGVncmVlcy5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1swXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgYXhpYWwgb3B0aW9uIGluIGZ1cnRoZXIgY29tcHV0YXRpb25zOlxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBDaG9vc2UgYSByYW5kb20gbm9uLWF4aWFsIG9wdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbTWF0aC5mbG9vcihvcHRpb25zLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50QXdheUZyb20oYXZvaWRDb29yZCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW50VG93YXJkKHNvdXJjZUNvb3JkLmFkZChzb3VyY2VDb29yZC5zdWIoYXZvaWRDb29yZCkpLCBzb3VyY2VDb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBvdmVycmlkZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGdldERlc3RzRnJvbVNvdXJjZXNUbyhvcmlnaW5Db29yZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZURlc3RzRnJvbShvcmlnaW5Db29yZCwgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFJhbmRvbUNvb3JkQXJvdW5kKG9yaWdpbiwgcmFkaXVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoe1xyXG4gICAgICAgICAgICAgICAgeDogb3JpZ2luLnggKyBNYXRoLnRydW5jKDIgKiByYWRpdXMgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSkpLFxyXG4gICAgICAgICAgICAgICAgeTogb3JpZ2luLnkgKyBNYXRoLnRydW5jKDIgKiByYWRpdXMgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2dldFRpbGVBdChjb29yZCkge1xyXG4gICAgICAgICAgICAvLyBpZiAoY29vcmQueCA8IDAgfHwgY29vcmQueCA+PSB0aGlzLmRpbWVuc2lvbnMud2lkdGggfHxcclxuICAgICAgICAgICAgLy8gICAgIGNvb3JkLnkgPCAwIHx8IGNvb3JkLnkgPj0gdGhpcy5kaW1lbnNpb25zLmhlaWdodFxyXG4gICAgICAgICAgICAvLyApIHtcclxuICAgICAgICAgICAgLy8gICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiT3V0IG9mIGJvdW5kcy4gTm8gc3VjaCB0aWxlIGV4aXN0cy5cIik7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZFtjb29yZC55XVtjb29yZC54XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2dldFRpbGVEZXN0c0Zyb20oY29vcmQsIHJhZGl1cyA9IDEpIHtcclxuICAgICAgICAgICAgbGV0IHQgPSBjb29yZC55IC0gcmFkaXVzO1xyXG4gICAgICAgICAgICBsZXQgYiA9IGNvb3JkLnkgKyByYWRpdXMgKyAxO1xyXG4gICAgICAgICAgICBsZXQgbCA9IGNvb3JkLnggLSByYWRpdXM7XHJcbiAgICAgICAgICAgIGxldCByID0gY29vcmQueCArIHJhZGl1cyArIDE7XHJcbiAgICAgICAgICAgIGlmICh0ID49IHRoaXMuZGltZW5zaW9ucy5oZWlnaHQgfHwgYiA8IDBcclxuICAgICAgICAgICAgICAgIHx8IGwgPj0gdGhpcy5kaW1lbnNpb25zLndpZHRoIHx8IHIgPCAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNsaWNlKFxyXG4gICAgICAgICAgICAvLyBmaWx0ZXIgZm9yIGluY2x1ZGVkIHJvd3M6XHJcbiAgICAgICAgICAgIE1hdGgubWF4KDAsIHQpLCBNYXRoLm1pbih0aGlzLmRpbWVuc2lvbnMuaGVpZ2h0LCBiKSkuZmxhdE1hcCgoZ3JpZFJvdykgPT4gZ3JpZFJvdy5zbGljZShcclxuICAgICAgICAgICAgLy8gZmlsdGVyIGZvciBpbmNsdWRlZCBzbGljZXMgb2Ygcm93cyAoY29sdW1ucyk6XHJcbiAgICAgICAgICAgIE1hdGgubWF4KDAsIGwpLCBNYXRoLm1pbih0aGlzLmRpbWVuc2lvbnMud2lkdGgsIHIpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlU291cmNlc1RvKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIFNhbWUgYmVoYXZpb3VyIGFzIGdldHRpbmcgZGVzdGluYXRpb25zIGZyb20gYGNvb3JkYC5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRpbGVEZXN0c0Zyb20oY29vcmQsIHJhZGl1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1pbk1vdmVzRnJvbVRvKHNvdXJjZSwgZGVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5hYnMoZGVzdC54IC0gc291cmNlLngpLCBNYXRoLmFicyhkZXN0LnkgLSBzb3VyY2UueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U3Bhd25Db29yZHMocGxheWVyQ291bnRzLCBkaW1lbnNpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF2b2lkU2V0ID0gW107XHJcbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXJDb3VudHMubWFwKChudW1NZW1iZXJzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtU3Bhd25Db29yZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChudW1NZW1iZXJzID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb29yZDtcclxuICAgICAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkID0gR3JpZC5nZXRSYW5kb21Db29yZChkaW1lbnNpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChhdm9pZFNldC5maW5kKChvdGhlcikgPT4gY29vcmQuX2VxdWFscyhvdGhlcikpKTtcclxuICAgICAgICAgICAgICAgICAgICB0ZWFtU3Bhd25Db29yZHMucHVzaChjb29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXZvaWRTZXQucHVzaChjb29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtTWVtYmVycy0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRlYW1TcGF3bkNvb3JkcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRpYyBnZXRBcmVhKGRpbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodCAqIGRpbS53aWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldERpYW1ldGVyT2ZMYXR0aWNlUGF0Y2hIYXZpbmdBcmVhKGFyZWEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChhcmVhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldFJhbmRvbUNvb3JkKGRpbWVuc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgeCA9IE1hdGguZmxvb3IoZGltZW5zaW9ucy53aWR0aCAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5mbG9vcihkaW1lbnNpb25zLmhlaWdodCAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgeCwgeSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBHcmlkLlNJWkVfTElNSVRTID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgaGVpZ2h0OiBPYmplY3QuZnJlZXplKHsgbWluOiAxMSwgbWF4OiA1MSB9KSxcclxuICAgICAgICB3aWR0aDogT2JqZWN0LmZyZWV6ZSh7IG1pbjogMTEsIG1heDogNTEgfSksXHJcbiAgICB9KTtcclxuICAgIEV1Y2xpZDIuR3JpZCA9IEdyaWQ7XHJcbiAgICBKc1V0aWxzLnByb3RvTm9FbnVtKEdyaWQsIFtcIl9nZXRUaWxlQXRcIiwgXCJfZ2V0VGlsZURlc3RzRnJvbVwiLCBcIl9nZXRUaWxlU291cmNlc1RvXCJdKTtcclxuICAgIE9iamVjdC5mcmVlemUoR3JpZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKEdyaWQucHJvdG90eXBlKTtcclxufSkoRXVjbGlkMiB8fCAoRXVjbGlkMiA9IHt9KSk7XHJcbk9iamVjdC5mcmVlemUoRXVjbGlkMik7XHJcbi8qKlxyXG4gKi9cclxuLy8gU2VwYXJhdGVkIGZvciB0cmVlLXNoYWtpbmcuXHJcbmV4cG9ydCBjbGFzcyBFdWNsaWQyVmlzaWJsZUdyaWQgZXh0ZW5kcyBFdWNsaWQyLkdyaWQge1xyXG4gICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgIHN1cGVyKGRlc2MpO1xyXG4gICAgICAgIGNvbnN0IGdyaWRFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtdKTtcclxuICAgICAgICBncmlkRWxlbS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tZXVjbGlkMi1ncmlkLXdpZHRoXCIsIHRoaXMuZGltZW5zaW9ucy53aWR0aC50b1N0cmluZygpKTtcclxuICAgICAgICAvLyBBdCBiZWxvdyB1c2Ugb2YgZm9yIGxvb3Agd2l0aG91dCBicmVha3M6IEZvciBzaGFsbG93ZXIgc3RhY2sgd2hlbiBkZWJ1Z2dpbmcuXHJcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5ncmlkKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGlsZSBvZiByb3cpIHtcclxuICAgICAgICAgICAgICAgIHRpbGUuX2FkZFRvRG9tKGdyaWRFbGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zdXBlclZpc2libGVHcmlkKGRlc2MsIGdyaWRFbGVtKTtcclxuICAgIH1cclxufVxyXG47XHJcbkpzVXRpbHMuYXBwbHlNaXhpbnMoRXVjbGlkMlZpc2libGVHcmlkLCBbVmlzaWJsZUdyaWRNaXhpbl0pO1xyXG5PYmplY3QuZnJlZXplKEV1Y2xpZDJWaXNpYmxlR3JpZCk7XHJcbk9iamVjdC5mcmVlemUoRXVjbGlkMlZpc2libGVHcmlkLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/impl/Euclid2.ts\n"); - -/***/ }), - -/***/ "./src/base/game/ctormaps/CmapBrowser.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n/* harmony import */ var floor_impl_Euclid2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/impl/Euclid2.ts\");\n/* harmony import */ var floor_impl_Beehive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/impl/Beehive.ts\");\n\r\n\r\n\r\n/**\r\n */\r\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => {\r\n // Visible Grid Implementation Registry:\r\n const VGr = floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_0__.VisibleGrid;\r\n VGr._Constructors\r\n = Object.freeze({\r\n [\"EUCLID2\"]: floor_impl_Euclid2__WEBPACK_IMPORTED_MODULE_1__.Euclid2VisibleGrid,\r\n [\"BEEHIVE\"]: floor_impl_Beehive__WEBPACK_IMPORTED_MODULE_2__.BeehiveVisibleGrid,\r\n });\r\n Object.freeze(VGr);\r\n // This is just an interface. There is no instance prototype to freeze.\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2N0b3JtYXBzL0NtYXBCcm93c2VyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvY3Rvcm1hcHMvQ21hcEJyb3dzZXIudHM/Y2I0ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaXNpYmxlR3JpZCB9IGZyb20gXCJmbG9vci9WaXNpYmxlR3JpZFwiO1xyXG5pbXBvcnQgeyBFdWNsaWQyVmlzaWJsZUdyaWQgfSBmcm9tIFwiZmxvb3IvaW1wbC9FdWNsaWQyXCI7XHJcbmltcG9ydCB7IEJlZWhpdmVWaXNpYmxlR3JpZCB9IGZyb20gXCJmbG9vci9pbXBsL0JlZWhpdmVcIjtcclxuLyoqXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XHJcbiAgICAvLyBWaXNpYmxlIEdyaWQgSW1wbGVtZW50YXRpb24gUmVnaXN0cnk6XHJcbiAgICBjb25zdCBWR3IgPSBWaXNpYmxlR3JpZDtcclxuICAgIFZHci5fQ29uc3RydWN0b3JzXHJcbiAgICAgICAgPSBPYmplY3QuZnJlZXplKHtcclxuICAgICAgICAgICAgW1wiRVVDTElEMlwiXTogRXVjbGlkMlZpc2libGVHcmlkLFxyXG4gICAgICAgICAgICBbXCJCRUVISVZFXCJdOiBCZWVoaXZlVmlzaWJsZUdyaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICBPYmplY3QuZnJlZXplKFZHcik7XHJcbiAgICAvLyBUaGlzIGlzIGp1c3QgYW4gaW50ZXJmYWNlLiBUaGVyZSBpcyBubyBpbnN0YW5jZSBwcm90b3R5cGUgdG8gZnJlZXplLlxyXG59O1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/ctormaps/CmapBrowser.ts\n"); - -/***/ }), - -/***/ "./src/base/game/events/EventRecordEntry.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EventRecordEntry\": () => /* binding */ EventRecordEntry\n/* harmony export */ });\nvar EventRecordEntry;\r\n(function (EventRecordEntry) {\r\n /**\r\n * The Game Manager should assign this value to the `eventId` field\r\n * of a request-type event to signal if a request has been rejected.\r\n * It is convenient to use as a default value.\r\n */\r\n EventRecordEntry.EVENT_ID_REJECT = -1;\r\n})(EventRecordEntry || (EventRecordEntry = {}));\r\nObject.freeze(EventRecordEntry);\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9FdmVudFJlY29yZEVudHJ5LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvZXZlbnRzL0V2ZW50UmVjb3JkRW50cnkudHM/ZDAxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEV2ZW50UmVjb3JkRW50cnk7XHJcbihmdW5jdGlvbiAoRXZlbnRSZWNvcmRFbnRyeSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgR2FtZSBNYW5hZ2VyIHNob3VsZCBhc3NpZ24gdGhpcyB2YWx1ZSB0byB0aGUgYGV2ZW50SWRgIGZpZWxkXHJcbiAgICAgKiBvZiBhIHJlcXVlc3QtdHlwZSBldmVudCB0byBzaWduYWwgaWYgYSByZXF1ZXN0IGhhcyBiZWVuIHJlamVjdGVkLlxyXG4gICAgICogSXQgaXMgY29udmVuaWVudCB0byB1c2UgYXMgYSBkZWZhdWx0IHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBFdmVudFJlY29yZEVudHJ5LkVWRU5UX0lEX1JFSkVDVCA9IC0xO1xyXG59KShFdmVudFJlY29yZEVudHJ5IHx8IChFdmVudFJlY29yZEVudHJ5ID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShFdmVudFJlY29yZEVudHJ5KTtcclxuO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/game/events/EventRecordEntry.ts\n"); - -/***/ }), - -/***/ "./src/base/game/events/PlayerActionEvent.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerActionEvent\": () => /* binding */ PlayerActionEvent\n/* harmony export */ });\n/* harmony import */ var _EventRecordEntry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/game/events/EventRecordEntry.ts\");\n\r\nvar PlayerActionEvent;\r\n(function (PlayerActionEvent) {\r\n /**\r\n * This is the agreed upon value that both the server and client\r\n * copies of a game should set as the initial value for request id\r\n * counters. Remember that a request ID is a property of a player,\r\n * whereas an event ID is a property tied to a game.\r\n */\r\n PlayerActionEvent.INITIAL_REQUEST_ID = -1;\r\n PlayerActionEvent.EVENT_NAME = Object.freeze({\r\n BUBBLE: \"player-bubble\",\r\n MOVEMENT: \"player-movement\",\r\n });\r\n /**\r\n *\r\n */\r\n class Bubble {\r\n constructor(playerId, lastAcceptedRequestId) {\r\n this.eventId = _EventRecordEntry__WEBPACK_IMPORTED_MODULE_0__.EventRecordEntry.EVENT_ID_REJECT;\r\n this.affectedNeighbours = undefined;\r\n this.playerId = playerId;\r\n this.playerLastAcceptedRequestId = lastAcceptedRequestId;\r\n }\r\n }\r\n PlayerActionEvent.Bubble = Bubble;\r\n /**\r\n * ## Player Movement Event\r\n *\r\n * This single method-less class carries the bare-minimum information\r\n * needed to describe a client's request for movement to the server,\r\n * and to broadcast an acceptance of the request describing all changes\r\n * to the game state that must be made (or to otherwise direct-reply\r\n * the requester in case of request-rejection).\r\n *\r\n * It must do so in a way that allows the server and clients to infer\r\n * whether any message reordering occurred.\r\n *\r\n * ### The Problem in Summary\r\n *\r\n * - Client copies of the game should lag behind the master copy of\r\n * the game state as little as possible with as small of a choking\r\n * effect on a client's ability to send requests as possible. This\r\n * rules out doing periodic game-state-dump broadcasts (because of\r\n * the transmission delay), and \"big-locks\" requiring a client to\r\n * have a completely up-to-date copy of the game state to have its\r\n * requests processed.\r\n * - Nothing should ever happen in the client copies of the game that\r\n * doesn't happen in the master copy at the server. Ie. Since game-\r\n * state-dumps are out of the question, any corruption / de-sync of\r\n * the client's copy of the game is considered fatal and completely\r\n * unrecoverable.\r\n * - As a bonus, it would be nice to bake in a mechanism to prevent\r\n * malicious or unintended spam from a trigger-happy client without\r\n * excessively / unnecessarily throttling the request-making ability\r\n * or throughput of any clients.\r\n */\r\n class Movement extends Bubble {\r\n constructor(playerId, lastAcceptedRequestId, destTile, moveType) {\r\n super(playerId, lastAcceptedRequestId);\r\n /**\r\n * Any value assigned by the requester to this field should be\r\n * ignored by the server. The server should respond with the new\r\n * values taken on by the player for these fields.\r\n */\r\n this.newPlayerHealth = undefined;\r\n /**\r\n * Undefined is equivalent to an empty array.\r\n */\r\n this.tileHealthModDescs = undefined;\r\n this.destModDesc = {\r\n coord: destTile.coord,\r\n lastKnownUpdateId: destTile.lastKnownUpdateId,\r\n newCharSeqPair: undefined,\r\n newFreeHealth: undefined,\r\n };\r\n this.moveType = moveType;\r\n }\r\n }\r\n PlayerActionEvent.Movement = Movement;\r\n})(PlayerActionEvent || (PlayerActionEvent = {}));\r\nObject.freeze(PlayerActionEvent);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9QbGF5ZXJBY3Rpb25FdmVudC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9QbGF5ZXJBY3Rpb25FdmVudC50cz9kODJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50UmVjb3JkRW50cnkgfSBmcm9tIFwiLi9FdmVudFJlY29yZEVudHJ5XCI7XHJcbmV4cG9ydCB2YXIgUGxheWVyQWN0aW9uRXZlbnQ7XHJcbihmdW5jdGlvbiAoUGxheWVyQWN0aW9uRXZlbnQpIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyB0aGUgYWdyZWVkIHVwb24gdmFsdWUgdGhhdCBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudFxyXG4gICAgICogY29waWVzIG9mIGEgZ2FtZSBzaG91bGQgc2V0IGFzIHRoZSBpbml0aWFsIHZhbHVlIGZvciByZXF1ZXN0IGlkXHJcbiAgICAgKiBjb3VudGVycy4gUmVtZW1iZXIgdGhhdCBhIHJlcXVlc3QgSUQgaXMgYSBwcm9wZXJ0eSBvZiBhIHBsYXllcixcclxuICAgICAqIHdoZXJlYXMgYW4gZXZlbnQgSUQgaXMgYSBwcm9wZXJ0eSB0aWVkIHRvIGEgZ2FtZS5cclxuICAgICAqL1xyXG4gICAgUGxheWVyQWN0aW9uRXZlbnQuSU5JVElBTF9SRVFVRVNUX0lEID0gLTE7XHJcbiAgICBQbGF5ZXJBY3Rpb25FdmVudC5FVkVOVF9OQU1FID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgQlVCQkxFOiBcInBsYXllci1idWJibGVcIixcclxuICAgICAgICBNT1ZFTUVOVDogXCJwbGF5ZXItbW92ZW1lbnRcIixcclxuICAgIH0pO1xyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBjbGFzcyBCdWJibGUge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHBsYXllcklkLCBsYXN0QWNjZXB0ZWRSZXF1ZXN0SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudElkID0gRXZlbnRSZWNvcmRFbnRyeS5FVkVOVF9JRF9SRUpFQ1Q7XHJcbiAgICAgICAgICAgIHRoaXMuYWZmZWN0ZWROZWlnaGJvdXJzID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnBsYXllcklkID0gcGxheWVySWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGxheWVyTGFzdEFjY2VwdGVkUmVxdWVzdElkID0gbGFzdEFjY2VwdGVkUmVxdWVzdElkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFBsYXllckFjdGlvbkV2ZW50LkJ1YmJsZSA9IEJ1YmJsZTtcclxuICAgIC8qKlxyXG4gICAgICogIyMgUGxheWVyIE1vdmVtZW50IEV2ZW50XHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBzaW5nbGUgbWV0aG9kLWxlc3MgY2xhc3MgY2FycmllcyB0aGUgYmFyZS1taW5pbXVtIGluZm9ybWF0aW9uXHJcbiAgICAgKiBuZWVkZWQgdG8gZGVzY3JpYmUgYSBjbGllbnQncyByZXF1ZXN0IGZvciBtb3ZlbWVudCB0byB0aGUgc2VydmVyLFxyXG4gICAgICogYW5kIHRvIGJyb2FkY2FzdCBhbiBhY2NlcHRhbmNlIG9mIHRoZSByZXF1ZXN0IGRlc2NyaWJpbmcgYWxsIGNoYW5nZXNcclxuICAgICAqIHRvIHRoZSBnYW1lIHN0YXRlIHRoYXQgbXVzdCBiZSBtYWRlIChvciB0byBvdGhlcndpc2UgZGlyZWN0LXJlcGx5XHJcbiAgICAgKiB0aGUgcmVxdWVzdGVyIGluIGNhc2Ugb2YgcmVxdWVzdC1yZWplY3Rpb24pLlxyXG4gICAgICpcclxuICAgICAqIEl0IG11c3QgZG8gc28gaW4gYSB3YXkgdGhhdCBhbGxvd3MgdGhlIHNlcnZlciBhbmQgY2xpZW50cyB0byBpbmZlclxyXG4gICAgICogd2hldGhlciBhbnkgbWVzc2FnZSByZW9yZGVyaW5nIG9jY3VycmVkLlxyXG4gICAgICpcclxuICAgICAqICMjIyBUaGUgUHJvYmxlbSBpbiBTdW1tYXJ5XHJcbiAgICAgKlxyXG4gICAgICogLSBDbGllbnQgY29waWVzIG9mIHRoZSBnYW1lIHNob3VsZCBsYWcgYmVoaW5kIHRoZSBtYXN0ZXIgY29weSBvZlxyXG4gICAgICogICB0aGUgZ2FtZSBzdGF0ZSBhcyBsaXR0bGUgYXMgcG9zc2libGUgd2l0aCBhcyBzbWFsbCBvZiBhIGNob2tpbmdcclxuICAgICAqICAgZWZmZWN0IG9uIGEgY2xpZW50J3MgYWJpbGl0eSB0byBzZW5kIHJlcXVlc3RzIGFzIHBvc3NpYmxlLiBUaGlzXHJcbiAgICAgKiAgIHJ1bGVzIG91dCBkb2luZyBwZXJpb2RpYyBnYW1lLXN0YXRlLWR1bXAgYnJvYWRjYXN0cyAoYmVjYXVzZSBvZlxyXG4gICAgICogICB0aGUgdHJhbnNtaXNzaW9uIGRlbGF5KSwgYW5kIFwiYmlnLWxvY2tzXCIgcmVxdWlyaW5nIGEgY2xpZW50IHRvXHJcbiAgICAgKiAgIGhhdmUgYSBjb21wbGV0ZWx5IHVwLXRvLWRhdGUgY29weSBvZiB0aGUgZ2FtZSBzdGF0ZSB0byBoYXZlIGl0c1xyXG4gICAgICogICByZXF1ZXN0cyBwcm9jZXNzZWQuXHJcbiAgICAgKiAtIE5vdGhpbmcgc2hvdWxkIGV2ZXIgaGFwcGVuIGluIHRoZSBjbGllbnQgY29waWVzIG9mIHRoZSBnYW1lIHRoYXRcclxuICAgICAqICAgZG9lc24ndCBoYXBwZW4gaW4gdGhlIG1hc3RlciBjb3B5IGF0IHRoZSBzZXJ2ZXIuIEllLiBTaW5jZSBnYW1lLVxyXG4gICAgICogICBzdGF0ZS1kdW1wcyBhcmUgb3V0IG9mIHRoZSBxdWVzdGlvbiwgYW55IGNvcnJ1cHRpb24gLyBkZS1zeW5jIG9mXHJcbiAgICAgKiAgIHRoZSBjbGllbnQncyBjb3B5IG9mIHRoZSBnYW1lIGlzIGNvbnNpZGVyZWQgZmF0YWwgYW5kIGNvbXBsZXRlbHlcclxuICAgICAqICAgdW5yZWNvdmVyYWJsZS5cclxuICAgICAqIC0gQXMgYSBib251cywgaXQgd291bGQgYmUgbmljZSB0byBiYWtlIGluIGEgbWVjaGFuaXNtIHRvIHByZXZlbnRcclxuICAgICAqICAgbWFsaWNpb3VzIG9yIHVuaW50ZW5kZWQgc3BhbSBmcm9tIGEgdHJpZ2dlci1oYXBweSBjbGllbnQgd2l0aG91dFxyXG4gICAgICogICBleGNlc3NpdmVseSAvIHVubmVjZXNzYXJpbHkgdGhyb3R0bGluZyB0aGUgcmVxdWVzdC1tYWtpbmcgYWJpbGl0eVxyXG4gICAgICogICBvciB0aHJvdWdocHV0IG9mIGFueSBjbGllbnRzLlxyXG4gICAgICovXHJcbiAgICBjbGFzcyBNb3ZlbWVudCBleHRlbmRzIEJ1YmJsZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IocGxheWVySWQsIGxhc3RBY2NlcHRlZFJlcXVlc3RJZCwgZGVzdFRpbGUsIG1vdmVUeXBlKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKHBsYXllcklkLCBsYXN0QWNjZXB0ZWRSZXF1ZXN0SWQpO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQW55IHZhbHVlIGFzc2lnbmVkIGJ5IHRoZSByZXF1ZXN0ZXIgdG8gdGhpcyBmaWVsZCBzaG91bGQgYmVcclxuICAgICAgICAgICAgICogaWdub3JlZCBieSB0aGUgc2VydmVyLiBUaGUgc2VydmVyIHNob3VsZCByZXNwb25kIHdpdGggdGhlIG5ld1xyXG4gICAgICAgICAgICAgKiB2YWx1ZXMgdGFrZW4gb24gYnkgdGhlIHBsYXllciBmb3IgdGhlc2UgZmllbGRzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgdGhpcy5uZXdQbGF5ZXJIZWFsdGggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBVbmRlZmluZWQgaXMgZXF1aXZhbGVudCB0byBhbiBlbXB0eSBhcnJheS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIHRoaXMudGlsZUhlYWx0aE1vZERlc2NzID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLmRlc3RNb2REZXNjID0ge1xyXG4gICAgICAgICAgICAgICAgY29vcmQ6IGRlc3RUaWxlLmNvb3JkLFxyXG4gICAgICAgICAgICAgICAgbGFzdEtub3duVXBkYXRlSWQ6IGRlc3RUaWxlLmxhc3RLbm93blVwZGF0ZUlkLFxyXG4gICAgICAgICAgICAgICAgbmV3Q2hhclNlcVBhaXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIG5ld0ZyZWVIZWFsdGg6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVHlwZSA9IG1vdmVUeXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFBsYXllckFjdGlvbkV2ZW50Lk1vdmVtZW50ID0gTW92ZW1lbnQ7XHJcbn0pKFBsYXllckFjdGlvbkV2ZW50IHx8IChQbGF5ZXJBY3Rpb25FdmVudCA9IHt9KSk7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyQWN0aW9uRXZlbnQpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/events/PlayerActionEvent.ts\n"); - -/***/ }), - -/***/ "./src/base/game/gameparts/GamepartBase.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"GamepartBase\": () => /* binding */ GamepartBase\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _Game__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var _player_Player__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\n/* harmony import */ var _player_Team__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/base/game/player/Team.ts\");\nvar _onGameBecomeOver, _currentOperator, _status;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Foundational parts of a Game that are not related to event handling.\r\n */\r\nclass GamepartBase {\r\n /**\r\n * Performs the \"no invincible player\" check (See {@link Player#teamSet}).\r\n *\r\n * @param gameType -\r\n * @param impl -\r\n * @param desc -\r\n */\r\n constructor(gameType, impl, desc) {\r\n _onGameBecomeOver.set(this, void 0);\r\n _currentOperator.set(this, void 0);\r\n _status.set(this, void 0);\r\n this.gameType = gameType;\r\n const gridClass = this._getGridImplementation(desc.coordSys);\r\n this.grid = new (gridClass)({\r\n gridClass: gridClass,\r\n tileClass: impl.tileClass,\r\n coordSys: desc.coordSys,\r\n dimensions: desc.gridDimensions,\r\n });\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _onGameBecomeOver, impl.onGameBecomeOver);\r\n this.langFrontend = defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__.Lang.GET_FRONTEND_DESC_BY_ID(desc.langId);\r\n // Construct players:\r\n this._playerStatusCtor = impl.playerStatusCtor;\r\n this.players = this.createPlayers(desc);\r\n this.operators = Object.freeze(this.players.filter((player) => player.isALocalOperator));\r\n this.setCurrentOperator(0);\r\n {\r\n const teams = [];\r\n this.players.forEach((player) => {\r\n if (!teams[player.teamId]) {\r\n teams[player.teamId] = [];\r\n }\r\n teams[player.teamId].push(player);\r\n });\r\n this.teams = teams.map((teammateArray, teamId) => {\r\n return new _player_Team__WEBPACK_IMPORTED_MODULE_4__.Team(teamId, teammateArray);\r\n });\r\n if (this.teams.every((team) => team.id === _player_Team__WEBPACK_IMPORTED_MODULE_4__.Team.ElimOrder.IMMORTAL)) {\r\n // TODO.design put a check inside the UI code to prevent this.\r\n // The purpose of this restriction is to prevent DoS attacks on\r\n // a hosting server by creating games that can never end and\r\n // leaving them open forever, thus leaking the server's resources.\r\n throw new Error(\"All teams are immortal. The game will never end.\");\r\n }\r\n }\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"gameType\", \"grid\", \"langFrontend\",\r\n \"players\", \"operators\", \"teams\", \"_playerStatusCtor\",\r\n ]);\r\n this.players.forEach((player) => player._afterAllPlayersConstruction());\r\n }\r\n /**\r\n * Reset the grid.\r\n *\r\n * Overrides should not use the return value. They should return\r\n * the result of calling `ctorAsync`.\r\n */\r\n reset() {\r\n this.grid.reset();\r\n // We must reset status to PAUSED to pass a state-transition\r\n // assertion when changing status later to PLAYING.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _status, _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PAUSED);\r\n // Important: Since there is nothing to do in this game-part's\r\n // ctorAsync getter, we don't need to use `await`.\r\n return Promise.resolve();\r\n }\r\n /**\r\n * Private helper for the constructor to create player objects.\r\n * This is bypassed in non-game-manager implementations (Ie. In\r\n * OnlineGame).\r\n *\r\n * @param gameDesc -\r\n * @returns A bundle of the constructed players.\r\n */\r\n createPlayers(gameDesc) {\r\n const playerDescs = gameDesc.playerDescs\r\n = (this.gameType === _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Type.ONLINE)\r\n // The client receives these descriptors already finalized / cleaned by the server.\r\n ? gameDesc.playerDescs\r\n : _player_Player__WEBPACK_IMPORTED_MODULE_3__.Player.CtorArgs.finalize(gameDesc.playerDescs);\r\n return Object.freeze(playerDescs.map((playerDesc) => {\r\n if (playerDesc.familyId === _player_Player__WEBPACK_IMPORTED_MODULE_3__.Player.Family.HUMAN) {\r\n return (playerDesc.isALocalOperator)\r\n ? this._createOperatorPlayer(playerDesc)\r\n : new _player_Player__WEBPACK_IMPORTED_MODULE_3__.Player(this, playerDesc);\r\n }\r\n else {\r\n return this._createArtifPlayer(playerDesc);\r\n }\r\n }));\r\n }\r\n serializeResetState() {\r\n const csps = [];\r\n const playerCoords = this.players.map((player) => player.coord);\r\n const healthCoords = [];\r\n this.grid.forEachTile((tile) => {\r\n tile.lastKnownUpdateId++;\r\n csps.push({\r\n char: tile.langChar,\r\n seq: tile.langSeq,\r\n });\r\n if (tile.freeHealth) {\r\n healthCoords.push({\r\n coord: tile.coord,\r\n health: tile.freeHealth,\r\n });\r\n }\r\n });\r\n return { csps, playerCoords, healthCoords };\r\n }\r\n deserializeResetState(ser) {\r\n // Could also use `csps.unshift`, but that may be slower\r\n // because it modifies csps, which we don't need to do.\r\n this.grid.forEachTile((tile, index) => {\r\n tile.setLangCharSeqPair(ser.csps[index]);\r\n tile.lastKnownUpdateId++;\r\n });\r\n ser.playerCoords.forEach((coord, index) => {\r\n this.players[index].reset(this.grid.tile.at(coord));\r\n });\r\n ser.healthCoords.forEach((desc) => {\r\n this.grid.tile.at(desc.coord).freeHealth = desc.health;\r\n });\r\n }\r\n get currentOperator() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldGet)(this, _currentOperator);\r\n }\r\n setCurrentOperator(nextOperatorIndex) {\r\n const nextOperator = this.operators[nextOperatorIndex];\r\n if (this.currentOperator !== nextOperator) {\r\n nextOperator._notifyWillBecomeCurrent();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _currentOperator, nextOperator);\r\n // IMPORTANT: The order of the above lines matters\r\n // (hence the method name \"notifyWillBecomeCurrent\").\r\n }\r\n }\r\n get status() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldGet)(this, _status);\r\n }\r\n /**\r\n * On the client side, this should only be accessed through a\r\n * wrapper function that also makes UI-related changes.\r\n *\r\n * If the game is already playing, this does nothing.\r\n */\r\n statusBecomePlaying() {\r\n if (this.status === _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PLAYING) {\r\n console.log(\"[statusBecomePlaying]: Game is already playing\");\r\n return;\r\n }\r\n if (this.status !== _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PAUSED) {\r\n throw new Error(\"Can only resume a game that is currently paused.\");\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowPlaying();\r\n });\r\n this._abstractStatusBecomePlaying();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _status, _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PLAYING);\r\n }\r\n /**\r\n * On the client side, this should only be accessed through a\r\n * wrapper function that also makes UI-related changes.\r\n *\r\n * If the game is already paused, this does nothing.\r\n */\r\n statusBecomePaused() {\r\n if (this.status === _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PAUSED) {\r\n console.log(\"[statusBecomePaused]: Game is already paused\");\r\n return;\r\n }\r\n if (this.status === _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.OVER) {\r\n return;\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowPaused();\r\n });\r\n this._abstractStatusBecomePaused();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _status, _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PAUSED);\r\n }\r\n /**\r\n * This should be called when all non-immortal teams have been\r\n * eliminated. A team is immortal if all its members have the\r\n * `noCheckGameOver` flag set to `true`. A mortal team becomes\r\n * (and subsequently, unconditionally stays) eliminated when all\r\n * their members are in a downed state at the same time.\r\n *\r\n * This should not be controllable by UI input elements.\r\n */\r\n statusBecomeOver() {\r\n if (this.status !== _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PLAYING) {\r\n throw new Error(\"Can only end a game that is currently playing.\");\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowOver();\r\n });\r\n this._abstractStatusBecomeOver();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _status, _Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.OVER);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldGet)(this, _onGameBecomeOver).call(this);\r\n console.log(\"game is over!\");\r\n }\r\n _abstractStatusBecomePlaying() { }\r\n _abstractStatusBecomePaused() { }\r\n _abstractStatusBecomeOver() { }\r\n}\r\n_onGameBecomeOver = new WeakMap(), _currentOperator = new WeakMap(), _status = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(GamepartBase, [\r\n \"_abstractStatusBecomePlaying\",\r\n \"_abstractStatusBecomePaused\",\r\n \"_abstractStatusBecomeOver\",\r\n]);\r\nObject.freeze(GamepartBase);\r\nObject.freeze(GamepartBase.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEJhc2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9nYW1lcGFydHMvR2FtZXBhcnRCYXNlLnRzPzQ4N2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9vbkdhbWVCZWNvbWVPdmVyLCBfY3VycmVudE9wZXJhdG9yLCBfc3RhdHVzO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tIFwiLi4vR2FtZVwiO1xyXG5pbXBvcnQgeyBMYW5nIH0gZnJvbSBcImRlZnMvVHlwZURlZnNcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllci9QbGF5ZXJcIjtcclxuaW1wb3J0IHsgVGVhbSB9IGZyb20gXCIuLi9wbGF5ZXIvVGVhbVwiO1xyXG4vKipcclxuICogRm91bmRhdGlvbmFsIHBhcnRzIG9mIGEgR2FtZSB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBldmVudCBoYW5kbGluZy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHYW1lcGFydEJhc2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJmb3JtcyB0aGUgXCJubyBpbnZpbmNpYmxlIHBsYXllclwiIGNoZWNrIChTZWUge0BsaW5rIFBsYXllciN0ZWFtU2V0fSkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGdhbWVUeXBlIC1cclxuICAgICAqIEBwYXJhbSBpbXBsIC1cclxuICAgICAqIEBwYXJhbSBkZXNjIC1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoZ2FtZVR5cGUsIGltcGwsIGRlc2MpIHtcclxuICAgICAgICBfb25HYW1lQmVjb21lT3Zlci5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfY3VycmVudE9wZXJhdG9yLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIF9zdGF0dXMuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5nYW1lVHlwZSA9IGdhbWVUeXBlO1xyXG4gICAgICAgIGNvbnN0IGdyaWRDbGFzcyA9IHRoaXMuX2dldEdyaWRJbXBsZW1lbnRhdGlvbihkZXNjLmNvb3JkU3lzKTtcclxuICAgICAgICB0aGlzLmdyaWQgPSBuZXcgKGdyaWRDbGFzcykoe1xyXG4gICAgICAgICAgICBncmlkQ2xhc3M6IGdyaWRDbGFzcyxcclxuICAgICAgICAgICAgdGlsZUNsYXNzOiBpbXBsLnRpbGVDbGFzcyxcclxuICAgICAgICAgICAgY29vcmRTeXM6IGRlc2MuY29vcmRTeXMsXHJcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IGRlc2MuZ3JpZERpbWVuc2lvbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfb25HYW1lQmVjb21lT3ZlciwgaW1wbC5vbkdhbWVCZWNvbWVPdmVyKTtcclxuICAgICAgICB0aGlzLmxhbmdGcm9udGVuZCA9IExhbmcuR0VUX0ZST05URU5EX0RFU0NfQllfSUQoZGVzYy5sYW5nSWQpO1xyXG4gICAgICAgIC8vIENvbnN0cnVjdCBwbGF5ZXJzOlxyXG4gICAgICAgIHRoaXMuX3BsYXllclN0YXR1c0N0b3IgPSBpbXBsLnBsYXllclN0YXR1c0N0b3I7XHJcbiAgICAgICAgdGhpcy5wbGF5ZXJzID0gdGhpcy5jcmVhdGVQbGF5ZXJzKGRlc2MpO1xyXG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0gT2JqZWN0LmZyZWV6ZSh0aGlzLnBsYXllcnMuZmlsdGVyKChwbGF5ZXIpID0+IHBsYXllci5pc0FMb2NhbE9wZXJhdG9yKSk7XHJcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50T3BlcmF0b3IoMCk7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCB0ZWFtcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRlYW1zW3BsYXllci50ZWFtSWRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVhbXNbcGxheWVyLnRlYW1JZF0gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRlYW1zW3BsYXllci50ZWFtSWRdLnB1c2gocGxheWVyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVhbXMgPSB0ZWFtcy5tYXAoKHRlYW1tYXRlQXJyYXksIHRlYW1JZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUZWFtKHRlYW1JZCwgdGVhbW1hdGVBcnJheSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50ZWFtcy5ldmVyeSgodGVhbSkgPT4gdGVhbS5pZCA9PT0gVGVhbS5FbGltT3JkZXIuSU1NT1JUQUwpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPLmRlc2lnbiBwdXQgYSBjaGVjayBpbnNpZGUgdGhlIFVJIGNvZGUgdG8gcHJldmVudCB0aGlzLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyByZXN0cmljdGlvbiBpcyB0byBwcmV2ZW50IERvUyBhdHRhY2tzIG9uXHJcbiAgICAgICAgICAgICAgICAvLyBhIGhvc3Rpbmcgc2VydmVyIGJ5IGNyZWF0aW5nIGdhbWVzIHRoYXQgY2FuIG5ldmVyIGVuZCBhbmRcclxuICAgICAgICAgICAgICAgIC8vIGxlYXZpbmcgdGhlbSBvcGVuIGZvcmV2ZXIsIHRodXMgbGVha2luZyB0aGUgc2VydmVyJ3MgcmVzb3VyY2VzLlxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWxsIHRlYW1zIGFyZSBpbW1vcnRhbC4gVGhlIGdhbWUgd2lsbCBuZXZlciBlbmQuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEpzVXRpbHMucHJvcE5vV3JpdGUodGhpcywgW1xyXG4gICAgICAgICAgICBcImdhbWVUeXBlXCIsIFwiZ3JpZFwiLCBcImxhbmdGcm9udGVuZFwiLFxyXG4gICAgICAgICAgICBcInBsYXllcnNcIiwgXCJvcGVyYXRvcnNcIiwgXCJ0ZWFtc1wiLCBcIl9wbGF5ZXJTdGF0dXNDdG9yXCIsXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgdGhpcy5wbGF5ZXJzLmZvckVhY2goKHBsYXllcikgPT4gcGxheWVyLl9hZnRlckFsbFBsYXllcnNDb25zdHJ1Y3Rpb24oKSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHRoZSBncmlkLlxyXG4gICAgICpcclxuICAgICAqIE92ZXJyaWRlcyBzaG91bGQgbm90IHVzZSB0aGUgcmV0dXJuIHZhbHVlLiBUaGV5IHNob3VsZCByZXR1cm5cclxuICAgICAqIHRoZSByZXN1bHQgb2YgY2FsbGluZyBgY3RvckFzeW5jYC5cclxuICAgICAqL1xyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLnJlc2V0KCk7XHJcbiAgICAgICAgLy8gV2UgbXVzdCByZXNldCBzdGF0dXMgdG8gUEFVU0VEIHRvIHBhc3MgYSBzdGF0ZS10cmFuc2l0aW9uXHJcbiAgICAgICAgLy8gYXNzZXJ0aW9uIHdoZW4gY2hhbmdpbmcgc3RhdHVzIGxhdGVyIHRvIFBMQVlJTkcuXHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3RhdHVzLCBHYW1lLlN0YXR1cy5QQVVTRUQpO1xyXG4gICAgICAgIC8vIEltcG9ydGFudDogU2luY2UgdGhlcmUgaXMgbm90aGluZyB0byBkbyBpbiB0aGlzIGdhbWUtcGFydCdzXHJcbiAgICAgICAgLy8gY3RvckFzeW5jIGdldHRlciwgd2UgZG9uJ3QgbmVlZCB0byB1c2UgYGF3YWl0YC5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFByaXZhdGUgaGVscGVyIGZvciB0aGUgY29uc3RydWN0b3IgdG8gY3JlYXRlIHBsYXllciBvYmplY3RzLlxyXG4gICAgICogVGhpcyBpcyBieXBhc3NlZCBpbiBub24tZ2FtZS1tYW5hZ2VyIGltcGxlbWVudGF0aW9ucyAoSWUuIEluXHJcbiAgICAgKiBPbmxpbmVHYW1lKS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZ2FtZURlc2MgLVxyXG4gICAgICogQHJldHVybnMgQSBidW5kbGUgb2YgdGhlIGNvbnN0cnVjdGVkIHBsYXllcnMuXHJcbiAgICAgKi9cclxuICAgIGNyZWF0ZVBsYXllcnMoZ2FtZURlc2MpIHtcclxuICAgICAgICBjb25zdCBwbGF5ZXJEZXNjcyA9IGdhbWVEZXNjLnBsYXllckRlc2NzXHJcbiAgICAgICAgICAgID0gKHRoaXMuZ2FtZVR5cGUgPT09IEdhbWUuVHlwZS5PTkxJTkUpXHJcbiAgICAgICAgICAgICAgICAvLyBUaGUgY2xpZW50IHJlY2VpdmVzIHRoZXNlIGRlc2NyaXB0b3JzIGFscmVhZHkgZmluYWxpemVkIC8gY2xlYW5lZCBieSB0aGUgc2VydmVyLlxyXG4gICAgICAgICAgICAgICAgPyBnYW1lRGVzYy5wbGF5ZXJEZXNjc1xyXG4gICAgICAgICAgICAgICAgOiBQbGF5ZXIuQ3RvckFyZ3MuZmluYWxpemUoZ2FtZURlc2MucGxheWVyRGVzY3MpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZnJlZXplKHBsYXllckRlc2NzLm1hcCgocGxheWVyRGVzYykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocGxheWVyRGVzYy5mYW1pbHlJZCA9PT0gUGxheWVyLkZhbWlseS5IVU1BTikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChwbGF5ZXJEZXNjLmlzQUxvY2FsT3BlcmF0b3IpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9jcmVhdGVPcGVyYXRvclBsYXllcihwbGF5ZXJEZXNjKVxyXG4gICAgICAgICAgICAgICAgICAgIDogbmV3IFBsYXllcih0aGlzLCBwbGF5ZXJEZXNjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVBcnRpZlBsYXllcihwbGF5ZXJEZXNjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIHNlcmlhbGl6ZVJlc2V0U3RhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgY3NwcyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHBsYXllckNvb3JkcyA9IHRoaXMucGxheWVycy5tYXAoKHBsYXllcikgPT4gcGxheWVyLmNvb3JkKTtcclxuICAgICAgICBjb25zdCBoZWFsdGhDb29yZHMgPSBbXTtcclxuICAgICAgICB0aGlzLmdyaWQuZm9yRWFjaFRpbGUoKHRpbGUpID0+IHtcclxuICAgICAgICAgICAgdGlsZS5sYXN0S25vd25VcGRhdGVJZCsrO1xyXG4gICAgICAgICAgICBjc3BzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgY2hhcjogdGlsZS5sYW5nQ2hhcixcclxuICAgICAgICAgICAgICAgIHNlcTogdGlsZS5sYW5nU2VxLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHRpbGUuZnJlZUhlYWx0aCkge1xyXG4gICAgICAgICAgICAgICAgaGVhbHRoQ29vcmRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkOiB0aWxlLmNvb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWx0aDogdGlsZS5mcmVlSGVhbHRoLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4geyBjc3BzLCBwbGF5ZXJDb29yZHMsIGhlYWx0aENvb3JkcyB9O1xyXG4gICAgfVxyXG4gICAgZGVzZXJpYWxpemVSZXNldFN0YXRlKHNlcikge1xyXG4gICAgICAgIC8vIENvdWxkIGFsc28gdXNlIGBjc3BzLnVuc2hpZnRgLCBidXQgdGhhdCBtYXkgYmUgc2xvd2VyXHJcbiAgICAgICAgLy8gYmVjYXVzZSBpdCBtb2RpZmllcyBjc3BzLCB3aGljaCB3ZSBkb24ndCBuZWVkIHRvIGRvLlxyXG4gICAgICAgIHRoaXMuZ3JpZC5mb3JFYWNoVGlsZSgodGlsZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGlsZS5zZXRMYW5nQ2hhclNlcVBhaXIoc2VyLmNzcHNbaW5kZXhdKTtcclxuICAgICAgICAgICAgdGlsZS5sYXN0S25vd25VcGRhdGVJZCsrO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlci5wbGF5ZXJDb29yZHMuZm9yRWFjaCgoY29vcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGxheWVyc1tpbmRleF0ucmVzZXQodGhpcy5ncmlkLnRpbGUuYXQoY29vcmQpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXIuaGVhbHRoQ29vcmRzLmZvckVhY2goKGRlc2MpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkLnRpbGUuYXQoZGVzYy5jb29yZCkuZnJlZUhlYWx0aCA9IGRlc2MuaGVhbHRoO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0IGN1cnJlbnRPcGVyYXRvcigpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfY3VycmVudE9wZXJhdG9yKTtcclxuICAgIH1cclxuICAgIHNldEN1cnJlbnRPcGVyYXRvcihuZXh0T3BlcmF0b3JJbmRleCkge1xyXG4gICAgICAgIGNvbnN0IG5leHRPcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW25leHRPcGVyYXRvckluZGV4XTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50T3BlcmF0b3IgIT09IG5leHRPcGVyYXRvcikge1xyXG4gICAgICAgICAgICBuZXh0T3BlcmF0b3IuX25vdGlmeVdpbGxCZWNvbWVDdXJyZW50KCk7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2N1cnJlbnRPcGVyYXRvciwgbmV4dE9wZXJhdG9yKTtcclxuICAgICAgICAgICAgLy8gSU1QT1JUQU5UOiBUaGUgb3JkZXIgb2YgdGhlIGFib3ZlIGxpbmVzIG1hdHRlcnNcclxuICAgICAgICAgICAgLy8gKGhlbmNlIHRoZSBtZXRob2QgbmFtZSBcIm5vdGlmeVdpbGxCZWNvbWVDdXJyZW50XCIpLlxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBzdGF0dXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3N0YXR1cyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE9uIHRoZSBjbGllbnQgc2lkZSwgdGhpcyBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGFcclxuICAgICAqIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCBhbHNvIG1ha2VzIFVJLXJlbGF0ZWQgY2hhbmdlcy5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZ2FtZSBpcyBhbHJlYWR5IHBsYXlpbmcsIHRoaXMgZG9lcyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBzdGF0dXNCZWNvbWVQbGF5aW5nKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gR2FtZS5TdGF0dXMuUExBWUlORykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltzdGF0dXNCZWNvbWVQbGF5aW5nXTogR2FtZSBpcyBhbHJlYWR5IHBsYXlpbmdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzICE9PSBHYW1lLlN0YXR1cy5QQVVTRUQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgcmVzdW1lIGEgZ2FtZSB0aGF0IGlzIGN1cnJlbnRseSBwYXVzZWQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIHBsYXllci5fbm90aWZ5R2FtZU5vd1BsYXlpbmcoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9hYnN0cmFjdFN0YXR1c0JlY29tZVBsYXlpbmcoKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zdGF0dXMsIEdhbWUuU3RhdHVzLlBMQVlJTkcpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiB0aGUgY2xpZW50IHNpZGUsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBhXHJcbiAgICAgKiB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgYWxzbyBtYWtlcyBVSS1yZWxhdGVkIGNoYW5nZXMuXHJcbiAgICAgKlxyXG4gICAgICogSWYgdGhlIGdhbWUgaXMgYWxyZWFkeSBwYXVzZWQsIHRoaXMgZG9lcyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBzdGF0dXNCZWNvbWVQYXVzZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBHYW1lLlN0YXR1cy5QQVVTRUQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbc3RhdHVzQmVjb21lUGF1c2VkXTogR2FtZSBpcyBhbHJlYWR5IHBhdXNlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IEdhbWUuU3RhdHVzLk9WRVIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIHBsYXllci5fbm90aWZ5R2FtZU5vd1BhdXNlZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2Fic3RyYWN0U3RhdHVzQmVjb21lUGF1c2VkKCk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3RhdHVzLCBHYW1lLlN0YXR1cy5QQVVTRUQpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhbGwgbm9uLWltbW9ydGFsIHRlYW1zIGhhdmUgYmVlblxyXG4gICAgICogZWxpbWluYXRlZC4gQSB0ZWFtIGlzIGltbW9ydGFsIGlmIGFsbCBpdHMgbWVtYmVycyBoYXZlIHRoZVxyXG4gICAgICogYG5vQ2hlY2tHYW1lT3ZlcmAgZmxhZyBzZXQgdG8gYHRydWVgLiBBIG1vcnRhbCB0ZWFtIGJlY29tZXNcclxuICAgICAqIChhbmQgc3Vic2VxdWVudGx5LCB1bmNvbmRpdGlvbmFsbHkgc3RheXMpIGVsaW1pbmF0ZWQgd2hlbiBhbGxcclxuICAgICAqIHRoZWlyIG1lbWJlcnMgYXJlIGluIGEgZG93bmVkIHN0YXRlIGF0IHRoZSBzYW1lIHRpbWUuXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBzaG91bGQgbm90IGJlIGNvbnRyb2xsYWJsZSBieSBVSSBpbnB1dCBlbGVtZW50cy5cclxuICAgICAqL1xyXG4gICAgc3RhdHVzQmVjb21lT3ZlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IEdhbWUuU3RhdHVzLlBMQVlJTkcpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgZW5kIGEgZ2FtZSB0aGF0IGlzIGN1cnJlbnRseSBwbGF5aW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wbGF5ZXJzLmZvckVhY2goKHBsYXllcikgPT4ge1xyXG4gICAgICAgICAgICBwbGF5ZXIuX25vdGlmeUdhbWVOb3dPdmVyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fYWJzdHJhY3RTdGF0dXNCZWNvbWVPdmVyKCk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3RhdHVzLCBHYW1lLlN0YXR1cy5PVkVSKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9vbkdhbWVCZWNvbWVPdmVyKS5jYWxsKHRoaXMpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZ2FtZSBpcyBvdmVyIVwiKTtcclxuICAgIH1cclxuICAgIF9hYnN0cmFjdFN0YXR1c0JlY29tZVBsYXlpbmcoKSB7IH1cclxuICAgIF9hYnN0cmFjdFN0YXR1c0JlY29tZVBhdXNlZCgpIHsgfVxyXG4gICAgX2Fic3RyYWN0U3RhdHVzQmVjb21lT3ZlcigpIHsgfVxyXG59XHJcbl9vbkdhbWVCZWNvbWVPdmVyID0gbmV3IFdlYWtNYXAoKSwgX2N1cnJlbnRPcGVyYXRvciA9IG5ldyBXZWFrTWFwKCksIF9zdGF0dXMgPSBuZXcgV2Vha01hcCgpO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKEdhbWVwYXJ0QmFzZSwgW1xyXG4gICAgXCJfYWJzdHJhY3RTdGF0dXNCZWNvbWVQbGF5aW5nXCIsXHJcbiAgICBcIl9hYnN0cmFjdFN0YXR1c0JlY29tZVBhdXNlZFwiLFxyXG4gICAgXCJfYWJzdHJhY3RTdGF0dXNCZWNvbWVPdmVyXCIsXHJcbl0pO1xyXG5PYmplY3QuZnJlZXplKEdhbWVwYXJ0QmFzZSk7XHJcbk9iamVjdC5mcmVlemUoR2FtZXBhcnRCYXNlLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/game/gameparts/GamepartBase.ts\n"); - -/***/ }), - -/***/ "./src/base/game/gameparts/GamepartEvents.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerActionEvent\": () => /* reexport safe */ _events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__.PlayerActionEvent,\n/* harmony export */ \"GamepartEvents\": () => /* binding */ GamepartEvents\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Game__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/events/EventRecordEntry.ts\");\n/* harmony import */ var _events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/events/PlayerActionEvent.ts\");\n/* harmony import */ var _GamepartBase__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/gameparts/GamepartBase.ts\");\nvar _nextUnusedEventId;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * All events have two corresponding handler functions taking a\r\n * request descriptor object (\"desc\"):\r\n *\r\n * ### Request Processor\r\n *\r\n * The request processor is only used by the Game Manager. It decides\r\n * whether to accept or reject the request based on `desc` and may\r\n * throw exceptions on impossible arguments. It should not make any\r\n * changes to the game state. Instead, it is responsible to augment\r\n * `desc` with information describing what changes to the game state\r\n * must be made.\r\n *\r\n * ### Request Executor\r\n *\r\n * This takes the `desc` augmented by the request processor and enacts\r\n * all the described changes upon the game's state. If the Game Manager\r\n * is not local to the client (a server process), then this handler is\r\n * called at both the server and client.\r\n *\r\n * Updates the event record if the response is accepted.\r\n */\r\nclass GamepartEvents extends _GamepartBase__WEBPACK_IMPORTED_MODULE_3__.GamepartBase {\r\n constructor(gameType, impl, gameDesc) {\r\n super(gameType, impl, gameDesc);\r\n _nextUnusedEventId.set(this, void 0);\r\n this.eventRecordBitmap = [];\r\n }\r\n reset() {\r\n const superPromise = super.reset();\r\n // Clear the event record:\r\n this.eventRecordBitmap.fill(false, 0, _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nextUnusedEventId, 0);\r\n // Since we didn't wait for the superPromise, return it.\r\n return superPromise;\r\n }\r\n get nextUnusedEventId() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _nextUnusedEventId);\r\n }\r\n /**\r\n * Basically does `this.eventRecord[id] = desc;` with value checking.\r\n *\r\n * @param desc -\r\n *\r\n * @throws\r\n * In the given order of priority:\r\n * - TypeError if the event ID indicates a rejected request\r\n * - RangeError if it is not a positive integer\r\n * - Error if another event was already recorded with the same ID.\r\n */\r\n _recordEvent(desc) {\r\n const id = desc.eventId;\r\n const wrappedId = id % _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;\r\n if (id === _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n throw new TypeError(\"Do not try to record events for rejected requests.\");\r\n }\r\n else if (id < 0 || id !== Math.trunc(id)) {\r\n throw new RangeError(\"Event ID's must only be assigned positive, integer values.\");\r\n }\r\n else if (this.eventRecordBitmap[wrappedId]) {\r\n throw new Error(\"Event ID's must be assigned unique values.\");\r\n }\r\n // TODO.impl Check for an OnlineGame that it is not far behind the Server.\r\n // also design what should be done to handle that... Do we really need to\r\n // recover from that?\r\n this.eventRecordBitmap[wrappedId] = true;\r\n this.eventRecordBitmap[(id\r\n + _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH\r\n - _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)\r\n % _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH] = false;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nextUnusedEventId, +(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _nextUnusedEventId) + 1);\r\n }\r\n executeTileModEvent(desc, doCheckOperatorSeqBuffer = true) {\r\n Object.freeze(desc);\r\n const dest = this.grid.tile.at(desc.coord);\r\n if (dest.lastKnownUpdateId > desc.lastKnownUpdateId)\r\n return dest;\r\n if (dest.lastKnownUpdateId === desc.lastKnownUpdateId)\r\n throw new RangeError(\"never\");\r\n if (desc.newCharSeqPair) {\r\n dest.setLangCharSeqPair(desc.newCharSeqPair);\r\n // Refresh the operator's `seqBuffer` (maintain invariant) for new CSP:\r\n if (doCheckOperatorSeqBuffer) {\r\n // ^Do this when non-operator moves into the the operator's vicinity.\r\n this.operators.filter((op) => {\r\n return op.tile.destsFrom().get.includes(dest);\r\n }).forEach((op) => op.seqBufferAcceptKey(\"\"));\r\n }\r\n }\r\n dest.lastKnownUpdateId = desc.lastKnownUpdateId;\r\n dest.freeHealth = desc.newFreeHealth;\r\n return dest;\r\n }\r\n /**\r\n * Automatically lowers the {@link Player#requestInFlight} field\r\n * for the requesting `Player` if the arriving event description\r\n * is the newest one for the specified `Player`.\r\n *\r\n * Updates that are received after others that are more recent and\r\n * concern the same {@link Tile} are ignored. This is okay since\r\n * the only thing that matters about a {@link Tile} to the outside\r\n * world is its last known state.\r\n *\r\n * @param desc\r\n * A descriptor for all changes mandated by the player-movement event.\r\n */\r\n executePlayerMoveEvent(desc) {\r\n var _a;\r\n // console.log(desc);\r\n const player = this.players[desc.playerId];\r\n const clientEventLag = desc.playerLastAcceptedRequestId - player.lastAcceptedRequestId;\r\n if (desc.eventId === _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n // Rejected request. Implies either that: clientEventLag === 0,\r\n // or that (at Game Manager): dest.numTimesOccupied > desc.destNumTimesOccupied\r\n if (clientEventLag === 0) {\r\n player.requestInFlight = false;\r\n }\r\n return; // Short-circuit!\r\n }\r\n this._recordEvent(desc);\r\n const dest = this.executeTileModEvent(desc.destModDesc, player !== this.currentOperator);\r\n (_a = desc.tileHealthModDescs) === null || _a === void 0 ? void 0 : _a.forEach((desc) => {\r\n this.executeTileModEvent(desc);\r\n });\r\n if (clientEventLag > 1) {\r\n // ===== Out of order receipt (clientside) =====\r\n // Already received more recent request responses.\r\n if (player === this.currentOperator) {\r\n // Operator never receives their own updates out of\r\n // order because they only have one unacknowledged\r\n // in-flight request at a time.\r\n throw new Error(\"never\");\r\n }\r\n return; // Short-circuit!\r\n }\r\n // Okay- the response is an acceptance of the specified player's most\r\n // recent request pending this acknowledgement.\r\n player.requestInFlight = false;\r\n if ((player === this.currentOperator)\r\n ? (clientEventLag === 1)\r\n : (clientEventLag <= 1)) {\r\n player.status.health = desc.newPlayerHealth.health;\r\n player.moveTo(dest);\r\n // Below is computationally the same as \"(player.lastAcceptedRequestId)++\"\r\n player.lastAcceptedRequestId = desc.playerLastAcceptedRequestId;\r\n }\r\n else {\r\n // Apparent negative lag. The operator may somehow have\r\n // tampered with their player's request counter.\r\n throw new RangeError(\"never\");\r\n }\r\n }\r\n /**\r\n *\r\n * Automatically lowers the {@link Player#requestInFlight} field\r\n * for the requesting `Player`.\r\n *\r\n * @param desc -\r\n */\r\n executePlayerBubbleEvent(desc) {\r\n const bubbler = this.players[desc.playerId];\r\n bubbler.requestInFlight = false;\r\n if (desc.eventId !== _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n this._recordEvent(desc); // Record the event.\r\n }\r\n }\r\n}\r\n_nextUnusedEventId = new WeakMap();\r\nObject.freeze(GamepartEvents);\r\nObject.freeze(GamepartEvents.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEV2ZW50cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEV2ZW50cy50cz9mYTU5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfbmV4dFVudXNlZEV2ZW50SWQ7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgR2FtZSB9IGZyb20gXCIuLi9HYW1lXCI7XHJcbmltcG9ydCB7IEV2ZW50UmVjb3JkRW50cnkgfSBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50UmVjb3JkRW50cnlcIjtcclxuaW1wb3J0IHsgUGxheWVyQWN0aW9uRXZlbnQgfSBmcm9tIFwiLi4vZXZlbnRzL1BsYXllckFjdGlvbkV2ZW50XCI7XHJcbmV4cG9ydCB7IFBsYXllckFjdGlvbkV2ZW50IH07XHJcbmltcG9ydCB7IEdhbWVwYXJ0QmFzZSB9IGZyb20gXCIuL0dhbWVwYXJ0QmFzZVwiO1xyXG4vKipcclxuICogQWxsIGV2ZW50cyBoYXZlIHR3byBjb3JyZXNwb25kaW5nIGhhbmRsZXIgZnVuY3Rpb25zIHRha2luZyBhXHJcbiAqIHJlcXVlc3QgZGVzY3JpcHRvciBvYmplY3QgKFwiZGVzY1wiKTpcclxuICpcclxuICogIyMjIFJlcXVlc3QgUHJvY2Vzc29yXHJcbiAqXHJcbiAqIFRoZSByZXF1ZXN0IHByb2Nlc3NvciBpcyBvbmx5IHVzZWQgYnkgdGhlIEdhbWUgTWFuYWdlci4gSXQgZGVjaWRlc1xyXG4gKiB3aGV0aGVyIHRvIGFjY2VwdCBvciByZWplY3QgdGhlIHJlcXVlc3QgYmFzZWQgb24gYGRlc2NgIGFuZCBtYXlcclxuICogdGhyb3cgZXhjZXB0aW9ucyBvbiBpbXBvc3NpYmxlIGFyZ3VtZW50cy4gSXQgc2hvdWxkIG5vdCBtYWtlIGFueVxyXG4gKiBjaGFuZ2VzIHRvIHRoZSBnYW1lIHN0YXRlLiBJbnN0ZWFkLCBpdCBpcyByZXNwb25zaWJsZSB0byBhdWdtZW50XHJcbiAqIGBkZXNjYCB3aXRoIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgd2hhdCBjaGFuZ2VzIHRvIHRoZSBnYW1lIHN0YXRlXHJcbiAqIG11c3QgYmUgbWFkZS5cclxuICpcclxuICogIyMjIFJlcXVlc3QgRXhlY3V0b3JcclxuICpcclxuICogVGhpcyB0YWtlcyB0aGUgYGRlc2NgIGF1Z21lbnRlZCBieSB0aGUgcmVxdWVzdCBwcm9jZXNzb3IgYW5kIGVuYWN0c1xyXG4gKiBhbGwgdGhlIGRlc2NyaWJlZCBjaGFuZ2VzIHVwb24gdGhlIGdhbWUncyBzdGF0ZS4gSWYgdGhlIEdhbWUgTWFuYWdlclxyXG4gKiBpcyBub3QgbG9jYWwgdG8gdGhlIGNsaWVudCAoYSBzZXJ2ZXIgcHJvY2VzcyksIHRoZW4gdGhpcyBoYW5kbGVyIGlzXHJcbiAqIGNhbGxlZCBhdCBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudC5cclxuICpcclxuICogVXBkYXRlcyB0aGUgZXZlbnQgcmVjb3JkIGlmIHRoZSByZXNwb25zZSBpcyBhY2NlcHRlZC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHYW1lcGFydEV2ZW50cyBleHRlbmRzIEdhbWVwYXJ0QmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lVHlwZSwgaW1wbCwgZ2FtZURlc2MpIHtcclxuICAgICAgICBzdXBlcihnYW1lVHlwZSwgaW1wbCwgZ2FtZURlc2MpO1xyXG4gICAgICAgIF9uZXh0VW51c2VkRXZlbnRJZC5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICB0aGlzLmV2ZW50UmVjb3JkQml0bWFwID0gW107XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICBjb25zdCBzdXBlclByb21pc2UgPSBzdXBlci5yZXNldCgpO1xyXG4gICAgICAgIC8vIENsZWFyIHRoZSBldmVudCByZWNvcmQ6XHJcbiAgICAgICAgdGhpcy5ldmVudFJlY29yZEJpdG1hcC5maWxsKGZhbHNlLCAwLCBHYW1lLksuRVZFTlRfUkVDT1JEX1dSQVBQSU5HX0JVRkZFUl9MRU5HVEgpO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkLCAwKTtcclxuICAgICAgICAvLyBTaW5jZSB3ZSBkaWRuJ3Qgd2FpdCBmb3IgdGhlIHN1cGVyUHJvbWlzZSwgcmV0dXJuIGl0LlxyXG4gICAgICAgIHJldHVybiBzdXBlclByb21pc2U7XHJcbiAgICB9XHJcbiAgICBnZXQgbmV4dFVudXNlZEV2ZW50SWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQmFzaWNhbGx5IGRvZXMgYHRoaXMuZXZlbnRSZWNvcmRbaWRdID0gZGVzYztgIHdpdGggdmFsdWUgY2hlY2tpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRlc2MgLVxyXG4gICAgICpcclxuICAgICAqIEB0aHJvd3NcclxuICAgICAqIEluIHRoZSBnaXZlbiBvcmRlciBvZiBwcmlvcml0eTpcclxuICAgICAqIC0gVHlwZUVycm9yIGlmIHRoZSBldmVudCBJRCBpbmRpY2F0ZXMgYSByZWplY3RlZCByZXF1ZXN0XHJcbiAgICAgKiAtIFJhbmdlRXJyb3IgaWYgaXQgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlclxyXG4gICAgICogLSBFcnJvciBpZiBhbm90aGVyIGV2ZW50IHdhcyBhbHJlYWR5IHJlY29yZGVkIHdpdGggdGhlIHNhbWUgSUQuXHJcbiAgICAgKi9cclxuICAgIF9yZWNvcmRFdmVudChkZXNjKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBkZXNjLmV2ZW50SWQ7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZElkID0gaWQgJSBHYW1lLksuRVZFTlRfUkVDT1JEX1dSQVBQSU5HX0JVRkZFUl9MRU5HVEg7XHJcbiAgICAgICAgaWYgKGlkID09PSBFdmVudFJlY29yZEVudHJ5LkVWRU5UX0lEX1JFSkVDVCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRG8gbm90IHRyeSB0byByZWNvcmQgZXZlbnRzIGZvciByZWplY3RlZCByZXF1ZXN0cy5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlkIDwgMCB8fCBpZCAhPT0gTWF0aC50cnVuYyhpZCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJFdmVudCBJRCdzIG11c3Qgb25seSBiZSBhc3NpZ25lZCBwb3NpdGl2ZSwgaW50ZWdlciB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmV2ZW50UmVjb3JkQml0bWFwW3dyYXBwZWRJZF0pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgSUQncyBtdXN0IGJlIGFzc2lnbmVkIHVuaXF1ZSB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPLmltcGwgQ2hlY2sgZm9yIGFuIE9ubGluZUdhbWUgdGhhdCBpdCBpcyBub3QgZmFyIGJlaGluZCB0aGUgU2VydmVyLlxyXG4gICAgICAgIC8vIGFsc28gZGVzaWduIHdoYXQgc2hvdWxkIGJlIGRvbmUgdG8gaGFuZGxlIHRoYXQuLi4gRG8gd2UgcmVhbGx5IG5lZWQgdG9cclxuICAgICAgICAvLyByZWNvdmVyIGZyb20gdGhhdD9cclxuICAgICAgICB0aGlzLmV2ZW50UmVjb3JkQml0bWFwW3dyYXBwZWRJZF0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZXZlbnRSZWNvcmRCaXRtYXBbKGlkXHJcbiAgICAgICAgICAgICsgR2FtZS5LLkVWRU5UX1JFQ09SRF9XUkFQUElOR19CVUZGRVJfTEVOR1RIXHJcbiAgICAgICAgICAgIC0gR2FtZS5LLkVWRU5UX1JFQ09SRF9GT1JXQVJEX1dJTkRPV19MRU5HVEgpXHJcbiAgICAgICAgICAgICUgR2FtZS5LLkVWRU5UX1JFQ09SRF9XUkFQUElOR19CVUZGRVJfTEVOR1RIXSA9IGZhbHNlO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkLCArX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbmV4dFVudXNlZEV2ZW50SWQpICsgMSk7XHJcbiAgICB9XHJcbiAgICBleGVjdXRlVGlsZU1vZEV2ZW50KGRlc2MsIGRvQ2hlY2tPcGVyYXRvclNlcUJ1ZmZlciA9IHRydWUpIHtcclxuICAgICAgICBPYmplY3QuZnJlZXplKGRlc2MpO1xyXG4gICAgICAgIGNvbnN0IGRlc3QgPSB0aGlzLmdyaWQudGlsZS5hdChkZXNjLmNvb3JkKTtcclxuICAgICAgICBpZiAoZGVzdC5sYXN0S25vd25VcGRhdGVJZCA+IGRlc2MubGFzdEtub3duVXBkYXRlSWQpXHJcbiAgICAgICAgICAgIHJldHVybiBkZXN0O1xyXG4gICAgICAgIGlmIChkZXN0Lmxhc3RLbm93blVwZGF0ZUlkID09PSBkZXNjLmxhc3RLbm93blVwZGF0ZUlkKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm5ldmVyXCIpO1xyXG4gICAgICAgIGlmIChkZXNjLm5ld0NoYXJTZXFQYWlyKSB7XHJcbiAgICAgICAgICAgIGRlc3Quc2V0TGFuZ0NoYXJTZXFQYWlyKGRlc2MubmV3Q2hhclNlcVBhaXIpO1xyXG4gICAgICAgICAgICAvLyBSZWZyZXNoIHRoZSBvcGVyYXRvcidzIGBzZXFCdWZmZXJgIChtYWludGFpbiBpbnZhcmlhbnQpIGZvciBuZXcgQ1NQOlxyXG4gICAgICAgICAgICBpZiAoZG9DaGVja09wZXJhdG9yU2VxQnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBeRG8gdGhpcyB3aGVuIG5vbi1vcGVyYXRvciBtb3ZlcyBpbnRvIHRoZSB0aGUgb3BlcmF0b3IncyB2aWNpbml0eS5cclxuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzLmZpbHRlcigob3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3AudGlsZS5kZXN0c0Zyb20oKS5nZXQuaW5jbHVkZXMoZGVzdCk7XHJcbiAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKChvcCkgPT4gb3Auc2VxQnVmZmVyQWNjZXB0S2V5KFwiXCIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZXN0Lmxhc3RLbm93blVwZGF0ZUlkID0gZGVzYy5sYXN0S25vd25VcGRhdGVJZDtcclxuICAgICAgICBkZXN0LmZyZWVIZWFsdGggPSBkZXNjLm5ld0ZyZWVIZWFsdGg7XHJcbiAgICAgICAgcmV0dXJuIGRlc3Q7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEF1dG9tYXRpY2FsbHkgbG93ZXJzIHRoZSB7QGxpbmsgUGxheWVyI3JlcXVlc3RJbkZsaWdodH0gZmllbGRcclxuICAgICAqIGZvciB0aGUgcmVxdWVzdGluZyBgUGxheWVyYCBpZiB0aGUgYXJyaXZpbmcgZXZlbnQgZGVzY3JpcHRpb25cclxuICAgICAqIGlzIHRoZSBuZXdlc3Qgb25lIGZvciB0aGUgc3BlY2lmaWVkIGBQbGF5ZXJgLlxyXG4gICAgICpcclxuICAgICAqIFVwZGF0ZXMgdGhhdCBhcmUgcmVjZWl2ZWQgYWZ0ZXIgb3RoZXJzIHRoYXQgYXJlIG1vcmUgcmVjZW50IGFuZFxyXG4gICAgICogY29uY2VybiB0aGUgc2FtZSB7QGxpbmsgVGlsZX0gYXJlIGlnbm9yZWQuIFRoaXMgaXMgb2theSBzaW5jZVxyXG4gICAgICogdGhlIG9ubHkgdGhpbmcgdGhhdCBtYXR0ZXJzIGFib3V0IGEge0BsaW5rIFRpbGV9IHRvIHRoZSBvdXRzaWRlXHJcbiAgICAgKiB3b3JsZCBpcyBpdHMgbGFzdCBrbm93biBzdGF0ZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGVzY1xyXG4gICAgICogQSBkZXNjcmlwdG9yIGZvciBhbGwgY2hhbmdlcyBtYW5kYXRlZCBieSB0aGUgcGxheWVyLW1vdmVtZW50IGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlUGxheWVyTW92ZUV2ZW50KGRlc2MpIHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZGVzYyk7XHJcbiAgICAgICAgY29uc3QgcGxheWVyID0gdGhpcy5wbGF5ZXJzW2Rlc2MucGxheWVySWRdO1xyXG4gICAgICAgIGNvbnN0IGNsaWVudEV2ZW50TGFnID0gZGVzYy5wbGF5ZXJMYXN0QWNjZXB0ZWRSZXF1ZXN0SWQgLSBwbGF5ZXIubGFzdEFjY2VwdGVkUmVxdWVzdElkO1xyXG4gICAgICAgIGlmIChkZXNjLmV2ZW50SWQgPT09IEV2ZW50UmVjb3JkRW50cnkuRVZFTlRfSURfUkVKRUNUKSB7XHJcbiAgICAgICAgICAgIC8vIFJlamVjdGVkIHJlcXVlc3QuIEltcGxpZXMgZWl0aGVyIHRoYXQ6IGNsaWVudEV2ZW50TGFnID09PSAwLFxyXG4gICAgICAgICAgICAvLyBvciB0aGF0IChhdCBHYW1lIE1hbmFnZXIpOiBkZXN0Lm51bVRpbWVzT2NjdXBpZWQgPiBkZXNjLmRlc3ROdW1UaW1lc09jY3VwaWVkXHJcbiAgICAgICAgICAgIGlmIChjbGllbnRFdmVudExhZyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcGxheWVyLnJlcXVlc3RJbkZsaWdodCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjsgLy8gU2hvcnQtY2lyY3VpdCFcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcmVjb3JkRXZlbnQoZGVzYyk7XHJcbiAgICAgICAgY29uc3QgZGVzdCA9IHRoaXMuZXhlY3V0ZVRpbGVNb2RFdmVudChkZXNjLmRlc3RNb2REZXNjLCBwbGF5ZXIgIT09IHRoaXMuY3VycmVudE9wZXJhdG9yKTtcclxuICAgICAgICAoX2EgPSBkZXNjLnRpbGVIZWFsdGhNb2REZXNjcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKGRlc2MpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leGVjdXRlVGlsZU1vZEV2ZW50KGRlc2MpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjbGllbnRFdmVudExhZyA+IDEpIHtcclxuICAgICAgICAgICAgLy8gPT09PT0gT3V0IG9mIG9yZGVyIHJlY2VpcHQgKGNsaWVudHNpZGUpID09PT09XHJcbiAgICAgICAgICAgIC8vIEFscmVhZHkgcmVjZWl2ZWQgbW9yZSByZWNlbnQgcmVxdWVzdCByZXNwb25zZXMuXHJcbiAgICAgICAgICAgIGlmIChwbGF5ZXIgPT09IHRoaXMuY3VycmVudE9wZXJhdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPcGVyYXRvciBuZXZlciByZWNlaXZlcyB0aGVpciBvd24gdXBkYXRlcyBvdXQgb2ZcclxuICAgICAgICAgICAgICAgIC8vIG9yZGVyIGJlY2F1c2UgdGhleSBvbmx5IGhhdmUgb25lIHVuYWNrbm93bGVkZ2VkXHJcbiAgICAgICAgICAgICAgICAvLyBpbi1mbGlnaHQgcmVxdWVzdCBhdCBhIHRpbWUuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJuZXZlclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47IC8vIFNob3J0LWNpcmN1aXQhXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9rYXktIHRoZSByZXNwb25zZSBpcyBhbiBhY2NlcHRhbmNlIG9mIHRoZSBzcGVjaWZpZWQgcGxheWVyJ3MgbW9zdFxyXG4gICAgICAgIC8vIHJlY2VudCByZXF1ZXN0IHBlbmRpbmcgdGhpcyBhY2tub3dsZWRnZW1lbnQuXHJcbiAgICAgICAgcGxheWVyLnJlcXVlc3RJbkZsaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICgocGxheWVyID09PSB0aGlzLmN1cnJlbnRPcGVyYXRvcilcclxuICAgICAgICAgICAgPyAoY2xpZW50RXZlbnRMYWcgPT09IDEpXHJcbiAgICAgICAgICAgIDogKGNsaWVudEV2ZW50TGFnIDw9IDEpKSB7XHJcbiAgICAgICAgICAgIHBsYXllci5zdGF0dXMuaGVhbHRoID0gZGVzYy5uZXdQbGF5ZXJIZWFsdGguaGVhbHRoO1xyXG4gICAgICAgICAgICBwbGF5ZXIubW92ZVRvKGRlc3QpO1xyXG4gICAgICAgICAgICAvLyBCZWxvdyBpcyBjb21wdXRhdGlvbmFsbHkgdGhlIHNhbWUgYXMgXCIocGxheWVyLmxhc3RBY2NlcHRlZFJlcXVlc3RJZCkrK1wiXHJcbiAgICAgICAgICAgIHBsYXllci5sYXN0QWNjZXB0ZWRSZXF1ZXN0SWQgPSBkZXNjLnBsYXllckxhc3RBY2NlcHRlZFJlcXVlc3RJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEFwcGFyZW50IG5lZ2F0aXZlIGxhZy4gVGhlIG9wZXJhdG9yIG1heSBzb21laG93IGhhdmVcclxuICAgICAgICAgICAgLy8gdGFtcGVyZWQgd2l0aCB0aGVpciBwbGF5ZXIncyByZXF1ZXN0IGNvdW50ZXIuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwibmV2ZXJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQXV0b21hdGljYWxseSBsb3dlcnMgdGhlIHtAbGluayBQbGF5ZXIjcmVxdWVzdEluRmxpZ2h0fSBmaWVsZFxyXG4gICAgICogZm9yIHRoZSByZXF1ZXN0aW5nIGBQbGF5ZXJgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXNjIC1cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVBsYXllckJ1YmJsZUV2ZW50KGRlc2MpIHtcclxuICAgICAgICBjb25zdCBidWJibGVyID0gdGhpcy5wbGF5ZXJzW2Rlc2MucGxheWVySWRdO1xyXG4gICAgICAgIGJ1YmJsZXIucmVxdWVzdEluRmxpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGRlc2MuZXZlbnRJZCAhPT0gRXZlbnRSZWNvcmRFbnRyeS5FVkVOVF9JRF9SRUpFQ1QpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVjb3JkRXZlbnQoZGVzYyk7IC8vIFJlY29yZCB0aGUgZXZlbnQuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbl9uZXh0VW51c2VkRXZlbnRJZCA9IG5ldyBXZWFrTWFwKCk7XHJcbk9iamVjdC5mcmVlemUoR2FtZXBhcnRFdmVudHMpO1xyXG5PYmplY3QuZnJlZXplKEdhbWVwYXJ0RXZlbnRzLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/gameparts/GamepartEvents.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/OperatorPlayer.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OperatorPlayer\": () => /* binding */ OperatorPlayer\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var game_Game__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var floor_Coord__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/floor/Coord.ts\");\n/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\nvar _seqBuffer, _langRemappingFunc;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * There is at least one in online-clientside and offline games.\r\n * There are none for online-serverside games.\r\n */\r\nclass OperatorPlayer extends _Player__WEBPACK_IMPORTED_MODULE_4__.Player {\r\n constructor(game, desc) {\r\n super(game, desc);\r\n /**\r\n * Invariant: always matches the prefix of the {@link LangSeq} of\r\n * an unoccupied neighbouring {@link Tile}.\r\n */\r\n _seqBuffer.set(this, void 0);\r\n _langRemappingFunc.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _langRemappingFunc, this.game.langFrontend.remapFunc);\r\n }\r\n reset(spawnTile) {\r\n super.reset(spawnTile);\r\n this.prevCoord = spawnTile.coord;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n }\r\n /**\r\n * Callback function invoked when the Operator presses a key while\r\n * the game's html element has focus. Because of how JavaScript\r\n * and also Node.js run in a single thread, this is an atomic\r\n * operation (implementation must not intermediately schedule any\r\n * other task-relevant callbacks until all critical operations are\r\n * complete).\r\n *\r\n * @param event - The object describing the `KeyboardEvent`.\r\n */\r\n processKeyboardInput(event) {\r\n if (this.game.status !== game_Game__WEBPACK_IMPORTED_MODULE_2__.Game.Status.PLAYING)\r\n return;\r\n if (!this.requestInFlight) {\r\n // Only process movement-type input if the last request got\r\n // acknowledged by the Game Manager and the game is playing.\r\n if (event.key === \" \") {\r\n if (!floor_Coord__WEBPACK_IMPORTED_MODULE_3__.Coord.equals(this.coord, this.prevCoord)) {\r\n this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord, this.coord), _Player__WEBPACK_IMPORTED_MODULE_4__.Player.MoveType.BOOST);\r\n }\r\n }\r\n else if (event.key.length === 1 && !event.repeat) {\r\n // TODO.design is the above condition okay? will any\r\n // languages require different behaviour?\r\n this.seqBufferAcceptKey(event.key);\r\n }\r\n }\r\n }\r\n /**\r\n * Automatically makes a call to make a movement request if the\r\n * provided `key` completes the `LangSeq` of a UNT. Does not do\r\n * any checking regarding {@link OperatorPlayer#requestInFlight}.\r\n *\r\n * @param key\r\n * The pressed typeable key as a string. Pass an empty string to\r\n * trigger a refresh of the {@link OperatorPlayer#_seqBuffer} to\r\n * maintain its invariant.\r\n */\r\n seqBufferAcceptKey(key) {\r\n const unts = this.tile.destsFrom().unoccupied.get;\r\n if (unts.length === 0) {\r\n // Every neighbouring `Tile` is occupied!\r\n // In this case, no movement is possible.\r\n return;\r\n }\r\n if (key) {\r\n key = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldGet)(this, _langRemappingFunc).call(this, key);\r\n if (!(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Lang.Seq.REGEXP.test(key))) {\r\n // throw new RangeError(`The implementation of input transformation`\r\n // + ` in the currently selected language did not follow the rule`\r\n // + ` of producing output matching the regular expression`\r\n // + ` \\\"${Lang.Seq.REGEXP.source}\\\".`\r\n // );\r\n return;\r\n }\r\n }\r\n else {\r\n const possibleTarget = unts.find((tile) => tile.langSeq.startsWith(this.seqBuffer));\r\n if (!possibleTarget) {\r\n // If the thing I was trying to get to is gone, clear the buffer.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n }\r\n return;\r\n }\r\n for ( // loop through substring start offset of newSeqBuffer:\r\n let newSeqBuffer = this.seqBuffer + key; newSeqBuffer.length; newSeqBuffer = newSeqBuffer.substring(1)) {\r\n // look for the longest suffixing substring of `newSeqBuffer`\r\n // that is a prefixing substring of any UNT's.\r\n const possibleTarget = unts.find((tile) => tile.langSeq.startsWith(newSeqBuffer));\r\n if (possibleTarget) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _seqBuffer, newSeqBuffer);\r\n if (possibleTarget.langSeq === newSeqBuffer) {\r\n this.makeMovementRequest(possibleTarget, _Player__WEBPACK_IMPORTED_MODULE_4__.Player.MoveType.NORMAL);\r\n }\r\n return;\r\n }\r\n }\r\n // Operator's new `seqBuffer` didn't match anything.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n this.status.visualBell();\r\n }\r\n /**\r\n * Automatically clears the {@link OperatorPlayer#seqBuffer}.\r\n *\r\n * @override\r\n */\r\n moveTo(dest) {\r\n // Clear my `seqBuffer` first:\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n this.prevCoord = this.coord;\r\n super.moveTo(dest);\r\n }\r\n _notifyWillBecomeCurrent() {\r\n this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems);\r\n }\r\n get seqBuffer() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__classPrivateFieldGet)(this, _seqBuffer);\r\n }\r\n}\r\n_seqBuffer = new WeakMap(), _langRemappingFunc = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(OperatorPlayer, [\"_notifyWillBecomeCurrent\"]);\r\nObject.freeze(OperatorPlayer);\r\nObject.freeze(OperatorPlayer.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9PcGVyYXRvclBsYXllci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL3BsYXllci9PcGVyYXRvclBsYXllci50cz9iNDk2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfc2VxQnVmZmVyLCBfbGFuZ1JlbWFwcGluZ0Z1bmM7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgTGFuZyBhcyBfTGFuZyB9IGZyb20gXCJkZWZzL1R5cGVEZWZzXCI7XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tIFwiZ2FtZS9HYW1lXCI7XHJcbmltcG9ydCB7IENvb3JkIH0gZnJvbSBcImZsb29yL0Nvb3JkXCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL1BsYXllclwiO1xyXG4vKipcclxuICogVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGluIG9ubGluZS1jbGllbnRzaWRlIGFuZCBvZmZsaW5lIGdhbWVzLlxyXG4gKiBUaGVyZSBhcmUgbm9uZSBmb3Igb25saW5lLXNlcnZlcnNpZGUgZ2FtZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgT3BlcmF0b3JQbGF5ZXIgZXh0ZW5kcyBQbGF5ZXIge1xyXG4gICAgY29uc3RydWN0b3IoZ2FtZSwgZGVzYykge1xyXG4gICAgICAgIHN1cGVyKGdhbWUsIGRlc2MpO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEludmFyaWFudDogYWx3YXlzIG1hdGNoZXMgdGhlIHByZWZpeCBvZiB0aGUge0BsaW5rIExhbmdTZXF9IG9mXHJcbiAgICAgICAgICogYW4gdW5vY2N1cGllZCBuZWlnaGJvdXJpbmcge0BsaW5rIFRpbGV9LlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIF9zZXFCdWZmZXIuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2xhbmdSZW1hcHBpbmdGdW5jLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2xhbmdSZW1hcHBpbmdGdW5jLCB0aGlzLmdhbWUubGFuZ0Zyb250ZW5kLnJlbWFwRnVuYyk7XHJcbiAgICB9XHJcbiAgICByZXNldChzcGF3blRpbGUpIHtcclxuICAgICAgICBzdXBlci5yZXNldChzcGF3blRpbGUpO1xyXG4gICAgICAgIHRoaXMucHJldkNvb3JkID0gc3Bhd25UaWxlLmNvb3JkO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3NlcUJ1ZmZlciwgXCJcIik7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiB0aGUgT3BlcmF0b3IgcHJlc3NlcyBhIGtleSB3aGlsZVxyXG4gICAgICogdGhlIGdhbWUncyBodG1sIGVsZW1lbnQgaGFzIGZvY3VzLiBCZWNhdXNlIG9mIGhvdyBKYXZhU2NyaXB0XHJcbiAgICAgKiBhbmQgYWxzbyBOb2RlLmpzIHJ1biBpbiBhIHNpbmdsZSB0aHJlYWQsIHRoaXMgaXMgYW4gYXRvbWljXHJcbiAgICAgKiBvcGVyYXRpb24gKGltcGxlbWVudGF0aW9uIG11c3Qgbm90IGludGVybWVkaWF0ZWx5IHNjaGVkdWxlIGFueVxyXG4gICAgICogb3RoZXIgdGFzay1yZWxldmFudCBjYWxsYmFja3MgdW50aWwgYWxsIGNyaXRpY2FsIG9wZXJhdGlvbnMgYXJlXHJcbiAgICAgKiBjb21wbGV0ZSkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIG9iamVjdCBkZXNjcmliaW5nIHRoZSBgS2V5Ym9hcmRFdmVudGAuXHJcbiAgICAgKi9cclxuICAgIHByb2Nlc3NLZXlib2FyZElucHV0KGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZS5zdGF0dXMgIT09IEdhbWUuU3RhdHVzLlBMQVlJTkcpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdEluRmxpZ2h0KSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgcHJvY2VzcyBtb3ZlbWVudC10eXBlIGlucHV0IGlmIHRoZSBsYXN0IHJlcXVlc3QgZ290XHJcbiAgICAgICAgICAgIC8vIGFja25vd2xlZGdlZCBieSB0aGUgR2FtZSBNYW5hZ2VyIGFuZCB0aGUgZ2FtZSBpcyBwbGF5aW5nLlxyXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIiBcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDb29yZC5lcXVhbHModGhpcy5jb29yZCwgdGhpcy5wcmV2Q29vcmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlTW92ZW1lbnRSZXF1ZXN0KHRoaXMuZ2FtZS5ncmlkLmdldFVudEF3YXlGcm9tKHRoaXMucHJldkNvb3JkLCB0aGlzLmNvb3JkKSwgUGxheWVyLk1vdmVUeXBlLkJPT1NUKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudC5rZXkubGVuZ3RoID09PSAxICYmICFldmVudC5yZXBlYXQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8uZGVzaWduIGlzIHRoZSBhYm92ZSBjb25kaXRpb24gb2theT8gd2lsbCBhbnlcclxuICAgICAgICAgICAgICAgIC8vIGxhbmd1YWdlcyByZXF1aXJlIGRpZmZlcmVudCBiZWhhdmlvdXI/XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlcUJ1ZmZlckFjY2VwdEtleShldmVudC5rZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXRvbWF0aWNhbGx5IG1ha2VzIGEgY2FsbCB0byBtYWtlIGEgbW92ZW1lbnQgcmVxdWVzdCBpZiB0aGVcclxuICAgICAqIHByb3ZpZGVkIGBrZXlgIGNvbXBsZXRlcyB0aGUgYExhbmdTZXFgIG9mIGEgVU5ULiBEb2VzIG5vdCBkb1xyXG4gICAgICogYW55IGNoZWNraW5nIHJlZ2FyZGluZyB7QGxpbmsgT3BlcmF0b3JQbGF5ZXIjcmVxdWVzdEluRmxpZ2h0fS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ga2V5XHJcbiAgICAgKiBUaGUgcHJlc3NlZCB0eXBlYWJsZSBrZXkgYXMgYSBzdHJpbmcuIFBhc3MgYW4gZW1wdHkgc3RyaW5nIHRvXHJcbiAgICAgKiB0cmlnZ2VyIGEgcmVmcmVzaCBvZiB0aGUge0BsaW5rIE9wZXJhdG9yUGxheWVyI19zZXFCdWZmZXJ9IHRvXHJcbiAgICAgKiBtYWludGFpbiBpdHMgaW52YXJpYW50LlxyXG4gICAgICovXHJcbiAgICBzZXFCdWZmZXJBY2NlcHRLZXkoa2V5KSB7XHJcbiAgICAgICAgY29uc3QgdW50cyA9IHRoaXMudGlsZS5kZXN0c0Zyb20oKS51bm9jY3VwaWVkLmdldDtcclxuICAgICAgICBpZiAodW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgLy8gRXZlcnkgbmVpZ2hib3VyaW5nIGBUaWxlYCBpcyBvY2N1cGllZCFcclxuICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBubyBtb3ZlbWVudCBpcyBwb3NzaWJsZS5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgIGtleSA9IF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2xhbmdSZW1hcHBpbmdGdW5jKS5jYWxsKHRoaXMsIGtleSk7XHJcbiAgICAgICAgICAgIGlmICghKF9MYW5nLlNlcS5SRUdFWFAudGVzdChrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbnB1dCB0cmFuc2Zvcm1hdGlvbmBcclxuICAgICAgICAgICAgICAgIC8vICsgYCBpbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGxhbmd1YWdlIGRpZCBub3QgZm9sbG93IHRoZSBydWxlYFxyXG4gICAgICAgICAgICAgICAgLy8gKyBgIG9mIHByb2R1Y2luZyBvdXRwdXQgbWF0Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbmBcclxuICAgICAgICAgICAgICAgIC8vICsgYCBcXFwiJHtMYW5nLlNlcS5SRUdFWFAuc291cmNlfVxcXCIuYFxyXG4gICAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcG9zc2libGVUYXJnZXQgPSB1bnRzLmZpbmQoKHRpbGUpID0+IHRpbGUubGFuZ1NlcS5zdGFydHNXaXRoKHRoaXMuc2VxQnVmZmVyKSk7XHJcbiAgICAgICAgICAgIGlmICghcG9zc2libGVUYXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0aGluZyBJIHdhcyB0cnlpbmcgdG8gZ2V0IHRvIGlzIGdvbmUsIGNsZWFyIHRoZSBidWZmZXIuXHJcbiAgICAgICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zZXFCdWZmZXIsIFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICggLy8gbG9vcCB0aHJvdWdoIHN1YnN0cmluZyBzdGFydCBvZmZzZXQgb2YgbmV3U2VxQnVmZmVyOlxyXG4gICAgICAgIGxldCBuZXdTZXFCdWZmZXIgPSB0aGlzLnNlcUJ1ZmZlciArIGtleTsgbmV3U2VxQnVmZmVyLmxlbmd0aDsgbmV3U2VxQnVmZmVyID0gbmV3U2VxQnVmZmVyLnN1YnN0cmluZygxKSkge1xyXG4gICAgICAgICAgICAvLyBsb29rIGZvciB0aGUgbG9uZ2VzdCBzdWZmaXhpbmcgc3Vic3RyaW5nIG9mIGBuZXdTZXFCdWZmZXJgXHJcbiAgICAgICAgICAgIC8vIHRoYXQgaXMgYSBwcmVmaXhpbmcgc3Vic3RyaW5nIG9mIGFueSBVTlQncy5cclxuICAgICAgICAgICAgY29uc3QgcG9zc2libGVUYXJnZXQgPSB1bnRzLmZpbmQoKHRpbGUpID0+IHRpbGUubGFuZ1NlcS5zdGFydHNXaXRoKG5ld1NlcUJ1ZmZlcikpO1xyXG4gICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3NlcUJ1ZmZlciwgbmV3U2VxQnVmZmVyKTtcclxuICAgICAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldC5sYW5nU2VxID09PSBuZXdTZXFCdWZmZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ha2VNb3ZlbWVudFJlcXVlc3QocG9zc2libGVUYXJnZXQsIFBsYXllci5Nb3ZlVHlwZS5OT1JNQUwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9wZXJhdG9yJ3MgbmV3IGBzZXFCdWZmZXJgIGRpZG4ndCBtYXRjaCBhbnl0aGluZy5cclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zZXFCdWZmZXIsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzLnZpc3VhbEJlbGwoKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQXV0b21hdGljYWxseSBjbGVhcnMgdGhlIHtAbGluayBPcGVyYXRvclBsYXllciNzZXFCdWZmZXJ9LlxyXG4gICAgICpcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBtb3ZlVG8oZGVzdCkge1xyXG4gICAgICAgIC8vIENsZWFyIG15IGBzZXFCdWZmZXJgIGZpcnN0OlxyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3NlcUJ1ZmZlciwgXCJcIik7XHJcbiAgICAgICAgdGhpcy5wcmV2Q29vcmQgPSB0aGlzLmNvb3JkO1xyXG4gICAgICAgIHN1cGVyLm1vdmVUbyhkZXN0KTtcclxuICAgIH1cclxuICAgIF9ub3RpZnlXaWxsQmVjb21lQ3VycmVudCgpIHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5fbm90aWZ5V2lsbEJlY29tZUN1cnJlbnQodGhpcy5nYW1lLmdyaWQuc3BvdGxpZ2h0RWxlbXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHNlcUJ1ZmZlcigpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc2VxQnVmZmVyKTtcclxuICAgIH1cclxufVxyXG5fc2VxQnVmZmVyID0gbmV3IFdlYWtNYXAoKSwgX2xhbmdSZW1hcHBpbmdGdW5jID0gbmV3IFdlYWtNYXAoKTtcclxuSnNVdGlscy5wcm90b05vRW51bShPcGVyYXRvclBsYXllciwgW1wiX25vdGlmeVdpbGxCZWNvbWVDdXJyZW50XCJdKTtcclxuT2JqZWN0LmZyZWV6ZShPcGVyYXRvclBsYXllcik7XHJcbk9iamVjdC5mcmVlemUoT3BlcmF0b3JQbGF5ZXIucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/player/OperatorPlayer.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/Player.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerSkeleton\": () => /* reexport safe */ _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_3__.PlayerSkeleton,\n/* harmony export */ \"PlayerStatus\": () => /* reexport safe */ _PlayerStatus__WEBPACK_IMPORTED_MODULE_4__.PlayerStatus,\n/* harmony export */ \"Player\": () => /* binding */ Player\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_Game__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/events/PlayerActionEvent.ts\");\n/* harmony import */ var _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/PlayerSkeleton.ts\");\n/* harmony import */ var _PlayerStatus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/base/game/player/PlayerStatus.ts\");\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass Player extends _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_3__.PlayerSkeleton {\r\n /**\r\n */\r\n constructor(game, desc) {\r\n var _a;\r\n super(game, desc);\r\n this.familyId = desc.familyId;\r\n this.teamId = desc.teamId;\r\n this.username = desc.username;\r\n this.avatar = (_a = desc.avatar) !== null && _a !== void 0 ? _a : Player.Avatar.GET_RANDOM();\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"familyId\", \"teamId\", \"username\", \"avatar\",\r\n ]);\r\n }\r\n reset(spawnTile) {\r\n super.reset(spawnTile);\r\n this.status.reset();\r\n this.lastAcceptedRequestId = game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__.PlayerActionEvent.INITIAL_REQUEST_ID;\r\n this.requestInFlight = false;\r\n }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowPlaying() { }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowPaused() { }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowOver() { }\r\n /**\r\n * Called automatically by {@link OperatorPlayer#seqBufferAcceptKey}\r\n * for {@link OperatorPlayer}s, and by a periodic callback for\r\n * {@link ArtificialPlayer}s. Handles behaviour common between all\r\n * implementations.\r\n *\r\n * @final\r\n * @param dest -\r\n * @throws A previous request is still in flight (unacknowledged).\r\n */\r\n makeMovementRequest(dest, type) {\r\n if (this.game.status !== game_Game__WEBPACK_IMPORTED_MODULE_1__.Game.Status.PLAYING) {\r\n // TODO.build disable this check for production.\r\n throw new Error(\"This is not a necessary precondition, but we're doing it anyway.\");\r\n }\r\n else if (this.requestInFlight) {\r\n throw new Error(\"Only one request should ever be in flight at a time.\");\r\n }\r\n this.requestInFlight = true;\r\n this.game.processMoveRequest(new game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__.PlayerActionEvent.Movement(this.playerId, this.lastAcceptedRequestId, dest, type));\r\n }\r\n get team() {\r\n return this.game.teams[this.teamId];\r\n }\r\n isTeamedWith(other) {\r\n return this.team.members.includes(other);\r\n }\r\n}\r\n(function (Player) {\r\n let CtorArgs;\r\n (function (CtorArgs) {\r\n /**\r\n * @returns\r\n * Squashes teamId fields to be suitable for array indices.\r\n *\r\n * @param playerDescs -\r\n * @param langName -\r\n */\r\n function finalize(playerDescs) {\r\n // Map team ID's to consecutive numbers\r\n // (to play nice with array representations):\r\n const teamIdCleaner = Array.from(new Set(playerDescs.map((player) => player.teamId)))\r\n .sort((a, b) => a - b) // This is not a representation requirement.\r\n .reduce((prev, originalId, squashedId) => {\r\n prev[originalId] = squashedId;\r\n return prev;\r\n }, []);\r\n return playerDescs.slice()\r\n .sort((pda, pdb) => teamIdCleaner[pda.teamId] - teamIdCleaner[pdb.teamId])\r\n .map((playerDesc, index) => Object.assign({}, playerDesc, {\r\n playerId: index,\r\n teamId: teamIdCleaner[playerDesc.teamId],\r\n }));\r\n }\r\n CtorArgs.finalize = finalize;\r\n ;\r\n })(CtorArgs = Player.CtorArgs || (Player.CtorArgs = {}));\r\n Object.freeze(CtorArgs);\r\n})(Player || (Player = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Player, [\r\n \"_notifyGameNowPaused\", \"_notifyGameNowPlaying\", \"_notifyGameNowOver\",\r\n]);\r\nObject.freeze(Player);\r\nObject.freeze(Player.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9wbGF5ZXIvUGxheWVyLnRzP2NhYjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgR2FtZSB9IGZyb20gXCJnYW1lL0dhbWVcIjtcclxuaW1wb3J0IHsgUGxheWVyQWN0aW9uRXZlbnQgfSBmcm9tIFwiZ2FtZS9ldmVudHMvUGxheWVyQWN0aW9uRXZlbnRcIjtcclxuaW1wb3J0IHsgUGxheWVyU2tlbGV0b24gfSBmcm9tIFwiLi9QbGF5ZXJTa2VsZXRvblwiO1xyXG5leHBvcnQgeyBQbGF5ZXJTa2VsZXRvbiB9O1xyXG5pbXBvcnQgeyBQbGF5ZXJTdGF0dXMgfSBmcm9tIFwiLi9QbGF5ZXJTdGF0dXNcIjtcclxuZXhwb3J0IHsgUGxheWVyU3RhdHVzIH07XHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBsYXllciBleHRlbmRzIFBsYXllclNrZWxldG9uIHtcclxuICAgIC8qKlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lLCBkZXNjKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHN1cGVyKGdhbWUsIGRlc2MpO1xyXG4gICAgICAgIHRoaXMuZmFtaWx5SWQgPSBkZXNjLmZhbWlseUlkO1xyXG4gICAgICAgIHRoaXMudGVhbUlkID0gZGVzYy50ZWFtSWQ7XHJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IGRlc2MudXNlcm5hbWU7XHJcbiAgICAgICAgdGhpcy5hdmF0YXIgPSAoX2EgPSBkZXNjLmF2YXRhcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogUGxheWVyLkF2YXRhci5HRVRfUkFORE9NKCk7XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXHJcbiAgICAgICAgICAgIFwiZmFtaWx5SWRcIiwgXCJ0ZWFtSWRcIiwgXCJ1c2VybmFtZVwiLCBcImF2YXRhclwiLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXQoc3Bhd25UaWxlKSB7XHJcbiAgICAgICAgc3VwZXIucmVzZXQoc3Bhd25UaWxlKTtcclxuICAgICAgICB0aGlzLnN0YXR1cy5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMubGFzdEFjY2VwdGVkUmVxdWVzdElkID0gUGxheWVyQWN0aW9uRXZlbnQuSU5JVElBTF9SRVFVRVNUX0lEO1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEluRmxpZ2h0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgX25vdGlmeUdhbWVOb3dQbGF5aW5nKCkgeyB9XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgX25vdGlmeUdhbWVOb3dQYXVzZWQoKSB7IH1cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBfbm90aWZ5R2FtZU5vd092ZXIoKSB7IH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkge0BsaW5rIE9wZXJhdG9yUGxheWVyI3NlcUJ1ZmZlckFjY2VwdEtleX1cclxuICAgICAqIGZvciB7QGxpbmsgT3BlcmF0b3JQbGF5ZXJ9cywgYW5kIGJ5IGEgcGVyaW9kaWMgY2FsbGJhY2sgZm9yXHJcbiAgICAgKiB7QGxpbmsgQXJ0aWZpY2lhbFBsYXllcn1zLiBIYW5kbGVzIGJlaGF2aW91ciBjb21tb24gYmV0d2VlbiBhbGxcclxuICAgICAqIGltcGxlbWVudGF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAZmluYWxcclxuICAgICAqIEBwYXJhbSBkZXN0IC1cclxuICAgICAqIEB0aHJvd3MgQSBwcmV2aW91cyByZXF1ZXN0IGlzIHN0aWxsIGluIGZsaWdodCAodW5hY2tub3dsZWRnZWQpLlxyXG4gICAgICovXHJcbiAgICBtYWtlTW92ZW1lbnRSZXF1ZXN0KGRlc3QsIHR5cGUpIHtcclxuICAgICAgICBpZiAodGhpcy5nYW1lLnN0YXR1cyAhPT0gR2FtZS5TdGF0dXMuUExBWUlORykge1xyXG4gICAgICAgICAgICAvLyBUT0RPLmJ1aWxkIGRpc2FibGUgdGhpcyBjaGVjayBmb3IgcHJvZHVjdGlvbi5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpcyBub3QgYSBuZWNlc3NhcnkgcHJlY29uZGl0aW9uLCBidXQgd2UncmUgZG9pbmcgaXQgYW55d2F5LlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5yZXF1ZXN0SW5GbGlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBvbmUgcmVxdWVzdCBzaG91bGQgZXZlciBiZSBpbiBmbGlnaHQgYXQgYSB0aW1lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SW5GbGlnaHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ2FtZS5wcm9jZXNzTW92ZVJlcXVlc3QobmV3IFBsYXllckFjdGlvbkV2ZW50Lk1vdmVtZW50KHRoaXMucGxheWVySWQsIHRoaXMubGFzdEFjY2VwdGVkUmVxdWVzdElkLCBkZXN0LCB0eXBlKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgdGVhbSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nYW1lLnRlYW1zW3RoaXMudGVhbUlkXTtcclxuICAgIH1cclxuICAgIGlzVGVhbWVkV2l0aChvdGhlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRlYW0ubWVtYmVycy5pbmNsdWRlcyhvdGhlcik7XHJcbiAgICB9XHJcbn1cclxuKGZ1bmN0aW9uIChQbGF5ZXIpIHtcclxuICAgIGxldCBDdG9yQXJncztcclxuICAgIChmdW5jdGlvbiAoQ3RvckFyZ3MpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcmV0dXJuc1xyXG4gICAgICAgICAqIFNxdWFzaGVzIHRlYW1JZCBmaWVsZHMgdG8gYmUgc3VpdGFibGUgZm9yIGFycmF5IGluZGljZXMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0gcGxheWVyRGVzY3MgLVxyXG4gICAgICAgICAqIEBwYXJhbSBsYW5nTmFtZSAtXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemUocGxheWVyRGVzY3MpIHtcclxuICAgICAgICAgICAgLy8gTWFwIHRlYW0gSUQncyB0byBjb25zZWN1dGl2ZSBudW1iZXJzXHJcbiAgICAgICAgICAgIC8vICh0byBwbGF5IG5pY2Ugd2l0aCBhcnJheSByZXByZXNlbnRhdGlvbnMpOlxyXG4gICAgICAgICAgICBjb25zdCB0ZWFtSWRDbGVhbmVyID0gQXJyYXkuZnJvbShuZXcgU2V0KHBsYXllckRlc2NzLm1hcCgocGxheWVyKSA9PiBwbGF5ZXIudGVhbUlkKSkpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYSAtIGIpIC8vIFRoaXMgaXMgbm90IGEgcmVwcmVzZW50YXRpb24gcmVxdWlyZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwcmV2LCBvcmlnaW5hbElkLCBzcXVhc2hlZElkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwcmV2W29yaWdpbmFsSWRdID0gc3F1YXNoZWRJZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgICAgICB9LCBbXSk7XHJcbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXJEZXNjcy5zbGljZSgpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgocGRhLCBwZGIpID0+IHRlYW1JZENsZWFuZXJbcGRhLnRlYW1JZF0gLSB0ZWFtSWRDbGVhbmVyW3BkYi50ZWFtSWRdKVxyXG4gICAgICAgICAgICAgICAgLm1hcCgocGxheWVyRGVzYywgaW5kZXgpID0+IE9iamVjdC5hc3NpZ24oe30sIHBsYXllckRlc2MsIHtcclxuICAgICAgICAgICAgICAgIHBsYXllcklkOiBpbmRleCxcclxuICAgICAgICAgICAgICAgIHRlYW1JZDogdGVhbUlkQ2xlYW5lcltwbGF5ZXJEZXNjLnRlYW1JZF0sXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQ3RvckFyZ3MuZmluYWxpemUgPSBmaW5hbGl6ZTtcclxuICAgICAgICA7XHJcbiAgICB9KShDdG9yQXJncyA9IFBsYXllci5DdG9yQXJncyB8fCAoUGxheWVyLkN0b3JBcmdzID0ge30pKTtcclxuICAgIE9iamVjdC5mcmVlemUoQ3RvckFyZ3MpO1xyXG59KShQbGF5ZXIgfHwgKFBsYXllciA9IHt9KSk7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oUGxheWVyLCBbXHJcbiAgICBcIl9ub3RpZnlHYW1lTm93UGF1c2VkXCIsIFwiX25vdGlmeUdhbWVOb3dQbGF5aW5nXCIsIFwiX25vdGlmeUdhbWVOb3dPdmVyXCIsXHJcbl0pO1xyXG5PYmplY3QuZnJlZXplKFBsYXllcik7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/Player.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/PlayerSkeleton.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerSkeleton\": () => /* binding */ PlayerSkeleton\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var game_Game__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var floor_TileGetter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/floor/TileGetter.ts\");\nvar _hostTile;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Made to abstract all operations that change the `hostTile`\r\n * field. Enforces / exposes the `moveTo` method as\r\n * the interface to any such operations.\r\n *\r\n * @extends Player to intake its namespace exports.\r\n */\r\nclass PlayerSkeleton extends defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player {\r\n constructor(game, desc) {\r\n super();\r\n _hostTile.set(this, void 0);\r\n if (Math.trunc(desc.playerId) !== desc.playerId) {\r\n throw new RangeError(\"Player ID's must be integer values.\");\r\n }\r\n this.playerId = desc.playerId;\r\n this.isALocalOperator = desc.isALocalOperator;\r\n this.game = game;\r\n this.status = new (this.game._playerStatusCtor)(this, desc.noCheckGameOver);\r\n this.tile = new floor_TileGetter__WEBPACK_IMPORTED_MODULE_3__.TileGetter(new PlayerSkeleton.TileGetterSource(this));\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.instNoEnum(this, [\"game\"]);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"playerId\", \"isALocalOperator\",\r\n \"game\", \"status\", \"tile\",\r\n ]);\r\n }\r\n _afterAllPlayersConstruction() {\r\n this.status._afterAllPlayersConstruction();\r\n }\r\n /**\r\n * Must be called _after_ the {@link Grid} has been reset.\r\n * Does not evict itself from its current host tile (if it\r\n * has one).\r\n *\r\n * @param spawnTile -\r\n */\r\n reset(spawnTile) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _hostTile, spawnTile);\r\n this.hostTile._setOccupant(this.playerId, this.status.immigrantInfo);\r\n }\r\n get coord() {\r\n return this.hostTile.coord;\r\n }\r\n get hostTile() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _hostTile);\r\n }\r\n /**\r\n * Evicts this `Player` from its last known position (which may be\r\n * lagging behind the state of the master copy of the game.\r\n *\r\n * This must be called after all same-event changes pertaining to\r\n * this player's fields have been enacted.\r\n *\r\n * @param dest -\r\n */\r\n moveTo(dest) {\r\n // Evict self from current `Tile`.\r\n if (this.hostTile.occupantId !== this.playerId) {\r\n if (this.game.gameType !== game_Game__WEBPACK_IMPORTED_MODULE_2__.Game.Type.ONLINE) {\r\n // Should never happen.\r\n throw new Error(\"Linkage between player and occupied tile disagrees.\");\r\n }\r\n /* Otherwise, this corner case is guaranteed to follow the events\r\n described in the below comment: at this `OnlineGame`, `p2` will\r\n move off of the `Tile` currently occupied by this `Player`. */\r\n }\r\n else {\r\n // Move off of current host `Tile`:\r\n this.hostTile.evictOccupant();\r\n }\r\n // Occupy the destination `Tile.\r\n if (dest.isOccupied) {\r\n if (this.game.gameType !== game_Game__WEBPACK_IMPORTED_MODULE_2__.Game.Type.ONLINE) {\r\n // Should never happen because the Game Manager\r\n // rejects requests to move onto an occupied `Tile`.\r\n throw new Error(\"Only one player can occupy a tile at a time.\");\r\n }\r\n /* Otherwise, this is actually possible in a variant of the _DAS_\r\n where another `Player` `p2` moves to `B`, I receive that update,\r\n then `p2` makes a request to move to `C`, which the Game Manager\r\n accepts and begins to notify my `OnlineGame` of, but between the\r\n time that the GM accepts the request and when I receive the update,\r\n I make a request to move to `B`, which gets accepted by the GM,\r\n and because I might not be using websockets as my underlying\r\n transport, I receive the update for my own request first, which\r\n would appear to my `OnlineGame` as if I was moving onto the `Tile`\r\n occupied by `p2`. */\r\n }\r\n else {\r\n // Move to occupy the destination `Tile`:\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _hostTile, dest);\r\n dest._setOccupant(this.playerId, this.status.immigrantInfo);\r\n }\r\n }\r\n}\r\n_hostTile = new WeakMap();\r\n(function (PlayerSkeleton) {\r\n var _player, _superTileSrc;\r\n /**\r\n */\r\n class TileGetterSource {\r\n constructor(player) {\r\n _player.set(this, void 0);\r\n _superTileSrc.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _player, player);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _superTileSrc, player.game.grid.tile._source);\r\n }\r\n _getTileAt() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _superTileSrc)._getTileAt((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n _getTileDestsFrom() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _superTileSrc)._getTileDestsFrom((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n _getTileSourcesTo() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _superTileSrc)._getTileSourcesTo((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n }\r\n _player = new WeakMap(), _superTileSrc = new WeakMap();\r\n PlayerSkeleton.TileGetterSource = TileGetterSource;\r\n Object.freeze(TileGetterSource);\r\n Object.freeze(TileGetterSource.prototype);\r\n})(PlayerSkeleton || (PlayerSkeleton = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(PlayerSkeleton, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(PlayerSkeleton);\r\nObject.freeze(PlayerSkeleton.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTa2VsZXRvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTa2VsZXRvbi50cz8zZGViIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfaG9zdFRpbGU7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgUGxheWVyIGFzIF9QbGF5ZXIgfSBmcm9tIFwiZGVmcy9UeXBlRGVmc1wiO1xyXG5pbXBvcnQgeyBHYW1lIH0gZnJvbSBcImdhbWUvR2FtZVwiO1xyXG5pbXBvcnQgeyBUaWxlR2V0dGVyIH0gZnJvbSBcImZsb29yL1RpbGVHZXR0ZXJcIjtcclxuLyoqXHJcbiAqIE1hZGUgdG8gYWJzdHJhY3QgYWxsIG9wZXJhdGlvbnMgdGhhdCBjaGFuZ2UgdGhlIGBob3N0VGlsZWBcclxuICogZmllbGQuIEVuZm9yY2VzIC8gZXhwb3NlcyB0aGUgYG1vdmVUb2AgbWV0aG9kIGFzXHJcbiAqIHRoZSBpbnRlcmZhY2UgdG8gYW55IHN1Y2ggb3BlcmF0aW9ucy5cclxuICpcclxuICogQGV4dGVuZHMgUGxheWVyIHRvIGludGFrZSBpdHMgbmFtZXNwYWNlIGV4cG9ydHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGxheWVyU2tlbGV0b24gZXh0ZW5kcyBfUGxheWVyIHtcclxuICAgIGNvbnN0cnVjdG9yKGdhbWUsIGRlc2MpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIF9ob3N0VGlsZS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBpZiAoTWF0aC50cnVuYyhkZXNjLnBsYXllcklkKSAhPT0gZGVzYy5wbGF5ZXJJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlBsYXllciBJRCdzIG11c3QgYmUgaW50ZWdlciB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcklkID0gZGVzYy5wbGF5ZXJJZDtcclxuICAgICAgICB0aGlzLmlzQUxvY2FsT3BlcmF0b3IgPSBkZXNjLmlzQUxvY2FsT3BlcmF0b3I7XHJcbiAgICAgICAgdGhpcy5nYW1lID0gZ2FtZTtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IG5ldyAodGhpcy5nYW1lLl9wbGF5ZXJTdGF0dXNDdG9yKSh0aGlzLCBkZXNjLm5vQ2hlY2tHYW1lT3Zlcik7XHJcbiAgICAgICAgdGhpcy50aWxlID0gbmV3IFRpbGVHZXR0ZXIobmV3IFBsYXllclNrZWxldG9uLlRpbGVHZXR0ZXJTb3VyY2UodGhpcykpO1xyXG4gICAgICAgIEpzVXRpbHMuaW5zdE5vRW51bSh0aGlzLCBbXCJnYW1lXCJdKTtcclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcclxuICAgICAgICAgICAgXCJwbGF5ZXJJZFwiLCBcImlzQUxvY2FsT3BlcmF0b3JcIixcclxuICAgICAgICAgICAgXCJnYW1lXCIsIFwic3RhdHVzXCIsIFwidGlsZVwiLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvbigpIHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5fYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE11c3QgYmUgY2FsbGVkIF9hZnRlcl8gdGhlIHtAbGluayBHcmlkfSBoYXMgYmVlbiByZXNldC5cclxuICAgICAqIERvZXMgbm90IGV2aWN0IGl0c2VsZiBmcm9tIGl0cyBjdXJyZW50IGhvc3QgdGlsZSAoaWYgaXRcclxuICAgICAqIGhhcyBvbmUpLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzcGF3blRpbGUgLVxyXG4gICAgICovXHJcbiAgICByZXNldChzcGF3blRpbGUpIHtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ob3N0VGlsZSwgc3Bhd25UaWxlKTtcclxuICAgICAgICB0aGlzLmhvc3RUaWxlLl9zZXRPY2N1cGFudCh0aGlzLnBsYXllcklkLCB0aGlzLnN0YXR1cy5pbW1pZ3JhbnRJbmZvKTtcclxuICAgIH1cclxuICAgIGdldCBjb29yZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0VGlsZS5jb29yZDtcclxuICAgIH1cclxuICAgIGdldCBob3N0VGlsZSgpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaG9zdFRpbGUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmljdHMgdGhpcyBgUGxheWVyYCBmcm9tIGl0cyBsYXN0IGtub3duIHBvc2l0aW9uICh3aGljaCBtYXkgYmVcclxuICAgICAqIGxhZ2dpbmcgYmVoaW5kIHRoZSBzdGF0ZSBvZiB0aGUgbWFzdGVyIGNvcHkgb2YgdGhlIGdhbWUuXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBtdXN0IGJlIGNhbGxlZCBhZnRlciBhbGwgc2FtZS1ldmVudCBjaGFuZ2VzIHBlcnRhaW5pbmcgdG9cclxuICAgICAqIHRoaXMgcGxheWVyJ3MgZmllbGRzIGhhdmUgYmVlbiBlbmFjdGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXN0IC1cclxuICAgICAqL1xyXG4gICAgbW92ZVRvKGRlc3QpIHtcclxuICAgICAgICAvLyBFdmljdCBzZWxmIGZyb20gY3VycmVudCBgVGlsZWAuXHJcbiAgICAgICAgaWYgKHRoaXMuaG9zdFRpbGUub2NjdXBhbnRJZCAhPT0gdGhpcy5wbGF5ZXJJZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nYW1lLmdhbWVUeXBlICE9PSBHYW1lLlR5cGUuT05MSU5FKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLlxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlua2FnZSBiZXR3ZWVuIHBsYXllciBhbmQgb2NjdXBpZWQgdGlsZSBkaXNhZ3JlZXMuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qIE90aGVyd2lzZSwgdGhpcyBjb3JuZXIgY2FzZSBpcyBndWFyYW50ZWVkIHRvIGZvbGxvdyB0aGUgZXZlbnRzXHJcbiAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUgYmVsb3cgY29tbWVudDogYXQgdGhpcyBgT25saW5lR2FtZWAsIGBwMmAgd2lsbFxyXG4gICAgICAgICAgICBtb3ZlIG9mZiBvZiB0aGUgYFRpbGVgIGN1cnJlbnRseSBvY2N1cGllZCBieSB0aGlzIGBQbGF5ZXJgLiAqL1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gTW92ZSBvZmYgb2YgY3VycmVudCBob3N0IGBUaWxlYDpcclxuICAgICAgICAgICAgdGhpcy5ob3N0VGlsZS5ldmljdE9jY3VwYW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9jY3VweSB0aGUgZGVzdGluYXRpb24gYFRpbGUuXHJcbiAgICAgICAgaWYgKGRlc3QuaXNPY2N1cGllZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nYW1lLmdhbWVUeXBlICE9PSBHYW1lLlR5cGUuT05MSU5FKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgdGhlIEdhbWUgTWFuYWdlclxyXG4gICAgICAgICAgICAgICAgLy8gcmVqZWN0cyByZXF1ZXN0cyB0byBtb3ZlIG9udG8gYW4gb2NjdXBpZWQgYFRpbGVgLlxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBvbmUgcGxheWVyIGNhbiBvY2N1cHkgYSB0aWxlIGF0IGEgdGltZS5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyogT3RoZXJ3aXNlLCB0aGlzIGlzIGFjdHVhbGx5IHBvc3NpYmxlIGluIGEgdmFyaWFudCBvZiB0aGUgX0RBU19cclxuICAgICAgICAgICAgd2hlcmUgYW5vdGhlciBgUGxheWVyYCBgcDJgIG1vdmVzIHRvIGBCYCwgSSByZWNlaXZlIHRoYXQgdXBkYXRlLFxyXG4gICAgICAgICAgICB0aGVuIGBwMmAgbWFrZXMgYSByZXF1ZXN0IHRvIG1vdmUgdG8gYENgLCB3aGljaCB0aGUgR2FtZSBNYW5hZ2VyXHJcbiAgICAgICAgICAgIGFjY2VwdHMgYW5kIGJlZ2lucyB0byBub3RpZnkgbXkgYE9ubGluZUdhbWVgIG9mLCBidXQgYmV0d2VlbiB0aGVcclxuICAgICAgICAgICAgdGltZSB0aGF0IHRoZSBHTSBhY2NlcHRzIHRoZSByZXF1ZXN0IGFuZCB3aGVuIEkgcmVjZWl2ZSB0aGUgdXBkYXRlLFxyXG4gICAgICAgICAgICBJIG1ha2UgYSByZXF1ZXN0IHRvIG1vdmUgdG8gYEJgLCB3aGljaCBnZXRzIGFjY2VwdGVkIGJ5IHRoZSBHTSxcclxuICAgICAgICAgICAgYW5kIGJlY2F1c2UgSSBtaWdodCBub3QgYmUgdXNpbmcgd2Vic29ja2V0cyBhcyBteSB1bmRlcmx5aW5nXHJcbiAgICAgICAgICAgIHRyYW5zcG9ydCwgSSByZWNlaXZlIHRoZSB1cGRhdGUgZm9yIG15IG93biByZXF1ZXN0IGZpcnN0LCB3aGljaFxyXG4gICAgICAgICAgICB3b3VsZCBhcHBlYXIgdG8gbXkgYE9ubGluZUdhbWVgIGFzIGlmIEkgd2FzIG1vdmluZyBvbnRvIHRoZSBgVGlsZWBcclxuICAgICAgICAgICAgb2NjdXBpZWQgYnkgYHAyYC4gKi9cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIE1vdmUgdG8gb2NjdXB5IHRoZSBkZXN0aW5hdGlvbiBgVGlsZWA6XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2hvc3RUaWxlLCBkZXN0KTtcclxuICAgICAgICAgICAgZGVzdC5fc2V0T2NjdXBhbnQodGhpcy5wbGF5ZXJJZCwgdGhpcy5zdGF0dXMuaW1taWdyYW50SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbl9ob3N0VGlsZSA9IG5ldyBXZWFrTWFwKCk7XHJcbihmdW5jdGlvbiAoUGxheWVyU2tlbGV0b24pIHtcclxuICAgIHZhciBfcGxheWVyLCBfc3VwZXJUaWxlU3JjO1xyXG4gICAgLyoqXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIFRpbGVHZXR0ZXJTb3VyY2Uge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHBsYXllcikge1xyXG4gICAgICAgICAgICBfcGxheWVyLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgICAgICBfc3VwZXJUaWxlU3JjLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9wbGF5ZXIsIHBsYXllcik7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3N1cGVyVGlsZVNyYywgcGxheWVyLmdhbWUuZ3JpZC50aWxlLl9zb3VyY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZ2V0VGlsZUF0KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc3VwZXJUaWxlU3JjKS5fZ2V0VGlsZUF0KF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BsYXllcikuY29vcmQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZ2V0VGlsZURlc3RzRnJvbSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3N1cGVyVGlsZVNyYykuX2dldFRpbGVEZXN0c0Zyb20oX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGxheWVyKS5jb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlU291cmNlc1RvKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc3VwZXJUaWxlU3JjKS5fZ2V0VGlsZVNvdXJjZXNUbyhfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wbGF5ZXIpLmNvb3JkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfcGxheWVyID0gbmV3IFdlYWtNYXAoKSwgX3N1cGVyVGlsZVNyYyA9IG5ldyBXZWFrTWFwKCk7XHJcbiAgICBQbGF5ZXJTa2VsZXRvbi5UaWxlR2V0dGVyU291cmNlID0gVGlsZUdldHRlclNvdXJjZTtcclxuICAgIE9iamVjdC5mcmVlemUoVGlsZUdldHRlclNvdXJjZSk7XHJcbiAgICBPYmplY3QuZnJlZXplKFRpbGVHZXR0ZXJTb3VyY2UucHJvdG90eXBlKTtcclxufSkoUGxheWVyU2tlbGV0b24gfHwgKFBsYXllclNrZWxldG9uID0ge30pKTtcclxuSnNVdGlscy5wcm90b05vRW51bShQbGF5ZXJTa2VsZXRvbiwgW1wiX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyU2tlbGV0b24pO1xyXG5PYmplY3QuZnJlZXplKFBsYXllclNrZWxldG9uLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/player/PlayerSkeleton.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/PlayerStatus.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerStatus\": () => /* binding */ PlayerStatus\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_player_Team__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/player/Team.ts\");\nvar _health;\r\n\r\n\r\n\r\n/**\r\n * This abstracts acts of modification upon a player's state, allowing\r\n * extension classes to override setters to perform additional tasks\r\n * such as visually rendering updates to this state information in a\r\n * web browser, and playing sound effects.\r\n */\r\nclass PlayerStatus {\r\n constructor(player, noCheckGameOver) {\r\n _health.set(this, void 0);\r\n this.player = player;\r\n this.noCheckGameOver = noCheckGameOver;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.instNoEnum(this, [\"player\"]);\r\n }\r\n reset() {\r\n this.health = 0;\r\n }\r\n _afterAllPlayersConstruction() { }\r\n get immigrantInfo() {\r\n return undefined;\r\n }\r\n get health() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _health);\r\n }\r\n set health(newHealth) {\r\n const oldIsDowned = this.isDowned;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _health, newHealth);\r\n if (oldIsDowned || !this.isDowned || this.noCheckGameOver)\r\n return;\r\n const team = this.player.team;\r\n const teams = this.player.game.teams;\r\n if (team.elimOrder === game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING) {\r\n // Right before this downing event, the team has not been\r\n // soft-eliminated yet, but it might be now. Check it:\r\n if (team.members.every((player) => {\r\n return player.status.noCheckGameOver || player.status.isDowned;\r\n })) {\r\n // All players are downed! The team is now eliminated:\r\n const numNonStandingTeams = 1 + teams.filter((team) => {\r\n return team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING;\r\n }).length;\r\n team.elimOrder\r\n = 1 + teams.filter((team) => {\r\n return team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING\r\n && team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.IMMORTAL;\r\n }).length;\r\n // Now that a team is newly-eliminated, check if the\r\n // game should end:\r\n if (numNonStandingTeams === teams.length) {\r\n this.player.game.statusBecomeOver();\r\n }\r\n }\r\n }\r\n }\r\n get isDowned() {\r\n return this.health < 0.0;\r\n }\r\n}\r\n_health = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(PlayerStatus, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(PlayerStatus);\r\nObject.freeze(PlayerStatus.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTdGF0dXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9wbGF5ZXIvUGxheWVyU3RhdHVzLnRzP2VlODUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9oZWFsdGg7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgVGVhbSB9IGZyb20gXCJnYW1lL3BsYXllci9UZWFtXCI7XHJcbi8qKlxyXG4gKiBUaGlzIGFic3RyYWN0cyBhY3RzIG9mIG1vZGlmaWNhdGlvbiB1cG9uIGEgcGxheWVyJ3Mgc3RhdGUsIGFsbG93aW5nXHJcbiAqIGV4dGVuc2lvbiBjbGFzc2VzIHRvIG92ZXJyaWRlIHNldHRlcnMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIHRhc2tzXHJcbiAqIHN1Y2ggYXMgdmlzdWFsbHkgcmVuZGVyaW5nIHVwZGF0ZXMgdG8gdGhpcyBzdGF0ZSBpbmZvcm1hdGlvbiBpbiBhXHJcbiAqIHdlYiBicm93c2VyLCBhbmQgcGxheWluZyBzb3VuZCBlZmZlY3RzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBsYXllclN0YXR1cyB7XHJcbiAgICBjb25zdHJ1Y3RvcihwbGF5ZXIsIG5vQ2hlY2tHYW1lT3Zlcikge1xyXG4gICAgICAgIF9oZWFsdGguc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5wbGF5ZXIgPSBwbGF5ZXI7XHJcbiAgICAgICAgdGhpcy5ub0NoZWNrR2FtZU92ZXIgPSBub0NoZWNrR2FtZU92ZXI7XHJcbiAgICAgICAgSnNVdGlscy5pbnN0Tm9FbnVtKHRoaXMsIFtcInBsYXllclwiXSk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmhlYWx0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBfYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCkgeyB9XHJcbiAgICBnZXQgaW1taWdyYW50SW5mbygpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgZ2V0IGhlYWx0aCgpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaGVhbHRoKTtcclxuICAgIH1cclxuICAgIHNldCBoZWFsdGgobmV3SGVhbHRoKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkSXNEb3duZWQgPSB0aGlzLmlzRG93bmVkO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2hlYWx0aCwgbmV3SGVhbHRoKTtcclxuICAgICAgICBpZiAob2xkSXNEb3duZWQgfHwgIXRoaXMuaXNEb3duZWQgfHwgdGhpcy5ub0NoZWNrR2FtZU92ZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCB0ZWFtID0gdGhpcy5wbGF5ZXIudGVhbTtcclxuICAgICAgICBjb25zdCB0ZWFtcyA9IHRoaXMucGxheWVyLmdhbWUudGVhbXM7XHJcbiAgICAgICAgaWYgKHRlYW0uZWxpbU9yZGVyID09PSBUZWFtLkVsaW1PcmRlci5TVEFORElORykge1xyXG4gICAgICAgICAgICAvLyBSaWdodCBiZWZvcmUgdGhpcyBkb3duaW5nIGV2ZW50LCB0aGUgdGVhbSBoYXMgbm90IGJlZW5cclxuICAgICAgICAgICAgLy8gc29mdC1lbGltaW5hdGVkIHlldCwgYnV0IGl0IG1pZ2h0IGJlIG5vdy4gQ2hlY2sgaXQ6XHJcbiAgICAgICAgICAgIGlmICh0ZWFtLm1lbWJlcnMuZXZlcnkoKHBsYXllcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXllci5zdGF0dXMubm9DaGVja0dhbWVPdmVyIHx8IHBsYXllci5zdGF0dXMuaXNEb3duZWQ7XHJcbiAgICAgICAgICAgIH0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBbGwgcGxheWVycyBhcmUgZG93bmVkISBUaGUgdGVhbSBpcyBub3cgZWxpbWluYXRlZDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IG51bU5vblN0YW5kaW5nVGVhbXMgPSAxICsgdGVhbXMuZmlsdGVyKCh0ZWFtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlYW0uZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5TVEFORElORztcclxuICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRlYW0uZWxpbU9yZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPSAxICsgdGVhbXMuZmlsdGVyKCh0ZWFtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZWFtLmVsaW1PcmRlciAhPT0gVGVhbS5FbGltT3JkZXIuU1RBTkRJTkdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRlYW0uZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5JTU1PUlRBTDtcclxuICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAvLyBOb3cgdGhhdCBhIHRlYW0gaXMgbmV3bHktZWxpbWluYXRlZCwgY2hlY2sgaWYgdGhlXHJcbiAgICAgICAgICAgICAgICAvLyBnYW1lIHNob3VsZCBlbmQ6XHJcbiAgICAgICAgICAgICAgICBpZiAobnVtTm9uU3RhbmRpbmdUZWFtcyA9PT0gdGVhbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIuZ2FtZS5zdGF0dXNCZWNvbWVPdmVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgaXNEb3duZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhbHRoIDwgMC4wO1xyXG4gICAgfVxyXG59XHJcbl9oZWFsdGggPSBuZXcgV2Vha01hcCgpO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKFBsYXllclN0YXR1cywgW1wiX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyU3RhdHVzKTtcclxuT2JqZWN0LmZyZWV6ZShQbGF5ZXJTdGF0dXMucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/PlayerStatus.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/Team.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Team\": () => /* binding */ Team\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\nvar _elimOrder;\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass Team {\r\n constructor(teamId, members) {\r\n _elimOrder.set(this, void 0);\r\n if (members.length === 0) {\r\n throw new Error(\"Teams must have at least one member.\");\r\n }\r\n this.id = teamId;\r\n this.members = members; // If paranoid, do a shallow copy.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldSet)(// If paranoid, do a shallow copy.\r\n this, _elimOrder, (this.members.every((member) => member.status.noCheckGameOver))\r\n ? Team.ElimOrder.IMMORTAL\r\n : Team.ElimOrder.STANDING);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"id\", \"members\"]);\r\n }\r\n reset() {\r\n if (this.elimOrder !== Team.ElimOrder.IMMORTAL) {\r\n this.elimOrder = Team.ElimOrder.STANDING;\r\n }\r\n }\r\n /**\r\n * @returns\r\n * Indicates the order (relative to other teams) in which this\r\n * team was to have all its members downed at the same time at\r\n * least once. Once a team is soft-eliminated, they can continue\r\n * playing as normal, but there is no going back. The game ends\r\n * when all teams but one have been soft-eliminated.\r\n *\r\n * ### Semantics\r\n *\r\n * A comparatively smaller value denotes having been soft-\r\n * eliminated at an earlier point in the game. **The value zero\r\n * denotes _not-having-been-soft-eliminated-yet_**.\r\n */\r\n get elimOrder() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldGet)(this, _elimOrder);\r\n }\r\n set elimOrder(teamElimOrder) {\r\n if (this.elimOrder === Team.ElimOrder.IMMORTAL) {\r\n throw new TypeError(\"Cannot change the elimination status of an immortal team.\");\r\n }\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldSet)(this, _elimOrder, teamElimOrder);\r\n }\r\n}\r\n_elimOrder = new WeakMap();\r\n(function (Team) {\r\n // Special values:\r\n let ElimOrder;\r\n (function (ElimOrder) {\r\n /**\r\n * A team starts off with such a value if all its players have\r\n * specified that their downing should not cause a check for\r\n * whether the game should end.\r\n */\r\n ElimOrder.IMMORTAL = -1;\r\n /**\r\n * A team that is not invincible starts off with such a value.\r\n */\r\n ElimOrder.STANDING = 0;\r\n })(ElimOrder = Team.ElimOrder || (Team.ElimOrder = {}));\r\n})(Team || (Team = {}));\r\nObject.freeze(Team);\r\nObject.freeze(Team.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9UZWFtLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvcGxheWVyL1RlYW0udHM/MjYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2VsaW1PcmRlcjtcclxuaW1wb3J0IHsgX19jbGFzc1ByaXZhdGVGaWVsZEdldCwgX19jbGFzc1ByaXZhdGVGaWVsZFNldCB9IGZyb20gXCJ0c2xpYlwiO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG4vKipcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBUZWFtIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlYW1JZCwgbWVtYmVycykge1xyXG4gICAgICAgIF9lbGltT3JkZXIuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgaWYgKG1lbWJlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRlYW1zIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbWVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pZCA9IHRlYW1JZDtcclxuICAgICAgICB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzOyAvLyBJZiBwYXJhbm9pZCwgZG8gYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCgvLyBJZiBwYXJhbm9pZCwgZG8gYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgdGhpcywgX2VsaW1PcmRlciwgKHRoaXMubWVtYmVycy5ldmVyeSgobWVtYmVyKSA9PiBtZW1iZXIuc3RhdHVzLm5vQ2hlY2tHYW1lT3ZlcikpXHJcbiAgICAgICAgICAgID8gVGVhbS5FbGltT3JkZXIuSU1NT1JUQUxcclxuICAgICAgICAgICAgOiBUZWFtLkVsaW1PcmRlci5TVEFORElORyk7XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXCJpZFwiLCBcIm1lbWJlcnNcIl0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5JTU1PUlRBTCkge1xyXG4gICAgICAgICAgICB0aGlzLmVsaW1PcmRlciA9IFRlYW0uRWxpbU9yZGVyLlNUQU5ESU5HO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqIEluZGljYXRlcyB0aGUgb3JkZXIgKHJlbGF0aXZlIHRvIG90aGVyIHRlYW1zKSBpbiB3aGljaCB0aGlzXHJcbiAgICAgKiB0ZWFtIHdhcyB0byBoYXZlIGFsbCBpdHMgbWVtYmVycyBkb3duZWQgYXQgdGhlIHNhbWUgdGltZSBhdFxyXG4gICAgICogbGVhc3Qgb25jZS4gT25jZSBhIHRlYW0gaXMgc29mdC1lbGltaW5hdGVkLCB0aGV5IGNhbiBjb250aW51ZVxyXG4gICAgICogcGxheWluZyBhcyBub3JtYWwsIGJ1dCB0aGVyZSBpcyBubyBnb2luZyBiYWNrLiBUaGUgZ2FtZSBlbmRzXHJcbiAgICAgKiB3aGVuIGFsbCB0ZWFtcyBidXQgb25lIGhhdmUgYmVlbiBzb2Z0LWVsaW1pbmF0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogIyMjIFNlbWFudGljc1xyXG4gICAgICpcclxuICAgICAqIEEgY29tcGFyYXRpdmVseSBzbWFsbGVyIHZhbHVlIGRlbm90ZXMgaGF2aW5nIGJlZW4gc29mdC1cclxuICAgICAqIGVsaW1pbmF0ZWQgYXQgYW4gZWFybGllciBwb2ludCBpbiB0aGUgZ2FtZS4gKipUaGUgdmFsdWUgemVyb1xyXG4gICAgICogZGVub3RlcyBfbm90LWhhdmluZy1iZWVuLXNvZnQtZWxpbWluYXRlZC15ZXRfKiouXHJcbiAgICAgKi9cclxuICAgIGdldCBlbGltT3JkZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2VsaW1PcmRlcik7XHJcbiAgICB9XHJcbiAgICBzZXQgZWxpbU9yZGVyKHRlYW1FbGltT3JkZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5lbGltT3JkZXIgPT09IFRlYW0uRWxpbU9yZGVyLklNTU9SVEFMKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2hhbmdlIHRoZSBlbGltaW5hdGlvbiBzdGF0dXMgb2YgYW4gaW1tb3J0YWwgdGVhbS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2VsaW1PcmRlciwgdGVhbUVsaW1PcmRlcik7XHJcbiAgICB9XHJcbn1cclxuX2VsaW1PcmRlciA9IG5ldyBXZWFrTWFwKCk7XHJcbihmdW5jdGlvbiAoVGVhbSkge1xyXG4gICAgLy8gU3BlY2lhbCB2YWx1ZXM6XHJcbiAgICBsZXQgRWxpbU9yZGVyO1xyXG4gICAgKGZ1bmN0aW9uIChFbGltT3JkZXIpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBIHRlYW0gc3RhcnRzIG9mZiB3aXRoIHN1Y2ggYSB2YWx1ZSBpZiBhbGwgaXRzIHBsYXllcnMgaGF2ZVxyXG4gICAgICAgICAqIHNwZWNpZmllZCB0aGF0IHRoZWlyIGRvd25pbmcgc2hvdWxkIG5vdCBjYXVzZSBhIGNoZWNrIGZvclxyXG4gICAgICAgICAqIHdoZXRoZXIgdGhlIGdhbWUgc2hvdWxkIGVuZC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBFbGltT3JkZXIuSU1NT1JUQUwgPSAtMTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBIHRlYW0gdGhhdCBpcyBub3QgaW52aW5jaWJsZSBzdGFydHMgb2ZmIHdpdGggc3VjaCBhIHZhbHVlLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIEVsaW1PcmRlci5TVEFORElORyA9IDA7XHJcbiAgICB9KShFbGltT3JkZXIgPSBUZWFtLkVsaW1PcmRlciB8fCAoVGVhbS5FbGltT3JkZXIgPSB7fSkpO1xyXG59KShUZWFtIHx8IChUZWFtID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShUZWFtKTtcclxuT2JqZWN0LmZyZWV6ZShUZWFtLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/Team.ts\n"); - -/***/ }), - -/***/ "./src/base/game/player/VisiblePlayerStatus.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VisiblePlayerStatus\": () => /* binding */ VisiblePlayerStatus\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/PlayerStatus.ts\");\nvar _baseElem, _vBellAnims, _immigrantInfoCache;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass VisiblePlayerStatus extends _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__.PlayerStatus {\r\n constructor(player, noCheckGameOver) {\r\n super(player, noCheckGameOver);\r\n _baseElem.set(this, void 0);\r\n _vBellAnims.set(this, void 0);\r\n _immigrantInfoCache.set(this, void 0);\r\n {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _baseElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.CENTER_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.STACK_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.BASE,\r\n ]));\r\n }\r\n {\r\n // Setup face element:\r\n const faceElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.FACE], {});\r\n const vBellAnims = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _vBellAnims, (this.player.isALocalOperator) ? [\r\n // Note the 1-millisecond start delays required to\r\n // pause the animations before they start auto-playing.\r\n faceElem.animate({\r\n filter: [\"brightness(0.7)\", \"brightness(1.0)\"],\r\n }, { duration: 300, easing: \"ease-in\", delay: 1 }),\r\n faceElem.animate({\r\n transform: VisiblePlayerStatus.makeWiggleAnimation(10, 2),\r\n }, { duration: 270, easing: \"ease-out\", delay: 1 }),\r\n ] : []);\r\n vBellAnims.forEach((anim) => anim.pause());\r\n // Setup downedOverlay element:\r\n faceElem.appendChild(defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.DOWNED_OVERLAY]));\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).appendChild(faceElem);\r\n }\r\n }\r\n /**\r\n * @override\r\n */\r\n _afterAllPlayersConstruction() {\r\n // @ts-expect-error : RO=\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _immigrantInfoCache, Object.freeze({\r\n playerElem: (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem),\r\n username: this.player.username,\r\n }));\r\n }\r\n reset() {\r\n super.reset();\r\n const DDH = defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.DOWNED;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).dataset[DDH.KEY] = DDH.VALUES.NO;\r\n // ^We need to do this explicitly. It won't be done\r\n // automatically when setting `health` because of the short-\r\n // circuit=optimization made when `isDowned` hasn't changed.\r\n }\r\n get immigrantInfo() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _immigrantInfoCache);\r\n }\r\n _notifyWillBecomeCurrent(spotlightElems) {\r\n const currOperator = this.player.game.currentOperator;\r\n const nextOperator = this.player;\r\n requestAnimationFrame((time) => {\r\n spotlightElems.forEach((elem) => {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).appendChild(elem);\r\n });\r\n nextOperator.status.immigrantInfo.playerElem.scrollIntoView(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__.SCROLL_INTO_CENTER);\r\n });\r\n if (nextOperator.teamId !== (currOperator === null || currOperator === void 0 ? void 0 : currOperator.teamId)) {\r\n // Must use the above nullish coalesce operator for first call to setCurrentOperator.\r\n nextOperator.game.players.forEach((otherPlayer) => {\r\n const isTeammate = (otherPlayer.teamId === nextOperator.teamId);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(otherPlayer.status, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.FACE_SWATCH]\r\n = (otherPlayer.isALocalOperator) ? (isTeammate ? \"me\" : \"meOppo\")\r\n : isTeammate ? \"teammate\" : \"opponent\";\r\n ;\r\n });\r\n }\r\n }\r\n visualBell() {\r\n if (!(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _vBellAnims)) {\r\n }\r\n window.requestAnimationFrame((time) => {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _vBellAnims).forEach((anim) => anim.play());\r\n });\r\n }\r\n get health() {\r\n return super.health;\r\n }\r\n set health(newHealth) {\r\n const oldIsDowned = this.isDowned;\r\n super.health = newHealth;\r\n if (oldIsDowned !== this.isDowned) {\r\n // CSS integration for Player.isDowned rendering.\r\n const DDH = defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.DOWNED;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).dataset[DDH.KEY] = (this.isDowned)\r\n ? ((this.player.team.elimOrder)\r\n ? DDH.VALUES.TEAM\r\n : DDH.VALUES.SELF) : DDH.VALUES.NO;\r\n }\r\n }\r\n}\r\n_baseElem = new WeakMap(), _vBellAnims = new WeakMap(), _immigrantInfoCache = new WeakMap();\r\n(function (VisiblePlayerStatus) {\r\n var _nameElem, _scoreElem, _teamElem;\r\n function makeWiggleAnimation(pctX, numWiggles) {\r\n const arr = Array(numWiggles * 2).fill(pctX);\r\n arr.unshift(0);\r\n arr.push(0);\r\n return arr.map((n, i) => `translate(${(i % 2) ? n : -n}%)`);\r\n }\r\n VisiblePlayerStatus.makeWiggleAnimation = makeWiggleAnimation;\r\n /**\r\n * Append the base element to the players bar in the play-screen.\r\n * This is internally managed by the VisiblePlayerStatus class.\r\n */\r\n // TODO.impl Give each VisiblePlayerStatus one and update it within VisiblePlayerStatus' setters.\r\n class Card {\r\n constructor(playerName) {\r\n _nameElem.set(this, void 0);\r\n _scoreElem.set(this, void 0);\r\n _teamElem.set(this, void 0);\r\n this.baseElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n this.baseElem.setAttribute(\"label\", \"Player\");\r\n const name = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nameElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [], { textContent: playerName }));\r\n this.baseElem.appendChild(name);\r\n }\r\n }\r\n _nameElem = new WeakMap(), _scoreElem = new WeakMap(), _teamElem = new WeakMap();\r\n VisiblePlayerStatus.Card = Card;\r\n})(VisiblePlayerStatus || (VisiblePlayerStatus = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(VisiblePlayerStatus, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(VisiblePlayerStatus);\r\nObject.freeze(VisiblePlayerStatus.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9WaXNpYmxlUGxheWVyU3RhdHVzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvcGxheWVyL1Zpc2libGVQbGF5ZXJTdGF0dXMudHM/YzY0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2Jhc2VFbGVtLCBfdkJlbGxBbmltcywgX2ltbWlncmFudEluZm9DYWNoZTtcclxuaW1wb3J0IHsgX19jbGFzc1ByaXZhdGVGaWVsZEdldCwgX19jbGFzc1ByaXZhdGVGaWVsZFNldCB9IGZyb20gXCJ0c2xpYlwiO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5pbXBvcnQgeyBPbUhvb2tzIH0gZnJvbSBcImRlZnMvT21Ib29rc1wiO1xyXG5pbXBvcnQgeyBTQ1JPTExfSU5UT19DRU5URVIgfSBmcm9tIFwiZGVmcy9UeXBlRGVmc1wiO1xyXG5pbXBvcnQgeyBQbGF5ZXJTdGF0dXMgfSBmcm9tIFwiLi9QbGF5ZXJTdGF0dXNcIjtcclxuLyoqXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlzaWJsZVBsYXllclN0YXR1cyBleHRlbmRzIFBsYXllclN0YXR1cyB7XHJcbiAgICBjb25zdHJ1Y3RvcihwbGF5ZXIsIG5vQ2hlY2tHYW1lT3Zlcikge1xyXG4gICAgICAgIHN1cGVyKHBsYXllciwgbm9DaGVja0dhbWVPdmVyKTtcclxuICAgICAgICBfYmFzZUVsZW0uc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX3ZCZWxsQW5pbXMuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2ltbWlncmFudEluZm9DYWNoZS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2Jhc2VFbGVtLCBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW1xyXG4gICAgICAgICAgICAgICAgT21Ib29rcy5HZW5lcmFsLkNsYXNzLkNFTlRFUl9DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuR2VuZXJhbC5DbGFzcy5TVEFDS19DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuUGxheWVyLkNsYXNzLkJBU0UsXHJcbiAgICAgICAgICAgIF0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBTZXR1cCBmYWNlIGVsZW1lbnQ6XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY2VFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5GQUNFXSwge30pO1xyXG4gICAgICAgICAgICBjb25zdCB2QmVsbEFuaW1zID0gX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfdkJlbGxBbmltcywgKHRoaXMucGxheWVyLmlzQUxvY2FsT3BlcmF0b3IpID8gW1xyXG4gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgMS1taWxsaXNlY29uZCBzdGFydCBkZWxheXMgcmVxdWlyZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIHBhdXNlIHRoZSBhbmltYXRpb25zIGJlZm9yZSB0aGV5IHN0YXJ0IGF1dG8tcGxheWluZy5cclxuICAgICAgICAgICAgICAgIGZhY2VFbGVtLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogW1wiYnJpZ2h0bmVzcygwLjcpXCIsIFwiYnJpZ2h0bmVzcygxLjApXCJdLFxyXG4gICAgICAgICAgICAgICAgfSwgeyBkdXJhdGlvbjogMzAwLCBlYXNpbmc6IFwiZWFzZS1pblwiLCBkZWxheTogMSB9KSxcclxuICAgICAgICAgICAgICAgIGZhY2VFbGVtLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogVmlzaWJsZVBsYXllclN0YXR1cy5tYWtlV2lnZ2xlQW5pbWF0aW9uKDEwLCAyKSxcclxuICAgICAgICAgICAgICAgIH0sIHsgZHVyYXRpb246IDI3MCwgZWFzaW5nOiBcImVhc2Utb3V0XCIsIGRlbGF5OiAxIH0pLFxyXG4gICAgICAgICAgICBdIDogW10pO1xyXG4gICAgICAgICAgICB2QmVsbEFuaW1zLmZvckVhY2goKGFuaW0pID0+IGFuaW0ucGF1c2UoKSk7XHJcbiAgICAgICAgICAgIC8vIFNldHVwIGRvd25lZE92ZXJsYXkgZWxlbWVudDpcclxuICAgICAgICAgICAgZmFjZUVsZW0uYXBwZW5kQ2hpbGQoSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5ET1dORURfT1ZFUkxBWV0pKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmFwcGVuZENoaWxkKGZhY2VFbGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBfYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCkge1xyXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgOiBSTz1cclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9pbW1pZ3JhbnRJbmZvQ2FjaGUsIE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgICAgICBwbGF5ZXJFbGVtOiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSksXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOiB0aGlzLnBsYXllci51c2VybmFtZSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICBzdXBlci5yZXNldCgpO1xyXG4gICAgICAgIGNvbnN0IERESCA9IE9tSG9va3MuUGxheWVyLkRhdGFzZXQuRE9XTkVEO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5kYXRhc2V0W0RESC5LRVldID0gRERILlZBTFVFUy5OTztcclxuICAgICAgICAvLyBeV2UgbmVlZCB0byBkbyB0aGlzIGV4cGxpY2l0bHkuIEl0IHdvbid0IGJlIGRvbmVcclxuICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IHdoZW4gc2V0dGluZyBgaGVhbHRoYCBiZWNhdXNlIG9mIHRoZSBzaG9ydC1cclxuICAgICAgICAvLyBjaXJjdWl0PW9wdGltaXphdGlvbiBtYWRlIHdoZW4gYGlzRG93bmVkYCBoYXNuJ3QgY2hhbmdlZC5cclxuICAgIH1cclxuICAgIGdldCBpbW1pZ3JhbnRJbmZvKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9pbW1pZ3JhbnRJbmZvQ2FjaGUpO1xyXG4gICAgfVxyXG4gICAgX25vdGlmeVdpbGxCZWNvbWVDdXJyZW50KHNwb3RsaWdodEVsZW1zKSB7XHJcbiAgICAgICAgY29uc3QgY3Vyck9wZXJhdG9yID0gdGhpcy5wbGF5ZXIuZ2FtZS5jdXJyZW50T3BlcmF0b3I7XHJcbiAgICAgICAgY29uc3QgbmV4dE9wZXJhdG9yID0gdGhpcy5wbGF5ZXI7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lKSA9PiB7XHJcbiAgICAgICAgICAgIHNwb3RsaWdodEVsZW1zLmZvckVhY2goKGVsZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5hcHBlbmRDaGlsZChlbGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG5leHRPcGVyYXRvci5zdGF0dXMuaW1taWdyYW50SW5mby5wbGF5ZXJFbGVtLnNjcm9sbEludG9WaWV3KFNDUk9MTF9JTlRPX0NFTlRFUik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG5leHRPcGVyYXRvci50ZWFtSWQgIT09IChjdXJyT3BlcmF0b3IgPT09IG51bGwgfHwgY3Vyck9wZXJhdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyT3BlcmF0b3IudGVhbUlkKSkge1xyXG4gICAgICAgICAgICAvLyBNdXN0IHVzZSB0aGUgYWJvdmUgbnVsbGlzaCBjb2FsZXNjZSBvcGVyYXRvciBmb3IgZmlyc3QgY2FsbCB0byBzZXRDdXJyZW50T3BlcmF0b3IuXHJcbiAgICAgICAgICAgIG5leHRPcGVyYXRvci5nYW1lLnBsYXllcnMuZm9yRWFjaCgob3RoZXJQbGF5ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGVhbW1hdGUgPSAob3RoZXJQbGF5ZXIudGVhbUlkID09PSBuZXh0T3BlcmF0b3IudGVhbUlkKTtcclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQob3RoZXJQbGF5ZXIuc3RhdHVzLCBfYmFzZUVsZW0pLmRhdGFzZXRbT21Ib29rcy5QbGF5ZXIuRGF0YXNldC5GQUNFX1NXQVRDSF1cclxuICAgICAgICAgICAgICAgICAgICA9IChvdGhlclBsYXllci5pc0FMb2NhbE9wZXJhdG9yKSA/IChpc1RlYW1tYXRlID8gXCJtZVwiIDogXCJtZU9wcG9cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1RlYW1tYXRlID8gXCJ0ZWFtbWF0ZVwiIDogXCJvcHBvbmVudFwiO1xyXG4gICAgICAgICAgICAgICAgO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2aXN1YWxCZWxsKCkge1xyXG4gICAgICAgIGlmICghX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdkJlbGxBbmltcykpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSkgPT4ge1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF92QmVsbEFuaW1zKS5mb3JFYWNoKChhbmltKSA9PiBhbmltLnBsYXkoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXQgaGVhbHRoKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5oZWFsdGg7XHJcbiAgICB9XHJcbiAgICBzZXQgaGVhbHRoKG5ld0hlYWx0aCkge1xyXG4gICAgICAgIGNvbnN0IG9sZElzRG93bmVkID0gdGhpcy5pc0Rvd25lZDtcclxuICAgICAgICBzdXBlci5oZWFsdGggPSBuZXdIZWFsdGg7XHJcbiAgICAgICAgaWYgKG9sZElzRG93bmVkICE9PSB0aGlzLmlzRG93bmVkKSB7XHJcbiAgICAgICAgICAgIC8vIENTUyBpbnRlZ3JhdGlvbiBmb3IgUGxheWVyLmlzRG93bmVkIHJlbmRlcmluZy5cclxuICAgICAgICAgICAgY29uc3QgRERIID0gT21Ib29rcy5QbGF5ZXIuRGF0YXNldC5ET1dORUQ7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5kYXRhc2V0W0RESC5LRVldID0gKHRoaXMuaXNEb3duZWQpXHJcbiAgICAgICAgICAgICAgICA/ICgodGhpcy5wbGF5ZXIudGVhbS5lbGltT3JkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBEREguVkFMVUVTLlRFQU1cclxuICAgICAgICAgICAgICAgICAgICA6IERESC5WQUxVRVMuU0VMRikgOiBEREguVkFMVUVTLk5PO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5fYmFzZUVsZW0gPSBuZXcgV2Vha01hcCgpLCBfdkJlbGxBbmltcyA9IG5ldyBXZWFrTWFwKCksIF9pbW1pZ3JhbnRJbmZvQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xyXG4oZnVuY3Rpb24gKFZpc2libGVQbGF5ZXJTdGF0dXMpIHtcclxuICAgIHZhciBfbmFtZUVsZW0sIF9zY29yZUVsZW0sIF90ZWFtRWxlbTtcclxuICAgIGZ1bmN0aW9uIG1ha2VXaWdnbGVBbmltYXRpb24ocGN0WCwgbnVtV2lnZ2xlcykge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IEFycmF5KG51bVdpZ2dsZXMgKiAyKS5maWxsKHBjdFgpO1xyXG4gICAgICAgIGFyci51bnNoaWZ0KDApO1xyXG4gICAgICAgIGFyci5wdXNoKDApO1xyXG4gICAgICAgIHJldHVybiBhcnIubWFwKChuLCBpKSA9PiBgdHJhbnNsYXRlKCR7KGkgJSAyKSA/IG4gOiAtbn0lKWApO1xyXG4gICAgfVxyXG4gICAgVmlzaWJsZVBsYXllclN0YXR1cy5tYWtlV2lnZ2xlQW5pbWF0aW9uID0gbWFrZVdpZ2dsZUFuaW1hdGlvbjtcclxuICAgIC8qKlxyXG4gICAgICogQXBwZW5kIHRoZSBiYXNlIGVsZW1lbnQgdG8gdGhlIHBsYXllcnMgYmFyIGluIHRoZSBwbGF5LXNjcmVlbi5cclxuICAgICAqIFRoaXMgaXMgaW50ZXJuYWxseSBtYW5hZ2VkIGJ5IHRoZSBWaXNpYmxlUGxheWVyU3RhdHVzIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICAvLyBUT0RPLmltcGwgR2l2ZSBlYWNoIFZpc2libGVQbGF5ZXJTdGF0dXMgb25lIGFuZCB1cGRhdGUgaXQgd2l0aGluIFZpc2libGVQbGF5ZXJTdGF0dXMnIHNldHRlcnMuXHJcbiAgICBjbGFzcyBDYXJkIHtcclxuICAgICAgICBjb25zdHJ1Y3RvcihwbGF5ZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIF9uYW1lRWxlbS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICAgICAgX3Njb3JlRWxlbS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICAgICAgX3RlYW1FbGVtLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtdKTtcclxuICAgICAgICAgICAgdGhpcy5iYXNlRWxlbS5zZXRBdHRyaWJ1dGUoXCJsYWJlbFwiLCBcIlBsYXllclwiKTtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25hbWVFbGVtLCBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW10sIHsgdGV4dENvbnRlbnQ6IHBsYXllck5hbWUgfSkpO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VFbGVtLmFwcGVuZENoaWxkKG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9uYW1lRWxlbSA9IG5ldyBXZWFrTWFwKCksIF9zY29yZUVsZW0gPSBuZXcgV2Vha01hcCgpLCBfdGVhbUVsZW0gPSBuZXcgV2Vha01hcCgpO1xyXG4gICAgVmlzaWJsZVBsYXllclN0YXR1cy5DYXJkID0gQ2FyZDtcclxufSkoVmlzaWJsZVBsYXllclN0YXR1cyB8fCAoVmlzaWJsZVBsYXllclN0YXR1cyA9IHt9KSk7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oVmlzaWJsZVBsYXllclN0YXR1cywgW1wiX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZVBsYXllclN0YXR1cyk7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZVBsYXllclN0YXR1cy5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/player/VisiblePlayerStatus.ts\n"); - -/***/ }), - -/***/ "./src/client/game/BrowserGame.ts": -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JsUtils\": () => /* reexport safe */ defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils,\n/* harmony export */ \"Game\": () => /* reexport safe */ game_Game__WEBPACK_IMPORTED_MODULE_1__.Game,\n/* harmony export */ \"VisibleTile\": () => /* reexport safe */ floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__.VisibleTile,\n/* harmony export */ \"Player\": () => /* reexport safe */ game_player_Player__WEBPACK_IMPORTED_MODULE_4__.Player,\n/* harmony export */ \"OperatorPlayer\": () => /* reexport safe */ game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__.OperatorPlayer,\n/* harmony export */ \"VisiblePlayerStatus\": () => /* reexport safe */ game_player_VisiblePlayerStatus__WEBPACK_IMPORTED_MODULE_6__.VisiblePlayerStatus,\n/* harmony export */ \"BrowserGameMixin\": () => /* binding */ BrowserGameMixin\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_Game__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleTile.ts\");\n/* harmony import */ var floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n/* harmony import */ var game_player_Player__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\n/* harmony import */ var game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"./src/base/game/player/OperatorPlayer.ts\");\n/* harmony import */ var game_player_VisiblePlayerStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"./src/base/game/player/VisiblePlayerStatus.ts\");\n/* harmony import */ var game_ctormaps_CmapBrowser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"./src/base/game/ctormaps/CmapBrowser.ts\");\n// Tell WebPack about the CSS chunk we want:\r\n__webpack_require__(\"./assets/style/game/_barrel.css\");\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n(0,game_ctormaps_CmapBrowser__WEBPACK_IMPORTED_MODULE_7__.default)();\r\n/**\r\n *\r\n */\r\nclass BrowserGameMixin {\r\n /**\r\n * Classes using this mixin should call this somewhere in their\r\n * constructor.\r\n */\r\n _ctorBrowserGame() {\r\n // @ts-expect-error : RO=\r\n this.htmlElements = Object.freeze({\r\n gridImpl: this.grid.baseElem,\r\n playersBar: document.createElement(\"div\"),\r\n });\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"htmlElements\"]);\r\n }\r\n /**\r\n * @override\r\n */\r\n _getGridImplementation(coordSys) {\r\n return floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_3__.VisibleGrid.getImplementation(coordSys);\r\n }\r\n /**\r\n * @override\r\n */\r\n _createOperatorPlayer(desc) {\r\n return new game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__.OperatorPlayer(this, desc);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(BrowserGameMixin, [\"_getGridImplementation\"]);\r\nObject.freeze(BrowserGameMixin);\r\nObject.freeze(BrowserGameMixin.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY2xpZW50L2dhbWUvQnJvd3NlckdhbWUudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2NsaWVudC9nYW1lL0Jyb3dzZXJHYW1lLnRzP2VlMDciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGVsbCBXZWJQYWNrIGFib3V0IHRoZSBDU1MgY2h1bmsgd2Ugd2FudDpcclxucmVxdWlyZShcImFzc2V0cy9zdHlsZS9nYW1lL19iYXJyZWwuY3NzXCIpO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5leHBvcnQgeyBKc1V0aWxzIH07XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tIFwiZ2FtZS9HYW1lXCI7XHJcbmV4cG9ydCB7IEdhbWUgfTtcclxuaW1wb3J0IHsgVmlzaWJsZVRpbGUgfSBmcm9tIFwiZmxvb3IvVmlzaWJsZVRpbGVcIjtcclxuZXhwb3J0IHsgVmlzaWJsZVRpbGUgfTtcclxuaW1wb3J0IHsgVmlzaWJsZUdyaWQgfSBmcm9tIFwiZmxvb3IvVmlzaWJsZUdyaWRcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcImdhbWUvcGxheWVyL1BsYXllclwiO1xyXG5leHBvcnQgeyBQbGF5ZXIgfTtcclxuaW1wb3J0IHsgT3BlcmF0b3JQbGF5ZXIgfSBmcm9tIFwiZ2FtZS9wbGF5ZXIvT3BlcmF0b3JQbGF5ZXJcIjtcclxuZXhwb3J0IHsgT3BlcmF0b3JQbGF5ZXIgfTtcclxuZXhwb3J0IHsgVmlzaWJsZVBsYXllclN0YXR1cyB9IGZyb20gXCJnYW1lL3BsYXllci9WaXNpYmxlUGxheWVyU3RhdHVzXCI7XHJcbmltcG9ydCBJbml0QnJvd3NlckdhbWVDdG9yTWFwcyBmcm9tIFwiZ2FtZS9jdG9ybWFwcy9DbWFwQnJvd3NlclwiO1xyXG5Jbml0QnJvd3NlckdhbWVDdG9yTWFwcygpO1xyXG4vKipcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyR2FtZU1peGluIHtcclxuICAgIC8qKlxyXG4gICAgICogQ2xhc3NlcyB1c2luZyB0aGlzIG1peGluIHNob3VsZCBjYWxsIHRoaXMgc29tZXdoZXJlIGluIHRoZWlyXHJcbiAgICAgKiBjb25zdHJ1Y3Rvci5cclxuICAgICAqL1xyXG4gICAgX2N0b3JCcm93c2VyR2FtZSgpIHtcclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIDogUk89XHJcbiAgICAgICAgdGhpcy5odG1sRWxlbWVudHMgPSBPYmplY3QuZnJlZXplKHtcclxuICAgICAgICAgICAgZ3JpZEltcGw6IHRoaXMuZ3JpZC5iYXNlRWxlbSxcclxuICAgICAgICAgICAgcGxheWVyc0JhcjogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcImh0bWxFbGVtZW50c1wiXSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBfZ2V0R3JpZEltcGxlbWVudGF0aW9uKGNvb3JkU3lzKSB7XHJcbiAgICAgICAgcmV0dXJuIFZpc2libGVHcmlkLmdldEltcGxlbWVudGF0aW9uKGNvb3JkU3lzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIF9jcmVhdGVPcGVyYXRvclBsYXllcihkZXNjKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPcGVyYXRvclBsYXllcih0aGlzLCBkZXNjKTtcclxuICAgIH1cclxufVxyXG47XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oQnJvd3NlckdhbWVNaXhpbiwgW1wiX2dldEdyaWRJbXBsZW1lbnRhdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoQnJvd3NlckdhbWVNaXhpbik7XHJcbk9iamVjdC5mcmVlemUoQnJvd3NlckdhbWVNaXhpbi5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/client/game/BrowserGame.ts\n"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/client/index.html b/client/index.html index 3d67e8a9..7d595f7a 100644 --- a/client/index.html +++ b/client/index.html @@ -1,4 +1,4 @@ -snakey3