Improve gameplay

This commit is contained in:
schmelczerandras 2020-10-20 08:56:38 +02:00
parent e02a5b264c
commit 7c76b16d13
53 changed files with 1084 additions and 404 deletions

View file

@ -1,29 +1,33 @@
import { vec2 } from 'gl-matrix';
import { CircleLight, Renderer } from 'sdf-2d';
import { Id, ProjectileBase, rgb, UpdateMessage } from 'shared';
import { CircleLight, ColorfulCircle, Renderer } from 'sdf-2d';
import { Id, ProjectileBase, settings, UpdateMessage } from 'shared';
import { ViewObject } from './view-object';
import { Circle } from '../shapes/circle';
export class ProjectileView extends ProjectileBase implements ViewObject {
private circle: InstanceType<typeof Circle>;
private circle: ColorfulCircle;
private light: CircleLight;
constructor(id: Id, center: vec2, radius: number) {
super(id, center, radius);
this.circle = new Circle(center, radius / 2);
this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.15);
}
update(updates: Array<UpdateMessage>): void {
updates.forEach((u) => ((this as any)[u.key] = u.value));
constructor(
id: Id,
center: vec2,
radius: number,
colorIndex: number,
strength: number,
) {
super(id, center, radius, colorIndex, strength);
this.circle = new ColorfulCircle(center, radius / 2, colorIndex);
this.light = new CircleLight(center, settings.palette[colorIndex], 0);
}
public step(deltaTimeInMilliseconds: number): void {
this.circle.center = this.center;
this.light.center = this.center;
this.light.intensity = (0.15 * this.strength) / settings.projectileMaxStrength;
}
public draw(renderer: Renderer): void {
public beforeDestroy(): void {}
public draw(renderer: Renderer, overlay: HTMLElement): void {
renderer.addDrawable(this.circle);
renderer.addDrawable(this.light);
}