PVPCardArray.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { _decorator, Component, Node, instantiate, Prefab, v3, UITransform, CCBoolean } from 'cc';
  2. import { PVPCardData } from './PVP';
  3. import { PVPCardItem } from './PVPCardItem';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('PVPCardArray')
  6. export class PVPCardArray extends Component {
  7. @property({ type: Prefab, tooltip: "武将卡牌预制体" }) prefab: Prefab;
  8. @property({ type: Prefab, tooltip: "武将卡牌预制体(翻转)" }) prefab_filp: Prefab;
  9. @property({ type: Node, tooltip: "手牌" }) handNode: Node;
  10. @property({ type: Node, tooltip: "牌堆" }) deckNode: Node;
  11. @property({ tooltip: "是否镜像翻转" }) isFilp: boolean = false;
  12. public setData(data: Array<PVPCardData>): void {
  13. this.handNode.removeAllChildren();
  14. this.deckNode.removeAllChildren();
  15. let handLength = data.length >= 5 ? 5 : data.length;
  16. for (let i = 0; i < handLength; i++) {
  17. let node = instantiate(this.isFilp ? this.prefab_filp : this.prefab);
  18. let offsetX = i == 0 ? 0 : 30;
  19. node.setPosition(v3((((this.handNode.getComponent(UITransform).width - node.getComponent(UITransform).width) / (handLength - 1)) * i + offsetX) * (this.isFilp ? -1 : 1), 0, 0));
  20. node.setParent(this.handNode);
  21. node.setScale(i == 0 ? v3(1, 1, 1) : v3(0.85, 0.85, 1));
  22. node.getComponent(PVPCardItem).setData(data[i]);
  23. }
  24. for (let j = handLength; j < data.length; j++) {
  25. let node = instantiate(this.isFilp ? this.prefab_filp : this.prefab);
  26. node.setScale(v3(0.85, 0.85, 1));
  27. node.setPosition(v3((((this.deckNode.getComponent(UITransform).width - node.getComponent(UITransform).width * node.scale.x) / (data.length - handLength - 1)) * (j - handLength)) * (this.isFilp ? -1 : 1), 0, 0));
  28. node.setParent(this.deckNode);
  29. node.getComponent(PVPCardItem).setData(data[j]);
  30. }
  31. }
  32. }