Advertisement
Guest User

Untitled

a guest
May 25th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var stage, queue, player, grid = [], level;
  2. var levels = [], currentLevel =-1, tileSize = 45;
  3. var keys = {
  4.     left: false,
  5.     right: false,
  6.     up: false,
  7.     down: false
  8. };
  9. var settings = {playerSpeed: 2};
  10. function preload() {
  11.     stage = new createjs.Stage("myCanvas");
  12.  
  13.     queue = new createjs.LoadQueue(true);
  14.     queue.installPlugin(createjs.Sound);
  15.     queue.on('complete', queueComplete);
  16.  
  17.     queue.loadManifest(
  18.         [
  19.             "assets/img/geometry.png",
  20.             {id: "levelJson", src: "assets/json/levels.json"},
  21.             {id: "geometrySprites", src: "assets/json/tiles.json"},
  22.             {id: "playerRagsSS", src: "assets/json/herotatters.json"}
  23.         ]
  24.     );
  25. }
  26. function queueComplete() {
  27.     var lvl = queue.getResult("levelJson");
  28.     levels = lvl.levels;
  29.  
  30.  
  31.     createjs.Ticker.setFPS(60);
  32.     createjs.Ticker.on('tick', updateScene);
  33.  
  34.     setupLevel();
  35. }
  36. function setupLevel() {
  37.     stage.removeAllChildren();
  38.     currentLevel++;
  39.  
  40.     var spritesheet = new createjs.SpriteSheet(queue.getResult('geometrySprites'));
  41.  
  42.     level = levels[currentLevel].tiles;
  43.     grid = [];
  44.  
  45.     window.addEventListener('keyup', keyLifted);
  46.     window.addEventListener('keydown', keyPressed);
  47.  
  48.     for (var i = 0; i < level.length; i++) {
  49.         grid.push([]);
  50.         for(var z = 0; z < level[0].length; z++){
  51.             grid[i].push(null);
  52.         }
  53.     }
  54.  
  55.     var playerCol, playerRow;
  56.     for(var row = 0; row < level.length; row++){
  57.         for(var col = 0; col < level[row].length; col++) {
  58.             var img = '';
  59.             switch (level[row][col]) {
  60.                 case 0:
  61.                     img = 'north';
  62.                     break;
  63.                 case 1:
  64.                     img = 'southEast';
  65.                     break;
  66.                 case 2:
  67.                     img = 'south';
  68.                     break;
  69.                 case 3:
  70.                     img = 'west';
  71.                     break;
  72.                 case 4:
  73.                     img = 'northEast';
  74.                     break;
  75.                 case 5:
  76.                     img = 'wholeFloor';
  77.                     playerRow = row;
  78.                     playerCol = col;
  79.                     break;
  80.                 case 6:
  81.                     img = 'connectVertical';
  82.                     break;
  83.                 case 7:
  84.                     img = 'brokenFloor';
  85.                     playerRow = row;
  86.                     playerCol = col;
  87.                     break;
  88.                 case 8:
  89.                     img = 'northWest';
  90.                     break;
  91.                 case 9:
  92.                     img = 'connectHorizontal';
  93.                     break;
  94.                 case 10:
  95.                     img = 'middle';
  96.                     break;
  97.                 case 11:
  98.                     img = 'southWest';
  99.                     break;
  100.                 case 12:
  101.                     img = 'wall';
  102.                     break;
  103.                 case 13:
  104.                     img = 'east';
  105.                     break;
  106.             }
  107.  
  108.             var tile = new createjs.Sprite(spritesheet, img);
  109.  
  110.             tile.x = col * tileSize;
  111.             tile.y = row * tileSize;
  112.             tile.row = row;
  113.             tile.col = col;
  114.             tile.tileNumber = level[row][col];
  115.             stage.addChild(tile);
  116.             grid[row][col] = tile;
  117.         }
  118.     }
  119.     var playerSS = new createjs.SpriteSheet(queue.getResult("playerRagsSS"));
  120.     player = new createjs.Sprite(playerSS, "idle");
  121.     player.x = playerCol * tileSize;
  122.     player.y = playerRow * tileSize;
  123.     player.regX = 0;
  124.     player.regY = 45;
  125.     player.row = playerRow;
  126.     player.col = playerCol;
  127.     stage.addChild(player);
  128.  
  129. }
  130. function updateScene(e) {
  131.     movePlayer();
  132.     stage.update(e)
  133. }
  134.  
  135. function keyLifted(e) {
  136.     player.gotoAndPlay('idle');
  137.     switch (e.keyCode) {
  138.         case 32:
  139.             keys.space = false;
  140.             break;
  141.         case 37:
  142.             keys.left = false;
  143.             break;
  144.         case 38:
  145.             keys.up = false;
  146.             break;
  147.         case 39:
  148.             keys.right = false;
  149.             break;
  150.         case 40:
  151.             keys.down = false;
  152.             break;
  153.     }
  154. }
  155.  
  156. function keyPressed(e) {
  157.     switch (e.keyCode) {
  158.         case 32:
  159.             keys.space = true;
  160.             break;
  161.         case 37:
  162.             keys.left = true;
  163.             break;
  164.         case 38:
  165.             keys.up = true;
  166.             break;
  167.         case 39:
  168.             keys.right = true;
  169.             break;
  170.         case 40:
  171.             keys.down = true;
  172.             break;
  173.     }
  174. }
  175. function movePlayer() {
  176.     var potentialPositionX = player.x + settings.playerSpeed;
  177.     var tileX = Math.floor(potentialPositionX / tileSize);
  178.     var potentialPositionY = player.y;
  179.     var tileY = Math.floor(potentialPositionY / tileSize);
  180.  
  181.  
  182.     if (keys.left) {
  183.         if(player.x < player.width / 2)
  184.         {
  185.             player.x = player.width / 2;
  186.         }
  187.         player.x-=settings.playerSpeed;
  188.         if (player.currentDirection != "left") {
  189.             player.currentDirection = "left";
  190.             player.gotoAndPlay('left');
  191.         }
  192.     }
  193.     if (keys.right) {
  194.         if (player.x > stage.canvas.width - player.width / 2) {
  195.             player.x = stage.canvas.width - player.width /2;
  196.         }
  197.         if (walkable(tileX,tileY)) {
  198.             player.x += settings.playerSpeed;
  199.         }
  200.         if (player.currentDirection != "right") {
  201.             player.currentDirection = "right";
  202.             player.gotoAndPlay('right');
  203.         }
  204.     }
  205.     if (keys.up) {
  206.         if (player.y < player.height / 2) {
  207.             player.y = player.height / 2;
  208.         }
  209.         player.y-=settings.playerSpeed;
  210.         if (player.currentDirection != "up") {
  211.             player.currentDirection = "up";
  212.             player.gotoAndPlay('up');
  213.         }
  214.  
  215.     }
  216.     if (keys.down) {
  217.         if (player.y > stage.canvas.height - player.height / 2){
  218.             player.y = stage.canvas.height - player.height / 2;
  219.         }
  220.         player.y+=settings.playerSpeed;
  221.         if (player.currentDirection != "down") {
  222.             player.currentDirection = "down";
  223.             player.gotoAndPlay('down');
  224.         }
  225.     }
  226. }
  227.  
  228. function walkable(tileY, tileX) {
  229.     var nonWalkable = [0,1,2,3,4,6,8,9,10,11,12,13];
  230.     //console.log(grid[tileX][tileY].tileNumber);
  231.  
  232.     if (tileX < 0 || tileY < 0 || tileX >= level[0].length || tileY >= level.length ) {
  233.         return false;
  234.     }
  235.  
  236.     if (nonWalkable.indexOf(grid[tileY][tileX].tileNumber) != -1) {
  237.         return false;
  238.     } else {
  239.         switch (grid[tileY][tileX].tileNumber){
  240.             case 5:
  241.                 return true;
  242.                 break;
  243.             case 7:
  244.                 return true;
  245.                 break;
  246.         }
  247.     }
  248. }
  249.  
  250. window.addEventListener('load', preload);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement