PastureData.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /** 动物移动数据类 */
  2. import Util from "../util/Util";
  3. const { ccclass } = cc._decorator;
  4. @ccclass
  5. export default class PastureData {
  6. /** 所有点字典 */
  7. private pointMap: Map<number, cc.Vec2> = new Map<number, cc.Vec2>();
  8. /** 可移动key数组 */
  9. private canMoveArr: Array<number> = new Array<number>();
  10. /** 不可移动key数组 */
  11. private noCanMoveArr: Array<number> = new Array<number>();
  12. setPointMap(index, point: cc.Vec2) {
  13. this.pointMap.set(index, point);
  14. this.setCanMove(index);
  15. }
  16. getCanMoveIndex(oldIndex = -1) {
  17. let len = this.canMoveArr.length;
  18. let i = Util.rnd(0, len - 1);
  19. let index = this.canMoveArr[i];
  20. this.setNoCanMove(index);
  21. if (oldIndex != -1) {
  22. this.setCanMove(oldIndex);
  23. }
  24. return index;
  25. }
  26. getCanMoveIndexPoint(index) {
  27. let point = this.pointMap.get(index);
  28. return point;
  29. }
  30. setCanMove(index) {
  31. let has = this.noCanMoveArr.indexOf(index)
  32. if (has != -1) {
  33. this.noCanMoveArr.splice(has, 1)
  34. }
  35. this.canMoveArr.push(index);
  36. }
  37. setNoCanMove(index) {
  38. let has = this.canMoveArr.indexOf(index)
  39. if (has != -1) {
  40. this.canMoveArr.splice(has, 1)
  41. }
  42. this.noCanMoveArr.push(index);
  43. }
  44. }