Compare commits
13 Commits
develop
...
1fad68505d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fad68505d | ||
|
|
4c16bec13f | ||
| 614ce6470c | |||
|
|
8a6620cf8f | ||
|
|
4288798723 | ||
|
|
438aea779e | ||
| a542863dba | |||
| a8e54179a2 | |||
|
|
41d7fe125c | ||
|
|
55c4fcd9ae | ||
|
|
591f398085 | ||
|
|
389887202b | ||
|
|
64fc88d1bb |
@@ -0,0 +1,2 @@
|
|||||||
|
[InternetShortcut]
|
||||||
|
URL=https://docs.cocos.com/creator/manual/en/scripting/setup.html#custom-script-template
|
||||||
1
.creator/default-meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
library
|
||||||
|
temp
|
||||||
|
build
|
||||||
|
node_modules
|
||||||
38
.prettierrc
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 120,
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": false,
|
||||||
|
"quoteProps": "consistent",
|
||||||
|
"jsxSingleQuote": false,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"bracketSameLine": false,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"proseWrap": "always",
|
||||||
|
"endOfLine": "lf",
|
||||||
|
"htmlWhitespaceSensitivity": "css",
|
||||||
|
"vueIndentScriptAndStyle": false,
|
||||||
|
|
||||||
|
"jsxBracketSameLine": false,
|
||||||
|
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": "*.json",
|
||||||
|
"options": {
|
||||||
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"singleQuote": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": ["*.md", "*.mdx"],
|
||||||
|
"options": {
|
||||||
|
"printWidth": 80,
|
||||||
|
"proseWrap": "never",
|
||||||
|
"embeddedLanguageFormatting": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
9
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"eslint.useFlatConfig": true,
|
||||||
|
"eslint.validate": ["typescript"],
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": "explicit"
|
||||||
|
},
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
}
|
||||||
7
README.md
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
# UI 案例
|
||||||
|
|
||||||
|
一个漂亮的闯关类 UI 模板,包含商店、背包等常见游戏 UI 界面。
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
<img width="319" alt="ui-image" src="https://user-images.githubusercontent.com/32630749/158115467-5bf10b77-c5e1-464a-8703-0f368fc29110.png">
|
||||||
11
assets/configs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "33558479-c4d2-4151-95ca-52ee0914ea78",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"isBundle": true
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/configs/generated.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "f7c4440c-c8da-402d-b2fb-9e8608fa3dca",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/configs/generated/core.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "c20136b0-1489-4c36-b935-aecc9c99eaa9",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
17
assets/configs/generated/core/Beans.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import { ConfigParseUtils } from "./ConfigParseUtils";
|
||||||
|
|
||||||
|
/** Bean: Beans */
|
||||||
|
export interface Beans {
|
||||||
|
ClassName: string;
|
||||||
|
FieldName: string;
|
||||||
|
FieldType: string;
|
||||||
|
Comment: string;
|
||||||
|
}
|
||||||
|
export function parseBeans(data: any): Beans {
|
||||||
|
return {
|
||||||
|
ClassName: ConfigParseUtils.parseString(data.ClassName),
|
||||||
|
FieldName: ConfigParseUtils.parseString(data.FieldName),
|
||||||
|
FieldType: ConfigParseUtils.parseString(data.FieldType),
|
||||||
|
Comment: ConfigParseUtils.parseString(data.Comment),
|
||||||
|
};
|
||||||
|
}
|
||||||
9
assets/configs/generated/core/Beans.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "793d74d0-b0fc-446a-a36e-7ea0476da99a",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
288
assets/configs/generated/core/ConfigParseUtils.ts
Normal file
@@ -0,0 +1,288 @@
|
|||||||
|
import { Vec2, Vec3, Vec4, Color, Size, Rect, Quat, Mat4 } from "cc";
|
||||||
|
|
||||||
|
import LogUtils from "@max-studio/core/utils/LogUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置表解析工具类
|
||||||
|
* 提供通用的数据类型解析函数
|
||||||
|
*
|
||||||
|
* ⚠️ 此文件由配置表生成器自动生成,请勿手动修改!
|
||||||
|
* 如需修改,请编辑 configs/plugins/ConfigTableGenerator.ts 中的 generateConfigParseUtils 方法
|
||||||
|
*/
|
||||||
|
export class ConfigParseUtils {
|
||||||
|
/**
|
||||||
|
* 解析Vec2类型
|
||||||
|
*/
|
||||||
|
public static parseVec2(value: any): Vec2 {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Vec2(parts[0] || 0, parts[1] || 0);
|
||||||
|
}
|
||||||
|
return new Vec2(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Vec3类型
|
||||||
|
*/
|
||||||
|
public static parseVec3(value: any): Vec3 {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Vec3(parts[0] || 0, parts[1] || 0, parts[2] || 0);
|
||||||
|
}
|
||||||
|
return new Vec3(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Vec4类型
|
||||||
|
*/
|
||||||
|
public static parseVec4(value: any): Vec4 {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Vec4(parts[0] || 0, parts[1] || 0, parts[2] || 0, parts[3] || 0);
|
||||||
|
}
|
||||||
|
return new Vec4(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Color类型
|
||||||
|
*/
|
||||||
|
public static parseColor(value: any): Color {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
if (value.startsWith("#")) {
|
||||||
|
// 十六进制颜色
|
||||||
|
const hex = value.slice(1);
|
||||||
|
const r = Number.parseInt(hex.substring(0, 2), 16);
|
||||||
|
const g = Number.parseInt(hex.substring(2, 4), 16);
|
||||||
|
const b = Number.parseInt(hex.substring(4, 6), 16);
|
||||||
|
const a = hex.length > 6 ? Number.parseInt(hex.substring(6, 8), 16) : 255;
|
||||||
|
return new Color(r, g, b, a);
|
||||||
|
} else {
|
||||||
|
// 逗号分隔的RGBA值
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Color(parts[0] || 0, parts[1] || 0, parts[2] || 0, parts[3] !== undefined ? parts[3] : 255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Color(0, 0, 0, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Size类型
|
||||||
|
*/
|
||||||
|
public static parseSize(value: any): Size {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Size(parts[0] || 0, parts[1] || 0);
|
||||||
|
}
|
||||||
|
return new Size(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Rect类型
|
||||||
|
*/
|
||||||
|
public static parseRect(value: any): Rect {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Rect(parts[0] || 0, parts[1] || 0, parts[2] || 0, parts[3] || 0);
|
||||||
|
}
|
||||||
|
return new Rect(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Quat类型
|
||||||
|
*/
|
||||||
|
public static parseQuat(value: any): Quat {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
return new Quat(parts[0] || 0, parts[1] || 0, parts[2] || 0, parts[3] !== undefined ? parts[3] : 1);
|
||||||
|
}
|
||||||
|
return new Quat(0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析Mat4类型
|
||||||
|
*/
|
||||||
|
public static parseMat4(value: any): Mat4 {
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const parts = value.split(",").map((v) => Number.parseFloat(v.trim()) || 0);
|
||||||
|
const mat = new Mat4();
|
||||||
|
try {
|
||||||
|
mat.set(
|
||||||
|
parts[0],
|
||||||
|
parts[1],
|
||||||
|
parts[2],
|
||||||
|
parts[3],
|
||||||
|
parts[4],
|
||||||
|
parts[5],
|
||||||
|
parts[6],
|
||||||
|
parts[7],
|
||||||
|
parts[8],
|
||||||
|
parts[9],
|
||||||
|
parts[10],
|
||||||
|
parts[11],
|
||||||
|
parts[12],
|
||||||
|
parts[13],
|
||||||
|
parts[14],
|
||||||
|
parts[15],
|
||||||
|
);
|
||||||
|
} catch (err) {
|
||||||
|
LogUtils.error("ConfigParseUtils", "解析Mat4失败:", err);
|
||||||
|
}
|
||||||
|
return mat;
|
||||||
|
}
|
||||||
|
return new Mat4();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析布尔值
|
||||||
|
*/
|
||||||
|
static parseBoolean(value: any): boolean {
|
||||||
|
if (typeof value === "boolean") {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const lowerValue = value.toLowerCase();
|
||||||
|
return lowerValue === "true" || lowerValue === "1" || lowerValue === "yes";
|
||||||
|
}
|
||||||
|
if (typeof value === "number") {
|
||||||
|
return value !== 0;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析整数
|
||||||
|
*/
|
||||||
|
public static parseInt(value: string | number): number {
|
||||||
|
if (typeof value === "number") return Math.floor(value);
|
||||||
|
if (typeof value === "string") return Number.parseInt(value.trim()) || 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析浮点数
|
||||||
|
*/
|
||||||
|
static parseFloat(value: any): number {
|
||||||
|
return Number.parseFloat(value) || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析字符串
|
||||||
|
*/
|
||||||
|
static parseString(value: any): string {
|
||||||
|
return String(value || "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析字符串数组
|
||||||
|
*/
|
||||||
|
static parseStringArray(value: any): string[] {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return value.map((item) => String(item || ""));
|
||||||
|
}
|
||||||
|
if (typeof value === "string") {
|
||||||
|
return value
|
||||||
|
.split(",")
|
||||||
|
.map((item) => item.trim())
|
||||||
|
.filter((item) => item.length > 0);
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析数字数组
|
||||||
|
*/
|
||||||
|
static parseNumberArray(value: any): number[] {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return value.map((item) => Number.parseFloat(item) || 0);
|
||||||
|
}
|
||||||
|
if (typeof value === "string") {
|
||||||
|
return value.split(",").map((item) => Number.parseFloat(item.trim()) || 0);
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 深度冻结对象,确保所有嵌套属性都不可修改
|
||||||
|
*/
|
||||||
|
public static deepFreeze<T>(obj: T): T {
|
||||||
|
if (obj === null || typeof obj !== "object") {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否为 ArrayBuffer views 或其他不可冻结的对象
|
||||||
|
if (ArrayBuffer.isView(obj) || obj instanceof ArrayBuffer) {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否为 Date、RegExp 等内置对象
|
||||||
|
if (obj instanceof Date || obj instanceof RegExp) {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 递归冻结所有属性(先冻结子对象)
|
||||||
|
Object.getOwnPropertyNames(obj).forEach((prop) => {
|
||||||
|
const value = (obj as any)[prop];
|
||||||
|
if (value !== null && typeof value === "object") {
|
||||||
|
this.deepFreeze(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 最后冻结对象本身
|
||||||
|
Object.freeze(obj);
|
||||||
|
|
||||||
|
// 对于数组,还需要防止索引赋值
|
||||||
|
if (Array.isArray(obj)) {
|
||||||
|
Object.seal(obj);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// 如果冻结失败,记录警告但不中断程序
|
||||||
|
LogUtils.warn("ConfigParseUtils", "无法冻结对象:", obj, err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建配置数据的只读代理,提供更好的错误提示
|
||||||
|
*/
|
||||||
|
public static createReadonlyProxy<T extends object>(obj: T, configName: string = "配置数据"): T {
|
||||||
|
return new Proxy(obj, {
|
||||||
|
set(target, property, value) {
|
||||||
|
const errorMsg = `❌ 禁止修改${configName}的属性 "${String(property)}"!配置数据在运行时应保持不可变。`;
|
||||||
|
LogUtils.error("ConfigParseUtils", errorMsg);
|
||||||
|
throw new Error(errorMsg);
|
||||||
|
},
|
||||||
|
defineProperty(target, property, descriptor) {
|
||||||
|
const errorMsg = `❌ 禁止定义${configName}的属性 "${String(property)}"!配置数据在运行时应保持不可变。`;
|
||||||
|
LogUtils.error("ConfigParseUtils", errorMsg);
|
||||||
|
throw new Error(errorMsg);
|
||||||
|
},
|
||||||
|
deleteProperty(target, property) {
|
||||||
|
const errorMsg = `❌ 禁止删除${configName}的属性 "${String(property)}"!配置数据在运行时应保持不可变。`;
|
||||||
|
LogUtils.error("ConfigParseUtils", errorMsg);
|
||||||
|
throw new Error(errorMsg);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出便捷的解析函数
|
||||||
|
export const {
|
||||||
|
parseVec2,
|
||||||
|
parseVec3,
|
||||||
|
parseVec4,
|
||||||
|
parseColor,
|
||||||
|
parseSize,
|
||||||
|
parseRect,
|
||||||
|
parseQuat,
|
||||||
|
parseMat4,
|
||||||
|
parseBoolean,
|
||||||
|
parseInt,
|
||||||
|
parseFloat,
|
||||||
|
parseString,
|
||||||
|
parseStringArray,
|
||||||
|
parseNumberArray,
|
||||||
|
deepFreeze,
|
||||||
|
createReadonlyProxy,
|
||||||
|
} = ConfigParseUtils;
|
||||||
9
assets/configs/generated/core/ConfigParseUtils.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e6350dd1-e9ea-4a64-9823-a20c6bf82990",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
7
assets/configs/generated/core/Enums.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/** 自动生成的枚举定义 */
|
||||||
|
export enum DressSourceType {
|
||||||
|
NONE = 0, // 无
|
||||||
|
SLOT = 1, // 插槽
|
||||||
|
SOCKET_TEX = 2, // 挂点静态图
|
||||||
|
SOCKET_SPINE = 3, // 挂点动画
|
||||||
|
}
|
||||||
9
assets/configs/generated/core/Enums.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e46d8a30-83a4-4635-951a-84486ebeec96",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
82
assets/configs/generated/core/PetConfigData.ts
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
import { Color } from "cc";
|
||||||
|
import { ConfigParseUtils } from "./ConfigParseUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PetConfig数据结构
|
||||||
|
*/
|
||||||
|
export class PetConfigData {
|
||||||
|
|
||||||
|
private _id: number;
|
||||||
|
public get id(): number {
|
||||||
|
return this._id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _key: string;
|
||||||
|
public get key(): string {
|
||||||
|
return this._key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _bundle: string;
|
||||||
|
public get bundle(): string {
|
||||||
|
return this._bundle;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _path: string;
|
||||||
|
public get path(): string {
|
||||||
|
return this._path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _name: string;
|
||||||
|
public get name(): string {
|
||||||
|
return this._name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _color: Color;
|
||||||
|
public get color(): Color {
|
||||||
|
return this._color;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _desc: string;
|
||||||
|
public get desc(): string {
|
||||||
|
return this._desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public constructor(
|
||||||
|
id: number,
|
||||||
|
key: string,
|
||||||
|
bundle: string,
|
||||||
|
path: string,
|
||||||
|
name: string,
|
||||||
|
color: Color,
|
||||||
|
desc: string
|
||||||
|
) {
|
||||||
|
this._id = id;
|
||||||
|
this._key = key;
|
||||||
|
this._bundle = bundle;
|
||||||
|
this._path = path;
|
||||||
|
this._name = name;
|
||||||
|
this._color = color;
|
||||||
|
this._desc = desc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析配置数据
|
||||||
|
*/
|
||||||
|
export function parsePetConfigData(data: any): PetConfigData {
|
||||||
|
return new PetConfigData(
|
||||||
|
ConfigParseUtils.parseInt(data.id),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.key),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.bundle),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.path),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.name),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseColor(data.color),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.desc)
|
||||||
|
);
|
||||||
|
}
|
||||||
9
assets/configs/generated/core/PetConfigData.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "0b58225d-8d7f-429c-af23-1548e8acb583",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
76
assets/configs/generated/core/PetConfigManager.ts
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import { JsonAsset } from "cc";
|
||||||
|
|
||||||
|
import { singleton, Singleton } from "@max-studio/core/Singleton";
|
||||||
|
import LogUtils from "@max-studio/core/utils/LogUtils";
|
||||||
|
|
||||||
|
import { ConfigParseUtils } from "./ConfigParseUtils";
|
||||||
|
import { PetConfigData, parsePetConfigData } from "./PetConfigData";
|
||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PetConfig配置管理器
|
||||||
|
*
|
||||||
|
* ⚠️ 此文件由配置表生成器自动生成,请勿手动修改!
|
||||||
|
* 如需修改,请编辑对应的Excel配置文件,然后重新生成
|
||||||
|
*/
|
||||||
|
@singleton({ auto: true })
|
||||||
|
export class PetConfigManager extends Singleton {
|
||||||
|
private configList: readonly PetConfigData[] = [];
|
||||||
|
private configMap = new Map<number, PetConfigData>();
|
||||||
|
|
||||||
|
private isLoaded = false;
|
||||||
|
|
||||||
|
protected async onInit(): Promise<void> {
|
||||||
|
await this.loadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async loadConfig(): Promise<void> {
|
||||||
|
try {
|
||||||
|
const { err, asset } = await ResManager.getInstance().loadAsset<JsonAsset>({
|
||||||
|
path: "generated/data/PetConfig",
|
||||||
|
type: JsonAsset,
|
||||||
|
bundle: "configs",
|
||||||
|
});
|
||||||
|
this.parseConfig(<any>asset.json);
|
||||||
|
this.isLoaded = true;
|
||||||
|
} catch (err) {
|
||||||
|
LogUtils.error("PetConfigManager", "加载 PetConfig 配置失败:", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private parseConfig(data: any[]): void {
|
||||||
|
this.configList = Object.freeze(
|
||||||
|
data.map((item) => {
|
||||||
|
const config = parsePetConfigData(item);
|
||||||
|
const frozenConfig = ConfigParseUtils.deepFreeze(config);
|
||||||
|
return ConfigParseUtils.createReadonlyProxy(frozenConfig, "PetConfigData配置");
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
this.configMap.clear();
|
||||||
|
|
||||||
|
for (const config of this.configList) {
|
||||||
|
this.configMap.set((config as any).id, config);
|
||||||
|
}
|
||||||
|
ConfigParseUtils.deepFreeze(this.configMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public getConfig(id: number): PetConfigData | null {
|
||||||
|
if (!this.isLoaded) {
|
||||||
|
LogUtils.warn("PetConfigManager", "PetConfig 配置尚未加载完成,请等待加载完成");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return this.configMap.get(id) || null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getAllConfigs(): PetConfigData[] {
|
||||||
|
if (!this.isLoaded) {
|
||||||
|
LogUtils.warn("PetConfigManager", "PetConfig 配置尚未加载完成,请等待加载完成");
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return [...this.configList];
|
||||||
|
}
|
||||||
|
|
||||||
|
public isConfigLoaded(): boolean {
|
||||||
|
return this.isLoaded;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/configs/generated/core/PetConfigManager.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "a2093a8e-f81a-4bf2-a7a8-6bb20c02484c",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
71
assets/configs/generated/core/PetPartConfigData.ts
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
import { ConfigParseUtils } from "./ConfigParseUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PetPartConfig数据结构
|
||||||
|
*/
|
||||||
|
export class PetPartConfigData {
|
||||||
|
private _id: number;
|
||||||
|
public get id(): number {
|
||||||
|
return this._id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _name: string;
|
||||||
|
public get name(): string {
|
||||||
|
return this._name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _sourceName: string;
|
||||||
|
public get sourceName(): string {
|
||||||
|
return this._sourceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _type: number;
|
||||||
|
public get type(): number {
|
||||||
|
return this._type;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _sourceType: number;
|
||||||
|
public get sourceType(): number {
|
||||||
|
return this._sourceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _quality: number;
|
||||||
|
public get quality(): number {
|
||||||
|
return this._quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public constructor(
|
||||||
|
id: number,
|
||||||
|
name: string,
|
||||||
|
sourceName: string,
|
||||||
|
type: number,
|
||||||
|
sourceType: number,
|
||||||
|
quality: number,
|
||||||
|
) {
|
||||||
|
this._id = id;
|
||||||
|
this._name = name;
|
||||||
|
this._sourceName = sourceName;
|
||||||
|
this._type = type;
|
||||||
|
this._sourceType = sourceType;
|
||||||
|
this._quality = quality;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析配置数据
|
||||||
|
*/
|
||||||
|
export function parsePetPartConfigData(data: any): PetPartConfigData {
|
||||||
|
return new PetPartConfigData(
|
||||||
|
ConfigParseUtils.parseInt(data.id),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.name),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseString(data.sourceName),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseInt(data.type),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseInt(data.sourceType),
|
||||||
|
|
||||||
|
ConfigParseUtils.parseInt(data.quality),
|
||||||
|
);
|
||||||
|
}
|
||||||
9
assets/configs/generated/core/PetPartConfigData.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "eb6f0ae1-9c7b-4d26-a8b1-b96d2e65631f",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
76
assets/configs/generated/core/PetPartConfigManager.ts
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import { JsonAsset } from "cc";
|
||||||
|
|
||||||
|
import { singleton, Singleton } from "@max-studio/core/Singleton";
|
||||||
|
import LogUtils from "@max-studio/core/utils/LogUtils";
|
||||||
|
|
||||||
|
import { ConfigParseUtils } from "./ConfigParseUtils";
|
||||||
|
import { PetPartConfigData, parsePetPartConfigData } from "./PetPartConfigData";
|
||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PetPartConfig配置管理器
|
||||||
|
*
|
||||||
|
* ⚠️ 此文件由配置表生成器自动生成,请勿手动修改!
|
||||||
|
* 如需修改,请编辑对应的Excel配置文件,然后重新生成
|
||||||
|
*/
|
||||||
|
@singleton({ auto: true })
|
||||||
|
export class PetPartConfigManager extends Singleton {
|
||||||
|
private configList: readonly PetPartConfigData[] = [];
|
||||||
|
private configMap = new Map<number, PetPartConfigData>();
|
||||||
|
|
||||||
|
private isLoaded = false;
|
||||||
|
|
||||||
|
protected async onInit(): Promise<void> {
|
||||||
|
await this.loadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async loadConfig(): Promise<void> {
|
||||||
|
try {
|
||||||
|
const { err, asset } = await ResManager.getInstance().loadAsset<JsonAsset>({
|
||||||
|
path: "generated/data/PetPartConfig",
|
||||||
|
type: JsonAsset,
|
||||||
|
bundle: "configs",
|
||||||
|
});
|
||||||
|
this.parseConfig(<any>asset.json);
|
||||||
|
this.isLoaded = true;
|
||||||
|
} catch (err) {
|
||||||
|
LogUtils.error("PetPartConfigManager", "加载 PetPartConfig 配置失败:", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private parseConfig(data: any[]): void {
|
||||||
|
this.configList = Object.freeze(
|
||||||
|
data.map((item) => {
|
||||||
|
const config = parsePetPartConfigData(item);
|
||||||
|
const frozenConfig = ConfigParseUtils.deepFreeze(config);
|
||||||
|
return ConfigParseUtils.createReadonlyProxy(frozenConfig, "PetPartConfigData配置");
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
this.configMap.clear();
|
||||||
|
|
||||||
|
for (const config of this.configList) {
|
||||||
|
this.configMap.set((config as any).id, config);
|
||||||
|
}
|
||||||
|
ConfigParseUtils.deepFreeze(this.configMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public getConfig(id: number): PetPartConfigData | null {
|
||||||
|
if (!this.isLoaded) {
|
||||||
|
LogUtils.warn("PetPartConfigManager", "PetPartConfig 配置尚未加载完成,请等待加载完成");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return this.configMap.get(id) || null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getAllConfigs(): PetPartConfigData[] {
|
||||||
|
if (!this.isLoaded) {
|
||||||
|
LogUtils.warn("PetPartConfigManager", "PetPartConfig 配置尚未加载完成,请等待加载完成");
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return [...this.configList];
|
||||||
|
}
|
||||||
|
|
||||||
|
public isConfigLoaded(): boolean {
|
||||||
|
return this.isLoaded;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "de6a1d46-109e-47ff-bb2a-f9b9f1241e30",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
11
assets/configs/generated/data.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "b1244b32-aba4-4cbf-b889-ab355071147c",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"bundleName": "config-data"
|
||||||
|
}
|
||||||
|
}
|
||||||
272
assets/configs/generated/data/PetConfig.json
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "1001",
|
||||||
|
"key": "chenghuang",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "ChengHuang",
|
||||||
|
"name": "",
|
||||||
|
"color": "#00000000",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1002",
|
||||||
|
"key": "dangkang",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "DangKang",
|
||||||
|
"name": "",
|
||||||
|
"color": "#00000000",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1003",
|
||||||
|
"key": "shuoshu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "ShuoShu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1004",
|
||||||
|
"key": "jiuwei",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "JiuWei",
|
||||||
|
"name": "精卫",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1005",
|
||||||
|
"key": "qiongqi",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "QiongQi",
|
||||||
|
"name": "穷奇",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1006",
|
||||||
|
"key": "tiangou",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "TianGou",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1007",
|
||||||
|
"key": "xiangliu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "XiangLiu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1008",
|
||||||
|
"key": "lili",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "LiLi",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1009",
|
||||||
|
"key": "yugong",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "YuGong",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1010",
|
||||||
|
"key": "yutu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "YuTu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1011",
|
||||||
|
"key": "zhurong",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "ZhuRong",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1012",
|
||||||
|
"key": "changyou",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Changyou",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1013",
|
||||||
|
"key": "dijiang",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Dijiang",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1014",
|
||||||
|
"key": "jili",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Jili",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1015",
|
||||||
|
"key": "shusi",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Shusi",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1016",
|
||||||
|
"key": "wanv",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Wanv",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1017",
|
||||||
|
"key": "xuangui",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Xuangui",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1018",
|
||||||
|
"key": "yingyu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Yingyu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1019",
|
||||||
|
"key": "yunque",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "Yunque",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1020",
|
||||||
|
"key": "pangding",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "PangDing",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1021",
|
||||||
|
"key": "shanyuan",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "ShanYuan",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1022",
|
||||||
|
"key": "zhuyin",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "ZhuYin",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1023",
|
||||||
|
"key": "yingwu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "YingWu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1024",
|
||||||
|
"key": "linghu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "LingHu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1025",
|
||||||
|
"key": "bailuwang",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "BaiLuWang",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1026",
|
||||||
|
"key": "xuanwu",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "XuanWu",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1027",
|
||||||
|
"key": "fengyou",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "FengYou",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1028",
|
||||||
|
"key": "nianshou",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "NianShou",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1029",
|
||||||
|
"key": "fenghuang",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "FengHuang",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1030",
|
||||||
|
"key": "touzishe",
|
||||||
|
"bundle": "pet-spine",
|
||||||
|
"path": "TouZiShe",
|
||||||
|
"name": "",
|
||||||
|
"color": "",
|
||||||
|
"desc": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
11
assets/configs/generated/data/PetConfig.json.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.1",
|
||||||
|
"importer": "json",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "8a6207a1-9fdc-4802-8675-7024480c1f31",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
962
assets/configs/generated/data/PetPartConfig.json
Normal file
@@ -0,0 +1,962 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 20001,
|
||||||
|
"name": "舞狮套装",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 0,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20002,
|
||||||
|
"name": "可爱熊套装",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 0,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20003,
|
||||||
|
"name": "格格套装",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 0,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20004,
|
||||||
|
"name": "关二爷套装",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 0,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20005,
|
||||||
|
"name": "当康-鼻子",
|
||||||
|
"sourceName": "dk_bizi",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20006,
|
||||||
|
"name": "狸力-鼻子",
|
||||||
|
"sourceName": "yz_bz",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20007,
|
||||||
|
"name": "吉利-喙",
|
||||||
|
"sourceName": "jili_hui",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20008,
|
||||||
|
"name": "云雀-喙",
|
||||||
|
"sourceName": "yunque_hui",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20009,
|
||||||
|
"name": "鹦鹉-喙",
|
||||||
|
"sourceName": "yw_hui",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20010,
|
||||||
|
"name": "凤凰-喙",
|
||||||
|
"sourceName": "fh_hui",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20011,
|
||||||
|
"name": "舞狮玲珑球",
|
||||||
|
"sourceName": "bag_20501",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20012,
|
||||||
|
"name": "舞狮帽",
|
||||||
|
"sourceName": "hat_20502",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 4,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20013,
|
||||||
|
"name": "无",
|
||||||
|
"sourceName": "eye_23001",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20014,
|
||||||
|
"name": "舞狮领带",
|
||||||
|
"sourceName": "tie_20504",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20015,
|
||||||
|
"name": "可爱熊挎包",
|
||||||
|
"sourceName": "bag_20506",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20016,
|
||||||
|
"name": "可爱熊头饰",
|
||||||
|
"sourceName": "hat_20507",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20017,
|
||||||
|
"name": "可爱熊面饰",
|
||||||
|
"sourceName": "eye_20508",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20018,
|
||||||
|
"name": "可爱熊围兜",
|
||||||
|
"sourceName": "tie_20509",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20019,
|
||||||
|
"name": "关公盾牌",
|
||||||
|
"sourceName": "bag_20511",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20020,
|
||||||
|
"name": "关公帽",
|
||||||
|
"sourceName": "hat_20512",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20021,
|
||||||
|
"name": "关公眉毛",
|
||||||
|
"sourceName": "eye_20513",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20022,
|
||||||
|
"name": "关公胡须",
|
||||||
|
"sourceName": "tie_20514",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20023,
|
||||||
|
"name": "青龙刀",
|
||||||
|
"sourceName": "yanyuedao",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20024,
|
||||||
|
"name": "格格扇子",
|
||||||
|
"sourceName": "bag_20516",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20025,
|
||||||
|
"name": "格格帽",
|
||||||
|
"sourceName": "hat_20517",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 4,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20026,
|
||||||
|
"name": "格格眼饰-备用",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20027,
|
||||||
|
"name": "格格围巾",
|
||||||
|
"sourceName": "tie_20519",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20028,
|
||||||
|
"name": "格格炫光-备用",
|
||||||
|
"sourceName": "",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20029,
|
||||||
|
"name": "青蛇法宝",
|
||||||
|
"sourceName": "bag_20521",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20030,
|
||||||
|
"name": "青蛇发冠",
|
||||||
|
"sourceName": "hat_20522",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20031,
|
||||||
|
"name": "青蛇面饰",
|
||||||
|
"sourceName": "eye_20523",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20032,
|
||||||
|
"name": "青蛇领饰",
|
||||||
|
"sourceName": "tie_20524",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20033,
|
||||||
|
"name": "青蛇莲花",
|
||||||
|
"sourceName": "wing_20525",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20034,
|
||||||
|
"name": "白蛇法宝",
|
||||||
|
"sourceName": "bag_20526",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20035,
|
||||||
|
"name": "白蛇发冠",
|
||||||
|
"sourceName": "hat_20527",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20036,
|
||||||
|
"name": "白蛇面饰",
|
||||||
|
"sourceName": "eye_20528",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20037,
|
||||||
|
"name": "白蛇领饰",
|
||||||
|
"sourceName": "tie_20529",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20038,
|
||||||
|
"name": "白蛇莲花",
|
||||||
|
"sourceName": "wing_20530",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 0,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20039,
|
||||||
|
"name": "少女战服",
|
||||||
|
"sourceName": "bag_20531",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20040,
|
||||||
|
"name": "少女头饰",
|
||||||
|
"sourceName": "hat_20532",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20041,
|
||||||
|
"name": "小樱面饰",
|
||||||
|
"sourceName": "eye_20533",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20042,
|
||||||
|
"name": "战服领带",
|
||||||
|
"sourceName": "tie_20534",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20043,
|
||||||
|
"name": "小樱仙女棒",
|
||||||
|
"sourceName": "wing_20535",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20044,
|
||||||
|
"name": "冰雪长发",
|
||||||
|
"sourceName": "hat_20537",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20045,
|
||||||
|
"name": "小雪人",
|
||||||
|
"sourceName": "wing_20540",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20046,
|
||||||
|
"name": "鲜花篮子",
|
||||||
|
"sourceName": "bag_20541",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20047,
|
||||||
|
"name": "公主发饰",
|
||||||
|
"sourceName": "hat_20542",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20048,
|
||||||
|
"name": "公主服装",
|
||||||
|
"sourceName": "tie_24017",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20049,
|
||||||
|
"name": "苹果精灵",
|
||||||
|
"sourceName": "wing_20545",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20050,
|
||||||
|
"name": "宝藏地图",
|
||||||
|
"sourceName": "bag_20546",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20051,
|
||||||
|
"name": "航海帽",
|
||||||
|
"sourceName": "hat_20547",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 5,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20052,
|
||||||
|
"name": "海盗眼罩",
|
||||||
|
"sourceName": "eye_23011",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20053,
|
||||||
|
"name": "船长胡须",
|
||||||
|
"sourceName": "tie_24015",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20054,
|
||||||
|
"name": "航海宝藏",
|
||||||
|
"sourceName": "wing_20550",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20055,
|
||||||
|
"name": "时光飞毯",
|
||||||
|
"sourceName": "wing_20555",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20056,
|
||||||
|
"name": "魔法手杖",
|
||||||
|
"sourceName": "wing_20560",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20057,
|
||||||
|
"name": "许仙油伞",
|
||||||
|
"sourceName": "bag_20561",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20058,
|
||||||
|
"name": "许仙帽",
|
||||||
|
"sourceName": "hat_22012",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20059,
|
||||||
|
"name": "许仙长袍",
|
||||||
|
"sourceName": "tie_24016",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20060,
|
||||||
|
"name": "许仙背篓",
|
||||||
|
"sourceName": "wing_20565",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20061,
|
||||||
|
"name": "超人披风",
|
||||||
|
"sourceName": "bag_20571",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20062,
|
||||||
|
"name": "超人秀发",
|
||||||
|
"sourceName": "hat_20572",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20063,
|
||||||
|
"name": "记者眼镜",
|
||||||
|
"sourceName": "eye_23013",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20064,
|
||||||
|
"name": "超人战衣",
|
||||||
|
"sourceName": "tie_24019",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20065,
|
||||||
|
"name": "神奇战犬",
|
||||||
|
"sourceName": "wing_20575",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20066,
|
||||||
|
"name": "黑翼披风",
|
||||||
|
"sourceName": "bag_20551",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20067,
|
||||||
|
"name": "夜行面具",
|
||||||
|
"sourceName": "eye_23012",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20068,
|
||||||
|
"name": "夜行铠甲",
|
||||||
|
"sourceName": "tie_24018",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20069,
|
||||||
|
"name": "夜行战车",
|
||||||
|
"sourceName": "wing_20580",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20070,
|
||||||
|
"name": "太空能量泵",
|
||||||
|
"sourceName": "bag_21015",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20071,
|
||||||
|
"name": "太空供氧面罩",
|
||||||
|
"sourceName": "hat_22013",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 4,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20072,
|
||||||
|
"name": "太空服",
|
||||||
|
"sourceName": "tie_24021",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20073,
|
||||||
|
"name": "飞行机甲",
|
||||||
|
"sourceName": "wing_20585",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20074,
|
||||||
|
"name": "公文背包",
|
||||||
|
"sourceName": "bag_21001",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20075,
|
||||||
|
"name": "旅行背包(蓝)",
|
||||||
|
"sourceName": "bag_21001",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20076,
|
||||||
|
"name": "旅行背包(动画)",
|
||||||
|
"sourceName": "bag_21001",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20077,
|
||||||
|
"name": "睡眠抱枕",
|
||||||
|
"sourceName": "bag_21004",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20078,
|
||||||
|
"name": "手枪配饰",
|
||||||
|
"sourceName": "bag_21005",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20079,
|
||||||
|
"name": "游侠钱袋",
|
||||||
|
"sourceName": "bag_21006",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20080,
|
||||||
|
"name": "熊猫挎包",
|
||||||
|
"sourceName": "bag_21007",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20081,
|
||||||
|
"name": "魔法书",
|
||||||
|
"sourceName": "bag_21009",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20082,
|
||||||
|
"name": "兔警官挎包",
|
||||||
|
"sourceName": "bag_21010",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20083,
|
||||||
|
"name": "铜锣烧",
|
||||||
|
"sourceName": "bag_21011",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20084,
|
||||||
|
"name": "纯金腰带",
|
||||||
|
"sourceName": "bag_21014",
|
||||||
|
"type": 1,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20085,
|
||||||
|
"name": "魔术帽",
|
||||||
|
"sourceName": "hat_22001",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20086,
|
||||||
|
"name": "魔术帽(变色)",
|
||||||
|
"sourceName": "hat_22001",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20087,
|
||||||
|
"name": "魔术帽(动画)",
|
||||||
|
"sourceName": "hat_22001",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20088,
|
||||||
|
"name": "xx帽-备用",
|
||||||
|
"sourceName": "hat_22001",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 2,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20089,
|
||||||
|
"name": "制服帽",
|
||||||
|
"sourceName": "hat_22006",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20090,
|
||||||
|
"name": "休闲帽",
|
||||||
|
"sourceName": "hat_22003",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20091,
|
||||||
|
"name": "牛仔帽",
|
||||||
|
"sourceName": "hat_22007",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20092,
|
||||||
|
"name": "兔警官帽",
|
||||||
|
"sourceName": "hat_22008",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20093,
|
||||||
|
"name": "蓝猫飞行帽",
|
||||||
|
"sourceName": "hat_22009",
|
||||||
|
"type": 2,
|
||||||
|
"sourceType": 4,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20094,
|
||||||
|
"name": "太阳镜(粉)",
|
||||||
|
"sourceName": "eye_23001",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20095,
|
||||||
|
"name": "简框眼镜",
|
||||||
|
"sourceName": "eye_23002",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20096,
|
||||||
|
"name": "墨镜",
|
||||||
|
"sourceName": "eye_23003",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20097,
|
||||||
|
"name": "圆框饰品",
|
||||||
|
"sourceName": "eye_23004",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20098,
|
||||||
|
"name": "爱心镜框",
|
||||||
|
"sourceName": "eye_23005",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20099,
|
||||||
|
"name": "竹子墨镜",
|
||||||
|
"sourceName": "eye_23006",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20100,
|
||||||
|
"name": "睡眠面罩",
|
||||||
|
"sourceName": "eye_23007",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20101,
|
||||||
|
"name": "搞怪眼镜",
|
||||||
|
"sourceName": "eye_23008",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20102,
|
||||||
|
"name": "游侠眼饰",
|
||||||
|
"sourceName": "eye_23009",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20103,
|
||||||
|
"name": "英伦圆框",
|
||||||
|
"sourceName": "eye_23010",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20104,
|
||||||
|
"name": "墨镜2",
|
||||||
|
"sourceName": "eye_23003",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20105,
|
||||||
|
"name": "粉色眼镜2",
|
||||||
|
"sourceName": "eye_23001",
|
||||||
|
"type": 3,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20106,
|
||||||
|
"name": "粉蝴蝶结",
|
||||||
|
"sourceName": "tie_24001",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20107,
|
||||||
|
"name": "紫蝴蝶结",
|
||||||
|
"sourceName": "tie_24002",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20108,
|
||||||
|
"name": "制服领结",
|
||||||
|
"sourceName": "tie_24004",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20109,
|
||||||
|
"name": "熊猫领结",
|
||||||
|
"sourceName": "tie_24003",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20110,
|
||||||
|
"name": "制服领带",
|
||||||
|
"sourceName": "tie_24005",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20111,
|
||||||
|
"name": "金项链",
|
||||||
|
"sourceName": "tie_24006",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20112,
|
||||||
|
"name": "牛仔围巾",
|
||||||
|
"sourceName": "tie_24007",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20113,
|
||||||
|
"name": "魔法学院服",
|
||||||
|
"sourceName": "tie_24011",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20114,
|
||||||
|
"name": "兔警官服",
|
||||||
|
"sourceName": "tie_24012",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20115,
|
||||||
|
"name": "铃铛",
|
||||||
|
"sourceName": "tie_24013",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20116,
|
||||||
|
"name": "冰雪领带",
|
||||||
|
"sourceName": "tie_24014",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20117,
|
||||||
|
"name": "金属勋章",
|
||||||
|
"sourceName": "tie_24020",
|
||||||
|
"type": 4,
|
||||||
|
"sourceType": 1,
|
||||||
|
"quality": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20118,
|
||||||
|
"name": "闪闪糖葫芦",
|
||||||
|
"sourceName": "tanghulu",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 0,
|
||||||
|
"quality": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20119,
|
||||||
|
"name": "青龙刀",
|
||||||
|
"sourceName": "yanyuedao",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 3,
|
||||||
|
"quality": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20120,
|
||||||
|
"name": "爱心信件",
|
||||||
|
"sourceName": "qingshu",
|
||||||
|
"type": 5,
|
||||||
|
"sourceType": 0,
|
||||||
|
"quality": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
11
assets/configs/generated/data/PetPartConfig.json.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.1",
|
||||||
|
"importer": "json",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "2dfc8295-5211-42cf-85cb-64addd429a7e",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
11
assets/games.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "b3e5cd5c-89d0-4df6-a9f7-9d33026a7c02",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"isBundle": true
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/atlas.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "36f0951d-0b77-4728-bebc-c8192f0c8185",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/atlas/rewards.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "1f979c16-7cc3-4786-b607-b82b0591dcc9",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_ax.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_ax.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "a562f181-3b53-4777-802d-5dce3b1cac21",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "a562f181-3b53-4777-802d-5dce3b1cac21@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_ax",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "a562f181-3b53-4777-802d-5dce3b1cac21",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "a562f181-3b53-4777-802d-5dce3b1cac21@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_ax",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 216,
|
||||||
|
"height": 211,
|
||||||
|
"rawWidth": 216,
|
||||||
|
"rawHeight": 211,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-108,
|
||||||
|
-105.5,
|
||||||
|
0,
|
||||||
|
108,
|
||||||
|
-105.5,
|
||||||
|
0,
|
||||||
|
-108,
|
||||||
|
105.5,
|
||||||
|
0,
|
||||||
|
108,
|
||||||
|
105.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
211,
|
||||||
|
216,
|
||||||
|
211,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
216,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-108,
|
||||||
|
-105.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
108,
|
||||||
|
105.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "a562f181-3b53-4777-802d-5dce3b1cac21@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "a562f181-3b53-4777-802d-5dce3b1cac21@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_book.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_book.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "fb18880a-860d-4b65-a202-b5f628d89b13",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "fb18880a-860d-4b65-a202-b5f628d89b13@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_book",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "fb18880a-860d-4b65-a202-b5f628d89b13",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "fb18880a-860d-4b65-a202-b5f628d89b13@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_book",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 215,
|
||||||
|
"height": 209,
|
||||||
|
"rawWidth": 215,
|
||||||
|
"rawHeight": 209,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-107.5,
|
||||||
|
-104.5,
|
||||||
|
0,
|
||||||
|
107.5,
|
||||||
|
-104.5,
|
||||||
|
0,
|
||||||
|
-107.5,
|
||||||
|
104.5,
|
||||||
|
0,
|
||||||
|
107.5,
|
||||||
|
104.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
209,
|
||||||
|
215,
|
||||||
|
209,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
215,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-107.5,
|
||||||
|
-104.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
107.5,
|
||||||
|
104.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "fb18880a-860d-4b65-a202-b5f628d89b13@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "fb18880a-860d-4b65-a202-b5f628d89b13@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_clover.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_clover.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "ccee92f9-8e71-4d88-b335-48eb76c53172",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "ccee92f9-8e71-4d88-b335-48eb76c53172@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_clover",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "ccee92f9-8e71-4d88-b335-48eb76c53172",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "ccee92f9-8e71-4d88-b335-48eb76c53172@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_clover",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 191,
|
||||||
|
"height": 210,
|
||||||
|
"rawWidth": 191,
|
||||||
|
"rawHeight": 210,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-95.5,
|
||||||
|
-105,
|
||||||
|
0,
|
||||||
|
95.5,
|
||||||
|
-105,
|
||||||
|
0,
|
||||||
|
-95.5,
|
||||||
|
105,
|
||||||
|
0,
|
||||||
|
95.5,
|
||||||
|
105,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
210,
|
||||||
|
191,
|
||||||
|
210,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
191,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-95.5,
|
||||||
|
-105,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
95.5,
|
||||||
|
105,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "ccee92f9-8e71-4d88-b335-48eb76c53172@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "ccee92f9-8e71-4d88-b335-48eb76c53172@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_gem.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_gem.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_gem",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_gem",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 247,
|
||||||
|
"height": 196,
|
||||||
|
"rawWidth": 247,
|
||||||
|
"rawHeight": 196,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-123.5,
|
||||||
|
-98,
|
||||||
|
0,
|
||||||
|
123.5,
|
||||||
|
-98,
|
||||||
|
0,
|
||||||
|
-123.5,
|
||||||
|
98,
|
||||||
|
0,
|
||||||
|
123.5,
|
||||||
|
98,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
196,
|
||||||
|
247,
|
||||||
|
196,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
247,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-123.5,
|
||||||
|
-98,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
123.5,
|
||||||
|
98,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "7691c8f3-3ca8-4a3b-882a-dfc7b2402ef7@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_glove.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_glove.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "7c4eee6e-2941-493b-a0ee-772463486f39",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "7c4eee6e-2941-493b-a0ee-772463486f39@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_glove",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "7c4eee6e-2941-493b-a0ee-772463486f39",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "7c4eee6e-2941-493b-a0ee-772463486f39@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_glove",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 196,
|
||||||
|
"height": 195,
|
||||||
|
"rawWidth": 196,
|
||||||
|
"rawHeight": 195,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-98,
|
||||||
|
-97.5,
|
||||||
|
0,
|
||||||
|
98,
|
||||||
|
-97.5,
|
||||||
|
0,
|
||||||
|
-98,
|
||||||
|
97.5,
|
||||||
|
0,
|
||||||
|
98,
|
||||||
|
97.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
195,
|
||||||
|
196,
|
||||||
|
195,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
196,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-98,
|
||||||
|
-97.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
98,
|
||||||
|
97.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "7c4eee6e-2941-493b-a0ee-772463486f39@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "7c4eee6e-2941-493b-a0ee-772463486f39@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_gold.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_gold.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "b8625559-dd62-4c66-96aa-abcc7a69f567",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "b8625559-dd62-4c66-96aa-abcc7a69f567@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_gold",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "b8625559-dd62-4c66-96aa-abcc7a69f567",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "b8625559-dd62-4c66-96aa-abcc7a69f567@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_gold",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 256,
|
||||||
|
"height": 189,
|
||||||
|
"rawWidth": 256,
|
||||||
|
"rawHeight": 189,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-128,
|
||||||
|
-94.5,
|
||||||
|
0,
|
||||||
|
128,
|
||||||
|
-94.5,
|
||||||
|
0,
|
||||||
|
-128,
|
||||||
|
94.5,
|
||||||
|
0,
|
||||||
|
128,
|
||||||
|
94.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
189,
|
||||||
|
256,
|
||||||
|
189,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
256,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-128,
|
||||||
|
-94.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
128,
|
||||||
|
94.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "b8625559-dd62-4c66-96aa-abcc7a69f567@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "b8625559-dd62-4c66-96aa-abcc7a69f567@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/games/atlas/rewards/Icon_Reward_Pass_rune.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
134
assets/games/atlas/rewards/Icon_Reward_Pass_rune.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.27",
|
||||||
|
"importer": "image",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "8188705e-b03f-4224-944c-aa443ba8e198",
|
||||||
|
"files": [
|
||||||
|
".json",
|
||||||
|
".png"
|
||||||
|
],
|
||||||
|
"subMetas": {
|
||||||
|
"6c48a": {
|
||||||
|
"importer": "texture",
|
||||||
|
"uuid": "8188705e-b03f-4224-944c-aa443ba8e198@6c48a",
|
||||||
|
"displayName": "Icon_Reward_Pass_rune",
|
||||||
|
"id": "6c48a",
|
||||||
|
"name": "texture",
|
||||||
|
"userData": {
|
||||||
|
"wrapModeS": "clamp-to-edge",
|
||||||
|
"wrapModeT": "clamp-to-edge",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0,
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "8188705e-b03f-4224-944c-aa443ba8e198",
|
||||||
|
"visible": false
|
||||||
|
},
|
||||||
|
"ver": "1.0.22",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
},
|
||||||
|
"f9941": {
|
||||||
|
"importer": "sprite-frame",
|
||||||
|
"uuid": "8188705e-b03f-4224-944c-aa443ba8e198@f9941",
|
||||||
|
"displayName": "Icon_Reward_Pass_rune",
|
||||||
|
"id": "f9941",
|
||||||
|
"name": "spriteFrame",
|
||||||
|
"userData": {
|
||||||
|
"trimThreshold": 1,
|
||||||
|
"rotated": false,
|
||||||
|
"offsetX": 0,
|
||||||
|
"offsetY": 0,
|
||||||
|
"trimX": 0,
|
||||||
|
"trimY": 0,
|
||||||
|
"width": 217,
|
||||||
|
"height": 213,
|
||||||
|
"rawWidth": 217,
|
||||||
|
"rawHeight": 213,
|
||||||
|
"borderTop": 0,
|
||||||
|
"borderBottom": 0,
|
||||||
|
"borderLeft": 0,
|
||||||
|
"borderRight": 0,
|
||||||
|
"packable": true,
|
||||||
|
"pixelsToUnit": 100,
|
||||||
|
"pivotX": 0.5,
|
||||||
|
"pivotY": 0.5,
|
||||||
|
"meshType": 0,
|
||||||
|
"vertices": {
|
||||||
|
"rawPosition": [
|
||||||
|
-108.5,
|
||||||
|
-106.5,
|
||||||
|
0,
|
||||||
|
108.5,
|
||||||
|
-106.5,
|
||||||
|
0,
|
||||||
|
-108.5,
|
||||||
|
106.5,
|
||||||
|
0,
|
||||||
|
108.5,
|
||||||
|
106.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
213,
|
||||||
|
217,
|
||||||
|
213,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
217,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"nuv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"minPos": [
|
||||||
|
-108.5,
|
||||||
|
-106.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"maxPos": [
|
||||||
|
108.5,
|
||||||
|
106.5,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"isUuid": true,
|
||||||
|
"imageUuidOrDatabaseUri": "8188705e-b03f-4224-944c-aa443ba8e198@6c48a",
|
||||||
|
"atlasUuid": "",
|
||||||
|
"trimType": "auto"
|
||||||
|
},
|
||||||
|
"ver": "1.0.12",
|
||||||
|
"imported": true,
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userData": {
|
||||||
|
"type": "sprite-frame",
|
||||||
|
"hasAlpha": true,
|
||||||
|
"fixAlphaTransparencyArtifacts": false,
|
||||||
|
"redirect": "8188705e-b03f-4224-944c-aa443ba8e198@6c48a"
|
||||||
|
}
|
||||||
|
}
|
||||||
3
assets/games/atlas/rewards/auto-atlas.pac
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.SpriteAtlas"
|
||||||
|
}
|
||||||
36
assets/games/atlas/rewards/auto-atlas.pac.meta
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.8",
|
||||||
|
"importer": "auto-atlas",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "35330028-a50f-4ff1-ba32-5a0e04e3bbf2",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"maxWidth": 1024,
|
||||||
|
"maxHeight": 1024,
|
||||||
|
"padding": 2,
|
||||||
|
"allowRotation": true,
|
||||||
|
"forceSquared": false,
|
||||||
|
"powerOfTwo": false,
|
||||||
|
"algorithm": "MaxRects",
|
||||||
|
"format": "png",
|
||||||
|
"quality": 80,
|
||||||
|
"contourBleed": true,
|
||||||
|
"paddingBleed": true,
|
||||||
|
"filterUnused": false,
|
||||||
|
"removeTextureInBundle": false,
|
||||||
|
"removeImageInBundle": false,
|
||||||
|
"removeSpriteAtlasInBundle": false,
|
||||||
|
"compressSettings": {},
|
||||||
|
"textureSetting": {
|
||||||
|
"wrapModeS": "repeat",
|
||||||
|
"wrapModeT": "repeat",
|
||||||
|
"minfilter": "linear",
|
||||||
|
"magfilter": "linear",
|
||||||
|
"mipfilter": "none",
|
||||||
|
"anisotropy": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/prefabs.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "a49f7c60-2ec3-427a-8219-ae3f0886182d",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/prefabs/currency.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "95d180a6-c186-4180-b0fe-29815b9b8b7c",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
1942
assets/games/prefabs/currency/CurrencyContainer.prefab
Normal file
13
assets/games/prefabs/currency/CurrencyContainer.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "60f72a13-68d6-4351-97aa-e8318e375dda",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "CurrencyContainer"
|
||||||
|
}
|
||||||
|
}
|
||||||
632
assets/games/prefabs/currency/CurrencyItem.prefab
Normal file
@@ -0,0 +1,632 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "CurrencyItem",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "CurrencyItem",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 14
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 24
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 26
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "AddBtn",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": -47.279998779296875,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 49,
|
||||||
|
"height": 53
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "a2GgxdOy5KS7fwb8O+MJyL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "8056567a-7bb5-4d3e-b5f1-df94774d273d@f9941",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": null,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "9dfTYmKOZASbUwU1XtzELz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "7epLlueXRLJJ0LsZ991hOv",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "ValueLabel",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 11
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 10,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 46.55999755859375,
|
||||||
|
"height": 50.4
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "09wKAKnbBB+5lZqBGPJIvn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Label",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_string": "20",
|
||||||
|
"_horizontalAlign": 1,
|
||||||
|
"_verticalAlign": 1,
|
||||||
|
"_actualFontSize": 40,
|
||||||
|
"_fontSize": 40,
|
||||||
|
"_fontFamily": "Arial",
|
||||||
|
"_lineHeight": 40,
|
||||||
|
"_overflow": 0,
|
||||||
|
"_enableWrapText": true,
|
||||||
|
"_font": {
|
||||||
|
"__uuid__": "1e4ba4a2-7090-4e7b-8479-72285e08cdeb",
|
||||||
|
"__expectedType__": "cc.TTFFont"
|
||||||
|
},
|
||||||
|
"_isSystemFontUsed": false,
|
||||||
|
"_spacingX": 0,
|
||||||
|
"_isItalic": false,
|
||||||
|
"_isBold": false,
|
||||||
|
"_isUnderline": false,
|
||||||
|
"_underlineHeight": 2,
|
||||||
|
"_cacheMode": 0,
|
||||||
|
"_enableOutline": false,
|
||||||
|
"_outlineColor": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 0,
|
||||||
|
"g": 0,
|
||||||
|
"b": 0,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_outlineWidth": 2,
|
||||||
|
"_enableShadow": false,
|
||||||
|
"_shadowColor": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 0,
|
||||||
|
"g": 0,
|
||||||
|
"b": 0,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_shadowOffset": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 2,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
"_shadowBlur": 2,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "44zvc167VCRKo7OrwxzXs0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "1djLQFnGBH/bp9kcIVVJtl",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Icon",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 17
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 19
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 75,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 16
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 68,
|
||||||
|
"height": 91
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "61L4FvqltGmJkxCozXtvXb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "d4766020-e395-41f8-96d1-605e73caecc8@f9941",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": null,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "67KlomGiZGkoxxMddz6UMZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "83DdlgppxDqZ9HTy1Ld1x+",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 21
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 163.55999755859375,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "3dtCsSiNNH9I7OHE0LXe8z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 23
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 4,
|
||||||
|
"g": 33,
|
||||||
|
"b": 30,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "edc626d3-77ee-4880-b707-da79f9dd6d97@f9941",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 1,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 0,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": null,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "9a33L6+C1ITahVCBb3AYxx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Layout",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 25
|
||||||
|
},
|
||||||
|
"_resizeMode": 1,
|
||||||
|
"_layoutType": 1,
|
||||||
|
"_cellSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 40,
|
||||||
|
"height": 40
|
||||||
|
},
|
||||||
|
"_startAxis": 0,
|
||||||
|
"_paddingLeft": 10,
|
||||||
|
"_paddingRight": -50,
|
||||||
|
"_paddingTop": 0,
|
||||||
|
"_paddingBottom": 0,
|
||||||
|
"_spacingX": 20,
|
||||||
|
"_spacingY": 0,
|
||||||
|
"_verticalDirection": 1,
|
||||||
|
"_horizontalDirection": 0,
|
||||||
|
"_constraint": 0,
|
||||||
|
"_constraintNum": 2,
|
||||||
|
"_affectedByScale": false,
|
||||||
|
"_isAlign": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "d3QJZHxpBK0bRpdCfcnjsv"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "21S4TQDzROJK1npIOgoF+m",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/games/prefabs/currency/CurrencyItem.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "334b6dda-3905-424e-bea3-5c56d3c51efe",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "CurrencyItem"
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/prefabs/pet.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "a53e21a6-1d72-42c3-a8ea-ce4cd0dc318f",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
63
assets/games/prefabs/pet/DressGlareNode.prefab
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "DressGlareNode",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"asyncLoadAssets": false,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "DressGlareNode",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx"
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/games/prefabs/pet/DressGlareNode.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e8086588-8a5d-4210-bc27-389b6adcaf11",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "DressGlareNode"
|
||||||
|
}
|
||||||
|
}
|
||||||
340
assets/games/prefabs/pet/DressSocketNode.prefab
Normal file
@@ -0,0 +1,340 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "DressSocketNode",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "DressSocketNode",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Texture",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 100,
|
||||||
|
"height": 100
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c2tK6S82tEJq55LVlT4F3N"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": null,
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 2,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": false,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": null,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "a5XjaX0ABPP5RSoo98iHXa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "46WgrGcBpCU4AVxZHeUKo0",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Spine",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 11
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 100,
|
||||||
|
"height": 100
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.60222
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "e8PHvFTQdCub2YlQVztJGK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "sp.Skeleton",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_skeletonData": null,
|
||||||
|
"defaultSkin": "",
|
||||||
|
"defaultAnimation": "",
|
||||||
|
"_premultipliedAlpha": false,
|
||||||
|
"_timeScale": 1,
|
||||||
|
"_preCacheMode": -1,
|
||||||
|
"_cacheMode": 0,
|
||||||
|
"_sockets": [],
|
||||||
|
"_useTint": false,
|
||||||
|
"_debugMesh": false,
|
||||||
|
"_debugBones": false,
|
||||||
|
"_debugSlots": false,
|
||||||
|
"_enableBatch": false,
|
||||||
|
"loop": true,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "0bLrMfCo1HH4sNbP27AV7B"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "28LtEJQG9CerixgYrYjMCo",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/games/prefabs/pet/DressSocketNode.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "2366e791-ed40-4713-8037-8702c964ea37",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "DressSocketNode"
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/prefabs/redDot.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "6e6fdb82-af61-4574-bae8-f29c78b8eb4d",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/prefabs/uis.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "a2524a27-9d0d-465c-a1bd-01b4229c3ef1",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
2477
assets/games/prefabs/uis/CommonDialogBox.prefab
Normal file
13
assets/games/prefabs/uis/CommonDialogBox.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "b7a6cbd2-b13b-4eb9-9608-3d53c816315a",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "CommonDialogBox"
|
||||||
|
}
|
||||||
|
}
|
||||||
486
assets/games/prefabs/uis/CommonToast.prefab
Normal file
@@ -0,0 +1,486 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "CommonToast",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "CommonToast",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 20
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 22
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Container",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 13
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 930,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Content",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": -73,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 33554432,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 5
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 2460,
|
||||||
|
"height": 66.78
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "78F/C0LzlIZprU8L6fH1uZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.RichText",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_lineHeight": 53,
|
||||||
|
"_string": "",
|
||||||
|
"_horizontalAlign": 1,
|
||||||
|
"_verticalAlign": 1,
|
||||||
|
"_fontSize": 53,
|
||||||
|
"_fontColor": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_maxWidth": 2460,
|
||||||
|
"_fontFamily": "Arial",
|
||||||
|
"_font": {
|
||||||
|
"__uuid__": "1e4ba4a2-7090-4e7b-8479-72285e08cdeb",
|
||||||
|
"__expectedType__": "cc.TTFFont"
|
||||||
|
},
|
||||||
|
"_isSystemFontUsed": false,
|
||||||
|
"_userDefinedFont": {
|
||||||
|
"__uuid__": "1e4ba4a2-7090-4e7b-8479-72285e08cdeb",
|
||||||
|
"__expectedType__": "cc.TTFFont"
|
||||||
|
},
|
||||||
|
"_cacheMode": 0,
|
||||||
|
"_imageAtlas": {
|
||||||
|
"__uuid__": "35330028-a50f-4ff1-ba32-5a0e04e3bbf2",
|
||||||
|
"__expectedType__": "cc.SpriteAtlas"
|
||||||
|
},
|
||||||
|
"_handleTouchEvent": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c309HMP+5FiLw2COQEShKP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "95YqJo5jVJmKTQCV9sNJ8Q",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 2560,
|
||||||
|
"height": 183
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "6bie7ttBVMh60blIUo01g6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Widget",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
"_alignFlags": 40,
|
||||||
|
"_target": null,
|
||||||
|
"_left": 0,
|
||||||
|
"_right": 0,
|
||||||
|
"_top": -210,
|
||||||
|
"_bottom": 0,
|
||||||
|
"_horizontalCenter": 0,
|
||||||
|
"_verticalCenter": 0,
|
||||||
|
"_isAbsLeft": true,
|
||||||
|
"_isAbsRight": false,
|
||||||
|
"_isAbsTop": true,
|
||||||
|
"_isAbsBottom": true,
|
||||||
|
"_isAbsHorizontalCenter": true,
|
||||||
|
"_isAbsVerticalCenter": true,
|
||||||
|
"_originalWidth": 100,
|
||||||
|
"_originalHeight": 0,
|
||||||
|
"_alignMode": 2,
|
||||||
|
"_lockFlags": 0,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c8KBjUN7hMC69oIfCgH/Eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "536e0b99-f1b2-4e59-ab32-8c4e67fbbf4d@f9941",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 1,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 0,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": null,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "d4FnpitvxIcbRI9Nl01P7E"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "6fL3o6XlpH97wbcQQkpg3Z",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 17
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 2560,
|
||||||
|
"height": 1440
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "71asNAIwtAZq4DKjJ3k5YZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Widget",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 19
|
||||||
|
},
|
||||||
|
"_alignFlags": 45,
|
||||||
|
"_target": null,
|
||||||
|
"_left": 0,
|
||||||
|
"_right": 0,
|
||||||
|
"_top": 0,
|
||||||
|
"_bottom": 0,
|
||||||
|
"_horizontalCenter": 0,
|
||||||
|
"_verticalCenter": 0,
|
||||||
|
"_isAbsLeft": true,
|
||||||
|
"_isAbsRight": true,
|
||||||
|
"_isAbsTop": true,
|
||||||
|
"_isAbsBottom": true,
|
||||||
|
"_isAbsHorizontalCenter": true,
|
||||||
|
"_isAbsVerticalCenter": true,
|
||||||
|
"_originalWidth": 100,
|
||||||
|
"_originalHeight": 100,
|
||||||
|
"_alignMode": 2,
|
||||||
|
"_lockFlags": 0,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "edAc3cfJNCQJd0XDh0poPz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "3c532HQfoBBi78q+sTYBpzr",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 21
|
||||||
|
},
|
||||||
|
"contentLabel": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"containerNode": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "81f1XJM0JOWb0fH0GVh+PM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": []
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/games/prefabs/uis/CommonToast.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "f3d8831c-1525-4b2c-84b3-8f7d1910095f",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "CommonToast"
|
||||||
|
}
|
||||||
|
}
|
||||||
67
assets/games/prefabs/uis/GameUI.prefab
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "GameUI",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "GameUI",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0,
|
||||||
|
"w": 1
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/games/prefabs/uis/GameUI.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "1369e7f1-056a-4e3d-8484-39be5dface1e",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "GameUI"
|
||||||
|
}
|
||||||
|
}
|
||||||
16012
assets/games/prefabs/uis/MainUI-001.prefab
Normal file
13
assets/games/prefabs/uis/MainUI-001.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "682cc812-4182-4fe0-8b91-43c4d9b6add6",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "MainUI-001"
|
||||||
|
}
|
||||||
|
}
|
||||||
1582
assets/games/prefabs/uis/MainUI.prefab
Normal file
13
assets/games/prefabs/uis/MainUI.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "f5d33adb-6500-4a57-a4f7-e887749e98cd",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "MainUI"
|
||||||
|
}
|
||||||
|
}
|
||||||
2636
assets/games/prefabs/uis/ShopUI.prefab
Normal file
13
assets/games/prefabs/uis/ShopUI.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "be15b5af-c87d-4d9a-9faa-954318e815a6",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "ShopUI"
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e530c886-01d1-4780-a154-940c11ebc245",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/scripts/currency.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "99123257-14dc-48cf-a23c-a1155cd6dd44",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
64
assets/games/scripts/currency/CurrencyManager.ts
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import { _decorator } from "cc";
|
||||||
|
|
||||||
|
import { EventManager } from "@max-studio/core/event/EventManager";
|
||||||
|
import { Singleton } from "@max-studio/core/Singleton";
|
||||||
|
import LogUtils from "@max-studio/core/utils/LogUtils";
|
||||||
|
|
||||||
|
import { CurrencyEventMessage, CurrencyType } from "./Types";
|
||||||
|
|
||||||
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
|
@ccclass("CurrencyManager")
|
||||||
|
export class CurrencyManager extends Singleton {
|
||||||
|
private currencyValues: Record<CurrencyType, number> = {} as Record<CurrencyType, number>;
|
||||||
|
|
||||||
|
/** 获取货币值 */
|
||||||
|
public getCurrencyValue(type: CurrencyType): number {
|
||||||
|
return this.currencyValues[type] || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 设置货币值 */
|
||||||
|
public setCurrencyValue(type: CurrencyType, value: number, isNotify: boolean = true) {
|
||||||
|
this.currencyValues[type] = value;
|
||||||
|
if (isNotify) {
|
||||||
|
EventManager.getInstance().emit(CurrencyEventMessage.CURRENCY_VALUE_CHANGED, type, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 格式化货币显示 */
|
||||||
|
public formatCurrencyDisplay(type: CurrencyType, value?: number): string {
|
||||||
|
const amount = value ?? this.getCurrencyValue(type);
|
||||||
|
|
||||||
|
// 根据货币类型返回不同的格式
|
||||||
|
if (amount >= 1000000) {
|
||||||
|
return `${(amount / 1000000).toFixed(1)}M`;
|
||||||
|
} else if (amount >= 1000) {
|
||||||
|
return `${(amount / 1000).toFixed(1)}K`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return amount.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 检查货币是否足够 */
|
||||||
|
public isCurrencyEnough(type: CurrencyType, amount: number): boolean {
|
||||||
|
return this.getCurrencyValue(type) >= amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 消耗货币 */
|
||||||
|
public consumeCurrency(type: CurrencyType, amount: number, isNotify: boolean = true): boolean {
|
||||||
|
if (amount <= 0) {
|
||||||
|
LogUtils.warn(`[CurrencyManager] 消耗货币数量必须大于0: ${amount}`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.isCurrencyEnough(type, amount)) {
|
||||||
|
LogUtils.warn(`[CurrencyManager] 货币不足: ${type}, 需要: ${amount}, 当前: ${this.getCurrencyValue(type)}`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentValue = this.getCurrencyValue(type);
|
||||||
|
const newValue = currentValue - amount;
|
||||||
|
this.setCurrencyValue(type, newValue, isNotify);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/currency/CurrencyManager.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "0474457b-c003-444f-b68b-9279920ba444",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/scripts/currency/Types.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export enum CurrencyType {
|
||||||
|
ENERGY = "energy",
|
||||||
|
GEM = "gem",
|
||||||
|
GOLD = "gold",
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum CurrencyEventMessage {
|
||||||
|
CURRENCY_VALUE_CHANGED = 'currency_value_changed',
|
||||||
|
}
|
||||||
9
assets/games/scripts/currency/Types.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "4eb1626b-f4b8-4566-b197-30c135c7e3a8",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/scripts/currency/components.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "ea4b3885-21a2-4076-8162-00bd5ee2c090",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
46
assets/games/scripts/currency/components/CurrencyItem.ts
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { _decorator, Component, Enum, Label } from "cc";
|
||||||
|
|
||||||
|
import { EventManager } from "@max-studio/core/event/EventManager";
|
||||||
|
import UIManager from "@max-studio/core/ui/UIManager";
|
||||||
|
import LogUtils from "@max-studio/core/utils/LogUtils";
|
||||||
|
|
||||||
|
import { ShopUI } from "../../uis/ShopUI";
|
||||||
|
import { CurrencyManager } from "../CurrencyManager";
|
||||||
|
import { CurrencyEventMessage, CurrencyType } from "../Types";
|
||||||
|
import { onEvent } from "@max-studio/core/decorators";
|
||||||
|
|
||||||
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
|
@ccclass("CurrencyItem")
|
||||||
|
export class CurrencyItem extends Component {
|
||||||
|
@property({ type: Enum(CurrencyType) })
|
||||||
|
public type: CurrencyType = CurrencyType.ENERGY;
|
||||||
|
|
||||||
|
@property(Label)
|
||||||
|
public label: Label = null!;
|
||||||
|
|
||||||
|
protected onLoad(): void {
|
||||||
|
this.node.onClick(this.onGotoCurrencyShop, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private onGotoCurrencyShop() {
|
||||||
|
LogUtils.log("点击了货币商店:", this.type);
|
||||||
|
void UIManager.getInstance().openUI(ShopUI, this.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@onEvent(CurrencyEventMessage.CURRENCY_VALUE_CHANGED)
|
||||||
|
private onCurrencyValueChanged(type: CurrencyType, value: number) {
|
||||||
|
if (type !== this.type) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.label.string = CurrencyManager.getInstance().formatCurrencyDisplay(this.type, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected onDestroy(): void {
|
||||||
|
EventManager.getInstance().off(CurrencyEventMessage.CURRENCY_VALUE_CHANGED, this.onCurrencyValueChanged, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected start(): void {
|
||||||
|
this.label.string = CurrencyManager.getInstance().formatCurrencyDisplay(this.type);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "8840c2d8-d822-482c-b68f-2a88cd9c8e72",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.0",
|
||||||
|
"importer": "directory",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "d098e1e4-9d54-4ad0-88f0-f13bf7c77e51",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
232
assets/games/scripts/pets/BasePart.ts
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
import { instantiate, Node, sp, Sprite, SpriteFrame, Texture2D } from "cc";
|
||||||
|
import { DRESS_PART, DRESS_SOURCE_TYPE, IDressInfo, SPINE_SLOT, SPINE_SOCKET } from "./Types";
|
||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
import { loadDressSocketNode } from "./PetUtils";
|
||||||
|
import { StringUtils } from "@max-studio/core/utils/StringUtils";
|
||||||
|
|
||||||
|
export class BasePart {
|
||||||
|
protected skeleton: sp.Skeleton = null;
|
||||||
|
protected info: IDressInfo = null;
|
||||||
|
protected socketName: string = null;
|
||||||
|
protected part: DRESS_PART = null;
|
||||||
|
protected faceSkeleton: sp.Skeleton = null;
|
||||||
|
protected socketMountNode: Node = null;
|
||||||
|
protected socketCache: Map<string, sp.SpineSocket> = new Map();
|
||||||
|
protected socketNode: Node = null;
|
||||||
|
|
||||||
|
constructor(ske: sp.Skeleton, part: DRESS_PART) {
|
||||||
|
this.skeleton = ske;
|
||||||
|
this.part = part;
|
||||||
|
this.socketName = SPINE_SOCKET[part];
|
||||||
|
this.faceSkeleton = ske.node.getChildByName("face")?.getComponent(sp.Skeleton);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async putOn(info: IDressInfo) {
|
||||||
|
this.takeOff();
|
||||||
|
this.info = info;
|
||||||
|
if (info.sourceLocationType == DRESS_SOURCE_TYPE.SLOT) {
|
||||||
|
await this.putOnBySlot(info);
|
||||||
|
} else {
|
||||||
|
await this.putOnBySocket(info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public takeOff() {
|
||||||
|
if (this.info == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const partSkeleton = this.getPartSkeleton();
|
||||||
|
if (this.info.sourceLocationType == DRESS_SOURCE_TYPE.SLOT) {
|
||||||
|
const slotName = SPINE_SLOT[this.part];
|
||||||
|
if (StringUtils.isEmpty(slotName) || partSkeleton == null) {
|
||||||
|
console.error("宠物_槽位_空", slotName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const slot = partSkeleton.findSlot(slotName);
|
||||||
|
if (!slot) {
|
||||||
|
console.error("宠物_槽位_不存在", slotName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (slot.texture) {
|
||||||
|
ResManager.getInstance().releaseAsset(slot.texture);
|
||||||
|
slot.texture = null;
|
||||||
|
}
|
||||||
|
partSkeleton.setSlotTexture(slotName, null, true);
|
||||||
|
} else {
|
||||||
|
if (!this.socketNode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const socketSprite = this.socketNode.getOrAddComponent(Sprite, "Texture");
|
||||||
|
if (socketSprite && socketSprite.spriteFrame) {
|
||||||
|
ResManager.getInstance().releaseAsset(socketSprite.spriteFrame);
|
||||||
|
socketSprite.spriteFrame = null;
|
||||||
|
}
|
||||||
|
const spine = this.socketNode.getOrAddComponent(sp.Skeleton, "Spine");
|
||||||
|
if (spine && spine.skeletonData) {
|
||||||
|
ResManager.getInstance().releaseAsset(spine.skeletonData);
|
||||||
|
spine.skeletonData = undefined;
|
||||||
|
spine.animation = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.info = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getPartSkeleton() {
|
||||||
|
if (
|
||||||
|
this.part == DRESS_PART.GLASSES ||
|
||||||
|
this.part == DRESS_PART.ACCESS ||
|
||||||
|
this.info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_TEX_FACE ||
|
||||||
|
this.info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_SPINE_FACE
|
||||||
|
) {
|
||||||
|
return this.faceSkeleton;
|
||||||
|
}
|
||||||
|
return this.skeleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getPartBonePath(skeleton: sp.Skeleton, name: string) {
|
||||||
|
let path = "";
|
||||||
|
console.log("获取宠物_骨骼_路径:", name);
|
||||||
|
let bone = skeleton.findBone(name);
|
||||||
|
if (bone) {
|
||||||
|
path = bone.data.name;
|
||||||
|
while (bone.parent) {
|
||||||
|
bone = bone.parent;
|
||||||
|
path = `${bone.data.name}/${path}`;
|
||||||
|
if ("root" == bone.data.name) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getSocketNode(ske: sp.Skeleton, path: string): sp.SpineSocket {
|
||||||
|
let socket = this.socketCache.get(path);
|
||||||
|
if (socket == null) {
|
||||||
|
const sockets = ske.sockets as sp.SpineSocket[];
|
||||||
|
socket = sockets.find((s) => s.path == path);
|
||||||
|
if (!socket) {
|
||||||
|
console.error("宠物_挂点_不存在 创建挂点:", path);
|
||||||
|
socket = new sp.SpineSocket(path);
|
||||||
|
sockets.push(socket);
|
||||||
|
ske.sockets = sockets;
|
||||||
|
}
|
||||||
|
this.socketCache.set(path, socket);
|
||||||
|
}
|
||||||
|
return socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async putOnBySlot(info: IDressInfo) {
|
||||||
|
const partSkeleton = this.getPartSkeleton();
|
||||||
|
const slotName = SPINE_SLOT[this.part];
|
||||||
|
if (StringUtils.isEmpty(slotName) || partSkeleton == null) {
|
||||||
|
console.error("宠物_槽位_空", slotName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const slot = partSkeleton.findSlot(slotName);
|
||||||
|
if (!slot) {
|
||||||
|
console.error("宠物_槽位_不存在", slotName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!info) {
|
||||||
|
if (slot.texture) {
|
||||||
|
ResManager.getInstance().releaseAsset(slot.texture);
|
||||||
|
slot.texture = null;
|
||||||
|
}
|
||||||
|
partSkeleton.setSlotTexture(slotName, null, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { err, asset } = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "dress-spine",
|
||||||
|
path: `DressTexture/${info.sourceName}`,
|
||||||
|
type: Texture2D,
|
||||||
|
});
|
||||||
|
if (err) {
|
||||||
|
console.error("加载宠物_槽位_失败", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.info != info) {
|
||||||
|
ResManager.getInstance().releaseAsset(asset);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (slot.texture != null) {
|
||||||
|
ResManager.getInstance().releaseAsset(slot.texture);
|
||||||
|
slot.texture = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
slot.texture = asset;
|
||||||
|
partSkeleton.setSlotTexture(slotName, asset, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async putOnBySocket(info: IDressInfo) {
|
||||||
|
const partSkeleton = this.getPartSkeleton();
|
||||||
|
const bonePath = this.getPartBonePath(partSkeleton, this.socketName);
|
||||||
|
if (this.socketNode == null) {
|
||||||
|
const socketPrefab = await loadDressSocketNode();
|
||||||
|
if (socketPrefab == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.socketNode = instantiate(socketPrefab);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_TEX_FACE ||
|
||||||
|
info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_TEX
|
||||||
|
) {
|
||||||
|
const loadInfo = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "dress-spine",
|
||||||
|
path: `DressTexture/${info.sourceName}`,
|
||||||
|
type: SpriteFrame,
|
||||||
|
});
|
||||||
|
if (loadInfo.err) {
|
||||||
|
console.error("加载宠物_socket_tex失败", loadInfo.err);
|
||||||
|
} else {
|
||||||
|
if (this.info == info) {
|
||||||
|
const socketSprite = this.socketNode.getOrAddComponent(Sprite, "Texture");
|
||||||
|
socketSprite.spriteFrame = loadInfo.asset as SpriteFrame;
|
||||||
|
} else {
|
||||||
|
console.warn("加载宠物_socket_tex失败,但是不是当前宠物");
|
||||||
|
ResManager.getInstance().releaseAsset(loadInfo.asset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (
|
||||||
|
info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_SPINE ||
|
||||||
|
info.sourceLocationType == DRESS_SOURCE_TYPE.SOCKET_SPINE_FACE
|
||||||
|
) {
|
||||||
|
const loadInfo = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "dress-spine",
|
||||||
|
path: `DressSpine/${info.sourceName}/${info.sourceName}`,
|
||||||
|
type: sp.SkeletonData,
|
||||||
|
});
|
||||||
|
if (loadInfo.err) {
|
||||||
|
console.error("加载宠物_socket_spine失败", loadInfo.err);
|
||||||
|
} else {
|
||||||
|
if (this.info == info) {
|
||||||
|
const spine = this.socketNode.getOrAddComponent(sp.Skeleton, "Spine");
|
||||||
|
spine.animation = undefined;
|
||||||
|
spine.skeletonData = loadInfo.asset as sp.SkeletonData;
|
||||||
|
spine.setAnimation(0, "idle", true);
|
||||||
|
} else {
|
||||||
|
console.warn("加载宠物_socket_spine失败,但是不是当前宠物");
|
||||||
|
ResManager.getInstance().releaseAsset(loadInfo.asset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.socketNode.setParent(partSkeleton.node);
|
||||||
|
const socket = this.getSocketNode(partSkeleton, bonePath);
|
||||||
|
this.socketNode.layer = partSkeleton.node.layer;
|
||||||
|
socket.target = this.socketNode;
|
||||||
|
const socketSpine = this.socketNode.getOrAddComponent(sp.Skeleton);
|
||||||
|
if (socketSpine && socketSpine.skeletonData) {
|
||||||
|
socketSpine.setAnimation(0, "idle", true);
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line no-self-assign
|
||||||
|
partSkeleton.sockets = partSkeleton.sockets;
|
||||||
|
this.setSocketZIndex();
|
||||||
|
}
|
||||||
|
protected setSocketZIndex() {
|
||||||
|
if (this.socketNode) {
|
||||||
|
this.socketNode.setSiblingIndex(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/BasePart.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e07784d9-9898-4cde-b467-3deaba247a36",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
82
assets/games/scripts/pets/BasePet.ts
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
import { Component, _decorator, sp } from "cc";
|
||||||
|
import { COMMON_FACE_ANIM, DRESS_PART, IDressInfo, PET_ANIM_NAME, PET_BODY_FACE_ANIM_MAP, PetInfo } from "./Types";
|
||||||
|
import { autoBind } from "@max-studio/core/ui/UIDecorator";
|
||||||
|
import { BasePart } from "./BasePart";
|
||||||
|
import { GlarePart } from "./GlarePart";
|
||||||
|
const { ccclass } = _decorator;
|
||||||
|
|
||||||
|
@ccclass("BasePet")
|
||||||
|
export class BasePet extends Component {
|
||||||
|
private petInfo: PetInfo;
|
||||||
|
|
||||||
|
@autoBind("RootNode/PetAni", sp.Skeleton)
|
||||||
|
private petBodySkeleton: sp.Skeleton = null;
|
||||||
|
|
||||||
|
@autoBind("RootNode/PetAni/face", sp.Skeleton)
|
||||||
|
private petFace: sp.Skeleton = null;
|
||||||
|
|
||||||
|
private parts: Map<DRESS_PART, BasePart> = new Map();
|
||||||
|
|
||||||
|
protected onLoad(): void {
|
||||||
|
this.parts.set(DRESS_PART.GLARE, new GlarePart(this.petBodySkeleton, DRESS_PART.GLARE));
|
||||||
|
this.parts.set(DRESS_PART.BAG, new BasePart(this.petBodySkeleton, DRESS_PART.BAG));
|
||||||
|
this.parts.set(DRESS_PART.GLASSES, new BasePart(this.petBodySkeleton, DRESS_PART.GLASSES));
|
||||||
|
this.parts.set(DRESS_PART.HAT, new BasePart(this.petBodySkeleton, DRESS_PART.HAT));
|
||||||
|
this.parts.set(DRESS_PART.ACCESS, new BasePart(this.petBodySkeleton, DRESS_PART.ACCESS));
|
||||||
|
}
|
||||||
|
|
||||||
|
public setInfo(info: PetInfo) {
|
||||||
|
this.petInfo = info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getInfo(): PetInfo {
|
||||||
|
return this.petInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async putOn(info: IDressInfo) {
|
||||||
|
const { type, sourceLocationType, sourceName } = info;
|
||||||
|
if (type == DRESS_PART.SUIT) {
|
||||||
|
if (info.dressMap) {
|
||||||
|
info.dressMap.forEach(async (dressInfo) => {
|
||||||
|
await this.parts.get(dressInfo.type)?.putOn(dressInfo);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await this.parts.get(type)?.putOn(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
public takeOff(type: DRESS_PART = DRESS_PART.ALL) {
|
||||||
|
if (type == DRESS_PART.ALL) {
|
||||||
|
this.parts.forEach((part) => {
|
||||||
|
part.takeOff();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.parts.get(type)?.takeOff();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public playAnim(anim: PET_ANIM_NAME) {
|
||||||
|
this.petBodySkeleton.setAnimation(0, anim, true);
|
||||||
|
const faceAnim = PET_BODY_FACE_ANIM_MAP[anim] ?? PET_ANIM_NAME.IDLE;
|
||||||
|
this.petFace.setAnimation(0, faceAnim, true);
|
||||||
|
this.setFaceSkinFromAnim(faceAnim);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected setFaceSkinFromAnim(faceAnim: PET_ANIM_NAME) {
|
||||||
|
let faceSkin: string = faceAnim;
|
||||||
|
if (!COMMON_FACE_ANIM.includes(faceAnim)) {
|
||||||
|
faceSkin = `eye/${this.petInfo.name}`;
|
||||||
|
}
|
||||||
|
this.petFace.setSkin(faceSkin);
|
||||||
|
this.petFace._skeleton?.slots.forEach((slot) => {
|
||||||
|
const slotName = slot.data.name.toLowerCase();
|
||||||
|
if (slotName.endsWith("_hui")) {
|
||||||
|
slot.color.a = slotName == `${this.petInfo.name}_hui`.toLowerCase() ? 1 : 0;
|
||||||
|
}
|
||||||
|
if (slotName.startsWith("dk")) {
|
||||||
|
console.log("slotName:", slotName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/BasePet.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "5df90b9c-7a32-4e70-b46f-1510986c73d4",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
3
assets/games/scripts/pets/FacePart.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import { BasePart } from "./BasePart";
|
||||||
|
|
||||||
|
export class FacePart extends BasePart {}
|
||||||
9
assets/games/scripts/pets/FacePart.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "dbc0d9b3-b0a1-4121-8e48-9c991101a10b",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
90
assets/games/scripts/pets/GlarePart.ts
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
import { easing, instantiate, Node, Prefab, sp, tween, Tween, Vec3 } from "cc";
|
||||||
|
import { BasePart } from "./BasePart";
|
||||||
|
import { DRESS_PART, DRESS_SOURCE_TYPE, IDressInfo } from "./Types";
|
||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
|
||||||
|
const GLARE_NODE_NAME = "glare";
|
||||||
|
const GLARE_DEFAULT_POSITION = new Vec3(-170, 0, 0);
|
||||||
|
|
||||||
|
export class GlarePart extends BasePart {
|
||||||
|
private glareNode: Node = null;
|
||||||
|
private glareSpine: sp.Skeleton = null;
|
||||||
|
private glarePrefab: Prefab = null;
|
||||||
|
|
||||||
|
constructor(ske: sp.Skeleton, part: DRESS_PART) {
|
||||||
|
super(ske, part);
|
||||||
|
this.getGlareNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async putOn(info: IDressInfo) {
|
||||||
|
this.takeOff();
|
||||||
|
this.info = info;
|
||||||
|
const loadInfo = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "dress-spine",
|
||||||
|
path: `DressGlare/${info.sourceName}`,
|
||||||
|
type: Prefab,
|
||||||
|
});
|
||||||
|
if (loadInfo.err) {
|
||||||
|
console.error("加载宠物_槽位_失败", loadInfo.err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.glarePrefab = loadInfo.asset;
|
||||||
|
const node = instantiate(loadInfo.asset);
|
||||||
|
node.name = "sp";
|
||||||
|
node.setParent(this.glareNode);
|
||||||
|
if (node == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.glareSpine = node.getComponent(sp.Skeleton);
|
||||||
|
this.glareSpine.setAnimation(0, "animation", false);
|
||||||
|
this.glareNode.setScale(this.skeleton.node.scale);
|
||||||
|
Tween.stopAllByTarget(this.glareNode);
|
||||||
|
const dir = this.glareNode.scale.x;
|
||||||
|
GLARE_DEFAULT_POSITION.x = dir > 0 ? -170 : 170;
|
||||||
|
|
||||||
|
tween(this.glareNode).to(0.35, { position: GLARE_DEFAULT_POSITION }, { easing: easing.sineOut }).start();
|
||||||
|
|
||||||
|
if (this.info.sourceLocationType == DRESS_SOURCE_TYPE.NONE) {
|
||||||
|
this.glareNode.setSiblingIndex(0);
|
||||||
|
} else {
|
||||||
|
this.glareNode.setSiblingIndex(this.glareNode.parent.children.length - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public takeOff() {
|
||||||
|
if (this.glareSpine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.glareSpine) {
|
||||||
|
this.glareSpine.node.destroy();
|
||||||
|
this.glareSpine = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.glarePrefab) {
|
||||||
|
ResManager.getInstance().releaseAsset(this.glarePrefab);
|
||||||
|
this.glarePrefab = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.glareNode) {
|
||||||
|
Tween.stopAllByTarget(this.glareNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.info = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getGlareNode() {
|
||||||
|
if (this.glareNode) {
|
||||||
|
return this.glareNode;
|
||||||
|
}
|
||||||
|
const root = this.skeleton.node.parent;
|
||||||
|
if (!root) {
|
||||||
|
console.error("没有找到根节点");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
this.glareNode = new Node(GLARE_NODE_NAME);
|
||||||
|
this.glareNode.setParent(root);
|
||||||
|
this.glareNode.setPosition(GLARE_DEFAULT_POSITION);
|
||||||
|
this.glareNode.setSiblingIndex(0);
|
||||||
|
return this.glareNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/GlarePart.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "f5f29e43-e981-42ee-96c5-b993931e25e4",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/GlassesPart.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { BasePart } from "./BasePart";
|
||||||
|
|
||||||
|
export class GlassesPart extends BasePart {
|
||||||
|
protected setSocketZIndex(): void {
|
||||||
|
if (this.socketNode) {
|
||||||
|
this.socketNode.setSiblingIndex(this.socketNode.parent.children.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/GlassesPart.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "86abc774-d404-4392-b642-463b5e5470dc",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
55
assets/games/scripts/pets/PetManager.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
import { Singleton } from "@max-studio/core/Singleton";
|
||||||
|
import { instantiate, Prefab } from "cc";
|
||||||
|
import { BasePet } from "./BasePet";
|
||||||
|
import { releaseDressSocketNode } from "./PetUtils";
|
||||||
|
|
||||||
|
export class PetManager extends Singleton {
|
||||||
|
private petPrefabCache: Map<string, Prefab> = new Map();
|
||||||
|
|
||||||
|
public async getPet(name: string): Promise<BasePet> {
|
||||||
|
let asset: Prefab = null;
|
||||||
|
if (this.petPrefabCache.has(name)) {
|
||||||
|
asset = this.petPrefabCache.get(name);
|
||||||
|
if (asset == null) {
|
||||||
|
console.error(`宠物预制体缓存为空 ${name}`);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
asset.addRef();
|
||||||
|
} else {
|
||||||
|
const loadInfo = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "pet-spine",
|
||||||
|
path: name,
|
||||||
|
type: Prefab,
|
||||||
|
});
|
||||||
|
if (loadInfo.err) {
|
||||||
|
console.error(`加载宠物预制体失败 ${name}`, loadInfo.err);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
asset = loadInfo.asset;
|
||||||
|
this.petPrefabCache.set(name, asset);
|
||||||
|
}
|
||||||
|
const basePet = instantiate(asset).getOrAddComponent(BasePet);
|
||||||
|
basePet.setInfo({ name: name });
|
||||||
|
return basePet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public releasePet(pet: BasePet) {
|
||||||
|
const petName = pet.getInfo().name;
|
||||||
|
pet.takeOff();
|
||||||
|
pet.node.removeFromParent();
|
||||||
|
pet.node.destroy();
|
||||||
|
if (this.petPrefabCache.has(petName)) {
|
||||||
|
const prefab = this.petPrefabCache.get(petName);
|
||||||
|
ResManager.getInstance().releaseAsset(prefab);
|
||||||
|
if (prefab.refCount == 0) {
|
||||||
|
this.petPrefabCache.delete(petName);
|
||||||
|
console.log(`释放宠物预制体成功 ${petName}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected onRelease(): void {
|
||||||
|
releaseDressSocketNode();
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/PetManager.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e9aeecff-fbae-4e76-8620-bb0f5664ad62",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
29
assets/games/scripts/pets/PetUtils.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import ResManager from "@max-studio/core/res/ResManager";
|
||||||
|
import { Prefab } from "cc";
|
||||||
|
|
||||||
|
const DRESS_SOCKET_NODE_PATH = "prefabs/pet/DressSocketNode";
|
||||||
|
let socketPrefab: Prefab = null;
|
||||||
|
|
||||||
|
export async function loadDressSocketNode(): Promise<Prefab> {
|
||||||
|
if (socketPrefab != null) {
|
||||||
|
return socketPrefab;
|
||||||
|
}
|
||||||
|
const loadInfo = await ResManager.getInstance().loadAsset({
|
||||||
|
bundle: "games",
|
||||||
|
path: DRESS_SOCKET_NODE_PATH,
|
||||||
|
type: Prefab,
|
||||||
|
});
|
||||||
|
if (loadInfo.err) {
|
||||||
|
console.error(`加载 DressSocketNode 失败: ${loadInfo.err}`);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
socketPrefab = loadInfo.asset;
|
||||||
|
return socketPrefab;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function releaseDressSocketNode() {
|
||||||
|
if (socketPrefab != null) {
|
||||||
|
ResManager.getInstance().releaseAsset(socketPrefab);
|
||||||
|
socketPrefab = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
assets/games/scripts/pets/PetUtils.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "ccf9a987-4dc8-4993-856e-b9ea38c19731",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
125
assets/games/scripts/pets/Types.ts
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
export interface PetInfo {
|
||||||
|
name: string;
|
||||||
|
petId?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IDressInfo {
|
||||||
|
/**
|
||||||
|
* 装扮部位
|
||||||
|
*/
|
||||||
|
type: DRESS_PART;
|
||||||
|
sourceLocationType: DRESS_SOURCE_TYPE;
|
||||||
|
sourceName: string;
|
||||||
|
/**
|
||||||
|
* 套装信息
|
||||||
|
*/
|
||||||
|
dressMap?: Map<number, IDressInfo>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DRESS_PART {
|
||||||
|
/**
|
||||||
|
* 套装
|
||||||
|
*/
|
||||||
|
SUIT = 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 背包
|
||||||
|
*/
|
||||||
|
BAG = 1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 帽子
|
||||||
|
*/
|
||||||
|
HAT = 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 眼镜
|
||||||
|
*/
|
||||||
|
GLASSES = 3,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
ACCESS = 4,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 炫光
|
||||||
|
*/
|
||||||
|
GLARE = 5,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有
|
||||||
|
*/
|
||||||
|
ALL = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DRESS_SOURCE_TYPE {
|
||||||
|
NONE = 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 槽位
|
||||||
|
*/
|
||||||
|
SLOT = 1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 挂点静态图
|
||||||
|
*/
|
||||||
|
SOCKET_TEX = 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 挂点动画
|
||||||
|
*/
|
||||||
|
SOCKET_SPINE = 3,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 挂点静态图-脸
|
||||||
|
*/
|
||||||
|
SOCKET_TEX_FACE = 4,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 挂点动画-脸
|
||||||
|
*/
|
||||||
|
SOCKET_SPINE_FACE = 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SPINE_SLOT: Record<number, string> = {
|
||||||
|
[DRESS_PART.BAG]: "glasses/bag",
|
||||||
|
[DRESS_PART.HAT]: "glasses/zs_hat_01",
|
||||||
|
[DRESS_PART.GLASSES]: "glasses/zs_glass_01",
|
||||||
|
[DRESS_PART.ACCESS]: "glasses/zs_hdi_01",
|
||||||
|
};
|
||||||
|
|
||||||
|
export const SPINE_SOCKET: Record<number, string> = {
|
||||||
|
[DRESS_PART.BAG]: "Bag",
|
||||||
|
[DRESS_PART.HAT]: "Hat",
|
||||||
|
[DRESS_PART.GLASSES]: "Glasses",
|
||||||
|
[DRESS_PART.ACCESS]: "ZS",
|
||||||
|
};
|
||||||
|
|
||||||
|
export enum PET_ANIM_NAME {
|
||||||
|
IDLE = "idle",
|
||||||
|
HAPPY = "happy",
|
||||||
|
SLEEP = "sleep",
|
||||||
|
VERTIGO = "vertigo",
|
||||||
|
EAT = "eat",
|
||||||
|
MOTOU = "motou",
|
||||||
|
RUN = "run",
|
||||||
|
WALK = "walk",
|
||||||
|
PLAY = "hudong_hudie",
|
||||||
|
ANGRY = "angry",
|
||||||
|
}
|
||||||
|
|
||||||
|
export const PET_BODY_FACE_ANIM_MAP: Record<PET_ANIM_NAME, PET_ANIM_NAME> = {
|
||||||
|
[PET_ANIM_NAME.IDLE]: PET_ANIM_NAME.IDLE,
|
||||||
|
[PET_ANIM_NAME.HAPPY]: PET_ANIM_NAME.HAPPY,
|
||||||
|
[PET_ANIM_NAME.SLEEP]: PET_ANIM_NAME.SLEEP,
|
||||||
|
[PET_ANIM_NAME.VERTIGO]: PET_ANIM_NAME.VERTIGO,
|
||||||
|
[PET_ANIM_NAME.EAT]: PET_ANIM_NAME.HAPPY,
|
||||||
|
[PET_ANIM_NAME.MOTOU]: PET_ANIM_NAME.MOTOU,
|
||||||
|
[PET_ANIM_NAME.RUN]: PET_ANIM_NAME.IDLE,
|
||||||
|
[PET_ANIM_NAME.WALK]: PET_ANIM_NAME.IDLE,
|
||||||
|
[PET_ANIM_NAME.PLAY]: PET_ANIM_NAME.HAPPY,
|
||||||
|
[PET_ANIM_NAME.ANGRY]: PET_ANIM_NAME.ANGRY,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const COMMON_FACE_ANIM = [PET_ANIM_NAME.SLEEP, PET_ANIM_NAME.ANGRY, PET_ANIM_NAME.VERTIGO, PET_ANIM_NAME.HAPPY];
|
||||||
9
assets/games/scripts/pets/Types.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "25f7a591-83b6-4490-9f3f-bc18d0dfbf76",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
3
assets/games/scripts/pets/index.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// import BasePet from "./BasePet";
|
||||||
|
export { PetManager } from "./PetManager";
|
||||||
|
export { BasePet } from "./BasePet";
|
||||||
9
assets/games/scripts/pets/index.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "d269dbc8-fcc2-48c2-8f83-4c35dcb4a760",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||