| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import { _decorator, Component, Node, tween, Widget, UITransform, Prefab, instantiate, JsonAsset, ProgressBar } from 'cc';
- import { Http } from '../core/net/Http';
- import { ConfigData } from '../Data/ConfigData';
- import { g } from '../Data/g';
- import { AchievementItem } from './AchievementItem';
- const { ccclass, property } = _decorator;
- @ccclass('AchievementWindow')
- export class AchievementWindow extends Component {
- @property({ type: Node })
- public displayNode: Node = null;
- @property({ type: ProgressBar })
- public progressBar: ProgressBar = null;
- /**
- * 需要添加item的节点
- */
- @property({ type: Node })
- public contentNode: Node = null;
- /**
- * item预制体
- */
- @property({ type: Prefab })
- public lvPrefab: Prefab = null;
- private widget: Widget;
- private http: Http;
- /**
- * 解析出的配置数据
- */
- private jsonArray: Array<any>;
- /**
- * 等级进度Map
- */
- private progressArr: Array<number>;
- async start() {
- this.progressArr = new Array();
- this.progressArr.push(0.1);
- this.progressArr.push(0.33);
- this.progressArr.push(0.55);
- this.progressArr.push(0.77);
- this.progressArr.push(1);
-
- this.http = this.node.getComponent(Http);
- let getedArr: Array<any> = await this.queryGetedData();
- //读取配置文件
- this.jsonArray = ConfigData.configMap.get("lvlreward");
- //设置进度
- this.progressBar.progress = this.getProgress()
- //深度复制
- let reJsonArr = this.jsonArray.slice(0);
- reJsonArr.reverse().forEach(element => {
- let lvNode = instantiate(this.lvPrefab);
- let item: AchievementItem = lvNode.getComponent(AchievementItem);
- item.redNum.string = element.value + "";
- item.title.string = element.id + "";
- item.gradeRight.string = element.lvl;
- item.id = element.id;
- if (element.lvl <= g.userData.getLevel()) {
- item.canGet.node.active = true;
- item.geted.node.active = false;
- item.unGet.node.active = false;
- } else {
- item.unGet.node.active = true;
- item.canGet.node.active = false;
- item.geted.node.active = false;
- }
- if (getedArr.indexOf(element.id + "") != -1) {
- item.geted.node.active = true;
- item.unGet.node.active = false;
- item.canGet.node.active = false;
- }
- this.contentNode.addChild(lvNode);
- });
- this.widget = this.displayNode.getComponent(Widget);
- tween(this.widget).to(0.5, { editorBottom: -30 }, { easing: "sineOut" }).start();
- }
- /**
- * 关闭动画
- */
- onClose() {
- tween(this.widget).to(0.3, { editorBottom: this.displayNode.getComponent(UITransform).height * -1 }, { easing: "sineIn" }).call(() => {
- this.node.parent.destroy();
- }).start();
- }
- /**
- * 获取已领取奖励
- */
- async queryGetedData() {
- let data = await this.http.send("/api/levelReward/levelRewardList");
- return data.data;
- }
- getProgress() {
- //获取当前等级
- let level = g.userData.getLevel();
- //获取当前高一级等级下标
- let levelNext = null;
- for (let i = 0; i < this.jsonArray.length; i++) {
- if (this.jsonArray[i]["lvl"] >= level) {
- levelNext = i;
- break;
- }
- }
- //不高于配置最高等
- if (levelNext != null) {
- let result: number = 0;
- if ((levelNext - 1) >= 0) {
- result = (this.progressArr[levelNext] - this.progressArr[levelNext - 1]) * (level - this.jsonArray[levelNext - 1]["lvl"]) / (this.jsonArray[levelNext]["lvl"] - this.jsonArray[levelNext - 1]["lvl"])
- return result + this.progressArr[levelNext - 1];
- }
- result = this.progressArr[levelNext] * level / this.jsonArray[levelNext]["lvl"]
- return result;
- }
- return 1;
- }
- }
|