1
0
forked from sent/waves
waves/public/assets/g/worldhardestgame2/js/keys.js
2025-04-09 17:11:14 -05:00

356 lines
8.5 KiB
JavaScript

function key(x, y, gathered, saved, fadeAlpha, fadingIn, fadingOut) {
if(gathered == null)
gathered = false;
if(saved == null)
saved = false;
if(fadeAlpha == null)
fadeAlpha = 1;
if(fadingIn == null)
fadingIn = false;
if(fadingOut == null)
fadingOut = false;
this.simpleX = x;
this.simpleY = y;
this.x = x * TILE_SIZE + TILE_SIZE / 2;
this.y = y * TILE_SIZE + TILE_SIZE / 2;
this.gathered = gathered;
this.saved = saved;
this.fadeAlpha = fadeAlpha;
this.fadingIn = fadingIn;
this.fadingOut = fadingOut;
//this.shineTime = shineTime;
//this.shineAlpha = shineAlpha;
//this.shiningIn = shiningIn;
//this.shiningOut = shiningOut;
}
var keys = [
[],
// level 1
[],
// level 2
[],
// level 3
[],
//level4
[
new key(19.5, 7)
],
// level 5
[],
// level 6
[],
// level 7
[],
// level 8
[],
// level 9
[],
// level 10
[],
// level 11
[],
// level 12
[],
// level 13
[],
// level 14
[],
// level 15
[
new key(17, 15)
],
// level 16
[],
// level 17
[],
// level 18
[
new key(13, 6)
],
// level 19
[
new key(7.5, 9.5),
new key(21.5, 13.5),
new key(22.5, 13.5)
],
// level 20
[],
// level 21
[
new key(18.5, 5.5)
],
// level 22
[
new key(19.5, 5.5)
],
// level 23
[],
// level 24
[
new key(9.5, 3.5),
new key(17.5, 3.5),
new key(20.5, 9.5)
],
// level 25
[],
// level 26
[],
// level 27
[],
// level 28
[],
// level 29
[],
// level 30
[],
// level 31
[],
// level 32
[
new key(8.5, 12.5),
new key(18.5, 6.5)
],
// level 33
[],
// level 34
[
new key(8.5, 9.5)
],
// level 35
[],
// level 36
[],
// level 37
[
new key(4.5, 12.5),
new key(13.5, 2.5),
new key(20.5, 2.5),
],
// level 38
[],
// level 39
[],
// level 40
[],
// level 41
[],
// level 42
[],
// level 43
[],
// level 44
[],
// level 45
[],
// level 46
[],
// level 47
[],
// level 48
[],
// level 49
[],
// level 50
[]
];
function resetKeys(l) {
for (var i = 0; i < keys[l].length; i++) {
keys[l][i].gathered = false;
keys[l][i].saved = false;
keys[l][i].fadeAlpha = 1;
keys[l][i].fadingIn = false;
keys[l][i].fadingOut = false;
//keys[l][i].shineTime = createCoinShineTime();
//keys[l][i].shineAlpha = 0;
//keys[l][i].shiningIn = false;
//keys[l][i].shiningOut = false;
}
}
function updateKeys() {
if (state == "game" && !paused) {
keysFade();
//keysShine();
}
}
function drawKeys() {
if (state == "game") {
for (var i = 0; i < keys[level].length; i++) {
if (!keys[level][i].gathered || keys[level][i].fadingIn || keys[level][i].fadingOut) {
/*
// key fill
canvas.beginPath();
canvas.arc(keys[level][i].x, keys[level][i].y, COIN_SIZE / 2, 0, 2 * Math.PI, false);
canvas.fillStyle = KEY_FILL_COLOR + keys[level][i].fadeAlpha + ")";
canvas.fill();
// key shine
canvas.beginPath();
canvas.arc(keys[level][i].x, keys[level][i].y, COIN_SIZE / 2, 0, 2 * Math.PI, false);
if (keys[level][i].shineAlpha > keys[level][i].fadeAlpha)
canvas.fillStyle = COIN_SHINE_COLOR + keys[level][i].fadeAlpha + ")";
else
canvas.fillStyle = COIN_SHINE_COLOR + keys[level][i].shineAlpha + ")";
canvas.fill();
*/
// key stroke
canvas.beginPath();
canvas.arc (keys[level][i].x - 5, keys[level][i].y + 5, 3.6*1.5, -0.2* Math.PI, 1.6 * Math.PI, false);
canvas.fillStyle = KEY_OUTLINE_COLOR;
canvas.fill();
canvas.lineWidth = 2;
canvas.strokeStyle = ENEMY_OUTLINE_COLOR_0 + keys[level][i].fadeAlpha + ")";
canvas.stroke();
canvas.beginPath();
canvas.arc (keys[level][i].x - 5, keys[level][i].y + 5, 1.2, 0, 2 * Math.PI, true);
canvas.fillStyle = KEY_OUTLINE_COLOR;
canvas.fill();
canvas.lineWidth = 2;
canvas.strokeStyle = ENEMY_OUTLINE_COLOR_0 + keys[level][i].fadeAlpha + ")";
canvas.stroke();
canvas.beginPath();
canvas.moveTo(keys[level][i].x -5 +1.4 *1.5 , keys[level][i].y+5 -2.9*1.5);
canvas.lineTo(keys[level][i].x -5 +2.8*1.5, keys[level][i].y +5 -4.4*1.5);
canvas.lineTo(keys[level][i].x -5 +1.3*1.5, keys[level][i].y +5 -5.9*1.5);
canvas.lineTo(keys[level][i].x -5 +2.8*1.5, keys[level][i].y +5 -7.4*1.5);
canvas.lineTo(keys[level][i].x -5 +4.4*1.5, keys[level][i].y +5 -5.9*1.5);
canvas.lineTo(keys[level][i].x -5 +5.6*1.5, keys[level][i].y +5 -7*1.5);
canvas.lineTo(keys[level][i].x -5 +4.3*1.5, keys[level][i].y +5 -8.8*1.5);
canvas.lineTo(keys[level][i].x -5 +5.4*1.5, keys[level][i].y +5 -10*1.5);
canvas.lineTo(keys[level][i].x -5 +8.5*1.5, keys[level][i].y +5 -6.9*1.5);
canvas.lineTo(keys[level][i].x -5 +3*1.5, keys[level][i].y +5 -1.4*1.5);
/*canvas.lineTo(keys[level][i].x + 5 - 5 - 9 - 5, keys[level][i].y - 5 + 5 + 9 - 5);
canvas.lineTo(keys[level][i].x + 5 - 5 - 9, keys[level][i].y - 5 + 5 + 9);
canvas.lineTo(keys[level][i].x + 5 - 5 - 4, keys[level][i].y - 5 + 5 + 4);
canvas.lineTo(keys[level][i].x + 5 - 5 - 4 - 5, keys[level][i].y - 5 + 5 + 4 - 5);*/
canvas.fillStyle = KEY_OUTLINE_COLOR;
canvas.fill();
canvas.lineWidth = 2;
canvas.strokeStyle = ENEMY_OUTLINE_COLOR_0 + keys[level][i].fadeAlpha + ")";
canvas.stroke();
/*canvas.fillStyle = enemyFillColor;
canvas.fill();
canvas.lineWidth = cwh(4);
canvas.strokeStyle = enemyOutlineColor;
canvas.stroke();*/
/*canvas.beginPath();
canvas.arc (keys[level][i].x - 5, keys[level][i].y + 5, 6, 0, 2 * Math.PI, false);
/*canvas.moveTo(keys[level][i].x + 5 - 5 + 2, keys[level][i].y - 5 + 5 - 2);
canvas.lineTo(keys[level][i].x + 5 - 5 - 9, keys[level][i].y - 5 + 5 + 9);
canvas.lineTo(keys[level][i].x + 5 - 5 - 9 - 5, keys[level][i].y - 5 + 5 + 9 - 5);
canvas.lineTo(keys[level][i].x + 5 - 5 - 9, keys[level][i].y - 5 + 5 + 9);
canvas.lineTo(keys[level][i].x + 5 - 5 - 4, keys[level][i].y - 5 + 5 + 4);
canvas.lineTo(keys[level][i].x + 5 - 5 - 4 - 5, keys[level][i].y - 5 + 5 + 4 - 5);*/
/*
canvas.lineWidth = 4;
canvas.strokeStyle = ENEMY_OUTLINE_COLOR_0 + keys[level][i].fadeAlpha + ")";
canvas.stroke();*/
}
}
}
}
function keysFade() {
if (state == "game") {
for (var i = 0; i < keys[level].length; i++) {
if (keys[level][i].fadingOut && keys[level][i].fadeAlpha > 0) {
keys[level][i].fadeAlpha -= COIN_FADE_SPEED;
}
else if (keys[level][i].fadingOut && keys[level][i].fadeAlpha <= 0) {
keys[level][i].fadeAlpha = 0;
keys[level][i].fadingOut = false;
//keys[level][i].shineTime = createCoinShineTime();
}
else if (keys[level][i].fadingIn && keys[level][i].fadeAlpha < 1) {
keys[level][i].fadeAlpha += COIN_FADE_SPEED;
}
else if (keys[level][i].fadingIn && keys[level][i].fadeAlpha >= 1) {
keys[level][i].fadeAlpha = 1;
keys[level][i].fadingIn = false;
}
}
}
}
function getKeysTotal() {
return keys[level].length;
}
function unsavedKeys() {
for (var i = 0; i < keys[level].length; i++) {
if (keys[level][i].gathered && !keys[level][i].saved) {
return true;
}
}
return false;
}
/*
function keysShine() {
coinShineTimer++;
if (coinShineTimer > COIN_SHINE_FREQ)
coinShineTimer = 0;
for (var i = 0; i < keys[level].length; i++) {
if (!keys[level][i].shiningIn && coinShineTimer == keys[level][i].shineTime) {
keys[level][i].shiningIn = true;
keys[level][i].shiningOut = false;
keys[level][i].shineAlpha = 0;
} else if (keys[level][i].shiningIn && keys[level][i].shineAlpha < 1) {
keys[level][i].shineAlpha += COIN_SHINE_FADE_IN_SPEED;
} else if (keys[level][i].shiningIn && keys[level][i].shineAlpha >= 1) {
keys[level][i].shiningOut = true;
keys[level][i].shiningIn = false;
keys[level][i].shineAlpha = 1;
} else if (keys[level][i].shiningOut && keys[level][i].shineAlpha > 0) {
keys[level][i].shineAlpha -= COIN_SHINE_FADE_OUT_SPEED;
} else if (keys[level][i].shiningOut && keys[level][i].shineAlpha <= 0) {
keys[level][i].shiningOut = false;
keys[level][i].shiningIn = false;
keys[level][i].shineAlpha = 0;
}
}
}
*/
function submitSavedKeys() {
keysSave = [];
for (var i = 0; i < keys[level].length; i++) {
if (keys[level][i].saved)
keysSave.push(i);
}
if (keysSave.length == 0)
keysSave.push(-99);
localStorage.setItem("whg2_keys", JSON.stringify(keysSave));
}
function loadSavedKeys() {
resetKeys(level);
keysSave = JSON.parse(localStorage["whg2_keys"]);
if (keysSave[0] >= 0) {
for (var i = 0; i < keysSave.length; i++) {
keys[level][parseInt(keysSave[i])].gathered = true;
keys[level][parseInt(keysSave[i])].saved = true;
}
}
}