]> git.lizzy.rs Git - dragonblocks.git/blob - lib/dblib.js
Map abstraction and World class
[dragonblocks.git] / lib / dblib.js
1 // Library for Dragonblocks
2 class dblib{
3         static center(elem){
4                 elem.style.left = elem.parentNode.clientWidth / 2 - parseInt(elem.clientWidth) / 2 + "px";
5         }
6         static centerVertical(elem){
7                 let parent = elem.parentNode;
8                 if (parent == document.body)
9                         parent = document.documentElement;
10                 elem.style.top = parent.clientHeight / 2 - parseInt(elem.clientHeight) / 2 + "px";
11         }
12         static random(min, max){
13                 return Math.floor(min + Math.random() * (max - min + 1));
14         }
15         static humanFormat(str){
16                 str = str.replace("_", " ");
17                 str = str[0].toUpperCase() + str.slice(1, str.length);
18                 return str;
19         }
20         static copy(dest, src){
21                 for(let prop in src){
22                         if(src[prop] instanceof Array){
23                                 dest[prop] = [];
24                                 this.copy(dest[prop], src[prop]);
25                         }
26                         else if(src[prop] instanceof Function){
27                                 dest[prop] = src[prop];
28                         }
29                         else if(src[prop] instanceof Object){
30                                 dest[prop] = {};
31                                 this.copy(dest[prop], src[prop]);
32                         }
33                         else{
34                                 dest[prop] = src[prop];
35                         }
36                 }
37         }
38         static copySimple(dest, src){
39                 for(let prop in src){
40                         dest[prop] = src[prop];
41                 }
42         }
43         static htmlEntities(str){
44                 return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/\n/g, "<br>").replace(/\t/g, "&emsp;&emsp;").replace(/ /g, "&ensp;");
45         }
46         static removeTmp(src){
47                 let obj = {};
48                 if(src instanceof Array)
49                         obj = [];
50                 dblib.copy(obj, src);
51                 for(let prop in obj){
52                         if(obj[prop].tmp)
53                                 delete obj[prop].tmp
54                 }
55                 return obj;
56         }
57         static replaceRecursive(src, search, replace){
58                 let obj = {};
59                 if(src instanceof Array)
60                         obj = [];
61                 dblib.copySimple(obj, src);
62                 for(let prop in obj){
63                         if(obj[prop] === search)
64                                 obj[prop] = replace;
65                         else if(obj[prop] instanceof Object)
66                                 obj[prop] = this.replaceRecursive(obj[prop], search, replace);
67                 }
68                 return obj;
69         }
70 }