-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRotomecaNotificationsSystem.js
119 lines (99 loc) · 3.6 KB
/
RotomecaNotificationsSystem.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//=============================================================================
// RotomecaNotificationsSystem.js
//=============================================================================
/*:fr
* @target MZ
* @plugindesc (V0.0.0) Permet d'afficher des notifications (ex: objets gagnés etc....)
* @author Rotomeca
* @url https://github.com/Rotomeca/RPG-Maker-MZ-plugins
* @base RotomecaCore
*
* @help
* =============================================================================
* ### Rotomeca Notifications System ###
* Author - Rotomeca
* Version - 0.0.0
* Updated - 03/04/2023
* =============================================================================
*
*/
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
var Imported = Imported || {};
Imported.RotomecaNotificationsSystem = true;
var Rotomeca = Rotomeca || {};
(() => {
//=============================================================================
// ** Constantes
//=============================================================================
const plugin_name = 'RotomecaNotificationsSystem';
const notification_timeout = 1;
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
//=============================================================================
// ** RotomecaNotificationManager
//=============================================================================
class RotomecaNotificationManager extends RotomecaBaseClass {
constructor() {
this._init();
}
_init() {
this.queue = new IndexedRotomecaStack();
return this;
}
add(notification) {
this.queue.add(notification);
return this;
}
dequeue() {
return this.queue.pop()
}
delete(notificationId) {
this.queue.deleteCond(x => x.id === notificationId);
return this;
}
}
//=============================================================================
// ** ARotomecaNotificationBase
//=============================================================================
class ARotomecaNotificationBase extends RotomecaBaseClass {
constructor(id, text, timeout = notification_timeout) {
if (this.constructor === ARotomecaNotificationBase) {
throw new RotomecaError({erroredItem:this, otherInfos:[id, text, timeout]}, '[ARotomecaNotificationBase]Impossible d\'instancier une classe abstraite !');
}
this._init()._setup(id, text, timeout);
}
_init() {
this.id = 0;
this.text = String.empty;
this.timeout = notification_timeout;
return this;
}
_setup(id, text, timeout) {
this.id = id;
this.text = text;
this.timeout = timeout;
return this;
}
show() {
if (this.constructor === ARotomecaNotificationBase) {
throw new RotomecaError({erroredItem:this}, '[ARotomecaNotificationBase/show]Impossible d\'instancier une classe abstraite !');
}
return this;
}
showTemporaly(customTimeout = null){
this.show();
return setTimeout(() => {
this.hide();
}, customTimeout ?? this.timeout);
}
hide() {
if (this.constructor === ARotomecaNotificationBase) {
throw new RotomecaError({erroredItem:this}, '[ARotomecaNotificationBase/show]Impossible d\'instancier une classe abstraite !');
}
return this;
}
}
})();