Add projectile damage

This commit is contained in:
schmelczerandras 2020-10-12 21:46:23 +02:00
parent f9f6825776
commit 555be9d602
14 changed files with 111 additions and 40 deletions

View file

@ -33,7 +33,7 @@ export class TouchListener extends CommandGenerator {
target.addEventListener('touchmove', (event: TouchEvent) => {
event.preventDefault();
const position = this.positionFromEvent(event);
const position = this.positionFromEvent(event, true);
const movement = vec2.subtract(vec2.create(), position, this.previousPosition);
if (vec2.squaredLength(movement) > 0) {
@ -50,11 +50,18 @@ export class TouchListener extends CommandGenerator {
});
}
private positionFromEvent(event: TouchEvent): vec2 {
private positionFromEvent(event: TouchEvent, invert = false): vec2 {
const touches = Array.prototype.slice.call(event.touches);
const center = touches.reduce(
(center: vec2, touch: Touch) =>
vec2.add(center, center, vec2.fromValues(-touch.clientX, -touch.clientY)),
vec2.add(
center,
center,
vec2.fromValues(
touch.clientX * (invert ? -1 : 1),
touch.clientY * (invert ? -1 : 1),
),
),
vec2.create(),
);

View file

@ -103,7 +103,7 @@ export class Game {
{
shadowTraceCount: 16,
paletteSize: 10,
enableStopwatch: true,
//enableStopwatch: true,
},
);
@ -112,7 +112,7 @@ export class Game {
colorPalette: [
rgb(1, 1, 1),
rgb(0.4, 0.4, 0.4),
rgb(0.3, 1, 1),
rgb(1, 1, 1),
...settings.playerColors,
],
enableHighDpiRendering: false,

View file

@ -1,19 +1,22 @@
import { vec2 } from 'gl-matrix';
import { Circle, Renderer } from 'sdf-2d';
import { Id, ProjectileBase } from 'shared';
import { Circle, CircleLight, Renderer } from 'sdf-2d';
import { Id, ProjectileBase, rgb } from 'shared';
import { ViewObject } from './view-object';
export class ProjectileView extends ProjectileBase implements ViewObject {
private circle: Circle;
private light: CircleLight;
constructor(id: Id, center: vec2, radius: number) {
super(id, center, radius);
this.circle = new Circle(center, radius);
this.circle = new Circle(center, radius / 2);
this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.35);
}
public step(deltaTimeInMilliseconds: number): void {}
public draw(renderer: Renderer): void {
renderer.addDrawable(this.circle);
renderer.addDrawable(this.light);
}
}