UILevelRank.ts
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import { SaveDataManager } from "../../component/SaveDataManager";
import { tMgr, WindowName } from "../../Global";
import { GamePlayTable, TableName } from "../../kernel/table/TableDefine";
import LevelRankItem from "../../prefabs/LeveRankItem";
import { UIBase } from "../UIBase";
import { UIManager } from "../UIManager";
const { ccclass, property } = cc._decorator;
@ccclass
export default class UILevelRank extends UIBase {
@property(cc.Prefab)
itemPrefab: cc.Prefab = null;
private _inited: boolean = false;
constructor() {
super();
this._usePopUpEffect = false;
this._useCloseEffect = false;
}
//#region lifecycle
protected start(): void {
let levelNum = (tMgr.getConfig(TableName.GAME_PLAY, 22) as GamePlayTable).Value;
let container = cc.find('scrollView/view/content/grid', this.node);
for (let i = 0; i < levelNum; ++i) {
let row = Math.floor(i / 5);
let col = i % 5;
let reverse: boolean = false;
if (row % 2 == 1) {
reverse = true;
}
let item = cc.instantiate(this.itemPrefab);
container.addChild(item);
item.getComponent(LevelRankItem).setLineLayer(cc.find('scrollView/view/content/line', this.node));
if (reverse) {
item.getComponent(LevelRankItem).setLevelId(i + 5 + col * -2); //傻逼非要做些无意义又不好做的排序
}
else {
item.getComponent(LevelRankItem).setLevelId(i + 1);
}
}
this._inited = true;
}
protected onDestroy(): void {
UIManager.ins.cache.delete(WindowName.LEVEL_RANK); // 此界面添加在场景中,会随场景一起销毁,将UIManager中的缓存也删除,避免后续取到被销毁的缓存
}
protected onEnable(): void {
if (this._inited) {
this.scrollToCur();
}
else {
this.scheduleOnce(this.scrollToCur.bind(this), 0);
}
}
//#endregion
//#region public method
//#endregion
//#region event
onBtnCloseClick() {
// UIManager.ins.closeWindow(WindowName.LEVEL_RANK);
this.node.removeFromParent();
}
//#endregion
//#region private method
private scrollToCur() {
let totalRow = Math.ceil((tMgr.getConfig(TableName.GAME_PLAY, 22) as GamePlayTable).Value / 5);
let curRow = Math.ceil((SaveDataManager.ins.runtimeData.curLevel + 1) / 5) - 1;
this.node.getChildByName('scrollView').getComponent(cc.ScrollView).scrollTo(cc.v2(0, 1 - curRow / totalRow), 0.5, true);
}
//#endregion
}