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.
 
 
 
 
 

178 lines
4.7 KiB

function StandardAbacusColumn(x,starty,endy,blockstop,blocksbottom,blocksheight,colcols,blockcols,abacus,value,isupper,aging,schety){
if (aging === undefined) aging=true;
if (schety === undefined) schety=false;
this.elements = [];
this.colWidthScale = 8/33;
this.blockcols = blockcols;
this.value = value;
this.drawColumn = function(){
//grey: A0A0A0, stroke 6B6B6B
var width = this.colWidthScale*abacus.blockWidth;
var height = endy-starty;
//console.log(width);
//console.log(height);
//console.log(x);
//console.log(starty);
var rect = new createjs.Shape();
rect.graphics.beginFill(this.blockcols[0]).drawRect(-1*(width/2),0,width,height);
rect.graphics.beginStroke(this.blockcols[1]);
rect.graphics.setStrokeStyle(width/8);
rect.graphics.moveTo(-1*(width/2),0);
rect.graphics.lineTo(-1*(width/2),height);
rect.graphics.moveTo((width/2),0);
rect.graphics.lineTo((width/2),height);
rect.x = x;
rect.y = starty;
abacus.stage.addChild(rect);
}
this.updateY = function(){
var bmargin = (abacus.verticalMargin*abacus.blockHeight);
var start = starty+(bmargin/2);
var incr = abacus.blockHeight+bmargin;
for (var i = 0; i<blocksheight; i++){
if (this.elements[i]!=null){
this.elements[i].updateIndex(i);
this.elements[i].updateY(start);
if (isupper==true&&this.elements.lastIndexOf(null)<i){
this.elements[i].updateValue(true);
} else if (isupper==false&&this.elements.indexOf(null)>i){
this.elements[i].updateValue(true);
} else {
this.elements[i].updateValue(false);
}
}
start+=incr;
}
//console.log(this.howManyInUse());
abacus.updateTextItems();
}
this.initElements = function(){
this.elements = [];
var middlea;
var middleb;
if (schety==true){
middlea=(blocksheight-blocksbottom)+blocksbottom/2-1;
middleb=(blocksheight-blocksbottom)+(blocksbottom/2);
}
for (var i = 0; i<blocksheight; i++){
if ((i<blockstop)||(i>=blocksheight-blocksbottom)){
if (schety==true&&(i==middlea||i==middleb)){
var b = new AbacusBead(x,starty,"#000",abacus,this,i,value);
} else {
var b = new AbacusBead(x,starty,colcols,abacus,this,i,value);
}
b.init();
//console.log(b);
this.elements.push(b);
} else {
this.elements.push(null);
}
}
}
this.shuntLeft = function(index){
if (this.elements.lastIndexOf(null)<index){
var placeindex = this.elements.indexOf(null);
var startindex = this.elements.lastIndexOf(null)+1;
var length = index-startindex+1;
var movearray = this.elements.splice(startindex,length);
//for (var i = 0; i<movearray.length; i++){
// movearray[i].resetAge();
//}
var args = [placeindex, 0].concat(movearray);
Array.prototype.splice.apply(this.elements, args);
this.updateY();
}
}
this.shuntRight = function(index){
if (this.elements.indexOf(null)>index){
console.log("start");
console.log(this.elements);
var placeindex = this.elements.lastIndexOf(null)+1;
var endindex = this.elements.indexOf(null)-1;
var length = endindex-index+1;
var movearray = this.elements.splice(index,length);
console.log(movearray);
//for (var i = 0; i<movearray.length; i++){
// movearray[i].resetAge();
//}
console.log(this.elements);
var args = [placeindex-length, 0].concat(movearray);
Array.prototype.splice.apply(this.elements, args);
this.updateY();
//console.log(this.elements);
}
}
this.howManyInUse = function(){
if (isupper==true){
var index = this.elements.lastIndexOf(null);
if (index!=this.elements.length-1){
return this.elements.slice(index+1,this.elements.length);
} else {
return [];
}
} else {
var index = this.elements.indexOf(null);
if (index!=0){
return this.elements.slice(0,index);
} else {
return [];
}
}
}
this.updateAges = function(){
for (var i = 0; i<this.elements.length; i++){
if (this.elements[i]!=null&&aging==true){
this.elements[i].updateAge();
}
}
}
this.restore = function(arr){
var newelements = [];
for (var i = 0; i<this.elements.length; i++){
if (this.elements[i]!=null){
newelements.push(this.elements[i]);
}
}
this.elements = newelements;
for (var i = 0; i<arr.length; i++){
if (arr[i] == null){
this.elements.splice(i, 0, null);
}
}
//console.log(this.elements);
this.updateY();
}
this.restoreAge = function(arr){
for (var i = 0; i<this.elements.length; i++){
if (this.elements[i]!=null){
this.elements[i].forceAge(arr[i]);
}
}
}
this.save = function(){
var arr = [];
for (var i = 0; i<this.elements.length; i++){
if (this.elements[i]==null){
arr.push(null);
} else {
arr.push(this.elements[i].age);
}
}
return arr;
}
this.init = function(){
this.drawColumn();
this.initElements();
this.updateY();
}
}