not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

235 lines
5.9 KiB

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();
}
}