瀏覽代碼

Added a kind of half working save/load system

tags/v0.2.8
Fen Dweller 7 年之前
父節點
當前提交
e255ccf7f0
共有 2 個文件被更改,包括 102 次插入4 次删除
  1. +86
    -4
      feast.js
  2. +16
    -0
      objects.js

+ 86
- 4
feast.js 查看文件

@@ -265,14 +265,16 @@ function move(direction) {
moveTo(target,currentRoom.exitDescs[direction]);
}

function moveToByName(roomName, desc="You go places lol") {
moveTo(world[roomName], desc);
function moveToByName(roomName, desc="You go places lol", loading=false) {
moveTo(world[roomName], desc, loading);
}

function moveTo(room,desc="You go places lol") {
function moveTo(room,desc="You go places lol", loading=false) {
actions = [];
currentRoom = room;
advanceTime(30);

if (!loading)
advanceTime(30);

currentRoom.objects.forEach(function (object) {
object.actions.forEach(function (action) {
@@ -356,6 +358,15 @@ function retrieveSettings() {
return JSON.parse(window.localStorage.getItem("settings"));
}

function clearScreen() {
let log = document.getElementById("log");
let child = log.firstChild;
while (child != null) {
log.removeChild(child);
child = log.firstChild;
}
}

function update(lines=[]) {
let log = document.getElementById("log");
for (let i=0; i<lines.length; i++) {
@@ -565,3 +576,74 @@ function loadCompass() {
function look() {
update([currentRoom.description]);
}

let toSave = ["str","dex","con","name","species"];

function saveGame() {
let save = {};

save.player = JSON.stringify(player, function(key, value) {
if (toSave.includes(key) || key == "") {
return value;
} else {
return undefined;
}
});

save.position = currentRoom.name;

save.deaths = deaths;

let stringified = JSON.stringify(save);

window.localStorage.setItem("save", stringified);
}

function loadGame() {
changeMode("explore");
let save = JSON.parse(window.localStorage.getItem("save"));

let playerSave = JSON.parse(save.player);

for (let key in playerSave) {
if (playerSave.hasOwnProperty(key)) {
player[key] = playerSave[key];
}
}

deaths = save.deaths;

clearScreen();
moveToByName(save.position, "");
}

// wow polyfills

if (![].includes) {
Array.prototype.includes = function(searchElement /*, fromIndex*/ ) {
'use strict';
var O = Object(this);
var len = parseInt(O.length) || 0;
if (len === 0) {
return false;
}
var n = parseInt(arguments[1]) || 0;
var k;
if (n >= 0) {
k = n;
} else {
k = len + n;
if (k < 0) {k = 0;}
}
var currentElement;
while (k < len) {
currentElement = O[k];
if (searchElement === currentElement ||
(searchElement !== searchElement && currentElement !== currentElement)) {
return true;
}
k++;
}
return false;
};
}

+ 16
- 0
objects.js 查看文件

@@ -83,6 +83,22 @@ function Bed() {
updateDisplay();
}
});
this.actions.push({
"name": "Save Game",
"action": function() {
saveGame();
update(["Game saved."]);
updateDisplay();
}
});
this.actions.push({
"name": "Load Game",
"action": function() {
loadGame();
update(["Game loaded."]);
updateDisplay();
}
});
}

function Journal() {


Loading…
取消
儲存