genPlant.ts 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { _decorator, Component, Node, find, Layers, UITransform, Sprite, SpriteFrame, resources, Button, EventTouch, Scheduler, instantiate, tween, Label } from 'cc';
  2. import { main } from './main';
  3. import { timer } from './timer';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('genPlant')
  6. export class genPlant extends Component {
  7. public static _genPlant: genPlant = new genPlant();
  8. //当前植物种类。播种的时候修改这个属性,6块地种植一样类型的作物
  9. public addPlants(plantType) {
  10. const shouhuoQiPao = find("MainCanvas/qipao/time");
  11. const maps = find("MainCanvas/map").children;
  12. let shouhuoCount = 0;
  13. maps.forEach((m, index) => {
  14. let plants = find("MainCanvas/plant");
  15. let clone_item = new Node();
  16. clone_item.layer = Layers.Enum.UI_2D;
  17. clone_item.setParent(m);
  18. clone_item.name = plantType.name;
  19. clone_item.addComponent(UITransform).addComponent(Sprite).addComponent(Button);
  20. clone_item.getComponent(Button).transition = Button.Transition.SCALE;
  21. clone_item.setPosition(m.position.x - 10, m.position.y + 112 / 2 - 10, 0);
  22. clone_item.getComponent(UITransform).setContentSize(89, 112);
  23. resources.load(plantType.img + "/spriteFrame", SpriteFrame, (err, spriteFrame) => {
  24. clone_item.getComponent(Sprite).sizeMode = Sprite.SizeMode.CUSTOM;
  25. clone_item.getComponent(Sprite).spriteFrame = spriteFrame;
  26. });
  27. let shouhuo = new Node();
  28. shouhuo = instantiate(shouhuoQiPao);
  29. shouhuo.layer = Layers.Enum.UI_2D;
  30. shouhuo.setParent(m);
  31. shouhuo.active = true;
  32. shouhuo.addComponent(UITransform).addComponent(Button);
  33. shouhuo.getComponent(UITransform).setContentSize(50, 50);
  34. shouhuo.setPosition(clone_item.position.x - 70, clone_item.position.y, 0);
  35. genPlant._genPlant.schedule(() => {
  36. if (timer.time <= 0) {
  37. resources.load(plantType.chengshuImg + "/spriteFrame", SpriteFrame, (err, spriteFrame) => {
  38. clone_item.getComponent(Sprite).sizeMode = Sprite.SizeMode.CUSTOM;
  39. clone_item.getComponent(Sprite).spriteFrame = spriteFrame;
  40. });
  41. shouhuo.getChildByName("txt").getComponent(Label).string = "收获";
  42. } else {
  43. shouhuo.getChildByName("txt").getComponent(Label).string = timer.time + "秒";
  44. }
  45. }, 1);
  46. //收获果实 进背包
  47. shouhuo.on(Node.EventType.TOUCH_END, () => {
  48. if (timer.time < 0) {
  49. const mySaleBoxItems = find("MainCanvas/popBox/mysalepack/items");
  50. if (mySaleBoxItems.children.length > 4) {
  51. this.showMsg("果实尚未出售完毕!");
  52. return;
  53. }
  54. //收获6块地的果实只允许入包一次
  55. if (clone_item.name === "fanqie") {
  56. //场景中默认有4个Node所以从第5个开始属于背包items
  57. //并且6个收获按钮都点击后才可以入包
  58. if (main.addSalePackCount === 4) {
  59. this.showMsg("果实背包已满!");
  60. return;
  61. }
  62. main.addSalePack(10);
  63. //收获后需要修改初始化计时器
  64. timer.isStart = false;
  65. } if (clone_item.name === "pingguo") {
  66. if (main.addSalePackCount === 4) {
  67. this.showMsg("果实背包已满!");
  68. return;
  69. }
  70. main.addSalePack(11);
  71. //收获后需要修改初始化计时器
  72. timer.isStart = false;
  73. } if (clone_item.name === "qiezi") {
  74. if (main.addSalePackCount === 4) {
  75. this.showMsg("果实背包已满!");
  76. return;
  77. }
  78. main.addSalePack(12);
  79. //收获后需要修改初始化计时器
  80. timer.isStart = false;
  81. } if (clone_item.name === "huluobo") {
  82. if (main.addSalePackCount === 4) {
  83. this.showMsg("果实背包已满!");
  84. return;
  85. }
  86. main.addSalePack(13);
  87. //收获后需要修改初始化计时器
  88. timer.isStart = false;
  89. }
  90. main.saleBox.active = false;
  91. shouhuo.active = false;
  92. //收获后 地块移除所有的克隆果实
  93. plants.removeChild(clone_item);
  94. }
  95. }, this);
  96. plants.addChild(shouhuo);
  97. plants.addChild(clone_item);
  98. });
  99. }
  100. //弹消息
  101. showMsg(msg: string) {
  102. const msgBox = find("MainCanvas/popBox/msgBox");
  103. const mg = msgBox.getChildByName("msgTxt").getComponent(Label);
  104. mg.string = msg;
  105. msgBox.active = true;
  106. this.scheduleOnce(function callback() {
  107. msgBox.active = false;
  108. }, 1);
  109. }
  110. }