comparison mpui.js @ 212:b3579297e04e

Implement rest of the stuff needed for selecting external palettes in the launcher and actual Multipaint code.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 03 Sep 2018 14:22:20 +0300
parents 13aed87e472a
children ddb36f1c515f
comparison
equal deleted inserted replaced
211:6d866e284dd2 212:b3579297e04e
1 /* 1 /*
2 * Multipaint.JS - Javascript launcher 2 * Multipaint.JS - Javascript launcher
3 * (C) Copyright 2018 Matti 'ccr' Hämäläinen <ccr@tnsp.org> 3 * (C) Copyright 2018 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
4 */ 4 */
5 var mpMachine = 0, mpUIScale, mpUIForcedWidth, mpUIForcedHeight; 5 var mpMachine = 0, mpUIScale,
6 var mpURL; 6 mpUIForcedWidth, mpUIForcedHeight, mpURL,
7 mpUIPalette;
7 8
8 // Machine ID, Name/desc, Alt.palette array index (-1 if none) 9 // Machine ID, Name/desc, Alt.palette array index (-1 if none)
9 var mpMachines = 10 var mpMachines =
10 [ 11 [
11 [ 0, "C64 hires" , 0 ], 12 [ 0, "C64 hires" , 0 ],
144 145
145 return vobj; 146 return vobj;
146 } 147 }
147 148
148 149
150 function stCleanFilename(vstr)
151 {
152 return vstr.replace(/[^a-z0-9_\.]/ig, "");
153 }
154
155
149 function mpMachineChanged() 156 function mpMachineChanged()
150 { 157 {
151 var tmp = stGetSelIndex("machineID"); 158 var tmp = stGetSelIndex("machineID");
152 var velem = stGE("paletteID"); 159 var velem = stGE("paletteID");
153 var palID = mpMachines[tmp][2]; 160 var palID = mpMachines[tmp][2];
154 velem.style.display = (palID >= 0) ? "block" : "none"; 161 velem.style.display = (palID >= 0) ? "block" : "none";
155 velem.disabled = true;
156 stClearChildren(velem); 162 stClearChildren(velem);
157 if (palID >= 0) 163 if (palID >= 0)
158 { 164 {
159 var vlist = mpPalettes[palID]; 165 var vlist = mpPalettes[palID];
160 for (var n = 0; n < vlist.length; n++) 166 for (var n = 0; n < vlist.length; n++)
206 mdiv.appendChild(mobj); 212 mdiv.appendChild(mobj);
207 213
208 mobj = stCE("div"); 214 mobj = stCE("div");
209 mdiv.appendChild(mobj); 215 mdiv.appendChild(mobj);
210 mobj.appendChild(stCE("select", "paletteID")); 216 mobj.appendChild(stCE("select", "paletteID"));
211
212 217
213 mdiv = stCE("div", "mdimensions"); 218 mdiv = stCE("div", "mdimensions");
214 mpUI.appendChild(mdiv); 219 mpUI.appendChild(mdiv);
215 220
216 mobj = stCE("p"); 221 mobj = stCE("p");
267 } 272 }
268 else 273 else
269 mpUIForcedWidth = mpUIForcedHeight = 0; 274 mpUIForcedWidth = mpUIForcedHeight = 0;
270 275
271 mpUIScale = stGetSelValue(stGE("scalesID"), -1); 276 mpUIScale = stGetSelValue(stGE("scalesID"), -1);
277 index = stGetSelValue(stGE("paletteID"), -1);
278 if (index >= 0)
279 mpUIPalette = mpPalettes[mpMachine][index];
272 280
273 stClearChildren(mpUI); 281 stClearChildren(mpUI);
274 282
275 // Initialize the canvas etc. 283 // Initialize the canvas etc.
276 var mpCanvas = stGE("mpCanvas"); 284 var mpCanvas = stGE("mpCanvas");
277 mpCanvas.style.display = "block"; 285 mpCanvas.style.display = "block";
278 286
279 window.location.href = mpURL +"?"+ mpMachine.toString() +":"+ mpUIForcedWidth +":"+ mpUIForcedHeight +":"+ mpUIScale; 287 window.location.href = mpURL +"?"+
288 mpMachine.toString() +":"+
289 mpUIForcedWidth +":"+ mpUIForcedHeight +":"+ mpUIScale +":"+ mpUIPalette;
280 290
281 mpRunSketch(mpCanvas); 291 mpRunSketch(mpCanvas);
282 } 292 }
283 293
284 294
303 mpUIForcedWidth = parseInt(sargs[1]); 313 mpUIForcedWidth = parseInt(sargs[1]);
304 mpUIForcedHeight = parseInt(sargs[2]); 314 mpUIForcedHeight = parseInt(sargs[2]);
305 } 315 }
306 if (sargs.length >= 4) 316 if (sargs.length >= 4)
307 mpUIScale = parseInt(sargs[3]); 317 mpUIScale = parseInt(sargs[3]);
318
319 if (sargs.length >= 5)
320 mpUIPalette = stCleanFilename(sargs[4]);
308 } 321 }
309 else 322 else
310 mpURL = slink; 323 mpURL = slink;
311 324
312 // Either run sketch or show the launcher 325 // Either run sketch or show the launcher