diff --git a/app.2fbc6d020be7f101ecd2.bundle.js b/app.2fbc6d020be7f101ecd2.bundle.js new file mode 100644 index 0000000..c4904ad --- /dev/null +++ b/app.2fbc6d020be7f101ecd2.bundle.js @@ -0,0 +1 @@ +!function(){"use strict";var t={608:function(t,e,i){i.r(e)},331:function(t,e,i){var n=this&&this.__spreadArray||function(t,e,i){if(i||2===arguments.length)for(var n,o=0,r=e.length;o=0&&(this.framePositionX+=t,this.engine.setFramePosition(this.framePositionX,this.framePositionY)),this.framePositionY+e<=this.worldSideSize-this.frameHeight&&this.framePositionY+e>=0&&(this.framePositionY+=e,this.engine.setFramePosition(this.framePositionX,this.framePositionY))},t.prototype.startRender=function(){var t=this,e=this.renderer.getPixels();this.renderer.setPixels(e.fill(4278190080));var i=function(e){var o=t.engine.requestFrame(t.frameWidth,t.frameHeight,t.framePositionX,t.framePositionY),r={x:0,y:0,width:t.frameWidth,height:t.frameHeight,pixels:o},s=t.inputController.getCursorRealPosition(),a=t.renderer.getPixelSize(),u={x:t.framePositionX+Math.floor(s.x/a),y:t.framePositionY+(t.frameHeight-1-Math.floor(s.y/a))};t.engine.setCursorPosition(u);var l=t.inputController.getMouseWheelDelta();0!==l&&t.engine.handleMouseWheelDelta(l);var h=t.inputController.getClickedKeys(),d=t.inputController.getPressedKeys(),y=t.inputController.getPressedMouseButtons();if(Object.keys(y).length>0){var f=t.pressMouseButtonToAction;Object.keys(y).forEach((function(t){var e=f[t];e&&null!=e&&e()}))}if(Object.keys(d).length>0){var c=t.pressKeyToAction;Object.keys(d).forEach((function(t){var e=c[t];e&&null!=e&&e()}))}if(h.length>0){var p=t.clickKeyToAction;h.forEach((function(t){var e=p[t];e&&null!=e&&e()}))}var m=t.engine.getUi().getLayers(),g=t.engine.getPlayersEngine().getLayers(),v=t.renderer.blendPixelLayers(n(n([r],g,!0),m,!0),t.renderer.getScreenSizeX()/t.renderer.getPixelSize(),t.renderer.getScreenSizeY()/t.renderer.getPixelSize());null!==v&&t.renderer.setPixels(v),t.renderer.render(e),window.requestAnimationFrame(i)};i(0)},t}();e.App=u},694:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.getUnitTypeByUnitTypeName=e.UnitTypesArray=e.UnitTypesStringsToIndex=void 0,e.UnitTypesStringsToIndex={"yellow-sand":0,"pure-water":1,"gray-rock":2,"flammable-gas":3,"red-blood":4,"yellow-flame":5,"gray-smoke":6,"black-oil":7,"rock-hard":8,"wood-wall":9},e.UnitTypesArray=[{unitName:"yellow-sand",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:800,unitDurability:4,unitDensity:1.5,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:4095,baseColor:4278242795},unitTransformations:{toFreeze:"yellow-sand",toLiquid:"molten-glass",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"pure-water",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:10,unitDurability:0,unitDensity:1,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:4095,baseColor:2013255936},unitTransformations:{toFreeze:"pure-ice",toLiquid:"pure-water",toVapor:"water-steam",toDestroy:"water-steam",toCorrode:"water-steam"}},{unitName:"gray-rock",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:3,unitDefaultFireHP:0,unitDefaultHealth:100,unitDurability:0,unitDensity:2.6,unitDefaultColor:{minRandomColor:10,maxRandomColor:82,colorShiftNumbers:4095,baseColor:4286677377},unitTransformations:{toFreeze:null,toLiquid:"molten-rock",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"flammable-gas",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!0,unitIsFlammable:!0,unitDefaultFlameSustainability:600,unitDefaultFireHP:10,unitDefaultHealth:10,unitDurability:0,unitDensity:.00182,unitDefaultColor:{minRandomColor:10,maxRandomColor:82,colorShiftNumbers:4095,baseColor:856795648},unitTransformations:{toFreeze:null,toLiquid:"flammable-liquid",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"red-blood",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:10,unitDurability:0,unitDensity:1.03,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:4095,baseColor:2852257923},unitTransformations:{toFreeze:"frozen-red-blood",toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"yellow-flame",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!1,unitIsFlame:!0,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:1,unitDefaultHealth:3,unitDurability:0,unitDensity:33e-5,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:0,baseColor:4278214911},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:"gray-smoke",toCorrode:null}},{unitName:"gray-smoke",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!0,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:100,unitDurability:0,unitDensity:61e-5,unitDefaultColor:{minRandomColor:10,maxRandomColor:16,colorShiftNumbers:4095,baseColor:2004976001},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"black-oil",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!0,unitDefaultFlameSustainability:995,unitDefaultFireHP:500,unitDefaultHealth:1e3,unitDurability:0,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:15,baseColor:4278190080},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:"gray-smoke",toCorrode:null}},{unitName:"rock-hard",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:0,unitDefaultFireHP:0,unitDefaultHealth:2e5,unitDurability:12,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:4095,baseColor:4280492926},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"wood-wall",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!0,unitDefaultFlameSustainability:992,unitDefaultFireHP:600,unitDefaultHealth:2e3,unitDurability:10,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:15,baseColor:4279859366},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}}];e.getUnitTypeByUnitTypeName=function(t){var i=e.UnitTypesStringsToIndex[t];return e.UnitTypesArray[i]}},990:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.DataStorage=void 0;var n=i(401),o=function(){function t(){}return t.prototype.convertWorldStateToSave=function(t){for(var e,i=t.gameWorldState,n=t.worldSquareSide,o={},r=0;r0&&e.worldSate)return{frameWidth:e.frameWidth,frameHeight:e.frameHeight,framePositionX:e.framePositionX,framePositionY:e.framePositionY,worldSquareSide:e.worldSideSize,lastUnitId:e.lastUnitId,gameWorldState:this.convertSaveToWorldState(e.worldSate,e.worldSideSize)}}return null},t.prototype.saveToLocalStorage=function(t){localStorage.setItem("pws-save",this.serializeToSaveFile(t))},t.prototype.loadFromLocalStorage=function(){var t=localStorage.getItem("pws-save");return t?this.deserializeAnLoadFromFile(t):null},t}();e.DataStorage=o},865:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0){for(h=r;h0)for(var d=0;d<=2;d++){e.y=d;for(h=s+d;h=s+u+d&&(a=!0)}if(a)break}else if(e.x<0)for(d=0;d<=2;d++){e.y=d;for(h=s+d;h=s+u+d&&(a=!0)}if(a)break}a&&this.playersEngine.addPlayerDeltaPosition(0,e)}}},t.prototype.extractFrame=function(t,e,i,n){var o,r;(o=this.eventsStack).push.apply(o,this.ui.collectActions()),this.eventsStack.forEach((function(t){return t()})),this.eventsStack=[];for(var s=new Uint32Array(t*e),a=(e-1)*t,l=n;l-l&&(y-=l,o+=h),f0?this.unitCreationSquareSize<2*this.frameHeight&&(this.unitCreationSquareSize+=1):this.unitCreationSquareSize>0&&(this.unitCreationSquareSize-=1)},t.prototype.handleMouseMiddleButton=function(){this.unitCreationTypei.length||null===(t=i[e])?null:new a.Unit(t,null,0)};if(i<=0)"set-on-fire"===(d=r())?this.gameWorldState[t.x][t.y]&&(null===(n=this.gameWorldState[t.x][t.y])||void 0===n?void 0:n.getUnitType().unitIsFlammable)&&(this.gameWorldState[t.x][t.y].unitState.unitIsOnFire=!0):this.gameWorldState[t.x][t.y]&&null!==d||(this.gameWorldState[t.x][t.y]=d,null!==d&&(d.unitId=this.lastUnitId++));else for(var s=Math.floor(t.x/i)*i,u=Math.floor(t.y/i)*i,l=0;l0&&!t[i-1][n+o]?(s(i,n,i-1,n+o),!0):i=0){if(r(1*a))return!0}else{if(i>0&&!t[i-1][n])return s(i,n,i-1,n),!0;if(i=0&&t=0&&i=((null===(s=t[i][o])||void 0===s?void 0:s.getUnitType().unitDefaultFlameSustainability)||0)&&(t[i][o].unitState.unitIsOnFire=!0)))},l=function(i,n){var o;if(n+1>e)return!1;if(!t[i][n+1])return Math.random()>=.1&&(t[i][n].unitState.unitHealth-=1),s(i,n,i,n+1),!0;if((null===(o=t[i][n+1])||void 0===o?void 0:o.getUnitType().unitIsFlame)&&l(i,n+1))return Math.random()>=.5&&(t[i][n].unitState.unitHealth-=1),s(i,n,i,n+1),!0;return!1},h=function(i,o){var r,u,h,d;(null===(r=t[i][o])||void 0===r?void 0:r.isUpdated)||((null===(u=t[i][o])||void 0===u?void 0:u.getUnitType().unitIsGas)?function(i,o){var r,a,u,l,h,d=i>0&&!t[i-1][o],y=i0&&!t[i-1][o+1],p=i=((null===(h=null===(l=t[i][o])||void 0===l?void 0:l.unitState)||void 0===h?void 0:h.unitHealth)||1)&&(t[i][o].unitState.unitHealth-=1),f)s(i,o,i,o+1);else if(m&&g){var v=(0,n.getRandomInt)(0,1);s(i,o,0===v?i-1:i+1,o+1)}else c&&d?s(i,o,i-1,o+1):p&&y?s(i,o,i+1,o+1):d?s(i,o,i-1,o):y&&s(i,o,i+1,o)}else o===e-1&&(d?s(i,o,i-1,o):y&&s(i,o,i+1,o))}(i,o):(null===(h=t[i][o])||void 0===h?void 0:h.getUnitType().unitIsLiquid)?function(i,o){var r,a,u,l,h,d,y,f,c,p,m=i>0&&!t[i-1][o],g=i>0&&!m&&!m&&(null===(r=t[i-1][o])||void 0===r?void 0:r.isUpdated),v=i>0&&!m&&(null===(a=t[i-1][o])||void 0===a?void 0:a.getUnitType().unitIsLiquid)&&t[i-1][o].getUnitType().unitDensity0&&!m&&(null===(u=t[i-1][o])||void 0===u?void 0:u.getUnitType().unitIsGas),P=i0){var I=!t[i][o-1],U=!I&&(null===(y=t[i][o-1])||void 0===y?void 0:y.getUnitType().unitIsLiquid)&&t[i][o-1].getUnitType().unitDensity0&&!t[i-1][o-1],D=i>0&&!b&&t[i-1][o-1].getUnitType().unitIsLiquid&&t[i-1][o-1].getUnitType().unitDensity0&&!b&&t[i-1][o-1].getUnitType().unitIsGas,M=i>0&&!b&&(null===(c=t[i-1][o-1])||void 0===c?void 0:c.isUpdated),F=i=.8&&(t[e][i].unitState.unitHealth-=1),l(e,i)}(i,o):function(i,o){var r,u,l,h,d,y,f,c,p,m;if(!(o<=0)){var g=!1,v=!1,S=!1,P=!1,x=!1,T=!1,w=!1,I=!1,U=!1,C=!1,b=!1,D=!1;i>0&&((g=!t[i-1][o])||(v=!!(null===(r=t[i-1][o])||void 0===r?void 0:r.getUnitType().unitIsLiquid),S=!!(null===(u=t[i-1][o])||void 0===u?void 0:u.getUnitType().unitIsGas)),(w=!t[i-1][o-1])||(I=!!(null===(l=t[i-1][o-1])||void 0===l?void 0:l.getUnitType().unitIsLiquid),U=!!(null===(h=t[i-1][o-1])||void 0===h?void 0:h.getUnitType().unitIsGas))),i=.99&&r.emittedUnits.push({unitType:c.toDestroy,x:e,y:i}))}if(t[e][i]&&(null===(a=t[e][i])||void 0===a?void 0:a.getUnitType().unitIsFlammable)&&(null===(l=t[e][i])||void 0===l?void 0:l.unitState)&&t[e][i].unitState.fireHP<=0){if(t[e][i]=null,!(c=null===(d=t[e][i])||void 0===d?void 0:d.getUnitType().unitTransformations)||!c.toDestroy)return;return void r.emittedUnits.push({unitType:c.toDestroy,x:e,y:i})}(null===(y=t[e][i])||void 0===y?void 0:y.unitState.unitIsOnFire)&&(!function(e,i){var o=0;(0,n.getRandomInt)(0,100)>=30&&(o=4278190335+(0,n.getRandomInt)(0,233)*Math.pow(16,2)),t[e][i].unitState.unitDecalColor=o,t[e][i].unitState.fireHP-=1,u(e-1,i),u(e+1,i),u(e,i+1),u(e,i-1)}(e,i),r.emittedUnits.push({unitType:"yellow-flame",x:e,y:i+1})),(null===(f=t[e][i])||void 0===f?void 0:f.getUnitType().unitIsStatic)||h(e,i)}},y=0;y=0;i-=1)d(i,t)};if(this.isLineByLineResolve){y=0;this.lastY=0&&(e.globalPosition.x+=e.desiredDeltaPosition.x),0!==e.desiredDeltaPosition.y&&e.globalPosition.y+e.desiredDeltaPosition.y>=0&&(e.globalPosition.y+=e.desiredDeltaPosition.y),t.layers[0].x=e.globalPosition.x-t.framePosition.x,t.layers[0].y=e.globalPosition.y-t.framePosition.y,e.desiredDeltaPosition.x=0,e.desiredDeltaPosition.y=0}))},t.prototype.getPlayer=function(t){return this.players[t]},t.prototype.getLayers=function(){return this.updatePlayersPosition(),this.layers},t}();e.PlayersEngine=i},638:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.UI=void 0;var n=i(694),o=i(415),r=function(){function t(t){this.frameWidth=1,this.frameHeight=1,this.cursorPosition={x:0,y:0},this.cursorUIPosition={x:0,y:0},this.framePosition={x:0,y:0},this.actions={},this.isMainActionButtonDown=!1,this.eventsStack=[],this.layers=[],this.actions=t,this.initLayers()}return t.prototype.getCursorPixels=function(){var t=new Uint32Array(9);return t[1]=4278190080,t[3]=4278190080,t[5]=4278190080,t[7]=4278190080,t},t.prototype.initLayers=function(){this.layers.push({pixelsLayer:{width:4,height:80,x:4,y:40,pixels:new Uint32Array(320)},actionToPixels:null,isVisible:!0},{pixelsLayer:{width:3,height:3,x:0,y:0,pixels:this.getCursorPixels()},actionToPixels:null,isVisible:!0}),this.drawUI()},t.prototype.getLayers=function(){this.layers[1].pixelsLayer.x=this.cursorUIPosition.x-1,this.layers[1].pixelsLayer.y=this.cursorUIPosition.y-1;for(var t=[],e=0;e=0&&n>=0){for(var c=n;c=s.pixelsLayer.x&&e=s.pixelsLayer.y&&i=0;s--)o(s);if(!n){var a=this.findAction("default-action");this.eventsStack.push((function(){return a(t.cursorPosition)}))}this.isMainActionButtonDown=!1}var u=this.eventsStack;return this.eventsStack=[],u},t}();e.UI=r},401:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.Unit=void 0;var n=i(694),o=i(415),r=function(){function t(t,e,i,r){if(void 0===e&&(e=null),void 0===i&&(i=0),void 0===r&&(r=null),this.isUpdated=!1,this.unitTypeName=t,this.unitVelocityVector=e,this.unitId=i,r)this.unitState=r;else{var s=(0,n.getUnitTypeByUnitTypeName)(t),a=s.unitDefaultColor,u=s.unitDefaultHealth,l=s.unitDefaultFlameSustainability,h=s.unitDefaultFireHP,d=(0,o.getRandomInt)(a.minRandomColor,a.maxRandomColor),y=(15&a.colorShiftNumbers)>>3,f=(240&a.colorShiftNumbers)>>4>>3,c=(3840&a.colorShiftNumbers)>>8>>3,p=d*y+d*Math.pow(16,2)*f+d*Math.pow(16,4)*c,m=a.baseColor+p;this.unitState={unitHealth:u,unitIsOnFire:!1,unitColor:m,unitDecalColor:0,flameSustainability:l,fireHP:h}}}return t.prototype.getUnitType=function(){return(0,n.getUnitTypeByUnitTypeName)(this.unitTypeName)},t.prototype.toJson=function(){var t={h:this.unitState.unitHealth,f:Number(this.unitState.unitIsOnFire),c:this.unitState.unitColor,d:this.unitState.unitDecalColor,s:this.unitState.flameSustainability,j:this.unitState.fireHP},e={n:this.unitTypeName,i:this.unitId,s:t};return this.unitVelocityVector&&(e.v={s:this.unitVelocityVector.startPoint,e:this.unitVelocityVector.endPoint}),e},t}();e.Unit=r},682:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.Renderer=void 0;var n=i(415),o=function(){function t(t){var e=this;this.pixelSize=1,this.wallColor=4278190080,this.layersMapping={physics:0,ui:1,crosshair:2},this.layers=[],this.lastFrameTime=(new Date).getTime(),this.getScreenSizeX=function(){return e.width},this.getScreenSizeY=function(){return e.height},this.getPixelsCount=function(){return e.width*e.height/Math.pow(e.pixelSize,2)},this.getPixelSize=function(){return e.pixelSize},this.getLastFrameTime=function(){return e.lastFrameTime},this.canvas=t,this.width=this.canvas.width,this.height=this.canvas.height,this.desiredWidth=this.canvas.width,this.desiredHeight=this.canvas.height,this.ctx=this.canvas.getContext("2d")||new CanvasRenderingContext2D,this.imageData=this.ctx.createImageData(this.width,this.height),this.realPixels=new Uint32Array(this.imageData.data.buffer),this.virtualPixels=new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize)),this.initLayers()}return t.prototype.initLayers=function(){this.layers.push({width:this.width/this.pixelSize,height:this.height/this.pixelSize,x:0,y:0,pixels:new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize))})},t.prototype.setLayerPixels=function(t,e){var i=this.layersMapping[t];void 0!==i&&(this.layers[i].pixels=e)},t.prototype.updateLayerPosition=function(t,e,i){var n=this.layersMapping[t];void 0!==n&&(this.layers[n].x=e,this.layers[n].y=i)},t.prototype.updateLayerSize=function(t,e,i){var n=this.layersMapping[t];void 0!==n&&(this.layers[n].width=e,this.layers[n].height=i)},t.prototype.updateLayer=function(t,e){var i=this.layersMapping[t];void 0!==i&&(this.layers[i].width=e.width,this.layers[i].height=e.height,this.layers[i].x=e.x,this.layers[i].y=e.y,this.layers[i].pixels=e.pixels)},t.prototype.setScreenSize=function(t,e){this.desiredWidth=t,this.desiredHeight=e,this.width=Math.floor(t/this.pixelSize)*this.pixelSize,this.height=Math.floor(e/this.pixelSize)*this.pixelSize,this.canvas.width=this.width,this.canvas.height=this.height,this.imageData=this.ctx.createImageData(this.width,this.height),this.realPixels=new Uint32Array(this.imageData.data.buffer),this.virtualPixels=new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize))},t.prototype.setPixelSize=function(t){this.pixelSize=t,this.setScreenSize(this.desiredWidth,this.desiredHeight)},t.prototype.getPixels=function(){return this.virtualPixels},t.prototype.setPixels=function(t){this.virtualPixels=t},t.prototype.blendPixelLayers=function(t,e,i){if(!t||0===t.length)return null;if(1===t.length)return t[0].pixels;for(var o=new Uint32Array(e*i),r=t.length-1;r>=0;r--){var s=t[r],a=s.width,u=s.height,l=s.x,h=s.y,d=0,y=0,f=0,c=0;l<0&&(d=-l),h<0&&(c=-h),u-c-(i-h)>0&&(f=u-c-(i-h)),a-d-(e-l)>0&&(y=a-d-(e-l));for(var p=0+c;p>BigInt(24));if(255===i)return e;var n=Number(BigInt(t)>>BigInt(24))/255,o=i/255,r=Number(BigInt(t)&BigInt(16777215)),s=Number(BigInt(e)&BigInt(16777215)),a=(1-n)*o+n,u=function(t,e,i,n,o){return Math.round(((1-i)*n*e+i*t)/o)||0},l=(65280&r)>>8,h=(16711680&r)>>16,d=(65280&s)>>8,y=(16711680&s)>>16,f=u(255&r,255&s,n,o,a),c=u(l,d,n,o,a),p=(u(h,y,n,o,a)<<16)+(c<<8)+f;return(BigInt(Math.round(255*a))<=0&&(this.framePositionX+=t,this.engine.setFramePosition(this.framePositionX,this.framePositionY)),this.framePositionY+e<=this.worldSideSize-this.frameHeight&&this.framePositionY+e>=0&&(this.framePositionY+=e,this.engine.setFramePosition(this.framePositionX,this.framePositionY))},t.prototype.startRender=function(){var t=this,e=this.renderer.getPixels();this.renderer.setPixels(e.fill(4278190080));var i=function(e){var o=t.engine.requestFrame(t.frameWidth,t.frameHeight,t.framePositionX,t.framePositionY),r={x:0,y:0,width:t.frameWidth,height:t.frameHeight,pixels:o},s=t.inputController.getCursorRealPosition(),a=t.renderer.getPixelSize(),u={x:t.framePositionX+Math.floor(s.x/a),y:t.framePositionY+(t.frameHeight-1-Math.floor(s.y/a))};t.engine.setCursorPosition(u);var l=t.inputController.getMouseWheelDelta();0!==l&&t.engine.handleMouseWheelDelta(l);var h=t.inputController.getClickedKeys(),d=t.inputController.getPressedKeys(),y=t.inputController.getPressedMouseButtons();if(Object.keys(y).length>0){var c=t.pressMouseButtonToAction;Object.keys(y).forEach((function(t){var e=c[t];e&&null!=e&&e()}))}if(Object.keys(d).length>0){var f=t.pressKeyToAction;Object.keys(d).forEach((function(t){var e=f[t];e&&null!=e&&e()}))}if(h.length>0){var p=t.clickKeyToAction;h.forEach((function(t){var e=p[t];e&&null!=e&&e()}))}var m=t.engine.getUi().getLayers(),g=t.engine.getPlayersEngine().getLayers(),v=t.renderer.blendPixelLayers(n(n([r],g,!0),m,!0),t.renderer.getScreenSizeX()/t.renderer.getPixelSize(),t.renderer.getScreenSizeY()/t.renderer.getPixelSize());null!==v&&t.renderer.setPixels(v),t.renderer.render(e),window.requestAnimationFrame(i)};i(0)},t}();e.App=u},987:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.getUnitTypeByUnitTypeName=e.UnitTypesArray=e.UnitTypesStringsToIndex=void 0,e.UnitTypesStringsToIndex={"yellow-sand":0,"pure-water":1,"gray-rock":2,"flammable-gas":3,"red-blood":4,"yellow-flame":5,"gray-smoke":6,"black-oil":7,"rock-hard":8,"wood-wall":9},e.UnitTypesArray=[{unitName:"yellow-sand",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:800,unitDurability:4,unitDensity:1.5,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:4095,baseColor:4278242795},unitTransformations:{toFreeze:"yellow-sand",toLiquid:"molten-glass",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"pure-water",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:10,unitDurability:0,unitDensity:1,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:4095,baseColor:2013255936},unitTransformations:{toFreeze:"pure-ice",toLiquid:"pure-water",toVapor:"water-steam",toDestroy:"water-steam",toCorrode:"water-steam"}},{unitName:"gray-rock",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:3,unitDefaultFireHP:0,unitDefaultHealth:100,unitDurability:0,unitDensity:2.6,unitDefaultColor:{minRandomColor:10,maxRandomColor:82,colorShiftNumbers:4095,baseColor:4286677377},unitTransformations:{toFreeze:null,toLiquid:"molten-rock",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"flammable-gas",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!0,unitIsFlammable:!0,unitDefaultFlameSustainability:600,unitDefaultFireHP:10,unitDefaultHealth:10,unitDurability:0,unitDensity:.00182,unitDefaultColor:{minRandomColor:10,maxRandomColor:82,colorShiftNumbers:4095,baseColor:856795648},unitTransformations:{toFreeze:null,toLiquid:"flammable-liquid",toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"red-blood",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:10,unitDurability:0,unitDensity:1.03,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:4095,baseColor:2852257923},unitTransformations:{toFreeze:"frozen-red-blood",toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"yellow-flame",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!1,unitIsFlame:!0,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:1,unitDefaultHealth:3,unitDurability:0,unitDensity:33e-5,unitDefaultColor:{minRandomColor:0,maxRandomColor:0,colorShiftNumbers:0,baseColor:4278214911},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:"gray-smoke",toCorrode:null}},{unitName:"gray-smoke",unitIsLiquid:!1,unitIsStatic:!1,unitIsGas:!0,unitIsFlammable:!1,unitDefaultFlameSustainability:1,unitDefaultFireHP:0,unitDefaultHealth:100,unitDurability:0,unitDensity:61e-5,unitDefaultColor:{minRandomColor:10,maxRandomColor:16,colorShiftNumbers:4095,baseColor:2004976001},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"black-oil",unitIsLiquid:!0,unitIsStatic:!1,unitIsGas:!1,unitIsFlammable:!0,unitDefaultFlameSustainability:995,unitDefaultFireHP:500,unitDefaultHealth:1e3,unitDurability:0,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:15,baseColor:4278190080},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:"gray-smoke",toCorrode:null}},{unitName:"rock-hard",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!1,unitDefaultFlameSustainability:0,unitDefaultFireHP:0,unitDefaultHealth:2e5,unitDurability:12,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:4095,baseColor:4280492926},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}},{unitName:"wood-wall",unitIsLiquid:!1,unitIsStatic:!0,unitIsGas:!1,unitIsFlammable:!0,unitDefaultFlameSustainability:992,unitDefaultFireHP:600,unitDefaultHealth:2e3,unitDurability:10,unitDensity:.88,unitDefaultColor:{minRandomColor:0,maxRandomColor:20,colorShiftNumbers:15,baseColor:4279859366},unitTransformations:{toFreeze:null,toLiquid:null,toVapor:null,toDestroy:null,toCorrode:null}}];e.getUnitTypeByUnitTypeName=function(t){var i=e.UnitTypesStringsToIndex[t];return e.UnitTypesArray[i]}},659:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.DataStorage=void 0;var n=i(900),o=function(){function t(){}return t.prototype.convertWorldStateToSave=function(t){for(var e,i=t.gameWorldState,n=t.worldSquareSide,o={},r=0;r0&&e.worldSate)return{frameWidth:e.frameWidth,frameHeight:e.frameHeight,framePositionX:e.framePositionX,framePositionY:e.framePositionY,worldSquareSide:e.worldSideSize,lastUnitId:e.lastUnitId,gameWorldState:this.convertSaveToWorldState(e.worldSate,e.worldSideSize)}}return null},t.prototype.saveToLocalStorage=function(t){localStorage.setItem("pws-save",this.serializeToSaveFile(t))},t.prototype.loadFromLocalStorage=function(){var t=localStorage.getItem("pws-save");return t?this.deserializeAnLoadFromFile(t):null},t}();e.DataStorage=o},748:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0){for(h=r;h0)for(var d=0;d<=2;d++){e.y=d;for(h=s+d;h=s+u+d&&(a=!0)}if(a)break}else if(e.x<0)for(d=0;d<=2;d++){e.y=d;for(h=s+d;h=s+u+d&&(a=!0)}if(a)break}a&&this.playersEngine.addPlayerDeltaPosition(0,e)}}},t.prototype.extractFrame=function(t,e,i,n){var o,r;(o=this.eventsStack).push.apply(o,this.ui.collectActions()),this.eventsStack.forEach((function(t){return t()})),this.eventsStack=[];for(var s=new Uint32Array(t*e),a=(e-1)*t,l=n;l-l&&(y-=l,o+=h),c0?this.unitCreationSquareSize<2*this.frameHeight&&(this.unitCreationSquareSize+=1):this.unitCreationSquareSize>0&&(this.unitCreationSquareSize-=1)},t.prototype.handleMouseMiddleButton=function(){this.unitCreationType0)for(var s=Math.floor(t.x/i)*i,u=Math.floor(t.y/i)*i,l=0;l0&&!t[i-1][n+o]?(s(i,n,i-1,n+o),!0):i=0){if(r(1*a))return!0}else{if(i>0&&!t[i-1][n])return s(i,n,i-1,n),!0;if(i=0&&t=0&&i=((null===(s=t[i][o])||void 0===s?void 0:s.getUnitType().unitDefaultFlameSustainability)||0)&&(t[i][o].unitState.unitIsOnFire=!0)))},l=function(i,n){var o;if(n+1>e)return!1;if(!t[i][n+1])return Math.random()>=.1&&(t[i][n].unitState.unitHealth-=1),s(i,n,i,n+1),!0;if((null===(o=t[i][n+1])||void 0===o?void 0:o.getUnitType().unitIsFlame)&&l(i,n+1))return Math.random()>=.5&&(t[i][n].unitState.unitHealth-=1),s(i,n,i,n+1),!0;return!1},h=function(i,o){var r,u,h,d;(null===(r=t[i][o])||void 0===r?void 0:r.isUpdated)||((null===(u=t[i][o])||void 0===u?void 0:u.getUnitType().unitIsGas)?function(i,o){var r,a,u,l,h,d=i>0&&!t[i-1][o],y=i0&&!t[i-1][o+1],p=i=((null===(h=null===(l=t[i][o])||void 0===l?void 0:l.unitState)||void 0===h?void 0:h.unitHealth)||1)&&(t[i][o].unitState.unitHealth-=1),c)s(i,o,i,o+1);else if(m&&g){var v=(0,n.getRandomInt)(0,1);s(i,o,0===v?i-1:i+1,o+1)}else f&&d?s(i,o,i-1,o+1):p&&y?s(i,o,i+1,o+1):d?s(i,o,i-1,o):y&&s(i,o,i+1,o)}else o===e-1&&(d?s(i,o,i-1,o):y&&s(i,o,i+1,o))}(i,o):(null===(h=t[i][o])||void 0===h?void 0:h.getUnitType().unitIsLiquid)?function(i,o){var r,a,u,l,h,d,y,c,f,p,m=i>0&&!t[i-1][o],g=i>0&&!m&&!m&&(null===(r=t[i-1][o])||void 0===r?void 0:r.isUpdated),v=i>0&&!m&&(null===(a=t[i-1][o])||void 0===a?void 0:a.getUnitType().unitIsLiquid)&&t[i-1][o].getUnitType().unitDensity0&&!m&&(null===(u=t[i-1][o])||void 0===u?void 0:u.getUnitType().unitIsGas),P=i0){var I=!t[i][o-1],U=!I&&(null===(y=t[i][o-1])||void 0===y?void 0:y.getUnitType().unitIsLiquid)&&t[i][o-1].getUnitType().unitDensity0&&!t[i-1][o-1],D=i>0&&!C&&t[i-1][o-1].getUnitType().unitIsLiquid&&t[i-1][o-1].getUnitType().unitDensity0&&!C&&t[i-1][o-1].getUnitType().unitIsGas,M=i>0&&!C&&(null===(f=t[i-1][o-1])||void 0===f?void 0:f.isUpdated),F=i=.8&&(t[e][i].unitState.unitHealth-=1),l(e,i)}(i,o):function(i,o){var r,u,l,h,d,y,c,f,p,m;if(!(o<=0)){var g=!1,v=!1,S=!1,P=!1,x=!1,T=!1,w=!1,I=!1,U=!1,b=!1,C=!1,D=!1;i>0&&((g=!t[i-1][o])||(v=!!(null===(r=t[i-1][o])||void 0===r?void 0:r.getUnitType().unitIsLiquid),S=!!(null===(u=t[i-1][o])||void 0===u?void 0:u.getUnitType().unitIsGas)),(w=!t[i-1][o-1])||(I=!!(null===(l=t[i-1][o-1])||void 0===l?void 0:l.getUnitType().unitIsLiquid),U=!!(null===(h=t[i-1][o-1])||void 0===h?void 0:h.getUnitType().unitIsGas))),i=.99&&r.emittedUnits.push({unitType:f.toDestroy,x:e,y:i}))}if(t[e][i]&&(null===(a=t[e][i])||void 0===a?void 0:a.getUnitType().unitIsFlammable)&&(null===(l=t[e][i])||void 0===l?void 0:l.unitState)&&t[e][i].unitState.fireHP<=0){if(t[e][i]=null,!(f=null===(d=t[e][i])||void 0===d?void 0:d.getUnitType().unitTransformations)||!f.toDestroy)return;return void r.emittedUnits.push({unitType:f.toDestroy,x:e,y:i})}(null===(y=t[e][i])||void 0===y?void 0:y.unitState.unitIsOnFire)&&(!function(e,i){var o=0;(0,n.getRandomInt)(0,100)>=30&&(o=4278190335+(0,n.getRandomInt)(0,233)*Math.pow(16,2)),t[e][i].unitState.unitDecalColor=o,t[e][i].unitState.fireHP-=1,u(e-1,i),u(e+1,i),u(e,i+1),u(e,i-1)}(e,i),r.emittedUnits.push({unitType:"yellow-flame",x:e,y:i+1})),(null===(c=t[e][i])||void 0===c?void 0:c.getUnitType().unitIsStatic)||h(e,i)}},y=0;y=0;i-=1)d(i,t)};if(this.isLineByLineResolve){y=0;this.lastY=0&&(e.globalPosition.x+=e.desiredDeltaPosition.x),0!==e.desiredDeltaPosition.y&&e.globalPosition.y+e.desiredDeltaPosition.y>=0&&(e.globalPosition.y+=e.desiredDeltaPosition.y),t.layers[0].x=e.globalPosition.x-t.framePosition.x,t.layers[0].y=e.globalPosition.y-t.framePosition.y,e.desiredDeltaPosition.x=0,e.desiredDeltaPosition.y=0}))},t.prototype.getPlayer=function(t){return this.players[t]},t.prototype.getLayers=function(){return this.updatePlayersPosition(),this.layers},t}();e.PlayersEngine=i},382:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.UI=void 0;var n=i(987),o=i(527),r=function(){function t(t){this.frameWidth=1,this.frameHeight=1,this.cursorPosition={x:0,y:0},this.cursorUIPosition={x:0,y:0},this.framePosition={x:0,y:0},this.actions={},this.isMainActionButtonDown=!1,this.eventsStack=[],this.layers=[],this.actions=t,this.initLayers()}return t.prototype.getCursorPixels=function(){var t=new Uint32Array(9);return t[1]=4278190080,t[3]=4278190080,t[5]=4278190080,t[7]=4278190080,t},t.prototype.initLayers=function(){this.layers.push({pixelsLayer:{width:4,height:80,x:4,y:40,pixels:new Uint32Array(320)},actionToPixels:null,isVisible:!0},{pixelsLayer:{width:3,height:3,x:0,y:0,pixels:this.getCursorPixels()},actionToPixels:null,isVisible:!0}),this.drawUI()},t.prototype.getLayers=function(){this.layers[1].pixelsLayer.x=this.cursorUIPosition.x-1,this.layers[1].pixelsLayer.y=this.cursorUIPosition.y-1;for(var t=[],e=0;e=0&&n>=0){for(var f=n;f=s.pixelsLayer.x&&e=s.pixelsLayer.y&&i=0;s--)o(s);if(!n){var a=this.findAction("default-action");this.eventsStack.push((function(){return a(t.cursorPosition)}))}this.isMainActionButtonDown=!1}var u=this.eventsStack;return this.eventsStack=[],u},t}();e.UI=r},900:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.Unit=void 0;var n=i(987),o=i(527),r=function(){function t(t,e,i,r){if(void 0===e&&(e=null),void 0===i&&(i=0),void 0===r&&(r=null),this.isUpdated=!1,this.unitTypeName=t,this.unitVelocityVector=e,this.unitId=i,r)this.unitState=r;else{var s=(0,n.getUnitTypeByUnitTypeName)(t),a=s.unitDefaultColor,u=s.unitDefaultHealth,l=s.unitDefaultFlameSustainability,h=s.unitDefaultFireHP,d=(0,o.getRandomInt)(a.minRandomColor,a.maxRandomColor),y=(15&a.colorShiftNumbers)>>3,c=(240&a.colorShiftNumbers)>>4>>3,f=(3840&a.colorShiftNumbers)>>8>>3,p=d*y+d*Math.pow(16,2)*c+d*Math.pow(16,4)*f,m=a.baseColor+p;this.unitState={unitHealth:u,unitIsOnFire:!1,unitColor:m,unitDecalColor:0,flameSustainability:l,fireHP:h}}}return t.prototype.getUnitType=function(){return(0,n.getUnitTypeByUnitTypeName)(this.unitTypeName)},t.prototype.toJson=function(){var t={h:this.unitState.unitHealth,f:Number(this.unitState.unitIsOnFire),c:this.unitState.unitColor,d:this.unitState.unitDecalColor,s:this.unitState.flameSustainability,j:this.unitState.fireHP},e={n:this.unitTypeName,i:this.unitId,s:t};return this.unitVelocityVector&&(e.v={s:this.unitVelocityVector.startPoint,e:this.unitVelocityVector.endPoint}),e},t}();e.Unit=r},273:function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0}),e.Renderer=void 0;var n=i(527),o=function(){function t(t){var e=this;this.pixelSize=1,this.wallColor=4278190080,this.layersMapping={physics:0,ui:1,crosshair:2},this.layers=[],this.lastFrameTime=(new Date).getTime(),this.getScreenSizeX=function(){return e.width},this.getScreenSizeY=function(){return e.height},this.getPixelsCount=function(){return e.width*e.height/Math.pow(e.pixelSize,2)},this.getPixelSize=function(){return e.pixelSize},this.getLastFrameTime=function(){return e.lastFrameTime},this.canvas=t,this.width=this.canvas.width,this.height=this.canvas.height,this.desiredWidth=this.canvas.width,this.desiredHeight=this.canvas.height,this.ctx=this.canvas.getContext("2d")||new CanvasRenderingContext2D,this.imageData=this.ctx.createImageData(this.width,this.height),this.realPixels=new Uint32Array(this.imageData.data.buffer),this.virtualPixels=new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize)),this.initLayers()}return t.prototype.initLayers=function(){this.layers.push({width:this.width/this.pixelSize,height:this.height/this.pixelSize,x:0,y:0,pixels:new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize))})},t.prototype.setLayerPixels=function(t,e){var i=this.layersMapping[t];void 0!==i&&(this.layers[i].pixels=e)},t.prototype.updateLayerPosition=function(t,e,i){var n=this.layersMapping[t];void 0!==n&&(this.layers[n].x=e,this.layers[n].y=i)},t.prototype.updateLayerSize=function(t,e,i){var n=this.layersMapping[t];void 0!==n&&(this.layers[n].width=e,this.layers[n].height=i)},t.prototype.updateLayer=function(t,e){var i=this.layersMapping[t];void 0!==i&&(this.layers[i].width=e.width,this.layers[i].height=e.height,this.layers[i].x=e.x,this.layers[i].y=e.y,this.layers[i].pixels=e.pixels)},t.prototype.setScreenSize=function(t,e){this.desiredWidth=t,this.desiredHeight=e,this.width=Math.floor(t/this.pixelSize)*this.pixelSize,this.height=Math.floor(e/this.pixelSize)*this.pixelSize,this.canvas.width=this.width,this.canvas.height=this.height,this.imageData=this.ctx.createImageData(this.width,this.height),this.realPixels=new Uint32Array(this.imageData.data.buffer),this.virtualPixels=new Uint32Array(this.width/this.pixelSize*(this.height/this.pixelSize))},t.prototype.setPixelSize=function(t){this.pixelSize=t,this.setScreenSize(this.desiredWidth,this.desiredHeight)},t.prototype.getPixels=function(){return this.virtualPixels},t.prototype.setPixels=function(t){this.virtualPixels=t},t.prototype.blendPixelLayers=function(t,e,i){if(!t||0===t.length)return null;if(1===t.length)return t[0].pixels;for(var o=new Uint32Array(e*i),r=t.length-1;r>=0;r--){var s=t[r],a=s.width,u=s.height,l=s.x,h=s.y,d=0,y=0,c=0,f=0;l<0&&(d=-l),h<0&&(f=-h),u-f-(i-h)>0&&(c=u-f-(i-h)),a-d-(e-l)>0&&(y=a-d-(e-l));for(var p=0+f;p>BigInt(24));if(255===i)return e;var n=Number(BigInt(t)>>BigInt(24))/255,o=i/255,r=Number(BigInt(t)&BigInt(16777215)),s=Number(BigInt(e)&BigInt(16777215)),a=(1-n)*o+n,u=function(t,e,i,n,o){return Math.round(((1-i)*n*e+i*t)/o)||0},l=(65280&r)>>8,h=(16711680&r)>>16,d=(65280&s)>>8,y=(16711680&s)>>16,c=u(255&r,255&s,n,o,a),f=u(l,d,n,o,a),p=(u(h,y,n,o,a)<<16)+(f<<8)+c;return(BigInt(Math.round(255*a))<pixel-world-simulation
\ No newline at end of file +pixel-world-simulation
\ No newline at end of file