let pts=[],lines=[],rigidity=10,playTimer=0,buildMode=1,buildSelect=0,buildDrag=-1,buildSl=-1,playMode=0,
maxstress=1,minstress=1,maxspeed=0
if(buildMode&&buildSelect==0){
if(buildSl>-1&&mouseX>350&&mouseX<440&&mouseY>10&&mouseY<120){
if(mouseY>40&&mouseY<60){
if(strPts[buildSl].length<3)strPts[buildSl].push(0.4)
if(strPts[buildSl].length<4)strPts[buildSl].push(0.999)
strPts[buildSl][4]=parseInt(prompt('Split frame'))
if(mouseY>60&&mouseY<80){
if(strPts[buildSl].length<3)strPts[buildSl].push(0.4)
strPts[buildSl][2]=Math.max(1,Math.min(20,parseInt(prompt('Mass'))))*0.4
for(let i=0;i<strPts.length;i++){
if(Math.sqrt(Math.pow(mouseX-strPts[i][0],2)+Math.pow(mouseY-strPts[i][1],2))<5)buildDrag=i
if(buildMode&&buildSelect==2){
for(let i=0;i<strPts.length;i++){
if(Math.sqrt(Math.pow(mouseX-strPts[i][0],2)+Math.pow(mouseY-strPts[i][1],2))<5)buildDrag=i
if(mouseX>200&&mouseX<300&&mouseY>10&&mouseY<40&&!buildMode){
if(mouseX>450&&mouseX<500&&mouseY>10&&mouseY<50){
if(buildMode&&mouseX>15&&mouseX<55&&mouseY>45&&mouseY<265){
buildSelect=Math.floor((mouseY-45)/20)
if(buildMode&&buildSelect==0){
if(buildMode&&buildSelect==1){
strPts.push([Math.floor(mouseX/5)*5,Math.floor(mouseY/5)*5])
if(buildMode&&buildSelect==2&&buildDrag>-1){
for(let i=0;i<strPts.length;i++){
if(Math.sqrt(Math.pow(mouseX-strPts[i][0],2)+Math.pow(mouseY-strPts[i][1],2))<10&&i!=buildDrag){
strLines.push([buildDrag,i])
if(buildMode&&buildSelect==4){
localStorage.setItem('catapultPlan'+prompt('Filename...'),JSON.stringify({p:strPts,l:strLines}))
if(buildMode&&buildSelect==5){
let jsondata=localStorage.getItem('catapultPlan'+prompt('Filename...'))
alert('No file at that filename')
let jsondataP=JSON.parse(jsondata)
if(buildMode&&buildSelect==6){
let d=document.createElement("textarea");document.body.appendChild(d)
d.value=JSON.stringify({p:strPts,l:strLines});d.select();document.execCommand("copy");document.body.removeChild(d)
if(buildMode&&buildSelect==7){
let jsondataP=JSON.parse(prompt('Paste here:'))
if(buildMode&&buildSelect==8){
for(let i=0;i<localStorage.length;i++){
if(localStorage.key(i).startsWith('catapultPlan'))txtp+=localStorage.key(i).slice(12)+'\n'
if(txtp=='')txtp='No saved files'
if(buildMode&&buildSelect==9){
localStorage.removeItem('catapultPlan'+prompt('Filename...'))
if(buildMode&&buildSelect==10){
let jsondata=localStorage.getItem('catapultPlan'+prompt('Filename...'))
alert('No file at that filename')
let jsondataP=JSON.parse(jsondata),npts=strPts.length
for(let i=0;i<jsondataP.p.length;i++){
strPts.push(jsondataP.p[i])
for(let i=0;i<jsondataP.l.length;i++){
let lne=[...jsondataP.l[i]]
lne[0]+=npts;lne[1]+=npts