xy-server/game/core/Launch.ts

298 lines
9.8 KiB
TypeScript
Raw Normal View History

2025-04-23 09:34:08 +08:00
/**
*
*
*/
import GameUtil from "./GameUtil";
import PlayerMgr from "../object/PlayerMgr";
import Signal from "./Signal";
import NoticeMgr from "./NoticeMgr";
import AgentMgr from "../network/AgentMgr";
import LotteryMgr from "./LotteryMgr";
import DialMgr from "./DialMgr";
import ActivityMgr from "../activity/ActivityMgr";
import BangMgr from "../bang/BangMgr";
import ChargeSum from "./ChargeSum";
import RelationMgr from "../object/RelationMgr";
import PalaceFight from "../activity/PalaceFight";
import MapMgr from "./MapMgr";
import LevelMgr from "../object/LevelMgr";
import GoodsMgr from "../item/GoodsMgr";
import EquipMgr from "../object/EquipMgr";
import MagicWeaponMgr from "../object/MagicWeaponMgr";
import EffectMgr from "../skill/core/EffectMgr";
import Shop from "../object/Shop";
import World from "../object/World";
import DWorld from "../object/DWorld";
import NpcMgr from "./NpcMgr";
import MonsterMgr from "./MonsterMgr";
import MallMgr from "./MallMgr";
import ZhenbukuiMgr from "../activity/ZhenbukuiMgr";
import PaiHangMgr from "./PaiHangMgr";
import SignInMgr from "./SignInMgr";
import RespondentsMgr from "./RespondentsMgr";
import PetMgr from "./PetMgr";
import PartnerConfigMgr from "../object/PartnerConfigMgr";
import TaskConfigMgr from "../task/TaskConfigMgr";
import NpcConfigMgr from "./NpcConfigMgr";
import SkillUtil from '../skill/core/SkillUtil';
import SKLogger from '../gear/SKLogger';
import BoxMgr from './BoxMgr';
import DugMgr from '../role/DugMgr';
import { MsgCode } from "../role/EEnum";
import SchemeMgr from "../object/SchemeMgr";
import RobotMgr from "./RobotMgr";
import MailMgr from "../mail/MailMgr";
import JingJiChang from "../activity/JingJiChang";
import ChangeCard from "../object/ChangeCard";
import SKRedisUtil from "../gear/SKRedisUtil";
import FivePhases from "../object/FivePhases";
import SatAssembly from "../activity/SatAssembly";
import FactionWar from "../activity/FactionWar";
import SpecialEffect from "../object/SpecialEffect";
import PetSupport from "../object/PetSupport";
import Ofuda from "../object/Ofuda";
import DebrisMall from "./DebrisMall";
import Interface from "./Interface";
import OnlineRewards from "../activity/OnlineRewards";
import Currency from "../activity/Currency";
import Marry from "../object/Marry";
import TianTi from "../activity/TianTi";
import JIngChanSongFuMgr from "../JingChanSongFu/JIngChanSongFuMgr";
export default class Launch {
static shared = new Launch();
// 完成列表
completeList: any = {
["BangMgr"]: false,
["PaiHangMgr"]: false,
["ChargeSum"]: false,
["MailMgr"]: false,
["SignInMgr"]: false,
["RespondentsMgr"]: false,
};
// 服务存档列表
saveList: any = [
Shop,
];
saved: number = 0;
dt: number;
constructor() {
// 每秒4帧
GameUtil.frameTime = 1000 / 4;
// 主逻辑循环
this.dt = 0;
}
mainloop() {
if (isNaN(this.dt)) {
// 每秒4帧
GameUtil.frameTime = 1000 / 4;
// 主逻辑循环
this.dt = 0;
}
this.dt += GameUtil.frameTime;
// 内部通信循环
Signal.shared.update(this.dt);
AgentMgr.shared.update(this.dt);
NoticeMgr.shared.update(GameUtil.frameTime);
PlayerMgr.shared.update(this.dt);
LotteryMgr.shared.update(this.dt);
ActivityMgr.shared.update(this.dt);
PalaceFight.shared.update(GameUtil.frameTime);
RelationMgr.shared.update(this.dt);
GameUtil.gameTime += GameUtil.frameTime;
// 1分钟校正
if (this.dt % (1 * 60 * 1000) == 0) {
GameUtil.gameTime = Date.now();
}
};
start() {
GameUtil.gameTime = Date.now();
setInterval(this.mainloop, GameUtil.frameTime);
// 通知模块
NoticeMgr.shared.launch();
SKLogger.info('通知模块初始化完毕!');
// 地图模块
MapMgr.shared.launch();
SKLogger.info('地图模块加载完毕!');
// 任务配置
TaskConfigMgr.shared.launch();
SKLogger.info('任务配置模块加载完毕!');
// 地煞天元模块
World.shared.launch();
DWorld.shared.init();
SKLogger.info('地煞天元模块加载完毕!');
// 证道大会模块
SatAssembly.shared.init();
SKLogger.info('证道模块加载完毕!');
// NPC配置
NpcConfigMgr.shared.launch();
SKLogger.info('Npc配置模块加载完毕');
// NPC
NpcMgr.shared.launch();
SKLogger.info('Npc模块加载完毕');
// 玩家模块
PlayerMgr.shared.launch();
SKLogger.info('角色属性模块加载完毕!');
GoodsMgr.shared.launch();
SKLogger.info('物品模块加载完毕!');
// 经验模块
LevelMgr.shared.launch();
SKLogger.info('经验模块加载完毕!');
// 技能模块
SkillUtil.launch();
SKLogger.info('技能模块加载完毕!');
// 技能效果模块
EffectMgr.shared.launch();
SKLogger.info('技能效果模块加载完毕!');
// 装备模块
EquipMgr.shared.launch();
// 法宝模块
MagicWeaponMgr.shared.launch();
// 帮派模块
BangMgr.shared.launch();
// 怪物模块
MonsterMgr.shared.launch();
SKLogger.info('怪物模块加载完毕!');
// 商城模块
MallMgr.shared.init();
SKLogger.info('商城模块加载完毕!');
// 碎片模块
DebrisMall.shared.init();
SKLogger.info('碎片商城模块加载完毕!');
//甄不亏模块
ZhenbukuiMgr.shared.init();
SKLogger.info('甄不亏模块加载完毕!');
// 摆摊模块
Shop.shared.init();
SKLogger.info('摆摊模块加载完毕!');
// 排行榜模块
PaiHangMgr.shared.init();
ChangeCard.shared.init();
SpecialEffect.shared.init();
FivePhases.shared.init();
PetSupport.shared.init();
Ofuda.shared.init();
//竞技场
JingJiChang.shared.init();
// 签到模块
SignInMgr.shared.init();
// 答题模块
RespondentsMgr.shared.init();
// 宠物模块
PetMgr.shared.launch();
SchemeMgr.launch();
// 充值总额模块
ChargeSum.shared.init();
// 伙伴模块
PartnerConfigMgr.shared.init();
SKLogger.info('伙伴管理模块加载完毕!');
// 活动模块
ActivityMgr.shared.init();
SKLogger.info('活动模块加载完毕!');
// 开箱模块
BoxMgr.shared.init();
SKLogger.info(`开箱模块加载完毕`);
// 挖宝模块
DugMgr.shared.init();
SKLogger.info(`挖宝模块加载完毕`);
// 彩票模块
LotteryMgr.shared.init();
SKLogger.info('彩票模块加载完毕!');
// 幸运转盘
DialMgr.shared.init();
SKLogger.info('幸运转盘模块加载完毕!');
//关系模块
RelationMgr.shared.init();
SKLogger.info(`关系模块加载完毕`);
// 创建机器人
RobotMgr.shared.init();
SKLogger.info(`机器人模块加载完毕`);
MailMgr.shared.launch();
// 帮战模块
FactionWar.shared.init();
SKLogger.info('帮战模块加载完毕!');
// 在线奖励模块
OnlineRewards.shared.init();
SKLogger.info('在线奖励模块加载完毕!');
// 打金模块
Currency.shared.init();
SKLogger.info('打金模块加载完毕!');
// 白名单模块
Interface.shared.init();
SKLogger.info('白名单模块加载完毕!');
// 结婚模块
Marry.shared.init();
TianTi.shared.init();
SKLogger.info("天梯模块启动完毕")
JIngChanSongFuMgr.shared.launch();
SKLogger.info(`金蟾送服模块启动完毕`);
//启动Redis管理模块
// SKRedisUtil.launch();
// SKLogger.info(`Redis模块启动完毕`);
};
checkAllComplete() {
for (let key in this.completeList) {
if (this.completeList[key] == false) {
return false;
}
}
return true;
}
complete(mod: any) {
this.completeList[mod] = true;
SKLogger.info(`模块[${mod}]加载完成!`);
if (this.checkAllComplete()) {
// 连接代理模块
AgentMgr.shared.start();
// 向Gate服注册
Signal.shared.registerServer();
SKLogger.info('游戏服务器启动完毕,等待命令');
}
}
// 全部存档
saveAll(callback: (code: number) => void) {
this.saved = 0;
let self = this;
PlayerMgr.shared.saveAll(() => {
for (let key in self.saveList) {
let mgr = self.saveList[key];
mgr.saveAll((msg: string) => {
SKLogger.info(`全部存档:${msg}`);
self.saved++;
if (self.saved == self.saveList.length) {
callback(MsgCode.SUCCESS);
}
});
}
});
};
// 关服
close(callback: (code: number) => void) {
PlayerMgr.shared.readyToCloseServer();
let self = this;
setTimeout(() => {
self.saveAll((code: number) => {
AgentMgr.shared.close();
ActivityMgr.shared.close();
callback(code);
});
}, 12 * 1000);
};
// 是否关闭
isClose(): boolean {
if (this.saved == this.saveList.length) {
return true;
}
return false;
}
}