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
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)
|
|
// }
|
|
}
|
|
|