-
Notifications
You must be signed in to change notification settings - Fork 19
/
keywords.js
62 lines (54 loc) · 2.1 KB
/
keywords.js
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
var ECSAction = Java.type("com.cardshifter.modapi.actions.ECSAction");
var keywords = {};
keywords.cards = {};
keywords.afterCards = [];
function applyEntity(game, card, entity, keyword) {
print("applyEntity " + card + ": " + entity);
for (var property in card) {
if (card.hasOwnProperty(property)) {
var value = card[property];
print("property found: " + property + " with value " + value + " keyword data is " + keyword[property]);
if (keyword[property] === undefined) {
print("keyword " + property + " is undefined");
throw new Error("property " + property + " was found but is not a declared keyword");
}
keyword[property].call(null, entity, card, value);
}
}
}
function applyCardKeywords(game, zone, data) {
for (var i = 0; i < data.cards.length; i++) {
var card = data.cards[i];
var entity = game.newEntity();
applyEntity(game, card, entity, keywords.cards);
zone.addOnBottom(entity);
}
for (var i = 0; i < keywords.afterCards.length; i++) {
keywords.afterCards[i](game);
}
}
function applySystem(game, data, keyword) {
print("applySystem " + data);
for (var property in data) {
if (data.hasOwnProperty(property)) {
var value = data[property];
print("property found: " + property + " with value " + value + " keyword data is " + keyword[property]);
if (keyword[property] === undefined) {
print("keyword " + property + " is undefined");
throw new Error("property " + property + " was found but is not a declared keyword");
}
var system = keyword[property].call(null, game, data, value);
game.addSystem(system);
}
}
}
function applySystems(game, data) {
for (var i = 0; i < data.length; i++) {
var system = data[i];
if (system instanceof com.cardshifter.modapi.base.ECSSystem) {
game.addSystem(system);
} else {
applySystem(game, system, keywords.systems);
}
}
}