first commit
31
Catbug.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
var catbug = {};
|
||||
catbug.x = 45;
|
||||
catbug.y = 90;
|
||||
catbug.vX = 0;
|
||||
catbug.vY = 0;
|
||||
catbug.frame = 0;
|
||||
catbug.HP = 3;
|
||||
catbug.maxHP = 3;
|
||||
catbug.move = function()
|
||||
{
|
||||
this.x += this.vX;
|
||||
this.y += this.vY;
|
||||
|
||||
if (this.x <= 0 || this.x >= 320)
|
||||
{
|
||||
this.x -= this.vX;
|
||||
}
|
||||
if (this.y <= 0 || this.y >= 180)
|
||||
{
|
||||
this.y -= this.vY;
|
||||
}
|
||||
}
|
||||
catbug.isInRect = function(box)
|
||||
{
|
||||
if (this.x >= box.x && this.x <= box.x + box.w
|
||||
&& this.y >= box.y && this.y <= box.y + box.h)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
354
Engine.js
Executable file
|
@ -0,0 +1,354 @@
|
|||
window.renderer = {};
|
||||
window.gameState = {};
|
||||
window.controller = {};
|
||||
|
||||
renderer.bgx = 0;
|
||||
renderer.sprite = new Image();
|
||||
renderer.sprite.src = "assets/seethruzone.png";
|
||||
renderer.gfx = {};
|
||||
|
||||
renderer.loadingScreen = function()
|
||||
{
|
||||
if (renderer.gfx.loadedCount < 8 && renderer.gfx.loadedCount > 1)
|
||||
{
|
||||
screen.drawImage(renderer.gfx.rawscreen, 0, 0)
|
||||
}
|
||||
if (renderer.gfx.loadedCount < 8)
|
||||
{
|
||||
requestAnimationFrame(loadingScreen);
|
||||
}
|
||||
}
|
||||
|
||||
renderer.loadgfx = function()
|
||||
{
|
||||
renderer.gfx.loadedCount = 0;
|
||||
renderer.gfx.rawscreen = new Image();
|
||||
renderer.gfx.rawscreen.src = "assets/rawscreen.png";
|
||||
renderer.gfx.rawscreen.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.bg = new Image();
|
||||
renderer.gfx.bg.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.bg.src = "assets/seethruzone.png";
|
||||
renderer.gfx.title = new Image();
|
||||
renderer.gfx.title.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.title.src = "assets/titletext.png";
|
||||
renderer.gfx.catbug = new Image();
|
||||
renderer.gfx.catbug.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.catbug.src = "assets/catbug.png";
|
||||
renderer.gfx.peas = new Image();
|
||||
renderer.gfx.peas.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.peas.src = "assets/sugarpeas.png";
|
||||
renderer.gfx.pbs = new Image();
|
||||
renderer.gfx.pbs.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.pbs.src = "assets/peanutbuttersquare.png";
|
||||
renderer.gfx.taco = new Image();
|
||||
renderer.gfx.taco.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.taco.src = "assets/taco.png";
|
||||
renderer.gfx.HP = new Image();
|
||||
renderer.gfx.HP.onload = renderer.gfx.loadedCount++;
|
||||
renderer.gfx.HP.src = "assets/hp.png";
|
||||
requestAnimationFrame(renderer.loadingScreen);
|
||||
|
||||
}
|
||||
|
||||
renderer.bg = function()
|
||||
{
|
||||
screen.drawImage(this.gfx.bg, this.bgx, 0);
|
||||
screen.drawImage(this.gfx.bg, this.bgx + 1472, 0);
|
||||
this.bgx -= 8;
|
||||
if (this.bgx == -1472) this.bgx = 0;
|
||||
}
|
||||
|
||||
renderer.bgPaused = function()
|
||||
{
|
||||
screen.drawImage(this.gfx.bg, this.bgx, 0);
|
||||
screen.drawImage(this.gfx.bg, this.bgx + 1472, 0);
|
||||
}
|
||||
|
||||
renderer.drawCatbug = function()
|
||||
{
|
||||
switch(catbug.frame)
|
||||
{
|
||||
case 0:
|
||||
screen.drawImage(this.gfx.catbug, 0, 0, 43, 39, catbug.x - 22, catbug.y - 20, 43, 39);
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.frame = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
screen.drawImage(this.gfx.catbug, 43, 0, 43, 39, catbug.x - 22, catbug.y - 20, 43, 39);
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.frame = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
renderer.drawHP = function()
|
||||
{
|
||||
var i;
|
||||
for (i = 0; i < catbug.HP; i++)
|
||||
{
|
||||
screen.drawImage(this.gfx.HP, 10+(6*i), 10);
|
||||
}
|
||||
}
|
||||
|
||||
renderer.drawPickups = function()
|
||||
{
|
||||
var i;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
if (!isEmptyObject(stuff[i])){
|
||||
screen.drawImage(stuff[i].sprite, stuff[i].x, stuff[i].y);}
|
||||
}
|
||||
}
|
||||
|
||||
renderer.drawScore = function()
|
||||
{
|
||||
screen.font = '8px kong';
|
||||
screen.textBaseline = 'top';
|
||||
screen.fillStyle = 'white';
|
||||
screen.fillText(gameState.points, 10, 20)
|
||||
}
|
||||
|
||||
renderer.drawPaused = function()
|
||||
{
|
||||
screen.font = '8px kong';
|
||||
screen.textBaseline = 'top';
|
||||
screen.fillStyle = 'white';
|
||||
screen.fillText("paused", 10, 30);
|
||||
}
|
||||
|
||||
gameState.paused = false;
|
||||
gameState.playing = false;
|
||||
gameState.over = false;
|
||||
gameState.points = 0;
|
||||
gameState.threshold = 10;
|
||||
gameState.ticker = new Date();
|
||||
gameState.frame = new Date();
|
||||
|
||||
controller.up = false;
|
||||
controller.down = false;
|
||||
controller.right = false;
|
||||
controller.left = false;
|
||||
controller.space = false;
|
||||
controller.q = false;
|
||||
|
||||
function isEmptyObject(obj)
|
||||
{
|
||||
var name;
|
||||
for (name in obj)
|
||||
{
|
||||
if (obj.hasOwnProperty(name))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function scoreSummary()
|
||||
{
|
||||
gameState.frame = thisFrame;
|
||||
renderer.bg();
|
||||
screen.font = '16px kong';
|
||||
screen.textBaseline = 'top';
|
||||
screen.fillStyle = 'white';
|
||||
screen.fillText("SCORE:", 120, 80);
|
||||
screen.fillText(gameState.points, 120, 105);
|
||||
}
|
||||
|
||||
function checkHP()
|
||||
{
|
||||
if (catbug.HP <= 0)
|
||||
{
|
||||
gameState.paused = false;
|
||||
gameState.over = true;
|
||||
}
|
||||
}
|
||||
|
||||
renderer.titleScreen = function()
|
||||
{
|
||||
renderer.bg();
|
||||
screen.drawImage(renderer.gfx.title, 0, 0);
|
||||
if (controller.space == true)
|
||||
{
|
||||
resetGame();
|
||||
gameState.playing = true;
|
||||
}
|
||||
}
|
||||
|
||||
function resetGame()
|
||||
{
|
||||
catbug.maxHP = 3;
|
||||
catbug.HP = 3;
|
||||
catbug.x = 45;
|
||||
catbug.y = 90;
|
||||
catbug.vX = 0;
|
||||
catbug.vY = 0;
|
||||
gameState.points = 0;
|
||||
gameState.threshold = 10;
|
||||
stuff = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
|
||||
}
|
||||
|
||||
function loop()
|
||||
{
|
||||
thisFrame = new Date();
|
||||
if (thisFrame - gameState.frame < 33.34)
|
||||
{
|
||||
requestAnimationFrame(loop);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameState.frame = thisFrame;
|
||||
if (!gameState.playing)
|
||||
{ renderer.titleScreen(); }
|
||||
else
|
||||
{
|
||||
if (!gameState.over){
|
||||
if (gameState.paused) { renderer.bgPaused()}
|
||||
else{
|
||||
renderer.bg()};
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.move();
|
||||
managePickups();
|
||||
}
|
||||
renderer.drawCatbug();
|
||||
renderer.drawPickups();
|
||||
renderer.drawHP();
|
||||
if (gameState.paused)
|
||||
{
|
||||
renderer.drawPaused();
|
||||
}
|
||||
renderer.drawScore();
|
||||
checkHP();}
|
||||
else
|
||||
{
|
||||
scoreSummary();
|
||||
}
|
||||
}
|
||||
requestAnimationFrame(loop);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("keydown", pressHandler, false);
|
||||
document.addEventListener("keyup", releaseHandler, false);
|
||||
|
||||
function pressHandler(e)
|
||||
{
|
||||
switch (e.key)
|
||||
{
|
||||
case "Right":
|
||||
case "ArrowRight":
|
||||
controller.right = true;
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vX = 6;
|
||||
}
|
||||
break;
|
||||
case "Left":
|
||||
case "ArrowLeft":
|
||||
controller.left = true;
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vX = -6;
|
||||
}
|
||||
break;
|
||||
case "Up":
|
||||
case "ArrowUp":
|
||||
controller.up = true;
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vY = -6;
|
||||
}
|
||||
break;
|
||||
case "Down":
|
||||
case "ArrowDown":
|
||||
controller.down = true;
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vY = 6;
|
||||
}
|
||||
break;
|
||||
case "q":
|
||||
controller.q = true;
|
||||
gameState.playing = false;
|
||||
gameState.paused = false;
|
||||
gameState.over = false;
|
||||
break;
|
||||
case " ":
|
||||
case "Spacebar":
|
||||
controller.space = true;
|
||||
if (gameState.over)
|
||||
{
|
||||
gameState.over = false;
|
||||
gameState.playing = false;
|
||||
controller.space = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gameState.playing)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
gameState.paused = true;
|
||||
}
|
||||
else{ gameState.paused = false; }
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
console.log("That key doesn't do anything!");
|
||||
}
|
||||
}
|
||||
|
||||
function releaseHandler(e)
|
||||
{
|
||||
switch (e.key)
|
||||
{
|
||||
case "Right":
|
||||
case "ArrowRight":
|
||||
controller.right = false;
|
||||
if (catbug.vX > 0)
|
||||
{
|
||||
catbug.vX = 0;
|
||||
}
|
||||
break;
|
||||
case "Left":
|
||||
case "ArrowLeft":
|
||||
controller.left = false;
|
||||
if (catbug.vX < 0)
|
||||
{
|
||||
catbug.vX = 0;
|
||||
}
|
||||
break;
|
||||
case "Up":
|
||||
case "ArrowUp":
|
||||
controller.up = false;
|
||||
if (catbug.vY < 0)
|
||||
{
|
||||
catbug.vY = 0;
|
||||
}
|
||||
break;
|
||||
case "Down":
|
||||
case "ArrowDown":
|
||||
controller.down = false;
|
||||
if (catbug.vY > 0)
|
||||
{
|
||||
catbug.vY = 0;
|
||||
}
|
||||
break;
|
||||
case "q":
|
||||
controller.q = false;
|
||||
break;
|
||||
case " ":
|
||||
case "Spacebar":
|
||||
controller.space = false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
30
LICENSE
Executable file
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 2019, Derek Stevens
|
||||
nilix@nilfm.cc
|
||||
|
||||
Catbug & The Bravest Warriors (c) Pendelton Ward/Cartoon Hangover
|
||||
This is fan-made free software, not endorsed or otherwise sanctioned by the
|
||||
above copyright holder(s) regarding the intellectual property therein.
|
||||
|
||||
"kongtext" font (c) codeman38 (zone38.net)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must include source code and reproduce the
|
||||
above copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
99
Pickup.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
window.stuff = [{},{},{},{},{},{},{},{},{},{}]
|
||||
|
||||
function Pickup()
|
||||
{
|
||||
var pType = Math.floor(Math.random()*10);
|
||||
this.y = -16 + Math.floor(Math.random()*180);
|
||||
this.x = 320 + Math.floor(Math.random()*120);
|
||||
this.vX = -4 - Math.floor(Math.random()*catbug.maxHP);
|
||||
this.vY = 0;
|
||||
|
||||
switch (pType)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
this.sprite = renderer.gfx.peas;
|
||||
this.points = 1;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
this.sprite = renderer.gfx.pbs
|
||||
this.points = 2;
|
||||
break;
|
||||
case 8:
|
||||
case 9:
|
||||
this.sprite = renderer.gfx.taco;
|
||||
this.points = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function managePickups()
|
||||
{
|
||||
var genSpeed = 0;
|
||||
var i;
|
||||
if (gameState.points > 10)
|
||||
{
|
||||
genSpeed = Math.floor(Math.random()*gameState.points);
|
||||
}
|
||||
else genSpeed = Math.floor(Math.random()*10);
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
if (!isEmptyObject(stuff[i]))
|
||||
{
|
||||
movePickup(stuff[i]);
|
||||
if (stuff[i].x < -16)
|
||||
{
|
||||
stuff[i] = {};
|
||||
catbug.HP--;
|
||||
}
|
||||
else
|
||||
{
|
||||
var box = {};
|
||||
box.x = stuff[i].x;
|
||||
box.y = stuff[i].y;
|
||||
box.w = 36;
|
||||
box.h = 36;
|
||||
if (catbug.isInRect(box))
|
||||
{
|
||||
getPickup(stuff[i]);
|
||||
stuff[i] = {};
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (( gameState.points >= 40 && genSpeed*genSpeed >= gameState.points*4) ||
|
||||
( gameState.points <= 40 && genSpeed*genSpeed >= gameState.threshold*2))
|
||||
{
|
||||
var now = new Date();
|
||||
if (now - gameState.ticker >= 1000)
|
||||
{
|
||||
stuff[i] = new Pickup();
|
||||
gameState.ticker = now;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function movePickup(self)
|
||||
{
|
||||
self.x += self.vX;
|
||||
}
|
||||
|
||||
function getPickup(self)
|
||||
{
|
||||
gameState.points += self.points;
|
||||
if (gameState.points >= gameState.threshold)
|
||||
{
|
||||
gameState.threshold *= 2;
|
||||
catbug.maxHP++;
|
||||
catbug.HP = catbug.maxHP;
|
||||
}
|
||||
|
||||
}
|
225
Touch.js
Normal file
|
@ -0,0 +1,225 @@
|
|||
function doNothing(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
function pressUp(e)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vY = -6;
|
||||
}
|
||||
doNothing(e);
|
||||
}
|
||||
|
||||
function releaseUp(e)
|
||||
{
|
||||
if (catbug.vY < 0)
|
||||
{
|
||||
catbug.vY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function pressDown(e)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vY = 6;
|
||||
}
|
||||
doNothing(e);
|
||||
}
|
||||
|
||||
function releaseDown(e)
|
||||
{
|
||||
if (catbug.vY > 0)
|
||||
{
|
||||
catbug.vY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function pressLeft(e)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vX = -6;
|
||||
}
|
||||
doNothing(e);
|
||||
}
|
||||
|
||||
function releaseLeft(e)
|
||||
{
|
||||
if (catbug.vX < 0)
|
||||
{
|
||||
catbug.vX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function pressRight(e)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
catbug.vX = 6;
|
||||
}
|
||||
doNothing(e);
|
||||
}
|
||||
|
||||
function releaseRight(e)
|
||||
{
|
||||
if (catbug.vX > 0)
|
||||
{
|
||||
catbug.vX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function pressUpLeft(e)
|
||||
{
|
||||
pressUp(e);
|
||||
pressLeft(e);
|
||||
}
|
||||
|
||||
function releaseUpLeft(e)
|
||||
{
|
||||
releaseUp(e);
|
||||
releaseLeft(e);
|
||||
}
|
||||
|
||||
function pressUpRight(e)
|
||||
{
|
||||
pressUp(e);
|
||||
pressRight(e);
|
||||
}
|
||||
|
||||
function releaseUpRight(e)
|
||||
{
|
||||
releaseUp(e);
|
||||
releaseRight(e);
|
||||
}
|
||||
|
||||
function pressDownLeft(e)
|
||||
{
|
||||
pressDown(e);
|
||||
pressLeft(e);
|
||||
}
|
||||
|
||||
function releaseDownLeft(e)
|
||||
{
|
||||
releaseDown(e);
|
||||
releaseLeft(e);
|
||||
}
|
||||
|
||||
function pressDownRight(e)
|
||||
{
|
||||
pressDown(e);
|
||||
pressRight(e);
|
||||
}
|
||||
|
||||
function releaseDownRight(e)
|
||||
{
|
||||
releaseDown(e);
|
||||
releaseRight(e);
|
||||
}
|
||||
|
||||
function pressQ(e)
|
||||
{
|
||||
controller.q = true;
|
||||
gameState.playing = false;
|
||||
gameState.paused = false;
|
||||
gameState.over = false;
|
||||
}
|
||||
|
||||
function releaseQ(e)
|
||||
{
|
||||
controller.q = false;
|
||||
}
|
||||
|
||||
function pressPause(e)
|
||||
{
|
||||
controller.space = true;
|
||||
if (gameState.over)
|
||||
{
|
||||
gameState.over = false;
|
||||
gameState.playing = false;
|
||||
controller.space = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gameState.playing)
|
||||
{
|
||||
if (!gameState.paused)
|
||||
{
|
||||
gameState.paused = true;
|
||||
}
|
||||
else{ gameState.paused = false; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function releasePause(e)
|
||||
{
|
||||
controller.space = false;
|
||||
}
|
||||
|
||||
function prepareTouchInput()
|
||||
{
|
||||
|
||||
document.getElementById("dpad").style.visibility = "visible";
|
||||
document.getElementById("spaceButton").style.visibility = "visible";
|
||||
document.getElementById("qButton").style.visibility = "visible";
|
||||
window.dPad = {};
|
||||
|
||||
dPad.n = document.getElementById("upButton");
|
||||
dPad.s = document.getElementById("downButton");
|
||||
dPad.w = document.getElementById("leftButton");
|
||||
dPad.e = document.getElementById("rightButton");
|
||||
dPad.nw = document.getElementById("nwButton");
|
||||
dPad.ne = document.getElementById("neButton");
|
||||
dPad.sw = document.getElementById("swButton");
|
||||
dPad.se = document.getElementById("seButton");
|
||||
dPad.n.addEventListener("touchstart",pressUp);
|
||||
dPad.n.addEventListener("touchend", releaseUp);
|
||||
dPad.n.addEventListener("touchcancel", releaseUp);
|
||||
|
||||
dPad.s.addEventListener("touchstart", pressDown);
|
||||
dPad.s.addEventListener("touchend", releaseDown);
|
||||
dPad.s.addEventListener("touchcancel", releaseDown);
|
||||
dPad.e.addEventListener("touchstart", pressRight);
|
||||
dPad.e.addEventListener("touchend", releaseRight);
|
||||
dPad.e.addEventListener("touchcancel", releaseRight);
|
||||
dPad.w.addEventListener("touchstart", pressLeft);
|
||||
dPad.w.addEventListener("touchend", releaseLeft);
|
||||
dPad.w.addEventListener("touchcancel", releaseLeft);
|
||||
dPad.nw.addEventListener("touchstart", pressUpLeft);
|
||||
dPad.nw.addEventListener("touchend", releaseUpLeft);
|
||||
dPad.nw.addEventListener("touchcancel", releaseUpLeft);
|
||||
dPad.ne.addEventListener("touchstart", pressUpRight);
|
||||
dPad.ne.addEventListener("touchend", releaseUpRight);
|
||||
dPad.ne.addEventListener("touchcancel", releaseUpRight);
|
||||
dPad.sw.addEventListener("touchstart", pressDownLeft);
|
||||
dPad.sw.addEventListener("touchend", releaseDownLeft);
|
||||
dPad.sw.addEventListener("touchcancel", releaseDownLeft);
|
||||
dPad.se.addEventListener("touchstart", pressDownRight);
|
||||
dPad.se.addEventListener("touchend", releaseDownRight);
|
||||
dPad.se.addEventListener("touchcancel", releaseDownRight);
|
||||
|
||||
window.pauseButton = document.getElementById("spaceButton");
|
||||
pauseButton.addEventListener("touchstart", pressPause);
|
||||
pauseButton.addEventListener("touchend", releasePause);
|
||||
pauseButton.addEventListener("touchcancel", releasePause);
|
||||
|
||||
window.qButton = document.getElementById("qButton");
|
||||
qButton.addEventListener("touchstart", pressQ);
|
||||
qButton.addEventListener("touchend", releaseQ);
|
||||
qButton.addEventListener("touchcancel", releaseQ);
|
||||
|
||||
dPad.n.addEventListener("touchmove", doNothing);
|
||||
dPad.s.addEventListener("touchmove", doNothing);
|
||||
dPad.e.addEventListener("touchmove", doNothing);
|
||||
dPad.w.addEventListener("touchmove", doNothing);
|
||||
dPad.nw.addEventListener("touchmove", doNothing);
|
||||
dPad.ne.addEventListener("touchmove", doNothing);
|
||||
dPad.sw.addEventListener("touchmove", doNothing);
|
||||
dPad.se.addEventListener("touchmove", doNothing);
|
||||
pauseButton.addEventListener("touchmove", doNothing);
|
||||
qButton.addEventListener("touchmove", doNothing);
|
||||
}
|
BIN
assets/catbug.png
Executable file
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/hp.png
Executable file
After Width: | Height: | Size: 137 B |
BIN
assets/kong.ttf
Normal file
BIN
assets/peanutbuttersquare.png
Executable file
After Width: | Height: | Size: 366 B |
BIN
assets/press_space.png
Executable file
After Width: | Height: | Size: 257 B |
BIN
assets/rawscreen.png
Executable file
After Width: | Height: | Size: 114 KiB |
BIN
assets/seethruzone.png
Executable file
After Width: | Height: | Size: 92 KiB |
BIN
assets/sugarpeas.png
Executable file
After Width: | Height: | Size: 298 B |
BIN
assets/taco.png
Executable file
After Width: | Height: | Size: 343 B |
BIN
assets/titletext.png
Executable file
After Width: | Height: | Size: 11 KiB |
212
index.html
Executable file
|
@ -0,0 +1,212 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="HandheldFriendly" content="True" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Catbug: in the see-through zone!</title>
|
||||
<style>
|
||||
*{padding: 0; margin: 0;}
|
||||
@font-face
|
||||
{
|
||||
font-family: kong;
|
||||
src: url("assets/kong.ttf") format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
#loadFont
|
||||
{
|
||||
font-family: 'kong';
|
||||
visibility: auto;
|
||||
height:0px;
|
||||
}
|
||||
#dpad
|
||||
{
|
||||
position:fixed;
|
||||
bottom: 10px;
|
||||
left: 10px;
|
||||
background: rgba(0,0,0,0);
|
||||
z-index:2;
|
||||
width:200px;
|
||||
height:200px;
|
||||
visibility:hidden;
|
||||
}
|
||||
#upButton
|
||||
{
|
||||
position:absolute;
|
||||
top: 0px;
|
||||
left: 33%;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#downButton
|
||||
{
|
||||
position:absolute;
|
||||
bottom:0px;
|
||||
left:33%;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#leftButton
|
||||
{
|
||||
position:absolute;
|
||||
top: 33%;
|
||||
left: 0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#rightButton
|
||||
{
|
||||
position:absolute;
|
||||
top: 33%;
|
||||
right: 0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#nwButton
|
||||
{
|
||||
position:absolute;
|
||||
top: 0px;
|
||||
left:0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#neButton
|
||||
{
|
||||
position:absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#swButton
|
||||
{
|
||||
position:absolute;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#seButton
|
||||
{
|
||||
position:absolute;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
width:33%;
|
||||
height:33%;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #444444;
|
||||
}
|
||||
#spaceButton
|
||||
{
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
background:rgba(0,0,0,0.4);
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-color: #444444;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
visibility:hidden;
|
||||
}
|
||||
#qButton
|
||||
{
|
||||
position: fixed;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
background:rgba(0,0,0,0.4);
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-color: #444444;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
visibility:hidden;
|
||||
}
|
||||
canvas
|
||||
{
|
||||
font-family: 'kong';
|
||||
background: #444444;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-width: 640px;
|
||||
-ms-interpolation-mode: nearest-neighbor;
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: -o-cristp-edges;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="Catbug.js"></script>
|
||||
<script type="text/javascript" src="Engine.js"></script>
|
||||
<script type="text/javascript" src="Pickup.js"></script>
|
||||
<script type="text/javascript" src="Touch.js"></script>
|
||||
<script type="text/javascript">
|
||||
function main()
|
||||
{
|
||||
var gCanvas = document.getElementById("screen");
|
||||
window.screen = gCanvas.getContext("2d");
|
||||
renderer.loadgfx();
|
||||
if (navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini|Mobile/i))
|
||||
{
|
||||
|
||||
prepareTouchInput();
|
||||
}
|
||||
|
||||
loop();
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="main();">
|
||||
<div id="loadFont">loading font...</div>
|
||||
<div id="dpad">
|
||||
<div id="upButton"></div>
|
||||
<div id="downButton"></div>
|
||||
<div id="rightButton"></div>
|
||||
<div id="leftButton"></div>
|
||||
<div id="nwButton"></div>
|
||||
<div id="neButton"></div>
|
||||
<div id="swButton"></div>
|
||||
<div id="seButton"></div>
|
||||
</div>
|
||||
<div id="qButton"></div>
|
||||
<div id="spaceButton"></div>
|
||||
<canvas id="screen" width="320" height="180"></canvas>
|
||||
|
||||
</body>
|
||||
</html>
|