From 6c896c3f23895582967aadb8d379d617d757f2fd Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 7 Jan 2016 21:01:02 +0100 Subject: [PATCH 01/10] Implement collision handling --- src/control/MapContext.ts | 55 ++++++++++++++++++++++++++--- src/model/MapData.ts | 10 ++++-- static/resources/map/test.json | 64 +++++++++++++++++----------------- 3 files changed, 91 insertions(+), 38 deletions(-) diff --git a/src/control/MapContext.ts b/src/control/MapContext.ts index 48e8b9e..4e69408 100644 --- a/src/control/MapContext.ts +++ b/src/control/MapContext.ts @@ -19,7 +19,18 @@ export default class MapContext { playerEntity: EntityPosition; + collision: number[][]; + + constructor(private map: MapData, private inputHandler: InputHandler) { + this.collision = new Array(map.width); + for (let i = 0; i < map.width; i++) { + this.collision[i] = new Array(map.height); + + for (let j = 0; j < map.height; j++) + this.collision[i][j] = map.collision[j][i] == '0' ? 0 : 1; + } + this.playerEntity = new EntityPosition( new Entity('square'), new Position(8, 8), @@ -28,6 +39,12 @@ export default class MapContext { this.addEntity(this.playerEntity); + this.addEntity(new EntityPosition( + new Entity('square'), + new Position(10, 10), + Direction.East + )); + this.view = new MapView( map, this.entities, @@ -41,24 +58,49 @@ export default class MapContext { }); } + + private incCollision(p: Position) { + if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) + this.collision[p.x][p.y]++; + } + + private decCollision(p: Position) { + if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) + this.collision[p.x][p.y]--; + } + + private collides(p: Position): boolean { + if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) + return (this.collision[p.x][p.y] > 0); + else + return true; + } + private addEntity(entity: EntityPosition) { this.entities.push(entity); + + this.incCollision(entity.position); } private addTransition(entity: EntityPosition, dest: Position, start: number, dur: number) { entity.transition = new Transition(start, start+dur, entity.position, dest); + + this.incCollision(dest); } private finishTransition(entity: EntityPosition) { + this.decCollision(entity.position); + entity.position = entity.transition.dest; entity.transition = null; + } private updateState(time: number): boolean { var ret = false; while (true) { - var origTime = time; + let origTime = time; if (this.playerEntity.transition && this.playerEntity.transition.end <= time) { origTime = this.playerEntity.transition.end; @@ -69,7 +111,7 @@ export default class MapContext { if (this.playerEntity.transition) return true; - var dir: Direction = null; + let dir: Direction = null; if (this.inputHandler.keys[InputHandler.Up]) dir = Direction.North; @@ -84,8 +126,13 @@ export default class MapContext { return ret; this.playerEntity.direction = dir; - this.addTransition(this.playerEntity, this.playerEntity.position.translate(dir, 1), - origTime, 250); + ret = true; + + let dest = this.playerEntity.position.translate(dir, 1); + if (this.collides(dest)) + return true; + + this.addTransition(this.playerEntity, dest, origTime, 250); } } } diff --git a/src/model/MapData.ts b/src/model/MapData.ts index 54894c0..14f2586 100644 --- a/src/model/MapData.ts +++ b/src/model/MapData.ts @@ -9,12 +9,18 @@ interface Input { export default class MapData { tiles: {[key: string]: {file: string}}; - public collision: string[]; - public layers: string[][][]; + collision: string[]; + layers: string[][][]; + + width: number; + height: number; constructor(data: Input) { this.tiles = data.tiles; this.collision = data.collision; this.layers = data.layers; + + this.height = this.collision.length; + this.width = this.collision[0].length; } } diff --git a/static/resources/map/test.json b/static/resources/map/test.json index 12b1894..e76b195 100644 --- a/static/resources/map/test.json +++ b/static/resources/map/test.json @@ -5,38 +5,38 @@ ">": {"rotate": 0, "file": "road_right"} }, "collision": [ - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111", - "11111111111111111111111111111111" + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000110000000000000000000", + "00000000000000000000000000000000" ], "layers": [ [ From 00970b9faa9338817ec3dddced6dadef69d86fe3 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 08:27:38 +0100 Subject: [PATCH 02/10] Refactor collision handling --- src/control/MapContext.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/control/MapContext.ts b/src/control/MapContext.ts index 4e69408..73b3c4d 100644 --- a/src/control/MapContext.ts +++ b/src/control/MapContext.ts @@ -59,21 +59,22 @@ export default class MapContext { } + private inMap(p: Position): boolean { + return p.x >= 0 && p.x < this.map.width && p.y >= 0 && p.y < this.map.height; + } + private incCollision(p: Position) { - if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) + if (this.inMap(p)) this.collision[p.x][p.y]++; } private decCollision(p: Position) { - if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) + if (this.inMap(p)) this.collision[p.x][p.y]--; } private collides(p: Position): boolean { - if (this.collision[p.x] && !_.isUndefined(this.collision[p.x][p.y])) - return (this.collision[p.x][p.y] > 0); - else - return true; + return (!this.inMap(p)) || (this.collision[p.x][p.y] > 0); } private addEntity(entity: EntityPosition) { From a2ea4e5ef5233c7373ceeaaccc3d8df72dc6359e Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 09:00:07 +0100 Subject: [PATCH 03/10] Be explicit about return types, fix a few visibilities --- src/control/MapContext.ts | 19 +++++++++---------- src/model/EntityPosition.ts | 2 +- src/view/InputHandler.ts | 4 ++-- src/view/MapView.ts | 10 +++++----- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/control/MapContext.ts b/src/control/MapContext.ts index 73b3c4d..1660ad4 100644 --- a/src/control/MapContext.ts +++ b/src/control/MapContext.ts @@ -13,13 +13,12 @@ import MapView from '../view/MapView'; export default class MapContext { - view: MapView; + private view: MapView; - entities: EntityPosition[] = []; - playerEntity: EntityPosition; + private entities: EntityPosition[] = []; + private playerEntity: EntityPosition; - - collision: number[][]; + private collision: number[][]; constructor(private map: MapData, private inputHandler: InputHandler) { @@ -63,12 +62,12 @@ export default class MapContext { return p.x >= 0 && p.x < this.map.width && p.y >= 0 && p.y < this.map.height; } - private incCollision(p: Position) { + private incCollision(p: Position): void { if (this.inMap(p)) this.collision[p.x][p.y]++; } - private decCollision(p: Position) { + private decCollision(p: Position): void { if (this.inMap(p)) this.collision[p.x][p.y]--; } @@ -77,19 +76,19 @@ export default class MapContext { return (!this.inMap(p)) || (this.collision[p.x][p.y] > 0); } - private addEntity(entity: EntityPosition) { + private addEntity(entity: EntityPosition): void { this.entities.push(entity); this.incCollision(entity.position); } - private addTransition(entity: EntityPosition, dest: Position, start: number, dur: number) { + private addTransition(entity: EntityPosition, dest: Position, start: number, dur: number): void { entity.transition = new Transition(start, start+dur, entity.position, dest); this.incCollision(dest); } - private finishTransition(entity: EntityPosition) { + private finishTransition(entity: EntityPosition): void { this.decCollision(entity.position); entity.position = entity.transition.dest; diff --git a/src/model/EntityPosition.ts b/src/model/EntityPosition.ts index 28b3837..19bcad5 100644 --- a/src/model/EntityPosition.ts +++ b/src/model/EntityPosition.ts @@ -8,7 +8,7 @@ import Transition from './Transition'; export default class EntityPosition { - public transition: Transition = null; + transition: Transition = null; constructor(public entity: Entity, public position: Position, public direction: Direction) {} } diff --git a/src/view/InputHandler.ts b/src/view/InputHandler.ts index dcfd85d..86d4ec6 100644 --- a/src/view/InputHandler.ts +++ b/src/view/InputHandler.ts @@ -7,9 +7,9 @@ import Direction from '../model/Direction'; class InputHandler { keys: {[key: number]: boolean} = {}; - listeners: (() => void)[] = []; + private listeners: (() => void)[] = []; - private callListeners() { + private callListeners(): void { this.listeners.forEach(l => l()); } diff --git a/src/view/MapView.ts b/src/view/MapView.ts index 230ecf3..daab7cb 100644 --- a/src/view/MapView.ts +++ b/src/view/MapView.ts @@ -100,7 +100,7 @@ export default class MapView { }); } - private setSize() { + private setSize(): void { var e = document.documentElement; var w = window.innerWidth || e.clientWidth || body.clientWidth; var h = window.innerHeight || e.clientHeight || body.clientHeight; @@ -114,7 +114,7 @@ export default class MapView { this.redraw() } - private drawTile(x: number, y: number, tile: HTMLImageElement) { + private drawTile(x: number, y: number, tile: HTMLImageElement): void { if (!tile) return; @@ -139,7 +139,7 @@ export default class MapView { return !!e.transition; } - private setOrigin(time: number) { + private setOrigin(time: number): Rect { var origin = entityPosition(this.origin, time); var w = this.canvas.width; @@ -156,7 +156,7 @@ export default class MapView { ); } - private draw(time: number) { + private draw(time: number): void { this.updateState(time); this.redrawPending = false; @@ -204,7 +204,7 @@ export default class MapView { this.redraw(); } - redraw() { + redraw(): void { if (this.redrawPending) return; From 9f74746b2ebffbfe40f359171be2698532ef0810 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 10:12:53 +0100 Subject: [PATCH 04/10] util: add missing semicolons --- src/util.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util.ts b/src/util.ts index 2292820..6ab90ce 100644 --- a/src/util.ts +++ b/src/util.ts @@ -2,8 +2,8 @@ export function mapPromises(promises: {[key: string]: Promise}): Promise<{[key: string]: T}> { - var p: Promise[] = [] - var ret: {[key: string]: T} = {} + var p: Promise[] = []; + var ret: {[key: string]: T} = {}; _.forOwn(promises, (v, k) => { p.push(v.then(r => {ret[k] = r;})); From 4de2a6636a4de682edc5c3bbd4d1f5e940e879a3 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 12:18:40 +0100 Subject: [PATCH 05/10] InputHandler: prevent default for relavant keys --- src/app.ts | 12 +++++++++++- src/util.ts | 9 +++++++++ src/view/InputHandler.ts | 12 +++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/app.ts b/src/app.ts index e47d41f..37aae93 100644 --- a/src/app.ts +++ b/src/app.ts @@ -11,6 +11,16 @@ import MapContext from './control/MapContext'; import MapData from './model/MapData'; import InputHandler from './view/InputHandler'; +import * as util from './util'; + + +var relevantKeys = [ + InputHandler.Up, + InputHandler.Right, + InputHandler.Down, + InputHandler.Left, +]; + var mapContext: MapContext; @@ -19,7 +29,7 @@ window.onload = () => { xhr.onload = function() { var mapDef = new MapData(JSON.parse(this.responseText)); - var inputHandler = new InputHandler(); + var inputHandler = new InputHandler(util.numberArrayToMap(relevantKeys)); mapContext = new MapContext(mapDef, inputHandler); } diff --git a/src/util.ts b/src/util.ts index 6ab90ce..ad2b482 100644 --- a/src/util.ts +++ b/src/util.ts @@ -11,3 +11,12 @@ export function mapPromises(promises: {[key: string]: Promise}): Promise<{ return Promise.all(p).then(() => ret); } + +export function numberArrayToMap(arr: number[]): {[key: number]: boolean} { + var ret: {[key: number]: boolean} = {}; + + for (let v of arr) + ret[v] = true; + + return ret; +} diff --git a/src/view/InputHandler.ts b/src/view/InputHandler.ts index 86d4ec6..d06bcf8 100644 --- a/src/view/InputHandler.ts +++ b/src/view/InputHandler.ts @@ -13,8 +13,13 @@ class InputHandler { this.listeners.forEach(l => l()); } - constructor() { + constructor(private relevantKeys: {[key: number]: boolean}) { window.addEventListener('keydown', (ev) => { + if (!relevantKeys[ev.keyCode]) + return; + + ev.preventDefault(); + if (!this.keys[ev.keyCode]) { this.keys[ev.keyCode] = true; this.callListeners(); @@ -22,6 +27,11 @@ class InputHandler { }); window.addEventListener('keyup', (ev) => { + if (!relevantKeys[ev.keyCode]) + return; + + ev.preventDefault(); + if (this.keys[ev.keyCode]) { delete this.keys[ev.keyCode]; this.callListeners(); From 8ee24fdbdfb2f64899e68d44e4c4f236c8c34e86 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 12:23:05 +0100 Subject: [PATCH 06/10] Add support for subtiles --- src/model/MapData.ts | 7 +++++-- src/model/TileData.ts | 7 +++++++ src/view/MapView.ts | 29 +++++++++++++++++++++----- static/resources/map/test.json | 6 +++--- static/resources/sprite/tile/road.png | Bin 0 -> 329 bytes 5 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 src/model/TileData.ts create mode 100644 static/resources/sprite/tile/road.png diff --git a/src/model/MapData.ts b/src/model/MapData.ts index 14f2586..351632f 100644 --- a/src/model/MapData.ts +++ b/src/model/MapData.ts @@ -1,14 +1,17 @@ 'use strict'; +import TileData from './TileData'; + + interface Input { - tiles: {[key: string]: {file: string}}; + tiles: {[key: string]: TileData}; collision: string[]; layers: string[][][]; } export default class MapData { - tiles: {[key: string]: {file: string}}; + tiles: {[key: string]: TileData}; collision: string[]; layers: string[][][]; diff --git a/src/model/TileData.ts b/src/model/TileData.ts new file mode 100644 index 0000000..b736e5d --- /dev/null +++ b/src/model/TileData.ts @@ -0,0 +1,7 @@ +'use strict'; + + +export default class TileData { + file: string; + subtile: number; +} diff --git a/src/view/MapView.ts b/src/view/MapView.ts index daab7cb..282b819 100644 --- a/src/view/MapView.ts +++ b/src/view/MapView.ts @@ -5,6 +5,7 @@ import * as util from '../util'; import EntityPosition from '../model/EntityPosition'; import MapData from '../model/MapData'; import Position from '../model/Position'; +import TileData from '../model/TileData'; const tileSize = 32; @@ -25,8 +26,14 @@ function loadImages(imgs: {[key: string]: string}): Promise<{[key: string]: HTML return util.mapPromises(_.mapValues(imgs, loadImage)); } -function loadTiles(tiles: {[key: string]: {file: string}}): Promise<{[key: string]: HTMLImageElement}> { - return loadImages(_.mapValues(tiles, (t) => `resources/sprite/tile/${t.file}.png`)); +function loadTiles(tiles: {[key: string]: TileData}): Promise<{[key: string]: HTMLImageElement}> { + var imgs: {[key: string]: string} = {} + + _.forOwn(tiles, t => { + imgs[t.file] = `resources/sprite/tile/${t.file}.png` + }); + + return loadImages(imgs); } function loadEntities(entities: EntityPosition[]): Promise<{[key: string]: HTMLImageElement}> { @@ -114,11 +121,23 @@ export default class MapView { this.redraw() } - private drawTile(x: number, y: number, tile: HTMLImageElement): void { + private drawTile(x: number, y: number, tile: TileData): void { if (!tile) return; - this.ctx.drawImage(tile, tiles(x)*this.scale, tiles(y)*this.scale, tileSize*this.scale, tileSize*this.scale); + var img = this.tiles[tile.file]; + if (!img) + return; + + this.ctx.drawImage( + img, + tiles(tile.subtile || 0), 0, + tileSize, tileSize, + tiles(x)*this.scale, + tiles(y)*this.scale, + tileSize*this.scale, + tileSize*this.scale + ); } private drawEntity(e: EntityPosition, time: number): boolean { @@ -186,7 +205,7 @@ export default class MapView { if (!tile) continue; - this.drawTile(x, y, this.tiles[tile]); + this.drawTile(x, y, this.map.tiles[tile]); } } }); diff --git a/static/resources/map/test.json b/static/resources/map/test.json index e76b195..4689076 100644 --- a/static/resources/map/test.json +++ b/static/resources/map/test.json @@ -1,8 +1,8 @@ { "tiles": { - "G": {"rotate": 0, "file": "grass"}, - "<": {"rotate": 0, "file": "road_left"}, - ">": {"rotate": 0, "file": "road_right"} + "G": {"file": "grass"}, + "<": {"file": "road", "subtile": 0}, + ">": {"file": "road", "subtile": 1} }, "collision": [ "00000000000110000000000000000000", diff --git a/static/resources/sprite/tile/road.png b/static/resources/sprite/tile/road.png new file mode 100644 index 0000000000000000000000000000000000000000..93e0a811cb3b4730a13d6a52b56852655bb26ca1 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQk(@Ik;M!Q+`=Ht$S`Y;1W@p| zr;B4q#=W;Q4D${f@VM@8`N8n=jkk&2&h=CE7BTQYazA^9F-!1;TI-yr4{Im3{FyZK z=DznoR?oBdx7jBzv2$ClbHD!l=aoMH>^Kc*D%P%m$NTP34Y%&g~vQJDK_pzhe}BmQ;m4=?=jm;WHpw^m$u(3lPRM=7m(VTv zg6)DD|AL>&3nuqBSa}zGVwfUjr%>bYqu~SNL*_&5E&Lqv0(J^@Z6IccAcy>iPP+%J Y>1Ju>_BZ^O1A~FV)78&qol`;+0J)fevH$=8 literal 0 HcmV?d00001 From 8567ed9397b00729c76cc675e9c554133d2612e7 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 13:02:54 +0100 Subject: [PATCH 07/10] util: generalize numberArrayToMap --- src/app.ts | 2 +- src/util.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app.ts b/src/app.ts index 37aae93..acd255a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -29,7 +29,7 @@ window.onload = () => { xhr.onload = function() { var mapDef = new MapData(JSON.parse(this.responseText)); - var inputHandler = new InputHandler(util.numberArrayToMap(relevantKeys)); + var inputHandler = new InputHandler(util.arrayToObject(relevantKeys)); mapContext = new MapContext(mapDef, inputHandler); } diff --git a/src/util.ts b/src/util.ts index ad2b482..0761d2d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -12,8 +12,8 @@ export function mapPromises(promises: {[key: string]: Promise}): Promise<{ return Promise.all(p).then(() => ret); } -export function numberArrayToMap(arr: number[]): {[key: number]: boolean} { - var ret: {[key: number]: boolean} = {}; +export function arrayToObject(arr: (number|string)[]): {[key: string]: boolean} { + var ret: {[key: string]: boolean} = {}; for (let v of arr) ret[v] = true; From 8acc22138d4fdd0b1ea643e9b7f821fb606c58d1 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 20:36:58 +0100 Subject: [PATCH 08/10] MapView: refactor sprite rendering --- src/view/MapView.ts | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/view/MapView.ts b/src/view/MapView.ts index 282b819..0c7b8a3 100644 --- a/src/view/MapView.ts +++ b/src/view/MapView.ts @@ -121,6 +121,18 @@ export default class MapView { this.redraw() } + private drawSprite(img: HTMLImageElement, srcX: number, srcY: number, destX: number, destY: number): void { + this.ctx.drawImage( + img, + tiles(srcX), tiles(srcY), + tileSize, tileSize, + tiles(destX)*this.scale, + tiles(destY)*this.scale, + tileSize*this.scale, + tileSize*this.scale + ); + } + private drawTile(x: number, y: number, tile: TileData): void { if (!tile) return; @@ -129,15 +141,7 @@ export default class MapView { if (!img) return; - this.ctx.drawImage( - img, - tiles(tile.subtile || 0), 0, - tileSize, tileSize, - tiles(x)*this.scale, - tiles(y)*this.scale, - tileSize*this.scale, - tileSize*this.scale - ); + this.drawSprite(img, tile.subtile || 0, 0, x, y); } private drawEntity(e: EntityPosition, time: number): boolean { @@ -146,14 +150,7 @@ export default class MapView { return false; var p = entityPosition(e, time); - - this.ctx.drawImage( - sprite, - tiles(e.direction), 0, - tileSize, tileSize, - tiles(p.x)*this.scale, tiles(p.y)*this.scale, - tileSize*this.scale, tileSize*this.scale - ); + this.drawSprite(sprite, e.direction, 0, p.x, p.y); return !!e.transition; } From 794ab39a6bba36abf43863ecdbb54b20b41cb634 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 8 Jan 2016 21:13:35 +0100 Subject: [PATCH 09/10] Extend tsconfig.json to make Atom happy --- tsconfig.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 1aef94c..f5c08b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,10 +3,32 @@ "module": "commonjs", "target": "es5", "noImplicitAny": true, - "sourceMap": true + "sourceMap": true, + "noEmit": true }, "files": [ "require.d.ts", - "typings/tsd.d.ts" - ] + "typings/tsd.d.ts", + "src/app.ts", + "src/control/MapContext.ts", + "src/model/Direction.ts", + "src/model/Entity.ts", + "src/model/EntityPosition.ts", + "src/model/MapData.ts", + "src/model/Position.ts", + "src/model/TileData.ts", + "src/model/Transition.ts", + "src/util.ts", + "src/view/InputHandler.ts", + "src/view/MapView.ts" + ], + "filesGlob": [ + "require.d.ts", + "typings/tsd.d.ts", + "src/**/*.ts" + ], + "compileOnSave": false, + "atom": { + "rewriteTsconfig": true + } } From 4258619517fc04a9dde1aa6119c72b7b2d1baea8 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 20 May 2016 19:41:54 +0200 Subject: [PATCH 10/10] Update to build with current versions of nodejs --- package.json | 9 ++++----- static/index.html | 10 ++++++++++ webpack.config.js | 8 +++----- 3 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 static/index.html diff --git a/package.json b/package.json index 771f0a0..2d2503b 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,11 @@ }, "dependencies": { "css-loader": "^0.23.1", - "html-webpack-plugin": "^1.7.0", "lodash": "^3.10.1", - "style-loader": "^0.13.0", + "style-loader": "^0.13.1", "ts-loader": "^0.7.2", - "typescript": "^1.7.5", - "webpack": "^1.12.9", - "webpack-dev-server": "^1.14.0" + "typescript": "^1.8.10", + "webpack": "^1.13.1", + "webpack-dev-server": "^1.14.1" } } diff --git a/static/index.html b/static/index.html new file mode 100644 index 0000000..3d4af86 --- /dev/null +++ b/static/index.html @@ -0,0 +1,10 @@ + + + + + RPGedit + + + + + diff --git a/webpack.config.js b/webpack.config.js index 1979538..3bbb7ba 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,11 +6,6 @@ module.exports = { path: './build', filename: 'bundle.js' }, - plugins: [ - new HtmlWebpackPlugin({ - title: 'RPGedit' - }) - ], module: { loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, @@ -19,5 +14,8 @@ module.exports = { }, resolve: { extensions: ['', '.ts'] + }, + ts: { + compilerOptions: { noEmit: false } } };