xy-server/game/activity/ActivityMgr.ts
2025-04-23 09:34:08 +08:00

81 lines
2.3 KiB
TypeScript

import GameUtil from "../core/GameUtil";
import ShuiLuDaHui from "./ShuiLuDaHui";
import LingHou from "./LingHou";
import Zhenbukui from "./Zhenbukui";
import ActivityBase from "./ActivityBase";
export default class ActivityMgr {
static shared = new ActivityMgr();
log_time: any;
activity_list: any;
constructor() {
this.log_time = {};
this.activity_list = {}
}
init() {
let nDay = Math.floor((GameUtil.gameTime / 1000) / 86400);
let nHour = Math.floor((GameUtil.gameTime / 1000) / 3600);
this.log_time = {
curDay: nDay,
curHour: nHour,
};
let ActShuiLu = new ShuiLuDaHui();
this.addActivity(ActShuiLu);
let ActLingHou = new LingHou();
this.addActivity(ActLingHou);
let ActZhenbukui = new Zhenbukui();
this.addActivity(ActZhenbukui);
}
addActivity(activity: any) {
this.activity_list[activity.activity_id] = activity;
}
delActivity(activityid: any) {
delete this.activity_list[activityid];
}
getActivity(actid: any) {
return this.activity_list[actid];
}
checkActivity(dt?: number) {
for (let activity_id in this.activity_list) {
let activity: ActivityBase = this.activity_list[activity_id];
activity.update(dt);
}
}
close() {
for (let activity_id in this.activity_list) {
let activity: ActivityBase = this.activity_list[activity_id];
activity.close();
}
}
update(dt: number) {
if (dt % (10 * 1000) == 0) {
this.checkActivity(dt);
let nDay = Math.floor((GameUtil.gameTime / 1000) / 86400);
let nHour = Math.floor((GameUtil.gameTime / 1000) / 3600);
if (this.log_time.curDay != nDay) {
for (const activity_id in this.activity_list) {
this.activity_list[activity_id].onNewDay();
}
}
if (this.log_time.curHour != nHour) {
for (const activity_id in this.activity_list) {
this.activity_list[activity_id].onNewHour();
}
}
this.log_time.curDay = nDay;
this.log_time.curHour = nHour;
}
}
}