|
|
- function Game(activity,stage,xocolor,Fraction,doc,abacuspalette,custompalette,datastore){
- this.palette = null;
- this.custompalette = null;
- this.abacus = null;
- //rods top bottom factor base
- this.customarr = [15,1,4,5,10];
- this.abacustype = null;
-
- //Custom Abacus
- this.updateCustom = function(rods,top,bottom,factor,base){
- this.customarr[0] = rods;
- this.customarr[1] = top;
- this.customarr[2] = bottom;
- this.customarr[3] = factor;
- this.customarr[4] = base;
- }
-
- this.Custom = function(stage,xocolor){
- this.abacustype = 10;
- var c = this.customarr;
- this.abacus = new StandardAbacus(stage,c[0],c[1],c[3],c[2],c[4],xocolor);
- this.abacus.init();
- }
-
- //Inits for other abaci
- this.Decimal = function(stage,xocolor){
- this.abacustype = 0;
- this.abacus = new OneColumnAbacus(stage,15,10,10,xocolor);
- this.abacus.init();
- }
- this.Soroban = function(stage,xocolor){
- this.abacustype = 1;
- this.abacus = new StandardAbacus(stage,15,1,5,4,10,xocolor,8);
- this.abacus.init();
- }
- this.Suanpan = function(stage,xocolor){
- this.abacustype = 2;
- this.abacus = new StandardAbacus(stage,15,2,5,5,10,xocolor);
- this.abacus.init();
- }
- this.Nepohualtzintzin = function(stage,xocolor){
- this.abacustype = 3;
- this.abacus = new StandardAbacus(stage,13,3,5,4,20,xocolor);
- this.abacus.init();
- }
- this.Hexadecimal = function(stage,xocolor){
- this.abacustype = 4;
- this.abacus = new StandardAbacus(stage,15,1,8,7,16,xocolor);
- this.abacus.init();
- }
- this.Binary = function(stage,xocolor){
- this.abacustype = 5;
- this.abacus = new OneColumnAbacus(stage,15,1,2,xocolor);
- this.abacus.init();
- }
- this.Schety = function(stage,xocolor){
- this.abacustype = 6;
- this.abacus = new OneColumnAbacus(stage,15,10,10,xocolor,null,true);
- this.abacus.init();
- }
- this.Fractions = function(stage,xocolor){
- this.abacustype = 7;
- this.abacus = new OneColumnAbacus(stage,15,12,10,xocolor,null,false,true);
- this.abacus.init();
- }
- this.Caacupé = function(stage,xocolor){
- this.abacustype = 8;
- this.abacus = new OneColumnAbacus(stage,15,12,10,xocolor,null,false,false,true);
- this.abacus.init();
- }
- this.Rods = function(stage,xocolor){
- this.abacustype = 9;
- this.abacus = new OneColumnAbacus(stage,10,12,10,xocolor,null,false,false,false,true);
- this.abacus.init();
- }
-
- //Copy
- this.copy = function(){
- var text = "";
- console.log(this.abacus);
- if (this.abacus!=null){
- if (this.abacus.answertext!=null){
- if (this.abacus.answertext.text.length>0){
- text = this.abacus.answertext.text;
- if (text.indexOf('=') > -1){
- text = text.substring(text.indexOf('=')+2);
- }
- }
- }
- }
- function copyToClipboard(t) {
- var copyText = document.getElementById('copytext');
- copyText.value = t;
- copyText.select();
- try {
- document.execCommand('copy');
- } catch (err) {
- window.prompt("Copy to clipboard: ", t);
- }
- }
- copyToClipboard(text);
- }
-
- //Resize/clear
-
- this.resize = function(){
- var d = this.makeData();
- stage.removeAllChildren();
- this.customarr = d.customarr;
- this.initAbacus(d.mode);
- this.abacus.restore(d.abacusinuse);
- this.abacus.restoreTri(d.trix);
- }
-
- this.clear = function(){
- stage.removeAllChildren();
- this.initAbacus(this.abacustype);
- }
-
- //Save related things
-
- this.makeData = function(){
- var arr = {};
- arr.mode = this.abacustype;
- arr.customarr = this.customarr;
- arr.abacusinuse = this.abacus.save();
- arr.trix = this.abacus.saveTri();
- console.log("arr");
- console.log(arr);
- return arr;
- }
-
- this.stop = function(restart){
- if (restart === undefined) restart=false;
- var arr = this.makeData();
- console.log(arr);
- var js = JSON.stringify(arr);
- activity.getDatastoreObject().setDataAsText(js);
- if (restart == true){
- activity.getDatastoreObject().save(function(){
- location.reload();
- });
- } else {
- activity.getDatastoreObject().save(function(){
- activity.close();
- });
- }
- }
-
- //Load related things
-
- this.init = function(){
- console.log("init");
- console.log(activity.getDatastoreObject());
- activity.getDatastoreObject().getMetadata(this.init_canaccessdatastore.bind(this));
- }
-
- this.init_canaccessdatastore = function(error,mdata){
- console.log("datastore check");
- var d = new Date().getTime();
- if (Math.abs(d-mdata.creation_time)<2000){
- console.log("Time too short");
- this.initActivity(false,[]);
- } else {
- activity.getDatastoreObject().loadAsText(this.init_getdatastore.bind(this));
- }
- }
-
- this.init_getdatastore = function(error,metadata,data){
- if (error==null&&data!=null){
- data = JSON.parse(data);
- this.initActivity(true,data);
- } else {
- this.initActivity(false,[]);
- }
- }
-
- //Init related things
- this.initAbacus = function(abacus){
- stage.removeAllChildren();
- switch(abacus) {
- case 0:
- this.Decimal(stage,xocolor);
- break;
- case 1:
- this.Soroban(stage,xocolor);
- break;
- case 2:
- this.Suanpan(stage,xocolor);
- break;
- case 3:
- this.Nepohualtzintzin(stage,xocolor);
- break;
- case 4:
- this.Hexadecimal(stage,xocolor);
- break;
- case 5:
- this.Binary(stage,xocolor);
- break;
- case 6:
- this.Schety(stage,xocolor);
- break;
- case 7:
- this.Fractions(stage,xocolor);
- break;
- case 8:
- this.Caacupé(stage,xocolor);
- break;
- case 9:
- this.Rods(stage,xocolor);
- break;
- case 10:
- this.Custom(stage,xocolor);
- break;
- }
- }
-
- this.initActivity = function(isdata,data){
- console.log(isdata);
- console.log(data);
- window.Fraction = Fraction;
- this.palette = new abacuspalette.AbacusPalette(this,doc.getElementById('abacus-button'),undefined);
- this.custompalette = new custompalette.CustomPalette(this,doc.getElementById('settings-button'),undefined);
- //var a = new StandardAbacus(stage,15,2,5,5,10,xocolor);
- if (isdata){
- this.customarr = data.customarr;
- this.initAbacus(data.mode);
- this.abacus.restore(data.abacusinuse);
- this.abacus.restoreTri(data.trix);
- } else {
- this.Suanpan(stage,xocolor);
- }
- this.palette.setUsed();
- }
- }
|