import { WsServer } from "tsrpc";
import { worldManager } from './managers/WorldManager';
import { serviceProto } from './shared/protocols/serviceProto';

// Create the Server
export const server = new WsServer(serviceProto, {
    port: 3000,
    // Remove this to use binary mode (remove from the client too)
    json: true
});

// Initialize before server start
async function init() {
    // 不再使用API，改为消息监听
    // await server.autoImplementApi(path.resolve(__dirname, 'api'));

    // 注册消息监听器
    await registerMessageHandlers();

    // 初始化游戏世界
    console.log('正在初始化游戏世界...');
    worldManager.initialize();
    console.log('游戏世界初始化完成');
};

// 注册消息处理器
async function registerMessageHandlers() {
    // 登录请求消息
    const LoginHandler = await import('./msg/MsgReqLogin');
    server.listenMsg('ReqLogin', LoginHandler.default);

    // 移动请求消息
    const MoveHandler = await import('./msg/MsgReqMove');
    server.listenMsg('ReqMove', MoveHandler.default);

    // 发送消息请求
    const SendHandler = await import('./msg/MsgReqSend');
    server.listenMsg('ReqSend', SendHandler.default);

    console.log('消息处理器注册完成');
}

// Entry function
async function main() {
    await init();
    await server.start();
}
main();