summaryrefslogtreecommitdiff
path: root/Homework/cs5410/bbiy/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'Homework/cs5410/bbiy/src/render')
-rw-r--r--Homework/cs5410/bbiy/src/render/graphics.js47
-rw-r--r--Homework/cs5410/bbiy/src/render/sprites.js156
2 files changed, 203 insertions, 0 deletions
diff --git a/Homework/cs5410/bbiy/src/render/graphics.js b/Homework/cs5410/bbiy/src/render/graphics.js
new file mode 100644
index 0000000..aa4195e
--- /dev/null
+++ b/Homework/cs5410/bbiy/src/render/graphics.js
@@ -0,0 +1,47 @@
+// Pretty much a copy of my centipede code
+game.graphics = (
+ (context) => {
+ context.imageSmoothingEnabled = false;
+ const clear = () => {
+ context.clearRect(0, 0, game.canvas.width, game.canvas.height);
+ };
+
+ const Sprite = ({image, spriteX, spriteY, spriteWidth, spriteHeight, timePerFrame, cols, rows, numFrames, color, drawFunction}) => {
+ timePerFrame = timePerFrame ?? 100;
+ numFrames = numFrames ?? 1;
+ cols = cols ?? numFrames;
+ rows = rows ?? 1;
+ spriteX = spriteX ?? 0;
+ spriteY = spriteY ?? 0;
+
+ let currentFrame = 0;
+ let lastTime = performance.now();
+
+ let draw;
+ if (!drawFunction) {
+ draw = (_elapsedTime, {x, y, rot, width, height}) => {
+ if (numFrames > 1) {
+ if (performance.now()-lastTime > timePerFrame) {
+ lastTime = performance.now();
+ currentFrame = (currentFrame + 1) % numFrames;
+ }
+ }
+ context.save();
+ context.translate(x+width/2, y+height/2);
+ context.rotate(rot * Math.PI / 180);
+ context.translate(-x-width/2, -y-height/2);
+ const row = currentFrame % rows;
+ const col = Math.floor(currentFrame / rows);
+ context.drawImage(image, spriteX+col*spriteWidth, spriteY+row*spriteHeight, spriteWidth, spriteHeight, x, y, width, height);
+
+ context.restore();
+ };
+ } else {
+ draw = (elapsedTime, drawSpec) => drawFunction(elapsedTime, drawSpec, context);
+ }
+ return { draw };
+ }
+
+ return { clear, Sprite };
+ }
+)(game.canvas.context);
diff --git a/Homework/cs5410/bbiy/src/render/sprites.js b/Homework/cs5410/bbiy/src/render/sprites.js
new file mode 100644
index 0000000..d8ae126
--- /dev/null
+++ b/Homework/cs5410/bbiy/src/render/sprites.js
@@ -0,0 +1,156 @@
+game.sprites = {
+ bigBlue: game.graphics.Sprite({
+ image: game.assets.bigblue,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ flag: game.graphics.Sprite({
+ image: game.assets.flag,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ floor: game.graphics.Sprite({
+ image: game.assets.floor,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ hedge: game.graphics.Sprite({
+ image: game.assets.hedge,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 250,
+ }),
+ grass: game.graphics.Sprite({
+ image: game.assets.grass,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ lava: game.graphics.Sprite({
+ image: game.assets.lava,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ rock: game.graphics.Sprite({
+ image: game.assets.rock,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wall: game.graphics.Sprite({
+ image: game.assets.wall,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ water: game.graphics.Sprite({
+ image: game.assets.water,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordBigBlue: game.graphics.Sprite({
+ image: game.assets.wordBigBlue,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordFlag: game.graphics.Sprite({
+ image: game.assets.wordFlag,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordIs: game.graphics.Sprite({
+ image: game.assets.wordIs,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordKill: game.graphics.Sprite({
+ image: game.assets.wordKill,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordLava: game.graphics.Sprite({
+ image: game.assets.wordLava,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordPush: game.graphics.Sprite({
+ image: game.assets.wordPush,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordRock: game.graphics.Sprite({
+ image: game.assets.wordRock,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordSink: game.graphics.Sprite({
+ image: game.assets.wordSink,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordStop: game.graphics.Sprite({
+ image: game.assets.wordStop,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordWall: game.graphics.Sprite({
+ image: game.assets.wordWall,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordWater: game.graphics.Sprite({
+ image: game.assets.wordWater,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordWin: game.graphics.Sprite({
+ image: game.assets.wordWin,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+ wordYou: game.graphics.Sprite({
+ image: game.assets.wordYou,
+ spriteHeight: 24,
+ spriteWidth: 24,
+ numFrames: 3,
+ timePerFrame: 100,
+ }),
+};