1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33178,e=>{e.v({backToTop:"BackToTop-module__UKHSXa__backToTop",show:"BackToTop-module__UKHSXa__show"})},41802,e=>{"use strict";var t=e.i(51221),a=e.i(96141),s=e.i(70245),l=e.i(33178);e.s(["BackToTop",0,()=>{let[e,n]=(0,a.useState)(!1),i=()=>{n(window.scrollY>600)};return(0,a.useEffect)(()=>(n(window.scrollY>600),window.addEventListener("scroll",i),()=>{window.removeEventListener("scroll",i)}),[]),(0,t.jsx)("div",{className:`${l.default.backToTop} ${e?l.default.show:""}`,children:(0,t.jsx)("a",{href:"#topofpage",children:(0,t.jsx)(s.default,{src:"/images/totop.svg",alt:"Back to Top",height:"40",width:"40"})})})}])},90644,e=>{e.v({beatendate:"BeatenGame-module__jjDjIa__beatendate",detailsheet:"BeatenGame-module__jjDjIa__detailsheet",gameImage:"BeatenGame-module__jjDjIa__gameImage",gameTile:"BeatenGame-module__jjDjIa__gameTile",imageContainer:"BeatenGame-module__jjDjIa__imageContainer",name:"BeatenGame-module__jjDjIa__name"})},28066,e=>{e.v({active:"GameGrid-module__DXJQBa__active",grid:"GameGrid-module__DXJQBa__grid",hr:"GameGrid-module__DXJQBa__hr",label:"GameGrid-module__DXJQBa__label",noAnimation:"GameGrid-module__DXJQBa__noAnimation",toggle:"GameGrid-module__DXJQBa__toggle",year:"GameGrid-module__DXJQBa__year"})},71554,e=>{e.v({dropdownItem:"FilterStars-module__WOKIGG__dropdownItem",dropdownMenu:"FilterStars-module__WOKIGG__dropdownMenu",dropdownToggle:"FilterStars-module__WOKIGG__dropdownToggle",filterSelected:"FilterStars-module__WOKIGG__filterSelected",starDropdown:"FilterStars-module__WOKIGG__starDropdown"})},27456,e=>{e.v({filterText:"FilterText-module__d_w2Uq__filterText"})},95833,e=>{e.v({filters:"page-module__7TiwAG__filters",sectionContainer:"page-module__7TiwAG__sectionContainer",sectionHeader:"page-module__7TiwAG__sectionHeader"})},95751,e=>{"use strict";var t=e.i(51221),a=e.i(41802),s=e.i(96141),l=e.i(70245),n=e.i(68923),i=e.i(90644);let d=({game:e,showing:a})=>{let s="/images/placeholder.webp";e?.igdb_id&&(s=`https://images.igdb.com/igdb/image/upload/t_cover_big/${e.igdb_id}.webp`),e?.igdb_id?.includes("local")&&(s=`/images/${e.igdb_id.split(":")[1]}`);let d="1998"!==e.year?e.year:"";return(0,t.jsxs)("div",{className:i.default.gameTile,children:[(0,t.jsxs)("div",{className:i.default.imageContainer,children:[(0,t.jsx)(l.default,{alt:`${e.name} box art`,className:i.default.gameImage,fill:!0,sizes:"(min-width: 720px) 185px, (max-width: 719px) 264px",src:s,tabIndex:a?0:-1}),(0,t.jsxs)("div",{className:i.default.detailsheet,children:[(0,t.jsx)("div",{children:e.stars&&(e=>{let a=Math.floor(e),s=[];for(let e=0;e<a;e++)s.push((0,t.jsx)(l.default,{src:"/images/star.svg",alt:"star",height:"30",width:"30"},e));return s})(e.stars)}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{children:`${e?.test?"Test":"Game"} #${e.num}`}),e.month&&e.year&&(0,t.jsx)("p",{className:i.default.beatendate,children:`beaten ${e.month} ${d}`}),e?.test]}),(0,t.jsx)("div",{children:e.url&&(0,t.jsx)("p",{children:(0,t.jsx)(n.default,{href:e.url,target:"_blank",children:"additional info"})})})]})]}),(0,t.jsx)("p",{className:i.default.name,children:e.name})]})};var r=e.i(28066);let o=({games:e,startOpen:a,type:l})=>{let[n,i]=(0,s.useState)(a??!0),[o,c]=(0,s.useState)(a?"auto":"0px"),[u,m]=(0,s.useState)(!1),h=(0,s.useRef)(null);if((0,s.useEffect)(()=>{n?c(`${h.current?.scrollHeight}px`):c("0px"),u||m(!0)},[n,u]),!e.length)return null;let f="1998"!==e[0].year?e[0].year:"prehistory";return(0,t.jsxs)("div",{children:["beaten"===l&&(0,t.jsxs)("div",{className:`${r.default.year} ${n?r.default.active:""}`,onClick:()=>i(!n),children:[(0,t.jsx)("label",{className:r.default.label,htmlFor:`toggle-${f}`,children:`${f} (${e.length})`}),(0,t.jsx)("hr",{className:r.default.hr}),(0,t.jsx)("input",{checked:n,className:r.default.toggle,id:`toggle-${f}`,readOnly:!0,type:"checkbox"})]}),(0,t.jsx)("div",{className:`${r.default.grid} ${!u?r.default.noAnimation:""}`,ref:h,style:{maxHeight:o},children:e.map(e=>(0,t.jsx)(d,{showing:n,game:e},e.name))})]})};var c=e.i(71554);let u=({selectedRatings:e,handleChange:a})=>
1{let[l,n]=(0,s.useState)(!1),i=(0,s.useRef)(null),d=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!i.current)return;let e=e=>{i.current&&e.target instanceof Node&&!i.current.contains(e.target)&&n(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,s.useEffect)(()=>{let e=i.current;if(!e)return;let t=t=>{t.relatedTarget instanceof Node&&!e.contains(t.relatedTarget)&&n(!1)};return e.addEventListener("focusout",t),()=>e.removeEventListener("focusout",t)},[]),(0,s.useEffect)(()=>{if(!l)return;let e=e=>{"Escape"===e.key&&(n(!1),d.current?.focus())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[l]),(0,t.jsxs)("div",{className:c.default.starDropdown,ref:i,children:[(0,t.jsx)("button",{ref:d,type:"button","aria-haspopup":"listbox","aria-expanded":l,onClick:()=>n(e=>!e),className:`${c.default.dropdownToggle} ${5!==e.length?c.default.filterSelected:""}`,children:"filter by â
"}),l&&(0,t.jsx)("ul",{className:c.default.dropdownMenu,role:"listbox","aria-label":"Star rating filter",children:[1,2,3,4,5].map(s=>{let l=e.includes(s);return(0,t.jsx)("li",{children:(0,t.jsx)("button",{type:"button",role:"checkbox","aria-checked":l,onClick:()=>{let t;(t=e.includes(s))&&1===e.length||a(t?e.filter(e=>e!==s):[...e,s].sort((e,t)=>e-t))},className:c.default.dropdownItem,children:(0,t.jsx)("span",{"aria-hidden":"true",style:{color:l?"goldenrod":"#ccc"},children:"â
".repeat(s)})})},s)})})]})};var m=e.i(27456);let h=({query:e,handleChange:a,reset:s,id:l})=>(0,t.jsxs)("div",{className:m.default.filterText,children:[(0,t.jsxs)("label",{htmlFor:`filter-${l}`,children:["filter by name",(0,t.jsx)("input",{id:`filter-${l}`,onChange:a,placeholder:"filter by name",type:"text",value:e})]}),e&&(0,t.jsx)("button",{onClick:s,type:"button",children:"â"})]});var f=e.i(95833),_=e.i(14283);let g=(e,t,a)=>e?.filter((e,s)=>{e.num=s+1;let l=e.name.toLowerCase().includes(t),n=!e.stars||a?.includes(e.stars);return l&&n});function p(){let[e,l]=(0,s.useState)(""),[n,i]=(0,s.useState)(""),[d,r]=(0,s.useState)(""),[c,m]=(0,s.useState)([1,2,3,4,5]),[p,j]=(0,s.useState)([1,2,3,4,5]),x=g(_.default?.beaten,e,c),v=g(_.default?.openended,n,p),b=g(_.default?.tested,d),w=Object.groupBy(x,({year:e})=>e??"no-year");return(0,t.jsxs)("main",{children:[(0,t.jsx)("h1",{children:"Gaming"}),(0,t.jsxs)("p",{children:["I've been playing computer games since the early '90s and have built a collection of CDs and DVDs from the days when games shipped on physical media. I also maintain a list of all the games I've ",(0,t.jsx)("a",{href:"#beaten",children:"beaten"}),", along with those I've alpha or beta ",(0,t.jsx)("a",{href:"#test",children:"tested"}),". Additionally, I keep track of ",(0,t.jsx)("a",{href:"#open",children:"open-ended"})," games, such as MMOs and MOBAs, which can't be completed in the traditional sense but to which I've still dedicated a fair amount of time. While my primary platform is the PC, I've also finished several titles on mobile and console."]}),(0,t.jsx)("p",{children:"Gaming is how I got into software engineering. At one point I was a co-founder of an indie game studio, and even to this day I develop small web games in my spare time."}),(0,t.jsxs)("div",{className:f.default.sectionContainer,children:[(0,t.jsxs)("div",{className:f.default.sectionHeader,id:"beaten",children:[(0,t.jsx)("h2",{children:"Beaten games"}),(0,t.jsxs)("div",{className:f.default.filters,children:[(0,t.jsx)(u,{selectedRatings:c,handleChange:e=>m(e)}),(0,t.jsx)(h,{query:e,handleChange:e=>l(e.target.value.toLowerCase()),reset:()=>l(""),id:"beaten-name"})]})]}),Object.keys(w).length?Object.keys(w).reverse().map((e,a)=>(0,t.jsx)(o,{games:w[e]?.reverse()??[],startOpen:0===a,type:"beaten"},e)):(0,t.jsx)("p",{children:"No matches found"})]}),(0,t.jsxs)("div",{className:f.default.sectionContainer,children:[(0,t.jsxs)("div",{className:f.default.sectionHeader,id:"open",children:[(0,t.jsx)("h2",{children:"Open-ended games"}),(0,t.jsxs)("div",{className:f.default.filters,children:[(0,t.jsx)(u,{selectedRatings:p,handleChange:e=>j(e)}),(0,t.jsx)(h,{query:n,handleChange:e=>i(e.target.value.toLowerCase()),reset:()=>i(""),id:"openended-name"})]})]}),v.length?(0,t.jsx)(o,{games:v?.reverse(),type:"open"}):(0,t.jsx)("p",{children:"No matches found"})]}),(0,t.jsxs)("div",{className:f.default.sectionContainer,children:[(0,t.jsxs)("div",{className:f.default.sectionHeader,id:"test",children:[(0,t.jsx)("h2",{children:"Tested games"}),(0,t.jsx)("div",{className:f.default.filters,children:(0,t.jsx)(h,{query:d,handleChange:e=>r(e.target.value.toLowerCase()),reset:()=>r(""),id:"tested-name"})})]}),b.length?(0,t.jsx)(o,{games:b?.reverse(),type:"test"}):(0,t.jsx)("p",{children:"No matches found"})]}),(0,t.jsx)(a.BackToTop,{})]})}e.s(["default",()=>p],95751)}]);
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.