
import { SocialModuleS } from "./SocialModuleS";
import { BarrageMgr } from "./barrage/BarrageMgr";
import { GameConfig } from "../../config/GameConfig";

/**
 * Social模块Client端
 */
export class SocialModuleC extends ModuleC<SocialModuleS, null> {
	protected onUpdate(dt: number): void {
		BarrageMgr.inst.updateC(dt);
	}

	//自己发送弹幕
	public async sendBarrage(msg: string, type: number = 0) {
		const name = "my name";//PlayerMgrC.myName; 
		msg = this.formatMessage(msg);
		if (type) {
			await this.server.net_allBarrage(Player.localPlayer.userId, name, msg, type);
		}
		else
			await this.server.net_locBarrage(Player.localPlayer.userId, name, msg, type);
		BarrageMgr.inst.showBarrage(name, msg, type);
	}
	//格式化
	private formatMessage(message: string): string {
		let cleanedMessage = message.trim();
		cleanedMessage = cleanedMessage.replace(/\s+/g, " ");
		cleanedMessage = cleanedMessage.replace(/\n+/g, "\n");
		return cleanedMessage;
	}


	net_receiveBarrage(name: string, msg: string, type: number = 0) {
		// BarrageEvents.onReceiveBarrage.broadCast(sendPlayerId, name, msg);
		BarrageMgr.inst.showBarrage(name, msg, type);
	}

	private nameList: string[] = [];
	private initBarrage() {
		if (this.nameList.length < 1) {
			let cfgs = GameConfig.Barrage.getAllElement();
			for (const cfg of cfgs) {
				if (cfg.nickName)
					this.nameList.push(cfg.nickName);
			}
		}
	}
	net_robotBarrage(nameIdx: number, cid: number) {
		this.initBarrage();
		let cfg = GameConfig.Barrage.getElement(cid);
		let name = nameIdx < this.nameList.length ? this.nameList[nameIdx] : null;
		BarrageMgr.inst.showBarrage(name || cfg.nickName, cfg.content, cfg.type);
	}
}
