Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AroriaNetwork
GitHub Repository: AroriaNetwork/3kho-backup
Path: blob/main/projects/missiles/src/banner.js
1835 views
1
MG.banner = (function () {
2
var SHOW_TIME = 1.1;
3
var HIDE_TIME = 0.8;
4
5
var BannerState = {
6
HIDDEN: 'hidden',
7
VISIBLE: 'visible',
8
MESSAGE_QUEUED: 'message-queued'
9
};
10
11
var mTitle = '';
12
var mText = '';
13
14
var mRootNode;
15
var mTitleNode;
16
var mTextNode;
17
var mVisibility;
18
var mState;
19
20
return {
21
init: function () {
22
mVisibility = 0.0;
23
mState = BannerState.HIDDEN;
24
25
mRootNode = document.getElementById('banner');
26
27
var titleBoxNode = document.getElementById('banner-title');
28
mTitleNode = document.createTextNode('');
29
titleBoxNode.appendChild(mTitleNode);
30
31
var textBoxNode = document.getElementById('banner-text');
32
mTextNode = document.createTextNode('');
33
textBoxNode.appendChild(mTextNode);
34
35
mRootNode.setAttribute('visibility', 'visible');
36
37
},
38
39
update: function (dt) {
40
switch (mState) {
41
case BannerState.VISIBLE:
42
mVisibility += dt/SHOW_TIME;
43
break;
44
case BannerState.MESSAGE_QUEUED:
45
if (mVisibility === 0) {
46
mState = BannerState.VISIBLE;
47
48
mTitleNode.data = mTitle;
49
mTextNode.data = mText;
50
}
51
// FALLTHROUGH
52
case BannerState.HIDDEN:
53
mVisibility -= dt/HIDE_TIME;
54
break;
55
}
56
mVisibility = Math.max(0,Math.min(1, mVisibility));
57
},
58
59
updateDOM: function () {
60
if (mVisibility === 0) {
61
mRootNode.setAttribute('visibility', 'hidden');
62
} else {
63
mRootNode.setAttribute('width', (30 + 80*(0.5 + 0.5*Math.cos(Math.PI*mVisibility))) + '%');
64
mRootNode.setAttribute('visibility', 'visible');
65
}
66
},
67
68
hide: function () {
69
mState = BannerState.HIDDEN;
70
},
71
72
show: function (newTitle, newText) {
73
74
mTitle = String(newTitle);
75
mText = String(newText);
76
77
mState = BannerState.MESSAGE_QUEUED;
78
},
79
80
isFullyVisible: function () {
81
return mVisibility === 1;
82
}
83
84
};
85
}());
86
87