jacobinathanialpeterson's picture
Upload 1035 files
1e40c2a
raw
history blame
6.86 kB
const LS_TILE_SIZE = 5;
const LS_TILES_WIDTH = 20;
const LS_TILES_HEIGHT = 15;
const LS_BDR_SIZE = 2;
const LS_ENEMY_SIZE = 3;
const LS_COIN_SIZE = 3;
const LS_PLAYER_SIZE = 4;
const startX = 37;
const startY = 125;
const sepX = 125;
const sepY = 130;
const LS_Y_ADD_P2 = 58;
const LS_SHADOW_OFFSET = 5;
function drawLevelSelect() {
drawPlainBg();
var addX, addY;
var numOnPage;
var addToLevel = 0;
var yAddP2 = 0;
if (ls_page == 1) {
numOnPage = LS_PAGE_TOT;
}
else if (ls_page == 2) {
numOnPage = LS_ALL_TOT - LS_PAGE_TOT;
addToLevel = LS_PAGE_TOT;
yAddP2 = LS_Y_ADD_P2;
}
for (i = 0; i < numOnPage; i++) {
curX = startX + sepX * (i % 6);
curY = startY + (sepY * Math.floor(i / 6)) + yAddP2;
LS_draw_border (i + 1 + addToLevel, curX, curY);
LS_draw_walls (i + 1 + addToLevel, curX, curY);
LS_draw_floor (i + 1 + addToLevel, curX, curY);
LS_draw_checks (i + 1 + addToLevel, curX, curY);
LS_draw_coins (i + 1 + addToLevel, curX, curY);
LS_draw_enemies(i + 1 + addToLevel, curX, curY);
LS_draw_player (i + 1 + addToLevel, curX, curY);
LS_draw_text (i + 1 + addToLevel, curX, curY);
}
LS_draw_nav();
}
function LS_draw_player(l, x, y) {
canvas.beginPath();
canvas.rect(
cwh(x + Math.floor((checkpoints[l][0][0] + checkpoints[l][0][2] / 2) * LS_TILE_SIZE - LS_PLAYER_SIZE / 2)) + os.x,
cwh(y + Math.floor((checkpoints[l][0][1] + checkpoints[l][0][3] / 2) * LS_TILE_SIZE - LS_PLAYER_SIZE / 2)) + os.y,
cwh(LS_PLAYER_SIZE), cwh(LS_PLAYER_SIZE));
canvas.fillStyle = "rgba(" + player.redFill + ", " + player.greenFill + ", " + player.blueFill + ", 1)";
canvas.fill();
}
function LS_draw_enemies(l, x, y) {
// colors
var enemyFillColor;
if (l >= WALLS_RED) {
enemyFillColor = ENEMY_FILL_COLOR_2;
} else if (l >= WALLS_PURPLE) {
enemyFillColor = ENEMY_FILL_COLOR_1;
} else {
enemyFillColor = ENEMY_FILL_COLOR_0;
}
for (var i = 0; i < enemies[l].length; i++) {
canvas.beginPath();
canvas.rect(
cwh(x + Math.floor(enemies[l][i].simpleX * LS_TILE_SIZE - ((LS_TILE_SIZE - LS_COIN_SIZE) / 2))) + os.x,
cwh(y + Math.floor(enemies[l][i].simpleY * LS_TILE_SIZE - ((LS_TILE_SIZE - LS_COIN_SIZE) / 2))) + os.y,
cwh(LS_ENEMY_SIZE),
cwh(LS_ENEMY_SIZE));
canvas.fillStyle = enemyFillColor;
canvas.fill();
}
}
function LS_draw_coins(l, x, y) {
for (var i = 0; i < coins[l].length; i++) {
canvas.beginPath();
canvas.rect(
cwh(x + Math.floor(coins[l][i].simpleX * LS_TILE_SIZE + ((LS_TILE_SIZE - LS_COIN_SIZE) / 2))) + os.x,
cwh(y + Math.floor(coins[l][i].simpleY * LS_TILE_SIZE + ((LS_TILE_SIZE - LS_COIN_SIZE) / 2))) + os.y,
cwh(LS_COIN_SIZE),
cwh(LS_COIN_SIZE));
canvas.fillStyle = COIN_FILL_COLOR + "1)";;
canvas.fill();
}
}
function LS_draw_text(l, x, y) {
if (onButton("ls_" + l))
canvas.fillStyle = LS_BORDER_HOVER_COLOR;
else
canvas.fillStyle = "black";
canvas.font = cwh(15) + "px Arial Black";
canvas.textAlign = "center";
canvas.fillText("LEVEL " + l,
cwh(x + (LS_TILE_SIZE * LS_TILES_WIDTH / 2)) + os.x,
cwh(y - 10) + os.y);
}
function LS_draw_checks(l, x, y) {
for (var i = 0; i < checkpoints[l].length; i++) {
canvas.beginPath();
canvas.rect(
cwh(x + checkpoints[l][i][0] * LS_TILE_SIZE) + os.x,
cwh(y + checkpoints[l][i][1] * LS_TILE_SIZE) + os.y,
cwh(checkpoints[l][i][2] * LS_TILE_SIZE),
cwh(checkpoints[l][i][3] * LS_TILE_SIZE));
canvas.fillStyle = CHECK_COLOR;
canvas.fill();
}
}
function LS_draw_walls(l, x, y) {
// colors
var wallsColor;
if (l >= WALLS_RED) {
wallsColor = WALLS_COLOR_2;
} else if (l >= WALLS_PURPLE) {
wallsColor = WALLS_COLOR_1;
} else {
wallsColor = WALLS_COLOR_0;
}
canvas.beginPath();
canvas.rect(
cwh(x) + os.x,
cwh(y) + os.y,
cwh(LS_TILE_SIZE * TILES_X), cwh(LS_TILE_SIZE * TILES_Y));
canvas.fillStyle = wallsColor;
canvas.fill();
/*
for (var i = 0; i < LS_TILES_HEIGHT; i++) {
for (var j = 0; j < LS_TILES_WIDTH; j++) {
if (walls[l][i][j] == 1) {
canvas.beginPath();
canvas.rect(
cwh(x + j * LS_TILE_SIZE) + os.x,
cwh(y + i * LS_TILE_SIZE) + os.y,
cwh(LS_TILE_SIZE), cwh(LS_TILE_SIZE));
canvas.fillStyle = wallsColor;
canvas.fill();
}
}
}
*/
}
function LS_draw_floor(l, x, y) {
// colors
var floorColor0, floorColor1;
if (l >= WALLS_RED) {
floorColor0 = TILE_COLOR_2_0;
floorColor1 = TILE_COLOR_2_1;
} else if (l >= WALLS_PURPLE) {
floorColor0 = TILE_COLOR_1_0;
floorColor1 = TILE_COLOR_1_1;
} else {
floorColor0 = TILE_COLOR_0_0;
floorColor1 = TILE_COLOR_0_1;
}
for (var i = 0; i < LS_TILES_HEIGHT; i++) {
for (var j = 0; j < LS_TILES_WIDTH; j++) {
if (walls[l][i][j] == 0) {
var bgTileColor = floorColor0;
if (j % 2 == 0 && i % 2 == 0 ||
j % 2 == 1 && i % 2 == 1)
bgTileColor = floorColor1;
canvas.beginPath();
canvas.rect(
cwh(x + j * LS_TILE_SIZE) + os.x,
cwh(y + i * LS_TILE_SIZE) + os.y,
cwh(LS_TILE_SIZE), cwh(LS_TILE_SIZE));
canvas.fillStyle = bgTileColor;
canvas.fill();
}
}
}
}
function LS_draw_border(l, x, y) {
// shadow
canvas.beginPath();
canvas.rect(cwh(x - LS_BDR_SIZE + LS_SHADOW_OFFSET) + os.x, cwh(y - LS_BDR_SIZE + LS_SHADOW_OFFSET) + os.y,
cwh(LS_TILE_SIZE * LS_TILES_WIDTH + LS_BDR_SIZE * 2), cwh(LS_TILE_SIZE * LS_TILES_HEIGHT + LS_BDR_SIZE * 2));
canvas.fillStyle = MENU_SHADOW_COLOR;
canvas.fill();
// border
canvas.beginPath();
canvas.rect(cwh(x - LS_BDR_SIZE) + os.x, cwh(y - LS_BDR_SIZE) + os.y,
cwh(LS_TILE_SIZE * LS_TILES_WIDTH + LS_BDR_SIZE * 2), cwh(LS_TILE_SIZE * LS_TILES_HEIGHT + LS_BDR_SIZE * 2));
if (onButton("ls_" + l))
canvas.fillStyle = LS_BORDER_HOVER_COLOR;
else
canvas.fillStyle = LS_BORDER_COLOR;
canvas.fill();
}
function LS_draw_nav() {
// back
if (ls_page == 2) {
if (onButton("ls_back"))
canvas.fillStyle = LS_BUTTON_HOVER_COLOR;
else
canvas.fillStyle = "black";
} else {
canvas.fillStyle = LS_BUTTON_DISABLED_COLOR;
}
canvas.font = cwh(25) + "px Arial Black";
canvas.textAlign = "left";
canvas.fillText("<< BACK", cwh(15) + os.x, cwh(535) + os.y);
// back to menu
if (onButton("ls_menu"))
canvas.fillStyle = LS_BUTTON_HOVER_COLOR;
else
canvas.fillStyle = "black";
canvas.font = cwh(25) + "px Arial Black";
canvas.textAlign = "center";
canvas.fillText("BACK TO MENU ", cwh(CANVAS_WIDTH / 2) + os.x, cwh(535) + os.y);
// next
if (ls_page == 1) {
if (onButton("ls_next"))
canvas.fillStyle = LS_BUTTON_HOVER_COLOR;
else
canvas.fillStyle = "black";
} else {
canvas.fillStyle = LS_BUTTON_DISABLED_COLOR;
}
canvas.font = cwh(25) + "px Arial Black";
canvas.textAlign = "right";
canvas.fillText("NEXT >>", cwh(CANVAS_WIDTH - 15) + os.x, cwh(535) + os.y);
}