-
Notifications
You must be signed in to change notification settings - Fork 0
/
navigator.js
96 lines (88 loc) · 2.99 KB
/
navigator.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
* Copyright 2010 by Dan Fabulich.
*
* Dan Fabulich licenses this file to you under the
* ChoiceScript License, Version 1.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.choiceofgames.com/LICENSE-1.0.txt
*
* See the License for the specific language governing
* permissions and limitations under the License.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied.
*/
function SceneNavigator(sceneList) {
this.setSceneList(sceneList);
this.startingStats = {};
}
SceneNavigator.prototype.setSceneList = function setSceneList(sceneList) {
this._sceneList = sceneList;
this._sceneMap = {};
for (var i = 0; i < sceneList.length-1; i++) {
var scene1 = sceneList[i];
var scene2 = sceneList[i+1];
this._sceneMap[scene1] = scene2;
}
this._startupScene = sceneList[0];
};
SceneNavigator.prototype.nextSceneName = function nextSceneName(currentSceneName) {
var nextScene = this._sceneMap[currentSceneName];
//if (!nextScene) throw new Error("No scene follows " + currentSceneName);
return nextScene;
};
SceneNavigator.prototype.getStartupScene = function getStartupScene() {
return this._startupScene;
};
SceneNavigator.prototype.setStartingStatsClone = function setStartingStatsClone(stats) {
this.startingStats = {};
for (var i in stats) {
this.startingStats[i] = stats[i];
}
};
SceneNavigator.prototype.resetStats = function resetStats(stats) {
for (var i in stats) {
delete stats[i];
}
for (i in this.startingStats) {
stats[i] = this.startingStats[i];
}
this.bugLog = [];
};
SceneNavigator.prototype.repairStats = function repairStats(stats) {
for (var i in this.startingStats) {
var startingStat = this.startingStats[i];
if (startingStat === null || startingStat === undefined) continue;
if (typeof(stats[i]) === "undefined" || stats[i] === null) {
stats[i] = this.startingStats[i];
}
}
};
SceneNavigator.prototype.bugLog = [];
SceneNavigator.prototype.achievements = {};
SceneNavigator.prototype.achievementList = [];
SceneNavigator.prototype.achieved = {};
SceneNavigator.prototype.loadAchievements = function(achievementArray) {
if (!achievementArray) return;
for (var i = 0; i < achievementArray.length; i++) {
var achievement = achievementArray[i];
var achievementName = achievement[0];
var visible = achievement[1];
var points = achievement[2];
var title = achievement[3];
var earnedDescription = achievement[4];
var preEarnedDescription = achievement[5];
this.achievements[achievementName] = {
visible: visible,
points: points,
title: title,
earnedDescription: earnedDescription,
preEarnedDescription: preEarnedDescription
};
this.achievementList.push(achievementName);
}
};