72 lines
2.0 KiB
JavaScript
72 lines
2.0 KiB
JavaScript
this.inherits(COMMAND);
|
|
this.command = "map";
|
|
this.allow_busy = true;
|
|
this.allow_state = true;
|
|
this.allow_die = true;
|
|
this.map_json;
|
|
this.buffer = {};
|
|
var world_map = null;
|
|
this.enter = function (me, area) {
|
|
//if (!area) {
|
|
// if (!this.map_json) this.map_json = getAllMaps(me);
|
|
|
|
// return me.send(this.map_json);
|
|
//}
|
|
if (!area || area == "here") {
|
|
if (!me.environment) return;
|
|
var str = me.environment.path;
|
|
area = str.substr(0, str.lastIndexOf("/"));
|
|
}
|
|
var path = area + "/"
|
|
if (this.buffer[area]) return me.send(this.buffer[area]);
|
|
var area_obj = null;
|
|
for (var i = 0; i < WORLD.AREAS.length; i++) {
|
|
if (path == WORLD.AREAS[i].room_path) {
|
|
area_obj = WORLD.AREAS[i];
|
|
break;
|
|
}
|
|
}
|
|
if (!area_obj) return;
|
|
if (area_obj.render_map) return area_obj.render_map(me);
|
|
this.buffer[area] = this.createMapJson(area_obj, area);
|
|
me.send(this.buffer[area]);
|
|
}
|
|
this.clearCache = function () {
|
|
this.buffer = {};
|
|
}
|
|
this.update_map = function (id, rm, pos) {
|
|
this.buffer[id] = null;
|
|
if (!rm) {
|
|
var area_obj;
|
|
for (var i = 0; i < WORLD.AREAS.length; i++) {
|
|
if (path == WORLD.AREAS[i].room_path) {
|
|
area_obj = WORLD.AREAS[i];
|
|
break;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
var str = "{type:'updatemap',map:'" + id + "',id:'" + rm.path + "',n:'" + rm.name + "'";
|
|
if (pos) str += ",pos:[" + pos.join() + "]}";
|
|
else str += "}";
|
|
for (var i = 0; i < rm.items.length; i++) {
|
|
if (rm.items[i].is_player)
|
|
rm.items[i].send(str);
|
|
}
|
|
}
|
|
this.createMapJson = function (area_obj, area) {
|
|
if (!area_obj) return '{type:"map",maps:[]}';
|
|
var obj = {};
|
|
obj.type = "map";
|
|
obj.path = area;
|
|
obj.map = area_obj.map;
|
|
return JSON.stringify(obj);
|
|
}
|
|
function getAreaByPath(areas, path) {
|
|
if (!areas) return;
|
|
for (var i = 0; i < areas.length; i++) {
|
|
if (areas[i].path == path) return areas[i];
|
|
}
|
|
}
|