count steps

This commit is contained in:
Daniel Bulant 2021-04-08 19:45:55 +02:00
parent 13d23ce5f1
commit 44ec4195c2
4 changed files with 21 additions and 5 deletions

View file

@ -1,4 +1,5 @@
import Phaser, { Animations } from "phaser"; import Phaser, { Animations } from "phaser";
import { steps } from "../stores/step";
import { keys } from "./input"; import { keys } from "./input";
const textureWidth = 100; const textureWidth = 100;
@ -18,12 +19,14 @@ export class GameScene extends Phaser.Scene {
offset: { x: number, y: nunber }, offset: { x: number, y: nunber },
size: { x: number, y: number }, size: { x: number, y: number },
px: number, px: number,
steps: number,
map: (string | null | { map: (string | null | {
type: string, type: string,
direction?: number direction?: number
})[][] })[][]
}} */ }} */
this.map = map; this.map = map;
steps.set(map.steps);
} }
preload() { preload() {
@ -87,7 +90,6 @@ export class GameScene extends Phaser.Scene {
var type = item.type; var type = item.type;
if(type === "angel") type = this.map.sprite; if(type === "angel") type = this.map.sprite;
if(this.textures.get(type).frameTotal > 1) { if(this.textures.get(type).frameTotal > 1) {
console.log("Generating animation for", item);
var sprite = this.add.sprite(x * this.map.px, y * this.map.px); var sprite = this.add.sprite(x * this.map.px, y * this.map.px);
item.animated = true; item.animated = true;
if(!this.anims.exists(type)) { if(!this.anims.exists(type)) {
@ -117,6 +119,12 @@ export class GameScene extends Phaser.Scene {
this.player.x = x; this.player.x = x;
this.player.y = y; this.player.y = y;
} }
if(item.type !== "wind") {
item.sprite.setDepth(1);
} else {
item.sprite.setDepth(0);
}
this.children.queueDepthSort();
} else { } else {
item.sprite = null; item.sprite = null;
} }
@ -159,7 +167,7 @@ export class GameScene extends Phaser.Scene {
} }
} }
movePlayer(moveX, moveY) { movePlayer(moveX, moveY, fromWind = false) {
if(!this.canMove) return; if(!this.canMove) return;
var toX = this.player.x + moveX; var toX = this.player.x + moveX;
var toY = this.player.y + moveY; var toY = this.player.y + moveY;
@ -171,13 +179,16 @@ export class GameScene extends Phaser.Scene {
this.move(toX, toY, toX + moveX, toY + moveY); this.move(toX, toY, toX + moveX, toY + moveY);
} }
this.canMove = false; this.canMove = false;
if(!fromWind) {
steps.update(t => --t);
}
this.move(this.player.x, this.player.y, toX, toY, () => { this.move(this.player.x, this.player.y, toX, toY, () => {
this.canMove = true; this.canMove = true;
this.player.x = toX; this.player.x = toX;
this.player.y = toY; this.player.y = toY;
if(this.winds[toX][toY]) { if(this.winds[toX][toY]) {
var movement = this.getMovementFromDirection(this.winds[toX][toY].direction); var movement = this.getMovementFromDirection(this.winds[toX][toY].direction);
this.movePlayer(movement.x, movement.y); this.movePlayer(movement.x, movement.y, true);
} }
}); });
} }

View file

@ -13,6 +13,7 @@ function wind(direction) {
offset: { x: number, y: nunber }, offset: { x: number, y: nunber },
size: { x: number, y: number }, size: { x: number, y: number },
px: number, px: number,
steps: number,
map: { map: {
x: number, x: number,
y: number, y: number,
@ -33,6 +34,7 @@ export const maps = {
x: 5, x: 5,
y: 7 y: 7
}, },
steps: 11,
px: 100, // block size px: 100, // block size
map: [ map: [
["barrier", "barrier", "angel" , "barrier", "barrier"], ["barrier", "barrier", "angel" , "barrier", "barrier"],

View file

@ -4,6 +4,7 @@
import { characters } from "../stores/characters.js"; import { characters } from "../stores/characters.js";
import { onMount } from "svelte"; import { onMount } from "svelte";
import { setCanvas, setMap, resize, stop } from "../game"; import { setCanvas, setMap, resize, stop } from "../game";
import { steps } from "../stores/step";
export var current; export var current;
@ -29,7 +30,6 @@
return Array(+digits.join("") + 1).join("M") + roman; return Array(+digits.join("") + 1).join("M") + roman;
} }
var steps = 11;
var canvas; var canvas;
onMount(() => { onMount(() => {
@ -46,6 +46,6 @@
<svelte:window on:resize={resize} /> <svelte:window on:resize={resize} />
<GameOverlay {steps} chapter={toRoman(characterIndex + 1)} /> <GameOverlay steps={$steps} chapter={toRoman(characterIndex + 1)} />
<canvas bind:this={canvas} /> <canvas bind:this={canvas} />

3
src/stores/step.js Normal file
View file

@ -0,0 +1,3 @@
import { writable } from "svelte/store";
export const steps = writable(0);