11import { html , LitElement } from 'lit' ;
22import { customElement , state } from 'lit/decorators.js' ;
3- import { UpdateController } from '../../controllers/UpdateController' ;
3+ import {
4+ UpdateController ,
5+ UpdateControllerState ,
6+ } from '../../controllers/UpdateController' ;
47import { createCloseDevtoolsEvent } from '../../events/close-devtools' ;
58import devtoolsCss from './devtools.scss' ;
69import { withTheme } from '../../styles/commons' ;
710import {
11+ MAX_CART_SIZE ,
812 SYSTEM_HIDE_GAMEPAD_OVERLAY ,
913 SYSTEM_PRESERVE_FRAMEBUFFER ,
1014} from '../../constants' ;
1115import { classMap } from 'lit/directives/class-map.js' ;
1216import { repeat } from 'lit/directives/repeat.js' ;
1317import { bitmask , identity } from '../../utils/functions' ;
14- import { MemoryView } from '../../models/MemoryView' ;
1518
1619export const wasm4DevtoolsTagName = 'wasm4-devtools' as const ;
1720
1821const tabs = [ 'general' , 'controls' , 'mem' , 'info' ] as const ;
1922
23+ const colorMasks = [ bitmask ( 3 ) , bitmask ( 7 , 3 ) , bitmask ( 11 , 7 ) , bitmask ( 15 , 11 ) ] ;
24+
2025/**
2126 * ### Programmatic usage
2227 * @example
@@ -62,14 +67,12 @@ export class Wasm4Devtools extends LitElement {
6267 this . _fixedPosition = this . _fixedPosition === 'left' ? 'right' : 'left' ;
6368 } ;
6469
65- private _renderGeneralView = ( memoryView : MemoryView , fps : number ) => {
70+ private _renderGeneralView = ( {
71+ memoryView,
72+ fps,
73+ wasmBufferByteLen,
74+ } : UpdateControllerState ) => {
6675 const drawColors = memoryView . drawColors ?? 0 ;
67- const colorMasks = [
68- bitmask ( 3 ) ,
69- bitmask ( 7 , 3 ) ,
70- bitmask ( 11 , 7 ) ,
71- bitmask ( 15 , 11 ) ,
72- ] ;
7376
7477 return html `< article >
7578 < wasm4-palette
@@ -107,6 +110,16 @@ export class Wasm4Devtools extends LitElement {
107110 < h4 > fps</ h4 >
108111 < span class ="info-box text-primary "> ${ fps } </ span >
109112 </ section >
113+ < section class ="cart-size-wrapper ">
114+ < h4 > cartridge size ${ wasmBufferByteLen > MAX_CART_SIZE ? `⚠️` : '' } </ h4 >
115+ < div class ="size-box ">
116+ current
117+ < span class ="info-box text-primary "> ${ wasmBufferByteLen } B</ span >
118+ </ div >
119+ < div class ="size-box ">
120+ limit < span class ="info-box text-primary "> ${ MAX_CART_SIZE } B</ span >
121+ </ div >
122+ </ section >
110123 < section class ="flags-section ">
111124 < h4 > system flags</ h4 >
112125 < div class ="flags-wrapper ">
@@ -131,7 +144,7 @@ export class Wasm4Devtools extends LitElement {
131144 return html ` < wasm4-info-view > </ wasm4-info-view > ` ;
132145 } ;
133146
134- private _renderControls = ( memoryView : MemoryView , _ : number ) => {
147+ private _renderControls = ( { memoryView } : UpdateControllerState ) => {
135148 return html `< wasm4-controls-view
136149 .mouseButtons =${ memoryView . mouseBtnByte }
137150 .mouseX =${ memoryView . pointerPos . x }
@@ -140,13 +153,13 @@ export class Wasm4Devtools extends LitElement {
140153 > </ wasm4-controls-view > ` ;
141154 } ;
142155
143- private _renderMemory = ( memoryView : MemoryView , _ : number ) => {
156+ private _renderMemory = ( { memoryView } : UpdateControllerState ) => {
144157 return html `< wasm4-memory-view
145158 .memoryView =${ memoryView }
146159 > </ wasm4-memory-view > ` ;
147160 } ;
148161
149- private _renderTab = ( memoryView : MemoryView , fps : number ) => {
162+ private _renderTab = ( updateControllerState : UpdateControllerState ) => {
150163 let renderTab ;
151164 switch ( this . _activeTab ) {
152165 case 'controls' :
@@ -162,16 +175,14 @@ export class Wasm4Devtools extends LitElement {
162175 renderTab = this . _renderGeneralView ;
163176 }
164177
165- return renderTab . call ( this , memoryView , fps ) ;
178+ return renderTab . call ( this , updateControllerState ) ;
166179 } ;
167180
168181 render ( ) {
169182 if ( ! this . updateController . state ) {
170183 return null ;
171184 }
172185
173- const { memoryView, fps } = this . updateController . state ;
174-
175186 const fixedPosBtnLabel = `move ${
176187 this . _fixedPosition === 'left' ? 'right' : 'left'
177188 } `;
@@ -260,7 +271,7 @@ export class Wasm4Devtools extends LitElement {
260271 </ li > `
261272 ) }
262273 </ ul >
263- ${ this . _renderTab ( memoryView , fps ) }
274+ ${ this . _renderTab ( this . updateController . state ) }
264275 </ div >
265276 </ div >
266277 </ div > ` ;
0 commit comments