<!-- SOLID-PLAYTIME · part 192 -->
d:'#8B5A2B',stone:'#8a8f98',gold:'#ffd700',marble:'#e8e4da'};
var SHAPES=['pillar','wall','step','roof','foundation','beam','arch','stairs','platform','fence','column','slab'];

var api=null, tries=0;
var wt=setInterval(function(){
  tries++;
  if(window.syncBuildAPI&&window.syncBuildAPI.piece){ api=window.syncBuildAPI; clearInterval(wt); boot(); }
  else if(tries>40) clearInterval(wt);
},500);

var board=null, boardMesh=null, tex=null, canvas=null;
var CW=640, CH=940, TITLE_H=150, ROW_H=64;

function counts(){ try{ return (window.invState&&window.invState.counts)||{}; }catch(e){ return {}; } }
function held(){ try{ return (window.invState&&window.invState.held)||null; }catch(e){ return null; } }

function boot(){
  var home=null;
  try{ home=JSON.parse(localStorage.getItem('solid-selector-home-v1')||'null'); }catch(e){}
  if(!home||!isFinite(home.x)||!isFinite(home.z)){
    var px=0,pz=0;
    try{ px=Kt.hero.position.x; pz=Kt.hero.position.z; }catch(e){}
    home={x:Math.round(px-13),z:Math.round(pz+14)};
    try{ localStorage.setItem('solid-selector-home-v1',JSON.stringify(home)); }catch(e){}
  }
  var gy=groundY(home.x,home.z);
  board=new T.Group();
  var legL=api.paint(api.piece('pillar'),'stone'); legL.position.set(-5.2,0,-0.3);
  var legR=api.paint(api.piece('pillar'),'stone'); legR.position.set(5.2,0,-0.3);
  var back=api.paint(api.piece('wall'),'stone');
  back.scale.set(3.2,2.9,0.35); back.position.set(0,9,-0.4);
  canvas=document.createElement('canvas'); canvas.width=CW; canvas.height=CH;
  tex=new T.CanvasTexture(canvas); tex.anisotropy=4;
  boardMesh=new T.Mesh(new T.PlaneGeometry(12,17.6),
    new T.MeshBasicMaterial({map:tex,side:T.DoubleSide}));
  boardMesh.position.set(0,9.2,0);
  board.add(legL); board.add(legR); board.add(back); board.add(boardMesh);
  board.position.set(home.x,gy,home.z);
  try{
    var dx=Kt.hero.position.x-home.x, dz=Kt.hero.position.z-home.z;
    board.rotation.y=Math.atan2(dx,dz);
  }catch(e){}
  Kt.scene.add(board);
  drawSel();
  setInterval(drawSel,30000);
  document.addEventListener('click',onTap,true);
}

function drawSel(){
  var c=canvas.getContext('2d'), cc=counts(), hk=held();
  c.fillStyle='#0d0b16'; c.fillRect(0,0,CW,CH);
  c.strokeStyle='#ffd700'; c.lineWidth=6; c.strokeRect(8,8,CW-16,CH-16);
  c.strokeStyle='rgba(255,215,0,0.35)'; c.lineWidth=2; c.strokeRect(20,20,CW-40,CH-40);
  c.textAlign='center';
  c.fillStyle='#ffd700'; c.font='bold 38px Georgia,serif';
  c.fillText('THE SELECTOR',CW/2,62);
  c.fillStyle='#8a7a4a'; c.font='17px Georgia,serif';
  c.fillText('TAP A MATERIAL TO HOLD IT',CW/2,100);
  c.fillStyle='#5a5a66'; c.font='15px Georgia,serif';
  c.fillText('THEN RAISE IT WITH BUILD',CW/2,124);
  var colW=(CW-44)/4;
  for(var r=0;r<SHAPES.length;r++){
    for(var vi=0;vi<4;vi++){
      var x=22+vi*colW, y=TITLE_H+r*ROW_H;
      var key=VARIANTS[vi]+'-'+SHAPES[r], n=cc[key]||0;
      c.fillStyle=n>0?'rgba(255,255,255,0.06)':'rgba(255,255,255,0.02)';
      c.fillRect(x+2,y+2,colW-4,ROW_H-4);
      if(n>0){ c.fillStyle=VCSS[VARIANTS[vi]]; c.fillRect(x+6,y+8,5,ROW_H-16); }
      c.fillStyle=n>0?'#ffe9a8':'#4a4a55';
      c.font='bold 19px Georgia,serif'; c.textAlign='left';
      c.fillText(SHAPES[r].toUpperCase(),x+18,y+28);
      c.font='17px Georgia,serif'; c.fillStyle=n>0?'#9ad':'#3a3a44';
      c.fillText(n>0?('×'+n):'—',x+18,y+50);
      if(hk===key){
        c.strokeStyle='#ffd700'; c.lineWidth=3;
        c.strokeRect(x+2,y+2,colW-4,ROW_H-4);
      }
    }
  }
  /* column headers */
  c.textAlign='center'; c.font='bold 15px Georgia,serif';
  for(var v2=0;v2<4;v2++){
    c.fillStyle=VCSS[VARIANTS[v2]];
    c.fillText(VARIANTS[v2].toUpperCase(),22+v2*colW+colW/2,TITLE_H-8);
  }
  tex.needsUpdate=true;
}

var rayc=new T.Raycaster(), ndc=new T.Vector2();
function onTap(e){
  if(!boardMesh) return;
  try{ if(e.target&&e.target.closest&&e.target.closest('button')) return; }catch(ee){}
  var cx=(e.clientX!==undefined)?e.clientX:0;
  var cy=(e.clientY!==undefined)?e.clientY:0;
  ndc.x=(cx/window.innerWidth)*2-1; ndc.y=-(cy/window.innerHeight)*2+1;
  try{
    rayc.setFromCamera(ndc,Kt.camera);
    var hit=rayc.intersectObject(boardMesh,false)[0];
    if(!hit||!hit.uv) return;
    var colW=(CW-44)/4;
    var vi=Math.floor(hit.uv.x*4);
    var row=Math.floor(((1-hit.uv.y)*CH-TITLE_H)/ROW_H);
    if(vi<0||vi>3||row<0||row>=SHAPES.length) return;
    holdMat(VARIANTS[vi],SHAPES[row]);
  }catch(err){}
}

function holdMat(variant,shape){
  var key=variant+'-'+shape, n=counts()[key]||0;
  if(n<=0){ toast('NONE YET — HARVEST '+variant.toUpperCase()+' NODES','#888'); return; }
  try{
    window.invState.held=key;
    localStorage.setItem('solid-inv-v1',JSON.stringify({
      counts:window.invState.counts,equipped:window.invState.equipped,held:window.invState.held}));
  }catch(e){}
  toast('HELD: '+(variant+' '+shape).toUpperCase()+' ×'+n+' — TAP BUILD',VCSS[variant]);
  drawSel();
}
}catch(err){}
})(),(function(){
try{
var 