ManageSeedNode.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. var reGameStates = require('GameStates');
  2. import gameToast from "../Network/gameToast";
  3. // const { values } = require('../Network/runtime');
  4. cc.Class({
  5. extends: cc.Component,
  6. properties: {
  7. seedType: {
  8. default: reGameStates.SeedType.Normal,
  9. type: cc.Enum(reGameStates.SeedType),
  10. },
  11. seedName: {
  12. default: ''
  13. },
  14. _EndPosition: {
  15. default: new cc.Vec2(),
  16. serializable: false,
  17. visible: false,
  18. },
  19. labelTip: {
  20. default: null,
  21. type: cc.Label,
  22. },
  23. labelTipString: {
  24. default: '移动可拆除对应建筑',
  25. },
  26. //记录节点
  27. targetBuildingsInfo: { default: null, visible: false },
  28. //移除的提示预制
  29. removeTipPrefab: { default: null, type: cc.Prefab },
  30. //记录要删除的节点
  31. selectedTarget: { default: [], type: cc.Node, visible: false },
  32. //记录选中的index
  33. selectedTargetIndex: { default: [], type: cc.Integer, visible: false },
  34. isMoveState: { default: true, visible: false },
  35. MoveStartNode: cc.Node,
  36. MoveEndNode: cc.Node,
  37. //content_seed 传递过来
  38. goodsSeedInfo: {
  39. default: null,
  40. tooltip: '设定一个背包种子信息',
  41. },
  42. //content_seed 设置
  43. seedSprite: {
  44. default: null,
  45. type: cc.Sprite,
  46. tooltip: "当前生出工具的提示"
  47. },
  48. fruitSpriteFrame: {
  49. default: null,
  50. type: cc.SpriteFrame,
  51. tooltip: "成熟的图片展示"
  52. },
  53. upTarget: {
  54. default: null,
  55. type: cc.Node,
  56. tooltip: "把当前操作的ui按钮传进来"
  57. },
  58. },
  59. // LIFE-CYCLE CALLBACKS:
  60. // onLoad () {},
  61. start() {
  62. //获取对应的地图层级
  63. this.buildLayer = GlobalD.TiledMap._tiledMap.getLayer('BuildsHighway');
  64. GlobalD.game._ManageUIScript.onBottomMenuView(false);
  65. var self = this;
  66. self._MainCamera = GlobalD.game.MainCamera;
  67. self._tiledMap = GlobalD.TiledMap._tiledMap;
  68. //获取最后建造公路的层级
  69. self.HighwayLayer = self._tiledMap.getLayer('Highway');
  70. self._game = GlobalD.game;
  71. //初始化时候设置一下位置
  72. //后面只要点击生成铺路就需要重置一下
  73. let startTiledPos = GlobalD.TiledMap._tilePosFromLocation(self.node.getPosition());
  74. let startEndPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(startTiledPos);
  75. self.node.setPosition(startEndPos);
  76. self._EndPosition = startTiledPos;
  77. if (reGameStates.SeedType.Normal === self.seedType) {
  78. //锤子类型
  79. let startIndex = GlobalD.TiledMap.getIndex(startTiledPos);
  80. let _targetBuildingsInfo = GlobalD.game.onGetBuildingsTiledMapUnitFromIndex(startIndex);
  81. if (_targetBuildingsInfo) {
  82. self.labelTip.string = '播种到' + _targetBuildingsInfo.buildInfo.buildingName + '上';
  83. self.targetBuildingsInfo = _targetBuildingsInfo;
  84. }
  85. else {
  86. self.labelTip.string = self.labelTipString;
  87. self.targetBuildingsInfo = null;
  88. }
  89. }
  90. self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
  91. GlobalD.GameControl._isBuildingMove = true;
  92. var delta = event.touch.getDelta();
  93. self._touchPosition.x += delta.x / self._MainCamera.zoomRatio;
  94. self._touchPosition.y += delta.y / self._MainCamera.zoomRatio;
  95. let tiledPos = GlobalD.TiledMap._tilePosFromLocation(self._touchPosition);
  96. // //不相等的时候才绘制
  97. if (tiledPos.sub(self._EndPosition).mag() != 0) {
  98. self._EndPosition = tiledPos;
  99. self._SelectHighwayTiled(tiledPos);
  100. }
  101. }, self.node);
  102. self.node.on(cc.Node.EventType.TOUCH_START, function (event) {
  103. self.isMoving = true;
  104. self._touchPosition = self.node.getPosition();
  105. }, self.node);
  106. self.node.on(cc.Node.EventType.TOUCH_END, function (event) {
  107. //起始触摸位置
  108. GlobalD.GameControl._isBuildingMove = false;
  109. let buildIndex = GlobalD.TiledMap.getIndex(self._EndPosition);
  110. let _targetBuildingsInfo = GlobalD.game.onGetBuildingsTiledMapUnitFromIndex(buildIndex);
  111. if (_targetBuildingsInfo) {
  112. if (_targetBuildingsInfo.buildInfo.buildType == reGameStates.BuildType.HolyFarmland) {
  113. self.labelTip.string = '播种到' + _targetBuildingsInfo.buildInfo.buildingName + '上';
  114. self.targetBuildingsInfo = _targetBuildingsInfo;
  115. } else {
  116. self.labelTip.string = '请移动到农田上!';
  117. self.targetBuildingsInfo = null;
  118. }
  119. }
  120. else {
  121. self.labelTip.string = self.labelTipString;
  122. self.targetBuildingsInfo = null;
  123. }
  124. }, self.node);
  125. self.node.on(cc.Node.EventType.TOUCH_CANCEL, function (event) {
  126. //起始触摸位置
  127. GlobalD.GameControl._isBuildingMove = false;
  128. }, self.node);
  129. },
  130. onCancleSelf() {
  131. this.node.active = false;
  132. GlobalD.game._ManageUIScript.onBottomMenuView(true);
  133. },
  134. /**
  135. *
  136. * 处理播种逻辑,记录数据库
  137. * @returns
  138. */
  139. onSowOnTheGround() {
  140. //调用土地相关
  141. if (!this.targetBuildingsInfo) return;
  142. // cc.log('this.targetBuildingsInfo', this.targetBuildingsInfo)
  143. // this.targetBuildingsInfo.onClearSelfResetFromType();
  144. // 种植土地的信息
  145. let _leaseFarmlandInfo = this.targetBuildingsInfo.getComponent("LeaseFarmlandInfo");
  146. let leaseLandInfo = _leaseFarmlandInfo.leaseLandInfo;
  147. if (leaseLandInfo == null) {
  148. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "请先租赁土地!", 2, () => {
  149. console.log("finish toast!");
  150. });
  151. //隐藏种子和显示UI
  152. this.node.active = false;
  153. GlobalD.game._ManageUIScript.onBottomMenuView(true);
  154. return;
  155. }
  156. // console.log(leaseLandInfo);
  157. let data = { landId: leaseLandInfo.configLandId, seedId: this.goodsSeedInfo.id };
  158. GlobalD.GameData.onPlant(data, (value) => {
  159. //面板种子消耗减少1
  160. if (0 === value.code) {
  161. console.log('种子减少的类型名字', this.seedName);
  162. console.log(value);
  163. // GlobalD.game.MuinusBuilding(this.seedName);
  164. //刷新本地列表对象,数量减去1
  165. // console.log(this.upTarget);
  166. // let NumLabel = this.upTarget.getComponent("Content_Button").NumLabel.getComponent(cc.Label);
  167. // if (parseInt(NumLabel.string) <= leaseLandInfo.leaseMultiple) {
  168. // //这里只隐藏
  169. // this.upTarget.active = false;
  170. // } else {
  171. // NumLabel.string = parseInt(NumLabel.string) - leaseLandInfo.leaseMultiple;
  172. // }
  173. //
  174. var BuildingView = cc.find("Canvas/UICamera/BuildingContainer/BuildingView").getComponent("BuildingView");
  175. BuildingView.onUpdateList();
  176. //把种子的信息存储到当前的土地 plantInfo 上;
  177. _leaseFarmlandInfo.setLeaseLandInfo(value.data,true);
  178. //开始种植,给一个初始的状态
  179. // this.targetBuildingsInfo.onInitHolyFarmlandSeedFromGrow(1, this.fruitSpriteFrame);
  180. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "已成功种植!", 1);
  181. } else if (706 === value.code) {
  182. //土地到期,没有更新刷新的处理刷新
  183. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), value.msg, 1);
  184. //重置锁定状态显示
  185. _leaseFarmlandInfo.onLockLand();
  186. } else {
  187. //土地已经种植了
  188. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), value.msg, 1);
  189. }
  190. });
  191. //隐藏种子和显示UI
  192. this.node.active = false;
  193. GlobalD.game._ManageUIScript.onBottomMenuView(true);
  194. },
  195. _SelectHighwayTiled(tiledPos) {
  196. let endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(tiledPos);
  197. this.node.setPosition(endPos);
  198. }
  199. });