-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathhistory.js
43 lines (36 loc) · 1.29 KB
/
history.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
var q = require('q'),
_ = require('lodash'),
common = require('@screeps/common'),
config = common.configManager.config,
env = common.storage.env;
exports.saveTick = function(roomId, gameTime, data) {
return env.hmset(env.keys.ROOM_HISTORY + roomId, {[gameTime]: data});
};
exports.upload = function(roomId, baseTime) {
return env.get(env.keys.ROOM_HISTORY + roomId)
.then(data => {
if(!data || !data[""+baseTime]) {
return;
}
var curTick = baseTime,
curObjects = JSON.parse(data[""+baseTime]),
result = {
timestamp: Date.now(),
room: roomId,
base: curTick,
ticks: {
[curTick]: curObjects
}
};
curTick++;
while(data[""+curTick]) {
var objects = JSON.parse(data[""+curTick]);
var diff = common.getDiff(curObjects, objects);
result.ticks[curTick] = diff;
curObjects = objects;
curTick++;
}
config.engine.emit('saveRoomHistory',roomId, baseTime, result);
return env.del(env.keys.ROOM_HISTORY + roomId);
});
};