new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
85 lines
2.8 KiB
JavaScript
85 lines
2.8 KiB
JavaScript
function search(twoD,oneD){
|
|
// Searches a two dimensional array to see if it contains a one dimensional array. indexOf doesn't work in this case
|
|
for(var i=0;i<twoD.length;i++){
|
|
if(twoD[i][0] == oneD[0] && twoD[i][1] == oneD[1]) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function floodFill(hex, side, index, deleting) {
|
|
if (hex.blocks[side] === undefined || hex.blocks[side][index] === undefined) return;
|
|
|
|
//store the color
|
|
var color = hex.blocks[side][index].color;
|
|
//nested for loops for navigating the blocks
|
|
for(var x =-1;x<2;x++){
|
|
for(var y =-1;y<2;y++){
|
|
//make sure the they aren't diagonals
|
|
if(Math.abs(x)==Math.abs(y)){continue;}
|
|
//calculate the side were exploring using mods
|
|
var curSide =(side+x+hex.sides)%hex.sides;
|
|
//calculate the index
|
|
var curIndex = index+y;
|
|
//making sure the block exists at this side and index
|
|
if(hex.blocks[curSide] === undefined){continue;}
|
|
if(hex.blocks[curSide][curIndex] !== undefined){
|
|
// checking equivalency of color, if its already been explored, and if it isn't already deleted
|
|
if(hex.blocks[curSide][curIndex].color == color && search(deleting,[curSide,curIndex]) === false && hex.blocks[curSide][curIndex].deleted === 0 ) {
|
|
//add this to the array of already explored
|
|
deleting.push([curSide,curIndex]);
|
|
//recall with next block explored
|
|
floodFill(hex,curSide,curIndex,deleting);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function consolidateBlocks(hex,side,index){
|
|
//record which sides have been changed
|
|
var sidesChanged =[];
|
|
var deleting=[];
|
|
var deletedBlocks = [];
|
|
//add start case
|
|
deleting.push([side,index]);
|
|
//fill deleting
|
|
floodFill(hex,side,index,deleting);
|
|
//make sure there are more than 3 blocks to be deleted
|
|
if(deleting.length<3){return;}
|
|
var i;
|
|
for(i=0; i<deleting.length;i++) {
|
|
var arr = deleting[i];
|
|
//just making sure the arrays are as they should be
|
|
if(arr !== undefined && arr.length==2) {
|
|
//add to sides changed if not in there
|
|
if(sidesChanged.indexOf(arr[0])==-1){
|
|
sidesChanged.push(arr[0]);
|
|
}
|
|
//mark as deleted
|
|
hex.blocks[arr[0]][arr[1]].deleted = 1;
|
|
deletedBlocks.push(hex.blocks[arr[0]][arr[1]]);
|
|
}
|
|
}
|
|
|
|
// add scores
|
|
var now = MainHex.ct;
|
|
if(now - hex.lastCombo < settings.comboTime ){
|
|
settings.comboTime = (1/settings.creationSpeedModifier) * (waveone.nextGen/16.666667) * 3;
|
|
hex.comboMultiplier += 1;
|
|
hex.lastCombo = now;
|
|
var coords = findCenterOfBlocks(deletedBlocks);
|
|
hex.texts.push(new Text(coords['x'],coords['y'],"x "+hex.comboMultiplier.toString(),"bold Q","#fff",fadeUpAndOut));
|
|
}
|
|
else{
|
|
settings.comboTime = 240;
|
|
hex.lastCombo = now;
|
|
hex.comboMultiplier = 1;
|
|
}
|
|
var adder = deleting.length * deleting.length * hex.comboMultiplier;
|
|
hex.texts.push(new Text(hex.x,hex.y,"+ "+adder.toString(),"bold Q ",deletedBlocks[0].color,fadeUpAndOut));
|
|
hex.lastColorScored = deletedBlocks[0].color;
|
|
score += adder;
|
|
}
|