1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { _decorator, Component, EditBox, instantiate, Node, Prefab } from 'cc';
- import { Difficulty, DifficutyData } from '../../script/Manager/LocalDataMgr';
- import { LayerMgr } from '../../script/Manager/LayerMgr';
- import { DifficultyItem } from './DifficultyItem';
- const { ccclass, property } = _decorator;
- @ccclass('SelectDifficultyPanel')
- export class SelectDifficultyPanel extends Component {
- @property(Node)
- itemRoot: Node = null;
- @property(Node)
- itemPrefab:Node = null;
- @property(EditBox)
- countEditBox:EditBox = null;
-
- _difficultyData: DifficutyData = null
- _items: Node[] = [];
- _itemPool: Node[] = [];
- protected start(): void {
- this.countEditBox.node.on('editing-did-ended', this.onEditChange, this);
- }
- init() {
- this._difficultyData = Difficulty.getDifficutyData();
- const targetCount = this._difficultyData.difficutyCount;
- const currentCount = this._items.length;
-
- // 情况1:需要添加新项目
- if(targetCount > currentCount) {
- for (let i = currentCount; i < targetCount; i++) {
- this.createItem(i);
- }
- }
- // 情况2:需要删除多余项目
- else if(targetCount < currentCount) {
- const removeCount = currentCount - targetCount;
- for (let i = 0; i < removeCount; i++) {
- const item = this._items.pop();
- item.removeFromParent();
- item.active = false;
- this._itemPool.push(item);
- }
- }
-
- // 更新所有项目的数据
- for (let i = 0; i < this._items.length; i++) {
- const scaleValue = i < this._difficultyData.scales.length
- ? this._difficultyData.scales[i]
- : 0;
- this._items[i].getComponent(DifficultyItem).init(i, scaleValue);
- }
-
- this.countEditBox.string = this._difficultyData.difficutyCount.toString();
- }
- createItem(index: number) {
- let itemNode = this._itemPool.length > 0? this._itemPool.pop(): instantiate(this.itemPrefab);
- itemNode.parent = this.itemRoot;
- this._items.push(itemNode);
- itemNode.active = true
- itemNode.getComponent(DifficultyItem).init(index, this._difficultyData.scales[index])
- }
- onEditChange(ed:EditBox)
- {
- let count = Number(ed.string);
- if(isNaN(count))
- {
- return;
- }
- Difficulty.difficutyData.difficutyCount = count;
- Difficulty.createOrDeleteOtherScale();
- this.init()
- Difficulty.saveDifficutyData();
- }
- onUseSysDataClick()
- {
- Difficulty.setDataToDefault();
- Difficulty.createOrDeleteOtherScale(); // 重置时应用新逻辑
- this.init(); // 刷新UI
- this.node.active = false
- }
-
- onUseCurrentData()
- {
- this.node.active = false
- }
- }
|