GameMode.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. const GameStatesStatic = require('GameStates');
  2. cc.Class({
  3. extends: cc.Component,
  4. properties: {
  5. MyArrivedTime:[],
  6. RivalArrivedTime:[],
  7. fadeInAndOutTag : false,
  8. bHasAddScore:false
  9. },
  10. SynchronizationFun : function(data)
  11. {
  12. if(cc.find('Canvas').getComponent('GameStates').bConnect)
  13. {
  14. var str = JSON.stringify(data);
  15. if (str.trim().length <= 0) {
  16. return
  17. }
  18. network.send(qqNetwork.game2Room.gameData, JSON.stringify({str:str}));
  19. }
  20. },
  21. CheckPlayersDistance: function(bFromServer)
  22. {
  23. var GameStates = cc.find('Canvas').getComponent('GameStates');
  24. if(GameStates.EnterStartLinePlayersArray.length >1) return;
  25. // cc.log('GameStates.EnterStartLinePlayersArray.length=',GameStates.EnterStartLinePlayersArray.length)
  26. var Hero = cc.find('Hero');
  27. var Rivel = cc.find('Rivel');
  28. if (Math.abs(Hero.position.x - Rivel.position.x) > 3000)
  29. {
  30. // cc.log('GameMode >3000');
  31. this.OverPosition();
  32. }
  33. else
  34. {
  35. // cc.log('GameMode PreTransport');
  36. GameStates.bPreTransport = true;
  37. this.schedule(function()
  38. {
  39. GameStates.bPreTransport = false;
  40. }.bind(this), 5,0);
  41. this.schedule(this.Transport, 3,0);
  42. var data = {FunctionName: 'Transport'};
  43. this.SynchronizationFun(data);
  44. this.schedule(this.UnScheduleFadeIn,0.01,cc.REPEAT_FOREVER);
  45. }
  46. },
  47. OverPosition:function()
  48. {
  49. var GameMode = cc.find('Canvas').getComponent('GameMode');
  50. var GameStates = cc.find('Canvas').getComponent('GameStates');
  51. var Hero = cc.find('Hero');
  52. var Rivel = cc.find('Rivel');
  53. var HeroControl = Hero.getComponent('HeroControl');
  54. var RivelControl = Rivel.getComponent('HeroControl');
  55. var PlayerStateScript = Hero.getComponent("PlayerState");
  56. PlayerStateScript.TouchControlEnableTouch = false;
  57. var data = {FunctionName: 'FadeInAndOut'};
  58. GameMode.SynchronizationFun(data);
  59. this.schedule(function()
  60. {
  61. GameStates.EnterStartLinePlayersArray=[];
  62. }.bind(this), 5,0);
  63. cc.find("Shade").getComponent('Shade').FadeInAndOut(function ()
  64. {
  65. Hero.setPositionX(GameStates.StartLinePositionX-30);
  66. Rivel.setPositionX(GameStates.StartLinePositionX);
  67. HeroControl.StopPlayerAllSchedule();
  68. RivelControl.StopPlayerAllSchedule();
  69. if(GameStates.bServer)
  70. {
  71. this.schedule(function()
  72. {
  73. this.PlayersStartToRun();
  74. }.bind(this), 2,0);
  75. }
  76. }.bind(this,GameMode,Rivel,HeroControl,RivelControl,GameMode,GameStates))
  77. },
  78. Transport : function()
  79. {
  80. // cc.log('GameMode Transport');
  81. this.unschedule(this.UnScheduleFadeIn);
  82. var Hero = cc.find('Hero');
  83. var Rivel = cc.find('Rivel');
  84. var HeroControl = Hero.getComponent('HeroControl');
  85. var RivelControl = Rivel.getComponent('HeroControl');
  86. this.fadeInAndOutTag = false;
  87. var PlayerState = cc.find("Hero").getComponent("PlayerState");
  88. PlayerState.TouchControlEnableTouch = false;
  89. cc.find("Shade").getComponent('Shade').FadeInAndOut(function ()
  90. {
  91. this.fadeInAndOutTag = true;
  92. Hero.setPositionX(cc.find('Canvas').getComponent('GameStates').StartLinePositionX-30);
  93. Rivel.setPositionX(cc.find('Canvas').getComponent('GameStates').StartLinePositionX);
  94. HeroControl.node.stopAllActions();
  95. RivelControl.node.stopAllActions();
  96. HeroControl.StopPlayerAllSchedule();
  97. RivelControl.StopPlayerAllSchedule();
  98. var data = {FunctionName: 'StopPlayerAllSchedule'};
  99. this.SynchronizationFun(data);
  100. }.
  101. bind(this),function ()
  102. {
  103. this.schedule(function()
  104. {
  105. cc.find('Canvas').getComponent('GameStates').EnterStartLinePlayersArray=[];
  106. }.bind(this), 5,0);
  107. this.schedule(function()
  108. {
  109. cc.find('Canvas').getComponent('GameStates').CurrentProgress = GameStatesStatic.GameProgress.default;
  110. HeroControl.javelinTag = false;
  111. RivelControl.javelinTag = false;
  112. HeroControl.CameraNode.parent = Hero;
  113. if(cc.find('Canvas').getComponent('GameStates').bServer)
  114. {
  115. this.schedule(function()
  116. {
  117. this.PlayersStartToRun();
  118. }.bind(this), 1,0);
  119. }
  120. }.bind(this),cc.find('Canvas').getComponent('GameStates').ReadyToRunDuration,0);
  121. }.bind(this));
  122. },
  123. UnScheduleFadeIn:function ()
  124. {
  125. var GameStates = cc.find('Canvas').getComponent('GameStates');
  126. var EnterStartLinePlayersArray = GameStates.EnterStartLinePlayersArray;
  127. if(EnterStartLinePlayersArray.length == 2)
  128. {
  129. // cc.log('GameMode Unschedule');
  130. this.unschedule(this.UnScheduleFadeIn);
  131. this.unschedule(this.Transport);
  132. var Hero = cc.find('Hero');
  133. var Rivel = cc.find('Rivel');
  134. var HeroControl = Hero.getComponent('HeroControl');
  135. var RivelControl = Rivel.getComponent('HeroControl');
  136. HeroControl.javelinTag = false;
  137. RivelControl.javelinTag = false;
  138. HeroControl.CameraNode.parent = Hero;
  139. HeroControl.StopPlayerAllSchedule();
  140. RivelControl.StopPlayerAllSchedule();
  141. var data = {FunctionName: 'StopPlayerAllSchedule'};
  142. this.SynchronizationFun(data);
  143. Hero.setPositionX(GameStates.StartLinePositionX-30);
  144. Rivel.setPositionX(GameStates.StartLinePositionX);
  145. this.schedule(function()
  146. {
  147. GameStates.EnterStartLinePlayersArray=[];
  148. }.bind(this), 5,0);
  149. if(GameStates.bServer)
  150. {
  151. this.schedule(function()
  152. {
  153. this.PlayersStartToRun();
  154. }.bind(this), 2,0);
  155. }
  156. var data = {FunctionName: 'UnScheduleFadeIn'};
  157. this.SynchronizationFun(data);
  158. }
  159. },
  160. PlayersStartToRun: function () {
  161. var Hero = cc.find('Hero');
  162. var Rivel = cc.find('Rivel');
  163. Hero.getComponent('HeroControl').playAudioByName('StartGun');//项目开始时哨声
  164. var PlayerStateScript = Hero.getComponent("PlayerState");
  165. PlayerStateScript.TouchControlEnableTouch = false;
  166. var HeroControl = Hero.getComponent('HeroControl');
  167. var RivelControl = Rivel.getComponent('HeroControl');
  168. HeroControl.HeroIsStop = false;
  169. RivelControl.HeroIsStop = false;
  170. // console.log(11);
  171. HeroControl.ResetSpeed_noType();
  172. RivelControl.ResetSpeed_noType();
  173. var data = {FunctionName: 'PlayersStartToRun'};
  174. this.SynchronizationFun(data);
  175. },
  176. SyncPositionXRange:function(PlayerNode,CurrentPositionX)
  177. {
  178. if(Math.abs(CurrentPositionX-PlayerNode.position.x) > cc.find('Canvas').getComponent('GameStates').bSyncPositionXRange)
  179. {
  180. if(PlayerNode.name == 'Hero')
  181. {
  182. PlayerNode.setPositionX(CurrentPositionX);
  183. }
  184. else
  185. {
  186. PlayerNode.setPositionX(CurrentPositionX+40);
  187. }
  188. }
  189. },
  190. addScore : function (CurrentPlayerNode)
  191. {
  192. if(this.bHasAddScore == false){
  193. var PlayerState = CurrentPlayerNode.getComponent("PlayerState");
  194. var UIControl = cc.find("UIControl").getComponent("UIControl");
  195. // cc.log("比分",CurrentPlayerNode,PlayerState.TerminalPoint);
  196. if (CurrentPlayerNode.name=="Hero") {
  197. UIControl.GameUI.setTopMyScore(PlayerState.TerminalPoint+=1);
  198. if(cc.find('Canvas').getComponent('GameStates').bServer){
  199. var data = { FunctionName: 'addScore',PlayerName:'Hero'};
  200. this.SynchronizationFun(data);
  201. }
  202. }else{
  203. UIControl.GameUI.setTopRivalScore(PlayerState.TerminalPoint+=1);
  204. }
  205. this.bHasAddScore = true;
  206. }
  207. },
  208. });