22import Layout from ' ~/layouts/layout.astro' ;
33---
44<script >
5- import { bsvirt_to_bsfile, bsvirt_to_fsvirt, fsvirt_to_fsfile } from '~/lib/addressconverter';
5+ import { bsvirt_to_bsfile, bsvirt_to_fsvirt, bsvirt_to_isvirt, fsvirt_to_fsfile, isvirt_to_isfile } from '~/lib/addressconverter';
66
77 let fsvirt: number | null;
88 let bsvirt: number | null;
9+ let isvirt: number | null;
910 let fsfile: number | null;
1011 let bsfile: number | null;
12+ let isfile: number | null;
1113
1214 const setAddress = (input: HTMLInputElement, address: number | null): number | null => {
1315 if (address !== null) {
@@ -18,48 +20,71 @@ import Layout from '~/layouts/layout.astro';
1820
1921 const fsvirt_input = document.getElementById('fsvirt_input') as HTMLInputElement;
2022 const bsvirt_input = document.getElementById('bsvirt_input') as HTMLInputElement;
23+ const isvirt_input = document.getElementById('isvirt_input') as HTMLInputElement;
2124 const fsfile_input = document.getElementById('fsfile_input') as HTMLInputElement;
2225 const bsfile_input = document.getElementById('bsfile_input') as HTMLInputElement;
26+ const isfile_input = document.getElementById('isfile_input') as HTMLInputElement;
2327
2428 const inputHandler = (e: Event) => {
2529 const target = e.target as HTMLInputElement;
2630 fsvirt_input.classList.remove('is-valid', 'is-invalid');
2731 bsvirt_input.classList.remove('is-valid', 'is-invalid');
32+ isvirt_input.classList.remove('is-valid', 'is-invalid');
2833 fsfile_input.classList.remove('is-valid', 'is-invalid');
2934 bsfile_input.classList.remove('is-valid', 'is-invalid');
35+ isfile_input.classList.remove('is-valid', 'is-invalid');
3036 let address = parseInt(target.value, 16);
3137
3238 switch (target) {
3339 case fsvirt_input:
3440 fsvirt = address;
3541 bsvirt = setAddress(bsvirt_input, bsvirt_to_fsvirt.inverseMap(fsvirt));
36- if (bsvirt !== null) {
42+ isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
43+ if (bsvirt !== null || isvirt !== null) {
3744 target.classList.add('is-valid');
3845 setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
3946 setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
47+ setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
4048 } else {
4149 target.classList.add('is-invalid');
4250 }
4351 break;
4452 case bsvirt_input:
4553 bsvirt = address;
4654 fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
47- if (fsvirt !== null) {
55+ isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
56+ if (fsvirt !== null || isvirt !== null) {
4857 target.classList.add('is-valid');
4958 setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
5059 setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
60+ setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
5161 } else {
5262 target.classList.add('is-invalid');
5363 }
5464 break;
65+ case isvirt_input:
66+ isvirt = address;
67+ bsvirt = setAddress(bsvirt_input, bsvirt_to_isvirt.inverseMap(isvirt));
68+ fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
69+ if (bsvirt !== null || fsvirt !== null) {
70+ target.classList.add('is-valid');
71+ setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
72+ setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
73+ setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
74+ } else {
75+ target.classList.add('is-invalid');
76+ }
77+ break;
5578 case fsfile_input:
5679 fsfile = address;
5780 fsvirt = setAddress(fsvirt_input, fsvirt_to_fsfile.inverseMap(fsfile));
5881 if (fsvirt !== null) {
5982 target.classList.add('is-valid');
6083 bsvirt = setAddress(bsvirt_input, bsvirt_to_fsvirt.inverseMap(fsvirt));
61- if (bsvirt !== null) {
84+ isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt))
85+ if (bsvirt !== null || isvirt !== null) {
6286 setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
87+ setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
6388 }
6489 } else {
6590 target.classList.add('is-invalid');
@@ -71,7 +96,24 @@ import Layout from '~/layouts/layout.astro';
7196 if (bsvirt !== null) {
7297 target.classList.add('is-valid');
7398 fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
74- if (fsvirt !== null) {
99+ isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
100+ if (fsvirt !== null || isvirt !== null) {
101+ setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
102+ setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
103+ }
104+ } else {
105+ target.classList.add('is-invalid');
106+ }
107+ break;
108+ case isfile_input:
109+ isfile = address;
110+ isvirt = setAddress(isvirt_input, isvirt_to_isfile.inverseMap(isfile));
111+ if (isvirt !== null) {
112+ target.classList.add('is-valid');
113+ bsvirt = setAddress(bsvirt_input, bsvirt_to_isvirt.inverseMap(isvirt));
114+ fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
115+ if (bsvirt !== null || fsvirt !== null) {
116+ setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
75117 setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
76118 }
77119 } else {
@@ -84,15 +126,17 @@ import Layout from '~/layouts/layout.astro';
84126 // Add event listeners to input elements
85127 fsvirt_input.addEventListener('input', inputHandler);
86128 bsvirt_input.addEventListener('input', inputHandler);
129+ isvirt_input.addEventListener("input", inputHandler);
87130 fsfile_input.addEventListener('input', inputHandler);
88131 bsfile_input.addEventListener('input', inputHandler);
132+ isfile_input.addEventListener('input', inputHandler);
89133</script >
90134<Layout title =" Address Calculator" >
91135 <section class =" jumbotron text-center" >
92136 <div class =" w3-card-4 w3-center w3-display-topmiddle w3-margin-bottom-16" >
93137 <h1 class =" w3-container w3-blue w3-padding-16" >Fortune Street Address Calculator</h1 >
94138 <div class =" container text-center" >
95- <div class =" row row-cols-2 g-3" >
139+ <div class =" row row-cols-3 g-3" >
96140 <div class =" col" >
97141 <label class =" form-label" >Fortune Street Virtual</label >
98142 <input type =" text" id =" fsvirt_input" placeholder =" 80004000" class =" form-control" />
@@ -101,6 +145,10 @@ import Layout from '~/layouts/layout.astro';
101145 <label class =" form-label" >Boom Street Virtual</label >
102146 <input type =" text" id =" bsvirt_input" placeholder =" 80004000" class =" form-control" />
103147 </div >
148+ <div class =" col" >
149+ <label class =" form-label" >Itadaki Street Wii Virtual</label >
150+ <input type =" text" id =" isvirt_input" placeholder =" 80004000" class =" form-control" />
151+ </div >
104152 <div class =" col" >
105153 <label class =" form-label" >Fortune Street File</label >
106154 <input type =" text" id =" fsfile_input" placeholder =" 100" class =" form-control" />
@@ -109,6 +157,10 @@ import Layout from '~/layouts/layout.astro';
109157 <label class =" form-label" >Boom Street File</label >
110158 <input type =" text" id =" bsfile_input" placeholder =" 100" class =" form-control" />
111159 </div >
160+ <div class =" col" >
161+ <label class =" form-label" >Itadaki Street Wii File</label >
162+ <input type =" text" id =" isfile_input" placeholder =" 100" class =" form-control" />
163+ </div >
112164 </div >
113165 </div >
114166 </div >
0 commit comments