-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGUI.min.js
More file actions
22 lines (22 loc) · 8.5 KB
/
GUI.min.js
File metadata and controls
22 lines (22 loc) · 8.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if("undefined"===typeof THREE)throw"THREE.JS not found";var GUI={version:"1.0.1"};GUI.origin=new THREE.Vector3(0,0,0);
GUI.CONTROL_SCHEME_DEFAULT={leftClick:function(a,f,d){var e="undefined"!==typeof a.items[f][d],c="undefined"!==typeof a.mouseItem;c&&!e&&(a.addItemToSlot(a.mouseItem,f,d),a.items[f][d].oldAmt=0,delete a.mouseItem);e&&!c&&(a.mouseItem=a.removeItem(f,d),delete a.items[f][d]);e&&c&&(a.items[f][d].itemName==a.mouseItem.name?(a.items[f][d].ammount+=a.mouseItem.ammount,delete a.mouseItem):(e=a.removeItem(f,d),a.addItemToSlot(a.mouseItem,f,d),a.mouseItem=e))},rightClick:function(a,f,d){var e="undefined"!==
typeof a.items[f][d],c="undefined"!==typeof a.mouseItem;if(c&&!e){a.mouseItem.ammount--;var g=a.mouseItem.clone();g.ammount=1;a.addItemToSlot(g,f,d);a.items[f][d].oldAmt=0}!c&&e&&(g=a.items[f][d].ammount/2,a.items[f][d].ammount=Math.floor(g),a.mouseItem=0>=a.items[f][d].ammount?a.removeItem(f,d):a.items[f][d].itemStack.clone(),a.mouseItem.ammount=Math.ceil(g));e&&c&&(a.items[f][d].itemName==a.mouseItem.name?(a.items[f][d].ammount++,a.mouseItem.ammount--):(e=a.removeItem(f,d),a.addItemToSlot(a.mouseItem,
f,d),a.mouseItem=e))}};
GUI.guiScene=function(){var a=this;this.camera=new THREE.OrthographicCamera(window.innerWidth/-2,window.innerWidth/2,window.innerHeight/2,window.innerHeight/-2,-500,1E3);this.light=new THREE.AmbientLight(16777215);this.scene=new THREE.Scene;this.scene.add(this.camera);this.scene.add(this.light);this.camera.position.z=50;this.camera.lookAt(GUI.origin);this.addElement=function(a){this.scene.add(a);return a};this.render=function(a){a.render(this.scene,this.camera)};this.addTextElement=function(a,d,e,
c){"undefined"===typeof c&&(c={});"undefined"===typeof c.z&&(c.z=0);"undefined"===typeof c.textColor&&(c.textColor="#000");var g=document.createElement("canvas"),h=g.getContext("2d");g.style.border="3px solid #000";g.style.borderRadius="15px";g.height=105;h.font="100px Arial";var b=h.measureText(a).width;g.width=b;h.font="normal 100px Arial";h.fillStyle=c.textColor;h.fillText(a,0,85);a=new THREE.Texture(g);a.needsUpdate=!0;a=new THREE.SpriteMaterial({map:a});a=new THREE.Sprite(a);a.scale.set(b/4,
25,25);a.position.set(d,e,c.z);this.scene.add(a);a.position.y+=1.5;a.textWidth=b;return a};this.Inventory=function(f,d,e){var c=this;e=e||{};e.backgroundColor=e.backgroundColor||"#fff";e.lineColor=e.lineColor||"#000";this.ctrlScheme=e.ctrlScheme||GUI.CONTROL_SCHEME_DEFAULT;this.height=100*f+1;this.width=100*d+1;this.rows=f;this.columns=d;this.items=Array(d);for(d=0;d<this.items.length;d++)this.items[d]=Array(f);this.canvas=document.createElement("canvas");this.canvas.height=this.height;this.canvas.width=
this.width;this.grid=this.canvas.getContext("2d");this.grid.beginPath();this.grid.rect(0,0,this.width,this.height);this.grid.fillStyle=e.backgroundColor;this.grid.font="30px Arial";this.grid.fill();this.grid.lineWidth=5;this.grid.strokeStyle=e.lineColor;this.grid.moveTo(0,0);this.grid.lineTo(0,this.height);this.grid.lineTo(this.width,this.height);this.grid.lineTo(this.width,0);this.grid.lineTo(0,0);this.grid.stroke();this.grid.lineWidth=2;for(d=0;d<=this.width;d+=100)this.grid.moveTo(d,0),this.grid.lineTo(d,
this.height);for(d=0;d<=this.height;d+=100)this.grid.moveTo(0,d),this.grid.lineTo(this.width,d);this.grid.stroke();a.mouseItem={};this.grid.fillStyle=e.lineColor;this.texture=new THREE.Texture(this.canvas);this.texture.minFilter=THREE.LinearFilter;this.texture.needsUpdate=!0;this.material=new THREE.SpriteMaterial({map:this.texture});this.sprite=new THREE.Sprite(this.material);this.sprite.scale.set(this.width,this.height,1);this.hidden=!0;this.containerObject=new THREE.Object3D;this.containerObject.add(this.sprite);
this.addItemToSlot=function(a,b,c){this.items[b][c]=a.model.clone();this.items[b][c].ammount=a.ammount;this.items[b][c].oldAmt=a.ammount;this.items[b][c].itemName=a.name;this.items[b][c].itemStack=a;this.items[b][c].lore=a.lore;this.items[b][c].position.set(this.width/-2+100*b+50,this.height/2-100*c-50,0);this.items[b][c].scale.multiplyScalar(50);this.containerObject.add(this.items[b][c]);return[b,c]};this.getEmptySlot=function(){for(var a=0;a<this.rows;a++)for(var b=0;b<this.columns;b++)if("undefined"===
typeof this.items[b][a])return[b,a]};this.addItemToEmptySlot=function(a){var b=this.getEmptySlot();this.addItemToSlot(a,b[0],b[1])};this.removeItem=function(a,b){if("undefined"===typeof this.items[a][b])return!1;this.containerObject.remove(this.items[a][b]);var c=this.items[a][b].itemStack.clone();c.ammount=this.items[a][b].ammount;this.grid.fillStyle=e.backgroundColor;this.grid.fillText(this.items[a][b].oldAmt,100*a+5,100*b+30);delete this.items[a][b].ammount;delete this.items[a][b];return c};this.show=
function(){a.scene.add(this.containerObject);this.hidden=!1};this.hide=function(){a.scene.remove(this.containerObject);this.hidden=!0};this.toggle=function(){this.hidden?this.show():this.hide();return this};this.update=function(){for(var a=0;a<this.items.length;a++)for(var b=0;b<this.items[a].length;b++)"undefined"!==typeof this.items[a][b]&&(this.items[a][b].rotation.y+=.05,this.items[a][b].oldAmt!=this.items[a][b].ammount&&(this.grid.fillStyle=e.backgroundColor,this.grid.fillText(this.items[a][b].oldAmt,
100*a+5,100*b+30),this.grid.fillStyle=e.lineColor,this.grid.fillText(this.items[a][b].ammount,100*a+5,100*b+30),this.items[a][b].oldAmt=this.items[a][b].ammount,this.texture.needsUpdate=!0))};this.locateItem=function(a){for(var b=[],c=0;c<this.items.length;c++)for(var d=0;d<this.items[c].length;d++)if("undefined"!==typeof this.items[c][d]&&this.items[c][d].itemName==a)return[c,d];return 1<b.length?b:b[0]};window.addEventListener("mousedown",function(d){var b=Math.floor((window.innerHeight/-2+c.height/
2+d.clientY)/100),e=Math.floor((window.innerWidth/-2+c.width/2+d.clientX)/100);if(!c.hidden&&e<=c.columns-1&&b<=c.rows-1&&0<=b&&0<=e)switch("undefined"!==typeof c.items[e][b]&&"undefined"!==typeof c.items[e][b].lore&&a.scene.remove(c.items[e][b].lore),d.button){case 0:c.ctrlScheme.leftClick(c,e,b);break;case 2:c.ctrlScheme.rightClick(c,e,b)}},!1);var g=[-1,-1];$("body").on("mousemove",function(d){var b=Math.floor((window.innerHeight/-2+c.height/2+d.clientY)/100),e=Math.floor((window.innerWidth/-2+
c.width/2+d.clientX)/100),f=window.innerWidth/-2+d.clientX;d=window.innerHeight/2-d.clientY;0<=g[0]&&0<=g[1]&&(g[0]!=e||g[1]!=b)&&"undefined"!==typeof c.items[g[0]][g[1]]&&(a.scene.remove(c.items[g[0]][g[1]].lore),g=[e,b]);e<=c.columns-1&&b<=c.rows-1&&0<=b&&0<=e&&!c.hidden&&"undefined"!==typeof c.items[e][b]&&"undefined"!==typeof c.items[e][b].lore&&(a.scene.add(c.items[e][b].lore),c.items[e][b].lore.position.set(f+c.items[e][b].lore.scale.x/2,d-c.items[e][b].lore.scale.y/2,150),g=[e,b])});return this};
window.addEventListener("resize",function(){a.camera.left=window.innerWidth/-2;a.camera.right=window.innerWidth/2;a.camera.top=window.innerHeight/2;a.camera.bottom=window.innerHeight/-2;a.camera.updateProjectionMatrix()},!1)};
var Item=function(a,f,d,e,c){c=c||[];e=e||{};if(0<c.length){var g=0;this.loreCanvas=document.createElement("canvas");var h=this.loreCanvas.getContext("2d");h.font="100px Arial";for(var b=0;b<c.length;b++)h.measureText(c[b]).width>g&&(g=h.measureText(c[b]).width);this.loreCanvas.height=105*c.length;this.loreCanvas.width=g;h.fillStyle="#fefefe";h.fillRect(0,0,g,105*c.length);h.fillStyle="black";h.font="100px Arial";for(b=0;b<c.length;b++)h.fillText(c[b],0,100*(b+1)),h.stroke();h=new THREE.Texture(this.loreCanvas);
h.needsUpdate=!0;h=new THREE.SpriteMaterial({map:h});this.lore=new THREE.Sprite(h);this.lore.scale.set(g/7,15*c.length,1)}this._unclonedModel=f;this.model=f.clone();this.name=a;this.id=d||Math.floor(1E4*Math.random);this.onUse=e.onUse||function(){};this.onSecondary=e.onSecondary||function(){};this.clone=function(){return new Item(this.name,this.model,this.id,this.onUse,this.onSecondary)};this.use=function(){return e.onUse()};this.secondary=function(){return e.onSecondary()};this.hover=function(){return e.onHover()};
Item.allInstances.push(this);return this};Item.allInstances=[];
var ItemStack=function(a,f,d){this._unclonedItem=a;this.id=f;this.item=a;this.name=a.name;this.ammount=d||1;this.model=this.item.model;this.lore=this.item.lore;this.addItem=function(a){this.ammount+=a||1;return this};this.removeItem=function(a){this.ammount-=a||1;return this};this.use=function(){return this.item.use()};this.secondary=function(){return this.item.secondary()};this.getAmmount=function(){return this.ammount};this.clone=function(){return new ItemStack(this._unclonedItem,this.ammount)};
ItemStack.allInstances.push(this);return this};ItemStack.allInstances=[];
//# sourceMappingURL=./GUI.min.js.map