龙虎榜相关
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 47s

This commit is contained in:
TJH 2025-12-24 16:55:31 +08:00
parent 536a1946db
commit 354766ccb9
191 changed files with 47721 additions and 92 deletions

View File

@ -2,7 +2,7 @@
"ver": "1.2.0", "ver": "1.2.0",
"importer": "directory", "importer": "directory",
"imported": true, "imported": true,
"uuid": "b8b9e8c8-a0fe-4da6-8c6b-32f185520cd0", "uuid": "0c826003-fe58-4d0d-8099-9be2a0972aad",
"files": [], "files": [],
"subMetas": {}, "subMetas": {},
"userData": { "userData": {

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "6a75c968-9ddb-4414-bf8c-cf9fc361ec07",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "20f9f4b6-7fc6-4001-89c6-a7240209ef73",
"files": [],
"subMetas": {},
"userData": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "93f49f19-92c8-468b-a67d-b423f3be55f9",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "SlotRanking"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "094530e3-a444-4ada-a1f2-7d2141da235a",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "rankListItem"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "c50538f5-db13-41ea-b02d-08299cdd9a88",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "rewardHistoryListItem"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "700a6f2a-7bac-4ea3-86c2-e14928df32f6",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "rewardListItem"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "5c602474-bb9a-4277-a9ce-94bb99541f3b",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "selfRewardListItem"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "b10e1441-d351-49bb-b841-fb290059572d",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,102 @@
import { _decorator, UIRenderer, Component, Color, clamp, director, Director, Sprite, Label } from 'cc';
import { DEV, JSB } from 'cc/env';
const { ccclass, property, executeInEditMode, requireComponent, menu } = _decorator;
@ccclass
@executeInEditMode
@requireComponent(UIRenderer)
@menu('Public/Palette')
export class Palette extends Component {
@property
private _colorLB: Color = new Color(255, 255, 255, 255);
@property({ displayName: DEV && '↙ 左下' })
public get colorLB() { return this._colorLB };
public set colorLB(value: Color) {
this._colorLB = value;
this.updateColor();
}
@property
private _colorRB: Color = new Color(255, 255, 255, 255);
@property({ displayName: DEV && '↘ 右下' })
public get colorRB() { return this._colorRB };
public set colorRB(value: Color) {
this._colorRB = value;
this.updateColor();
}
@property
private _colorLT: Color = new Color(255, 255, 255, 255);
@property({ displayName: DEV && '↖ 左上' })
private get colorLT() { return this._colorLT };
private set colorLT(value: Color) {
this._colorLT = value;
this.updateColor();
}
@property
private _colorRT: Color = new Color(255, 255, 255, 255);
@property({ displayName: DEV && '↗ 右上' })
private get colorRT() { return this._colorRT };
private set colorRT(value: Color) {
this._colorRT = value;
this.updateColor();
}
@property
private _hueRatio: number = 1;
@property({ range: [0, 1], step: 0.01, slide: true, displayName: '🌈 色相' })
get hueRatio() { return this._hueRatio; }
set hueRatio(val) {
this._hueRatio = clamp(val, 0, 1);
this.updateHueRatio();
this.updateColor();
}
@property
private _darkness: number = 1;
@property({ range: [0, 1], step: 0.01, slide: true, displayName: '🌞 暗度' })
get darkness() { return this._darkness; }
set darkness(val) {
this._darkness = clamp(val, 0, 1);
this.updateColor();
}
private ur: UIRenderer = null;
private hue: number[] = [1, 1, 1]; //色相分量
protected onLoad() {
this.ur = this.node.getComponent(UIRenderer);
if (!(this.ur instanceof Sprite || this.ur instanceof Label)) {
console.warn('Palette只对Sprite和Label有效');
this.destroy();
return;
}
this.ur['_useVertexOpacity'] = true; //启用顶点透明度否则透明度只受color.a影响
}
protected onEnable() {
this.updateHueRatio();
director.once(Director.EVENT_AFTER_DRAW, this.updateColor, this);
}
protected onDisable() {
if (!this.ur['_renderData']) return;
let vb = this.ur['_renderData'].chunk.vb;
let color = this.ur.color;
vb[5] = vb[14] = vb[23] = vb[32] = color.r / 255;
vb[6] = vb[15] = vb[24] = vb[33] = color.g / 255;
vb[7] = vb[16] = vb[25] = vb[34] = color.b / 255;
vb[8] = vb[17] = vb[26] = vb[35] = color.a / 255;
}
private updateColor() {
let vb = this.ur['_renderData'].chunk.vb;
let lb = this._colorLB, rb = this._colorRB, lt = this._colorLT, rt = this._colorRT;
let d = this._darkness / 255, h = this.hue, r = h[0] * d, g = h[1] * d, b = h[2] * d;
vb[5] = lb.r * r; vb[6] = lb.g * g; vb[7] = lb.b * b; vb[8] = lb.a / 255;
vb[14] = rb.r * r; vb[15] = rb.g * g; vb[16] = rb.b * b; vb[17] = rb.a / 255;
vb[23] = lt.r * r; vb[24] = lt.g * g; vb[25] = lt.b * b; vb[26] = lt.a / 255;
vb[32] = rt.r * r; vb[33] = rt.g * g; vb[34] = rt.b * b; vb[35] = rt.a / 255;
}
private updateHueRatio(): void {
const step = 1 / 7;
let hueRatio = this._hueRatio;
if (hueRatio < step) this.hue = [1, hueRatio / step, 0];
else if (hueRatio < step * 2) this.hue = [2 - hueRatio / step, 1, 0];
else if (hueRatio < step * 3) this.hue = [0, 1, hueRatio / step - 2];
else if (hueRatio < step * 4) this.hue = [0, 4 - hueRatio / step, 1];
else if (hueRatio < 5 * step) this.hue = [hueRatio / step - 4, 0, 1];
else if (hueRatio < 6 * step) this.hue = [1, 0, 6 - hueRatio / step];
else { this.hue = [1, hueRatio / step - 6, hueRatio / step - 6]; }
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "11aa7c13-7832-4d35-aae9-daf89262e33c",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,337 @@
import { _decorator, Color, Component, Label, Node, Tween, tween } from 'cc';
import { VirtualScrollView } from './VScrollView';
import { Palette } from './Palette';
import { SlotRankingDataManager } from './SlotRankingDataManager';
import { callGameApiForRank, getGameId, truncateString } from 'db://assets/Loading/scripts/comm';
import { AudioManager } from 'db://assets/Loading/scripts/manager/AudioManager';
const { ccclass, property } = _decorator;
@ccclass('RankHistoryList')
export class RankHistoryList extends Component {
// ==================== 历史排行榜 ====================
rankHistoryList: Node = null; // 历史排行榜节点
rankHistoryLoadingNode: Node = null; // 历史记录加载节点
// 历史排行榜 - 翻页按钮
rightBtn: Node = null; // 右箭头按钮(下一期)
leftBtn: Node = null; // 左箭头按钮(上一期)
closeBtn: Node = null; // 关闭按钮
rankingHistoryListVScroll: VirtualScrollView = null; // 历史排行榜虚拟列表
selfInfo: Node = null; // 自己的信息节点
// 历史排行榜 - 日周月切换
rankHistoryRadioDWM: Node = null; // 历史记录日周月单选按钮父节点
rankHistoryRadioDayBtn: Node = null; // 历史记录日榜单选按钮
rankHistoryRadioWeekBtn: Node = null; // 历史记录周榜单选按钮
rankHistoryRadioMonthBtn: Node = null; // 历史记录月榜单选按钮
// 活动未开启提示
activityNotOpenTip: Node = null; // 活动未开启提示 label
currentHistoryType: string = '';
historyIndex: number = 1; // 历史记录索引1表示上一期最大为10
maxHistoryIndex: number = 10; // 最大历史记录数
availableTypes: Set<string> = new Set(); // 可用的类型
// 回调函数
onBack: () => void = null; // 返回到主列表
init(rankHistoryListNode: Node) {
this.rankHistoryList = rankHistoryListNode;
let titleChange = this.rankHistoryList.getChildByName('titleChange');
this.rightBtn = titleChange.getChildByName('rightBtn');
this.leftBtn = titleChange.getChildByName('leftBtn');
this.selfInfo = this.rankHistoryList.getChildByName('list').getChildByName('self');
this.rankHistoryLoadingNode = this.rankHistoryList.getChildByName('list').getChildByName('loading');
this.rankingHistoryListVScroll = this.rankHistoryList.getChildByName('list').getChildByName('vScroll').getComponent(VirtualScrollView);
this.rankHistoryRadioDWM = this.rankHistoryList.getChildByName('rankHistoryRadioDWM');
this.rankHistoryRadioDayBtn = this.rankHistoryRadioDWM.getChildByName('dayBtn');
this.rankHistoryRadioWeekBtn = this.rankHistoryRadioDWM.getChildByName('weekBtn');
this.rankHistoryRadioMonthBtn = this.rankHistoryRadioDWM.getChildByName('monthBtn');
this.activityNotOpenTip = this.rankHistoryList.getChildByName('list').getChildByName('activityNotOpenTip');
this.rankHistoryList.active = false;
this.rankHistoryLoadingNode.active = false;
this.activityNotOpenTip.active = false;
this.closeBtn = this.rankHistoryList.getChildByName('closeHistory');
this.rightBtn.on(Node.EventType.TOUCH_END, this.onClickRightBtn, this);
this.leftBtn.on(Node.EventType.TOUCH_END, this.onClickLeftBtn, this);
this.closeBtn.on(Node.EventType.TOUCH_END, this.closeRankHistoryPopup, this);
this.rankHistoryRadioDayBtn.on(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioDayBtn, this);
this.rankHistoryRadioWeekBtn.on(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioWeekBtn, this);
this.rankHistoryRadioMonthBtn.on(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioMonthBtn, this);
}
// ==================== 对外接口 ====================
async show(type: string) {
this.rankHistoryList.active = true;
this.updateAvailableTypes();
this.currentHistoryType = type;
this.historyIndex = 1;
this.updateHistoryArrows();
await this.loadHistoryData(this.currentHistoryType, this.historyIndex);
}
updateAvailableTypes() {
let rankList = SlotRankingDataManager.instance.rankList;
this.availableTypes.clear();
if (rankList && rankList.List) {
for (let item of rankList.List) {
this.availableTypes.add(item.Type);
}
}
}
isTypeAvailable(type: string): boolean {
return this.availableTypes.has(type);
}
showActivityNotOpenTip() {
this.activityNotOpenTip.active = true;
this.rankingHistoryListVScroll.setTotalCount(0);
}
hideActivityNotOpenTip() {
this.activityNotOpenTip.active = false;
}
hide() {
this.rankHistoryList.active = false;
}
// ==================== 历史记录逻辑 ====================
async loadHistoryData(type: string, index: number) {
this.setRankHistoryRadioBtn(type);
if (!this.isTypeAvailable(type)) {
console.log(`${type} 历史榜单活动未开启`);
this.rankHistoryLoadingNode.active = false;
this.refreshSelfRankingInfo(null);
this.showActivityNotOpenTip();
return;
}
this.hideActivityNotOpenTip();
this.rankingHistoryListVScroll.setTotalCount(0);
Tween.stopAllByTarget(this.rankHistoryLoadingNode);
this.rankHistoryLoadingNode.active = true;
tween(this.rankHistoryLoadingNode)
.by(0.3, { angle: 360 })
.repeatForever()
.start();
let historyDate = this.getHistoryDate(type, index);
let data = {
Type: type,
GameId: getGameId(),
Date: historyDate,
}
try {
let rankInfos = await callGameApiForRank('getRankInfos', data);
Tween.stopAllByTarget(this.rankHistoryLoadingNode);
this.rankHistoryLoadingNode.active = false;
this.openRankHistoryPopup(rankInfos);
this.refreshSelfRankingInfo(rankInfos.Self);
} catch (error) {
console.error('获取历史排行榜数据失败:', error);
Tween.stopAllByTarget(this.rankHistoryLoadingNode);
this.rankHistoryLoadingNode.active = false;
}
}
refreshSelfRankingInfo(selfInfo: any) {
if (!selfInfo) {
this.selfInfo.getChildByName('Rank').getChildByName('sp_1').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('sp_2').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('sp_3').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Uid').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Shop').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Win').getComponent(Label).string = '-';
return;
}
this.selfInfo.getChildByName('Rank').getChildByName('sp_1').active = selfInfo.Rank === 1;
this.selfInfo.getChildByName('Rank').getChildByName('sp_2').active = selfInfo.Rank === 2;
this.selfInfo.getChildByName('Rank').getChildByName('sp_3').active = selfInfo.Rank === 3;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = selfInfo.Rank >= 4;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = selfInfo.Rank.toString();
if (selfInfo.Rank === -1) {
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = true;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = '-';
}
this.selfInfo.getChildByName('Uid').getComponent(Label).string = truncateString(selfInfo.Uid);
this.selfInfo.getChildByName('Shop').getComponent(Label).string = SlotRankingDataManager.instance.getRankListServerId() || '-';
this.selfInfo.getChildByName('Win').getComponent(Label).string = selfInfo.Win.toString();
}
getHistoryDate(type: string, index: number): string {
let now = new Date();
let date = new Date(now);
if (type === 'day') {
date.setDate(date.getDate() - index);
} else if (type === 'week') {
date.setDate(date.getDate() - index * 7);
} else if (type === 'month') {
date.setMonth(date.getMonth() - index);
}
let year = date.getFullYear();
let month = (date.getMonth() + 1).toString();
let day = date.getDate().toString();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return `${year}${month}${day}`;
}
updateHistoryArrows() {
this.rightBtn.active = this.historyIndex > 1;
this.leftBtn.active = this.historyIndex < this.maxHistoryIndex;
}
openRankHistoryPopup(rankInfos: any) {
this.rankingHistoryListVScroll.setTotalCount(rankInfos.List.length);
this.rankingHistoryListVScroll.renderItemFn = (node: Node, idx: number) => {
let itemData = rankInfos.List[idx];
if (!itemData) {
return;
}
node.getChildByName('bg').active = idx % 2 === 0;
node.getChildByName('bg2').active = idx % 2 !== 0;
node.getChildByName('Rank').getChildByName('sp_1').active = idx === 0;
node.getChildByName('Rank').getChildByName('sp_2').active = idx === 1;
node.getChildByName('Rank').getChildByName('sp_3').active = idx === 2;
node.getChildByName('Rank').getChildByName('rankLab').active = idx >= 3;
node.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = (idx + 1).toString();
node.getChildByName('Uid').getComponent(Label).string = truncateString(itemData.Uid);
node.getChildByName('Shop').getComponent(Label).string = SlotRankingDataManager.instance.getRankListServerId() || '-';
node.getChildByName('Win').getComponent(Label).string = itemData.Win.toString();
}
this.rankingHistoryListVScroll.refreshList(rankInfos.List);
}
// ==================== 按钮状态管理 ====================
setRankHistoryRadioBtn(type: string) {
let selectedColor = new Color(219, 180, 180, 255);
let unselectedColor = new Color(197, 255, 175, 255);
this.setRadioBtnState(this.rankHistoryRadioDayBtn, type === 'day', selectedColor, unselectedColor);
this.setRadioBtnState(this.rankHistoryRadioWeekBtn, type === 'week', selectedColor, unselectedColor);
this.setRadioBtnState(this.rankHistoryRadioMonthBtn, type === 'month', selectedColor, unselectedColor);
}
setRadioBtnState(btn: Node, isSelected: boolean, selectedColor: Color, unselectedColor: Color) {
let check = btn.getChildByName('check');
let unCheck = btn.getChildByName('unCheck');
let label = btn.getChildByName('label');
let palette = label?.getComponent(Palette);
if (isSelected) {
check.active = true;
unCheck.active = false;
if (palette) {
palette.colorLB = selectedColor;
palette.colorRB = selectedColor;
}
} else {
check.active = false;
unCheck.active = true;
if (palette) {
palette.colorLB = unselectedColor;
palette.colorRB = unselectedColor;
}
}
}
// ==================== 按钮事件 ====================
async onClickLeftBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
if (this.historyIndex >= this.maxHistoryIndex) {
return;
}
this.historyIndex++;
this.updateHistoryArrows();
await this.loadHistoryData(this.currentHistoryType, this.historyIndex);
}
async onClickRightBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
if (this.historyIndex <= 1) {
return;
}
this.historyIndex--;
this.updateHistoryArrows();
await this.loadHistoryData(this.currentHistoryType, this.historyIndex);
}
async onClickRankHistoryRadioDayBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
if (this.currentHistoryType === 'day') {
return;
}
this.currentHistoryType = 'day';
this.historyIndex = 1;
this.updateHistoryArrows();
await this.loadHistoryData('day', this.historyIndex);
}
async onClickRankHistoryRadioWeekBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
if (this.currentHistoryType === 'week') {
return;
}
this.currentHistoryType = 'week';
this.historyIndex = 1;
this.updateHistoryArrows();
await this.loadHistoryData('week', this.historyIndex);
}
async onClickRankHistoryRadioMonthBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
if (this.currentHistoryType === 'month') {
return;
}
this.currentHistoryType = 'month';
this.historyIndex = 1;
this.updateHistoryArrows();
await this.loadHistoryData('month', this.historyIndex);
}
closeRankHistoryPopup() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onBack?.call(null);
}
onDestroy() {
this.rightBtn.off(Node.EventType.TOUCH_END, this.onClickRightBtn, this);
this.leftBtn.off(Node.EventType.TOUCH_END, this.onClickLeftBtn, this);
this.rankHistoryRadioDayBtn.off(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioDayBtn, this);
this.rankHistoryRadioWeekBtn.off(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioWeekBtn, this);
this.rankHistoryRadioMonthBtn.off(Node.EventType.TOUCH_END, this.onClickRankHistoryRadioMonthBtn, this);
this.closeBtn.off(Node.EventType.TOUCH_END, this.closeRankHistoryPopup, this);
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "29c8497d-e5f2-42c9-8c58-ce06ee470ef8",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,491 @@
import { _decorator, Button, Color, Component, Label, Node, Sprite, Tween, tween, UITransform, v3 } from 'cc';
import { VirtualScrollView } from './VScrollView';
import { Palette } from './Palette';
import { SlotRankingDataManager } from './SlotRankingDataManager';
import { callGameApiForRank, getGameId, truncateString } from 'db://assets/Loading/scripts/comm';
import { I18nManager } from 'db://assets/Loading/scripts/manager/I18nManager';
import { AudioManager } from 'db://assets/Loading/scripts/manager/AudioManager';
const { ccclass, property } = _decorator;
@ccclass('RankList')
export class RankList extends Component {
// ==================== 当前排行榜 ====================
msg_1: Node = null // 跑马灯信息
currentMarqueeIndex: number = 0; // 当前跑马灯文本索引
marqueeTexts: string[] = []; // 跑马灯文本数组
rankList: Node = null; // 当前排行榜节点
rankingEndTime: Node = null; // 排行榜结束时间节点
rankLoadingNode: Node = null; // 加载动画节点
rankingListVScroll: VirtualScrollView = null; // 排行榜虚拟列表
selfInfo: Node = null; // 自己的信息节点
// 当前排行榜 - 日周月切换
rankRadioDWM: Node = null; // 日周月单选按钮父节点
rankRadioDayBtn: Node = null; // 日榜单选按钮
rankRadioWeekBtn: Node = null; // 周榜单选按钮
rankRadioMonthBtn: Node = null; // 月榜单选按钮
rankingHistoryBtn: Node = null; // 历史记录按钮
rankingRewardBtn: Node = null; // 奖励按钮
// 活动未开启提示
activityNotOpenTip: Node = null; // 活动未开启提示 label
currentRankType: string = '';
countdownTimer: any = null; // 存储定时器
availableTypes: Set<string> = new Set(); // 可用的类型
// 回调函数
onShowHistory: (type: string) => void = null; // 跳转到历史记录
onShowReward: (type: string) => void = null; // 跳转到奖励列表
onClose: () => void = null; // 关闭主弹窗
init(rankListNode: Node) {
this.rankList = rankListNode;
this.msg_1 = this.rankList.getChildByName('msg').getChildByName('Mask').getChildByName('msg_1');
this.rankLoadingNode = this.rankList.getChildByName('list').getChildByName('loading');
this.rankingEndTime = this.rankList.getChildByName('endTime');
this.rankingListVScroll = this.rankList.getChildByName('list').getChildByName('vScroll').getComponent(VirtualScrollView);
this.selfInfo = this.rankList.getChildByName('list').getChildByName('self');
this.rankRadioDWM = this.rankList.getChildByName('rankRadioDWM');
this.rankRadioDayBtn = this.rankRadioDWM.getChildByName('dayBtn');
this.rankRadioWeekBtn = this.rankRadioDWM.getChildByName('weekBtn');
this.rankRadioMonthBtn = this.rankRadioDWM.getChildByName('monthBtn');
this.rankingHistoryBtn = this.rankList.getChildByName('history');
let radioTitle = this.rankList.getChildByName('radioTitle');
this.rankingRewardBtn = radioTitle.getChildByName('rewardBtn');
this.activityNotOpenTip = this.rankList.getChildByName('list').getChildByName('activityNotOpenTip');
this.rankList.active = false;
this.rankLoadingNode.active = false;
this.activityNotOpenTip.active = false;
this.rankingHistoryBtn.on(Node.EventType.TOUCH_END, this.onClickRankHistoryBtn, this);
this.rankingRewardBtn.on(Node.EventType.TOUCH_END, this.onClickRewardBtn, this);
this.rankRadioDayBtn.on(Node.EventType.TOUCH_END, this.onClickRankRadioDayBtn, this);
this.rankRadioWeekBtn.on(Node.EventType.TOUCH_END, this.onClickRankRadioWeekBtn, this);
this.rankRadioMonthBtn.on(Node.EventType.TOUCH_END, this.onClickRankRadioMonthBtn, this);
}
// ==================== 对外接口 ====================
async show(defaultType: string = 'day') {
this.rankList.active = true;
this.currentRankType = '';
this.updateRankButtonsAvailability();
await this.switchRankTab(defaultType);
}
hide() {
this.rankList.active = false;
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
// 停止跑马灯
if (this.msg_1 && this.msg_1.isValid) {
Tween.stopAllByTarget(this.msg_1);
this.msg_1.active = false;
}
this.marqueeTexts = [];
this.currentMarqueeIndex = 0;
}
getCurrentType(): string {
return this.currentRankType;
}
// ==================== 排行榜逻辑 ====================
isTypeAvailable(type: string): boolean {
return this.availableTypes.has(type);
}
showActivityNotOpenTip() {
this.activityNotOpenTip.active = true;
this.rankingListVScroll.setTotalCount(0);
this.rankingEndTime.getComponent(Label).string = "--:--:--";
}
hideActivityNotOpenTip() {
this.activityNotOpenTip.active = false;
}
async switchRankTab(type: string) {
if (this.currentRankType === type) {
return;
}
this.currentRankType = type;
this.setRankRadioBtn(type);
if (!this.isTypeAvailable(type)) {
console.log(`${type} 榜单活动未开启`);
this.rankLoadingNode.active = false;
if (this.msg_1 && this.msg_1.isValid) {
this.msg_1.active = false;
}
this.marqueeTexts = [];
this.currentMarqueeIndex = 0;
this.refreshSelfRankingInfo(null);
this.showActivityNotOpenTip();
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
return;
}
this.hideActivityNotOpenTip();
this.rankingListVScroll.setTotalCount(0);
Tween.stopAllByTarget(this.rankLoadingNode);
this.rankLoadingNode.active = true;
tween(this.rankLoadingNode)
.by(0.3, { angle: 360 })
.repeatForever()
.start();
let currentRankInfo = SlotRankingDataManager.instance.getRankInfoByType(type);
if (this.msg_1 && this.msg_1.isValid) {
Tween.stopAllByTarget(this.msg_1);
}
this.setupMarquee(currentRankInfo);
this.setRankingEndTime(type);
let data = {
Type: type,
GameId: getGameId(),
Date: this.getCurrentDateString(),
}
try {
let rankInfos = await callGameApiForRank('getRankInfos', data);
Tween.stopAllByTarget(this.rankLoadingNode);
this.rankLoadingNode.active = false;
this.openRankingPopup(rankInfos);
} catch (error) {
console.error('获取排行榜数据失败:', error);
this.showActivityNotOpenTip();
Tween.stopAllByTarget(this.rankLoadingNode);
this.rankLoadingNode.active = false;
}
}
// ==================== 跑马灯逻辑 ====================
setupMarquee(currentRankInfo: any) {
if (!this.msg_1 || !this.msg_1.isValid) return;
// 获取活动数据
let rewardsCount = currentRankInfo.Rewards?.length || 0;
let spinLimit = currentRankInfo.SpinLimit || 0;
let betLimit = currentRankInfo.BetLimit || 0;
// 获取翻译文本并替换XX
let text1 = I18nManager.instance.t('During the event, participate in designated games and rank in the top XX by winnings to receive generous rewards!');
let text2 = I18nManager.instance.t('Accumulate XX bets or a total wager of XX to participate in the event');
// 替换第一段文本中的XX为Rewards的length
text1 = text1.replace('XX', rewardsCount.toString());
// 替换第二段文本中的两个XXSpinLimit和BetLimit
text2 = text2.replace(/XX/, spinLimit.toString()).replace(/XX/, (betLimit / 10000).toString());
// 保存两段文本
this.marqueeTexts = [text1, text2];
this.currentMarqueeIndex = 0;
// 显示跑马灯并播放第一段文本
this.msg_1.active = true;
this.playMarquee();
}
playMarquee() {
if (!this.msg_1 || !this.msg_1.isValid || this.marqueeTexts.length === 0) return;
let labelComp = this.msg_1.getComponent(Label);
if (!labelComp) return;
// 获取当前要显示的文本
let currentText = this.marqueeTexts[this.currentMarqueeIndex];
// 确保Label的overflow设置为NONE以便完整显示文本
labelComp.overflow = Label.Overflow.NONE;
labelComp.string = currentText;
// 强制更新Label的渲染数据确保宽度正确计算
labelComp.updateRenderData(true);
// 等待下一帧更新UITransform
this.scheduleOnce(() => {
if (!this.msg_1 || !this.msg_1.isValid) return;
// 再次强制更新以确保宽度准确
labelComp.updateRenderData(true);
let labelLength = labelComp.node.getComponent(UITransform).width;
// 设置初始位置
this.msg_1.setPosition(-450, this.msg_1.position.y, this.msg_1.position.z);
let endX = -labelLength;
let duration = Math.max(3, (-450 + labelLength) / 80);
// 启动跑马灯动画
Tween.stopAllByTarget(this.msg_1);
tween(this.msg_1)
.delay(1)
.to(duration, { position: v3(endX, this.msg_1.position.y, this.msg_1.position.z) })
.call(() => {
// 切换到下一段文本
this.currentMarqueeIndex = (this.currentMarqueeIndex + 1) % this.marqueeTexts.length;
// 播放下一段文本
this.playMarquee();
})
.start();
}, 0);
}
// ==================== 排行榜列表逻辑 ====================
openRankingPopup(rankInfos: any) {
this.rankingListVScroll.setTotalCount(rankInfos.List.length);
this.rankingListVScroll.renderItemFn = (node: Node, idx: number) => {
let itemData = rankInfos.List[idx];
node.getChildByName('bg').active = idx % 2 === 0;
node.getChildByName('bg2').active = idx % 2 !== 0;
node.getChildByName('Rank').getChildByName('sp_1').active = idx === 0;
node.getChildByName('Rank').getChildByName('sp_2').active = idx === 1;
node.getChildByName('Rank').getChildByName('sp_3').active = idx === 2;
node.getChildByName('Rank').getChildByName('rankLab').active = idx >= 3;
node.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = itemData.Rank.toString();
node.getChildByName('Uid').getComponent(Label).string = truncateString(itemData.Uid);
node.getChildByName('Shop').getComponent(Label).string = SlotRankingDataManager.instance.getRankListServerId() || '-';
node.getChildByName('Win').getComponent(Label).string = itemData.Win.toString();
}
this.rankingListVScroll.refreshList(rankInfos.List);
this.refreshSelfRankingInfo(rankInfos.Self);
}
refreshSelfRankingInfo(selfInfo: any) {
if (!selfInfo) {
this.selfInfo.getChildByName('Rank').getChildByName('sp_1').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('sp_2').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('sp_3').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = false;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Uid').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Shop').getComponent(Label).string = '-';
this.selfInfo.getChildByName('Win').getComponent(Label).string = '-';
return;
}
this.selfInfo.getChildByName('Rank').getChildByName('sp_1').active = selfInfo.Rank === 1;
this.selfInfo.getChildByName('Rank').getChildByName('sp_2').active = selfInfo.Rank === 2;
this.selfInfo.getChildByName('Rank').getChildByName('sp_3').active = selfInfo.Rank === 3;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = selfInfo.Rank >= 4;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = selfInfo.Rank.toString();
if (selfInfo.Rank === -1) {
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').active = true;
this.selfInfo.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = '-';
}
this.selfInfo.getChildByName('Uid').getComponent(Label).string = truncateString(selfInfo.Uid);
this.selfInfo.getChildByName('Shop').getComponent(Label).string = SlotRankingDataManager.instance.getRankListServerId() || '-';
this.selfInfo.getChildByName('Win').getComponent(Label).string = selfInfo.Win.toString();
}
// ==================== 按钮状态管理 ====================
updateRankButtonsAvailability() {
let rankList = SlotRankingDataManager.instance.rankList;
this.availableTypes.clear();
if (rankList && rankList.List) {
for (let item of rankList.List) {
this.availableTypes.add(item.Type);
}
}
this.updateButtonAvailability(this.rankRadioDayBtn);
this.updateButtonAvailability(this.rankRadioWeekBtn);
this.updateButtonAvailability(this.rankRadioMonthBtn);
}
updateButtonAvailability(btn: Node) {
btn.active = true;
let button = btn.getComponent(Button);
if (button) {
button.interactable = true;
}
let check = btn.getChildByName('check');
let unCheck = btn.getChildByName('unCheck');
let whiteColor = Color.WHITE;
if (check) {
let checkSprite = check.getComponent(Sprite);
if (checkSprite) {
checkSprite.color = whiteColor;
}
}
if (unCheck) {
let unCheckSprite = unCheck.getComponent(Sprite);
if (unCheckSprite) {
unCheckSprite.color = whiteColor;
}
}
}
setRankRadioBtn(type: string) {
let selectedColor = new Color(219, 180, 180, 255);
let unselectedColor = new Color(197, 255, 175, 255);
this.setRadioBtnState(this.rankRadioDayBtn, type === 'day', selectedColor, unselectedColor);
this.setRadioBtnState(this.rankRadioWeekBtn, type === 'week', selectedColor, unselectedColor);
this.setRadioBtnState(this.rankRadioMonthBtn, type === 'month', selectedColor, unselectedColor);
}
setRadioBtnState(btn: Node, isSelected: boolean, selectedColor: Color, unselectedColor: Color) {
let check = btn.getChildByName('check');
let unCheck = btn.getChildByName('unCheck');
let label = btn.getChildByName('label');
let palette = label?.getComponent(Palette);
if (isSelected) {
check.active = true;
unCheck.active = false;
if (palette) {
palette.colorLB = selectedColor;
palette.colorRB = selectedColor;
}
} else {
check.active = false;
unCheck.active = true;
if (palette) {
palette.colorLB = unselectedColor;
palette.colorRB = unselectedColor;
}
}
}
// ==================== 倒计时功能 ====================
setRankingEndTime(type: string) {
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
let endTime = SlotRankingDataManager.instance.getRankEndTimeByType(type);
if (!endTime) {
this.rankingEndTime.getComponent(Label).string = "--:--:--";
return;
}
this.updateCountdown(endTime);
this.countdownTimer = setInterval(() => {
this.updateCountdown(endTime);
}, 1000);
}
// 1. 客户端可定时通过HTTP请求轮询服务器定期拉取活动状态或结束时间如每分钟或每次切换排行榜时如果发现状态变为停止则立即处理。
// 2. 在每次需要用到活动信息前(如展示排行榜、下注等),都重新请求活动状态信息,避免缓存已过期的信息。
// 3. 可以在服务器接口响应中增加“活动状态”字段每次请求都返回当前的活动状态如active、stopped客户端据此判定。
// 4. 如有WebSocket等实时通道可让服务器主动推送“活动已结束”通知客户端收到后立刻更新活动状态并做相应提示。
// 5. 若客户端检测到接口数据异常(如活动相关接口返回错误代码、空列表或特定标记等),也可判定活动可能已停止并刷新状态。
updateCountdown(endTime: number) {
let now = Math.floor(Date.now() / 1000);
let remainingSeconds = endTime - now;
if (remainingSeconds <= 0) {
this.rankingEndTime.getComponent(Label).string = "--:--:--";
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
return;
}
let timeStr = this.formatCountdown(remainingSeconds);
this.rankingEndTime.getComponent(Label).string = I18nManager.instance.t('Countdown to end') + ' : ' + timeStr;
}
formatCountdown(seconds: number): string {
let days = Math.floor(seconds / 86400);
let hours = Math.floor((seconds % 86400) / 3600);
let minutes = Math.floor((seconds % 3600) / 60);
let secs = seconds % 60;
if (days >= 1) {
return `${days}d ${hours}h ${minutes}min ${secs}s`;
} else {
return `${hours}h ${minutes}min ${secs}s`;
}
}
// ==================== 按钮事件 ====================
onClickRankRadioDayBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRankTab('day');
}
onClickRankRadioWeekBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRankTab('week');
}
onClickRankRadioMonthBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRankTab('month');
}
onClickRankHistoryBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onShowHistory?.call(null, this.currentRankType || 'day');
}
onClickRewardBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onShowReward?.call(null, this.currentRankType || 'day');
}
closeRankingPopup() {
this.onClose?.call(null);
}
// ==================== 工具方法 ====================
getCurrentDateString(): string {
let now = new Date();
let year = now.getFullYear();
let month = (now.getMonth() + 1).toString();
let day = now.getDate().toString();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return `${year}${month}${day}`;
}
onDestroy() {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
this.rankingHistoryBtn.off(Node.EventType.TOUCH_END, this.onClickRankHistoryBtn, this);
this.rankingRewardBtn.off(Node.EventType.TOUCH_END, this.onClickRewardBtn, this);
this.rankRadioDayBtn.off(Node.EventType.TOUCH_END, this.onClickRankRadioDayBtn, this);
this.rankRadioWeekBtn.off(Node.EventType.TOUCH_END, this.onClickRankRadioWeekBtn, this);
this.rankRadioMonthBtn.off(Node.EventType.TOUCH_END, this.onClickRankRadioMonthBtn, this);
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "ecd05ce0-a6f1-4905-a43a-6f2c486cca21",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,122 @@
import { _decorator, Component, Label, Node, Tween, tween } from 'cc';
import { VirtualScrollView } from './VScrollView';
import { I18nManager } from 'db://assets/Loading/scripts/manager/I18nManager';
import { callGameApiForRank } from 'db://assets/Loading/scripts/comm';
import { AudioManager } from 'db://assets/Loading/scripts/manager/AudioManager';
const { ccclass, property } = _decorator;
@ccclass('RewardHistoryList')
export class RewardHistoryList extends Component {
rewardHistoryList: Node = null; // 历史记录列表节点
rewardHistoryLoadingNode: Node = null; // 历史记录加载节点
closeBtn: Node = null; // 关闭按钮
rewardHistoryListVScroll: VirtualScrollView = null; // 历史记录列表虚拟列表
historyData: any[] = [];
// 回调函数
onBack: () => void = null;
init(rewardHistoryListNode: Node) {
this.rewardHistoryList = rewardHistoryListNode;
this.rewardHistoryLoadingNode = this.rewardHistoryList.getChildByName('list').getChildByName('loading');
this.rewardHistoryListVScroll = this.rewardHistoryList.getChildByName('list').getChildByName('vScroll').getComponent(VirtualScrollView);
this.closeBtn = this.rewardHistoryList.getChildByName('closeHistory');
this.rewardHistoryList.active = false;
this.rewardHistoryLoadingNode.active = false;
this.closeBtn.on(Node.EventType.TOUCH_END, this.onClickCloseBtn, this);
}
// ==================== 对外接口 ====================
async show() {
this.rewardHistoryList.active = true;
await this.loadHistoryData();
}
hide() {
this.rewardHistoryList.active = false;
}
// ==================== 历史记录逻辑 ====================
async loadHistoryData() {
this.rewardHistoryListVScroll.setTotalCount(0);
Tween.stopAllByTarget(this.rewardHistoryLoadingNode);
this.rewardHistoryLoadingNode.active = true;
tween(this.rewardHistoryLoadingNode)
.by(0.3, { angle: 360 })
.repeatForever()
.start();
try {
let historyData = await callGameApiForRank('getRewardsHistory', {});
Tween.stopAllByTarget(this.rewardHistoryLoadingNode);
this.rewardHistoryLoadingNode.active = false;
this.openHistoryPopup(historyData);
} catch (error) {
console.error('获取奖励历史记录失败:', error);
Tween.stopAllByTarget(this.rewardHistoryLoadingNode);
this.rewardHistoryLoadingNode.active = false;
}
}
openHistoryPopup(historyData: any) {
if (!historyData || !historyData.List || historyData.List.length === 0) {
this.rewardHistoryListVScroll.setTotalCount(0);
return;
}
this.historyData = historyData.List;
this.rewardHistoryListVScroll.setTotalCount(this.historyData.length);
this.rewardHistoryListVScroll.renderItemFn = (node: Node, idx: number) => {
let itemData = this.historyData[idx];
if (!itemData) {
return;
}
let typeMap: { [key: string]: string } = {
'day': I18nManager.instance.t('Daily Ranking'),
'week': I18nManager.instance.t('Weekly Ranking'),
'month': I18nManager.instance.t('Monthly Ranking')
};
let typeLabel = typeMap[itemData.Type] || itemData.Type;
node.getChildByName('Activity').getComponent(Label).string = typeLabel;
node.getChildByName('ActivityTime').getComponent(Label).string = itemData.Date;
node.getChildByName('Rank').getChildByName('sp_1').active = itemData.Rank === 1;
node.getChildByName('Rank').getChildByName('sp_2').active = itemData.Rank === 2;
node.getChildByName('Rank').getChildByName('sp_3').active = itemData.Rank === 3;
node.getChildByName('Rank').getChildByName('rankLab').active = itemData.Rank >= 4;
node.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = itemData.Rank.toString();
node.getChildByName('Win').getComponent(Label).string = itemData.Rewards.toString();
let received = node.getChildByName('HasReceived').getChildByName('received');
let unReceived = node.getChildByName('HasReceived').getChildByName('unReceived');
received.active = true;
unReceived.active = false;
}
this.rewardHistoryListVScroll.refreshList(this.historyData);
}
// ==================== 按钮事件 ====================
onClickCloseBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onBack?.call(null);
}
onDestroy() {
if (this.closeBtn) {
this.closeBtn.off(Node.EventType.TOUCH_END, this.onClickCloseBtn, this);
}
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "f1e2776d-f0b6-4ffb-a779-bc43897792d9",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,515 @@
import { _decorator, Button, Color, Component, Label, Node, Sprite, Tween, tween } from 'cc';
import { VirtualScrollView } from './VScrollView';
import { Palette } from './Palette';
import { SlotRankingDataManager } from './SlotRankingDataManager';
import { callGameApiForRank } from 'db://assets/Loading/scripts/comm';
import { AudioManager } from 'db://assets/Loading/scripts/manager/AudioManager';
const { ccclass, property } = _decorator;
@ccclass('RewardList')
export class RewardList extends Component {
rewardList: Node = null; // 奖励列表节点
rewardLoadingNode: Node = null; // 奖励加载动画节点
// 奖励列表 - 虚拟列表
rewardListVScroll: VirtualScrollView = null; // 奖励列表虚拟列表
// 奖励列表 - 日周月切换
rewardRadioDWM: Node = null; // 奖励日周月单选按钮父节点
rewardRadioDayBtn: Node = null; // 奖励日榜单选按钮
rewardRadioWeekBtn: Node = null; // 奖励周榜单选按钮
rewardRadioMonthBtn: Node = null; // 奖励月榜单选按钮
rewardHistoryBtn: Node = null; // 历史记录按钮
rewardReceivedBtn: Node = null; // 一键领奖按钮
rewardBackBtn: Node = null; // 返回排行榜按钮
selfRewardListVScroll: VirtualScrollView = null; // 自己的奖励列表虚拟列表
// 活动未开启提示
activityNotOpenTip: Node = null; // 活动未开启提示 label
currentRewardType: string = '';
countdownTimer: any = null; // 存储定时器
availableTypes: Set<string> = new Set(); // 可用的类型
rewardsData: any = null; // 奖励数据
selfRewardsList: any[] = []; // 自己的奖励列表
isReceiving: boolean = false; // 是否正在领取中
slotScene: any = null; // SlotScene 引用
// 回调函数
onShowHistory: (type: string) => void = null; // 跳转到领奖记录
onShowRank: (type: string) => void = null; // 跳转回排行榜
onClose: () => void = null; // 关闭主弹窗
init(rewardListNode: Node) {
this.rewardList = rewardListNode;
this.rewardLoadingNode = this.rewardList.getChildByName('list').getChildByName('loading');
this.rewardListVScroll = this.rewardList.getChildByName('list').getChildByName('vScroll').getComponent(VirtualScrollView);
this.rewardRadioDWM = this.rewardList.getChildByName('rewardRadioDWM');
this.rewardRadioDayBtn = this.rewardRadioDWM.getChildByName('dayBtn');
this.rewardRadioWeekBtn = this.rewardRadioDWM.getChildByName('weekBtn');
this.rewardRadioMonthBtn = this.rewardRadioDWM.getChildByName('monthBtn');
this.rewardHistoryBtn = this.rewardList.getChildByName('history');
this.rewardReceivedBtn = this.rewardList.getChildByName('receiveBtn');
let radioTitle = this.rewardList.getChildByName('radioTitle');
this.rewardBackBtn = radioTitle.getChildByName('rankBtn');
this.selfRewardListVScroll = this.rewardList.getChildByName('selfRewardList').getChildByName('vScroll').getComponent(VirtualScrollView);
this.activityNotOpenTip = this.rewardList.getChildByName('list').getChildByName('activityNotOpenTip');
this.rewardList.active = false;
this.rewardLoadingNode.active = false;
this.activityNotOpenTip.active = false;
this.rewardHistoryBtn.on(Node.EventType.TOUCH_END, this.onClickHistoryBtn, this);
this.rewardReceivedBtn.on(Node.EventType.TOUCH_END, this.onClickReceiveBtn, this);
this.rewardBackBtn.on(Node.EventType.TOUCH_END, this.onClickBackBtn, this);
this.rewardRadioDayBtn.on(Node.EventType.TOUCH_END, this.onClickRewardRadioDayBtn, this);
this.rewardRadioWeekBtn.on(Node.EventType.TOUCH_END, this.onClickRewardRadioWeekBtn, this);
this.rewardRadioMonthBtn.on(Node.EventType.TOUCH_END, this.onClickRewardRadioMonthBtn, this);
}
// ==================== 对外接口 ====================
setSlotScene(slotScene: any) {
this.slotScene = slotScene;
}
async show(defaultType: string = 'day') {
this.rewardList.active = true;
this.currentRewardType = '';
this.updateRewardButtonsAvailability();
await this.switchRewardTab(defaultType);
}
hide() {
this.rewardList.active = false;
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
}
getCurrentType(): string {
return this.currentRewardType;
}
// ==================== 奖励列表逻辑 ====================
isTypeAvailable(type: string): boolean {
return this.availableTypes.has(type);
}
showActivityNotOpenTip() {
this.activityNotOpenTip.active = true;
this.rewardListVScroll.setTotalCount(0);
}
async switchRewardTab(type: string) {
if (this.currentRewardType === type) {
return;
}
this.currentRewardType = type;
this.setRewardRadioBtn(type);
if (!this.isTypeAvailable(type)) {
console.log(`${type} 奖励榜单活动未开启`);
this.rewardLoadingNode.active = false;
this.showActivityNotOpenTip();
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
return;
}
this.activityNotOpenTip.active = false;
this.rewardListVScroll.setTotalCount(0);
this.selfRewardListVScroll.setTotalCount(0);
Tween.stopAllByTarget(this.rewardLoadingNode);
this.rewardLoadingNode.active = true;
tween(this.rewardLoadingNode)
.by(0.3, { angle: 360 })
.repeatForever()
.start();
this.setRewardEndTime(type);
try {
let rewardsData = await callGameApiForRank('rewardsList', {});
this.rewardsData = rewardsData;
Tween.stopAllByTarget(this.rewardLoadingNode);
this.rewardLoadingNode.active = false;
this.openRewardPopup();
this.openSelfRewardPopup();
} catch (error) {
console.error('获取奖励列表数据失败:', error);
this.showActivityNotOpenTip();
Tween.stopAllByTarget(this.rewardLoadingNode);
this.rewardLoadingNode.active = false;
}
}
openRewardPopup() {
let rankList = SlotRankingDataManager.instance.rankList;
if (!rankList || !rankList.List) {
this.rewardListVScroll.setTotalCount(0);
return;
}
let currentActivity = rankList.List.find((item: any) => item.Type === this.currentRewardType);
if (!currentActivity || !currentActivity.Rewards || currentActivity.Rewards.length === 0) {
this.rewardListVScroll.setTotalCount(0);
return;
}
let rewards = currentActivity.Rewards;
this.rewardListVScroll.setTotalCount(rewards.length);
this.rewardListVScroll.renderItemFn = (node: Node, idx: number) => {
let rewardAmount = rewards[idx];
if (rewardAmount === undefined) {
return;
}
let rank = idx + 1;
node.getChildByName('bg').active = idx % 2 === 0;
node.getChildByName('bg2').active = idx % 2 !== 0;
node.getChildByName('Rank').getChildByName('sp_1').active = rank === 1;
node.getChildByName('Rank').getChildByName('sp_2').active = rank === 2;
node.getChildByName('Rank').getChildByName('sp_3').active = rank === 3;
node.getChildByName('Rank').getChildByName('rankLab').active = rank >= 4;
node.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = rank.toString();
node.getChildByName('Win').getComponent(Label).string = rewardAmount.toString();
}
this.rewardListVScroll.refreshList(rewards);
}
openSelfRewardPopup() {
if (!this.rewardsData) {
this.selfRewardListVScroll.setTotalCount(0);
return;
}
this.selfRewardsList = [];
if (this.rewardsData.DayRanks && this.rewardsData.DayRanks.length > 0) {
for (let item of this.rewardsData.DayRanks) {
this.selfRewardsList.push({ ...item, TypeLabel: '日榜' });
}
}
if (this.rewardsData.WeekRanks && this.rewardsData.WeekRanks.length > 0) {
for (let item of this.rewardsData.WeekRanks) {
this.selfRewardsList.push({ ...item, TypeLabel: '周榜' });
}
}
if (this.rewardsData.MonthRanks && this.rewardsData.MonthRanks.length > 0) {
for (let item of this.rewardsData.MonthRanks) {
this.selfRewardsList.push({ ...item, TypeLabel: '月榜' });
}
}
if (this.selfRewardsList.length === 0) {
this.selfRewardListVScroll.setTotalCount(0);
return;
}
this.selfRewardListVScroll.setTotalCount(this.selfRewardsList.length);
this.selfRewardListVScroll.renderItemFn = (node: Node, idx: number) => {
let itemData = this.selfRewardsList[idx];
if (!itemData) {
return;
}
node.getChildByName('Activity').getComponent(Label).string = itemData.TypeLabel;
let activityTime = itemData.Id.split('_')[0];
node.getChildByName('ActivityTime').getComponent(Label).string = activityTime;
node.getChildByName('Rank').getChildByName('sp_1').active = itemData.Rank === 1;
node.getChildByName('Rank').getChildByName('sp_2').active = itemData.Rank === 2;
node.getChildByName('Rank').getChildByName('sp_3').active = itemData.Rank === 3;
node.getChildByName('Rank').getChildByName('rankLab').active = itemData.Rank >= 4;
node.getChildByName('Rank').getChildByName('rankLab').getComponent(Label).string = itemData.Rank.toString();
node.getChildByName('Win').getComponent(Label).string = itemData.Rewards.toString();
let received = node.getChildByName('HasReceived').getChildByName('received');
let unReceived = node.getChildByName('HasReceived').getChildByName('unReceived');
received.active = itemData.IsPrize;
unReceived.active = !itemData.IsPrize;
}
this.selfRewardListVScroll.refreshList(this.selfRewardsList);
}
// ==================== 一键领奖 ====================
async receiveAllRewards() {
if (this.isReceiving) {
console.log('正在领取中,请稍候...');
return;
}
// 收集所有未领取的奖励ID
let pendingIds: string[] = [];
for (let item of this.selfRewardsList) {
if (!item.IsPrize) {
pendingIds.push(item.Id);
}
}
if (pendingIds.length === 0) {
console.log('没有可领取的奖励');
return;
}
this.isReceiving = true;
this.setButtonsInteractable(false);
try {
// 一次性发送所有ID
let result = await callGameApiForRank('getRewards', { Ids: pendingIds });
console.log('一键领奖成功', result);
// 处理返回的成功ID数组
if (result && result.Ids && Array.isArray(result.Ids)) {
// 更新成功领取的item状态
for (let successId of result.Ids) {
let item = this.selfRewardsList.find((item: any) => item.Id === successId);
if (item) {
item.IsPrize = true;
}
}
// 刷新列表显示
this.selfRewardListVScroll.refreshList(this.selfRewardsList);
// 更新 slotScene 的 balance
if (result.Balance !== undefined && this.slotScene && this.slotScene.slotBar) {
this.slotScene.slotBar.setBalance(result.Balance);
}
// 播放音效
AudioManager.instance.playSFX("Coin_Drop");
console.log(`成功领取 ${result.Ids.length} 个奖励,新余额: ${result.Balance}`);
} else {
console.warn('领奖返回数据格式异常', result);
}
} catch (error) {
console.error('一键领奖失败', error);
} finally {
this.isReceiving = false;
this.setButtonsInteractable(true);
}
}
setButtonsInteractable(interactable: boolean) {
let receiveBtn = this.rewardReceivedBtn.getComponent(Button);
if (receiveBtn) {
receiveBtn.interactable = interactable;
}
let backBtn = this.rewardBackBtn.getComponent(Button);
if (backBtn) {
backBtn.interactable = interactable;
}
let historyBtn = this.rewardHistoryBtn.getComponent(Button);
if (historyBtn) {
historyBtn.interactable = interactable;
}
let dayBtn = this.rewardRadioDayBtn.getComponent(Button);
if (dayBtn) {
dayBtn.interactable = interactable;
}
let weekBtn = this.rewardRadioWeekBtn.getComponent(Button);
if (weekBtn) {
weekBtn.interactable = interactable;
}
let monthBtn = this.rewardRadioMonthBtn.getComponent(Button);
if (monthBtn) {
monthBtn.interactable = interactable;
}
}
// ==================== 按钮状态管理 ====================
updateRewardButtonsAvailability() {
let rankList = SlotRankingDataManager.instance.rankList;
this.availableTypes.clear();
if (rankList && rankList.List) {
for (let item of rankList.List) {
this.availableTypes.add(item.Type);
}
}
this.updateButtonAvailability(this.rewardRadioDayBtn);
this.updateButtonAvailability(this.rewardRadioWeekBtn);
this.updateButtonAvailability(this.rewardRadioMonthBtn);
}
updateButtonAvailability(btn: Node) {
btn.active = true;
let button = btn.getComponent(Button);
if (button) {
button.interactable = true;
}
let check = btn.getChildByName('check');
let unCheck = btn.getChildByName('unCheck');
let whiteColor = Color.WHITE;
if (check) {
let checkSprite = check.getComponent(Sprite);
if (checkSprite) {
checkSprite.color = whiteColor;
}
}
if (unCheck) {
let unCheckSprite = unCheck.getComponent(Sprite);
if (unCheckSprite) {
unCheckSprite.color = whiteColor;
}
}
}
setRewardRadioBtn(type: string) {
let selectedColor = new Color(57, 1, 3, 255);
let unselectedColor = new Color(37, 78, 21, 255);
this.setRadioBtnState(this.rewardRadioDayBtn, type === 'day', selectedColor, unselectedColor);
this.setRadioBtnState(this.rewardRadioWeekBtn, type === 'week', selectedColor, unselectedColor);
this.setRadioBtnState(this.rewardRadioMonthBtn, type === 'month', selectedColor, unselectedColor);
}
setRadioBtnState(btn: Node, isSelected: boolean, selectedColor: Color, unselectedColor: Color) {
let check = btn.getChildByName('check');
let unCheck = btn.getChildByName('unCheck');
let label = btn.getChildByName('label');
let palette = label?.getComponent(Palette);
if (isSelected) {
check.active = true;
unCheck.active = false;
if (palette) {
palette.colorLB = selectedColor;
palette.colorRB = selectedColor;
}
} else {
check.active = false;
unCheck.active = true;
if (palette) {
palette.colorLB = unselectedColor;
palette.colorRB = unselectedColor;
}
}
}
// ==================== 倒计时功能 ====================
setRewardEndTime(type: string) {
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
let endTime = SlotRankingDataManager.instance.getRankEndTimeByType(type);
this.updateCountdown(endTime);
this.countdownTimer = setInterval(() => {
this.updateCountdown(endTime);
}, 1000);
}
updateCountdown(endTime: number) {
let now = Math.floor(Date.now() / 1000);
let remainingSeconds = endTime - now;
if (remainingSeconds <= 0) {
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
}
return;
}
let timeStr = this.formatCountdown(remainingSeconds);
}
formatCountdown(seconds: number): string {
let days = Math.floor(seconds / 86400);
let hours = Math.floor((seconds % 86400) / 3600);
let minutes = Math.floor((seconds % 3600) / 60);
let secs = seconds % 60;
if (days >= 1) {
return `${days}d ${hours}h ${minutes}min ${secs}s`;
} else {
return `${hours}h ${minutes}min ${secs}s`;
}
}
// ==================== 按钮事件 ====================
onClickRewardRadioDayBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRewardTab('day');
}
onClickRewardRadioWeekBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRewardTab('week');
}
onClickRewardRadioMonthBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.switchRewardTab('month');
}
onClickHistoryBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onShowHistory?.call(null, this.currentRewardType || 'day');
}
onClickReceiveBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.receiveAllRewards();
}
onClickBackBtn() {
AudioManager.instance.playSFX("Common_Button_Click");
this.onShowRank?.call(null, this.currentRewardType || 'day');
}
onDestroy() {
clearInterval(this.countdownTimer);
this.countdownTimer = null;
this.rewardHistoryBtn.off(Node.EventType.TOUCH_END, this.onClickHistoryBtn, this);
this.rewardReceivedBtn.off(Node.EventType.TOUCH_END, this.onClickReceiveBtn, this);
this.rewardBackBtn.off(Node.EventType.TOUCH_END, this.onClickBackBtn, this);
this.rewardRadioDayBtn.off(Node.EventType.TOUCH_END, this.onClickRewardRadioDayBtn, this);
this.rewardRadioWeekBtn.off(Node.EventType.TOUCH_END, this.onClickRewardRadioWeekBtn, this);
this.rewardRadioMonthBtn.off(Node.EventType.TOUCH_END, this.onClickRewardRadioMonthBtn, this);
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "822e651d-8015-44fa-90d7-2cd5a93cb6af",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,348 @@
import { _decorator, Button, Color, Component, EventTouch, Node, sp, Sprite, tween, UITransform, v3, Vec3 } from 'cc';
import { RankList } from './RankList';
import { RankHistoryList } from './RankHistoryList';
import { RewardList } from './RewardList';
import { RewardHistoryList } from './RewardHistoryList';
import { SlotRankingDataManager } from './SlotRankingDataManager';
import { callGameApiForRank, getGameId } from 'db://assets/Loading/scripts/comm';
import { AudioManager } from 'db://assets/Loading/scripts/manager/AudioManager';
const { ccclass, property } = _decorator;
@ccclass('SlotRanking')
export class SlotRanking extends Component {
// ==================== 排行榜入口 ====================
rankingBtn: Node = null; // 排行榜入口按钮
// ==================== 主弹窗节点 ====================
rankingRewardNode: Node = null; // 排行榜弹窗主节点
@property(RankList)
rankList: RankList = null;
@property(RankHistoryList)
rankHistoryList: RankHistoryList = null;
@property(RewardList)
rewardList: RewardList = null;
@property(RewardHistoryList)
rewardHistoryList: RewardHistoryList = null;
// 设计分辨率
DESIGN_WIDTH: number = 1080;
DESIGN_HEIGHT: number = 1920;
slotScene: any = null; // SlotScene 引用
isMove: boolean = false; // 是否是拖动状态
isClick: boolean = false; // 是否是点击状态
startPos: Vec3 = v3(432, 650, 0);
touchStartPos: Vec3 = v3(0, 0, 0); // 触摸开始位置(世界坐标)
nodeStartPos: Vec3 = v3(0, 0, 0); // 节点开始位置
uiTransform: UITransform = null; // 节点UI变换组件
parentUITransform: UITransform = null; // 父节点UI变换组件
async onLoad() {
this.rankingBtn = this.node.getChildByName("rankingBtn");
this.rankingRewardNode = this.node.getChildByName("rankingRewardNode");
this.rankingBtn.active = false;
this.rankingRewardNode.active = false;
try {
let rankList = await callGameApiForRank("ranklist", { GameId: getGameId() });
if (!rankList || !rankList.List || rankList.List.length === 0) {
return;
}
SlotRankingDataManager.instance.rankList = rankList;
} catch (error) {
return;
}
this.rankingBtn = this.node.getChildByName("rankingBtn");
this.rankingRewardNode = this.node.getChildByName("rankingRewardNode");
this.uiTransform = this.rankingBtn.getComponent(UITransform);
this.parentUITransform = this.rankingBtn.parent.getComponent(UITransform);
this.initComponents();
this.rankingBtn.setPosition(this.startPos);
this.rankingBtn.active = SlotRankingDataManager.instance.getRankListStatus() === 0 || SlotRankingDataManager.instance.getRankListStatus() === 1;
this.rankingBtn.getChildByName('icon').getComponent(sp.Skeleton).color = SlotRankingDataManager.instance.getRankListStatus() === 0 ? Color.WHITE : Color.GRAY;
this.rankingBtn.getComponent(Button).interactable = SlotRankingDataManager.instance.getRankListStatus() === 0;
this.rankingBtn.on(Node.EventType.TOUCH_START, this.onTouchStart, this);
this.rankingBtn.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
this.rankingBtn.on(Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
this.rankingBtn.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
this.rankingRewardNode.active = false;
}
initComponents() {
this.rankList.init(this.rankingRewardNode.getChildByName('rankList'));
this.rankList.onShowHistory = (type: string) => {
this.showRankHistoryList(type);
};
this.rankList.onShowReward = (type: string) => {
this.showRewardListFromRank(type);
};
this.rankList.onClose = () => {
this.closeRankingPopup();
};
this.rankHistoryList.init(this.rankingRewardNode.getChildByName('rankHistoryList'));
this.rankHistoryList.onBack = () => {
this.showRankList();
};
this.rewardList.init(this.rankingRewardNode.getChildByName('rewardList'));
this.rewardList.onShowRank = (type: string) => {
this.showRankListFromReward(type);
};
this.rewardList.onShowHistory = () => {
this.showRewardHistoryList();
};
this.rewardHistoryList.onBack = () => {
this.showRewardList();
};
this.rewardHistoryList.init(this.rankingRewardNode.getChildByName('rewardHistoryList'));
this.rewardList.onClose = () => {
this.closeRankingPopup();
};
}
setSlotScene(slotScene: any) {
this.slotScene = slotScene;
// 将 slotScene 引用传递给 RewardList
if (this.rewardList) {
this.rewardList.setSlotScene(slotScene);
}
}
// 检查是否可以点击排行榜按钮
canClickRankingBtn(): boolean {
if (!this.slotScene) return true;
// 如果正在滚动,不可点击
if (this.slotScene.slotGame && this.slotScene.slotGame.isScroll()) {
return false;
}
// 如果正在自动旋转,不可点击
if (this.slotScene.isAutoSpin) {
return false;
}
if (this.slotScene.isFreeSpin) {
return false;
}
if (this.slotScene.isFeatureBuySpin) {
return false;
}
return true;
}
// ==================== 触摸事件处理 ====================
onTouchStart(event: EventTouch) {
this.isMove = false;
this.isClick = true;
let touchPos = event.getUILocation();
if (this.parentUITransform) {
let localPos = this.parentUITransform.convertToNodeSpaceAR(v3(touchPos.x, touchPos.y, 0));
this.touchStartPos.set(localPos);
} else {
this.touchStartPos.set(v3(touchPos.x, touchPos.y, 0));
}
this.nodeStartPos.set(this.rankingBtn.position);
}
onTouchMove(event: EventTouch) {
if (!this.isClick) return;
this.isMove = true;
let touchPos = event.getUILocation();
let currentTouchPos;
if (this.parentUITransform) {
currentTouchPos = this.parentUITransform.convertToNodeSpaceAR(v3(touchPos.x, touchPos.y, 0));
} else {
currentTouchPos = v3(touchPos.x, touchPos.y, 0);
}
let deltaX = currentTouchPos.x - this.touchStartPos.x;
let deltaY = currentTouchPos.y - this.touchStartPos.y;
let newX = this.nodeStartPos.x + deltaX;
let newY = this.nodeStartPos.y + deltaY;
let clampedPos = this.clampPosition(newX, newY);
this.rankingBtn.setPosition(v3(clampedPos.x, clampedPos.y, 0));
}
onTouchCancel(event: EventTouch) {
if (this.isClick && !this.isMove) return;
if (this.isMove) {
this.snapToEdge();
}
this.isMove = false;
this.isClick = false;
}
onTouchEnd(event: EventTouch) {
if (this.isMove) {
this.snapToEdge();
this.isMove = false;
this.isClick = false;
return;
}
if (this.isClick) {
// 检查是否可以点击
if (!this.canClickRankingBtn()) {
this.isMove = false;
this.isClick = false;
return;
}
this.handleClickEvent();
}
this.isMove = false;
this.isClick = false;
}
clampPosition(newX: number, newY: number): { x: number, y: number } {
if (this.uiTransform) {
let nodeWidth = this.uiTransform.width;
let nodeHeight = this.uiTransform.height;
let anchorX = this.uiTransform.anchorX;
let anchorY = this.uiTransform.anchorY;
let leftBound = -this.DESIGN_WIDTH / 2 + nodeWidth * anchorX;
let rightBound = this.DESIGN_WIDTH / 2 - nodeWidth * (1 - anchorX);
let bottomBound = -this.DESIGN_HEIGHT / 2 + nodeHeight * anchorY;
let topBound = this.DESIGN_HEIGHT / 2 - nodeHeight * (1 - anchorY);
newX = Math.max(leftBound, Math.min(rightBound, newX));
newY = Math.max(bottomBound, Math.min(topBound, newY));
} else {
let halfWidth = this.DESIGN_WIDTH / 2;
let halfHeight = this.DESIGN_HEIGHT / 2;
newX = Math.max(-halfWidth, Math.min(halfWidth, newX));
newY = Math.max(-halfHeight, Math.min(halfHeight, newY));
}
return { x: newX, y: newY };
}
snapToEdge() {
let currentPos = this.rankingBtn.position;
let screenCenterX = 0;
let targetX: number;
if (this.uiTransform) {
let nodeWidth = this.uiTransform.width;
let anchorX = this.uiTransform.anchorX;
if (currentPos.x > screenCenterX) {
targetX = this.DESIGN_WIDTH / 2 - nodeWidth * (1 - anchorX);
} else {
targetX = -this.DESIGN_WIDTH / 2 + nodeWidth * anchorX;
}
} else {
let edgeMargin = 20;
if (currentPos.x > screenCenterX) {
targetX = this.DESIGN_WIDTH / 2 - edgeMargin;
} else {
targetX = -this.DESIGN_WIDTH / 2 + edgeMargin;
}
}
tween(this.rankingBtn)
.to(0.05, { position: v3(targetX, currentPos.y, 0) })
.start();
}
// ==================== 主弹窗控制 ====================
async handleClickEvent() {
AudioManager.instance.playSFX("Common_Button_Click");
this.rankingRewardNode.active = true;
await this.showRankList('day');
}
async showRankList(defaultType: string = 'day') {
this.rankHistoryList.hide();
this.rewardList.hide();
this.rewardHistoryList.hide();
await this.rankList.show(defaultType);
}
showRankHistoryList(type: string) {
this.rankList.hide();
this.rewardList.hide();
this.rewardHistoryList.hide();
this.rankHistoryList.show(type);
}
async showRankListFromReward(rewardType: string) {
this.rewardList.hide();
this.rankHistoryList.hide();
this.rewardHistoryList.hide();
await this.rankList.show(rewardType);
}
showRewardHistoryList() {
this.rankList.hide();
this.rankHistoryList.hide();
this.rewardList.hide();
this.rewardHistoryList.show();
}
async showRewardList(defaultType: string = 'day') {
this.rankList.hide();
this.rankHistoryList.hide();
this.rewardHistoryList.hide();
await this.rewardList.show(defaultType);
}
async showRewardListFromRank(rankType: string) {
this.rankList.hide();
this.rankHistoryList.hide();
this.rewardHistoryList.hide();
await this.rewardList.show(rankType);
}
closeRankingPopup() {
this.rankingRewardNode.active = false;
this.rankList.hide();
this.rankHistoryList.hide();
this.rewardList.hide();
this.rewardHistoryList.hide();
}
setStartPosition(pos: Vec3) {
this.startPos.set(pos);
this.rankingBtn.setPosition(pos);
}
onDestroy() {
this.rankingBtn.off(Node.EventType.TOUCH_START, this.onTouchStart, this);
this.rankingBtn.off(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
this.rankingBtn.off(Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
this.rankingBtn.off(Node.EventType.TOUCH_END, this.onTouchEnd, this);
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "e9415bc6-3200-4c15-a5d0-f4b2339c16ec",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,79 @@
export class SlotRankingDataManager {
static _instance: SlotRankingDataManager = null;
static get instance(): SlotRankingDataManager {
if (!this._instance) {
this._instance = new SlotRankingDataManager();
}
return this._instance;
}
_rankList: any = null;
set rankList(list: any) { this._rankList = list; }
get rankList(): any { return this._rankList; }
getRankListStatus(): number {
if (!this._rankList || !this._rankList.List || this._rankList.List.length === 0) {
return 2;
}
let hasEnabled = false; // 是否有启用的
let hasMaintenance = false; // 是否有维护的
for (let item of this._rankList.List) {
if (item.Status === 0) {
hasEnabled = true;
break;
} else if (item.Status === 1) {
hasMaintenance = true;
}
}
if (hasEnabled) {
return 0;
}
if (hasMaintenance) {
return 1;
}
return 2;
}
getRankListServerId(): string | null {
if (!this._rankList || !this._rankList.List || this._rankList.List.length === 0) {
return null;
}
let id = this._rankList.List[0].Id;
if (!id) {
return null;
}
let parts = id.split('_');
if (parts.length >= 3) {
return parts[2];
}
return null;
}
getRankEndTimeByType(type: string): number | null {
if (!this._rankList || !this._rankList.List || this._rankList.List.length === 0) {
return null;
}
let item = this._rankList.List.find((item: any) => item.Type === type);
return item ? item.EndTime : null;
}
getRankInfoByType(type: string): any | null {
if (!this._rankList || !this._rankList.List || this._rankList.List.length === 0) {
return null;
}
let item = this._rankList.List.find((item: any) => item.Type === type);
return item || null;
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "54eb3ccb-500c-4075-b108-6b21d7cfe65e",
"files": [],
"subMetas": {},
"userData": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "f94d0735-0c94-4946-9d3f-545a3522f123",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,219 @@
//@ts-ignore
import { _decorator, Component, Node, EventTouch, Vec2, Label, Tween, tween, Vec3, settings, Sorting2D, RichText, sys } from 'cc';
const { ccclass } = _decorator;
const hasSorting2d = Sorting2D !== undefined;
if (!hasSorting2d) {
// console.warn(`❌当前引擎版本不支持Sorting2D组件如果需要请切换到3.8.7及以上版本`);
}
/**
* UI节点的渲染排序层级
* @param sortingNode Node
* @param sortingLayer number
* @param sortingOrder number
*/
export function changeUISortingLayer(sortingNode: Node, sortingLayer: number, sortingOrder?: number) {
if (!hasSorting2d) {
return;
}
let sortingLayers = settings.querySettings('engine', 'sortingLayers') as any[];
//编辑器bug,默认有default,但是读取出来没有,需要自己配置一个后才会有默认数据.
if (!sortingLayers || sortingLayers.length === 0) {
sortingLayers = [{ id: 0, value: 0, name: 'default' }];
}
const result = sortingLayers.find(layer => layer.value === sortingLayer);
//如果没有找到对应的layer,则使用引擎内置默认层,并给出警告
if (!result) {
console.warn(`❌未找到对应的sortingLayer:${sortingLayer},请检查是否已在项目设置中配置该层级。将使用默认层级代替。`);
sortingLayer = sortingLayers[0].value;
}
const sort2d = sortingNode.getComponent(Sorting2D) || sortingNode.addComponent(Sorting2D);
if (sort2d) {
//@ts-ignore
sort2d.sortingLayer = sortingLayer;
if (sortingOrder !== undefined) {
//@ts-ignore
sort2d.sortingOrder = sortingOrder;
}
}
}
/**
* item
*
*/
@ccclass('VScrollViewItem')
export class VScrollViewItem extends Component {
/** 当前 item 对应的数据索引 */
public dataIndex: number = -1;
public useItemClickEffect: boolean = true;
/** 点击回调(由 VirtualScrollView 注入) */
public onClickCallback: ((index: number) => void) | null = null;
/** 长按回调(由 VirtualScrollView 注入) */
public onLongPressCallback: ((index: number) => void) | null = null;
/** 长按触发时长(秒) */
public longPressTime: number = 0.6;
private _touchStartNode: Node | null = null;
private _isCanceled: boolean = false;
private _startPos: Vec2 = new Vec2();
private _moveThreshold: number = 40; // 滑动阈值
private _clickThreshold: number = 10; // 点击阈值
private _longPressTimer: number = 0; // 长按计时器
private _isLongPressed: boolean = false; // 是否已触发长按
onLoad() {
// 一次性注册事件,生命周期内不变
this.node.on(Node.EventType.TOUCH_START, this._onTouchStart, this);
this.node.on(Node.EventType.TOUCH_MOVE, this._onTouchMove, this);
this.node.on(Node.EventType.TOUCH_END, this._onTouchEnd, this);
this.node.on(Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);
}
protected start(): void {
// this.onSortLayer();
}
onDestroy() {
// 清理事件
this.node.off(Node.EventType.TOUCH_START, this._onTouchStart, this);
this.node.off(Node.EventType.TOUCH_MOVE, this._onTouchMove, this);
this.node.off(Node.EventType.TOUCH_END, this._onTouchEnd, this);
this.node.off(Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);
}
/**
* Label ,item的每个lable组件都独立一个orderNumber,
* @param node
*/
public onSortLayer() {
let orderNumber = 1;
const labels = this.node.getComponentsInChildren(Label);
for (let i = 0; i < labels.length; i++) {
changeUISortingLayer(labels[i].node, 0, orderNumber);
orderNumber++;
}
}
/** 关闭渲染分层 */
public offSortLayer() {
let orderNumber = 0;
const labels = this.node.getComponentsInChildren(Label);
for (let i = 0; i < labels.length; i++) {
changeUISortingLayer(labels[i].node, 0, orderNumber);
// const item = labels[i];
// const sort2d = item.node.getComponent(Sorting2D);
// sort2d && (sort2d.enabled = false);
// orderNumber++;
}
}
/** 外部调用:更新数据索引 */
public setDataIndex(index: number) {
this.dataIndex = index;
}
protected update(dt: number): void {
// 如果正在触摸且未取消,累加长按计时
if (this._touchStartNode && !this._isCanceled && !this._isLongPressed) {
this._longPressTimer += dt;
if (this._longPressTimer >= this.longPressTime) {
this._triggerLongPress();
}
}
}
private _triggerLongPress() {
this._isLongPressed = true;
if (this.onLongPressCallback) {
this.onLongPressCallback(this.dataIndex);
}
// 触发长按后恢复缩放
this._restoreScale();
}
private _onTouchStart(e: EventTouch) {
// console.log("_onTouchStart");
this._touchStartNode = this.node;
this._isCanceled = false;
this._isLongPressed = false;
this._longPressTimer = 0;
e.getLocation(this._startPos);
// 缩放反馈(假设第一个子节点是内容容器)
if (this.useItemClickEffect && this.node.children.length > 0) {
this.node.setScale(0.95, 0.95);
}
}
private _onTouchMove(e: EventTouch) {
if (this._isCanceled) return;
const movePos = e.getLocation();
const dx = movePos.x - this._startPos.x;
const dy = movePos.y - this._startPos.y;
const dist = Math.sqrt(dx * dx + dy * dy);
// 超过阈值认为是滑动,取消点击和长按
if (dist > this._moveThreshold) {
this._isCanceled = true;
this._restoreScale();
this._touchStartNode = null;
}
}
private _onTouchEnd(e: EventTouch) {
if (this._isCanceled) {
this._reset();
return;
}
// 如果已经触发了长按,不再触发点击
if (this._isLongPressed) {
this._reset();
return;
}
this._restoreScale();
const endPos = e.getLocation();
const dx = endPos.x - this._startPos.x;
const dy = endPos.y - this._startPos.y;
const dist = Math.sqrt(dx * dx + dy * dy);
// 移动距离小于阈值才算点击
if (dist < this._clickThreshold && this._touchStartNode === this.node) {
if (this.onClickCallback) {
this.onClickCallback(this.dataIndex);
}
}
this._reset();
}
private _onTouchCancel(e: EventTouch) {
this._restoreScale();
this._reset();
}
private _restoreScale() {
if (this.useItemClickEffect && this.node.children.length > 0) {
this.node.setScale(1.0, 1.0);
}
}
private _reset() {
this._touchStartNode = null;
this._isCanceled = false;
this._longPressTimer = 0;
this._isLongPressed = false;
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "eb01f13e-2ad1-4d80-9974-008ca1553138",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "ac8502dd-4f1c-4de7-b639-a4ce95f8fb08",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "4a074098-ef4f-4f6a-b8c9-1c75ffbe94ba",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,132 @@
icon.png
size: 1127,322
format: RGBA8888
filter: Linear,Linear
repeat: none
42
rotate: true
xy: 952, 165
size: 155, 80
orig: 200, 112
offset: 26, 9
index: -1
a/看图王批量图片转换结果/-qkNJhy_0019_图层-30
rotate: true
xy: 857, 165
size: 155, 93
orig: 200, 112
offset: 22, 11
index: -1
a/看图王批量图片转换结果/-qkNJhy_0020_图层-28
rotate: true
xy: 843, 7
size: 155, 94
orig: 200, 112
offset: 22, 10
index: -1
a/看图王批量图片转换结果/-qkNJhy_0021_图层-26
rotate: false
xy: 162, 8
size: 157, 94
orig: 200, 112
offset: 21, 10
index: -1
a/看图王批量图片转换结果/-qkNJhy_0022_图层-24
rotate: true
xy: 1032, 12
size: 151, 92
orig: 200, 112
offset: 24, 12
index: -1
a/看图王批量图片转换结果/-qkNJhy_0023_图层-22
rotate: true
xy: 939, 8
size: 155, 91
orig: 200, 112
offset: 21, 12
index: -1
a/看图王批量图片转换结果/-qkNJhy_0024_图层-20
rotate: true
xy: 764, 164
size: 156, 91
orig: 200, 112
offset: 21, 12
index: -1
a/看图王批量图片转换结果/-qkNJhy_0025_图层-18
rotate: true
xy: 670, 164
size: 156, 92
orig: 200, 112
offset: 21, 11
index: -1
a/看图王批量图片转换结果/-qkNJhy_0027_图层-14
rotate: true
xy: 1034, 170
size: 150, 91
orig: 200, 112
offset: 26, 12
index: -1
a/看图王批量图片转换结果/-qkNJhy_0029_图层-10
rotate: false
xy: 2, 8
size: 158, 94
orig: 200, 112
offset: 20, 10
index: -1
a/看图王批量图片转换结果/-qkNJhy_0030_图层-8
rotate: false
xy: 495, 51
size: 157, 94
orig: 200, 112
offset: 21, 10
index: -1
a/看图王批量图片转换结果/-qkNJhy_0031_图层-6
rotate: true
xy: 574, 163
size: 157, 94
orig: 200, 112
offset: 21, 10
index: -1
a/看图王批量图片转换结果/-qkNJhy_0032_图层-4
rotate: true
xy: 749, 6
size: 156, 92
orig: 200, 112
offset: 20, 12
index: -1
a/看图王批量图片转换结果/-qkNJhy_0033_图层-2
rotate: true
xy: 654, 5
size: 156, 93
orig: 200, 112
offset: 21, 10
index: -1
hu
rotate: false
xy: 321, 2
size: 172, 128
orig: 180, 129
offset: 0, 0
index: -1
long
rotate: true
xy: 220, 132
size: 188, 178
orig: 191, 180
offset: 2, 1
index: -1
qiu
rotate: true
xy: 400, 147
size: 173, 172
orig: 175, 174
offset: 1, 1
index: -1
qiu2
rotate: false
xy: 2, 104
size: 216, 216
orig: 218, 218
offset: 1, 1
index: -1

View File

@ -0,0 +1,12 @@
{
"ver": "1.0.0",
"importer": "*",
"imported": true,
"uuid": "40a78051-01cd-4985-87d6-06379fccc65f",
"files": [
".atlas",
".json"
],
"subMetas": {},
"userData": {}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "9c23e37c-aa91-406e-95ea-5a0e324ff93e",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4@6c48a",
"displayName": "icon",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4@f9941",
"displayName": "icon",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 2,
"trimY": 2,
"width": 1123,
"height": 318,
"rawWidth": 1127,
"rawHeight": 322,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-561.5,
-159,
0,
561.5,
-159,
0,
-561.5,
159,
0,
561.5,
159,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
2,
320,
1125,
320,
2,
2,
1125,
2
],
"nuv": [
0.001774622892635315,
0.006211180124223602,
0.9982253771073647,
0.006211180124223602,
0.001774622892635315,
0.9937888198757764,
0.9982253771073647,
0.9937888198757764
],
"minPos": [
-561.5,
-159,
0
],
"maxPos": [
561.5,
159,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "de6e593a-8af8-4f91-a6c6-3fcf5926f6f4@6c48a"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "b171bd89-273f-45ba-bde4-249b6962f615",
"files": [],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "b9e25a78-98c2-42a5-83bb-516d22a5604c",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "b9e25a78-98c2-42a5-83bb-516d22a5604c@6c48a",
"displayName": "btn_dt",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "b9e25a78-98c2-42a5-83bb-516d22a5604c",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "b9e25a78-98c2-42a5-83bb-516d22a5604c@f9941",
"displayName": "btn_dt",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 1,
"trimY": 0,
"width": 216,
"height": 237,
"rawWidth": 217,
"rawHeight": 237,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-108,
-118.5,
0,
108,
-118.5,
0,
-108,
118.5,
0,
108,
118.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
1,
237,
217,
237,
1,
0,
217,
0
],
"nuv": [
0.004608294930875576,
0,
1,
0,
0.004608294930875576,
1,
1,
1
],
"minPos": [
-108,
-118.5,
0
],
"maxPos": [
108,
118.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "b9e25a78-98c2-42a5-83bb-516d22a5604c@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "b9e25a78-98c2-42a5-83bb-516d22a5604c@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305@6c48a",
"displayName": "ic_jiantou_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305@f9941",
"displayName": "ic_jiantou_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 61,
"height": 74,
"rawWidth": 61,
"rawHeight": 74,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-30.5,
-37,
0,
30.5,
-37,
0,
-30.5,
37,
0,
30.5,
37,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
74,
61,
74,
0,
0,
61,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-30.5,
-37,
0
],
"maxPos": [
30.5,
37,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "e24d5bb3-6583-44c4-b7c7-ffaa8c8c6305@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2@6c48a",
"displayName": "ic_jiantou_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2@f9941",
"displayName": "ic_jiantou_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 58,
"height": 73,
"rawWidth": 58,
"rawHeight": 73,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-29,
-36.5,
0,
29,
-36.5,
0,
-29,
36.5,
0,
29,
36.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
73,
58,
73,
0,
0,
58,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-29,
-36.5,
0
],
"maxPos": [
29,
36.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "d5ebea81-4248-4dc6-8fcb-589e7a4a9bc2@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "593b6976-7307-431c-bdc4-631765de366a",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "593b6976-7307-431c-bdc4-631765de366a@6c48a",
"displayName": "ic_jz",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "593b6976-7307-431c-bdc4-631765de366a",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "593b6976-7307-431c-bdc4-631765de366a@f9941",
"displayName": "ic_jz",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 100,
"height": 100,
"rawWidth": 100,
"rawHeight": 100,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-50,
-50,
0,
50,
-50,
0,
-50,
50,
0,
50,
50,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
100,
100,
100,
0,
0,
100,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-50,
-50,
0
],
"maxPos": [
50,
50,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "593b6976-7307-431c-bdc4-631765de366a@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "593b6976-7307-431c-bdc4-631765de366a@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f@6c48a",
"displayName": "jz_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f@f9941",
"displayName": "jz_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 1.5,
"trimX": 0,
"trimY": 0,
"width": 1073,
"height": 83,
"rawWidth": 1073,
"rawHeight": 86,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-536.5,
-41.5,
0,
536.5,
-41.5,
0,
-536.5,
41.5,
0,
536.5,
41.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
86,
1073,
86,
0,
3,
1073,
3
],
"nuv": [
0,
0.03488372093023256,
1,
0.03488372093023256,
0,
1,
1,
1
],
"minPos": [
-536.5,
-41.5,
0
],
"maxPos": [
536.5,
41.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "3f3b7b12-34fc-47a9-859c-7c8d084ae64f@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa@6c48a",
"displayName": "jz_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa@f9941",
"displayName": "jz_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 1.5,
"trimX": 0,
"trimY": 0,
"width": 1073,
"height": 83,
"rawWidth": 1073,
"rawHeight": 86,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-536.5,
-41.5,
0,
536.5,
-41.5,
0,
-536.5,
41.5,
0,
536.5,
41.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
86,
1073,
86,
0,
3,
1073,
3
],
"nuv": [
0,
0.03488372093023256,
1,
0.03488372093023256,
0,
1,
1,
1
],
"minPos": [
-536.5,
-41.5,
0
],
"maxPos": [
536.5,
41.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "7c164458-0479-4e78-a2e8-9c4f4eaf49fa@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "2080dd01-e043-402b-8b3a-b1a1ed9574a5",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "2080dd01-e043-402b-8b3a-b1a1ed9574a5@6c48a",
"displayName": "jz_03",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "2080dd01-e043-402b-8b3a-b1a1ed9574a5",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "2080dd01-e043-402b-8b3a-b1a1ed9574a5@f9941",
"displayName": "jz_03",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 945,
"height": 1162,
"rawWidth": 945,
"rawHeight": 1162,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-472.5,
-581,
0,
472.5,
-581,
0,
-472.5,
581,
0,
472.5,
581,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
1162,
945,
1162,
0,
0,
945,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-472.5,
-581,
0
],
"maxPos": [
472.5,
581,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "2080dd01-e043-402b-8b3a-b1a1ed9574a5@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "2080dd01-e043-402b-8b3a-b1a1ed9574a5@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "c8673caf-b43a-48e3-b1b9-1372123f59ca",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "c8673caf-b43a-48e3-b1b9-1372123f59ca@6c48a",
"displayName": "jz_04",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "c8673caf-b43a-48e3-b1b9-1372123f59ca",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "c8673caf-b43a-48e3-b1b9-1372123f59ca@f9941",
"displayName": "jz_04",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 945,
"height": 863,
"rawWidth": 945,
"rawHeight": 863,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-472.5,
-431.5,
0,
472.5,
-431.5,
0,
-472.5,
431.5,
0,
472.5,
431.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
863,
945,
863,
0,
0,
945,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-472.5,
-431.5,
0
],
"maxPos": [
472.5,
431.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "c8673caf-b43a-48e3-b1b9-1372123f59ca@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "c8673caf-b43a-48e3-b1b9-1372123f59ca@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "0619ba34-c60c-434d-9153-e301bf4c490e",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "0619ba34-c60c-434d-9153-e301bf4c490e@6c48a",
"displayName": "jz_05",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "0619ba34-c60c-434d-9153-e301bf4c490e",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "0619ba34-c60c-434d-9153-e301bf4c490e@f9941",
"displayName": "jz_05",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 53,
"height": 358,
"rawWidth": 53,
"rawHeight": 358,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-26.5,
-179,
0,
26.5,
-179,
0,
-26.5,
179,
0,
26.5,
179,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
358,
53,
358,
0,
0,
53,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-26.5,
-179,
0
],
"maxPos": [
26.5,
179,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "0619ba34-c60c-434d-9153-e301bf4c490e@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "0619ba34-c60c-434d-9153-e301bf4c490e@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d@6c48a",
"displayName": "jz_06",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d@f9941",
"displayName": "jz_06",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 53,
"height": 358,
"rawWidth": 53,
"rawHeight": 358,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-26.5,
-179,
0,
26.5,
-179,
0,
-26.5,
179,
0,
26.5,
179,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
358,
53,
358,
0,
0,
53,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-26.5,
-179,
0
],
"maxPos": [
26.5,
179,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "56f27dea-ea94-44b9-9e5f-95b7a2b92e1d@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "807e941e-42a9-450d-8568-2f37d63dfa56",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "807e941e-42a9-450d-8568-2f37d63dfa56@6c48a",
"displayName": "lhb_btn_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "807e941e-42a9-450d-8568-2f37d63dfa56",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "807e941e-42a9-450d-8568-2f37d63dfa56@f9941",
"displayName": "lhb_btn_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 285,
"height": 108,
"rawWidth": 285,
"rawHeight": 108,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-142.5,
-54,
0,
142.5,
-54,
0,
-142.5,
54,
0,
142.5,
54,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
108,
285,
108,
0,
0,
285,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-142.5,
-54,
0
],
"maxPos": [
142.5,
54,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "807e941e-42a9-450d-8568-2f37d63dfa56@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "807e941e-42a9-450d-8568-2f37d63dfa56@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "fc844223-cc11-416a-9019-be9ff4e74cc5",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "fc844223-cc11-416a-9019-be9ff4e74cc5@6c48a",
"displayName": "lhb_btn_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "fc844223-cc11-416a-9019-be9ff4e74cc5",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "fc844223-cc11-416a-9019-be9ff4e74cc5@f9941",
"displayName": "lhb_btn_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 285,
"height": 108,
"rawWidth": 285,
"rawHeight": 108,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-142.5,
-54,
0,
142.5,
-54,
0,
-142.5,
54,
0,
142.5,
54,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
108,
285,
108,
0,
0,
285,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-142.5,
-54,
0
],
"maxPos": [
142.5,
54,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "fc844223-cc11-416a-9019-be9ff4e74cc5@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "fc844223-cc11-416a-9019-be9ff4e74cc5@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a@6c48a",
"displayName": "lhb_btn_03",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a@f9941",
"displayName": "lhb_btn_03",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 505,
"height": 140,
"rawWidth": 505,
"rawHeight": 140,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-252.5,
-70,
0,
252.5,
-70,
0,
-252.5,
70,
0,
252.5,
70,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
140,
505,
140,
0,
0,
505,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-252.5,
-70,
0
],
"maxPos": [
252.5,
70,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "76f8933d-dc09-49e9-9249-db7a0bd9ad7a@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "b77bd8f1-7c08-4f64-bc13-503cf458c08e",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "b77bd8f1-7c08-4f64-bc13-503cf458c08e@6c48a",
"displayName": "lhb_btn_close",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "b77bd8f1-7c08-4f64-bc13-503cf458c08e",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "b77bd8f1-7c08-4f64-bc13-503cf458c08e@f9941",
"displayName": "lhb_btn_close",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 109,
"height": 109,
"rawWidth": 109,
"rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-54.5,
-54.5,
0,
54.5,
-54.5,
0,
-54.5,
54.5,
0,
54.5,
54.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
109,
109,
109,
0,
0,
109,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-54.5,
-54.5,
0
],
"maxPos": [
54.5,
54.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "b77bd8f1-7c08-4f64-bc13-503cf458c08e@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "b77bd8f1-7c08-4f64-bc13-503cf458c08e@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "57b82869-63dd-4e83-9d66-187cbfd4725b",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "57b82869-63dd-4e83-9d66-187cbfd4725b@6c48a",
"displayName": "lhb_db_xinxi",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "57b82869-63dd-4e83-9d66-187cbfd4725b",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "57b82869-63dd-4e83-9d66-187cbfd4725b@f9941",
"displayName": "lhb_db_xinxi",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1080,
"height": 59,
"rawWidth": 1080,
"rawHeight": 59,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-540,
-29.5,
0,
540,
-29.5,
0,
-540,
29.5,
0,
540,
29.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
59,
1080,
59,
0,
0,
1080,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-540,
-29.5,
0
],
"maxPos": [
540,
29.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "57b82869-63dd-4e83-9d66-187cbfd4725b@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "57b82869-63dd-4e83-9d66-187cbfd4725b@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f@6c48a",
"displayName": "lhb_hz_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f@f9941",
"displayName": "lhb_hz_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 62,
"height": 62,
"rawWidth": 62,
"rawHeight": 62,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-31,
-31,
0,
31,
-31,
0,
-31,
31,
0,
31,
31,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
62,
62,
62,
0,
0,
62,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-31,
-31,
0
],
"maxPos": [
31,
31,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "3c5f22b2-9c54-4aa7-854d-9d435e727a4f@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d@6c48a",
"displayName": "lhb_hz_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d@f9941",
"displayName": "lhb_hz_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 62,
"height": 61,
"rawWidth": 62,
"rawHeight": 61,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-31,
-30.5,
0,
31,
-30.5,
0,
-31,
30.5,
0,
31,
30.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
61,
62,
61,
0,
0,
62,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-31,
-30.5,
0
],
"maxPos": [
31,
30.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "5b5977b4-43c2-49d4-bd4c-d69eda0f7f5d@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52@6c48a",
"displayName": "lhb_hz_03",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52@f9941",
"displayName": "lhb_hz_03",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 62,
"height": 61,
"rawWidth": 62,
"rawHeight": 61,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-31,
-30.5,
0,
31,
-30.5,
0,
-31,
30.5,
0,
31,
30.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
61,
62,
61,
0,
0,
62,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-31,
-30.5,
0
],
"maxPos": [
31,
30.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "eed2cfea-6574-4872-a0bc-47bc4ccc1e52@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2@6c48a",
"displayName": "lhb_ic_cha",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2@f9941",
"displayName": "lhb_ic_cha",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 54,
"height": 52,
"rawWidth": 54,
"rawHeight": 52,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-27,
-26,
0,
27,
-26,
0,
-27,
26,
0,
27,
26,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
52,
54,
52,
0,
0,
54,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-27,
-26,
0
],
"maxPos": [
27,
26,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "6733817d-45f3-4c6c-8ef8-4869b7d3fce2@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "97f7e50b-8772-4456-8393-706cd43327d4",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "97f7e50b-8772-4456-8393-706cd43327d4@6c48a",
"displayName": "lhb_ic_gou",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "97f7e50b-8772-4456-8393-706cd43327d4",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "97f7e50b-8772-4456-8393-706cd43327d4@f9941",
"displayName": "lhb_ic_gou",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 66,
"height": 56,
"rawWidth": 66,
"rawHeight": 56,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-33,
-28,
0,
33,
-28,
0,
-33,
28,
0,
33,
28,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
56,
66,
56,
0,
0,
66,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-33,
-28,
0
],
"maxPos": [
33,
28,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "97f7e50b-8772-4456-8393-706cd43327d4@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "97f7e50b-8772-4456-8393-706cd43327d4@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217@6c48a",
"displayName": "lhb_ic_ljjl",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217@f9941",
"displayName": "lhb_ic_ljjl",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 1.5,
"offsetY": 0,
"trimX": 3,
"trimY": 0,
"width": 137,
"height": 94,
"rawWidth": 140,
"rawHeight": 94,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-68.5,
-47,
0,
68.5,
-47,
0,
-68.5,
47,
0,
68.5,
47,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
3,
94,
140,
94,
3,
0,
140,
0
],
"nuv": [
0.02142857142857143,
0,
1,
0,
0.02142857142857143,
1,
1,
1
],
"minPos": [
-68.5,
-47,
0
],
"maxPos": [
68.5,
47,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "1c0e017b-7b4b-49cd-a7a4-3972a0fa2217@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "2ea20f98-c36e-4d61-98fb-6c80729d5766",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "2ea20f98-c36e-4d61-98fb-6c80729d5766@6c48a",
"displayName": "lhb_ic_lsjl",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "2ea20f98-c36e-4d61-98fb-6c80729d5766",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "2ea20f98-c36e-4d61-98fb-6c80729d5766@f9941",
"displayName": "lhb_ic_lsjl",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 97,
"height": 119,
"rawWidth": 97,
"rawHeight": 119,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-48.5,
-59.5,
0,
48.5,
-59.5,
0,
-48.5,
59.5,
0,
48.5,
59.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
119,
97,
119,
0,
0,
97,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-48.5,
-59.5,
0
],
"maxPos": [
48.5,
59.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "2ea20f98-c36e-4d61-98fb-6c80729d5766@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "2ea20f98-c36e-4d61-98fb-6c80729d5766@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1@6c48a",
"displayName": "lhb_jl_db_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1@f9941",
"displayName": "lhb_jl_db_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 983,
"height": 416,
"rawWidth": 983,
"rawHeight": 416,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-491.5,
-208,
0,
491.5,
-208,
0,
-491.5,
208,
0,
491.5,
208,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
416,
983,
416,
0,
0,
983,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-491.5,
-208,
0
],
"maxPos": [
491.5,
208,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "75cdbe69-b45e-43e0-b111-3e9cecf72ae1@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "76a8d495-56f4-4797-a520-59ac5f2bee1a",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "76a8d495-56f4-4797-a520-59ac5f2bee1a@6c48a",
"displayName": "lhb_jl_db_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "76a8d495-56f4-4797-a520-59ac5f2bee1a",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "76a8d495-56f4-4797-a520-59ac5f2bee1a@f9941",
"displayName": "lhb_jl_db_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 921,
"height": 65,
"rawWidth": 921,
"rawHeight": 65,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-460.5,
-32.5,
0,
460.5,
-32.5,
0,
-460.5,
32.5,
0,
460.5,
32.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
65,
921,
65,
0,
0,
921,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-460.5,
-32.5,
0
],
"maxPos": [
460.5,
32.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "76a8d495-56f4-4797-a520-59ac5f2bee1a@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "76a8d495-56f4-4797-a520-59ac5f2bee1a@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "333934a3-7407-470c-97b9-ba0d937b9b97",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "333934a3-7407-470c-97b9-ba0d937b9b97@6c48a",
"displayName": "lhb_jl_db_03",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "333934a3-7407-470c-97b9-ba0d937b9b97",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "333934a3-7407-470c-97b9-ba0d937b9b97@f9941",
"displayName": "lhb_jl_db_03",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 915,
"height": 9,
"rawWidth": 915,
"rawHeight": 9,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-457.5,
-4.5,
0,
457.5,
-4.5,
0,
-457.5,
4.5,
0,
457.5,
4.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
9,
915,
9,
0,
0,
915,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-457.5,
-4.5,
0
],
"maxPos": [
457.5,
4.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "333934a3-7407-470c-97b9-ba0d937b9b97@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "333934a3-7407-470c-97b9-ba0d937b9b97@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "1db16d2d-60f7-4835-895f-421dac3c3903",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "1db16d2d-60f7-4835-895f-421dac3c3903@6c48a",
"displayName": "lhb_pm_01",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "1db16d2d-60f7-4835-895f-421dac3c3903",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "1db16d2d-60f7-4835-895f-421dac3c3903@f9941",
"displayName": "lhb_pm_01",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 865,
"height": 145,
"rawWidth": 865,
"rawHeight": 145,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-432.5,
-72.5,
0,
432.5,
-72.5,
0,
-432.5,
72.5,
0,
432.5,
72.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
145,
865,
145,
0,
0,
865,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-432.5,
-72.5,
0
],
"maxPos": [
432.5,
72.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "1db16d2d-60f7-4835-895f-421dac3c3903@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "1db16d2d-60f7-4835-895f-421dac3c3903@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b@6c48a",
"displayName": "lhb_pm_02",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b@f9941",
"displayName": "lhb_pm_02",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 849,
"height": 72,
"rawWidth": 849,
"rawHeight": 72,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-424.5,
-36,
0,
424.5,
-36,
0,
-424.5,
36,
0,
424.5,
36,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
72,
849,
72,
0,
0,
849,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-424.5,
-36,
0
],
"maxPos": [
424.5,
36,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "36ff2bb5-4d19-4115-b05a-4a6f19190f3b@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "1d500614-1592-4df5-9336-2679e6235ca1",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "1d500614-1592-4df5-9336-2679e6235ca1@6c48a",
"displayName": "lhb_pm_03",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "1d500614-1592-4df5-9336-2679e6235ca1",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "1d500614-1592-4df5-9336-2679e6235ca1@f9941",
"displayName": "lhb_pm_03",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 847,
"height": 72,
"rawWidth": 847,
"rawHeight": 72,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-423.5,
-36,
0,
423.5,
-36,
0,
-423.5,
36,
0,
423.5,
36,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
72,
847,
72,
0,
0,
847,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-423.5,
-36,
0
],
"maxPos": [
423.5,
36,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "1d500614-1592-4df5-9336-2679e6235ca1@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "1d500614-1592-4df5-9336-2679e6235ca1@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.27",
"importer": "image",
"imported": true,
"uuid": "419b067f-d095-4af6-96ef-048e500fbd5b",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "419b067f-d095-4af6-96ef-048e500fbd5b@6c48a",
"displayName": "lhb_top",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "419b067f-d095-4af6-96ef-048e500fbd5b",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "419b067f-d095-4af6-96ef-048e500fbd5b@f9941",
"displayName": "lhb_top",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1080,
"height": 953,
"rawWidth": 1080,
"rawHeight": 953,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-540,
-476.5,
0,
540,
-476.5,
0,
-540,
476.5,
0,
540,
476.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
953,
1080,
953,
0,
0,
1080,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-540,
-476.5,
0
],
"maxPos": [
540,
476.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "419b067f-d095-4af6-96ef-048e500fbd5b@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "419b067f-d095-4af6-96ef-048e500fbd5b@6c48a"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Some files were not shown because too many files have changed in this diff Show More