summaryrefslogtreecommitdiff
path: root/Homework/cs5410/bbiy/src/systems/render.js
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
commit6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch)
treeed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs5410/bbiy/src/systems/render.js
downloadmisc-undergrad-main.tar.gz
misc-undergrad-main.zip
Diffstat (limited to 'Homework/cs5410/bbiy/src/systems/render.js')
-rw-r--r--Homework/cs5410/bbiy/src/systems/render.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/Homework/cs5410/bbiy/src/systems/render.js b/Homework/cs5410/bbiy/src/systems/render.js
new file mode 100644
index 0000000..e0db7e3
--- /dev/null
+++ b/Homework/cs5410/bbiy/src/systems/render.js
@@ -0,0 +1,26 @@
+game.system.Render = (graphics) => {
+ const update = (elapsedTime, entities, _changedIds) => {
+ graphics.clear();
+
+ const entitiesArray = Object.keys(entities).map(key => entities[key]);
+ const sortedEntities = entitiesArray.sort((a, b) => {
+ const aprior = a.hasComponent("loadPriority") ? a.components.loadPriority.priority : 0;
+ const bprior = b.hasComponent("loadPriority") ? b.components.loadPriority.priority : 0;
+ return bprior - aprior;
+ });
+
+ sortedEntities.forEach((entity) => {
+ if (entity.hasComponent("position") && entity.hasComponent("appearance") && entity.hasComponent("alive")) {
+ const drawSpec = {...entity.components.position, ...entity.components.appearance};
+ if (entity.hasComponent("sprite")) {
+ game.sprites[entity.components.sprite.spriteName].draw(elapsedTime, drawSpec);
+ } else if (entity.hasComponent("particles") && entity.particleSprite) {
+ entity.particleSprite.draw(elapsedTime, drawSpec);
+ }
+ }
+ });
+
+ return new Set();
+ };
+ return { update };
+};