咸鱼的反击
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.
 
 
 
xianyudefanji/assets/Scripts/Challenge/ChallengeGame.ts

466 lines
16 KiB

// Learn TypeScript:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
import { ryw_Event } from "../../FrameWork/Event/EventEnum";
import EventMgr from "../../FrameWork/Event/EventMgr";
import User from "../../FrameWork/User/User";
import Common5 from "../../Platform/th/Common5";
import UiBase from "../GameBase/UiBase";
import TaskManager, { MainTaskIdEnum } from "../JuQingChat/TaskManager";
import LevelUpManager from "../Manager/LevelUpManager";
import MiShuManager from "../Manager/MiShuManager";
import NewGuideScript from "../NewGuide/NewGuideScript";
import PrefabManage, { GameType } from "../PrefabManager/PrefabManage";
const {ccclass, property} = cc._decorator;
@ccclass
export default class ChallengeGame extends UiBase {
@property(cc.Sprite)
zhujueIcon: cc.Sprite = null;
@property(cc.Sprite)
difangIcon: cc.Sprite = null;
@property(cc.Node)
difangSpine: cc.Node = null;
@property(cc.Node)
difangSpineTX: cc.Node = null;
@property(cc.Node)
zhujueSpine: cc.Node = null;
@property(cc.Node)
clickNode: cc.Node = null;
@property(cc.Node)
endGame: cc.Node = null;
@property(cc.Node)
endSpine: cc.Node = null;
@property(cc.ProgressBar)
progressBarM: cc.ProgressBar = null;
@property(cc.ProgressBar)
progressBarD: cc.ProgressBar = null;
@property(cc.Label)
proLabMy: cc.Label = null;
@property(cc.Label)
proLabDi: cc.Label = null;
@property(cc.Label)
mishuLab: cc.Label = null;
@property(cc.Label)
mishuJiachengLab: cc.Label = null;
@property(cc.Node)
copyLabMy: cc.Node = null;
@property(cc.Node)
copyLabDi: cc.Node = null;
@property(cc.Node)
zhujueHeadNode: cc.Node = null;
@property(cc.Node)
difangHeadNode: cc.Node = null;
// LIFE-CYCLE CALLBACKS:
startGameX = -295
endGameX = 295
// onLoad () {}
configDate = null
myStack = 0
myBoold = 0
difangStack = 0
difangBoold = 0
difangBooldFix = 0
myBooldFix = 0
dtTime = 0
isStartGame = false
spineClick = 0
spineScaleTime= 1
clickTimeOutEvent = null
challengeType = '' //first second
playLJFEffect = true
setViewDate(configDate, challengeType){
console.log(challengeType, 'challengeType+++++++++==')
this.configDate = configDate
this.challengeType = challengeType
}
onDestroy(){
cc.audioEngine.stopMusic()
}
start () {
// Common5.loadRemoteAudioEffect('sound/炒饭音效')
Common5.loadRemoteAudioEffect('sound/diandiandian/男主战斗打击')
Common5.loadRemoteAudioEffect('sound/diandiandian/战斗胜利')
Common5.loadRemoteAudioEffect('sound/diandiandian/战斗失败')
// Common5.loadRemoteAudioEffect('sound/diandiandian')
// Common5.loadRemoteAudioEffect('sound/diandiandian')
this.node.getChildByName('秘书加成').active = true
this.refreshView()
this.openTouchEvent(this.clickNode)
EventMgr.onEvent_custom(ryw_Event.challengeRestart,()=>{
this.restartGame()
},this)
EventMgr.onEvent_custom(ryw_Event.challengeQuit,()=>{
if(cc.isValid(this.node, true)){
this.node.removeFromParent()
this.node.destroy()
}
},this)
EventMgr.onEvent_custom(ryw_Event.challengeAllQuit,()=>{
if(cc.isValid(this.node, true)){
this.node.removeFromParent()
this.node.destroy()
}
},this)
let mainTaskInfo:any = TaskManager.getCurUnLockMainTaskInfo()
let mainId = mainTaskInfo.Id
if(mainId == MainTaskIdEnum.MainTask_503 && Common5.TaskGuide503){
Common5.TaskGuide503 = false
this.node.getChildByName('descLab').active = true
let node = this.node.getChildByName('kaishi')
this.guideView([node])
}
}
restartGame(){
this.node.getChildByName('kaishi').active = true
this.node.getChildByName('秘书加成').active = true
this.node.getChildByName('exitRoom').active = true
this.node.getChildByName('clickNode').active = false
this.node.getChildByName('touxiang').active = false
this.endGame.active = false
this.endSpine.active = false
this.refreshView()
this.openTouchEvent(this.clickNode)
}
openTouchEvent(node) {
node.on(cc.Node.EventType.TOUCH_START, this.touchStartNode, this)
node.on(cc.Node.EventType.TOUCH_END, this.onNodeClick, this)
}
closeTouchEvent(node: cc.Node) {
node.off(cc.Node.EventType.TOUCH_START, this.touchStartNode, this)
node.off(cc.Node.EventType.TOUCH_END, this.onNodeClick, this)
}
touchStartNode(){
}
//失败 失败持续
//胜利 胜利持续
//男主 spineAttack:['待机', '攻击1','攻击2','攻击3' ],
// {challengeId:0,headUrl:'challenge/head/街头龙哥', spineUrl:'Spine/challenge/龙哥/龙哥',
// posiArray:[200, -102],spineAttack:['待机', '攻击'],booldNum:7800, name:'街头龙哥',iconUrl:'challenge/街头龙哥', attackNum:260, moneyReward:500 },
refreshView(){
//预加载胜利失败动画
Common5.addUrlSprite_custom('challenge/head/男主', this.zhujueIcon)
Common5.addUrlSprite_custom(this.configDate.headUrl,this.difangIcon)
this.difangSpine.setPosition(cc.v2(this.configDate.posiArray[0], this.configDate.posiArray[1]))
Common5.playRemoteSpine(this.difangSpine,this.configDate.spineUrl,this.configDate.spineName,this.configDate.spineAttack[0])
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '待机')
this.difangStack = this.configDate.attackNum
this.difangBoold = this.configDate.booldNum
let shouyi = LevelUpManager.getCurClickIncome()
this.myStack = shouyi
if(shouyi*30>=this.difangBoold){
this.myBoold = this.difangBoold
}else{
this.myBoold = shouyi*30
}
this.difangBooldFix = this.difangBoold
this.myBooldFix = this.myBoold
this.scheduleOnce(()=>{
Common5.loadRemoteSpine('Spine/challenge','胜利')
Common5.loadRemoteSpine('Spine/challenge','失败')
},1.0)
this.scheduleOnce(()=>{
PrefabManage.preloadPrefabByType(GameType.ChallengeSuccess)
PrefabManage.preloadPrefabByType(GameType.ChallengeFail)
},2.0)
let mishuNum = MiShuManager.getUnLockNum()
let percent = MiShuManager.getMishuAllClickInCome()
this.mishuLab.string = ''+mishuNum
this.mishuJiachengLab.string = Common5.getNumberChangeHanzi(percent*100,'1',1)+'%'
this.changeView()
}
guideView(nodeArray,opacity = -1){
PrefabManage.loadPrefabByType(GameType.GuideMskNode, null, (prefab)=>{
// prefab.zIndex = 199
let guideNodeArray = nodeArray
let firstNode = guideNodeArray.shift()
prefab.getComponent(NewGuideScript).setBindNode(firstNode, guideNodeArray)
if(opacity!=-1){
prefab.getComponent(NewGuideScript).setOpacityMaskNode(opacity)
}
})
}
onNodeClick(event){
clearTimeout(this.clickTimeOutEvent);
this.spineClick++
this.difangBoold -= this.myStack
this.attackLab('difang', this.myStack)
// Common5.playRemoteAudioEffect('sound/diandiandian/龙卷风打斗')
if(this.spineClick<4){
Common5.playRemoteAudioEffect('sound/diandiandian/男主战斗打击')
}else{
if(this.playLJFEffect){
this.playLJFEffect = false
Common5.playRemoteAudioEffect('sound/diandiandian/龙卷风打斗', true)
}
}
if(this.spineClick == 1 ){
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '攻击1')
this.zhujueSpine.getComponent(sp.Skeleton).timeScale = 1
}
if(this.spineClick == 4 ){
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '攻击2')
this.zhujueSpine.getComponent(sp.Skeleton).timeScale = 1.2
}
if(this.spineClick == 12){
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '攻击3')
this.zhujueSpine.getComponent(sp.Skeleton).timeScale = 1.5
}
this.clickTimeOutEvent = setTimeout(() => {
this.spineClick = 0
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '待机')
this.playLJFEffect = true
cc.audioEngine.stopAllEffects();
}, 500);
this.changeView()
this.endGameResult()
}
changeView(){
//console.log(this.myBoold, this.difangBoold)
this.proLabMy.string =Common5.getNumberChangeHanzi(this.myBoold)+ '/'+Common5.getNumberChangeHanzi(this.myBooldFix)
this.proLabDi.string = Common5.getNumberChangeHanzi(this.difangBoold)+'/'+Common5.getNumberChangeHanzi(this.difangBooldFix)
//progress
this.progressBarM.progress = this.myBoold/this.myBooldFix
this.progressBarD.progress = this.difangBoold/this.difangBooldFix
//
let movex = this.endGameX-this.startGameX
let movePercent = (this.myBooldFix-this.myBoold)/this.myBooldFix
let movePercent2 = (this.difangBooldFix-this.difangBoold)/this.difangBooldFix
this.zhujueHeadNode.x = this.startGameX+movex*movePercent2
this.difangHeadNode.x = this.startGameX+movex*movePercent
let mainTaskInfo: any = TaskManager.getCurUnLockMainTaskInfo()
let mainId = mainTaskInfo.Id
if (mainId == MainTaskIdEnum.MainTask_506) {
if (MiShuManager.getUnLockNum() >= 2 && User.getMyLevel() >= 100) {
}else{
this.myBoold = 0
}
}
}
protected update(dt: number): void {
if(this.isStartGame){
this.dtTime+=dt
if(this.dtTime>=0.3){
this.dtTime = 0
//地方攻击一次
this.myBoold -= this.difangStack
this.changeView()
this.attackLab('self', this.difangStack)
this.endGameResult()
}
}
}
attackLab(type, attack){
let copyNode:cc.Node = null
if(type == 'self'){
//创建自己
copyNode = cc.instantiate(this.copyLabMy)
copyNode.parent = this.copyLabMy.parent
}else{
copyNode = cc.instantiate(this.copyLabDi)
copyNode.parent = this.copyLabDi.parent
}
copyNode.active = true
copyNode.getComponent(cc.Label).string ='-'+ Common5.getNumberChangeHanzi(attack)
let posi = copyNode.getPosition()
cc.tween(copyNode)
.to(0.5, {y:posi.y+100, opacity:100})
.call(()=>{
copyNode.removeFromParent()
copyNode.destroy()
})
.start()
}
gameStart(event){
event.target.active = false
this.node.getChildByName('exitRoom').active = false
this.node.getChildByName('clickNode').active = true
this.node.getChildByName('touxiang').active = true
//开启攻击定时器
Common5.playRemoteAudioMusic('sound/diandiandian/战斗背景音')
this.isStartGame = true
Common5.playRemoteSpine(this.difangSpine,this.configDate.spineUrl,this.configDate.spineName,this.configDate.spineAttack[1])
if(this.configDate.spineAttack.length>2){
this.difangSpineTX.active = true
Common5.playRemoteSpine(this.difangSpineTX,this.configDate.spineUrl,this.configDate.spineName,this.configDate.spineAttack[2])
}
this.difangSpine.getComponent(sp.Skeleton).timeScale = 2
if(this.configDate.spineName == '洛北辰'){
this.difangSpine.getComponent(sp.Skeleton).timeScale = 3
}else{
this.difangSpine.getComponent(sp.Skeleton).timeScale = 2
}
}
endGameResult(){
if(this.myBoold<=0 || this.difangBoold<=0){
this.isStartGame = false
this.closeTouchEvent(this.clickNode)
this.node.getChildByName('clickNode').active = false
this.node.getChildByName('descLab').active = false
this.scheduleOnce(()=>{
this.difangSpineTX.active = false
Common5.playRemoteSpine(this.zhujueSpine,'Spine/challenge/男主3','男主', '待机')
Common5.playRemoteSpine(this.difangSpine,this.configDate.spineUrl,this.configDate.spineName,this.configDate.spineAttack[0])
this.endGame.active = true
this.endSpine.active = true
this.endGame.scale = 0.1
this.endSpine.scale = 0.1
if(this.difangBoold<=0){
//胜利
Common5.playRemoteSpine(this.endSpine,'Spine/challenge','胜利','胜利', false)
}else if(this.myBoold<=0){
//失败
Common5.playRemoteSpine(this.endSpine,'Spine/challenge','失败','失败', false)
}
this.scheduleOnce(()=>{
if(this.difangBoold<=0){
//胜利
Common5.playRemoteSpine(this.endSpine,'Spine/challenge','胜利','胜利持续')
Common5.playRemoteAudioEffect('sound/diandiandian/战斗胜利')
}else if(this.myBoold<=0){
//失败
Common5.playRemoteSpine(this.endSpine,'Spine/challenge','失败','失败持续')
Common5.playRemoteAudioEffect('sound/diandiandian/战斗失败')
}
this.scheduleOnce(()=>{
this.endSpine.active = false
this.endGame.active = false
if(this.difangBoold<=0){
PrefabManage.loadPrefabByType(GameType.ChallengeSuccess, null, (prefab)=>{
prefab.getComponent('ChallengeSuccess').setViewDate(this.challengeType, this.configDate)
})
//this.checkFinshTask(this.configDate)
}else if(this.myBoold<=0){
PrefabManage.loadPrefabByType(GameType.ChallengeFail)
}
},0.5)
},0.6)
cc.tween(this.endGame)
.to(0.3, {scale:1},{easing:'elasticOut'})
.start()
cc.tween(this.endSpine)
.to(0.3, {scale:1},{easing:'elasticOut'})
.start()
},0.5)
// @property(cc.Node)
// endGame: cc.Node = null;
// @property(cc.Node)
// endSpine: cc.Node = null;
}
}
touxiangGameClick(){
this.myBoold = 0
this.endGameResult()
}
// update (dt) {}
}