Explorar el Código

Created CTRLBanksStore and removed test code from main.js

dev-bank
Bryan Miller hace 5 años
padre
commit
768cd68144
Se han modificado 2 ficheros con 128 adiciones y 45 borrados
  1. +123
    -0
      app/js/ctrls/CTRLBanksStore.js
  2. +5
    -45
      app/js/main.js

+ 123
- 0
app/js/ctrls/CTRLBanksStore.js Ver fichero

@@ -0,0 +1,123 @@
import GlobalEvents from "/app/js/common/EventCaller.js";
import Utils from "/app/js/common/Utils.js";
import NESBank from "/app/js/models/NESBank.js";



var Banks = {};
var CurrentBank = "";



class CTRLBanksStore{
constructor(){
var HANDLE_ChangeSurface = function(surf){
if (!(surf instanceof NESBank)){
// TODO: Unselect any current bank element.
CurrentBankIndex = "";
} else {
if (Banks.length <= 0 || (CurrentBank !== "" && Banks[CurrentBank].bank !== surf)){
console.log("WARNING: Bank object being set outside of Bank Store.");
}
}
}
GlobalEvents.listen("change_surface", HANDLE_ChangeSurface);
}

get length(){
return Object.keys(Banks).length;
}

get json(){
var data = [];
Object.keys(Banks).forEach((key) => {
if (Banks.hasOwnProperty(key)){
data.push({name:key, data:Banks[key].bank.base64});
}
});
return JSON.stringify(data);
}

initialize(){
if (this.length <= 0){
this.createBank("Bank");
}
return this;
}


createBank(name, bbase64){
if (!(name in Banks)){
var bank = new NESBank();
if (typeof(bbase64) === "string"){
try {
bank.base64 = bbase64;
} catch (e) {
console.log("Failed to create Bank. " + e.toString());
bank = null;
}
}
if (bank !== null){
var el = null; // This will be the element associated with this Bank. For now, it's a place holder.
Banks[name] = {bank:bank, el:el};
//Banks.push([name, bank, el]);

if (this.length <= 1){
GlobalEvents.emit("change_surface", bank);
}
}
}
return this;
}


removeBank(name){
if (name in Banks){
if (name === CurrentBank){
var keys = Object.keys(Banks);
if (keys.length > 1){
CurrentBank = (keys[0] !== name) ? keys[0] : keys[1];
} else {
CurrentBank = "";
}
}
// TODO: Remove Banks[name].el from the DOM.
delete Banks[name];
if (CurrentBank !== ""){
// TODO: Activate new Bank.
}
}
return this;
}

renameBank(name, newname){
if ((name in Banks) && !(newname in Banks)){
Banks[newname] = Banks[name];
delete Banks[name];
// TODO: Change the name in Banks[newname].el
}
return this;
}

activateBank(name){
if (CurrentBank !== name && (name in Banks)){
// TODO: Switch the active element object.
CurrentBank = name;
GlobalEvents.emit("change_surface", Banks[CurrentBank].bank);
}
return this;
}

clear(){
// TODO: Loop through all keys and remove the elements from the DOM.
Banks = {};
CurrentBank = "";
}
}


const instance = new CTRLBanksStore();
export default instance;




+ 5
- 45
app/js/main.js Ver fichero

@@ -6,10 +6,9 @@ import Tabs from "/app/js/ui/Tabs.js";
import CTRLPalettes from "/app/js/ctrls/CTRLPalettes.js";
import CTRLPainter from "/app/js/ctrls/CTRLPainter.js";
import CTRLPalettesStore from "/app/js/ctrls/CTRLPalettesStore.js";
import NESPalette from "/app/js/models/NESPalette.js";
import NESTile from "/app/js/models/NESTile.js";
import NESBank from "/app/js/models/NESBank.js";
import CTRLBanksStore from "/app/js/ctrls/CTRLBanksStore.js";

import NESPalette from "/app/js/models/NESPalette.js";

function TitlePainter(pal){
var elist = document.querySelectorAll(".color-NES-random");
@@ -25,55 +24,16 @@ function TitlePainter(pal){
}

function initialize(DOC){
// UI and View only controllers
TitlePainter(NESPalette.SystemColor);
EmitterElements.initialize();
Tabs.initialize();
//GlobalEvents.listen("emitted-event", handle_emitted);

//var nespainter = new NESPainter(DOC.getElementById("painter"));
// Controllers explicitly interface model data to view.
CTRLPainter.initialize();
CTRLPalettesStore.initialize();

//console.log(palette.to_asm());
//GlobalEvents.emit("set_app_palette", palette);
// TODO: Drop all of this below test code... or put it in a dedicated test app.
var TileA = new NESTile();
var TileB = new NESTile();
TileB.setPixelIndex(0,0,2);
var TileC = TileB.clone().flip(1);
var TileD = TileB.clone().flip(3);
//var TileC = TileB.clone();
//TileC.flip(1);

for (var i=0; i < 64; i++){
console.log(TileC.pixels[i]);
}

console.log("TileA does NOT match TileB: ", TileA.isEq(TileB) == -1);
console.log("TileA does NOT match TileC: ", TileA.isEq(TileC) == -1);
console.log("TileB DOES match TileC with Flag 1: ", TileB.isEq(TileC) == 1);
console.log("TileB DOES match TileD with Flag 3: ", TileB.isEq(TileD) == 3);

console.log(TileC);
console.log(TileC.dataArray);
console.log(TileC.pixels[7]);

var bnk = new NESBank();
bnk.lp[1] = TileB;
bnk.lp[0] = TileC;
bnk.rp[16] = TileD;
console.log(bnk.chr);
console.log("Bank color at coordinates (8,0): ", bnk.getColor(8,0));
console.log("Bank color at coordinates (7,0): ", bnk.getColor(7,0));
console.log("Bank color at coordinates (135, 15): ", bnk.getColor(135,15));

bnk.access_mode = 0;
GlobalEvents.emit("change_surface", bnk);
CTRLBanksStore.initialize();
}


//console.log(document.getElementByID("painter"));
initialize(document);

Cargando…
Cancelar
Guardar