123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- import { _decorator, Component, Node } from "cc";
- import BaseUI from "../../scripts/base/BaseUI";
- import { Tips } from "../../scripts/mgr/Tips";
- import { CommonTabsTitle, OnTabClickListener } from "../common/CommonTabsTitle";
- import RankM, { RankDto } from "../../scripts/api/RankM";
- import Utils from "../../scripts/utils/Utils";
- import UserM from "../../scripts/api/UserM";
- import { ScrollView } from "cc";
- import AB from "../../scripts/base/AB";
- import ConfigM, { Config, ConfigGrade } from "../../scripts/api/ConfigM";
- import { instantiate } from "cc";
- import { GradeItem } from "../item/GradeItem";
- import { Prefab } from "cc";
- import { RankPlayerItem } from "../item/RankPlayerItem";
- import { HelpLayer } from "../layer/HelpLayer";
- import { HelpRank } from "../layer/HelpRank";
- import { TipsData, TipsLayer } from "../layer/TipsLayer";
- const { ccclass, property } = _decorator;
- @ccclass("PageRank")
- export class PageRank extends BaseUI implements OnTabClickListener {
- public static readonly RankTypeSeason = 0;
- public static readonly RankTypeTotal = 1;
- private tabs: CommonTabsTitle;
- private rank_people_layout: Node;
- protected onLoad(): void {
- super.onLoad();
- this.tabs = this.FindAs("CommonTabsTitle", CommonTabsTitle);
- this.rank_people_layout = this.FindNode("rank_people_layout");
- // 获取内部的水平ScrollView
- let gradeScrollView = this.FindAs("GradeItemScrollView", ScrollView);
- // 最简单的方式:设置内部ScrollView不取消内部事件,让外部ScrollView可以正常响应垂直滑动
- if (gradeScrollView) {
- gradeScrollView.cancelInnerEvents = false;
- }
- let tab_titles = [
- Utils.setI18nLabel("Rank.Season"),
- Utils.setI18nLabel("Rank.Total"),
- ];
- this.tabs.init(tab_titles, this);
- this.refresh();
- }
- async refresh() {
- if (this._grade <= 0) {
- this._grade = UserM.ins.getGrade();
- }
- this.init();
- this.initGrades();
- this.initTitles();
- this.initRankPeoples(this._grade);
- }
- private refreshGradeSelected() {
- this.getComponentsInChildren(GradeItem).forEach((item) => {
- item.setSelected(item && item.data.id == this._grade);
- });
- }
- private _type: number = PageRank.RankTypeSeason;
- private _grade: number = 0;
- async initRankPeoples(grade: number) {
- this.refreshGradeSelected();
- let tpl = await AB.ins.loadPrefab("prefab/item/RankPlayerItem");
- let data = await RankM.ins.rankPeoples(this._type, grade);
- this.rank_people_layout.removeAllChildren();
- if (!data || !data.rankList || data.rankList.length <= 0) {
- return;
- }
- for (let i = 0; i < data.rankList.length; i++) {
- let item = instantiate(tpl);
- item.getComponent(RankPlayerItem).init(data.rankList[i]);
- this.rank_people_layout.addChild(item);
- }
- }
- initTitles() {
- this.setText(
- "lbl_t_current_season",
- Utils.setI18nLabel("Rank.CurrentSeason")
- );
- this.setText("lbl_t_season_desc", Utils.setI18nLabel("Rank.TotalPogTip"));
- this.setText("lbl_t_sent", Utils.setI18nLabel("Rank.TodaySend"));
- this.setText("lbl_t_remaining", Utils.setI18nLabel("Rank.TodayRemaining"));
- this.setText("lbl_rank_my_tips", Utils.setI18nLabel("Rank.MyRankTip"));
- this.setText(
- "lbl_online_time_tips",
- Utils.setI18nLabel("Rank.WeekTimeTip")
- );
- this.setText(
- "lbl_t_grade_title",
- Utils.setI18nLabel("Rank.AllTankSegmentTitle")
- );
- }
- onGradeClick(data: ConfigGrade) {
- this._grade = data.id;
- this.initRankPeoples(this._grade);
- }
- async initGrades() {
- let s = this.FindAs("GradeItemScrollView", ScrollView);
- let p = await AB.ins.loadPrefab("prefab/item/GradeItem");
- let grades = ConfigM.ins.Grades();
- for (let i = 0; i < grades.length; i++) {
- let item = instantiate(p);
- item
- .getComponent(GradeItem)
- .init(grades[i], this.onGradeClick.bind(this));
- s.content.addChild(item);
- if (grades[i].id == this._grade) {
- item.getComponent(GradeItem).setSelected(true);
- }
- }
- }
- async init() {
- this.FindNode("pog_info").active = this._type == PageRank.RankTypeSeason;
- let data: RankDto = await RankM.ins.rankData(this._type);
- this.ui(data);
- }
- async ui(data: RankDto) {
- this.setText("lbl_total_pog", "" + Utils.formatNumber(data.seasonPog, 0));
- this.setText(
- "lbl_today_send",
- "" + Utils.formatNumber(data.dailyGrantPog, 0)
- );
- this.setText("lbl_remain_pog", "" + Utils.formatNumber(data.remainPog, 0));
- // let gradeAddValue = ConfigM.ins.getGradeAddValue(data.rankInfo.rank);
- let grade = data.rankInfo.badgeId;
- let gradeConfig = ConfigM.ins.getGrade(grade);
- if (gradeConfig != null) {
- this.setText(
- "lbl_rank_my",
- gradeConfig.name +
- " #" +
- data.rankInfo.rank +
- " +" +
- gradeConfig.addition +
- "%"
- );
- } else {
- this.setText("lbl_rank_my", "ROOKIE #" + data.rankInfo.rank);
- }
- this.setText("lbl_online_time", Utils.getTimeStrByS(data.onlineTime));
- this.setText("lbl_season_time", UserM.ins.getSeasonEndTimeText());
- }
- public onTabClick(index: number) {
- // this._type = index;
- // this.init();
- Tips.show("ComingSoon");
- this.tabs.setSelect(this._type);
- }
- protected simpleOnBtnClick(name: string): void {
- switch (name) {
- case "btn_rank_tips":
- HelpRank.show();
- break;
- case "btn_utility":
- let data = new TipsData();
- data.title = "";
- data.content = `Check out POG Economy & Leaderboard Mechanics from Litepaper: `;
- data.forceConfirm = true;
- data.link = `https://telgather.gitbook.io/telgather-litepaper/telgather-economy/pog-economy-and-leaderboard-mechanics`;
- TipsLayer.show(data);
- break;
- }
- }
- }
|