import{r as e}from"./chunk-DECur_0Z.js";import{n as t,r as n,t as r}from"./jsx-runtime-BpGWiA-R.js";import{t as i}from"./useQuery-B-4HMtqx.js";import{a,i as o,o as s,s as c}from"./manifest-CirqV3Ls.js";import{t as l}from"./logger-z_EpIdIa.js";import"./traditional-BTL5qX2E.js";import{a as u,i as d,n as f,o as p,r as m,t as h}from"./misToScene-DdnDTJru.js";import{c as g,l as _,n as v,o as y,r as b,s as x,t as S}from"./mission-D8vr00S1.js";import{r as C}from"./engineStore-Dkm20jvr.js";import{A as w}from"./index-DBtsNu05.js";import{i as T,l as E}from"./loaders-VxR5Bl13.js";var D=e(_(),1),O=t(),k=l(`scriptLoader`);function A(){return async e=>{let t;try{t=T(e)}catch(t){return k.warn(`Script not in manifest: %s (%s)`,e,t),null}try{let n=await fetch(t);return n.ok?await n.text():(k.error(`Script fetch failed: %s (%d)`,e,n.status),null)}catch(t){return k.error(`Script fetch error: %s %o`,e,t),null}}}var j=e(n(),1),M=r(),N=(0,j.createContext)(null);function P(e){let t=(0,O.c)(3),{runtime:n,children:r}=e,i;return t[0]!==r||t[1]!==n?(i=(0,M.jsx)(N.Provider,{value:n,children:r}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i}var F=(0,j.createContext)(null).Provider,I=[`scripts/admin.cs`,`scripts/ai.cs`,`scripts/aiBotProfiles.cs`,`scripts/aiBountyGame.cs`,`scripts/aiChat.cs`,`scripts/aiCnH.cs`,`scripts/aiCTF.cs`,`scripts/aiDeathMatch.cs`,`scripts/aiDebug.cs`,`scripts/aiDefaultTasks.cs`,`scripts/aiDnD.cs`,`scripts/aiHumanTasks.cs`,`scripts/aiHunters.cs`,`scripts/aiInventory.cs`,`scripts/aiObjectiveBuilder.cs`,`scripts/aiObjectives.cs`,`scripts/aiRabbit.cs`,`scripts/aiSiege.cs`,`scripts/aiTDM.cs`,`scripts/aiTeamHunters.cs`,`scripts/deathMessages.cs`,`scripts/graphBuild.cs`,`scripts/navGraph.cs`,`scripts/serverTasks.cs`,`scripts/spdialog.cs`];function L(e,t){if(t)return e.state.datablocks.get(t)}function R(e){if(typeof e==`string`){let t=e.toLowerCase();return t!==`0`&&t!==`false`&&t!==``}return!!e}function z(e){let t=e.split(` `).map(e=>parseFloat(e));return[t[0]??0,t[1]??0,t[2]??0]}function B(e){let[t,n,r,i]=e.split(` `).map(parseFloat),a=-(i||0)*Math.PI/360,o=Math.sin(a),s=Math.cos(a),c=Math.sqrt((n||0)*(n||0)+(r||0)*(r||0)+(t||0)*(t||0));return c<1e-8?[0,0,0,1]:[(n||0)/c*o,(r||0)/c*o,(t||0)/c*o,s]}function V(e,t,n){let r=e._className,i=`mission_${e._id}`,a=S(e),o=b(e),s=B(e.rotation??`1 0 0 0`),c=v(e,`dataBlock`)??``,l=L(t,c),g={id:i,className:r,runtimeObject:e,missionTypesList:v(e,`missionTypesList`)},_={...g,position:a,rotation:s,scale:o};switch(r){case`TerrainBlock`:return{...g,renderType:`TerrainBlock`,terrainData:u(e)};case`InteriorInstance`:return{...g,renderType:`InteriorInstance`,interiorData:h(e)};case`Sky`:return{...g,renderType:`Sky`,skyData:m(e)};case`Sun`:return{...g,renderType:`Sun`,sunData:d(e)};case`WaterBlock`:return{...g,renderType:`WaterBlock`,waterData:p(e)};case`MissionArea`:return{...g,renderType:`MissionArea`,missionAreaData:f(e)};case`StaticShape`:case`Item`:case`Turret`:case`TSStatic`:{let i=v(e,`team`);return H(_,e,l,t,r,i!=null&&i!==``?parseInt(i,10):n,c)}case`ForceFieldBare`:return U(_,e,l,o);case`AudioEmitter`:return{..._,renderType:`AudioEmitter`,audioFileName:v(e,`fileName`)??void 0,audioVolume:parseFloat(v(e,`volume`))||1,audioIs3D:(v(e,`is3D`)??`0`)!==`0`,audioIsLooping:(v(e,`isLooping`)??`0`)!==`0`,audioMinDistance:parseFloat(v(e,`minDistance`))||1,audioMaxDistance:parseFloat(v(e,`maxDistance`))||1,audioMinLoopGap:parseFloat(v(e,`minLoopGap`))||0,audioMaxLoopGap:parseFloat(v(e,`maxLoopGap`))||0};case`Camera`:return{..._,renderType:`Camera`,cameraDataBlock:c||void 0};case`WayPoint`:return{..._,renderType:`WayPoint`,label:v(e,`name`)||void 0};default:return null}}function H(e,t,n,r,i,a,o){let s=i===`TSStatic`?v(t,`shapeName`):v(n,`shapeFile`),c=i===`Turret`?`Turret`:i===`Item`?`Item`:i===`TSStatic`?`TSStatic`:`StaticShape`,l={...e,renderType:`Shape`,shapeName:s,shapeType:c,dataBlock:o||void 0,teamId:a};if(i===`Item`&&(l.rotate=R(v(t,`rotate`)??v(n,`rotate`))),i===`Turret`){let e=v(t,`initialBarrel`);e&&(l.barrelShapeName=v(L(r,e),`shapeFile`))}return l}function U(e,t,n,r){let i=v(n,`color`),a=i?z(i):[1,1,1],o=parseFloat(v(n,`baseTranslucency`))||1,s=parseInt(v(n,`numFrames`),10)||1,c=parseFloat(v(n,`framesPerSec`))||1,l=parseFloat(v(n,`scrollSpeed`))||0,u=parseFloat(v(n,`umapping`))||1,d=parseFloat(v(n,`vmapping`))||1,f=[];for(let e=0;e{let t=(0,D.default)(e,{nocase:!0});return a().filter(e=>t(e)).map(e=>{let[,t]=c(e);return t})},isFile:e=>s()[o(e)]!=null};function X(e){let t=(0,O.c)(2),n;return t[0]===e?n=t[1]:(n={queryKey:[`parsedMission`,e],queryFn:()=>E(e)},t[0]=e,t[1]=n),i(n)}function Z(e,t,n){let r=(0,O.c)(6),i;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={ready:!1,runtime:void 0,progress:0},r[0]=i):i=r[0];let[a,o]=(0,j.useState)(i),s,c;return r[1]!==e||r[2]!==t||r[3]!==n?(s=()=>{if(!n)return;let r=new AbortController,i=!1,a=null,s=x(),c=()=>{o(e=>({...e,progress:s.progress}))};s.on(`update`,c);let{runtime:l,ready:u}=y({missionName:e,missionType:t,runtimeOptions:{loadScript:q,fileSystem:Y,cache:J,signal:r.signal,progress:s,ignoreScripts:I}});return u.then(()=>{if(i||r.signal.aborted)return;C.getState().setRuntime(l);let n=l.getObjectByName(`MissionGroup`);if(n){let r=G(n,l,t);w.getState().setAllEntities(r),w.getState().setMissionInfo({missionName:e,missionType:t??void 0})}o({ready:!0,runtime:l,progress:1})}).catch($),a=l.subscribeRuntimeEvents(Q),C.getState().setRuntime(l),()=>{i=!0,s.off(`update`,c),r.abort(),a?.(),C.getState().clearRuntime(),w.getState().clearEntities(),l.destroy()}},c=[e,t,n],r[1]=e,r[2]=t,r[3]=n,r[4]=s,r[5]=c):(s=r[4],c=r[5]),(0,j.useEffect)(s,c),a}function Q(e){e.type===`batch.flushed`&&C.getState().applyRuntimeBatch(e.events,{tick:e.tick})}function $(e){e instanceof Error&&e.name===`AbortError`||K.error(`Mission runtime failed to become ready: %o`,e)}var ee=(0,j.memo)(function(e){let t=(0,O.c)(13),{name:n,missionType:r,onLoadingChange:i}=e,{data:a}=X(n),{ready:o,runtime:s,progress:c}=Z(n,r,a),l=!a||!o||!s,u;t[0]!==r||t[1]!==a?(u={metadata:a,missionType:r},t[0]=r,t[1]=a,t[2]=u):u=t[2];let d=u,f,p;if(t[3]!==l||t[4]!==i||t[5]!==c?(f=()=>{i?.(l,c)},p=[l,c,i],t[3]=l,t[4]=i,t[5]=c,t[6]=f,t[7]=p):(f=t[6],p=t[7]),(0,j.useEffect)(f,p),l)return null;let m;t[8]===s?m=t[9]:(m=(0,M.jsx)(P,{runtime:s}),t[8]=s,t[9]=m);let h;return t[10]!==d||t[11]!==m?(h=(0,M.jsx)(F,{value:d,children:m}),t[10]=d,t[11]=m,t[12]=h):h=t[12],h});export{ee as Mission};