ChooseLevelPanel.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { BaseView } from "../../../lightMVC/core/base/BaseView";
  2. import { DataManager } from "../../Framework/Manager/DataManager";
  3. import hallScene from "../../hallScene";
  4. import { App } from "../../Manager/App";
  5. import { SoundManager } from "../../Manager/SoundManager";
  6. import TimeControl from "../../TimeControl";
  7. import SuperScrollView from "../SuperScrollview/SuperScrollView";
  8. const { ccclass, property } = cc._decorator;
  9. @ccclass
  10. export default class ChooseLevelPanel extends BaseView {
  11. private list: any[] = [];
  12. private levelList: any = null;
  13. private nodeList: cc.Node[] = [];
  14. private btnList: cc.Node[] = [];
  15. private imgList: cc.Node[] = [];
  16. private labelExp: cc.Label = null;
  17. public drawView(): void {
  18. // 返回
  19. let closeBtn = this.ui.getNode("close");
  20. closeBtn.on(cc.Node.EventType.TOUCH_END, () => {
  21. this.closeView();
  22. }, this);
  23. let backBtn = this.ui.getNode("btnBack");
  24. backBtn.on(cc.Node.EventType.TOUCH_END, () => {
  25. this.closeView();
  26. }, this);
  27. for (let i = 1; i < App.DataManager.LevelCount + 1; i++) {
  28. this.list.push(i);
  29. }
  30. let nodeName = ["nodeLevel", "nodeFood", "nodeKitchen"];
  31. let btnName = ["btn_level", "btn_food", "btn_kitchen"];
  32. let imgName = ["img_level", "img_food", "img_kitchen"]
  33. for (let i = 0; i < 3; i++) {
  34. this.nodeList[i] = this.ui.getNode(nodeName[i]);
  35. this.btnList[i] = this.ui.getNode(btnName[i]);
  36. this.imgList[i] = this.ui.getNode(imgName[i]);
  37. this.btnList[i].on(cc.Node.EventType.TOUCH_END, () => {
  38. this.btnClickCall(i);
  39. }, this);
  40. }
  41. this.ui.getNode("labelTili").getComponent(cc.Label).string = TimeControl.instance.currentTili + "/" + TimeControl.instance.tiliMax;
  42. this.ui.getNode("labelCoin").getComponent(cc.Label).string = App.DataManager.UserCoin + "";
  43. this.ui.getNode("labelDiamond").getComponent(cc.Label).string = App.DataManager.UserDiamond + "";
  44. this.CreateLevel();
  45. this.scheduleOnce(() => { this.SetCenter(App.DataManager.PlayLevel); }, 0);
  46. App.SoundManager.playBGM(SoundManager.hallBgm[1]);
  47. }
  48. private btnClickCall(index: number){
  49. for (let i = 0; i < this.imgList.length; i++) {
  50. this.nodeList[i].active = false;
  51. this.imgList[i].active = false;
  52. }
  53. this.nodeList[index].active = true;
  54. this.imgList[index].active = true;
  55. }
  56. // 显示玩家金币
  57. public ShowUserCoinValue(): void {
  58. if(this){
  59. this.ui.getNode("labelCoin").getComponent(cc.Label).string = App.DataManager.UserCoin + "";
  60. }
  61. }
  62. /**
  63. * 生成关卡
  64. */
  65. private CreateLevel(): void {
  66. console.log('生成关卡');
  67. this.levelList = this.ui.getNode("levelList");
  68. this.levelList.getComponent(SuperScrollView).setData(this.list, false, null);
  69. }
  70. /**
  71. * 设置关卡居中显示
  72. * @param currentPlayLevel 最后游玩关卡
  73. */
  74. private SetCenter(currentPlayLevel: number) {
  75. let maxShowRow = 4;
  76. let maxShowColumn = 4;
  77. let currentRow = Math.ceil(currentPlayLevel / maxShowColumn);
  78. let wholeRow = Math.ceil(this.list.length / maxShowColumn);
  79. if (currentRow < maxShowRow) {
  80. this.levelList.getComponent(cc.ScrollView).scrollToTop(0.1);
  81. console.log("最上方");
  82. } else if (currentRow > wholeRow - maxShowRow) {
  83. this.levelList.getComponent(cc.ScrollView).scrollToBottom(0.1);
  84. console.log("最下方");
  85. } else {
  86. var percent = currentRow / wholeRow;
  87. this.levelList.getComponent(cc.ScrollView).scrollToPercentVertical(percent, 0.1, true);
  88. }
  89. }
  90. public static path(): string {
  91. return "hallScene/prefabs/ChooseLevelPanel";
  92. }
  93. onDestroy(){
  94. this.closeView();
  95. }
  96. }