From 584728a1293a5215baaca4e7de813b2a85b8253d Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 7 Jan 2016 11:22:59 +0100 Subject: Implement smooth transitions --- src/model/EntityPosition.ts | 5 ++++- src/model/Position.ts | 26 ++++++++++++++++++++++++++ src/model/Transition.ts | 8 ++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/model/Transition.ts (limited to 'src/model') diff --git a/src/model/EntityPosition.ts b/src/model/EntityPosition.ts index 815eceb..28b3837 100644 --- a/src/model/EntityPosition.ts +++ b/src/model/EntityPosition.ts @@ -1,11 +1,14 @@ 'use strict'; -import Direction from '../model/Direction'; +import Direction from './Direction'; import Entity from './Entity'; import Position from './Position'; +import Transition from './Transition'; export default class EntityPosition { + public transition: Transition = null; + constructor(public entity: Entity, public position: Position, public direction: Direction) {} } diff --git a/src/model/Position.ts b/src/model/Position.ts index 1db37af..1f9b719 100644 --- a/src/model/Position.ts +++ b/src/model/Position.ts @@ -1,9 +1,35 @@ 'use strict'; +import Direction from './Direction'; + + export default class Position { constructor(public x: number, public y: number) {} + translate(dir: Direction, amount: number): Position { + var p = new Position(this.x, this.y); + + switch (dir) { + case Direction.North: + p.y -= amount; + break; + + case Direction.East: + p.x += amount; + break; + + case Direction.South: + p.y += amount; + break; + + case Direction.West: + p.x -= amount; + } + + return p; + } + asString(): string { return `${this.x},${this.y}`; } diff --git a/src/model/Transition.ts b/src/model/Transition.ts new file mode 100644 index 0000000..0a3e69b --- /dev/null +++ b/src/model/Transition.ts @@ -0,0 +1,8 @@ +'use strict'; + + +import Position from './Position'; + +export default class Transition { + constructor(public start: number, public end: number, public orig: Position, public dest: Position) {} +}; -- cgit v1.2.3