Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var stage, queue, player, grid = [], level;
- var levels = [], currentLevel =-1, tileSize = 45;
- var keys = {
- left: false,
- right: false,
- up: false,
- down: false
- };
- var settings = {playerSpeed: 2};
- function preload() {
- stage = new createjs.Stage("myCanvas");
- queue = new createjs.LoadQueue(true);
- queue.installPlugin(createjs.Sound);
- queue.on('complete', queueComplete);
- queue.loadManifest(
- [
- "assets/img/geometry.png",
- {id: "levelJson", src: "assets/json/levels.json"},
- {id: "geometrySprites", src: "assets/json/tiles.json"},
- {id: "playerRagsSS", src: "assets/json/herotatters.json"}
- ]
- );
- }
- function queueComplete() {
- var lvl = queue.getResult("levelJson");
- levels = lvl.levels;
- createjs.Ticker.setFPS(60);
- createjs.Ticker.on('tick', updateScene);
- setupLevel();
- }
- function setupLevel() {
- stage.removeAllChildren();
- currentLevel++;
- var spritesheet = new createjs.SpriteSheet(queue.getResult('geometrySprites'));
- level = levels[currentLevel].tiles;
- grid = [];
- window.addEventListener('keyup', keyLifted);
- window.addEventListener('keydown', keyPressed);
- for (var i = 0; i < level.length; i++) {
- grid.push([]);
- for(var z = 0; z < level[0].length; z++){
- grid[i].push(null);
- }
- }
- var playerCol, playerRow;
- for(var row = 0; row < level.length; row++){
- for(var col = 0; col < level[row].length; col++) {
- var img = '';
- switch (level[row][col]) {
- case 0:
- img = 'north';
- break;
- case 1:
- img = 'southEast';
- break;
- case 2:
- img = 'south';
- break;
- case 3:
- img = 'west';
- break;
- case 4:
- img = 'northEast';
- break;
- case 5:
- img = 'wholeFloor';
- playerRow = row;
- playerCol = col;
- break;
- case 6:
- img = 'connectVertical';
- break;
- case 7:
- img = 'brokenFloor';
- playerRow = row;
- playerCol = col;
- break;
- case 8:
- img = 'northWest';
- break;
- case 9:
- img = 'connectHorizontal';
- break;
- case 10:
- img = 'middle';
- break;
- case 11:
- img = 'southWest';
- break;
- case 12:
- img = 'wall';
- break;
- case 13:
- img = 'east';
- break;
- }
- var tile = new createjs.Sprite(spritesheet, img);
- tile.x = col * tileSize;
- tile.y = row * tileSize;
- tile.row = row;
- tile.col = col;
- tile.tileNumber = level[row][col];
- stage.addChild(tile);
- grid[row][col] = tile;
- }
- }
- var playerSS = new createjs.SpriteSheet(queue.getResult("playerRagsSS"));
- player = new createjs.Sprite(playerSS, "idle");
- player.x = playerCol * tileSize;
- player.y = playerRow * tileSize;
- player.regX = 0;
- player.regY = 45;
- player.row = playerRow;
- player.col = playerCol;
- stage.addChild(player);
- }
- function updateScene(e) {
- movePlayer();
- stage.update(e)
- }
- function keyLifted(e) {
- player.gotoAndPlay('idle');
- switch (e.keyCode) {
- case 32:
- keys.space = false;
- break;
- case 37:
- keys.left = false;
- break;
- case 38:
- keys.up = false;
- break;
- case 39:
- keys.right = false;
- break;
- case 40:
- keys.down = false;
- break;
- }
- }
- function keyPressed(e) {
- switch (e.keyCode) {
- case 32:
- keys.space = true;
- break;
- case 37:
- keys.left = true;
- break;
- case 38:
- keys.up = true;
- break;
- case 39:
- keys.right = true;
- break;
- case 40:
- keys.down = true;
- break;
- }
- }
- function movePlayer() {
- var potentialPositionX = player.x + settings.playerSpeed;
- var tileX = Math.floor(potentialPositionX / tileSize);
- var potentialPositionY = player.y;
- var tileY = Math.floor(potentialPositionY / tileSize);
- if (keys.left) {
- if(player.x < player.width / 2)
- {
- player.x = player.width / 2;
- }
- player.x-=settings.playerSpeed;
- if (player.currentDirection != "left") {
- player.currentDirection = "left";
- player.gotoAndPlay('left');
- }
- }
- if (keys.right) {
- if (player.x > stage.canvas.width - player.width / 2) {
- player.x = stage.canvas.width - player.width /2;
- }
- if (walkable(tileX,tileY)) {
- player.x += settings.playerSpeed;
- }
- if (player.currentDirection != "right") {
- player.currentDirection = "right";
- player.gotoAndPlay('right');
- }
- }
- if (keys.up) {
- if (player.y < player.height / 2) {
- player.y = player.height / 2;
- }
- player.y-=settings.playerSpeed;
- if (player.currentDirection != "up") {
- player.currentDirection = "up";
- player.gotoAndPlay('up');
- }
- }
- if (keys.down) {
- if (player.y > stage.canvas.height - player.height / 2){
- player.y = stage.canvas.height - player.height / 2;
- }
- player.y+=settings.playerSpeed;
- if (player.currentDirection != "down") {
- player.currentDirection = "down";
- player.gotoAndPlay('down');
- }
- }
- }
- function walkable(tileY, tileX) {
- var nonWalkable = [0,1,2,3,4,6,8,9,10,11,12,13];
- //console.log(grid[tileX][tileY].tileNumber);
- if (tileX < 0 || tileY < 0 || tileX >= level[0].length || tileY >= level.length ) {
- return false;
- }
- if (nonWalkable.indexOf(grid[tileY][tileX].tileNumber) != -1) {
- return false;
- } else {
- switch (grid[tileY][tileX].tileNumber){
- case 5:
- return true;
- break;
- case 7:
- return true;
- break;
- }
- }
- }
- window.addEventListener('load', preload);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement