咸鱼的反击
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
19 KiB

3 months ago
import { ryw_Event } from "../../../../FrameWork/Event/EventEnum";
import EventMgr from "../../../../FrameWork/Event/EventMgr";
import Common from "../../../../FrameWork/Util/Common";
import Common5 from "../../../../Platform/th/Common5";
import WordGameBaseComponent from "../../../../FrameWork/Base/WordGameBaseComptent";
import DaDianScript from "../../../../FrameWork/Base/DaDianScript";
import Game from "../../../../Scripts/WenZiRes/ui/Game";
import GZTipBtnScript from "../../../WordGame/guizeGame/comScript/GZTipBtnScript";
import GuiZeLayer from "../../../WordGame/guizeGame/comScript/GuiZeLayer";
import FenBianSiBaoTaiConfig from "./FenBianSiBaoTaiConfig";
import CccGame from "../../../WordGame/gameComScript/CccGame/CccGame";
const { ccclass, property } = cc._decorator;
@ccclass
export default class FenBianSiBaoTaiScript extends WordGameBaseComponent {
@property(cc.Node)
layerNodeArray: cc.Node[] = [];
@property(cc.Node)
resultLayer: cc.Node[] = [];
@property(cc.Node)
GZTipBtn: cc.Node = null;
@property(cc.Node)
GuiZeLayer: cc.Node = null;
//当前层级
curLayerIndex = 0;
//当前进度
isReadGuize = 0;
chooseArrayName: string = "";
stepIndex: number = 0;
chadianIndex = 0;
//文件配置
titleArray: string[] = null;
duihuaArray: [] = null;
resultDuihuaArray: [] = null;
sortLayoutContent: cc.Node[] = null;
bundle = null
start() {
this.bundle = Common5.gameConfig.zmGameConfig[Common5.selectGameNum].bundle
super.start();
DaDianScript.userEnterDaDian();
this.initParameters();
this.initComponent();
Common5.playMusicCustom(this.bundle,'sound/背景音乐');
}
//初始化参数
initParameters() {
this.isReadGuize = 0;
this.titleArray = FenBianSiBaoTaiConfig.getInstance().getGameConfig('titleArray');
this.duihuaArray = FenBianSiBaoTaiConfig.getInstance().getGameConfig('duihuaArray');
this.resultDuihuaArray = FenBianSiBaoTaiConfig.getInstance().getGameConfig('resultDuihuaArray');
Common.Type = 0
Common.subLevel = this.curLayerIndex
Common.GameSubTipConfigs = FenBianSiBaoTaiConfig.getInstance().getGameConfig('tipsArray');
Common.GameSubChooseArray = FenBianSiBaoTaiConfig.getInstance().getGameConfig('chooseArray');
Common.GameguizeArray = FenBianSiBaoTaiConfig.getInstance().getGameConfig('GameguizeArray');
Common.GameSubAnswerConfigs = FenBianSiBaoTaiConfig.getInstance().getGameConfig('answersArray');
EventMgr.onEvent_custom(ryw_Event.openGuizeLayerEvent, (data) => {
this.guizeBtnCallback();
}, this);
EventMgr.onEvent_custom(ryw_Event.GuiZeGameBtnClick, (data) => {
this.guizePaperCallback(data.touchIndex);
}, this);
EventMgr.onEvent_custom(ryw_Event.NormalTouchMoveCheck, (data_) => {
this.normalTouchCallback(data_.targetNode);
}, this);
EventMgr.onEvent_custom(ryw_Event.NormalTouchEndCheck, (data_) => {
this.normalTouchCallback(data_.targetNode);
}, this);
EventMgr.onEvent_custom(ryw_Event.DirectTouchMoveCheck, (data_) => {
this.normalTouchCallback(data_.targetNode);
}, this);
EventMgr.onEvent_custom(ryw_Event.timeOut, (tab) => {
this.endGameView(0);
}, this);
}
//初始化组件
initComponent() {
for (const node of this.layerNodeArray) {
node.active = false;
}
this.sortLayoutContent = [];
let sortLayout = this.layerNodeArray[this.curLayerIndex].getChildByName("sortLayout");
for (let index = 0; index < sortLayout.children.length; index++) {
this.sortLayoutContent[index] = sortLayout.children[index];
}
this.refreshLayer();
this.scheduleOnce(this.setTimeNodePos, 0);
}
//设置计时位置
setTimeNodePos() {
// let timeNode = this.node.getChildByName("timeNode");
// let addtimeNode = this.node.getChildByName("addtimeNode");
// let timeNodePos = timeNode.getPosition();
// let addtimeNodePos = addtimeNode.getPosition();
// Game.ins.setTimePos(timeNodePos.x, timeNodePos.y);
// Game.ins.setTimeScale(0.7)
// Game.ins.setTimeBtnPos(addtimeNodePos.x, addtimeNodePos.y);
}
//更新层级
refreshLayer() {
this.layerNodeArray[this.curLayerIndex].active = true;
let title = this.titleArray[this.curLayerIndex];
let titleLab = this.node.getChildByName('标题').getChildByName('lab');
titleLab.getComponent(cc.Label).string = title;
this.isReadGuize = 0;
this.refreshTipBtn();
this.onNodeMoveEvent();
}
//更新规则
refreshTipBtn() {
Common.subLevel = this.curLayerIndex * 2 + this.isReadGuize;
// let tipScr: GZTipBtnScript = this.GZTipBtn.getComponent('GZTipBtnScript');
// tipScr.refreshTipsCurView();
Game.ins.updateTishiBtn()
}
//注册节点移动事件
onNodeMoveEvent() {
let node = this.layerNodeArray[this.curLayerIndex];
let sortLayout = node.getChildByName("sortLayout");
let moveNode = node.getChildByName("moveNode");
for (let index = 0; index < sortLayout.children.length; index++) {
const element = sortLayout.children[index].getChildByName('item');
let checkNodeArray = [];
for (const item of sortLayout.children) {
if (item.name != element.name) {
checkNodeArray.push(item);
}
}
sortLayout.children[index]['touchIndex'] = index;
let callbacks = CccGame.onNodeUnidirMoveCheckEvent(element, checkNodeArray, { touchIndex: index }, 0, moveNode);
callbacks.setSuccessListener((data_) => {
data_.targetNode.active = true;
data_.targetNode.checkNode.active = true;
let targetIndex = sortLayout.children.indexOf(data_.targetNode.recoveparent),
checkIndex = sortLayout.children.indexOf(data_.targetNode.checkNode);
let element = sortLayout.children[checkIndex];
sortLayout.children[checkIndex] = sortLayout.children[targetIndex];
sortLayout.children[targetIndex] = element;
});
}
this.node.getChildByName('button').active = false;
}
//规则按键回调
guizeBtnCallback() {
this.GuiZeLayer.active = true;
let script_: GuiZeLayer = this.GuiZeLayer.getComponent('GuiZeLayer');
script_.refreshView();
}
//规则纸回调
guizePaperCallback(touchIndex: number) {
// if (this.isReadGuize == 1) return;
// this.isReadGuize = 1;
this.node.getChildByName('button').active = true;
this.refreshTipBtn();
this.GuiZeLayer.active = true;
let script_: GuiZeLayer = this.GuiZeLayer.getComponent('GuiZeLayer')
script_.setGuizeArray(this.curLayerIndex);
}
//触摸移动回调
normalTouchCallback(targetNode: cc.Node) {
console.log("+++++++++++++++++++++>" + targetNode.name);
switch (targetNode.name) {
case "xianyifu":
let node1 = targetNode.parent;
CccGame.playAnimation(node1, '一号 老二掀衣服', true);
this.scheduleOnce(() => {
if (this['tiaowu']) {
CccGame.playAnimation(node1, '一号 老二跳舞', true);
} else {
CccGame.playAnimation(node1, '一号 老二待机', true);
}
targetNode.active = true;
}, 2);
break;
case "xianyifu1":
let node2 = targetNode.parent;
CccGame.playAnimation(node2, '一号 老大老三老四掀衣服', true);
this.scheduleOnce(() => {
if (this['tiaowu'] && node2.name == '四胞胎3') {
CccGame.playAnimation(node2, '一号 老三跳舞', true);
} else {
CccGame.playAnimation(node2, '一号 老大老三老四待机', true);
}
targetNode.active = true;
}, 2);
break;
case "收音机":
let attrNodeArray1 = targetNode['attrNodeArray'];
CccGame.playAnimation(attrNodeArray1[0], '一号 老二跳舞', true);
CccGame.playAnimation(attrNodeArray1[1], '一号 老三跳舞', true);
Common5.playMusicCustom(this.bundle,'sound/收音机播放的音乐');
this['tiaowu'] = true;
break;
case "shouyinji":
let attrNodeArray2 = targetNode['attrNodeArray'];
CccGame.playAnimation(attrNodeArray2[0], '一号 老二待机', true);
CccGame.playAnimation(attrNodeArray2[1], '一号 老大老三老四待机', true);
Common5.playMusicCustom(this.bundle,'sound/背景音乐');
this['tiaowu'] = false;
break;
case "mojing1":
let mojing1Node = targetNode.parent;
CccGame.playAnimation(mojing1Node, '二号 老三上滑墨镜', false);
this.scheduleOnce(() => {
CccGame.playAnimation(mojing1Node, '二号 老三待机', true);
targetNode.active = true;
}, 1.5);
break;
case "mojing2":
let mojing2Node = targetNode.parent;
CccGame.playAnimation(mojing2Node, '二号 老四上滑墨镜', false);
this.scheduleOnce(() => {
CccGame.playAnimation(mojing2Node, '二号 老大老四待机', true);
targetNode.active = true;
}, 1.5);
break;
case "mojing3":
let mojing3Node = targetNode.parent;
CccGame.playAnimation(mojing3Node, '二号 老大上滑墨镜', false);
this.scheduleOnce(() => {
CccGame.playAnimation(mojing3Node, '二号 老大老四待机', true);
targetNode.active = true;
}, 1.5);
break;
case "mojing4":
let mojing4Node = targetNode.parent;
CccGame.playAnimation(mojing4Node, '二号 老二上滑墨镜', false);
this.scheduleOnce(() => {
CccGame.playAnimation(mojing4Node, '二号 老二待机', true);
targetNode.active = true;
}, 1.5);
break;
case "gouwu":
let gouwuNode = targetNode.parent;
CccGame.playAnimation(gouwuNode, '二号 老三购物卡', false);
this.scheduleOnce(() => {
CccGame.playAnimation(gouwuNode, '二号 老三待机', true);
targetNode.active = true;
}, 1.5);
break;
case "手电筒":
let checkNode = targetNode['checkNode'] as cc.Node,
role = checkNode.parent;
switch (checkNode.name) {
case '手电筒光3':
cc.tween(checkNode)
.set({ active: true, opacity: 255 })
.call(() => {
CccGame.playAnimation(role, '三号 老大闭眼', true);
this['biyan'] = true;
})
.delay(2)
.set({ active: true, opacity: 0 })
.call(() => {
this['biyan'] = false;
if (this['tiaowu']) {
CccGame.playAnimation(role, '三号 老三跳舞', true);
} else {
CccGame.playAnimation(role, '三号 老三待机', true);
}
targetNode.active = true;
})
.start();
break;
case '手电筒光2':
cc.tween(checkNode)
.set({ active: true, opacity: 255 })
.call(() => {
CccGame.playAnimation(role, '三号 老二闭眼', true);
})
.delay(2)
.set({ active: true, opacity: 0 })
.call(() => {
CccGame.playAnimation(role, '三号 老二待机', true);
targetNode.active = true;
})
.start();
break;
case '手电筒光1':
cc.tween(checkNode)
.set({ active: true, opacity: 255 })
.delay(2)
.set({ active: true, opacity: 0 })
.call(() => {
targetNode.active = true;
})
.start();
break;
case '手电筒光4':
cc.tween(checkNode)
.set({ active: true, opacity: 255 })
.call(() => {
CccGame.playAnimation(role, '三号 老四闭眼', true);
})
.delay(2)
.set({ active: true, opacity: 0 })
.call(() => {
CccGame.playAnimation(role, '三号 老四待机', true);
targetNode.active = true;
})
.start();
break;
default:
break;
}
break;
case "电台无信号":
Common5.playEffectCustom(this.bundle, 'sound/收音机没信号声音');
this.scheduleOnce(() => {
targetNode.active = true;
}, 2);
break;
case "遥控器":
this['tiaowu'] = true;
let node3 = targetNode['attrNodeArray'][1];
CccGame.playAnimation(node3, '三号 老三跳舞', true);
Common5.playMusicCustom(this.bundle,'sound/收音机播放的音乐');
this.scheduleOnce(() => {
if (this['biyan']) {
CccGame.playAnimation(node3, '三号 老大闭眼', true);
} else {
CccGame.playAnimation(node3, '三号 老三待机', true);
}
targetNode.active = true;
targetNode['checkNode'].active = true;
targetNode['attrNodeArray'][0].active = false;
Common5.playMusicCustom(this.bundle,'sound/背景音乐');
this['tiaowu'] = false;
}, 5.7);
break;
default:
break;
}
}
determine() {
const sortConfig = ['1023', '2301', '2103'];
let sortLayout = this.layerNodeArray[this.curLayerIndex].getChildByName("sortLayout");
let sortText = '';
for (const iterator of sortLayout.children) {
sortText += iterator['touchIndex'];
}
if (sortText != sortConfig[this.curLayerIndex]) {
this.endGameView(0);
return;
}
if (this.curLayerIndex < 2) {
this.nextLayer();
} else {
this.endGameView(1);
}
}
//显示对话
showDuiHua(curLog, func?) {
console.log("curLog==", curLog);
if (curLog.effectUrl) {
Common5.playEffectCustom(this.bundle, curLog.effectUrl);
}
let string_ = curLog.str
let qiPaoPos_ = curLog.qiPaoPos
let delayTime_ = curLog.delayTime || 3;
let node = this.layerNodeArray[this.curLayerIndex];
if (qiPaoPos_ != -1) {
let qiPao = node.getChildByName("qiPao").getChildByName("qiPao_" + qiPaoPos_);
qiPao.stopAllActions()
qiPao.getChildByName("str").getComponent(cc.Label).string = string_
qiPao.active = true
qiPao.scale = 0
cc.tween(qiPao)
.to(0.2, { scale: 1 })
.delay(delayTime_)
.call(() => {
qiPao.active = false
})
.start();
}
else {
// let logPrefab = this.node.getChildByName('logPrefab')
// let script_: logPrefabScript = logPrefab.getComponent('logPrefabScript')
// script_.setDailogShow(string_, delayTime_)
}
this.scheduleOnce(() => {
if (func) {
func();
}
}, delayTime_);
}
//跳转场景
nextLayer() {
this.curLayerIndex++;
Common.subLevel = this.curLayerIndex
Game.ins.updateTishiBtn()
Common5.playMusicCustom(this.bundle,'sound/背景音乐');
this['tiaowu'] = false;
for (let i = 0; i < this.layerNodeArray.length; i++) {
if (this.layerNodeArray[i].active) {
cc.tween(this.layerNodeArray[i])
.to(1, { opacity: 0 })
.delay(1.0)
.set({ active: false })
.call(this.refreshLayer, this)
.start();
} else {
this.layerNodeArray[i].active = false;
}
};
}
endGameView(touchIndex: number) {
this.node.getChildByName("mask").active = true;
Game.ins.stopTime();
if (touchIndex == 0) {
this.scheduleOnce(() => {
Game.ins.showFail();
}, 1.5);
} else {
this.scheduleOnce(() => {
Game.ins.showSuccess();
}, 1.5);
}
}
onClick(event) {
let target = event.target;
console.log("+++++++++++++++++++>" + target.name);
Common5.playEffect("点击音效");
switch (target.name) {
case "button":
target.active = false;
this.determine();
break;
default:
break;
}
}
}