Files
18xchat/assets/Scripts/test/ChatPanel.ts
T

116 lines
3.3 KiB
TypeScript
Raw Normal View History

2025-08-01 18:28:36 +08:00
import { _decorator, Component, EditBox, Node,Label,Sprite,UITransform } from "cc";
2025-07-22 16:43:10 +08:00
import { DemoManager } from "./DemoManager";
2025-08-11 14:29:39 +08:00
import { ChatAIService } from "./ChatAIService";
2025-07-25 18:27:30 +08:00
import li_BaseView from "db://assets/Scripts/Main/Common/li_BaseView";
import Utils from "db://assets/Scripts/Main/Common/Utils";
import {InnerMsgCode} from "db://assets/Scripts/Main/Config/InnerMsgCode";
import {ChatContentsLayout} from "db://assets/Scripts/test/ChatContentsLayout";
import {ViewManager} from "db://assets/Scripts/Main/Manager/ViewManager";
import GameRootUI from "db://assets/Scripts/Main/Common/GameRootUI";
import {ImagePopup} from "db://assets/Scripts/test/ImagePopup";
2025-08-01 18:28:36 +08:00
import {girlDetailInfo, GirlsData} from "db://assets/Scripts/Main/Config/cfg/characters";
import ResManager from "db://assets/Scripts/Main/Manager/ResManager";
import {VideoRoleType} from "db://assets/Scripts/Main/Common/GlobalValue";
2025-07-22 16:43:10 +08:00
const { ccclass, property } = _decorator;
@ccclass("ChatPanel")
2025-07-25 18:27:30 +08:00
export class ChatPanel extends li_BaseView {
2025-07-22 16:43:10 +08:00
manager: DemoManager = null;
@property(EditBox)
editBox: EditBox = null;
2025-07-25 15:20:02 +08:00
@property(Label)
girlName: Label = null;
2025-08-01 18:28:36 +08:00
@property(Sprite)
girlImg: Sprite = null;
2025-07-25 18:27:30 +08:00
@property(ChatContentsLayout)
layout: ChatContentsLayout = null;
@property(ImagePopup)
popUpImage: ImagePopup = null;
2025-07-25 15:20:02 +08:00
id:number
2025-08-01 18:28:36 +08:00
private _nodeTab: any = {};
openUIDataCT(data)
{
this.id = data;
2025-08-11 14:29:39 +08:00
// 设置当前聊天的角色ID
ChatAIService.Instance.setCurrentRole(this.id);
2025-08-01 18:28:36 +08:00
}
2025-07-25 18:27:30 +08:00
onLoadCT()
{
2025-08-01 18:28:36 +08:00
Utils.parseNode(this.node,this._nodeTab);
2025-07-25 18:27:30 +08:00
this.register();
2025-08-01 18:28:36 +08:00
this.refresh(this.id);
2025-07-25 18:27:30 +08:00
}
register()
{
Utils.addInnerEL(InnerMsgCode.Chat_DialogRefresh,this,this.onDialogUpdate);
}
2025-07-25 15:20:02 +08:00
refresh(id:number) {
this.id = id;
2025-08-01 18:28:36 +08:00
const data = girlDetailInfo.filter(value=>value.baseInfo.id == id)[0];
if(!data) return;
this.girlName.string = data.baseInfo.name;
ResManager.I.changeBundleSpriteFrame(this.girlImg,data.baseInfo.pic.url,"Chat18x",()=>{
let sizeTran = this.girlImg.node.parent.getComponent(UITransform);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize,this.girlImg.node,2);
});
let uiTransform:UITransform = this._nodeTab.BgFrame.getComponent(UITransform);
Utils.sendInnerMsg(InnerMsgCode.SimplePlayVide,{path:data.pics[0].url,size:uiTransform.contentSize} )
2025-07-25 15:20:02 +08:00
}
2025-07-25 18:27:30 +08:00
onDialogUpdate()
{
this.layout.UpdateDialog(DemoManager.getInstance().getDialogs())
}
2025-07-22 16:43:10 +08:00
protected onEnable(): void {
if (!this.manager) this.manager = DemoManager.getInstance();
2025-07-25 18:27:30 +08:00
GameRootUI.I.hideDefaultView();
2025-07-22 16:43:10 +08:00
}
public async OnClickSend() {
const str = this.editBox.string;
if (!str || str == "") return;
console.log("post:" + str);
this.editBox.string = "";
2025-07-25 18:27:30 +08:00
DemoManager.getInstance().updateDialog(true, str,true);
2025-07-22 16:43:10 +08:00
2025-08-11 14:29:39 +08:00
// 使用新的sendMessage方法,传入角色ID
const ret = await ChatAIService.Instance.sendMessage(this.id, str);
2025-07-22 17:48:45 +08:00
console.log(ret);
2025-07-22 16:43:10 +08:00
2025-08-11 14:29:39 +08:00
if (ret == null) {
2025-07-22 16:43:10 +08:00
console.warn("rep null");
}
if (this.manager) {
2025-08-11 14:29:39 +08:00
this.manager.updateDialog(false, ret);
2025-07-22 16:43:10 +08:00
}
2025-08-11 14:29:39 +08:00
console.log("ret:" + ret);
2025-07-25 18:27:30 +08:00
//测试
2025-08-01 18:28:36 +08:00
//this.popUpImage.refresh("Image/1/blur_naked_1");
2025-07-25 18:27:30 +08:00
}
returnBtn()
{
this.onClose();
GameRootUI.I.showDefaultView();
//ViewManager.I.openBundlesView("GirlListPanel");
2025-07-22 16:43:10 +08:00
}
}