Lucas Kent e39465ad2f Changes to be committed:
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
2022-11-02 08:40:01 -04:00

26 lines
3.9 KiB
JavaScript

'use strict';function Sokoban(patterns){this.mapIndex=0;var _map=Rss.Matrix.clone(maps[this.mapIndex]),_originalMap=Rss.Matrix.clone(maps[this.mapIndex]),w=_map[0].length,h=_map.length,grid=new Rss.Grid(w,h,32),self=this;var _drawMap=function(){var i,j;for(i=0;i<_map.length;i++){for(j=0;j<_map[i].length;j++){grid.fillSquare(j,i,patterns[_map[i][j]]);}}}
var _getCoordOfKeeper=function(){var x,y,i,j;for(i=0;i<_map.length;i++){if(_map[i].indexOf(6)!==-1||_map[i].indexOf(7)!==-1){x=_map[i].indexOf(6)!==-1?_map[i].indexOf(6):_map[i].indexOf(7);y=i;break;}}
return[x,y];}
var _checkIfFinished=function(){var finished=true,i,j;for(i=0;i<_map.length;i++){for(j=0;j<_map[i].length;j++){if(_map[i][j]==3||_map[i][j]==4){finished=false;}}}
if(finished){alert('You have completed this level, the next stage will level now.');_playNextMap();}}
var _playNextMap=function(){self.playMap(self.mapIndex+1);}
this.playMap=function(mapIndex){this.mapIndex=mapIndex;grid.destroy();this.mapIndex%=maps.length;_map=Rss.Matrix.clone(maps[this.mapIndex]);_originalMap=Rss.Matrix.clone(maps[this.mapIndex]),w=_map[0].length,h=_map.length,grid=new Rss.Grid(w,h,32);this.play();}
this.play=function(){_drawMap();this.emit('stageStarted');}
this.restartStage=function(){_map=Rss.Matrix.clone(_originalMap);_drawMap();}
this.moveLeft=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y][x-1]==0||_map[y][x-1]==1)
return;if(_map[y][x-1]==2){_map[y][x-1]=6;moved=true;}else if(_map[y][x-1]==3){_map[y][x-1]=7;moved=true;}else if(_map[y][x-1]==4){if(_map[y][x-2]==2){_map[y][x-2]=4;_map[y][x-1]=6;moved=true;}else if(_map[y][x-2]==3){_map[y][x-2]=5;_map[y][x-1]=6;moved=true;}}else if(_map[y][x-1]==5){if(_map[y][x-2]==2){_map[y][x-2]=4;_map[y][x-1]=7;moved=true;}else if(_map[y][x-2]==3){_map[y][x-2]=5;_map[y][x-1]=7;moved=true;}}
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
_drawMap();_checkIfFinished();}
this.moveRight=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y][x+1]==0||_map[y][x+1]==1)
return;if(_map[y][x+1]==2){_map[y][x+1]=6;moved=true;}else if(_map[y][x+1]==3){_map[y][x+1]=7;moved=true;}else if(_map[y][x+1]==4){if(_map[y][x+2]==2){_map[y][x+2]=4;_map[y][x+1]=6;moved=true;}else if(_map[y][x+2]==3){_map[y][x+2]=5;_map[y][x+1]=6;moved=true;}}else if(_map[y][x+1]==5){if(_map[y][x+2]==2){_map[y][x+2]=4;_map[y][x+1]=7;moved=true;}else if(_map[y][x+2]==3){_map[y][x+2]=5;_map[y][x+1]=7;moved=true;}}
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
_drawMap();_checkIfFinished();}
this.moveUp=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y-1][x]==0||_map[y-1][x]==1)
return;if(_map[y-1][x]==2){_map[y-1][x]=6;moved=true;}else if(_map[y-1][x]==3){_map[y-1][x]=7;moved=true;}else if(_map[y-1][x]==4){if(_map[y-2][x]==2){_map[y-2][x]=4;_map[y-1][x]=6;moved=true;}else if(_map[y-2][x]==3){_map[y-2][x]=5;_map[y-1][x]=6;moved=true;}}else if(_map[y-1][x]==5){if(_map[y-2][x]==2){_map[y-2][x]=4;_map[y-1][x]=7;moved=true;}else if(_map[y-2][x]==3){_map[y-2][x]=5;_map[y-1][x]=7;moved=true;}}
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
_drawMap();_checkIfFinished();}
this.moveDown=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y+1][x]==0||_map[y+1][x]==1)
return;if(_map[y+1][x]==2){_map[y+1][x]=6;moved=true;}else if(_map[y+1][x]==3){_map[y+1][x]=7;moved=true;}else if(_map[y+1][x]==4){if(_map[y+2][x]==2){_map[y+2][x]=4;_map[y+1][x]=6;moved=true;}else if(_map[y+2][x]==3){_map[y+2][x]=5;_map[y+1][x]=6;moved=true;}}else if(_map[y+1][x]==5){if(_map[y+2][x]==2){_map[y+2][x]=4;_map[y+1][x]=7;moved=true;}else if(_map[y+2][x]==3){_map[y+2][x]=5;_map[y+1][x]=7;moved=true;}}
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
_drawMap();_checkIfFinished();}}
Sokoban.prototype=new Rss.EventEmitter();