ManageTimer.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. var reGameStates = require('GameStates');
  2. cc.Class({
  3. extends: cc.Component,
  4. properties: {
  5. //显示计算日期的label
  6. DateLabel: cc.Node,
  7. ManagerWorker: cc.Node,
  8. Tips: cc.Node,
  9. ManageAd: cc.Node,
  10. },
  11. Init(_BFirstLoadGame) {
  12. this.CurrentMonth = GlobalD.GameData.GameMonth;
  13. this.CurrentYear = GlobalD.GameData.GameYear;
  14. this.SetDate();
  15. //Update new day
  16. // this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameYear.toString() + '年 : ' + GlobalD.GameData.GameMonth.toString() + '月 : ' + GlobalD.GameData.GameDay.toString() + '日';
  17. var myDate = new Date();
  18. myDate.setFullYear(GlobalD.GameData.GameYear, GlobalD.GameData.GameMonth, GlobalD.GameData.GameDay);
  19. var tempGameMonth = myDate.getMonth();
  20. // var tempGameYear = myDate.getFullYear();
  21. this.schedule(function () {
  22. myDate.setDate(myDate.getDate() + 1);
  23. GlobalD.GameData.GameYear = myDate.getFullYear();
  24. GlobalD.GameData.GameMonth = myDate.getMonth();
  25. GlobalD.GameData.GameDay = myDate.getDate();
  26. cc.sys.localStorage.setItem('GameYear', GlobalD.GameData.GameYear);
  27. cc.sys.localStorage.setItem('GameMonth', GlobalD.GameData.GameMonth);
  28. cc.sys.localStorage.setItem('GameDay', GlobalD.GameData.GameDay);
  29. if (GlobalD.GameData.GameYear != 0) {
  30. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameYear.toString() + '年 : ' + GlobalD.GameData.GameMonth.toString() + '月 : ' + GlobalD.GameData.GameDay.toString() + '日';
  31. }
  32. else if (GlobalD.GameData.GameMonth != 0) {
  33. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameMonth.toString() + '月 : ' + GlobalD.GameData.GameDay.toString() + '日';
  34. }
  35. else {
  36. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameDay.toString() + '日';
  37. }
  38. if (tempGameMonth != myDate.getMonth()) {
  39. tempGameMonth = myDate.getMonth();
  40. }
  41. //过了一个月
  42. if (this.CurrentMonth != GlobalD.GameData.GameMonth) {
  43. this.CurrentMonth = GlobalD.GameData.GameMonth;
  44. this.MonthEvent();
  45. }
  46. //过了一年
  47. if (this.CurrentYear != GlobalD.GameData.GameYear) {
  48. this.CurrentYear = GlobalD.GameData.GameYear;
  49. this.YearEvent();
  50. }
  51. }.bind(this), 5, cc.repeatForever());
  52. this._ManageAd = this.ManageAd.getComponent('ManageAd');
  53. if (task.TaskIconCountClick != 14)
  54. return;
  55. setTimeout(() => {
  56. // console.log('第一次登录:',_BFirstLoadGame);
  57. //第二次登录时候,拿时间数据,计算时差,大于两小时的可以给看登录视频领取奖励
  58. if (_BFirstLoadGame) {
  59. let oldDate = cc.sys.localStorage.getItem('loginRewardDate');
  60. // console.log('oldDate:',oldDate, new Date(oldDate));
  61. if (!oldDate) {
  62. //第二次登录没有记录时间的话
  63. var date2 = new Date(); //开始时间
  64. cc.sys.localStorage.setItem('loginRewardDate', date2);
  65. return;
  66. }
  67. var limitValue = 30;//分钟
  68. var limitDValue = limitValue * 60 * 1000;//分钟内的毫秒数
  69. var dateEnd = new Date(); //结束时间
  70. var dateDValue = dateEnd.getTime() - new Date(oldDate).getTime() //时间差的毫秒数
  71. //计算出小时数
  72. var leave1 = dateDValue % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  73. var hours = Math.floor(leave1 / (3600 * 1000))
  74. // console.log('当前时间:', hours);
  75. //计算出相差天数
  76. var days = Math.floor(dateDValue / (24 * 3600 * 1000))
  77. //计算相差分钟数
  78. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  79. var minutes = Math.floor(leave2 / (60 * 1000))
  80. //计算相差秒数
  81. var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  82. var seconds = Math.round(leave3 / 1000)
  83. console.log(" 相差 " + days + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒")
  84. //用毫秒数比较如果时间大于30分钟
  85. if (dateDValue >= limitDValue) {
  86. this.onloginGetVideoAd();
  87. } else {
  88. this._ManageAd.onPlayBannerAd();
  89. }
  90. } else {
  91. var date1 = new Date(); //开始时间
  92. //第一次登录记录时间
  93. cc.sys.localStorage.setItem('loginRewardDate', date1);
  94. // console.log('第一次登录记录时间:',date1);
  95. // this._ManageAd.onPlayBannerAd();
  96. }
  97. }, 500);
  98. },
  99. SetDate() {
  100. if (GlobalD.GameData.GameYear != 0) {
  101. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameYear.toString() + '年 : ' + GlobalD.GameData.GameMonth.toString() + '月 : ' + GlobalD.GameData.GameDay.toString() + '日';
  102. }
  103. else if (GlobalD.GameData.GameMonth != 0) {
  104. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameMonth.toString() + '月 : ' + GlobalD.GameData.GameDay.toString() + '日';
  105. }
  106. else {
  107. this.DateLabel.getComponent(cc.Label).string = GlobalD.GameData.GameDay.toString() + '日';
  108. }
  109. },
  110. //观看视频获取奖励
  111. onGetVideoAd() {
  112. //临时去掉广告
  113. return;
  114. //直接初始化,初始化一次
  115. //预加载广告
  116. // 'adunit-4f20955a953757b6',//视频激励广告3
  117. AD.loadVideoAdFromIndex('ManageTimer', 2, (res) => {
  118. console.log('预加载广告回调:', res);
  119. });
  120. this._ManageAd.onCloseBannerAd();
  121. UtilsPrefabs.videoAdPrefab();
  122. },
  123. //登录时观看视频
  124. onloginGetVideoAd() {
  125. //临时去掉广告
  126. return;
  127. //预加载广告
  128. // 'adunit-4f20955a953757b6',//视频激励广告3
  129. AD.loadVideoAdFromIndex('LoginReward', 4, (res) => {
  130. console.log('预加载广告回调:', res);
  131. });
  132. this._ManageAd.onCloseBannerAd();
  133. UtilsPrefabs.loginAdPrefab(() => {
  134. var date1 = new Date(); //开始时间
  135. //设置在本地记录看视频日期
  136. cc.sys.localStorage.setItem('loginRewardDate', date1);
  137. this._ManageAd.onPlayBannerAd();
  138. }, () => {
  139. this._ManageAd.onPlayBannerAd();
  140. });
  141. },
  142. MonthEvent() {
  143. //每月扣费
  144. this._AllBuildingRuningCost();
  145. this.WorkerSalary();
  146. this.GiveMoney();
  147. UtilsWX.getAllBuild();
  148. UtilsWX.openWXSubContextView(true);
  149. setTimeout(function () {
  150. UtilsWX.openWXSubContextView(false);
  151. }.bind(this), 5000)
  152. // this.YearEvent();
  153. GlobalD.GameData.PlusGolden(GlobalD.GameData.EveryGive[0]);
  154. GlobalD.GameData.PlusDiamond(GlobalD.GameData.EveryGive[1]);
  155. setTimeout(() => {
  156. //显示奖励
  157. this.onGetVideoAd();
  158. }, 6000);
  159. },
  160. YearEvent() {
  161. //每年上报告
  162. var data1 = {
  163. name: "Whoareme",
  164. openId: userData.openId,
  165. }
  166. UtilsWX.postMessage(data1);
  167. },
  168. WorkerSalary() {
  169. let ManagerWorkerScript = this.ManagerWorker.getComponent('ManageWorker');
  170. let Wages = ManagerWorkerScript.WorkerLVPropertyJSON[GlobalD.GameData.GetWorkerLV()].Wages;
  171. Wages = parseInt(Wages);
  172. // cc.log('Wages='+Wages);
  173. let CanPayNum = GlobalD.GameData.GetGolden() / Wages;
  174. // cc.log('CanPayNum1111='+CanPayNum);
  175. CanPayNum = parseInt(CanPayNum);
  176. // cc.log('CanPayNum2222='+CanPayNum);
  177. // cc.log('GetWorkerNum='+GlobalD.GameData.GetWorkerNum());
  178. GlobalD.GameData.PlusGolden(-(GlobalD.GameData.GetWorkerNum() * Wages));
  179. let PayPersonNum = CanPayNum - GlobalD.GameData.GetWorkerNum();
  180. // cc.log('PayPersonNum='+PayPersonNum);
  181. if (PayPersonNum > 0 || PayPersonNum == 0) return;
  182. let FirePersonNum = -PayPersonNum;
  183. ManagerWorkerScript.FirePerson(FirePersonNum);
  184. this.Tips.active = true;
  185. this.Tips.getChildByName('Detail').getComponent(cc.Label).string = ' ' + FirePersonNum + '名工人因发不出工资已经离职';
  186. this.scheduleOnce(
  187. function () {
  188. this.Tips.active = false;
  189. }, 2
  190. )
  191. },
  192. GiveMoney() {
  193. let ManagerWorkerScript = this.ManagerWorker.getComponent('ManageWorker');
  194. let Wages = ManagerWorkerScript.WorkerLVPropertyJSON[GlobalD.GameData.GetWorkerLV()].Wages;
  195. GlobalD.GameData.PlusGolden(parseInt(Wages));
  196. },
  197. onRuningCost() {
  198. this._AllBuildingRuningCost();
  199. // GlobalD.GameData.PlusGolden(-1000105);
  200. },
  201. onAddGolden() {
  202. GlobalD.GameData.PlusGolden(1000);
  203. GlobalD.GameData.PlusDiamond(1000);
  204. // GlobalD.GameData.SetWorkerLV(0);
  205. },
  206. //每个月扣除可销售的全部建筑的
  207. _AllBuildingRuningCost() {
  208. let buildsTildMapUnit = GlobalD.game.buildingsTiledMapUnit;
  209. let length = buildsTildMapUnit.length;
  210. GlobalD.GameData.GetGoldenCallBack((res) => {
  211. if (!res) {
  212. cc.warn('获取金币失败:', res);
  213. return;
  214. }
  215. // cc.log('获取金币:', res.resGolden);
  216. let _currentGolden = res.resGolden;
  217. for (let i = 0; i < length; i++) {
  218. // let _buildType = buildsTildMapUnit[i].getBuildingsInfo.buildInfo.buildType;
  219. // if (reGameStates.BuildType.Housing == _buildType
  220. // || reGameStates.BuildType.Special == _buildType
  221. // || reGameStates.BuildType.Factory == _buildType) {
  222. // continue;
  223. // }
  224. //reGameStates.BuildType.Shop !== _buildType
  225. //只要运营成本不为零,都会每个月扣钱
  226. if (buildsTildMapUnit[i].getBuildingsInfo.buildInfo.RunningCost == 0) continue;
  227. let _runningCost = buildsTildMapUnit[i].getBuildingsInfo.buildInfo.RunningCost;
  228. // cc.log(_currentGolden, _runningCost);
  229. let _golden = _currentGolden - _runningCost;
  230. //交的起的,都交
  231. if (_golden < 0) {
  232. // cc.log('不够钱交租啦,此建筑暂停营业:', buildsTildMapUnit[i].getBuildingsInfo.buildInfo.buildingName);
  233. buildsTildMapUnit[i].getBuildingsInfo.buildInfo.isItSaleable = false;
  234. buildsTildMapUnit[i].getBuildingsInfo.buildInfo.isItStopOperation = true;
  235. buildsTildMapUnit[i].getBuildingsInfo.onStopOperation();
  236. GlobalD.game.onAddBuildingTipView(buildsTildMapUnit[i].getBuildingsInfo);
  237. } else {
  238. GlobalD.game.onRemoveBuildingTipView(buildsTildMapUnit[i].getBuildingsInfo);
  239. buildsTildMapUnit[i].getBuildingsInfo.buildInfo.isItStopOperation = false;
  240. buildsTildMapUnit[i].getBuildingsInfo.buildInfo.isItSaleable = true;
  241. GlobalD.GameData.PlusGolden(-_runningCost);
  242. // cc.log('商店:', buildsTildMapUnit[i].getBuildingsInfo.buildInfo.buildingName, '= 收费:', _runningCost);
  243. }
  244. //更新信息
  245. // cc.log('更新信息');
  246. GlobalD.game.updateBuilding(buildsTildMapUnit[i].getBuildingsInfo);
  247. _currentGolden = _golden;
  248. }
  249. })
  250. }
  251. });