window.dialogmanager = { InitDialgue() { this.nodeName = []; //文本打字速度 ms this.IntervalidTimeout = 50; this.nodeName.push("secretary"); this.nodeName.push("worker"); this.nodeName.push("businessman"); this.dialogName = []; this.dialogName.push("秘书"); this.dialogName.push("旅行者"); this.dialogue = []; //0 this.dialogue.push(" 总裁您好!今天公司准备开始建设这块商业用地,我是您的小秘书."); //1 this.dialogue.push(" 啊!惨了耶!今天公司新人来报道的事忘的一干二净了!"); //2(2.1) this.dialogue.push(" 对不起!第一天上班还要麻烦总裁亲自安排住宿这种事,真是不好意思。\n 心里嘀咕:“搞不好第一天上班就要被辞退了呀!我要打起120分的精神!”"); //3 this.dialogue.push(" 太好了,有房子了!也不知道这个公司的主管怎么想的!每一个员工都要有一个房子不是常识吗!"); //4 this.dialogue.push(" 你好啊!我是路过的游客。你的粮食丰收了,看起来真棒!我想收购一点回去,这里有100个金币,你就收下吧!"); //5 this.dialogue.push(" 初期多种开发农田,是一个赚钱的好办法。"); //6 this.dialogue.push(" 农田生产的粮食可以出售给游客," + "还可以当作加工厂的原材料,制作出利润更高的商品销售。" + "让我们建造一个农田吧!"); //7 (7.1) this.dialogue.push(" 太好了!看来经过我的努力一切都已经走上了正轨了嘛~!"); //8 this.dialogue.push(" 让我们再给新来的员工建造一栋宿舍吧!"); //9 this.dialogue.push(" 农田产生交易后,就有机会出现钻石哦!" + "点击钻石就可以收获它啦!交易次数越多,可收获的钻石就越多哦!"); //10 this.dialogue.push(" 交易2次,就可以收获1颗钻石," + "交易5次,就可以收获2颗钻石,交易10次,就可以收获5颗钻石呢!"); //11 this.dialogue.push(" 资金不足!?没关系," + "游戏里每天都有丰厚的奖励," + "现在请点击“签到”,获取第一笔创业资金吧!"); //12 this.dialogue.push(" 欢乐大转盘,抽奖抽到手软。这里有大量金币、" + "大量钻石,还有各种高级建筑哦!还不快来试试手气?" + "只要点击抽奖,就有机会抽中神秘礼物哦!"); //13 this.dialogue.push(" 先给自己定一个小目标:利用你的人力、土地等资源,赚到" + "3000金币吧!"); //14 this.dialogue.push(" 恭喜你新晋富豪榜一级会员!收到礼物“加工厂”一座!" + "加工厂可以把原材料加工为各类精美的商品。" + "现在请根据提示,来建造我们第一座加工厂吧!"); //15 this.dialogue.push(" 有了加工厂后,我们还需要建造一个商店。" + "这样,加工厂加工完的商品,就可以放在商店出售啦!" + "现在请点击“建造”,然后根据提示建造便利店吧!"); //16 this.dialogue.push(" 城市的建设固然重要," + "但是也不要忽略环保哦!"); //17 (17.1) this.dialogue.push( " 绿化带不仅能让城市更加美观,也可以提周围建筑的" + "工作生产效率,还可以提高周边商铺的游客光顾几率呢!"); //18(2.2) this.dialogue.push(" 要注意,建筑只能建造在空地上哦!" + "不可以建造在其他建筑上,也不能" + "建造在道路上!"); //19(19.1) this.dialogue.push(" 在你了解游戏的最基础功能后一定迫不及待的想要知道如何更快的成为首富吧~"); //20(19.2) this.dialogue.push(" 初期我们的收入基本来自于自然资源的交易。后期我们有了更多商铺的时候," + "可以考虑在《管理》菜单中关闭自然资源的交易,防止加工厂出现原料短缺的情况。"); //21(19.3) this.dialogue.push(" 优秀的建筑布局是提高商业利润的有效手段" + ",你可以尝试把附加值更高的上商店建在靠近客商往来的道路边。"); //22(19.4) this.dialogue.push(" 同时你也可以重新规划道路,围绕着特殊建筑的加成效果来布局建筑," + "能显著提升房屋对工人的体力恢复以及者商铺中商品的价格。"); //23(19.4) this.dialogue.push(" 好了!现在快快来建立你的商业帝国吧!"); //24(7.2) this.dialogue.push(" …明明都是我亲力亲为的好吗!"); //25 (17.2) this.dialogue.push( "好了!我们快来点击“建造”,根据提示添加一个绿化带吧!"); //26 (17.2) this.dialogue.push( "现在公司已经有一个非常好的开端了,对了...我看看经营手册上还说了什么!"); //27 (17.2) this.dialogue.push( "如果想要更好的发展,合理的规划布局是必不可少一个环节,啊!对了说道规划我前几天正好查看了如何修建道路的学问。现在我们先来规划一条道路吧"); //28 (17.2) this.dialogue.push( "铺设道路成功。那,现在都清楚了吗?如果还有什么疑问,可以看帮助按钮里面的铺路教程哦。"); //29(7.3) this.dialogue.push(" 哎呀,先不要在乎这些细节嘛!!\n 现在当务之急是先要多雇佣一些人手吧!"); //30(7.4) this.dialogue.push(" 太好了!今天第一天来上班,心里不知为何有点小兴奋呢!"); //31(6.1) this.dialogue.push(" 太好了!公司终于正式开始运营了,以后我也会陪着总裁帮助总裁运营公司。所以有什么不懂得呢尽管问我好了,哈哈哈!"); //32(6.2) this.dialogue.push(" ...神经这么大条的姑娘真的靠得住吗?"); //33(6.3) this.dialogue.push(" 总裁今天开张,不如分享给好友让好友来帮忙剪个彩吧。"); }, init(nodeparent, callback, skipCallback, endCallback) { this.node = nodeparent; this.showDialogDetailTag = false; this.dialogNode = null; //创建引导面板预制 task.addTaskTipsNoArr(this.node, "prefab/task/Dialog", 0, 0, "Dialog", (nodePrefabs) => { nodePrefabs.parent = this.node; this.dialogNode = nodePrefabs; if (callback != null) { callback(nodePrefabs); } var skipBtn = UtilsPrefabs.getNode("Skip", this.dialogNode); skipBtn.active = true; UtilsPrefabs.setOn(skipBtn, function () { UtilsPrefabs.setOff(skipBtn); if (skipCallback) skipCallback(); if (this.Intervalid) clearInterval(this.Intervalid); this.removeNode(); }.bind(this)); var endBtn = UtilsPrefabs.getNode("End", this.dialogNode); endBtn.active = true; UtilsPrefabs.setOn(endBtn, function () { UtilsPrefabs.setOff(endBtn); if (endCallback) endCallback(); //任务结束 task.onSetTaskEnd(); if (this.Intervalid) clearInterval(this.Intervalid); this.dialogNode.destroy(); }.bind(this)); }); }, //上来介绍 提示出来员工 准备去造房子 //前三句话 dialog1: function () { //出人 this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); //美女助理:“xx总好!今天公司准备开业,我是您的小助理淼淼。” this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { //打字效果 this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[0], function () { cc.find('GameNode/ManageTask').getComponent('ManageTask').onMoveCamera(); //点击 点击之后 this.showClick(function () { this.Buildingdormitory1(); }.bind(this)); }.bind(this)); }.bind(this)); }, Buildingdormitory1: function () { //美女助理:“啊!惨了耶!今天公司新人来报道的事忘的一干二净了!” this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[1], function () { this.showClick(function () { this.PlayerTalk('...!', () => { this.Buildingdormitory2() }); }.bind(this)); }.bind(this)); }.bind(this)); }, //玩家切入讲话 PlayerTalk: function (_playerTalk, _talkEndCallback) { this.hidePersonnel(this.dialogNode, this.nodeName[0], function () { this.showPersonnel(this.dialogNode, this.nodeName[1], function () { }.bind(this)); //玩家:“…” this.showDialogDetail(this.dialogNode, '玩家', function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), _playerTalk, function () { this.showClick(function () { if (_talkEndCallback) _talkEndCallback(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, Buildingdormitory2: function () { this.hidePersonnel(this.dialogNode, this.nodeName[1], function () { this.showPersonnel(this.dialogNode, this.nodeName[0], function () { }.bind(this)); //美女助理:“对不起!第一天上班还要麻烦总裁亲自安排住宿这种事,真是不好意思。” //美女助理心里嘀咕:“搞不好第一天上班就要被辞退了呀!我要打起120分的精神!”。 this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[2], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, //全恢复了就可以去劳动了。是不是 pickUp: function (_pickUpDialogue) { this.hidePersonnel(this.dialogNode, this.nodeName[0], function () { //出人 this.showPersonnel(this.dialogNode, this.nodeName[1], function () { }.bind(this)); //出名字 说话内容 this.showDialogDetail(this.dialogNode, '员工', function () { //打字效果 this.TypingAni(this.DialogDetail.getComponent(cc.Label), _pickUpDialogue, function () { //点击 点击之后 this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, //农田第一次被别人买的时候 buyFarming: function () { //移动camera 到农田对应位置 cc.find('GameNode/ManageTask').getComponent('ManageTask').onMovePayFarmland(); //出人 this.showPersonnel(this.dialogNode, this.nodeName[2], function () { }.bind(this)); //出名字 说话内容 this.showDialogDetail(this.dialogNode, this.dialogName[1], function () { //打字效果 this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[4], function () { this.showClick(function () { this.buyFarming1(); }.bind(this)); }.bind(this)); }.bind(this)); }, buyFarming1: function (callback) { //出人 this.hidePersonnel(this.dialogNode, this.nodeName[2], function () { //出人 this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); //出名字 说话内容 this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { //打字效果 this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[5], function () { //点击 点击之后 this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, //创建农田 任务1 creatorFarming: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[6], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //铺路 任务 pave: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[26], function () { this.showClick(function () { this.pave1(); }.bind(this)); }.bind(this)); }.bind(this)); }, pave1: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[27], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //铺路结束 paveEnd: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[28], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //招聘 任务开始 Recruit: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[7], function () { this.showClick(function () { this.PlayerTalk(this.dialogue[24], () => { this.Recruit2(); }); }.bind(this)); }.bind(this)); }.bind(this)); }, Recruit2: function () { this.hidePersonnel(this.dialogNode, this.nodeName[1], function () { this.showPersonnel(this.dialogNode, this.nodeName[0], function () { }.bind(this)); //美女助理:“对不起!第一天上班还要麻烦总裁亲自安排住宿这种事,真是不好意思。” //美女助理心里嘀咕:“搞不好第一天上班就要被辞退了呀!我要打起120分的精神!”。 this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[29], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, // Recruit1: function () { // this.showPersonnel(this.dialogNode, null, function () { // }.bind(this)); // this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { // this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[24], function () { // this.showClick(function () { // this.removeNode(); // }.bind(this)); // }.bind(this)); // }.bind(this)); // }, //任务分享游戏对话 Share1: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[31], function () { this.showClick(function () { this.PlayerTalk(this.dialogue[32], () => { this.Share2(); }); }.bind(this)); }.bind(this)); }.bind(this)); }, Share2: function () { this.hidePersonnel(this.dialogNode, this.nodeName[1], function () { this.showPersonnel(this.dialogNode, this.nodeName[0], function () { }.bind(this)); //美女助理:“对不起!第一天上班还要麻烦总裁亲自安排住宿这种事,真是不好意思。” //美女助理心里嘀咕:“搞不好第一天上班就要被辞退了呀!我要打起120分的精神!”。 this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[33], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }.bind(this)); }, //再创建一个农舍 任务3 Buildingdormitorytoo: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[8], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //收取钻石 任务4 getDiamonds: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[9], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //每日签到 任务5 EveryDay: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[11], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //抽奖 任务6 goodluck: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[12], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //得到3000元 任务7 get3K: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[13], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //创建一个加工厂 任务8 creatorProcessingfactory: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[14], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //创建商店 任务9 creatorShop: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[15], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, //创建绿化带 任务10 creatorGreen: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[16], function () { this.showClick(function () { this.creatorGreen1(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorGreen1: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[17], function () { this.showClick(function () { this.creatorGreen2(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorGreen2: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[25], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorEnd: function () { this.showPersonnel(this.dialogNode, null, function () { }.bind(this)); this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[19], function () { this.showClick(function () { this.creatorEnd1(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorEnd1: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[20], function () { this.showClick(function () { this.creatorEnd2(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorEnd2: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[21], function () { this.showClick(function () { this.creatorEnd3(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorEnd3: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[22], function () { this.showClick(function () { this.creatorEnd4(); }.bind(this)); }.bind(this)); }.bind(this)); }, creatorEnd4: function () { this.showDialogDetail(this.dialogNode, this.dialogName[0], function () { this.TypingAni(this.DialogDetail.getComponent(cc.Label), this.dialogue[23], function () { this.showClick(function () { this.removeNode(); }.bind(this)); }.bind(this)); }.bind(this)); }, showClick: function (callback) { var infoclick = UtilsPrefabs.getNode("infoclick", this.BGDetail); infoclick.active = true; var SureBtn = UtilsPrefabs.getNode("SureBtn", this.dialogNode); SureBtn.active = true; UtilsPrefabs.setOn(SureBtn, function () { // console.log("显示完毕"); SureBtn.active = false; infoclick.active = false; UtilsPrefabs.setOff(SureBtn); if (callback != null) { callback(); } }.bind(this)); }, //渐变 人 左面或者 右面 用名字控制 showPersonnel: function (node, nodeName, callback) { if (nodeName == null) { nodeName = "secretary"; } node.getComponent('Dialog').onSetCharacterSprite(nodeName); var Character = UtilsPrefabs.getNode("character", node); var fadeIn = cc.fadeTo(0.5, 255); var finished = cc.callFunc(function () { if (callback != null) { callback(); } }.bind(this)); var s = cc.sequence(fadeIn, finished); Character.runAction(s); }, hidePersonnel: function (node, nodeName, callback) { if (nodeName == null) { nodeName = "secretary"; } node.getComponent('Dialog').onSetCharacterSprite(nodeName); var Character = UtilsPrefabs.getNode("character", node); var fadeIn = cc.fadeTo(0.5, 0); var finished = cc.callFunc(function () { if (callback != null) { callback(); } }.bind(this)); var s = cc.sequence(fadeIn, finished); Character.runAction(s); }, //显示 对话 showDialogDetail: function (node, name, callback) { var DialogBG = this.DialogBG = UtilsPrefabs.getNode("DialogBG", node); var BGname = UtilsPrefabs.getNode("BGname", DialogBG); var DialogName = UtilsPrefabs.getNode("DialogName", BGname); DialogName.getComponent(cc.Label).string = name; var fadeIn = cc.fadeIn(1); if (this.showDialogDetailTag) { if (callback != null) { callback(); } } var finished = cc.callFunc(function () { if (!this.showDialogDetailTag) { this.showDialogDetailTag = true if (callback != null) { callback(); } } // console.log("显示完毕写文字了吗"); }.bind(this)); var s = cc.sequence(fadeIn, finished); BGname.runAction(s); var BGDetail = this.BGDetail = UtilsPrefabs.getNode("BGDetail", DialogBG); var DialogDetail = this.DialogDetail = UtilsPrefabs.getNode("DialogDetail", BGDetail); DialogName.getComponent(cc.Label).string = name; var DetailfadeIn = cc.fadeIn(1); BGDetail.runAction(DetailfadeIn); }, TypingAni: function (label, text, callback) { var self = this; var html = ''; var arr = text.split(''); var len = arr.length; var step = 0; self.func = function () { html += arr[step]; label.string = html; if (++step == len) { // self.unschedule(self.func, self); clearInterval(this.Intervalid); callback && callback(self); } }.bind(this) this.Intervalid = setInterval(self.func, this.IntervalidTimeout) // self.schedule(self.func,0.05, cc.macro.REPEAT_FOREVER, 0) }, removeNode: function (node) { if (node != null) { node.destroy(); } else if (this.dialogNode != null) { this.dialogNode.destroy(); if (this.closeDialogCallBack != null) { this.closeDialogCallBack(); this.closeDialogCallBack = null; } } }, //关闭dialog 的回调 setOnCloseDialog: function (closeDialogCallBack) { this.closeDialogCallBack = closeDialogCallBack; }, closeDialogCallBack: function () { }, // update (dt) {}, };