mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-04-16 21:02:42 +08:00
增加微信小程序版
This commit is contained in:
61
liferestartWX/utils/liferestart/event.js
Normal file
61
liferestartWX/utils/liferestart/event.js
Normal file
@@ -0,0 +1,61 @@
|
||||
import { clone } from './functions/util.js';
|
||||
import { checkCondition } from './functions/condition.js';
|
||||
|
||||
class Event {
|
||||
constructor() {}
|
||||
|
||||
#events;
|
||||
|
||||
// 初始化传参数去掉{}
|
||||
initial(events) {
|
||||
this.#events = events;
|
||||
for(const id in events) {
|
||||
const event = events[id];
|
||||
if(!event.branch || !'branch' in event) continue;
|
||||
//判断事件是否被处理过
|
||||
event.branch = event.branch.map(b=>{
|
||||
b = b.indexOf(":") != -1?b.split(':'):b;
|
||||
b[1] = Number(b[1]);
|
||||
return b;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
check(eventId, property) {
|
||||
const { include, exclude, NoRandom } = this.get(eventId);
|
||||
if(NoRandom) return false;
|
||||
if(exclude && checkCondition(property, exclude)) return false;
|
||||
if(include) return checkCondition(property, include);
|
||||
return true;
|
||||
}
|
||||
|
||||
get(eventId) {
|
||||
// const event = this.#events[eventId];
|
||||
// console.log('event.js get',eventId, this.#events)
|
||||
var event
|
||||
this.#events.forEach(function(item){
|
||||
if (item._id == eventId) {
|
||||
event = item
|
||||
}
|
||||
})
|
||||
if(!event) throw new Error(`[ERROR] No Event[${eventId}]`);
|
||||
return clone(event);
|
||||
}
|
||||
|
||||
information(eventId) {
|
||||
const { event: description } = this.get(eventId)
|
||||
return { description };
|
||||
}
|
||||
|
||||
do(eventId, property) {
|
||||
const { effect, branch, event: description, postEvent } = this.get(eventId);
|
||||
if(branch)
|
||||
for(const [cond, next] of branch)
|
||||
if(checkCondition(property, cond))
|
||||
return { effect, next, description };
|
||||
return { effect, postEvent, description };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Event;
|
||||
Reference in New Issue
Block a user