Refactor serialization

This commit is contained in:
schmelczerandras 2020-10-07 10:04:05 +02:00
commit b3da27e73b
35 changed files with 142 additions and 133 deletions

View file

@ -6,7 +6,7 @@ import {
settings,
CommandExecutors,
MoveActionCommand,
serializable,
serializesTo,
} from 'shared';
import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box';
@ -15,7 +15,7 @@ import { CirclePhysical } from './circle-physical';
import { Physical } from '../physics/physical';
import { PhysicalContainer } from '../physics/containers/physical-container';
@serializable(CharacterBase)
@serializesTo(CharacterBase)
export class CharacterPhysical extends CharacterBase implements Physical {
public readonly canCollide = true;
public readonly isInverted = false;

View file

@ -4,7 +4,7 @@ import {
clamp,
CommandExecutors,
GameObject,
serializable,
serializesTo,
settings,
StepCommand,
} from 'shared';
@ -15,7 +15,7 @@ import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base';
import { moveCircle } from '../physics/move-circle';
import { PhysicalContainer } from '../physics/containers/physical-container';
@serializable(Circle)
@serializesTo(Circle)
export class CirclePhysical implements Circle, Physical {
readonly isInverted = false;
readonly canCollide = true;

View file

@ -1,11 +1,11 @@
import { vec2, vec3 } from 'gl-matrix';
import { LampBase, settings, id, serializable } from 'shared';
import { LampBase, settings, id, serializesTo } from 'shared';
import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box';
import { Physical } from '../physics/physical';
@serializable(LampBase)
@serializesTo(LampBase)
export class LampPhysical extends LampBase implements Physical {
public readonly canCollide = false;
public readonly isInverted = false;

View file

@ -1,10 +1,10 @@
import { vec2 } from 'gl-matrix';
import { clamp01, mix, TunnelBase, id, serializable } from 'shared';
import { clamp01, mix, TunnelBase, id, serializesTo } from 'shared';
import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box';
import { StaticPhysical } from '../physics/containers/static-physical-object';
@serializable(TunnelBase)
@serializesTo(TunnelBase)
export class TunnelPhysical extends TunnelBase implements StaticPhysical {
public readonly canCollide = true;
public readonly isInverted = true;

View file

@ -1,9 +1,17 @@
import { glMatrix } from 'gl-matrix';
import { CharacterBase, LampBase, overrideDeserialization, TunnelBase } from 'shared';
import { Game } from './scripts/game';
import { CharacterView } from './scripts/objects/character-view';
import { LampView } from './scripts/objects/lamp-view';
import { TunnelView } from './scripts/objects/tunnel-view';
import './styles/main.scss';
glMatrix.setMatrixArrayType(Array);
overrideDeserialization(CharacterBase, CharacterView);
overrideDeserialization(TunnelBase, TunnelView);
overrideDeserialization(LampBase, LampView);
const main = async () => {
try {
await new Game().start();

View file

@ -29,14 +29,10 @@ import { RenderCommand } from './commands/types/render';
import { Configuration } from './config/configuration';
import { DeltaTimeCalculator } from './helper/delta-time-calculator';
import { rgb } from './helper/rgb';
import { CharacterView } from './objects/character-view';
import { TunnelView } from './objects/tunnel-view';
import { LampView } from './objects/lamp-view';
import { GameObjectContainer } from './objects/game-object-container';
import { BlobShape } from './shapes/blob-shape';
const a = [CharacterView, TunnelView, LampView];
export class Game {
public readonly gameObjects = new GameObjectContainer();
private readonly canvas: HTMLCanvasElement = document.querySelector('canvas#main');

View file

@ -1,9 +1,8 @@
import { vec2 } from 'gl-matrix';
import { CharacterBase, CommandExecutors, deserializable } from 'shared';
import { CharacterBase, CommandExecutors } from 'shared';
import { RenderCommand } from '../commands/types/render';
import { BlobShape } from '../shapes/blob-shape';
@deserializable(CharacterBase)
export class CharacterView extends CharacterBase {
private shape = new BlobShape();

View file

@ -1,9 +1,8 @@
import { vec2, vec3 } from 'gl-matrix';
import { CircleLight } from 'sdf-2d';
import { CommandExecutors, deserializable, Id, LampBase } from 'shared';
import { CommandExecutors, Id, LampBase } from 'shared';
import { RenderCommand } from '../commands/types/render';
@deserializable(LampBase)
export class LampView extends LampBase {
private light: CircleLight;

View file

@ -1,9 +1,8 @@
import { vec2 } from 'gl-matrix';
import { InvertedTunnel } from 'sdf-2d';
import { CommandExecutors, deserializable, Id, TunnelBase } from 'shared';
import { CommandExecutors, Id, TunnelBase } from 'shared';
import { RenderCommand } from '../commands/types/render';
@deserializable(TunnelBase)
export class TunnelView extends TunnelBase {
private shape: InvertedTunnel;

View file

@ -1,8 +1,8 @@
import { GameObject } from '../../objects/game-object';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class CreateObjectsCommand extends Command {
public constructor(public readonly objects: Array<GameObject>) {
super();

View file

@ -1,8 +1,8 @@
import { CharacterBase } from '../../objects/types/character-base';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class CreatePlayerCommand extends Command {
public constructor(public readonly character: CharacterBase) {
super();

View file

@ -1,8 +1,8 @@
import { Id } from '../../transport/identity';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class DeleteObjectsCommand extends Command {
public constructor(public readonly ids: Array<Id>) {
super();

View file

@ -1,8 +1,8 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class MoveActionCommand extends Command {
public constructor(public readonly delta: vec2) {
super();

View file

@ -1,8 +1,8 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class PrimaryActionCommand extends Command {
public constructor(public readonly position: vec2) {
super();

View file

@ -1,8 +1,8 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class SecondaryActionCommand extends Command {
public constructor(public readonly position: vec2) {
super();

View file

@ -1,8 +1,8 @@
import { Rectangle } from '../../helper/rectangle';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class SetViewAreaActionCommand extends Command {
public constructor(public readonly viewArea: Rectangle) {
super();

View file

@ -1,8 +1,8 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class TernaryActionCommand extends Command {
public constructor(public readonly position: vec2) {
super();

View file

@ -1,8 +1,8 @@
import { GameObject } from '../../objects/game-object';
import { serializable } from '../../transport/serializable/serializable';
import { serializable } from '../../transport/serialization/serializable';
import { Command } from '../command';
@serializable()
@serializable
export class UpdateObjectsCommand extends Command {
public constructor(public readonly objects: Array<GameObject>) {
super();

View file

@ -1,7 +1,7 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../transport/serializable/serializable';
import { serializable } from '../transport/serialization/serializable';
@serializable()
@serializable
export class Circle {
constructor(public center: vec2, public radius: number) { }

View file

@ -1,7 +1,7 @@
import { vec2 } from 'gl-matrix';
import { serializable } from '../transport/serializable/serializable';
import { serializable } from '../transport/serialization/serializable';
@serializable()
@serializable
export class Rectangle {
constructor(public topLeft = vec2.create(), public size = vec2.create()) { }

Some files were not shown because too many files have changed in this diff Show more