/** * 启动模块 * 起始模块,初始化各个管理器,启动游戏主逻辑循环 */ 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; } }