
如果只是一个推箱子的游戏,地图里一个json里弄一个参数存几个箱子的初始位置,然后箱子改变触发修改参数。
比如
MapInfos.json内容下图
[
null,
{
"id": 1,
"expanded": false,
"name": "MAP001",
"order": 1,
"parentId": 0,
"scrollX": 451,
"scrollY": 312.5,
"default": [[7, 7], [10, 8]],
"now": [[7, 7], [10, 8]],
"event": [2, 4]
}
]
default是默认位置。now是现在位置。event地图上对应的箱子事件。
当重置的时候,事件2和4的位置分别是7,7和10,8
当他们有一个改变就改一下now里面的位置。
比如像左推一下事件2那么x轴建1就是:"now": [[6, 7], [10, 8]]
箱子改变了就触发一下方法,根据event里面对应的事件id去获取这个事件现在的位置。
如果你要现在读档的时候跟存档的时候是一样的,那么你需要保存一下的。
如果你游戏搭在同一个服务器那么你就需要信息存到存档里,因为服务器MapInfos.json只有一个,如果是各玩各的随便存在哪里。
不是很清楚每次继续游戏是从MapInfos.json文件里读取地图信息,还是存档里读取这个信息,需要你自己去确认一下,然后再保在相应的地方。
如果你是用服务器的话,那么你最好让用户把存档存在服务器端。
StorageManager.save = function (savefileId, json) {
if (this.isLocalMode()) {
this.saveToLocalFile(savefileId, json);
} else {
if ($PlayQQ != undefined && $PlayQQ != null && $PlayQQ != "") {
//根据QQ存档
$.ajax({
url: "/Handler/Handler.ashx",
type: "POST",
dataType: "text",
data: { action: "save", json: json, index:savefileId }
});
}
this.saveToWebStorage(savefileId, json);
}
};
StorageManager.load = function (savefileId) {
if (this.isLocalMode()) {
return this.loadFromLocalFile(savefileId);
} else {
if ($PlayQQ != undefined && $PlayQQ != null && $PlayQQ != "") {
//根据QQ读档
var returnData = "";
if (savefileId == 0 && StorageManager.loadFirst) {
return this.loadFromWebStorage(savefileId);
}
$.ajax({
url: "/Handler/Handler.ashx",
type: "POST",
dataType: "text",
async: false,
data: { action: "load", index: savefileId },
success: function (data) {
returnData = data;
StorageManager.saveToWebStorage(savefileId, data);
if (savefileId == 0) StorageManager.loadFirst = true;
}
});
return returnData;
}
else {
return this.loadFromWebStorage(savefileId);
}
}
};