-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhtmlbinding.ts
97 lines (92 loc) · 3.87 KB
/
htmlbinding.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/// <reference path="engine.ts" />
/// <reference path="wall.ts" />
/// <reference path="object.ts" />
/// <reference path="spawn.ts" />
/// <reference path="serializer.ts" />
/// <reference types="jquery" />
/// <reference types="jqueryui" />
namespace Testing {
const $:JQueryStatic = (window as any)["jQuery"];
let engine: MapEngine.Engine;
$(window).on('load',function(){
$("div.sidebar").accordion();
//this is domready, so let's get to it.
let canvas = <HTMLCanvasElement>$("#canvas")[0];
let background = <HTMLImageElement>$("#background")[0];
let background2x = <HTMLImageElement>$("#background2x")[0];
engine = new MapEngine.Engine(canvas,background,background2x,<HTMLButtonElement>($("#delete")[0]),<HTMLButtonElement>($("#rotate")[0]));
$(document).on('click','.wall',function(){
let wall = new MapObjects.Wall(this);
wall.position = new MapObjects.Point(0,0);
wall.rotation = MapObjects.Angles.Zero;
engine.placeNewObject(wall);
});
$(document).on('click','.object',function(){
let object = new MapObjects.Object(this);
object.position = new MapObjects.Point(0,0);
object.rotation = MapObjects.Angles.Zero;
engine.placeNewObject(object);
});
$(document).on('click','.spawnpoint',function(){
let object = new MapObjects.Spawnpoint(this);
object.position = new MapObjects.Point(0,0);
object.rotation = MapObjects.Angles.Zero;
engine.placeNewObject(object);
});
$(document).on('click','#save',function(){
if ($("#save_link").attr('href') != "") {
URL.revokeObjectURL($("#save_link").attr('href'));
}
let serializer = new MapEngine.Serializer();
let result = serializer.serialize(engine.objects,engine.is2x());
let blob = new Blob([result],{type:"application/json"});
let url = URL.createObjectURL(blob);
$("#save_link").attr('href',url);
$("#save_link")[0].click();
});
$(document).on('click','#load',function(){
$("#load_file")[0].click();
});
$(document).on('change','#load_file',function(){
let file = (<HTMLInputElement>$("#load_file")[0]).files[0];
let reader = new FileReader();
reader.onload=function(e){
let serializer = new MapEngine.Serializer();
let result = serializer.deserialize(e.target.result as string);
if(result[1]) {
engine.setup2x();
}
engine.objects = result[0];
engine.render();
}
reader.readAsText(file);
});
$(document).on('click','#image',function(){
let encoded=engine.buildHiResImage();
if($("#image_link").attr('href')!="") {
URL.revokeObjectURL($("#image_link").attr('href'));
}
let blob = MapEngine.dataURLtoBlob(encoded);
let url = URL.createObjectURL(blob);
$("#image_link").attr('href',url);
$("#image_link")[0].click();
});
$(document).on('click','#2xbutton',function(){
engine.setup2x();
});
$(document).on('click','#1xbutton',function(){
engine.setup1x();
});
engine.frameFinished = () => {
$("div ul.parts").html("");
let list = engine.setCalculator.placedParts;
for (let key in list) {
let available = list[key].available;
let placed = list[key].placed;
let img = $("#"+key).attr('src');
$("div ul.parts").append("<li><img src='"+img+"'> "+placed+"/"+available+"</li>");
}
}
engine.render();
});
}