咸鱼的反击
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.
 
 
 

409 lines
14 KiB

import { ryw_Event } from "../../FrameWork/Event/EventEnum";
import EventMgr from "../../FrameWork/Event/EventMgr";
import GameReport from "../../FrameWork/Report/ZyZyReport";
import User from "../../FrameWork/User/User";
import AppPlatform from "../../FrameWork/Util/AppPlatform";
import Common5 from "../../Platform/th/Common5";
import LevelUpManager from "../Manager/LevelUpManager";
import UserManager from "../Manager/UserManager";
import PrefabManage, { GameType } from "../PrefabManager/PrefabManage";
import GameBase from "../SCommon/GameBase";
import GetAward from "../SCommon/GetAward";
import FoShanDianHanManager from "./FoShanDianHanManager";
import NoteLines from "./NoteLines";
const { ccclass, property } = cc._decorator;
@ccclass
export default class FoShanDianHan extends GameBase {
@property(cc.Node)
renSpine: cc.Node = null;
@property(cc.Node)
jiKongStr: cc.Node = null;
@property(cc.Node)
failNode: cc.Node = null;
@property(cc.Node)
heiPing: cc.Node = null;
@property(cc.Node)
shuziSpine: cc.Node = null;
// isStartGame:boolean = false
gameState: string = 'none'//游戏状态
musicDuration: number = 0//歌曲长度
timePassed: number = 0//已过时长
nodeSlideLength: number = 0//移动的距离
nodePerfectTime: number = 0//移动的完美时间
gameSpeed: number = 1000//note速度,单位:像素每秒
beatMap = []//该轨道的所有note的谱面
missTime: number = 0.2
recordCollisionNodeTab = []
allYinFuNum: number = 0
jiZhongYinFuNum: number = 0
jiKongNum: number = 0
jiXuYouXiTimer: number = 0
public static instance = null
public static getInstance() {
return FoShanDianHan.instance
}
onLoad() {
super.onLoad()
Common5.stopMusic()
FoShanDianHan.instance = this
cc.macro.ENABLE_MULTI_TOUCH = true;
cc.director.getCollisionManager().enabled = true;
// cc.director.getCollisionManager().enabledDebugDraw = true;
this.initData()
//注册键盘监听函数
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
}
onDestroy() {
super.onDestroy()
}
start() {
Common5.playEffect("GameRes/ui/foShanDianHan/sound/女轻哼-御姐笑")
this.nodeSlideLength = 700//Math.abs(this.startNode.x-this.endNode.x)
this.nodePerfectTime = this.nodeSlideLength / this.gameSpeed;
// this.gameStart()
this.setStartBtn(1)
EventMgr.onEvent_custom(ryw_Event.ExitBtnEvent, () => {
if (User.getStatistics('smallgamefsdhCurGoLevel') > 0) {
PrefabManage.loadPrefabByType(GameType.SuccessGetMoney, null, (prefab) => {
prefab.getComponent('SuccessGetMoney').setViewDate("", 1, 5)
})
}
}, this)
}
onKeyDown(event) {
switch (event.keyCode) {
case cc.macro.KEY.a:
this.onBtnClickZSZY();
break;
case cc.macro.KEY.s:
this.onBtnClickHSQJ();
break;
case cc.macro.KEY.d:
this.onBtnClickJJFZ();
break;
default:
;
}
}
setStartBtn(index) {
if (index == 1) {
this.node.getChildByName("startNode").active = true
this.node.getChildByName("startNode").getChildByName("btnStart").active = true
this.node.getChildByName("startNode").getChildByName("btnRestart").active = false
} else if (index == 2) {
this.node.getChildByName("startNode").active = true
this.node.getChildByName("startNode").getChildByName("btnRestart").active = true
this.node.getChildByName("startNode").getChildByName("btnStart").active = false
} else if (index == 0) {
this.node.getChildByName("startNode").active = false
} else if (index == 4) {
this.node.getChildByName("startNode").active = false
this.initData(true)
this.gameStart()
}
}
onBtnStartClick() {
this.reportKey(() => {
GameReport.BtnsReport('开始游戏')
})
Common5.playEffect("CommonRes/sound/按键点击")
this.setStartBtn(0)
this.initData()
this.gameStart()
}
initData(isJiXu?) {
this.initBars(FoShanDianHanManager.getSongInfo().beatMap)//可配参数
this.node.getChildByName("nvSpr").active = true
this.node.getChildByName("nvSpine").active = false
this.node.getChildByName("qiPao1").active = true
this.node.getChildByName("qiPao2").active = false
this.gameState = 'none'
this.recordCollisionNodeTab = []
this.timePassed = 0
this.allYinFuNum = 0
this.jiZhongYinFuNum = isJiXu ? this.jiZhongYinFuNum : 0
this.jiKongNum = 0
this.refreshJiKongStr()
}
addAllYinFuNum() {
this.allYinFuNum += 1
// console.log('allYinFuNum==',this.allYinFuNum)
}
addJiZhongYinFuNum() {
this.jiZhongYinFuNum += 1
// console.log('jiZhongYinFuNum==',this.jiZhongYinFuNum)
}
addJiKongNum() {
this.jiKongNum += 1
}
refreshJiKongStr() {
let num = this.jiZhongYinFuNum//this.allYinFuNum-this.jiZhongYinFuNum
this.jiKongStr.getComponent(cc.Label).string = `击中数:${num}`
}
initBars(beatMap) {//初始化各个轨道
var numOfBars = beatMap.length;
for (var bar = 0; bar < numOfBars; bar++) {
var newNoteBar = this.node.getChildByName("NoteLine_" + bar)
newNoteBar.getComponent(NoteLines).beatMap = beatMap[bar];
newNoteBar.getComponent(NoteLines).initData()
newNoteBar.name = 'NoteLine_' + bar;
}
}
gameStart() {
this.musicDuration = this.node.getComponent(cc.AudioSource).getDuration();
cc.tween(this.node)
.delay(0.5)
.call(() => {
Common5.playEffect("GameRes/ui/foShanDianHan/sound/倒计时")
this.shuziSpine.active = true
this.shuziSpine.getComponent(sp.Skeleton).setAnimation(0, 'shuzi', false)
})
.delay(3.5)
.call(() => {
this.shuziSpine.active = false
this.node.getComponent(cc.AudioSource).play()//播放音乐
this.gameState = 'playing';//设置游戏状态为playing
})
.start()
}
update(dt) {
if (this.gameState === 'playing') {
if (this.musicDuration - this.timePassed < 0.2) {
this.gameState = 'finish';
// PrefabManage.loadPrefabByType(GameType.FinishPanel,null,(prefabNode)=>{
// // CallFunc(prefabNode)
// })
console.log("游戏结束===")
cc.tween(this.node)
.delay(2)
.call(() => {
// let num = this.allYinFuNum-this.jiZhongYinFuNum
Common5.showInterstitialAd()
if (this.jiZhongYinFuNum < 140) {
this.failNode.active = true
} else {
this.node.getChildByName("qiPao1").active = false
this.node.getChildByName("qiPao3").active = true
this.scheduleOnce(() => {
User.setStatistics('smallgamefsdhCurGoLevel', User.getStatistics('smallgamefsdhCurGoLevel') + 1)
this.showAward()
}, 1.5)
}
})
.start()
}
this.timePassed = this.getComponent(cc.AudioSource).getCurrentTime();//记录音乐播放的时间
// //miss信息三秒消失
// if(GameDefine.lastNoteJudgement === 'miss')
// {
// GameDefine.timer += dt;
// }else{
// GameDefine.timer=0;
// }
// if(GameDefine.timer>3)
// {
// this.node.getChildByName('comboLabel').getComponent(cc.Label).string = '';
// }
}
}
checkJiZhong(nameStr, spineStr) {
let tab = this.recordCollisionNodeTab
for (let i = 0; i < tab.length; i++) {
if (tab[i].name == nameStr) {
tab[i]['isCollider'] = false
// let node = tab[i]
// node.removeFromParent()
// node.destroy()
tab.splice(i, 1)
Common5.playEffect("GameRes/ui/foShanDianHan/sound/击鼓声")
let jizhongSpine = this.node.getChildByName(nameStr).getChildByName('jiZhongSpine')
let copySpine = cc.instantiate(jizhongSpine)
copySpine.parent = jizhongSpine.parent
copySpine.setPosition(jizhongSpine.getPosition())
copySpine.active = true
copySpine.stopAllActions()
copySpine.getComponent(sp.Skeleton).setAnimation(0, spineStr, false)
cc.tween(copySpine)
.delay(0.3)
.removeSelf()
.start()
this.addJiZhongYinFuNum()
this.refreshJiKongStr()
break
}
}
// console.log("checkJiZhong===",tab)
}
onBtnClickZSZY() {
this.checkJiZhong('NoteLine_0', 2)
this.renSpine.stopAllActions()
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'shang', false)
cc.tween(this.renSpine)
.delay(0.5)
.call(() => {
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'daiji', true)
})
.start()
}
onBtnClickHSQJ() {
this.checkJiZhong('NoteLine_1', 1)
this.renSpine.stopAllActions()
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'xia', false)
cc.tween(this.renSpine)
.delay(0.43)
.call(() => {
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'daiji', true)
})
.start()
}
onBtnClickJJFZ() {
this.checkJiZhong('NoteLine_2', 3)
this.renSpine.stopAllActions()
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'zhong', false)
cc.tween(this.renSpine)
.delay(0.33)
.call(() => {
this.renSpine.getComponent(sp.Skeleton).setAnimation(0, 'daiji', true)
})
.start()
}
onBtnFailBuQu() {
Common5.playEffect("CommonRes/sound/按键点击")
// this.node.removeFromParent()
// this.node.destroy()
this.reportKey(() => {
GameReport.BtnsReport('不去')
})
this.failNode.active = false
this.setStartBtn(2)
}
onBtnFailQu() {
Common5.playEffect("CommonRes/sound/按键点击")
let guangXiaoCallFunc = () => {
for (let i = 0; i < 4; i++) {
this.heiPing.getChildByName("guangxiao" + i).active = true
cc.tween(this.node)
.delay(0.25 * i)
.call(() => {
Common5.playEffect("GameRes/ui/foShanDianHan/sound/打击音效(受击)")
this.heiPing.getChildByName("guangxiao" + i).active = true
this.heiPing.getChildByName("guangxiao" + i).getComponent(sp.Skeleton).setAnimation(0, String(i + 1), false)
})
.delay(0.2)
.call(() => {
this.heiPing.getChildByName("guangxiao" + i).active = false
})
.start()
}
}
let tab = {
onClose: (finish) => {
if (finish) {
this.reportKey(() => {
GameReport.ADReport('去接受惩罚', 1)
})
Common5.ReportDY("inLevel", '佛山电翰-AD-去接受惩罚');
this.failNode.active = false
this.setStartBtn(4)
// this.heiPing.active = true
// cc.tween(this.node)
// .call(() => {
// guangXiaoCallFunc()
// })
// .delay(3)
// .call(() => {
// Common5.playEffect("GameRes/ui/foShanDianHan/sound/喘气(女)")
// // this.heiPing.getChildByName("qiPao").active = true
// this.heiPing.active = false
// // this.node.getChildByName("nvSpr").active = false
// // this.node.getChildByName("nvSpine").active = true
// this.node.getChildByName("qiPao1").active = false
// this.node.getChildByName("qiPao2").active = true
// })
// .delay(3)
// .call(() => {
// this.showAward()
// })
// .start()
}
else {
this.reportKey(() => {
GameReport.ADReport('去接受惩罚', 0)
})
Common5.showTips_custom("广告未观看完");
}
}, onFailed: () => {
}
}
AppPlatform.playVideo_custom(tab)
}
showAward() {
// Common5.playMusic("CommonRes/sound/游戏背景音");
// let goodArray = [{goodId:1407, goodNum:1}]
// PrefabManage.loadPrefabByType(GameType.GetAward,null,(prefabNode)=>{
// prefabNode.getComponent(GetAward).initView(goodArray, ()=>{
this.setStartBtn(2)
// });
// },true)
}
// onBtnSuccessLingQu(){
// }
// onBtnSuccessSanBeiLingQu(){
// let tab = {
// onClose: (finish)=>{
// if (finish) {
// Common5.ReportDY("inLevel", '佛山电翰-AD-双倍领取');
// }
// else{
// Common5.showTips_custom("广告未观看完");
// }
// },onFailed:()=>{
// }
// }
// AppPlatform.playVideo_custom(tab)
// }
}