| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 |
- const GameStatesStatic = require('GameStates');
- cc.Class({
- extends: cc.Component,
- properties: {
- MyArrivedTime: [],
- RivalArrivedTime: [],
- fadeInAndOutTag: false,
- bHasAddScore: false,
- bHasOverPosition: false,
- isEndGame: false,//游戏是否已经结束
- isSeverJaveDis: 0,//服务器在这里记录标枪的数据,判断输赢
- isClientJaveDis: 0,
- _severValue: 0,//服务器的数据,判断输赢
- _clientValue: 0,
- _inputIndex: 0,//传入的数据次数
- isUploaded: false,
- finishDeltavalue: 50,//其他项目 平局delta差值
- bikeDeltaValue: 50,//骑车项目 平局delta差值
- },
- SyncJaveEndAddScore: function () {
- //服务器统一计算,谁的值大,给谁加分
- if (this.isSeverJaveDis - this.isClientJaveDis >= 0) {
- var Hero = cc.find('Hero');
- this.addScore(Hero, this.isSeverJaveDis, true);
- } else {
- var Rivel = cc.find('Rivel');
- this.addScore(Rivel, this.isClientJaveDis, true);
- var data = { FunctionName: 'addScore', PlayerName: 'Rival', value: this.isClientJaveDis };
- this.SynchronizationFun(data);
- }
- },
- SynchronizationFun: function (data) {
- var str = JSON.stringify(data);
- // cc.log("让我们不动33333",str);
- if (str.trim().length <= 0) {
- return
- }
- // cc.log("让我们不动4444",str);
- qqNetwork.send(qqNetwork.game2Room.gameData, JSON.stringify({ str: str }));
- },
- CheckPlayersDistance: function (bFromServer) {
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- // cc.log('我是gamemode里面的check'+GameStates.EnterStartLinePlayersArray.length);
- if (GameStates.EnterStartLinePlayersArray.length > 1) return;
- // cc.log('GameStates.EnterStartLinePlayersArray.length=',GameStates.EnterStartLinePlayersArray.length)
- // var Hero = cc.find('Hero');
- // var Rivel = cc.find('Rivel');
- // cc.log("Hero.x - Rivel.x ====第1次打印====="+(Hero.position.x - Rivel.position.x));
- this.OverPosition();
- },
- OverPosition: function () {
- if (this.bHasOverPosition) {
- return;
- }
- this.bHasOverPosition = true;
- var GameMode = cc.find('Canvas').getComponent('GameMode');
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var HeroControl = Hero.getComponent('HeroControl');
- var RivelControl = Rivel.getComponent('HeroControl');
- var PlayerStateScript = Hero.getComponent("PlayerState");
- PlayerStateScript.TouchControlEnableTouch = false;
- // var data = {FunctionName: 'FadeInAndOut'};
- // GameMode.SynchronizationFun(data);
- // cc.log("FadeInAndOut!!!!!!!!!!!!atOverPositionInGameMode");
- this.schedule(function () {
- // cc.log("我是来自GameMode的OverPosition里面的schedule11111");
- GameStates.EnterStartLinePlayersArray = [];
- }.bind(this), 5, 0);
- // this.scheduleOnce(function () {
- // // cc.log("我是来自GameMode的OverPosition里面的schedule22222");
- // }, 5);
- // cc.log('========='+cc.find("Shade").getComponent('Shade').FadeTag);
- // cc.log('我是对应的moves to'+GameStates.StartLinePositionX);
- cc.find("Shade").getComponent('Shade').FadeInAndOut(function () {
- var CurrentLevel = GameStates.strCureentLevel;
- if ('LongJump' == CurrentLevel || 'Javelin' == CurrentLevel) {
- HeroControl.resetHero();
- RivelControl.resetHero();
- var data = { FunctionName: 'resetHero' };
- this.SynchronizationFun(data);
- }
- cc.find('Canvas').getComponent('GameMode').bHasOverPosition = false;
- // cc.log(GameStates.strCureentLevel+"==========comeIn=======GameMode");
- // cc.log("拉人过去了 大于3000",cc.find('Canvas').getComponent('GameStates').StartLinePositionX);
- Hero.setPositionX(GameStates.StartLinePositionX - 30);
- // cc.log('hero moves to '+GameStates.StartLinePositionX+' and Rivel move to '+GameStates.StartLinePositionX);
- Rivel.setPositionX(GameStates.StartLinePositionX);
- // cc.log(cc.find('Hero').position.x+'========moves to========='+cc.find('Rivel').position.x);
- HeroControl.StopPlayerAllSchedule();
- // RivelControl.StopPlayerAllSchedule();
- var data = { FunctionName: 'StopPlayerAllSchedule' };
- this.SynchronizationFun(data);
- // cc.log("我向对方发送请求StopPlayerAllSchedule");
- // cc.log(GameStates.bServer+'是不是服务器');
- if (GameStates.bServer) {
- // cc.log("i am server and 第1次打印");
- this.schedule(function () {
- // cc.log("i am server and i 第2次打印");
- this.PlayersStartToRun();
- }.bind(this), 2, 0);
- // this.scheduleOnce(function () {
- // // cc.log('i am server and 第3次打印')
- // }, 2);
- }
- // });
- }.bind(this, GameMode, Rivel, HeroControl, RivelControl, GameMode, GameStates));
- },
- Transport: function () {
- // cc.log('GameMode Transport');
- this.unschedule(this.UnScheduleFadeIn);
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var HeroControl = Hero.getComponent('HeroControl');
- var RivelControl = Rivel.getComponent('HeroControl');
- this.fadeInAndOutTag = false;
- var PlayerState = cc.find("Hero").getComponent("PlayerState");
- PlayerState.TouchControlEnableTouch = false;
- cc.find("Shade").getComponent('Shade').FadeInAndOut(function () {
- this.fadeInAndOutTag = true;
-
- Hero.setPositionX(cc.find('Canvas').getComponent('GameStates').StartLinePositionX - 30);
- Rivel.setPositionX(cc.find('Canvas').getComponent('GameStates').StartLinePositionX);
- HeroControl.node.stopAllActions();
- RivelControl.node.stopAllActions();
-
- }.
- bind(this), function () {
- this.schedule(function () {
- cc.find('Canvas').getComponent('GameStates').EnterStartLinePlayersArray = [];
- }.bind(this), 5, 0);
- this.schedule(function () {
- cc.find('Canvas').getComponent('GameStates').CurrentProgress = GameStatesStatic.GameProgress.LongJump;
- HeroControl.javelinTag = false;
- RivelControl.javelinTag = false;
- HeroControl.CameraNode.parent = Hero;
- if (cc.find('Canvas').getComponent('GameStates').bServer) {
- this.schedule(function () {
- this.PlayersStartToRun();
- }.bind(this), 1, 0);
- }
- }.bind(this), cc.find('Canvas').getComponent('GameStates').ReadyToRunDuration, 0);
- }.bind(this));
- },
- UnScheduleFadeIn: function () {
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var EnterStartLinePlayersArray = GameStates.EnterStartLinePlayersArray;
- if (EnterStartLinePlayersArray.length == 2) {
- // cc.log('GameMode Unschedule');
- this.unschedule(this.UnScheduleFadeIn);
- this.unschedule(this.Transport);
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var HeroControl = Hero.getComponent('HeroControl');
- var RivelControl = Rivel.getComponent('HeroControl');
- HeroControl.javelinTag = false;
- RivelControl.javelinTag = false;
- HeroControl.CameraNode.parent = Hero;
- // HeroControl.StopPlayerAllSchedule();
- // RivelControl.StopPlayerAllSchedule();
- // var data = {FunctionName: 'StopPlayerAllSchedule'};
- // this.SynchronizationFun(data);
- // cc.log("我向对方发送请求StopPlayerAllSchedule");
- Hero.setPositionX(GameStates.StartLinePositionX - 30);
- Rivel.setPositionX(GameStates.StartLinePositionX);
- this.schedule(function () {
- GameStates.EnterStartLinePlayersArray = [];
- }.bind(this), 5, 0);
- if (GameStates.bServer) {
- this.schedule(function () {
- this.PlayersStartToRun();
- }.bind(this), 2, 0);
- }
- var data = { FunctionName: 'UnScheduleFadeIn' };
- this.SynchronizationFun(data);
- }
- },
- PlayersStartToRun: function () {
- if (this.isEndGame) {
- // console.log("PlayersStartToRun 游戏已经结束!");
- return;
- }
- // console.log("PlayersStartToRun.......From.......GameMode...");
- // cc.log("起跑");
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- Hero.getComponent('HeroControl').playAudioByName('StartGun');//项目开始时哨声
- //项目开始时,UI比分淡出
- if (cc.find('UIPKScore')) {
- cc.find('UIControl').getComponent('GameUI').hideMiddlePKScore();
- }
- var PlayerStateScript = Hero.getComponent("PlayerState");
- PlayerStateScript.TouchControlEnableTouch = false;
- var HeroControl = Hero.getComponent('HeroControl');
- var RivelControl = Rivel.getComponent('HeroControl');
- HeroControl.HeroIsStop = false;
- RivelControl.HeroIsStop = false;
- // console.log(11);
- HeroControl.ResetSpeed_noType();
- RivelControl.ResetSpeed_noType();
- // cc.log("被拉过来的起点位置 开始跑",cc.find('Canvas').getComponent('GameStates').StartLinePositionX);
- var data = { FunctionName: 'PlayersStartToRun' };
- this.SynchronizationFun(data);
- },
- SyncPositionXRange: function (PlayerNode, CurrentPositionX) {
- return;
- if (Math.abs(CurrentPositionX - PlayerNode.position.x - 40) > cc.find('Canvas').getComponent('GameStates').bSyncPositionXRange) {
- PlayerNode.setPositionX(CurrentPositionX + 40);
- }
- },
- //slam todo
- //平局加分
- drawAddScrore(CurrentPlayerNode) {
- //判断两个人的分数 完美解决
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var PlayerStateHero = Hero.getComponent("PlayerState");
- var PlayerStateRivel = Rivel.getComponent("PlayerState");
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var CurrentLevel = GameStates.strCureentLevel;
- // var PlayerState = CurrentPlayerNode.getComponent("PlayerState");
- var UIControl = cc.find("UIControl").getComponent("UIControl");
- Hero.getComponent('HeroControl').playAudioByName("Cheers");
- PlayerStateHero.TerminalPoint += 1;
- PlayerStateRivel.TerminalPoint += 1;
- UIControl.GameUI.setTopMyScore(PlayerStateHero.TerminalPoint);
- UIControl.GameUI.setTopRivalScore(PlayerStateRivel.TerminalPoint);
- if (CurrentPlayerNode.name == 'Hero' && 'RideBike' == CurrentLevel) {
- Hero.getComponent('HeroControl').downBikeHero("Hero");
- var data = { FunctionName: 'downBikeHero', EndPositionX: Hero.x, isCollision: false, isStop: false };
- cc.find('Canvas').getComponent('GameMode').SynchronizationFun(data);
- }
- var Level = cc.find('Level');
- Level.getComponent('LevelControl').displayTimerMiddlePKScore(cc.find('Hero'));
- this.PlayWinAudio();
-
- //console.log('PlayerStateHero', PlayerStateHero.TerminalPoint, PlayerStateRivel.TerminalPoint);
- setTimeout(function () {
- if (('Javelin' == CurrentLevel) && (PlayerStateHero.TerminalPoint == PlayerStateRivel.TerminalPoint)) {
- //console.log('平局时候,CurrentLevel ==', CurrentLevel);
- Hero.getComponent('HeroControl').resets();
- var data = { FunctionName: 'resetHerojavelin' };
- cc.find('Canvas').getComponent('GameMode').SynchronizationFun(data);
- }
- }.bind(this), 1000);
- if (CurrentPlayerNode.name == 'Hero'&&'LongJump' == CurrentLevel) {
- Hero.getComponent('HeroControl').FromLongJumpToHurdle();
- }
- },
- oldAddScore(CurrentPlayerNode) {
- // console.log('当前是谁加分:', CurrentPlayerNode.name)
- if (this.bHasAddScore == false) {
- var PlayerState = CurrentPlayerNode.getComponent("PlayerState");
- var UIControl = cc.find("UIControl").getComponent("UIControl");
- if (CurrentPlayerNode.name == "Hero") {
- cc.find('Hero').getComponent('HeroControl').playAudioByName("Cheers");
- UIControl.GameUI.setTopMyScore(PlayerState.TerminalPoint += 1);
- this.PlayWinAudio();
- } else {
- UIControl.GameUI.setTopRivalScore(PlayerState.TerminalPoint += 1);
- this.PlayWinAudio();
- }
- this.scheduleOnce(function () {
- var Level = cc.find('Level');
- Level.getComponent('LevelControl').displayTimerMiddlePKScore(cc.find('Hero'));
- }, 0.1);
- this.bHasAddScore = true;
- // 判断两个人的分数 完美解决
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var PlayerStateHero = Hero.getComponent("PlayerState");
- var PlayerStateRivel = Rivel.getComponent("PlayerState");
- //从跳远项目跳转到跨栏项目
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var CurrentLevel = GameStates.strCureentLevel;
- // cc.log("两个分数",PlayerStateHero.TerminalPoint,PlayerStateRivel.TerminalPoint);
- // console.log('标枪重置CurrentLevel', CurrentLevel);
- if (('Javelin' == CurrentLevel)&& (PlayerStateHero.TerminalPoint == PlayerStateRivel.TerminalPoint)) {
- setTimeout(function () {
- console.log('标枪重置');
- cc.find('Hero').getComponent('HeroControl').resets();
- var data = { FunctionName: 'resetHerojavelin' };
- cc.find('Canvas').getComponent('GameMode').SynchronizationFun(data);
- }.bind(this), 1000);
- }
- if ('LongJump' == CurrentLevel) {
- cc.find('Hero').getComponent('HeroControl').FromLongJumpToHurdle();
- }
- }
- },
- addScore: function (CurrentPlayerNode, inputValue, isServer, deltaValue) {
- if (!deltaValue) {
- deltaValue = 0;
- // console.log('deltaValue 为空, 设为 =', deltaValue);
- }
- //记录谁传入的值
- if (isServer) {
- this._severValue = Number(inputValue);
- } else {
- this._clientValue = Number(inputValue);
- }
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- let distance = Math.abs(Hero.position.x - Rivel.position.x);
- //console.log('CurrentPlayerNode.name', CurrentPlayerNode.name, 'inputValue==', inputValue, 'distance=', distance);
- //如果只传入一个值
- if (distance > 300) {//hero rivel相差 基础是40
- this.oldAddScore(CurrentPlayerNode);
- //console.log('CurrentPlayerNode ====', CurrentPlayerNode.name);
- if (CurrentPlayerNode.name == 'Hero') {
- var data = { FunctionName: 'callBackAddScore', value: 1 };
- this.SynchronizationFun(data);
- } else if (CurrentPlayerNode.name == 'Rivel') {
- var data = { FunctionName: 'callBackAddScore', value: -1 };
- this.SynchronizationFun(data);
- }
- } else {//如果加了两个
- if (this._inputIndex < 1) {
- this._inputIndex++;
- } else {
- this._inputIndex = 0;//重置为0
- //调用加分
- let judgementValue = this._severValue - this._clientValue;
- //console.log('severValue-clientValue = ', judgementValue);
- //如果值相差小于0.5(可变),平局
- if (judgementValue > deltaValue) {
- //服务器胜利
- var data = { FunctionName: 'callBackAddScore', value: 1 };
- this.SynchronizationFun(data);
- // console.log('服务器胜利');
- this.oldAddScore(Hero);
- } else if (judgementValue < -deltaValue) {
- //客户端的胜利
- var data = { FunctionName: 'callBackAddScore', value: -1 };
- this.SynchronizationFun(data);
- // console.log('客户端的胜利');
- this.oldAddScore(Rivel);
- } else if (judgementValue >= -deltaValue && judgementValue <= deltaValue) {
- //平局
- var data = { FunctionName: 'callBackAddScore', value: 0 };
- this.SynchronizationFun(data);
- // console.log('平局');
- this.drawAddScrore(Hero);
- }
- //重置数据
- this._severValue = 0;
- this._clientValue = 0;
- }
- }
- },
- PlayWinAudio: function () {
- // this.scheduleOnce(function () {
- var NetworkSocket = cc.find('Hero').getComponent("NetworkSocket");
- var MyScore = cc.find('Hero').getComponent("PlayerState").TerminalPoint;
- var RivalScore = cc.find('Rivel').getComponent("PlayerState").TerminalPoint;
- //从跳远项目跳转到跨栏项目
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var CurrentLevel = GameStates.strCureentLevel;
- // console.log('判断胜利前的比分:', MyScore, RivalScore);
- if (MyScore >= 3 && MyScore > RivalScore) {
- cc.find('UIControl').getComponent('GameUI').playFireworks();
- var data = {
- isSelf: 2
- }
- NetworkSocket.endGame(1);
- NetworkSocket.quitGame(data);
- }
- else if (RivalScore >= 3 && MyScore < RivalScore) {
- cc.find('Hero').getComponent('HeroControl').playAudioByName("Boos");
- var data = {
- isSelf: 1
- }
- NetworkSocket.endGame(2);
- NetworkSocket.quitGame(data);
- var HeroPlayerState = cc.find('Hero').getComponent('PlayerState');
- HeroPlayerState.TouchControlEnableTouch = false;
- HeroPlayerState.enableTouch = false;
- }
- else if ('RideBike' == CurrentLevel && RivalScore == MyScore) {
- // console.log('上报平局数据。');
- var data = {
- isSelf: 0
- }
- NetworkSocket.endGame(0);
- NetworkSocket.quitGame(data);
- var HeroPlayerState = cc.find('Hero').getComponent('PlayerState');
- HeroPlayerState.TouchControlEnableTouch = false;
- HeroPlayerState.enableTouch = false;
- }
- // }, 0.1);
- // if (!this.inTag1) {
- // this.inTag1 = true;
- // }
- },
- TestEndGame: function () {
- var NetworkSocket = cc.find('Hero').getComponent("NetworkSocket");
- NetworkSocket.endGame(1);
- }
- });
|