123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- module DialogueTrees {
- // let trees : {[name : string] : DialogueTree} = {};
- //
- // export function addTree(tree : DialogueTree) {
- // trees[tree.id] = tree;
- // }
- /**
- * This prints information about usage of every DialogueTree available.
- * Note: Even though a DialogueTree is referenced, it *might* still not be accessible if the code leading to it is faulty.
- * This should be used to know whether or not a DialogueTree was "forgotten", since the IDE can only do this manually.
- */
- export function findUnusedTrees () {
- let allCode = document.getElementById("appCode").innerHTML;
- let useCount = {};
- let unused = [];
- for (let dialogueName in DialogueTrees) {
- if (dialogueName != "findUnusedTrees") {
- // The first mention will be the one defining it to exist, so we need at least two occurrences for it to be used.
- let count = occurrences(allCode, "DialogueTrees." + dialogueName, false) - 1;
- if (count > 0) {
- useCount[dialogueName] = count;
- } else {
- unused.push(dialogueName);
- }
- }
- }
- for (let dialogueName in useCount) {
- let times = useCount[dialogueName];
- console.debug("[DialogueUsage] " + dialogueName + " is referenced " + times + (times > 1 ? " times." : " time."));
- }
- for (let i = 0; i < unused.length; i++) {
- console.error("[DialogueUsage] " + unused[i] + " is never referenced and will not appear in-game.");
- }
- }
- /** Function that count occurrences of a substring in a string;
- * @param {String} string The string
- * @param {String} subString The sub string to search for
- * @param {Boolean} [allowOverlapping] Optional. (Default:false)
- *
- * @author Vitim.us https://gist.github.com/victornpb/7736865
- * @see Unit Test https://jsfiddle.net/Victornpb/5axuh96u/
- * @see http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string/7924240#7924240
- */
- function occurrences(string, subString, allowOverlapping) {
- string += "";
- subString += "";
- if (subString.length <= 0) return (string.length + 1);
- var n = 0,
- pos = 0,
- step = allowOverlapping ? 1 : subString.length;
- while (true) {
- pos = string.indexOf(subString, pos);
- if (pos >= 0) {
- ++n;
- pos += step;
- } else break;
- }
- return n;
- }
- }
|