123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import i18n from "../../../../i18n/i18n";
- import FDialogAttr, { DialogAttrContent } from "./FDialogAttr";
- /**
- * 战斗中对话框
- */
- const {ccclass, property} = cc._decorator;
- /**
- * 对话内容
- */
- export interface DialogContent{
- name:string,
- name1:string,
- icon:string,
- content:string
- }
- @ccclass
- export default class FDialogBox extends cc.Component {
- @property(cc.Label)
- mName: cc.Label = null;
- @property(cc.Label)
- mName1: cc.Label = null;
- @property(cc.Label)
- mContent: cc.Label = null;
- @property(cc.Sprite)
- mIcon: cc.Sprite = null;
- @property(cc.Node)
- mDialogNode: cc.Node = null;//对话框节点
- @property(cc.Node)
- mAttrNode: cc.Node = null;//属性选择节点
- @property(cc.Node)
- mAttrContent: cc.Node = null;
- @property(cc.Prefab)
- mAttrPerfab: cc.Prefab = null;
- /**
- * 下标
- */
- private tmpDialogIndex = 0;
- /**
- * 临时的对话信息
- */
- private tmpDialogs:Array<DialogContent> = null;
- /**
- * 对话的回调
- */
- private callback:()=>void;
- /**
- * 选择属性的回调
- */
- private attrCallback:(type:DialogAttrContent)=>void;
- public onclick(){
- this.tmpDialogIndex ++;
- if(this.tmpDialogs && this.tmpDialogIndex < this.tmpDialogs.length){
- let data = this.tmpDialogs[this.tmpDialogIndex];
- this.setDialog(data);
- }else{
- if(this.callback){
- this.callback();
- this.callback = null;
- }
- }
- }
- public setCallback(callback:()=>void){
- this.callback = callback;
- }
- public setData(tmpDialogs:Array<DialogContent>){
- this.mDialogNode.active = true;
- this.mAttrNode.active = false;
- this.tmpDialogIndex = 0;
- this.tmpDialogs = tmpDialogs;
- let data = this.tmpDialogs[0];
- this.setDialog(data);
- }
- /**
- * 设置对话内容
- * @param data
- */
- private setDialog(data:DialogContent){
- this.mName.string = i18n.t(data.name)
- this.mName1.string = i18n.t(data.name1)
- this.mContent.string = i18n.t(data.content)
- cc.resources.load('icon/npc/'+data.icon, cc.SpriteFrame, (err, spriteFrame:cc.SpriteFrame) =>{
- if(err){
- cc.error(err);
- }else{
- this.mIcon.spriteFrame = spriteFrame;
- }
- } );
- }
- public setAttrCallback(callback:(data)=>void){
- this.attrCallback = callback;
- }
- public setAttr(datas:Array<DialogAttrContent>){
- this.mDialogNode.active = false;
- this.mAttrNode.active = true;
- for (let i = 0; i < datas.length; i++) {
- const element = datas[i];
- let node = cc.instantiate(this.mAttrPerfab);
- node.parent = this.mAttrContent;
- let attr = node.getComponent(FDialogAttr);
- attr.setVaule(element);
- attr.setCallback((da:FDialogAttr)=>{
- if(this.attrCallback){
- this.attrCallback(da.attr);
- }
- });
- }
- }
- }
|