summaryrefslogtreecommitdiff
path: root/centipede/js/game/object.js
diff options
context:
space:
mode:
authorLizzy Hunt <lizzy.hunt@usu.edu>2024-01-12 19:13:13 -0700
committerLizzy Hunt <lizzy.hunt@usu.edu>2024-01-12 19:13:13 -0700
commit07670ef8afb5a273267ea7149d5f7eef02fdf66b (patch)
tree2d0c8e64936c7fa2588786f4af199abf1bb48a60 /centipede/js/game/object.js
parent3ac982dfa653f0eb7fbceeb1678a3cae93b512f4 (diff)
downloadsimponic.xyz-07670ef8afb5a273267ea7149d5f7eef02fdf66b.tar.gz
simponic.xyz-07670ef8afb5a273267ea7149d5f7eef02fdf66b.zip
add subprojects
Diffstat (limited to 'centipede/js/game/object.js')
-rw-r--r--centipede/js/game/object.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/centipede/js/game/object.js b/centipede/js/game/object.js
new file mode 100644
index 0000000..1e22ec6
--- /dev/null
+++ b/centipede/js/game/object.js
@@ -0,0 +1,51 @@
+game.Object = (object) => {
+ object.dx = object.dx ?? 0;
+ object.dy = object.dy ?? 0;
+ object.rot = object.rot ?? 0;
+ object.drot = object.drot ?? 0;
+ object.alive = object.alive ?? true;
+
+ object.poisonedTimer = object.poisonedTimer ?? 4000;
+ object.poisoned = false;
+ object.elapsedPoisonedTimer = 0;
+ object.poison = () => {
+ object.poisoned = true;
+ object.elapsedPoisonedTimer = 0;
+ }
+
+ object.intersects = (other) => {
+ if (object.x + object.width <= other.x) {
+ return false;
+ }
+ if (object.x >= other.x + other.width) {
+ return false;
+ }
+ if (object.y + object.height <= other.y) {
+ return false;
+ }
+ if (object.y >= other.y + other.height) {
+ return false;
+ }
+ return true;
+ }
+
+ object.update = (elapsedTime) => {
+ if (object.poisoned && object.y >= game.height - object.height) {
+ object.elapsedPoisonedTimer += elapsedTime;
+ if (object.elapsedPoisonedTimer > object.poisonedTimer) {
+ object.poisoned = false;
+ object.elapsedPoisonedTimer = 0;
+ }
+ }
+
+ object.x += (object.poisoned ? 0 : object.dx)*elapsedTime;
+ object.y += (object.poisoned ? 0.2 : object.dy)*elapsedTime;
+ object.rot += object.drot*elapsedTime;
+ };
+
+ object.draw = (elapsedTime) => {
+ object.sprite.draw(elapsedTime, object);
+ };
+
+ return object;
+};