StoreView.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. cc.Class({
  2. extends: cc.Component,
  3. properties: {
  4. Seed: {
  5. default: null,
  6. type: cc.Node,
  7. },
  8. Exchange: {
  9. default: null,
  10. type: cc.Node,
  11. },
  12. SeedBtn: {
  13. default: null,
  14. type: cc.Node,
  15. },
  16. ExchangeBtn: {
  17. default: null,
  18. type: cc.Node,
  19. },
  20. SelectedFrame: cc.Node,
  21. //Building40: cc.Node,
  22. ManageUI: cc.Node,
  23. //四个按钮对应的sprite
  24. Normal_Seed_Sprite: cc.SpriteFrame,
  25. Selecteded_Seed_Sprite: cc.SpriteFrame,
  26. Normal_Exchange_Sprite: cc.SpriteFrame,
  27. Selecteded_Exchange_Sprite: cc.SpriteFrame,
  28. //需要切换节点顺序的父节点
  29. container: cc.Node,
  30. //商城的列表
  31. mySeedList: [],
  32. seedPrefab: cc.Prefab,
  33. seedSpriteFrame: {
  34. default: [],
  35. type: [cc.SpriteFrame]
  36. },
  37. seedNodeArry: {
  38. default: [],
  39. type: [cc.Node]
  40. },
  41. snbAmount: 0,
  42. cntAmount: 0,
  43. ExchangePopView: {
  44. default: null,
  45. type: cc.Node,
  46. },
  47. PayCNTPopView: {
  48. default: null,
  49. type: cc.Node,
  50. },
  51. buySeedIndex: -1,
  52. snbAmountLabel: {
  53. default: [],
  54. type: [cc.Label]
  55. },
  56. //拿到仓库列表的节点
  57. buildingView: {
  58. default: null,
  59. type: cc.Node,
  60. },
  61. myWareHouseSeedList: null,
  62. //轮询种子列表状态
  63. AutoGetSeedsData: null,
  64. bottomLabel: {
  65. default: null,
  66. type: cc.Node,
  67. },
  68. },
  69. HiddenAll() {
  70. if (this.Seed.active)
  71. this.Seed.active = false;
  72. if (this.Exchange.active)
  73. this.Exchange.active = false;
  74. },
  75. start() {
  76. //获取到仓库列表的脚本
  77. this.buildingViewScript = this.buildingView.getComponent("BuildingView");
  78. //默认设置第一个节点为 最上面
  79. this.SeedBtn.setSiblingIndex(10);
  80. console.log('SNB=======', GlobalD.GameData.SNB)
  81. this.snbAmountLabel.string = GlobalD.GameData.SNB;
  82. //这里也初始化获取一个数据
  83. GlobalD.GameData.getWarehouseSeedAndFruit((res, vaule) => {
  84. this.myWareHouseSeedList = vaule.data.seed;
  85. });
  86. //获取种子和果实
  87. GlobalD.GameData.getMallSeed((res, vaule) => {
  88. console.log('vaule111111111=', vaule)
  89. this.mySeedList = vaule.data;
  90. for (let i = 0; i < this.mySeedList.length; i++) {
  91. //没有种子数量不显示 todo 看看后续需不需要处理删除
  92. if (this.mySeedList[i].amount < 1) continue;
  93. let _seed = cc.instantiate(this.seedPrefab);
  94. // _seed.getChildByName("buy_button").active = true;
  95. // _seed.getChildByName("Name").active = false;
  96. // _seed.getChildByName("Name").getChildByName("Num").getComponent(cc.Label).strng = '';//'x'+this.mySeedList[i].amount;
  97. this.seedNodeArry.push(_seed);
  98. _seed.parent = this.Seed;
  99. let _seedScript = _seed.getComponent("Content_Button");
  100. //设置一个生成点
  101. let _spawnScript = _seed.getComponent("Content_seed");
  102. _spawnScript.myIndex = i;
  103. _spawnScript.SpawnPoint = cc.find("Canvas/SpawnParent/SpawnPoint");
  104. _seedScript.NumLabel.string = this.mySeedList[i].amount;
  105. _seedScript.NameLabel.string = this.mySeedList[i].name;
  106. switch (this.mySeedList[i].picture) {
  107. case "Cabbage":
  108. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[0];
  109. break;
  110. case "Potato":
  111. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[1];
  112. break;
  113. case "Carrot":
  114. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[2];
  115. break;
  116. case "Broccoli":
  117. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[3];
  118. break;
  119. case "Tomato":
  120. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[4];
  121. break;
  122. case "Squash":
  123. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[5];
  124. break;
  125. case "Eggplant":
  126. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[6];
  127. break;
  128. case "Pepper":
  129. _seedScript.bgSprite.spriteFrame = this.seedSpriteFrame[7];
  130. break;
  131. default:
  132. break;
  133. }
  134. }
  135. });
  136. },
  137. //切换建筑的面板
  138. onSwitchBuildingContent(event, index) {
  139. this.SeedBtn.setScale(1);
  140. this.ExchangeBtn.setScale(1);
  141. this.SeedBtn.getComponent(cc.Sprite).spriteFrame = this.Normal_Seed_Sprite;
  142. this.ExchangeBtn.getComponent(cc.Sprite).spriteFrame = this.Normal_Exchange_Sprite;
  143. this.SeedBtn.setContentSize(100, 54);
  144. this.ExchangeBtn.setContentSize(100, 54);
  145. this.SeedBtn.y = -5;
  146. this.ExchangeBtn.y = -5;
  147. this.HiddenAll();
  148. //面板设置index
  149. //种子
  150. if ('0' == index) {
  151. this.SeedBtn.y = -20;
  152. this.SeedBtn.getComponent(cc.Sprite).spriteFrame = this.Selecteded_Seed_Sprite;
  153. this.Seed.active = true;
  154. if (this.seedNodeArry.length != 0) {
  155. this.SelectedFrame.parent = this.seedNodeArry[0];
  156. }
  157. //if (this.mySeedList.length > 0) {
  158. // let Synopsis = "成熟期:" + this.mySeedList[0].maturity;
  159. // this.ManageUI.getComponent('ManageUI').onSetButtonInfo(this.mySeedList[0].name, this.mySeedList[0].priceSnb, Synopsis);
  160. //}
  161. this.SeedBtn.setSiblingIndex(10);
  162. this.SeedBtn.setContentSize(86, 88);
  163. this.bottomLabel.active = false;
  164. }
  165. //兑换
  166. else if ('1' == index) {
  167. this.ExchangeBtn.y = -20;
  168. this.ExchangeBtn.getComponent(cc.Sprite).spriteFrame = this.Selecteded_Exchange_Sprite;
  169. this.Exchange.active = true;
  170. this.ExchangeBtn.setSiblingIndex(10);
  171. this.ExchangeBtn.setContentSize(86, 88);
  172. this.bottomLabel.active = true;
  173. }
  174. },
  175. switch: function () {
  176. var children = this.container.children;
  177. var length = children.length;
  178. if (length > 1) {
  179. var src = Math.floor(Math.random() * length);
  180. var node = children[src];
  181. var dst = src === length - 1 ? 0 : src + 1;
  182. node.setSiblingIndex(dst);
  183. }
  184. },
  185. SNBExchangeToCNT() {
  186. GlobalD.GameData.onSnbToCnt(this.snbAmount, (data) => {
  187. this.ExchangePopView.active = false;
  188. console.log('data=', data)
  189. // console.log('res=', res)
  190. });
  191. },
  192. onPayCNTPopView(myIndex) {
  193. this.buySeedIndex = myIndex;
  194. this.PayCNTPopView.active = true;
  195. // console.log('this.mySeedList[this.buySeedIndex] =',this.mySeedList[this.buySeedIndex])
  196. this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("NameLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].name;
  197. this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("PriceLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].priceCnt + ' CNT';
  198. this.PayCNTPopView.getChildByName("BG").getChildByName("BG1_sprite_splash").getChildByName("MutureDurLabel").getChildByName("label").getComponent(cc.Label).string = this.mySeedList[this.buySeedIndex].maturity;
  199. },
  200. PayCNT() {
  201. console.log('this.cntAmount=', this.cntAmount)
  202. console.log('this.cntAmount price=', this.cntAmount * parseInt(this.mySeedList[this.buySeedIndex].priceCnt))
  203. //购买种子也要使用轮询
  204. let currentAmount = 0;
  205. for (let i = 0; i < this.myWareHouseSeedList.length; i++) {
  206. if (this.myWareHouseSeedList[i].id == this.mySeedList[this.buySeedIndex].id) {
  207. currentAmount = this.myWareHouseSeedList[i].amount;
  208. }
  209. }
  210. //当前背包的数量
  211. console.log("currentAmount:", {
  212. seedId: this.mySeedList[this.buySeedIndex].id,
  213. currentAmount: currentAmount //把当前背包的数据传进去
  214. });
  215. GlobalD.GameData.payCNT(this.cntAmount * parseInt(this.mySeedList[this.buySeedIndex].priceCnt), 4, this.mySeedList[this.buySeedIndex].id + "", (data) => {
  216. const [err, tx] = data;
  217. if (err === null) {
  218. // TODO 成功, 支付为链上操作,需要提供回调接口给这边服务端确认交易成功后修改购买订单结果
  219. console.log(tx) // 交易hash,唯一标识符
  220. //todo 种子
  221. if (this.AutoGetSeedsData) {
  222. this.unschedule(this.AutoGetSeedsData);
  223. this.AutoGetSeedsData = null;
  224. }
  225. this.AutoGetSeedsData = () => {
  226. // getSeedCount ++;
  227. GlobalD.GameData.onGetSeedState(
  228. {
  229. seedId: this.mySeedList[this.buySeedIndex].id,
  230. currentAmount: currentAmount //把当前背包的数据传进去
  231. },
  232. (res, value) => {
  233. console.log("轮询种子:" + JSON.stringify(value));
  234. if (0 === value.code) {
  235. this.unschedule(this.AutoGetSeedsData);
  236. console.log("轮询种子购买成功");
  237. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "种子购买成功!", 5);
  238. this.PayCNTPopView.active = false;
  239. //直接重新初始化一下列表,
  240. this.buildingViewScript.onUpdateList();
  241. }
  242. });
  243. };
  244. this.schedule(this.AutoGetSeedsData, 5);
  245. } else {
  246. console.log(err)
  247. GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), err, 5);
  248. }
  249. });
  250. },
  251. //onEditDidBegan: function(editbox, customEventData) {
  252. // // 这里 editbox 是一个 cc.EditBox 对象
  253. // // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  254. //},
  255. //// 假设这个回调是给 editingDidEnded 事件的
  256. //onEditDidEnded: function(editbox, customEventData) {
  257. // // 这里 editbox 是一个 cc.EditBox 对象
  258. // // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  259. //},
  260. //// 假设这个回调是给 textChanged 事件的
  261. //onTextChanged: function(text, editbox, customEventData) {
  262. // // 这里的 text 表示 修改完后的 EditBox 的文本内容
  263. // // 这里 editbox 是一个 cc.EditBox 对象
  264. // // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  265. // this.snbAmount = parseInt(text);
  266. //},
  267. //// 假设这个回调是给 editingReturn 事件的
  268. //onEditingReturn: function(editbox, customEventData) {
  269. // // 这里 editbox 是一个 cc.EditBox 对象
  270. // // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  271. //}
  272. // 假设这个回调是给 textChanged 事件的
  273. onTextChanged1: function (text, editbox, customEventData) {
  274. // 这里的 text 表示 修改完后的 EditBox 的文本内容
  275. // 这里 editbox 是一个 cc.EditBox 对象
  276. // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  277. this.cntAmount = parseInt(text);
  278. },
  279. // 假设这个回调是给 textChanged 事件的
  280. onTextChanged2: function (text, editbox, customEventData) {
  281. // 这里的 text 表示 修改完后的 EditBox 的文本内容
  282. // 这里 editbox 是一个 cc.EditBox 对象
  283. // 这里的 customEventData 参数就等于你之前设置的 "foobar"
  284. this.snbAmount = parseInt(text);
  285. },
  286. });