12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- var lastTime = new Date().getTime();
- var canvas = document.getElementById("viewer");
- var context = canvas.getContext("2d");
- var atlas = new SpriteAtlas("./assets/", "sprites.xml");
- var currentStage;
- var lastFailedId = "void";
- let stages = [];
- let sets = [];
- let setsLoaded = [];
- stages.push({
- id: "empty",
- setup: () => { },
- update: (delta) => { },
- draw: (context, delta) => { },
- cleanup: () => { },
- });
- currentStage = stages[0];
- atlas.load().then(() => {
- resize();
- currentStage.setup();
- raf();
- }).catch(e => console.error(e));
- function raf() {
- let currentTime = new Date().getTime();
- let delta = (currentTime - lastTime) / 10;
- context.height = context.height;
- context.clearRect(0, 0, canvas.width, canvas.height);
- context.save();
- context.translate(0.5, 0.5);
- viewerUpdate(delta);
- viewerDraw(context, delta);
- context.restore();
- window.requestAnimationFrame(() => raf());
- lastTime = currentTime;
- };
- window.addEventListener('resize', resize);
- function resize(event) {
- let dpi = window.devicePixelRatio;
- canvas.width = canvas.clientWidth;
- canvas.height = canvas.clientHeight;
- context.width = canvas.clientWidth / dpi;
- context.height = canvas.clientHeight / dpi;
- context.webkitImageSmoothingEnabled = true;
- context.imageSmoothingEnabled = true;
- }
- function viewerUpdate(delta) {
- center = { x: canvas.width / 2, y: canvas.height / 2 };
- currentStage.update(delta);
- }
- function viewerDraw(context, delta) {
- context.save();
- context.translate(center.x, center.y);
- currentStage.draw(context, delta);
- context.restore();
- }
- function play(id) {
- if (currentStage && currentStage.id == id) {
- return;
- }
- if (currentStage) {
- currentStage.cleanup();
- }
- currentStage = stages.find(stage => stage.id == id);
- if (!currentStage) {
- lastFailedId = id;
- play("void");
- return;
- }
- currentStage.setup();
- }
- function getSet(setId) {
- let found = sets.find(set => set.id == setId);
- if(!found) {
- throw new Error("Set not found:", setId);
- }
- return found;
- }
|