|
- 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;
-
-
|