1import{a as i,b as C,c as k,d as g,n,o as l,p as r}from"./chunk-I4DQX4IC.js";import{a as s,b as a}from"./chunk-D7YYRZS5.js";var o="ms3d_missions_daily",c="ms3d_missions_weekly",S="ms3d_classic_missions_daily",d="ms3d_classic_missions_weekly",y="ms3d_classic_missions_lifetime",m=C,u=k,p=g,h="ms3d_player_currency",v=class{saveDailyState(e){try{let t=a(s({},e),{sessionStats:this.serialiseStats(e.sessionStats)});l(o,JSON.stringify(t)),i.onMissionsSaved("daily",t)}catch(t){console.warn("[MissionStorage] Failed to save daily state:",t)}}loadDailyState(){try{let e=n(o);if(!e)return null;let t=JSON.parse(e);return t.sessionStats=this.deserialiseStats(t.sessionStats),t}catch{return null}}saveCurrency(e){try{l(h,JSON.stringify(e)),i.onCurrencySaved(e)}catch(t){console.warn("[MissionStorage] Failed to save currency:",t)}}loadCurrency(){try{let e=n(h);if(e)return JSON.parse(e)}catch{}return{xp:0,coins:0,gems:0}}saveCampaignDailyState(e){try{let t=a(s({},e),{dayStats:this.serialiseCampaignStats(e.dayStats)});l(m,JSON.stringify(t)),i.onMissionsSaved("campaignDaily",t)}catch(t){console.warn("[MissionStorage] Failed to save campaign daily state:",t)}}loadCampaignDailyState(){try{let e=n(m);if(!e)return null;let t=JSON.parse(e);return t.dayStats=this.deserialiseCampaignStats(t.dayStats),t}catch{return null}}saveCampaignWeeklyState(e){try{let t=a(s({},e),{weekStats:this.serialiseCampaignStats(e.weekStats),dailyCompleteDates:e.dailyCompleteDates instanceof Set?[...e.dailyCompleteDates]:e.dailyCompleteDates});l(u,JSON.stringify(t)),i.onMissionsSaved("campaignWeekly",t)}catch(t){console.warn("[MissionStorage] Failed to save campaign weekly state:",t)}}loadCampaignWeeklyState(){try{let e=n(u);if(!e)return null;let t=JSON.parse(e);return t.weekStats=this.deserialiseCampaignStats(t.weekStats),t.dailyCompleteDates=new Set(t.dailyCompleteDates||[]),t}catch{return null}}saveCampaignLifetimeState(e){try{let t=a(s({},e),{lifetimeStats:this.serialiseCampaignStats(e.lifetimeStats)});l(p,JSON.stringify(t)),i.onMissionsSaved("campaignLifetime",t)}catch(t){console.warn("[MissionStorage] Failed to save campaign lifetime state:",t)}}loadCampaignLifetimeState(){try{let e=n(p);if(!e)return null;let t=JSON.parse(e);return t.lifetimeStats=this.deserialiseCampaignStats(t.lifetimeStats),t}catch{return null}}clearAll(){r(o),r(c),r(S),r(d),r(y),r(m),r(u),r(p),r(h)}saveWeeklyState(e){try{let t=a(s({},e),{weekStats:this.serialiseWeekStats(e.weekStats)});l(c,JSON.stringify(t)),i.onMissionsSaved("weekly",t)}catch(t){console.warn("[MissionStorage] Failed to save weekly state:",t)}}loadWeeklyState(){try{let e=n(c);if(!e)return null;let t=JSON.parse(e);return t.weekStats=this.deserialiseWeekStats(t.weekStats),t}catch{return null}}saveClassicDailyState(e){try{l(S,JSON.stringify(e)),i.onMissionsSaved("classicDaily",e)}catch(t){console.warn("[MissionStorage] Failed to save classic daily state:",t)}}loadClassicDailyState(){try{let e=n(S);return e?JSON.parse(e):null}catch{return null}}saveClassicWeeklyState(e){try{l(d,JSON.stringify(e)),i.onMissionsSaved("classicWeekly",e)}catch(t){console.warn("[MissionStorage] Failed to save classic weekly state:",t)}}loadClassicWeeklyState(){try{let e=n(d);return e?JSON.parse(e):null}catch{return null}}saveClassicLifetimeState(e){try{l(y,JSON.stringify(e)),i.onMissionsSaved("classicLifetime",e)}catch(t){console.warn("[MissionStorage] Failed to save classic lifetime state:",t)}}loadClassicLifetimeState(){try{let e=n(y);return e?JSON.parse(e):null}catch{return null}}serialiseStats(e){return a(s({},e),{chunksVisitedToday:e.chunksVisitedToday instanceof Set?[...e.chunksVisitedToday]:e.chunksVisitedToday,chunksWithReveals:e.chunksWithReveals instanceof Set?[...e.chunksWithReveals]:e.chunksWithReveals})}deserialiseStats(e){return a(s({},e),{chunksVisitedToday:new Set(e.chunksVisitedToday||[]),chunksWithReveals:new Set(e.chunksWithReveals||[])})}serialiseWeekStats(e){return a(s({},e),{chunksVisitedWeek:e.chunksVisitedWeek instanceof Set?[...e.chunksVisitedWeek]:e.chunksVisitedWeek,dailyCompleteDates:e.dailyCompleteDates instanceof Set?[...e.dailyCompleteDates]:e.dailyCompleteDates})}deserialiseWeekStats(e){return a(s({},e),{chunksVisitedWeek:new Set(e.chunksVisitedWeek||[]),dailyCompleteDates:new Set(e.dailyCompleteDates||[])})}serialiseCampaignStats(e){return a(s({}
1,e),{uniqueChallengesBeaten:e.uniqueChallengesBeaten instanceof Set?[...e.uniqueChallengesBeaten]:e.uniqueChallengesBeaten,chaptersCompleted:e.chaptersCompleted instanceof Set?[...e.chaptersCompleted]:e.chaptersCompleted,levelsCompleted:e.levelsCompleted instanceof Set?[...e.levelsCompleted]:e.levelsCompleted,threeStarLevels:e.threeStarLevels instanceof Set?[...e.threeStarLevels]:e.threeStarLevels})}deserialiseCampaignStats(e){return a(s({},e),{uniqueChallengesBeaten:new Set(e.uniqueChallengesBeaten||[]),chaptersCompleted:new Set(e.chaptersCompleted||[]),levelsCompleted:new Set(e.levelsCompleted||[]),threeStarLevels:new Set(e.threeStarLevels||[])})}};export{v as a};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.