From 826e52d01917b3bf23e3052a04892c227be6732e Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 15:10:51 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E5=92=8C=E9=85=8D=E7=BD=AE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/Sub/UI/PreloadUI.ts | 10 +- .../chat18x/config/AiCharacterConfig.ts | 14 + assets/Scripts/chat18x/config/GirlConfig.ts | 14 + .../chat18x/config/GirlDetailConfig.ts | 111 +- assets/Scripts/chat18x/config/GlobalConfig.ts | 14 + .../Scripts/chat18x/config/PurchaseConfig.ts | 66 + assets/Scripts/chat18x/data/AccountData.ts | 22 +- assets/Scripts/chat18x/data/BaseData.ts | 7 + assets/Scripts/chat18x/data/DataManager.ts | 8 + assets/Scripts/chat18x/data/EnvData.ts | 32 + assets/Scripts/chat18x/data/EnvData.ts.meta | 9 + assets/Scripts/chat18x/data/GirlBriefData.ts | 148 + .../chat18x/data/GirlBriefData.ts.meta | 9 + assets/Scripts/chat18x/data/GirlChatData.ts | 79 + .../Scripts/chat18x/data/GirlChatData.ts.meta | 9 + assets/Scripts/chat18x/data/GirlData.ts | 707 +- assets/Scripts/chat18x/data/GirlDetailData.ts | 228 + .../chat18x/data/GirlDetailData.ts.meta | 9 + .../chat18x/data/GirlFavorabilityData.ts | 54 + .../chat18x/data/GirlFavorabilityData.ts.meta | 9 + assets/Scripts/chat18x/data/GirlUnlockData.ts | 130 + .../chat18x/data/GirlUnlockData.ts.meta | 9 + assets/Scripts/chat18x/data/ThemeData.ts | 8 +- assets/Scripts/chat18x/data/WalletData.ts | 22 +- .../network/services/MockAuthService.ts | 21 +- .../network/services/MockGirlService.ts | 189 +- .../network/services/MockPlayerDataService.ts | 22 +- .../network/services/MockThemeService.ts | 4 +- .../network/services/PlayerDataService.ts | 2 +- .../chat18x/ui/panels/GirlDetailPanel.ts | 20 +- .../chat18x/ui/panels/GirlListPanel.ts | 2 +- .../Scripts/chat18x/ui/panels/ThemePanel.ts | 6 +- .../chat18x/uiitems/DetailImageItem.ts | 12 +- assets/Scripts/proto/proto.pb.d.ts | 4237 ++++-- assets/Scripts/proto/proto.pb.js | 10599 ++++++++++++---- assets/Scripts/schema/schema.ts | 90 +- assets/bundles/DataTable/tbaicharacters.bin | Bin 39241 -> 79915 bytes assets/bundles/DataTable/tbgirls.bin | Bin 1339 -> 3656 bytes assets/bundles/DataTable/tbgirlsdetail.bin | Bin 11656 -> 15320 bytes assets/bundles/DataTable/tbglobalconfig.bin | Bin 2323 -> 2324 bytes assets/bundles/DataTable/tblanguage.bin | Bin 6161 -> 6786 bytes assets/bundles/DataTable/tbpurchaseconfig.bin | 3 +- assets/bundles/DataTable/tbthemes.bin | Bin 314 -> 311 bytes proto_cs | 2 +- settings/v2/packages/cocos-service.json | 2 +- settings/v2/packages/information.json | 12 +- xchat_cfg | 2 +- 47 files changed, 12826 insertions(+), 4127 deletions(-) create mode 100644 assets/Scripts/chat18x/data/EnvData.ts create mode 100644 assets/Scripts/chat18x/data/EnvData.ts.meta create mode 100644 assets/Scripts/chat18x/data/GirlBriefData.ts create mode 100644 assets/Scripts/chat18x/data/GirlBriefData.ts.meta create mode 100644 assets/Scripts/chat18x/data/GirlChatData.ts create mode 100644 assets/Scripts/chat18x/data/GirlChatData.ts.meta create mode 100644 assets/Scripts/chat18x/data/GirlDetailData.ts create mode 100644 assets/Scripts/chat18x/data/GirlDetailData.ts.meta create mode 100644 assets/Scripts/chat18x/data/GirlFavorabilityData.ts create mode 100644 assets/Scripts/chat18x/data/GirlFavorabilityData.ts.meta create mode 100644 assets/Scripts/chat18x/data/GirlUnlockData.ts create mode 100644 assets/Scripts/chat18x/data/GirlUnlockData.ts.meta diff --git a/assets/Scripts/Sub/UI/PreloadUI.ts b/assets/Scripts/Sub/UI/PreloadUI.ts index 21dc7ff4..6b79e882 100644 --- a/assets/Scripts/Sub/UI/PreloadUI.ts +++ b/assets/Scripts/Sub/UI/PreloadUI.ts @@ -28,7 +28,9 @@ import LanguageUtils, { LanguageType } from "../../Main/Common/LanguageUtils"; import { DataManager, DataId } from "../../chat18x/data/DataManager"; import { LoginData } from "../../chat18x/data/LoginData"; import { PlayerData } from "../../chat18x/data/PlayerData"; +import { AccountData } from "../../chat18x/data/AccountData"; import { WalletData } from "../../chat18x/data/WalletData"; +import { EnvData } from "../../chat18x/data/EnvData"; import { ConfigManager } from "../../chat18x/manager/ConfigManager"; import { AppConfig } from "db://assets/Scripts/chat18x/config/env/appConfig"; import DeviceIdService from "db://assets/Scripts/chat18x/foundation/identity/DeviceIdService"; @@ -277,7 +279,11 @@ export class PreloadUI extends Component { loginData.expire = resData.expire; const playerData = DataManager.I.getDataById(DataId.Player); playerData.name = resData.name; - + const accountData = DataManager.I.getDataById(DataId.Account); + accountData.accId = resData.accId; + const envData = DataManager.I.getDataById(DataId.Env); + envData.cdn = resData.cdn; + this.loginFinish = true; // this.reqMyInfo(); @@ -296,7 +302,7 @@ export class PreloadUI extends Component { const resData = res.data; // 保存数据 const walletData = DataManager.I.getDataById(DataId.Wallet); - walletData.diamond = resData.diamond; + walletData.balance = resData.balance; walletData.vipExpire = resData.vipExpire; } } diff --git a/assets/Scripts/chat18x/config/AiCharacterConfig.ts b/assets/Scripts/chat18x/config/AiCharacterConfig.ts index 88738217..0fe393fd 100644 --- a/assets/Scripts/chat18x/config/AiCharacterConfig.ts +++ b/assets/Scripts/chat18x/config/AiCharacterConfig.ts @@ -25,6 +25,20 @@ export class AiCharacterConfig extends BaseConfig { return ConfigManager.tables.TbAiCharacters; } + /** + * 获取所有配置 id,如果存在 + */ + public getAllId(): any | null { + let allData = this.getAllConfig(); + if (!allData) return null; + const dataArr = allData.getDataList(); + let allId = []; + for (let oneData of dataArr) { + allId.push(oneData.id); + } + return allId; + } + /** * 获取配置,根据 id */ diff --git a/assets/Scripts/chat18x/config/GirlConfig.ts b/assets/Scripts/chat18x/config/GirlConfig.ts index bc97c76a..429935d8 100644 --- a/assets/Scripts/chat18x/config/GirlConfig.ts +++ b/assets/Scripts/chat18x/config/GirlConfig.ts @@ -82,6 +82,20 @@ export class GirlConfig extends BaseConfig { if (!oneData) return null; return oneData.priceType; } + + /** 根据 id 获取购买价格 */ + public getPriceById(id: number): number | null { + let oneData = this.getConfigById(id); + if (!oneData) return null; + return oneData.price; + } + + /** 根据 id 获取VIP能否解锁 */ + public getVipUnlockById(id: number): number | null { + let oneData = this.getConfigById(id); + if (!oneData) return null; + return oneData.vipUnlock; + } /** 根据 id 获取头像路径 */ public getAvatarPathById(id: number): string | null { diff --git a/assets/Scripts/chat18x/config/GirlDetailConfig.ts b/assets/Scripts/chat18x/config/GirlDetailConfig.ts index 2ea766bc..94435baa 100644 --- a/assets/Scripts/chat18x/config/GirlDetailConfig.ts +++ b/assets/Scripts/chat18x/config/GirlDetailConfig.ts @@ -53,30 +53,59 @@ export class GirlDetailConfig extends BaseConfig { let oneData = this.getCommercialImagesById(id); if (!oneData) return null; return oneData.length; - } - - /** 根据 id 和 index 获取图片类型 */ - public getImageTypeById(id: number, index: number): number | null { + } + + /** 根据 id 获取 commercialImages的id数组 */ + public getCommercialImagesIds(id: number): number[] { + let oneData = this.getCommercialImagesById(id); + if (!oneData) return []; + // 获取所有 id + let allId = []; + for (let one of oneData) { + allId.push(one.id); + } + return allId; + } + + /** 根据 id 获取 某一个commercialImage */ + private getOneCommercialImageById(id: number, resId: number): any | null { let oneData = this.getCommercialImagesById(id); if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].imageType; + // 遍历数组找到匹配的资源 + for (let one of oneData) { + if (one.id === resId) { + return one; + } + } + return null; + } + + /** 根据 id 获取图片类型 */ + public getImageTypeById(id: number, resId: number): number | null { + let oneData = this.getOneCommercialImageById(id, resId); + if (!oneData) return null; + return oneData.imageType; } - /** 根据 id 和 index 获取图片价格 */ - public getImagePriceById(id: number, index: number): number | null { - let oneData = this.getCommercialImagesById(id); + /** 根据 id 获取聊天触发次数 */ + public getImageUnlockCountsById(id: number, resId: number): number | null { + let oneData = this.getOneCommercialImageById(id, resId); if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].imagePrice; + return oneData.unlockCounts; + } + + /** 根据 id 获取图片价格 */ + public getImagePriceById(id: number, resId: number): number | null { + let oneData = this.getOneCommercialImageById(id, resId); + if (!oneData) return null; + return oneData.imagePrice; } - /** 根据 id 和 index 获取图片路径 */ - public getImagePathById(id: number, index: number): string | null { - let oneData = this.getCommercialImagesById(id); + /** 根据 id 获取图片路径 */ + public getImagePathById(id: number, resId: number): string | null { + let oneData = this.getOneCommercialImageById(id, resId); if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].path; + return oneData.path; } /** 根据 id 获取 commercialVideos */ @@ -93,27 +122,49 @@ export class GirlDetailConfig extends BaseConfig { return oneData.length; } - /** 根据 id 和 index 获取视频路径 */ - public getVideoPathById(id: number, index: number): string | null { + /** 根据 id 获取 commercialVideo的id数组 */ + public getCommercialVideosIds(id: number): number[] { let oneData = this.getCommercialVideosById(id); - if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].path; + if (!oneData) return []; + // 获取所有 id + let allId = []; + for (let one of oneData) { + allId.push(one.id); + } + return allId; } - /** 根据 id 和 index 获取关联情绪 */ - public getVideoEmotionById(id: number, index: number): number | null { + /** 根据 id 获取 某一个commercialVideo */ + private getOneCommercialVideoById(id: number, resId: number): any | null { let oneData = this.getCommercialVideosById(id); if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].emotion; + // 遍历数组找到匹配的资源 + for (let one of oneData) { + if (one.id === resId) { + return one; + } + } + return null; + } + + /** 根据 id 获取视频路径 */ + public getVideoPathById(id: number, resId: number): string | null { + let oneData = this.getOneCommercialVideoById(id, resId); + if (!oneData) return null; + return oneData.path; } - /** 根据 id 和 index 获取视频价格 */ - public getVideoPriceById(id: number, index: number): number | null { - let oneData = this.getCommercialVideosById(id); + /** 根据 id 获取关联情绪 */ + public getVideoEmotionById(id: number, resId: number): number | null { + let oneData = this.getOneCommercialVideoById(id, resId); if (!oneData) return null; - if (index < 0 || index >= oneData.length) return null; - return oneData[index].videoPrice; + return oneData.emotion; + } + + /** 根据 id 获取视频价格 */ + public getVideoPriceById(id: number, resId: number): number | null { + let oneData = this.getOneCommercialVideoById(id, resId); + if (!oneData) return null; + return oneData.videoPrice; } } \ No newline at end of file diff --git a/assets/Scripts/chat18x/config/GlobalConfig.ts b/assets/Scripts/chat18x/config/GlobalConfig.ts index a371f88f..438ea684 100644 --- a/assets/Scripts/chat18x/config/GlobalConfig.ts +++ b/assets/Scripts/chat18x/config/GlobalConfig.ts @@ -74,6 +74,20 @@ export class GlobalConfig extends BaseConfig { return oneData.FreeChatTimes; } + /** 单次对话增长好感度 */ + public getOnceChatAddScore(): number | null { + let oneData = this.getAllConfig(); + if (!oneData) return null; + return oneData.OnceChatAddScore; + } + + /** 好感度等级兑换比例 */ + public getScoreExchangeStarLevel(): number | null { + let oneData = this.getAllConfig(); + if (!oneData) return null; + return oneData.ScoreExchangeStarLevel; + } + /** 游戏名 */ public getGameName(): string | null { let oneData = this.getAllConfig(); diff --git a/assets/Scripts/chat18x/config/PurchaseConfig.ts b/assets/Scripts/chat18x/config/PurchaseConfig.ts index c97f2fc5..002a480d 100644 --- a/assets/Scripts/chat18x/config/PurchaseConfig.ts +++ b/assets/Scripts/chat18x/config/PurchaseConfig.ts @@ -25,6 +25,65 @@ export class PurchaseConfig extends BaseConfig { return ConfigManager.tables.TbPurchaseConfig; } + /** + * 获取所有配置 id,如果存在 + */ + public getAllId(): any | null { + let allData = this.getAllConfig(); + if (!allData) return null; + const dataArr = allData.getDataList(); + let allId = []; + for (let oneData of dataArr) { + allId.push(oneData.id); + } + return allId; + } + + /** 获取 充值商品的id数组,首位数字为 1 */ + public getRechargeIds(): number[] { + let allId = this.getAllId(); + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; // 取首位字符 + if (firstDigit === "1") { + resultId.push(one); + } + } + return resultId; + } + + /** 获取 会员商品的id数组,首位数字为 2 */ + public getMemberIds(): number[] { + let allId = this.getAllId(); + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; + if (firstDigit === "2") { + resultId.push(one); + } + } + return resultId; + } + + /** 获取 聊天商品的id数组,首位数字为 3 */ + public getChatIds(): number[] { + let allId = this.getAllId(); + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; + if (firstDigit === "3") { + resultId.push(one); + } + } + return resultId; + } + /** * 获取配置,根据 id */ @@ -47,4 +106,11 @@ export class PurchaseConfig extends BaseConfig { if (!oneData) return null; return oneData.count; } + + /** 根据商品 id 获取商品价格 */ + public getPriceById(id: number): number | null { + let oneData = this.getConfigById(id); + if (!oneData) return null; + return oneData.price; + } } \ No newline at end of file diff --git a/assets/Scripts/chat18x/data/AccountData.ts b/assets/Scripts/chat18x/data/AccountData.ts index 357673fc..27a8958b 100644 --- a/assets/Scripts/chat18x/data/AccountData.ts +++ b/assets/Scripts/chat18x/data/AccountData.ts @@ -8,8 +8,8 @@ export class AccountData extends BaseData { private _identifier = ""; // 身份类型,1:游客;2:微信;3:googleplay private _identityType = 1; - // 玩家Uid - private _uid = ""; + // 用户id + private _accId = 0; // 是否新手 private _isNewGuide = true; // 是否刚注册 @@ -18,7 +18,7 @@ export class AccountData extends BaseData { public reset(): void { this._identifier = ""; this._identityType = 1; - this._uid = ""; + this._accId = 0; this._isNewGuide = true; this._isNewRegist = true; } @@ -26,7 +26,7 @@ export class AccountData extends BaseData { public clear(): void { this._identifier = ""; this._identityType = 1; - this._uid = ""; + this._accId = 0; this._isNewGuide = true; this._isNewRegist = true; } @@ -35,7 +35,7 @@ export class AccountData extends BaseData { super.destroy(); this._identifier = null; this._identityType = null; - this._uid = null; + this._accId = null; this._isNewGuide = null; this._isNewRegist = null; } @@ -60,14 +60,14 @@ export class AccountData extends BaseData { return this._identityType; } - /** 设置玩家Uid */ - public set uid(value: string) { - this._uid = value; + /** 设置用户id */ + public set accId(value: number) { + this._accId = value; } - /** 获取玩家Uid */ - public get uid(): string { - return this._uid; + /** 获取用户id */ + public get accId(): number { + return this._accId; } /** 设置是否新手 */ diff --git a/assets/Scripts/chat18x/data/BaseData.ts b/assets/Scripts/chat18x/data/BaseData.ts index 3e2e3b37..b96c1a13 100644 --- a/assets/Scripts/chat18x/data/BaseData.ts +++ b/assets/Scripts/chat18x/data/BaseData.ts @@ -13,6 +13,13 @@ export class BaseData { /** 数据ID */ protected _dataId: string = ''; + /** + * 构造方法 + */ + constructor() { + + } + /** * 初始化数据 * @param dataId 数据ID diff --git a/assets/Scripts/chat18x/data/DataManager.ts b/assets/Scripts/chat18x/data/DataManager.ts index 0cec46ed..a29fb30e 100644 --- a/assets/Scripts/chat18x/data/DataManager.ts +++ b/assets/Scripts/chat18x/data/DataManager.ts @@ -13,6 +13,7 @@ import { WalletData } from "./WalletData"; import { ShopData } from "./ShopData"; import { OrderData } from "./OrderData"; import { GirlData } from "./GirlData"; +import { EnvData } from "./EnvData"; /** * 集中定义数据ID,避免写错字符串 @@ -28,6 +29,12 @@ export enum DataId { Shop = "shop", // 商城数据 Order = "order", // 订单数据 Girl = "girl", // 技师数据 + GirlBrief = "girlBrief", // 技师的简要数据 + GirlDetail = "girlDetail", // 技师的详细数据 + GirlUnlock = "girlUnlock", // 技师的解锁数据 + GirlChat = "girlChat", // 技师的聊天数据 + GirlFavorability = "girlFavorability", // 技师的好感度数据 + Env = "env", // 环境数据 } /** 构造器类型 */ @@ -70,6 +77,7 @@ export class DataManager { this.register(DataId.Shop, ShopData); this.register(DataId.Order, OrderData); this.register(DataId.Girl, GirlData); + this.register(DataId.Env, EnvData); } /** diff --git a/assets/Scripts/chat18x/data/EnvData.ts b/assets/Scripts/chat18x/data/EnvData.ts new file mode 100644 index 00000000..28a7adf7 --- /dev/null +++ b/assets/Scripts/chat18x/data/EnvData.ts @@ -0,0 +1,32 @@ +/** + * 环境数据 + */ +import { BaseData } from "./BaseData"; + +export class EnvData extends BaseData { + // cdn地址 + private _cdn: string = ''; + + public reset(): void { + this._cdn = ''; + } + + public clear(): void { + this._cdn = ''; + } + + public destroy(): void { + super.destroy(); + this._cdn = null; + } + + /** 设置cdn地址 */ + public set cdn(value: string) { + this._cdn = value; + } + + /** 获取cdn地址 */ + public get cdn(): string { + return this._cdn; + } +} \ No newline at end of file diff --git a/assets/Scripts/chat18x/data/EnvData.ts.meta b/assets/Scripts/chat18x/data/EnvData.ts.meta new file mode 100644 index 00000000..c71c2518 --- /dev/null +++ b/assets/Scripts/chat18x/data/EnvData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "cf8c891f-8726-42be-918b-4f101118dae3", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/GirlBriefData.ts b/assets/Scripts/chat18x/data/GirlBriefData.ts new file mode 100644 index 00000000..73ca409d --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlBriefData.ts @@ -0,0 +1,148 @@ +/** + * 技师的简要数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GirlBriefData extends BaseData { + // id + private id: number; + // 名字键 + private nameKey: string; + // 年龄 + private age: string; + // 主题枚举 + private category: number; + // 标签键 + private tagKey: string; + // 付费类型 + private priceType: number; + // 购买价格 + private price: number; + // VIP能否解锁 + private vipUnlock: number; + // 头像路径 + private avatarPath: string; + // list头像路径 + private listAvatarPath: string; + + constructor() { + super(); + this.id = 0; + this.nameKey = ""; + this.age = ""; + this.category = 0; + this.tagKey = ""; + this.priceType = 0; + this.price = 0; + this.vipUnlock = 0; + this.avatarPath = ""; + this.listAvatarPath = ""; + } + + public reset(): void { + this.id = 0; + this.nameKey = ""; + this.age = ""; + this.category = 0; + this.tagKey = ""; + this.priceType = 0; + this.price = 0; + this.vipUnlock = 0; + this.avatarPath = ""; + this.listAvatarPath = ""; + } + + public clear(): void { + this.id = 0; + this.nameKey = ""; + this.age = ""; + this.category = 0; + this.tagKey = ""; + this.priceType = 0; + this.price = 0; + this.vipUnlock = 0; + this.avatarPath = ""; + this.listAvatarPath = ""; + } + + public destroy(): void { + super.destroy(); + this.id = null; + this.nameKey = null; + this.age = null; + this.category = null; + this.tagKey = null; + this.priceType = null; + this.price = null; + this.vipUnlock = null; + this.avatarPath = null; + this.listAvatarPath = null; + } + + /** 保存数据 */ + public setData(data: proto.cs.IGirls): void { + if (!data) return; + this.id = data.id; + this.nameKey = data.nameKey; + this.age = data.age; + this.category = data.category; + this.tagKey = data.tagKey; + this.priceType = data.priceType; + this.price = data.price; + this.vipUnlock = data.vipUnlock; + this.avatarPath = data.avatarPath; + this.listAvatarPath = data.listAvatarPath; + console.log("保存了技师的简要数据,id:", this.id); + } + + /** 获取 id */ + public getId(): number { + return this.id; + } + + /** 获取名字键 */ + public getGrilName(): string { + return this.nameKey; + } + + /** 获取年龄 */ + public getGrilAge(): string { + return this.age; + } + + /** 获取主题枚举 */ + public getGrilCategory(): number { + return this.category; + } + + /** 获取标签键 */ + public getGrilTagKey(): string { + return this.tagKey; + } + + /** 获取付费类型 */ + public getGrilPriceType(): number { + return this.priceType; + } + + /** 获取价格 */ + public getGrilPrice(): number { + return this.price; + } + + /** 获取VIP能否解锁 */ + public getGrilVipUnlock(): number { + return this.vipUnlock; + } + + /** 获取头像路径 */ + public getGrilAvatar(): string { + return this.avatarPath; + } + + /** 获取list头像路径 */ + public getGrilListAvatar(): string { + return this.listAvatarPath; + } +} diff --git a/assets/Scripts/chat18x/data/GirlBriefData.ts.meta b/assets/Scripts/chat18x/data/GirlBriefData.ts.meta new file mode 100644 index 00000000..56f77212 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlBriefData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "35c42c32-997a-40f3-b689-6de7e53cdf3b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/GirlChatData.ts b/assets/Scripts/chat18x/data/GirlChatData.ts new file mode 100644 index 00000000..4977da66 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlChatData.ts @@ -0,0 +1,79 @@ +/** + * 技师的聊天数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GirlChatData extends BaseData { + // id + private id: number; + // 总聊天次数 + private chatTotalCount: number; + // 剩余聊天次数, < 0: 不限制; = 0 聊天次数已经用完; > 0 还剩余多少次聊天次数 + private chatRemainCount: number; + + constructor() { + super(); + this.id = 0; + this.chatTotalCount = 0; + this.chatRemainCount = 0; + } + + public reset(): void { + this.id = 0; + this.chatTotalCount = 0; + this.chatRemainCount = 0; + } + + public clear(): void { + this.id = 0; + this.chatTotalCount = 0; + this.chatRemainCount = 0; + } + + public destroy(): void { + super.destroy(); + this.id = null; + this.chatTotalCount = null; + this.chatRemainCount = null; + } + + /** 获取 id */ + public getId(): number { + return this.id; + } + + /** 保存 id */ + public setId(value: number): void { + this.id = value; + } + + /** 获取总聊天次数 */ + public getChatTotalCount(): number { + return this.chatTotalCount; + } + + /** 保存总聊天次数 */ + public setChatTotalCount(value: number): void { + this.chatTotalCount = value; + console.log("当前总聊天次数:", this.chatTotalCount); + } + + /** 获取剩余聊天次数 */ + public getChatRemainCount(): number { + return this.chatRemainCount; + } + + /** 保存剩余聊天次数 */ + public setChatRemainCount(value: number): void { + this.chatRemainCount = value; + console.log("当前剩余聊天次数:", this.chatRemainCount); + } + + /** 更新剩余聊天次数 */ + public useChat(times: number = 1) { + if (this.chatRemainCount > 0) { + this.setChatRemainCount(Math.max(0, this.chatRemainCount - times)); + } + } +} diff --git a/assets/Scripts/chat18x/data/GirlChatData.ts.meta b/assets/Scripts/chat18x/data/GirlChatData.ts.meta new file mode 100644 index 00000000..d4755cbf --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlChatData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "40a2e0a1-fce2-4812-97b5-f96153800c52", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/GirlData.ts b/assets/Scripts/chat18x/data/GirlData.ts index 24755002..84791595 100644 --- a/assets/Scripts/chat18x/data/GirlData.ts +++ b/assets/Scripts/chat18x/data/GirlData.ts @@ -1,15 +1,27 @@ /** - * 技师数据 + * 技师数据,统一访问入口 */ import { BaseData } from "./BaseData"; +import { GirlBriefData } from "./GirlBriefData"; +import { GirlDetailData } from "./GirlDetailData"; +import { GirlUnlockData } from "./GirlUnlockData"; +import { GirlChatData } from "./GirlChatData"; +import { GirlFavorabilityData } from "./GirlFavorabilityData"; +import { DataId } from "./DataManager"; import proto from 'db://assets/Scripts/proto/proto.pb.js'; // 分类的数据结构 interface CategoryBucket { // 技师的简要数据 - briefs: Map; + briefs: Map; // 技师的详细数据 - details: Map; + details: Map; + // 技师的解锁数据 + unlocks: Map; + // 技师的聊天数据 + chats: Map; + // 技师的好感度数据 + favorability: Map; // 技师的id girlIds: number[]; } @@ -20,8 +32,6 @@ const DAILY_BUCKET = "__daily__"; export class GirlData extends BaseData { // 大分类 private _categories = new Map(); - // 每日推荐(存放在 DAILY_BUCKET 中,同时保留 id 索引便于 UI 使用) - private _dailyRecommendIds: number[] = []; public reset(): void { this._categories.clear(); @@ -50,271 +60,208 @@ export class GirlData extends BaseData { let bucket = cats.get(categoryId); if (!bucket) { bucket = { - briefs: new Map(), - details: new Map(), + briefs: new Map(), + details: new Map(), + unlocks: new Map(), + chats: new Map(), + favorability: new Map(), girlIds: [], }; cats.set(categoryId, bucket); } return bucket; } - - /** - * 合并一批简要信息到指定分类;并维护 girlIds 顺序(去重追加) - */ - public mergeBriefs(categoryId: string, respOrList: proto.cs.IGirlBrief[]): void { - if (!respOrList) return; - let allData = this.parseAllGirlBrief(respOrList); - if (!allData) return; - const bucket = this.ensureBucket(categoryId); - // 用一个临时 Set 保存已有的 id,加速去重 - const existed = new Set(bucket.girlIds); - for (const g of allData) { - const id = g.id; - bucket.briefs.set(id, g); - // 去重 - if (!existed.has(id)) { - bucket.girlIds.push(id); - existed.add(id); - } - } - console.log("保存技师的简要数据: ", bucket); - } /** 取分类下的全部 girlIds(若分类不存在返回空数组) */ public getGirlIds(categoryId: string): number[] { const b = this.ensureCategories().get(categoryId); return b ? b.girlIds : []; } + + /** 保存技师列表 */ + public setGirlList(categoryId: string, data: proto.cs.ICSGetGirlListRes): void { + if (!data) return; + this.setGirlBrief(categoryId, data.girls); + this.setGirlUnlock(categoryId, data.girls); + this.setGirlFavorability(categoryId, data.girls); + } + + /** 保存技师详细数据 */ + public setGirlDetailData(categoryId: string, data: proto.cs.ICSGetGirlDetailRes): void { + if (!data) return; + let details = [] + details.push(data.girl); + this.setGirlBrief(categoryId, details); + this.setGirlDetail(categoryId, details); + this.setGirlUnlock(categoryId, details); + this.setGirlChat(categoryId, details); + this.setGirlFavorability(categoryId, details); + } /** --------------------------------------------------------- 技师的简要数据 --------------------------------------------------------- */ - // 解析技师简要数据,一个 - private parseOneGirlBrief(data: proto.cs.IGirlBrief): proto.cs.IGirlBrief | null { + /** + * 合并一个简要数据到指定分类;并维护 girlIds 顺序(去重追加) + */ + private mergeOneBrief(categoryId: string, data: proto.cs.IGirls): void { + if (!data) return; + const bucket = this.ensureBucket(categoryId); + // 用一个临时 Set 保存已有的 id,加速去重 + const existed = new Set(bucket.girlIds); + let id = data.id; + const one = this.parseOneGirlBrief(data); + if (!one) return; + bucket.briefs.set(id, one); + if (!existed.has(id)) { + bucket.girlIds.push(id); + } + } + + /** + * 合并一批简要数据到指定分类;并维护 girlIds 顺序(去重追加) + */ + private mergeBriefs(categoryId: string, respOrList: proto.cs.IGirlData[]): void { + if (!respOrList) return; + const bucket = this.ensureBucket(categoryId); + // 用一个临时 Set 保存已有的 id,加速去重 + const existed = new Set(bucket.girlIds); + + for (const g of respOrList) { + const one = this.parseOneGirlBrief(g.girl); + if (!one) continue; + bucket.briefs.set(g.id, one); + + if (!existed.has(g.id)) { + bucket.girlIds.push(g.id); + existed.add(g.id); + } + } + console.log("保存技师的简要数据: ", bucket); + } + + private parseOneGirlBrief(data: proto.cs.IGirls): GirlBriefData | null { if (!data) return null; - const oneData: proto.cs.IGirlBrief = { - id: data.id, // id - name: data.name, // 名字 - age: data.age, // 年龄 - tagKey: data.tagKey, // 标签 - priceType: data.priceType, // 付费类型 - price: data.price, // 价格 - avatar: data.avatar, // 头像 - star: data.star, // 星级 - category: data.category, // 主题枚举 - listAvatarPath: data.listAvatarPath, // list头像路径 - }; + let oneData = new GirlBriefData(); + oneData.init?.(DataId.GirlBrief); + oneData.setData(data); return oneData; } - // 解析技师简要数据,多个 - private parseAllGirlBrief(data: proto.cs.IGirlBrief[]): proto.cs.IGirlBrief[] | null { - if (!data) return null; - let allData = []; - for (const value of data) { - const oneData: proto.cs.IGirlBrief = this.parseOneGirlBrief(value); - if (oneData) { - allData.push(oneData); - } - } - return allData; - } - /** 保存技师的简要数据 */ - public setGirlBriefs(categoryId: string, data: proto.cs.ICSGetGirlListRes): void { - this.mergeBriefs(categoryId, data.girls); + private setGirlBrief(categoryId: string, data: proto.cs.IGirlData[]): void { + this.mergeBriefs(categoryId, data); } - /** 取某分类 + girlId 的简要信息 */ - private getGrilBrief(categoryId: string, girlId: number): proto.cs.IGirlBrief | null { + /** 取某分类 + girlId 的简要数据 */ + private getGrilBrief(categoryId: string, girlId: number): GirlBriefData | null { const b = this.ensureCategories().get(categoryId); if (!b) return null; return b.briefs.get(girlId) ?? null; } - /** 获取名字 */ + /** 获取名字键 */ public getGrilName(categoryId: string, girlId: number): string { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return ""; - return oneData.name; + return oneData.getGrilName(); } /** 获取年龄 */ - public getGrilAge(categoryId: string, girlId: number): number { + public getGrilAge(categoryId: string, girlId: number): string { + let oneData = this.getGrilBrief(categoryId, girlId); + if (!oneData) return "0"; + return oneData.getGrilAge(); + } + + /** 获取主题枚举 */ + public getGrilCategory(categoryId: string, girlId: number): number { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return 0; - return oneData.age; - } + return oneData.getGrilCategory(); + } - /** 获取标签 */ + /** 获取标签键 */ public getGrilTagKey(categoryId: string, girlId: number): string { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return ""; - return oneData.tagKey; + return oneData.getGrilTagKey(); } /** 获取付费类型 */ public getGrilPriceType(categoryId: string, girlId: number): number { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return 0; - return oneData.priceType; + return oneData.getGrilPriceType(); } /** 获取价格 */ public getGrilPrice(categoryId: string, girlId: number): number { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return 0; - return oneData.price; + return oneData.getGrilPrice(); } + + /** 获取VIP能否解锁 */ + public getGrilVipUnlock(categoryId: string, girlId: number): number { + let oneData = this.getGrilBrief(categoryId, girlId); + if (!oneData) return 0; + return oneData.getGrilVipUnlock(); + } - /** 获取头像 */ + /** 获取头像路径 */ public getGrilAvatar(categoryId: string, girlId: number): string { let oneData = this.getGrilBrief(categoryId, girlId); if (!oneData) return ""; - return oneData.avatar; - } - - /** 获取星级 */ - public getGrilStar(categoryId: string, girlId: number): number { + return oneData.getGrilAvatar(); + } + + /** 获取list头像路径 */ + public getGrilListAvatar(categoryId: string, girlId: number): string { let oneData = this.getGrilBrief(categoryId, girlId); - if (!oneData) return 0; - return oneData.star; - } - - /** 获取主题枚举 */ - public getGrilCategory(categoryId: string, girlId: number): number { - let oneData = this.getGrilBrief(categoryId, girlId); - if (!oneData) return 0; - return oneData.category; + if (!oneData) return ""; + return oneData.getGrilListAvatar(); } /** 获取主题枚举,根据 id */ public getGrilCategoryById(girlId: number): number { const cats = this.ensureCategories(); - + // 遍历 for (const bucket of cats.values()) { // 先查简要信息 const brief = bucket.briefs.get(girlId); - if (brief && brief.category) { - return brief.category; - } - // 兜底:若只缓存了详情,也从详情里的 brief 取 - const detail = bucket.details.get(girlId); - if (detail?.brief && typeof detail.brief.category) { - return detail.brief.category; + if (brief) { + return brief.getGrilCategory(); } } - // 未找到 return 0; } - /** 获取list头像路径 */ - public getGrilListAvatar(categoryId: string, girlId: number): string { - let oneData = this.getGrilBrief(categoryId, girlId); - if (!oneData) return ""; - return oneData.listAvatarPath; - } - /** --------------------------------------------------------- 技师的详细数据 --------------------------------------------------------- */ - // 解析技师图片数据,一个 - private parseOneGirlPhoto(data: proto.cs.IPurchaseCommercialImage): proto.cs.IPurchaseCommercialImage | null { - if (!data) return null; - const oneData: proto.cs.IPurchaseCommercialImage = { - imageType: data.imageType, // 图片类型 - imagePrice: data.imagePrice, // 图片价格 - path: data.path, // 图片资源路径 - isRelease: data.isRelease, // 是否解锁 - }; - return oneData; - } - - // 解析技师图片数据,多个 - private parseAllGirlPhoto(data: proto.cs.IPurchaseCommercialImage[]): proto.cs.IPurchaseCommercialImage[] | null { - if (!data) return null; - let allData = []; - for (const value of data) { - const oneData: proto.cs.IPurchaseCommercialImage = this.parseOneGirlPhoto(value); - if (oneData) { - allData.push(oneData); - } - } - return allData; - } - - // 解析技师视频数据,一个 - private parseOneGirlVideo(data: proto.cs.IPurchaseCommercialVideo): proto.cs.IPurchaseCommercialVideo | null { - if (!data) return null; - const oneData: proto.cs.IPurchaseCommercialVideo = { - path: data.path, // 视频资源路径 - emotion: data.emotion, // 关联情绪 - videoPrice: data.videoPrice, // 价格 - isRelease: data.isRelease, // 是否解锁 - }; - return oneData; - } - - // 解析技师视频数据,多个 - private parseAllGirlVideo(data: proto.cs.IPurchaseCommercialVideo[]): proto.cs.IPurchaseCommercialVideo[] | null { - if (!data) return null; - let allData = []; - for (const value of data) { - const oneData: proto.cs.IPurchaseCommercialVideo = this.parseOneGirlVideo(value); - if (oneData) { - allData.push(oneData); - } - } - return allData; - } - // 解析技师详细数据,一个 - private parseOneGirlDetail(data: proto.cs.IGirlDetail): proto.cs.IGirlDetail | null { + private parseOneGirlDetail(data: proto.cs.IGirlsDetail): GirlDetailData | null { if (!data) return null; - const photoData = this.parseAllGirlPhoto(data.images); - const videoData = this.parseAllGirlVideo(data.videos); - const briefData = this.parseOneGirlBrief(data.brief); - const oneData: proto.cs.IGirlDetail = { - brief: briefData, // 技师简要数据 - desc: data.desc, // 技师描述 - isRelease: data.isRelease, // 技师是否解锁 - chatCount: data.chatCount, // 剩余聊天次数 - images: photoData, // 技师图片列表 - videos: videoData, // 技师视频列表 - }; + let oneData = new GirlDetailData(); + oneData.init?.(DataId.GirlDetail); + oneData.setData(data); return oneData; } - // 解析技师详细数据,多个 - private parseAllGirlDetail(data: proto.cs.IGirlDetail[]): proto.cs.IGirlDetail[] | null { - if (!data) return null; - let allData = []; - for (const value of data) { - const oneData: proto.cs.IGirlDetail = this.parseOneGirlDetail(value); - if (oneData) { - allData.push(oneData); - } - } - return allData; - } - /** 保存技师的详细数据 */ - public setGirlDetails(categoryId: string, data: proto.cs.ICSGetGirlDetailRes): void { - const d = data?.detail; - if (!d) return; - // 合并简要信息 - if (d.brief) this.mergeBriefs(categoryId, [d.brief]); - const oneDetail = this.parseOneGirlDetail(d); + private setGirlDetail(categoryId: string, data: proto.cs.IGirlData[]): void { + if (!data) return; const bucket = this.ensureBucket(categoryId); - // id - const id = d.brief?.id ?? 0; - // 写入详情 - bucket.details.set(id, oneDetail); + for (const g of data) { + const one = this.parseOneGirlDetail(g.detail); + if (!one) continue; + bucket.details.set(g.id, one); + } console.log("保存技师的详细数据: ", bucket); } - /** 取某分类 + girlId 的详细信息 */ - public getGrilDetail(categoryId: string, girlId: number): proto.cs.IGirlDetail | null { + /** 取某分类 + girlId 的详细数据 */ + public getGrilDetail(categoryId: string, girlId: number): GirlDetailData | null { const b = this.ensureCategories().get(categoryId); if (!b) return null; return b.details.get(girlId) ?? null; @@ -324,163 +271,321 @@ export class GirlData extends BaseData { public getGrilDesc(categoryId: string, girlId: number): string { let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return ""; - return oneData.desc; - } - - /** 获取技师是否解锁 */ - public getGrilIsRelease(categoryId: string, girlId: number): boolean { - let oneData = this.getGrilDetail(categoryId, girlId); - if (!oneData) return false; - return oneData.isRelease; - } - - /** 获取技师剩余聊天次数 */ - public getGrilChatCount(categoryId: string, girlId: number): number { - let oneData = this.getGrilDetail(categoryId, girlId); - if (!oneData) return 0; - return oneData.chatCount; - } - - /** 获取所有技师图片数据 */ - private getAllGrilPhotoData(categoryId: string, girlId: number): proto.cs.IPurchaseCommercialImage[] | null { - let oneData = this.getGrilDetail(categoryId, girlId); - if (!oneData || !oneData.images) return null; - return oneData.images; - } + return oneData.getGirlDesc(); + } /** 获取所有技师图片数据的数量 */ public getAllGrilPhotoDataCount(categoryId: string, girlId: number): number { - let allData = this.getAllGrilPhotoData(categoryId, girlId); - if (!allData) return 0; - return allData.length; + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return 0; + return oneData.getAllGrilPhotoDataCount(); } - /** 获取技师图片数据,通过 index */ - private getGrilPhotoData(categoryId: string, girlId: number, index: number): proto.cs.IPurchaseCommercialImage | null { - let allData = this.getAllGrilPhotoData(categoryId, girlId); - if (!allData) return null; - // 下标越界保护 - if (index < 0 || index >= allData.length) return null; - - return allData[index] ?? null; - } + /** 获取所有技师图片数据的id */ + public getAllGrilPhotoDataId(categoryId: string, girlId: number): number[] { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return []; + return oneData.getAllGrilPhotoDataId(); + } /** 获取技师图片的类型 */ - public getGrilPhotoType(categoryId: string, girlId: number, index: number): number { - let oneData = this.getGrilPhotoData(categoryId, girlId, index); + public getGrilPhotoType(categoryId: string, girlId: number, id: number): number { + let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return 0; - return oneData.imageType; + return oneData.getGrilPhotoType(id); } + + /** 获取技师图片的聊天触发次数 */ + public getGrilPhotoUnlockCounts(categoryId: string, girlId: number, id: number): number { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return 0; + return oneData.getGrilPhotoUnlockCounts(id); + } /** 获取技师图片的价格 */ - public getGrilPhotoPrice(categoryId: string, girlId: number, index: number): number { - let oneData = this.getGrilPhotoData(categoryId, girlId, index); - if (!oneData) return 0; - return oneData.imagePrice; - } - - /** 获取技师图片的路径 */ - public getGrilPhotoPic(categoryId: string, girlId: number, index: number): string { - let oneData = this.getGrilPhotoData(categoryId, girlId, index); - if (!oneData) return ""; - return oneData.path; - } - - /** 获取技师图片是否解锁 */ - public getGrilPhotoIsRelease(categoryId: string, girlId: number, index: number): boolean { - let oneData = this.getGrilPhotoData(categoryId, girlId, index); - if (!oneData) return false; - return oneData.isRelease; - } - - /** 获取所有技师视频数据 */ - private getAllGrilVideoData(categoryId: string, girlId: number): proto.cs.IPurchaseCommercialVideo[] | null { + public getGrilPhotoPrice(categoryId: string, girlId: number, id: number): number { let oneData = this.getGrilDetail(categoryId, girlId); - if (!oneData || !oneData.videos) return null; - - return oneData.videos ?? null; + if (!oneData) return 0; + return oneData.getGrilPhotoPrice(id); } + /** 获取技师图片的资源路径 */ + public getGrilPhotoPic(categoryId: string, girlId: number, id: number): string { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return ""; + return oneData.getGrilPhotoPath(id); + } + /** 获取所有技师视频数据的数量 */ public getAllGrilVideoDataCount(categoryId: string, girlId: number): number { - let allData = this.getAllGrilVideoData(categoryId, girlId); - if (!allData) return 0; - return allData.length; - } - - /** 获取技师视频数据,通过 index */ - private getGrilVideoData(categoryId: string, girlId: number, index: number): proto.cs.IPurchaseCommercialVideo | null { - let allData = this.getAllGrilVideoData(categoryId, girlId); - if (!allData) return null; - // 下标越界保护 - if (index < 0 || index >= allData.length) return null; - - return allData[index] ?? null; + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return 0; + return oneData.getAllGrilVideoDataCount(); } - /** 获取技师视频的路径 */ - public getGrilVideoPath(categoryId: string, girlId: number, index: number): string { - let oneData = this.getGrilVideoData(categoryId, girlId, index); + /** 获取所有技师视频数据的id */ + public getAllGrilVideoDataId(categoryId: string, girlId: number): number[] { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return []; + return oneData.getAllGrilVideoDataId(); + } + + /** 获取技师视频的资源路径 */ + public getGrilVideoPath(categoryId: string, girlId: number, id: number): string { + let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return ""; - return oneData.path; + return oneData.getGrilVideoPath(id); } /** 获取技师视频的关联情绪 */ - public getGrilVideoEmotion(categoryId: string, girlId: number, index: number): number { - let oneData = this.getGrilVideoData(categoryId, girlId, index); + public getGrilVideoEmotion(categoryId: string, girlId: number, id: number): number { + let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return 0; - return oneData.emotion; + return oneData.getGrilVideoEmotion(id); } /** 获取技师视频的价格 */ - public getGrilVideoPrice(categoryId: string, girlId: number, index: number): number { - let oneData = this.getGrilVideoData(categoryId, girlId, index); + public getGrilVideoPrice(categoryId: string, girlId: number, id: number): number { + let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return 0; - return oneData.videoPrice; + return oneData.getGrilVideoPrice(id); } - /** 获取技师视频是否解锁 */ - public getGrilVideoIsRelease(categoryId: string, girlId: number, index: number): boolean { - let oneData = this.getGrilVideoData(categoryId, girlId, index); + /** --------------------------------------------------------- 技师的解锁数据 --------------------------------------------------------- */ + + // 解析技师解锁数据,一个 + private parseOneGirlUnlock(data: proto.cs.IGirlData): GirlUnlockData | null { + if (!data) return null; + let oneData = new GirlUnlockData(); + oneData.init?.(DataId.GirlUnlock); + oneData.setId(data.id); + oneData.setIsRelease(data.isRelease); + if (data.images) { + let ids = []; + for (let one of data.images) { + ids.push(one.resId); + } + oneData.setUnlockedImageIds(ids); + } + if (data.videos) { + let ids = []; + for (let one of data.videos) { + ids.push(one.resId); + } + oneData.setUnlockedVideoIds(ids); + } + return oneData; + } + + /** 保存技师的解锁数据 */ + private setGirlUnlock(categoryId: string, data: proto.cs.IGirlData[]): void { + if (!data) return; + const bucket = this.ensureBucket(categoryId); + for (const g of data) { + const one = this.parseOneGirlUnlock(g); + if (!one) continue; + bucket.unlocks.set(g.id, one); + } + console.log("保存技师的解锁数据: ", bucket); + } + + /** 取某分类 + girlId 的解锁数据 */ + private getGrilUnlock(categoryId: string, girlId: number): GirlUnlockData | null { + const b = this.ensureCategories().get(categoryId); + if (!b) return null; + return b.unlocks.get(girlId) ?? null; + } + + /** 获取 付费技师是否已经解锁 */ + public getIsRelease(categoryId: string, girlId: number): boolean { + let oneData = this.getGrilUnlock(categoryId, girlId); if (!oneData) return false; - return oneData.isRelease; + return oneData.getIsRelease(); + } + + /** 判断图片是否解锁 */ + public isImageUnlock(categoryId: string, girlId: number, id: number): boolean { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return false; + return oneData.isImageUnlock(id); + } + + /** 解锁图片 */ + public unlockImage(categoryId: string, girlId: number, id: number): void { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return; + return oneData.unlockImage(id); + } + + /** 获取所有解锁图片的 id */ + public getUnlockedImageIds(categoryId: string, girlId: number): number[] { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return []; + return oneData.getUnlockedImageIds(); + } + + /** 判断视频是否解锁 */ + public isVideoUnlock(categoryId: string, girlId: number, id: number): boolean { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return false; + return oneData.isVideoUnlock(id); + } + + /** 解锁视频 */ + public unlockVideo(categoryId: string, girlId: number, id: number): void { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return; + return oneData.unlockVideo(id); + } + + /** 获取所有解锁视频的 id */ + public getUnlockedVideoIds(categoryId: string, girlId: number): number[] { + let oneData = this.getGrilUnlock(categoryId, girlId); + if (!oneData) return []; + return oneData.getUnlockedVideoIds(); } + /** --------------------------------------------------------- 技师的聊天数据 --------------------------------------------------------- */ + + // 解析技师聊天数据,一个 + private parseOneGirlChat(data: proto.cs.IGirlData): GirlChatData | null { + if (!data) return null; + let oneData = new GirlChatData(); + oneData.init?.(DataId.GirlChat); + oneData.setChatTotalCount(data.chatTotalCount); + oneData.setChatRemainCount(data.chatRemainCount); + return oneData; + } + + /** 保存技师的聊天数据 */ + private setGirlChat(categoryId: string, data: proto.cs.IGirlData[]): void { + if (!data) return; + const bucket = this.ensureBucket(categoryId); + for (const g of data) { + const one = this.parseOneGirlChat(g); + if (!one) continue; + bucket.chats.set(g.id, one); + } + console.log("保存技师的聊天数据: ", bucket); + } + + /** 取某分类 + girlId 的聊天数据 */ + private getGrilChat(categoryId: string, girlId: number): GirlChatData | null { + const b = this.ensureCategories().get(categoryId); + if (!b) return null; + return b.chats.get(girlId) ?? null; + } + + /** 获取总聊天次数 */ + public getChatTotalCount(categoryId: string, girlId: number): number { + let oneData = this.getGrilChat(categoryId, girlId); + if (!oneData) return 0; + return oneData.getChatTotalCount(); + } + + /** 保存总聊天次数 */ + public setChatTotalCount(categoryId: string, girlId: number, value: number): void { + let oneData = this.getGrilChat(categoryId, girlId); + if (!oneData) return; + return oneData.setChatTotalCount(value); + } + + /** 获取剩余聊天次数 */ + public getChatRemainCount(categoryId: string, girlId: number): number { + let oneData = this.getGrilChat(categoryId, girlId); + if (!oneData) return 0; + return oneData.getChatRemainCount(); + } + + /** 保存剩余聊天次数 */ + public setChatRemainCount(categoryId: string, girlId: number, value: number): void { + let oneData = this.getGrilChat(categoryId, girlId); + if (!oneData) return; + return oneData.setChatRemainCount(value); + } + + /** 更新剩余聊天次数 */ + public useChat(categoryId: string, girlId: number, times: number = 1): void { + let oneData = this.getGrilChat(categoryId, girlId); + if (!oneData) return; + return oneData.useChat(times); + } + + /** --------------------------------------------------------- 技师的好感度数据 --------------------------------------------------------- */ + + // 解析技师好感度数据,一个 + private parseOneGirlFavorability(data: proto.cs.IGirlData): GirlFavorabilityData | null { + if (!data) return null; + let oneData = new GirlFavorabilityData(); + oneData.init?.(DataId.GirlFavorability); + oneData.setStar(data.star); + return oneData; + } + + /** 保存技师的好感度数据 */ + private setGirlFavorability(categoryId: string, data: proto.cs.IGirlData[]): void { + if (!data) return; + const bucket = this.ensureBucket(categoryId); + for (const g of data) { + const one = this.parseOneGirlFavorability(g); + if (!one) continue; + bucket.favorability.set(g.id, one); + } + console.log("保存技师的好感度数据: ", bucket); + } + + /** 取某分类 + girlId 的好感度数据 */ + private getGrilFavorability(categoryId: string, girlId: number): GirlFavorabilityData | null { + const b = this.ensureCategories().get(categoryId); + if (!b) return null; + return b.favorability.get(girlId) ?? null; + } + + /** 获取星级 */ + public getStar(categoryId: string, girlId: number): number { + let oneData = this.getGrilFavorability(categoryId, girlId); + if (!oneData) return 0; + return oneData.getStar(); + } + /** --------------------------------------------------------- 每日推荐 --------------------------------------------------------- */ /** 保存每日推荐:放入特殊分类 DAILY_BUCKET,并维护 id 索引 */ - public setDailyRecommend(res: proto.cs.ICSDailyRecommendRes): void { - this.mergeBriefs(DAILY_BUCKET, res.girls); - this._dailyRecommendIds = res.girls.map(g => g.id ?? 0); - console.log("保存每日推荐: ", this._dailyRecommendIds); + public setDailyRecommend(data: proto.cs.ICSDailyRecommendRes): void { + if (!data) return; + this.mergeOneBrief(DAILY_BUCKET, data.girl); + const bucket = this.ensureBucket(DAILY_BUCKET); + console.log("保存每日推荐: ", bucket); } - /** 获取每日推荐的简要信息 */ - private getRecommendGrilBrief(categoryId: string, index: number): proto.cs.IGirlBrief | null { - const b = this.ensureCategories().get(categoryId); - if (!b) return null; - if (index < 0 || index >= b.girlIds.length) return null; - return b.briefs.get(b.girlIds[index]) ?? null; + /** 获取推荐id */ + public getRecommendGirlId(): number { + const bucket = this.ensureBucket(DAILY_BUCKET); + const girlIds = bucket.girlIds; + const length = girlIds.length; + if (length <= 0) return 0; + return girlIds[length-1]; + } + + /** 获取每日推荐的简要数据 */ + private getRecommendGrilBrief(): GirlBriefData | null { + const recId = this.getRecommendGirlId(); + if (recId <= 0) return null; + const data = this.getGrilBrief(DAILY_BUCKET, recId); + return data; } - /** 获取 id */ - public getRecommendGrilId(index: number): number { - let oneData = this.getRecommendGrilBrief(DAILY_BUCKET, index); - if (!oneData) return 0; - return oneData.id; - } - /** 获取名字 */ - public getRecommendGrilName(index: number): string { - let oneData = this.getRecommendGrilBrief(DAILY_BUCKET, index); + public getRecommendGrilName(): string { + let oneData = this.getRecommendGrilBrief(); if (!oneData) return ""; - return oneData.name; + return oneData.getGrilName(); } - /** 获取头像 */ - public getRecommendGrilAvatar(index: number): string { - let oneData = this.getRecommendGrilBrief(DAILY_BUCKET, index); + /** 获取头像路径 */ + public getRecommendGrilAvatar(): string { + let oneData = this.getRecommendGrilBrief(); if (!oneData) return ""; - return oneData.avatar; + return oneData.getGrilAvatar(); } } diff --git a/assets/Scripts/chat18x/data/GirlDetailData.ts b/assets/Scripts/chat18x/data/GirlDetailData.ts new file mode 100644 index 00000000..5d41de47 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlDetailData.ts @@ -0,0 +1,228 @@ +/** + * 技师的详细数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GirlDetailData extends BaseData { + // id + private id: number; + // 自我介绍 + private detailDesc: string; + // 图片数据 + private photoData: proto.cs.IPurchaseCommercialImage[]; + // 视频数据 + private videoData: proto.cs.IPurchaseCommercialVideo[]; + + constructor() { + super(); + this.id = 0; + this.detailDesc = ""; + this.photoData = []; + this.videoData = []; + } + + public reset(): void { + this.id = 0; + this.detailDesc = ""; + this.photoData = []; + this.videoData = []; + } + + public clear(): void { + this.id = 0; + this.detailDesc = ""; + this.photoData = []; + this.videoData = []; + } + + public destroy(): void { + super.destroy(); + this.id = null; + this.detailDesc = null; + this.photoData = null; + this.videoData = null; + } + + /** 保存数据 */ + public setData(data: proto.cs.IGirlsDetail): void { + if (!data) return; + this.id = data.id; + this.detailDesc = data.detailDesc; + this.photoData = this.parseAllGirlPhoto(data.commercialImages); + this.videoData = this.parseAllGirlVideo(data.commercialVideos); + console.log("保存了技师的详细数据,id:", this.id); + } + + /** 获取 id */ + public getId(): number { + return this.id; + } + + /** 获取自我介绍 */ + public getGirlDesc(): string { + return this.detailDesc; + } + + /** --------------------------------------------------------- 图片数据 --------------------------------------------------------- */ + + // 解析技师图片数据,一个 + private parseOneGirlPhoto(data: proto.cs.IPurchaseCommercialImage): proto.cs.IPurchaseCommercialImage | null { + if (!data) return null; + const oneData: proto.cs.IPurchaseCommercialImage = { + id: data.id, // 图片 id + imageType: data.imageType, // 图片类型 + unlockCounts: data.unlockCounts, // 聊天触发次数 + imagePrice: data.imagePrice, // 图片价格 + path: data.path, // 图片资源路径 + }; + return oneData; + } + + // 解析技师图片数据,多个 + private parseAllGirlPhoto(data: proto.cs.IPurchaseCommercialImage[]): proto.cs.IPurchaseCommercialImage[] { + if (!data) return []; + let allData = []; + for (const value of data) { + const oneData: proto.cs.IPurchaseCommercialImage = this.parseOneGirlPhoto(value); + if (oneData) { + allData.push(oneData); + } + } + return allData; + } + + /** 获取所有技师图片数据的数量 */ + public getAllGrilPhotoDataCount(): number { + if (!this.photoData) return 0; + return this.photoData.length; + } + + /** 获取所有技师图片数据的id */ + public getAllGrilPhotoDataId(): number[] { + if (!this.photoData) return []; + // 获取所有 id + let allId = []; + for (let one of this.photoData) { + allId.push(one.id); + } + return allId; + } + + /** 获取技师图片数据,通过 id */ + private getGrilPhotoData(id: number): proto.cs.IPurchaseCommercialImage | null { + if (!this.photoData) return null; + // 遍历数组找到匹配的资源 + for (let oneData of this.photoData) { + if (oneData.id === id) { + return oneData; + } + } + return null; + } + + /** 获取技师图片的类型 */ + public getGrilPhotoType(id: number): number { + let oneData = this.getGrilPhotoData(id); + if (!oneData) return 0; + return oneData.imageType; + } + + /** 获取技师图片的聊天触发次数 */ + public getGrilPhotoUnlockCounts(id: number): number { + let oneData = this.getGrilPhotoData(id); + if (!oneData) return 0; + return oneData.unlockCounts; + } + + /** 获取技师图片的价格 */ + public getGrilPhotoPrice(id: number): number { + let oneData = this.getGrilPhotoData(id); + if (!oneData) return 0; + return oneData.imagePrice; + } + + /** 获取技师图片的资源路径 */ + public getGrilPhotoPath(id: number): string { + let oneData = this.getGrilPhotoData(id); + if (!oneData) return ""; + return oneData.path; + } + + /** --------------------------------------------------------- 视频数据 --------------------------------------------------------- */ + + // 解析技师视频数据,一个 + private parseOneGirlVideo(data: proto.cs.IPurchaseCommercialVideo): proto.cs.IPurchaseCommercialVideo | null { + if (!data) return null; + const oneData: proto.cs.IPurchaseCommercialVideo = { + id: data.id, // 视频 id + path: data.path, // 视频资源路径 + emotion: data.emotion, // 关联情绪 + videoPrice: data.videoPrice, // 价格 + }; + return oneData; + } + + // 解析技师视频数据,多个 + private parseAllGirlVideo(data: proto.cs.IPurchaseCommercialVideo[]): proto.cs.IPurchaseCommercialVideo[] { + if (!data) return []; + let allData = []; + for (const value of data) { + const oneData: proto.cs.IPurchaseCommercialVideo = this.parseOneGirlVideo(value); + if (oneData) { + allData.push(oneData); + } + } + return allData; + } + + /** 获取所有技师视频数据的数量 */ + public getAllGrilVideoDataCount(): number { + if (!this.videoData) return 0; + return this.videoData.length; + } + + /** 获取所有技师视频数据的id */ + public getAllGrilVideoDataId(): number[] { + if (!this.videoData) return []; + // 获取所有 id + let allId = []; + for (let one of this.videoData) { + allId.push(one.id); + } + return allId; + } + + /** 获取技师视频数据,通过 id */ + private getGrilVideoData(id: number): proto.cs.IPurchaseCommercialVideo | null { + if (!this.videoData) return null; + // 遍历数组找到匹配的资源 + for (let oneData of this.videoData) { + if (oneData.id === id) { + return oneData; + } + } + return null; + } + + /** 获取技师视频的资源路径 */ + public getGrilVideoPath(id: number): string { + let oneData = this.getGrilVideoData(id); + if (!oneData) return ""; + return oneData.path; + } + + /** 获取技师视频的关联情绪 */ + public getGrilVideoEmotion(id: number): number { + let oneData = this.getGrilVideoData(id); + if (!oneData) return 0; + return oneData.emotion; + } + + /** 获取技师视频的价格 */ + public getGrilVideoPrice(id: number): number { + let oneData = this.getGrilVideoData(id); + if (!oneData) return 0; + return oneData.videoPrice; + } +} diff --git a/assets/Scripts/chat18x/data/GirlDetailData.ts.meta b/assets/Scripts/chat18x/data/GirlDetailData.ts.meta new file mode 100644 index 00000000..cb8b9559 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlDetailData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "f10268c6-f575-4249-9175-499a07aeb2d8", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/GirlFavorabilityData.ts b/assets/Scripts/chat18x/data/GirlFavorabilityData.ts new file mode 100644 index 00000000..3a8efbfd --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlFavorabilityData.ts @@ -0,0 +1,54 @@ +/** + * 技师的好感度数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GirlFavorabilityData extends BaseData { + // id + private id: number; + // 星级 + private star: number; + + constructor() { + super(); + this.id = 0; + this.star = 0; + } + + public reset(): void { + this.id = 0; + this.star = 0; + } + + public clear(): void { + this.id = 0; + this.star = 0; + } + + public destroy(): void { + super.destroy(); + this.id = null; + this.star = null; + } + + /** 获取 id */ + public getId(): number { + return this.id; + } + + /** 保存 id */ + public setId(value: number): void { + this.id = value; + } + + /** 获取星级 */ + public getStar(): number { + return this.star; + } + + /** 保存星级 */ + public setStar(value: number): void { + this.star = value; + } +} diff --git a/assets/Scripts/chat18x/data/GirlFavorabilityData.ts.meta b/assets/Scripts/chat18x/data/GirlFavorabilityData.ts.meta new file mode 100644 index 00000000..6ef9a019 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlFavorabilityData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "fc838010-523c-4f4a-bff4-8c83d0ce5618", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/GirlUnlockData.ts b/assets/Scripts/chat18x/data/GirlUnlockData.ts new file mode 100644 index 00000000..4e65ecb3 --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlUnlockData.ts @@ -0,0 +1,130 @@ +/** + * 技师的解锁数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GirlUnlockData extends BaseData { + // id + private id: number; + // 付费技师是否已经解锁 + private isRelease: boolean; + // 解锁图片 id + private unlockedImageIds: number[]; + // 解锁视频 id + private unlockedVideoIds: number[]; + + constructor() { + super(); + this.id = 0; + this.isRelease = false; + this.unlockedImageIds = []; + this.unlockedVideoIds = []; + } + + public reset(): void { + this.id = 0; + this.isRelease = false; + this.unlockedImageIds = []; + this.unlockedVideoIds = []; + } + + public clear(): void { + this.id = 0; + this.isRelease = false; + this.unlockedImageIds = []; + this.unlockedVideoIds = []; + } + + public destroy(): void { + super.destroy(); + this.id = null; + this.isRelease = null; + this.unlockedImageIds = null; + this.unlockedVideoIds = null; + } + + /** 获取 id */ + public getId(): number { + return this.id; + } + + /** 保存 id */ + public setId(value: number): void { + this.id = value; + } + + /** 获取 付费技师是否已经解锁 */ + public getIsRelease(): boolean { + return this.isRelease; + } + + /** 保存 付费技师是否已经解锁 */ + public setIsRelease(value: boolean): void { + this.isRelease = value; + } + + /** 判断图片是否解锁,根据 id */ + public isImageUnlock(id: number): boolean { + for (let i = 0; i < this.unlockedImageIds.length; i++) { + if (this.unlockedImageIds[i] === id) { + return true; + } + } + return false; + } + + /** 解锁图片 */ + public unlockImage(id: number) { + // 去重 + let exists = this.isImageUnlock(id); + if (!exists) { + this.unlockedImageIds.push(id); + } + console.log("当前解锁图片的所有id:", this.unlockedImageIds); + } + + /** 获取所有解锁图片的 id */ + public getUnlockedImageIds(): number[] { + return this.unlockedImageIds; + } + + /** 保存解锁图片 id */ + public setUnlockedImageIds(value: number[]): void { + for(let one of value) { + this.unlockImage(one); + } + } + + /** 判断视频是否解锁,根据 id */ + public isVideoUnlock(id: number): boolean { + for (let i = 0; i < this.unlockedVideoIds.length; i++) { + if (this.unlockedVideoIds[i] === id) { + return true; + } + } + return false; + } + + /** 解锁视频 */ + public unlockVideo(id: number) { + // 去重 + let exists = this.isVideoUnlock(id);; + if (!exists) { + this.unlockedVideoIds.push(id); + } + console.log("当前解锁视频的所有id:", this.unlockedVideoIds); + } + + /** 获取所有解锁视频的 id */ + public getUnlockedVideoIds(): number[] { + return this.unlockedVideoIds; + } + + /** 保存解锁视频 id */ + public setUnlockedVideoIds(value: number[]): void { + for(let one of value) { + this.unlockVideo(one); + } + } +} diff --git a/assets/Scripts/chat18x/data/GirlUnlockData.ts.meta b/assets/Scripts/chat18x/data/GirlUnlockData.ts.meta new file mode 100644 index 00000000..79426d1b --- /dev/null +++ b/assets/Scripts/chat18x/data/GirlUnlockData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "9ae023d4-bad5-4afc-9418-34c70cc4cb08", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/data/ThemeData.ts b/assets/Scripts/chat18x/data/ThemeData.ts index 458c26c0..c207f3d1 100644 --- a/assets/Scripts/chat18x/data/ThemeData.ts +++ b/assets/Scripts/chat18x/data/ThemeData.ts @@ -6,7 +6,7 @@ import proto from 'db://assets/Scripts/proto/proto.pb.js'; export class ThemeData extends BaseData { // 主题数据 - private _themes = new Map(); + private _themes = new Map(); // 主题 id private _themeIds: number[] = []; @@ -32,7 +32,7 @@ export class ThemeData extends BaseData { this._themes.clear(); this._themeIds = []; for (const t of list) { - const vo: proto.cs.IHallTheme = { + const vo: proto.cs.IThemes = { id: t.id || 0, // 主题 id key: t.key || "", // 多语言键 name: t.name || "", // 主题名称 @@ -47,7 +47,7 @@ export class ThemeData extends BaseData { } /** 获取所有主题数据 */ - public get themes(): Map { return this._themes; } + public get themes(): Map { return this._themes; } /** 获取所有主题数据的数量 */ public get themesCount(): number { return this._themes ? this._themes.size : 0; } @@ -56,7 +56,7 @@ export class ThemeData extends BaseData { public get themeIds(): number[] { return this._themeIds; } /** 根据主题 id 获取主题数据 */ - private getThemeDataById(id: number): proto.cs.IHallTheme | null { + private getThemeDataById(id: number): proto.cs.IThemes | null { if (!this._themes) return null; return this._themes.get(id) ?? null; } diff --git a/assets/Scripts/chat18x/data/WalletData.ts b/assets/Scripts/chat18x/data/WalletData.ts index 38182fe7..85867c29 100644 --- a/assets/Scripts/chat18x/data/WalletData.ts +++ b/assets/Scripts/chat18x/data/WalletData.ts @@ -4,35 +4,35 @@ import { BaseData } from "./BaseData"; export class WalletData extends BaseData { - // 钻石数 - private _diamond = 0; + // 余额 + private _balance = 0; // vip失效时间戳 private _vipExpire = 0; public reset(): void { - this._diamond = 0; + this._balance = 0; this._vipExpire = 0; } public clear(): void { - this._diamond = 0; + this._balance = 0; this._vipExpire = 0; } public destroy(): void { super.destroy(); - this._diamond = null; + this._balance = null; this._vipExpire = null; } - /** 设置钻石数 */ - public set diamond(value: number) { - this._diamond = value; + /** 设置余额 */ + public set balance(value: number) { + this._balance = value; } - /** 获取钻石数 */ - public get diamond(): number { - return this._diamond; + /** 获取余额 */ + public get balance(): number { + return this._balance; } /** 设置vip失效时间戳 */ diff --git a/assets/Scripts/chat18x/network/services/MockAuthService.ts b/assets/Scripts/chat18x/network/services/MockAuthService.ts index e8facf50..045bb0ec 100644 --- a/assets/Scripts/chat18x/network/services/MockAuthService.ts +++ b/assets/Scripts/chat18x/network/services/MockAuthService.ts @@ -4,10 +4,8 @@ import type { IAuthService } from "./IAuthService"; export class MockAuthService implements IAuthService { private delay(ms = 180) { return new Promise(r => setTimeout(r, ms)); } - - // 项目里 ApiResponse 结构若固定(code/message 等),把 ok()/err() 调整为你的真实结构即可 private ok(data: T): ApiResponse { - return ({ ok: true, data } as unknown) as ApiResponse; + return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } // private err(message = "mock login error"): ApiResponse { // return ({ ok: false, error: { message } } as unknown) as ApiResponse; @@ -15,18 +13,29 @@ export class MockAuthService implements IAuthService { // 登录 async login(req: proto.cs.ICSLoginReq): Promise> { + // 延时 await this.delay(150); - const name = req?.platType === "guest" ? `guest_${(req?.userId ?? "uid").toString().slice(-6)}` : "tester"; - // 注意:protobufjs 会把 int64 表达为 number/Long。这里用「秒」级时间戳更常见 + const isGuest = req?.platType === "guest"; + const userId = req?.userId ?? "uid"; + const name = isGuest ? `guest_${userId.toString().slice(-6)}` : "tester"; + + // 过期时间(秒级时间戳,7天后过期) const expireSeconds = Math.floor(Date.now() / 1000) + 7 * 24 * 3600; - // 你的生成器通常会把 refresh_token 转成 refreshToken(camelCase) + // 模拟用户ID + const accId = Math.floor(Math.random() * 1000000); + + // 模拟 CDN 前缀 + const cdn = "https://cdn.mockserver.com/"; + const res: proto.cs.ICSLoginRes = { name, token: `mock_token_${Date.now()}`, refreshToken: `mock_refresh_${Date.now()}`, expire: expireSeconds, + accId, + cdn, }; return this.ok(res); diff --git a/assets/Scripts/chat18x/network/services/MockGirlService.ts b/assets/Scripts/chat18x/network/services/MockGirlService.ts index 89a27835..9c43ec10 100644 --- a/assets/Scripts/chat18x/network/services/MockGirlService.ts +++ b/assets/Scripts/chat18x/network/services/MockGirlService.ts @@ -15,50 +15,66 @@ export class MockGirlService implements IGirlService { return ({ code: 100, error: { message } } as unknown) as ApiResponse; } - private genBrief(id: number, name: string, age: number, tagKey: string, priceType: number, price: number, avatar: string, star: number, category: number, listAvatarPath: string): proto.cs.IGirlBrief { + private genBrief(id: number, nameKey: string, age: string, category: number, tagKey: string, priceType: number, price: number, vipUnlock: number, avatarPath: string, listAvatarPath: string): proto.cs.IGirls { return { id, - name, + nameKey, age, + category, tagKey, priceType, price, - avatar, - star, - category, + vipUnlock, + avatarPath, listAvatarPath, }; } - private genPhoto(imageType: number, imagePrice: number, path: string, isRelease: boolean, ): proto.cs.IPurchaseCommercialImage { + private genPhoto(id: number, imageType: number, unlockCounts: number, imagePrice: number, path: string): proto.cs.IPurchaseCommercialImage { return { + id, imageType, + unlockCounts, imagePrice, path, - isRelease, }; } - private genVideo(path: string, emotion: number, videoPrice: number, isRelease: boolean): proto.cs.IPurchaseCommercialVideo { - return { + private genVideo(id: number, path: string, emotion: number, videoPrice: number): proto.cs.IPurchaseCommercialVideo { + return { + id, path, emotion, videoPrice, - isRelease, }; } - private genDetail(brief: proto.cs.IGirlBrief, desc: string, images: proto.cs.IPurchaseCommercialImage[], videos: proto.cs.IPurchaseCommercialVideo[], isRelease: boolean, chatCount: number): proto.cs.IGirlDetail { + private genDetail(id: number, detailDesc: string, commercialImages: proto.cs.IPurchaseCommercialImage[], commercialVideos: proto.cs.IPurchaseCommercialVideo[]): proto.cs.IGirlsDetail { return { - brief, - desc, - images, - videos, - isRelease, - chatCount, + id, + detailDesc, + commercialImages, + commercialVideos, }; } + private genGirlData( + id: number, girl: proto.cs.IGirls, isRelease: boolean, star: number, + detail: proto.cs.IGirlsDetail, images: proto.cs.IResourceUnlock[], videos: proto.cs.IResourceUnlock[], + chatTotalCount: number, chatRemainCount: number): proto.cs.IGirlData { + return { + id, + girl, + isRelease, + star, + detail, + images, + videos, + chatTotalCount, + chatRemainCount, + }; + } + // 每日推荐 async reqDailyRecommend(_req: proto.cs.ICSDailyRecommendReq): Promise> { // 延时 @@ -67,19 +83,19 @@ export class MockGirlService implements IGirlService { const configData = ConfigManager.I.getDataById(ConfigId.Girl); const allId = configData.getAllId(); const recId = allId[0]; - let name = configData.getNameById(recId); - let age = Number(configData.getAgeById(recId)); + let nameKey = configData.getNameById(recId); + let age = configData.getAgeById(recId); let tagKey = configData.getTagKeyById(recId); let priceType = configData.getPriceTypeById(recId); - let price = 9.9; - let avatar = configData.getAvatarPathById(recId); - let star = 3; + let price = configData.getPriceById(recId); + let vipUnlock = configData.getVipUnlockById(recId); + let avatarPath = configData.getAvatarPathById(recId); let category = configData.getCategoryById(recId); let listAvatarPath = configData.getListAvatarPathPathById(recId); - let oneData = this.genBrief(recId, name, age, tagKey, priceType, price, avatar, star, category, listAvatarPath); + let oneData = this.genBrief(recId, nameKey, age, category, tagKey, priceType, price, vipUnlock, avatarPath, listAvatarPath); // 返回数据 - const girls = [oneData]; - return this.ok({ girls }); + const res: proto.cs.ICSDailyRecommendRes = {girl: oneData}; + return this.ok(res); } // 获取技师列表 @@ -105,29 +121,35 @@ export class MockGirlService implements IGirlService { const start = (page - 1) * limit; const pageIds = filteredIds.slice(start, start + limit); - // 映射为 IGirlBrief - const girls: proto.cs.IGirlBrief[] = pageIds.map((id: number) => { - const name = configData.getNameById(id); - const age = Number(configData.getAgeById(id)); + // 映射数据 + const girls: proto.cs.IGirlData[] = pageIds.map((id: number) => { + // 简要数据 + const nameKey = configData.getNameById(id); + const age = configData.getAgeById(id); const tagKey = configData.getTagKeyById(id); - const priceType = Number(configData.getPriceTypeById(id)); - const avatar = configData.getAvatarPathById(id); - - // 如果有价格配置,就用配置里的,否则给个兜底值 - const price = typeof (configData as any).getPriceById === "function" - ? Number((configData as any).getPriceById(id) ?? 9.9) - : 9.9; - - // 星级兜底:1~5 - const star = (id % 5) + 1; - + const priceType = configData.getPriceTypeById(id); + const price = configData.getPriceById(id); + const vipUnlock = configData.getVipUnlockById(id); + const avatarPath = configData.getAvatarPathById(id); const category = configData.getCategoryById(id); - const listAvatarPath = configData.getListAvatarPathPathById(id); - - return this.genBrief(id, name, age, tagKey, priceType, price, avatar, star, category, listAvatarPath); + const listAvatarPath = configData.getListAvatarPathPathById(id); + const briefData = this.genBrief(id, nameKey, age, category, tagKey, priceType, price, vipUnlock, avatarPath, listAvatarPath); + + const isRelease = true; + const star = 3; + // 详细数据 + const detail = null; + const images = []; + const videos = []; + const chatTotalCount = 0; + const chatRemainCount = 0; + const girlData = this.genGirlData(id, briefData, isRelease, star, detail, images, videos, chatTotalCount, chatRemainCount); + + return girlData; }); // 返回数据 - return this.ok({ girls }); + const res: proto.cs.ICSGetGirlListRes = {girls}; + return this.ok(res); } // 获取技师详细信息 @@ -140,45 +162,76 @@ export class MockGirlService implements IGirlService { // id const girlId = req.id; // 简要数据 - let name = girlConfig.getNameById(girlId); - let age = Number(girlConfig.getAgeById(girlId)); + let nameKey = girlConfig.getNameById(girlId); + let age = girlConfig.getAgeById(girlId); let tagKey = girlConfig.getTagKeyById(girlId); let priceType = girlConfig.getPriceTypeById(girlId); - let price = 9.9; - let avatar = girlConfig.getAvatarPathById(girlId); - let star = 3; + let price = girlConfig.getPriceById(girlId); + let vipUnlock = girlConfig.getVipUnlockById(girlId); + let avatarPath = girlConfig.getAvatarPathById(girlId); let category = girlConfig.getCategoryById(girlId); let listAvatarPath = girlConfig.getListAvatarPathPathById(girlId); - let briefData = this.genBrief(girlId, name, age, tagKey, priceType, price, avatar, star, category, listAvatarPath); + let briefData = this.genBrief(girlId, nameKey, age, category, tagKey, priceType, price, vipUnlock, avatarPath, listAvatarPath); - let desc = girlDetailConfig.getDetailDescById(girlId); let isRelease = Math.random() < 0.4; - let chatCount = 10; + let detailDesc = girlDetailConfig.getDetailDescById(girlId); // 图片 let photoData = []; - let photoCount = girlDetailConfig.getCommercialImagesCount(girlId); - for (let i = 0; i < photoCount; i++) { - let imageType = girlDetailConfig.getImageTypeById(girlId, i); - let imagePath = girlDetailConfig.getImagePathById(girlId, i); - let isRelease = Math.random() < 0.4; - let imagePrice = girlDetailConfig.getImagePriceById(girlId, i); - let oneData = this.genPhoto(imageType, imagePrice, imagePath, isRelease); + let photoIds = girlDetailConfig.getCommercialImagesIds(girlId); + for (let id of photoIds) { + let imageType = girlDetailConfig.getImageTypeById(girlId, id); + let unlockCounts = girlDetailConfig.getImageUnlockCountsById(girlId, id); + let imagePrice = girlDetailConfig.getImagePriceById(girlId, id); + let imagePath = girlDetailConfig.getImagePathById(girlId, id); + let oneData = this.genPhoto(id, imageType, unlockCounts, imagePrice, imagePath); photoData.push(oneData); } // 视频 let videoData = []; - let videoCount = girlDetailConfig.getCommercialVideosCount(girlId); - for (let i = 0; i < videoCount; i++) { - let videoPath = girlDetailConfig.getVideoPathById(girlId, i); - let videoEmotion = girlDetailConfig.getVideoEmotionById(girlId, i); - let videoPrice = girlDetailConfig.getVideoPriceById(girlId, i); - let isRelease = Math.random() < 0.4; - let oneData = this.genVideo(videoPath, videoEmotion, videoPrice, isRelease); + let videoIds = girlDetailConfig.getCommercialVideosIds(girlId); + for (let id of videoIds) { + let videoPath = girlDetailConfig.getVideoPathById(girlId, id); + let videoEmotion = girlDetailConfig.getVideoEmotionById(girlId, id); + let videoPrice = girlDetailConfig.getVideoPriceById(girlId, id); + let oneData = this.genVideo(id, videoPath, videoEmotion, videoPrice); videoData.push(oneData); } // 详细数据 - let detail = this.genDetail(briefData, desc, photoData, videoData, isRelease, chatCount); + let detail = this.genDetail(girlId, detailDesc, photoData, videoData); + // 图片解锁数据 + let unlockImageData: proto.cs.IResourceUnlock[] = []; + for (let id of photoIds) { + // 偶数才解锁 + let isUnlock = (id % 2 === 0); + if (isUnlock) { + let oneData = { + girlId: girlId, + resId: id, + }; + unlockImageData.push(oneData); + } + } + // 视频解锁数据 + let unlockVideoData: proto.cs.IResourceUnlock[] = []; + for (let id of videoIds) { + // 偶数才解锁 + let isUnlock = (id % 2 === 0); + if (isUnlock) { + let oneData = { + girlId: girlId, + resId: id, + }; + unlockVideoData.push(oneData); + } + } + + const star = 3; + const chatTotalCount = 10; + const chatRemainCount = 10; + + const girlData = this.genGirlData(girlId, briefData, isRelease, star, detail, unlockImageData, unlockVideoData, chatTotalCount, chatRemainCount); // 返回数据 - return this.ok({ detail }); + const res: proto.cs.ICSGetGirlDetailRes = {girl: girlData}; + return this.ok(res); } } diff --git a/assets/Scripts/chat18x/network/services/MockPlayerDataService.ts b/assets/Scripts/chat18x/network/services/MockPlayerDataService.ts index 88d412c3..5def29a2 100644 --- a/assets/Scripts/chat18x/network/services/MockPlayerDataService.ts +++ b/assets/Scripts/chat18x/network/services/MockPlayerDataService.ts @@ -3,26 +3,26 @@ import proto from "db://assets/Scripts/proto/proto.pb.js"; import type { IPlayerDataService } from "./IPlayerDataService"; export class MockPlayerDataService implements IPlayerDataService { - private delay(ms = 160) { return new Promise(r => setTimeout(r, ms)); } + private delay(ms = 160) { + return new Promise(r => setTimeout(r, ms)); + } - // 按你项目的 ApiResponse 真实结构调整这里 private ok(data: T): ApiResponse { - return ({ ok: true, data } as unknown) as ApiResponse; + return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } - // 如需模拟失败 - // private err(message = "mock myInfo error"): ApiResponse { - // return ({ ok: false, error: { message } } as unknown) as ApiResponse; - // } // 获取个人信息 async reqMyInfo(_req: proto.cs.ICSMyInfoReq): Promise> { + // 延时 await this.delay(); - // 由于我们并不知道 ICSMyInfoRes 的具体字段,这里提供一个“最安全”的空对象返回; - // 如果你有明确字段(例如 name/diamond/vipExpire 等),可在此构造并 as-cast: - // const res = { name: "Player-001", diamond: 123, vipExpire: Math.floor(Date.now()/1000) } as unknown as proto.cs.ICSMyInfoRes; + const nowSeconds = Math.floor(Date.now() / 1000); - const res = ({} as unknown) as proto.cs.ICSMyInfoRes; + const res: proto.cs.ICSMyInfoRes = { + balance: Math.floor(Math.random() * 100000), // 随机余额 + vipExpire: nowSeconds + 30 * 24 * 3600, // vip 30天后过期 + }; + // 返回数据 return this.ok(res); } } diff --git a/assets/Scripts/chat18x/network/services/MockThemeService.ts b/assets/Scripts/chat18x/network/services/MockThemeService.ts index c3da3317..a596dd8e 100644 --- a/assets/Scripts/chat18x/network/services/MockThemeService.ts +++ b/assets/Scripts/chat18x/network/services/MockThemeService.ts @@ -10,7 +10,7 @@ export class MockThemeService implements IThemeService { return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } - private makeTheme(id: number, key: string, name: string, category: number, isRelease: boolean, path: string): proto.cs.IHallTheme { + private makeTheme(id: number, key: string, name: string, category: number, isRelease: boolean, path: string): proto.cs.IThemes { return { id, key, @@ -28,7 +28,7 @@ export class MockThemeService implements IThemeService { const configData = ConfigManager.I.getDataById(ConfigId.Theme); const allId = configData.getAllId(); - let themes: proto.cs.IHallTheme[] = []; + let themes: proto.cs.IThemes[] = []; for (let oneId of allId) { let key = configData.getLanKeyById(oneId); let name = configData.getNameById(oneId); diff --git a/assets/Scripts/chat18x/network/services/PlayerDataService.ts b/assets/Scripts/chat18x/network/services/PlayerDataService.ts index f4d7ad8a..ea397a83 100644 --- a/assets/Scripts/chat18x/network/services/PlayerDataService.ts +++ b/assets/Scripts/chat18x/network/services/PlayerDataService.ts @@ -5,7 +5,7 @@ import { HttpPlayerDataService } from "./HttpPlayerDataService"; import { MockPlayerDataService } from "./MockPlayerDataService"; // 模拟开关 -const USE_MOCK = true; +const USE_MOCK = false; export class PlayerDataService implements IPlayerDataService { private static _I: PlayerDataService | null = null; diff --git a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts index fcd82df0..620acf0f 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts @@ -145,7 +145,7 @@ export class GirlDetailPanel extends li_BaseView { let res = await GirlService.I.reqGetGirlDetail(reqData); if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { // 保存数据 - girlData.setGirlDetails(this.category.toString(), res.data); + girlData.setGirlDetailData(this.category.toString(), res.data); // 根据数据,刷新界面 this.nameKey = girlData.getGrilName(this.category.toString(), this.id); this.girlName.string = LanguageUtils.getText(this.nameKey); @@ -173,39 +173,41 @@ export class GirlDetailPanel extends li_BaseView { "Chat18x" ); - let allPhotoDataCount = girlData.getAllGrilPhotoDataCount(this.category.toString(), this.id); + let resIds = girlData.getAllGrilPhotoDataId(this.category.toString(), this.id); // 也立即尝试调整(以防已经加载完成) this.adjustVideoScale(); - this.refreshImgs(1, this.category, this.id, allPhotoDataCount); + this.refreshImgs(1, this.category, this.id, resIds); } } bindImgToggle() { const girlData = DataManager.I.getDataById(DataId.Girl); - let allPhotoDataCount = girlData.getAllGrilPhotoDataCount(this.category.toString(), this.id); - this.refreshImgs(1, this.category, this.id, allPhotoDataCount); + let resIds = girlData.getAllGrilPhotoDataId(this.category.toString(), this.id); + this.refreshImgs(1, this.category, this.id, resIds); } bindVideoToggle() { const girlData = DataManager.I.getDataById(DataId.Girl); - let allVideoDataCount = girlData.getAllGrilVideoDataCount(this.category.toString(), this.id); - this.refreshImgs(2, this.category, this.id, allVideoDataCount); + let resIds = girlData.getAllGrilVideoDataId(this.category.toString(), this.id); + this.refreshImgs(2, this.category, this.id, resIds); } refreshImgs( type: number, category: number, id: number, - count: number + resIds: number[] ) { for (let i = this.imgsLayout.children.length - 1; i >= 0; i--) { this.imgsLayout.children[i].destroy(); } + let count = resIds.length; for (let i = 0; i < count; i++) { let newNode = instantiate(this.imgItemInst.node); let item = newNode.getComponent(DetailImageItem); - item.refresh(this, type, category, id, i); + let resId = resIds[i]; + item.refresh(this, type, category, id, resId); newNode.active = true; this.imgsLayout.addChild(newNode); } diff --git a/assets/Scripts/chat18x/ui/panels/GirlListPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlListPanel.ts index 7cf8909b..778c2f55 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlListPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlListPanel.ts @@ -50,7 +50,7 @@ export class GirlListPanel extends li_BaseView { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { // 保存数据 const girlData = DataManager.I.getDataById(DataId.Girl); - girlData.setGirlBriefs(category.toString(), res.data); + girlData.setGirlList(category.toString(), res.data); // 根据数据,刷新界面 const allId = girlData.getGirlIds(category.toString()); for (let id of allId) { diff --git a/assets/Scripts/chat18x/ui/panels/ThemePanel.ts b/assets/Scripts/chat18x/ui/panels/ThemePanel.ts index 3573c4e5..215ff232 100644 --- a/assets/Scripts/chat18x/ui/panels/ThemePanel.ts +++ b/assets/Scripts/chat18x/ui/panels/ThemePanel.ts @@ -95,9 +95,9 @@ export class ThemePanel extends li_BaseView { const girlData = DataManager.I.getDataById(DataId.Girl); girlData.setDailyRecommend(res2.data); // 根据数据,刷新界面 - this.recId = girlData.getRecommendGrilId(0); - this.rectNameKey = girlData.getRecommendGrilName(0); - let avatarPath = girlData.getRecommendGrilAvatar(0); + this.recId = girlData.getRecommendGirlId(); + this.rectNameKey = girlData.getRecommendGrilName(); + let avatarPath = girlData.getRecommendGrilAvatar(); //this.recName.string = LanguageUtils.getText(this.rectNameKey); ResManager.I.changeBundleSpriteFrame( this.recSprite, diff --git a/assets/Scripts/chat18x/uiitems/DetailImageItem.ts b/assets/Scripts/chat18x/uiitems/DetailImageItem.ts index 91d87199..9bd80432 100644 --- a/assets/Scripts/chat18x/uiitems/DetailImageItem.ts +++ b/assets/Scripts/chat18x/uiitems/DetailImageItem.ts @@ -26,7 +26,7 @@ export class DetailImageItem extends Component { uitransform: UITransform; category: number; id: number; - index: number; + resId: number; type : number; onLoad() { @@ -92,13 +92,13 @@ export class DetailImageItem extends Component { type: number, category: number, id: number, - index: number + resId: number ) { this.base = base; this.type = type; this.category = category; this.id = id; - this.index = index; + this.resId = resId; this.lock.active = false; this.question.active = true; // 显示问号,表示加载中 @@ -106,14 +106,14 @@ export class DetailImageItem extends Component { let imgPath = ""; if (type === 1) { // 图片 - this.url = girlData.getGrilPhotoPic(this.category.toString(), this.id, this.index); + this.url = girlData.getGrilPhotoPic(this.category.toString(), this.id, this.resId); imgPath = this.url; this.isImage = true; } else if (type === 2) { // 视频 this.isImage = false; - this.url = girlData.getGrilVideoPath(this.category.toString(), this.id, this.index); - let videoPrice = girlData.getGrilVideoPrice(this.category.toString(), this.id, this.index); + this.url = girlData.getGrilVideoPath(this.category.toString(), this.id, this.resId); + let videoPrice = girlData.getGrilVideoPrice(this.category.toString(), this.id, this.resId); if (videoPrice > 0) { imgPath = this.url + "_thumbnail_blur"; } else { diff --git a/assets/Scripts/proto/proto.pb.d.ts b/assets/Scripts/proto/proto.pb.d.ts index ceff1ac8..c9b3ce0a 100644 --- a/assets/Scripts/proto/proto.pb.d.ts +++ b/assets/Scripts/proto/proto.pb.d.ts @@ -6,623 +6,6 @@ declare namespace proto { /** Namespace cs. */ export namespace cs { - /** Properties of a GirlBrief. */ - interface IGirlBrief { - - /** GirlBrief id */ - id?: (number|null); - - /** GirlBrief name */ - name?: (string|null); - - /** GirlBrief age */ - age?: (number|null); - - /** GirlBrief tagKey */ - tagKey?: (string|null); - - /** GirlBrief priceType */ - priceType?: (number|null); - - /** GirlBrief price */ - price?: (number|Long|null); - - /** GirlBrief avatar */ - avatar?: (string|null); - - /** GirlBrief star */ - star?: (number|null); - - /** GirlBrief category */ - category?: (number|null); - - /** GirlBrief listAvatarPath */ - listAvatarPath?: (string|null); - } - - /** Represents a GirlBrief. */ - class GirlBrief implements IGirlBrief { - - /** - * Constructs a new GirlBrief. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IGirlBrief); - - /** GirlBrief id. */ -id: number; - - /** GirlBrief name. */ -name: string; - - /** GirlBrief age. */ -age: number; - - /** GirlBrief tagKey. */ -tagKey: string; - - /** GirlBrief priceType. */ -priceType: number; - - /** GirlBrief price. */ -price: (number|Long); - - /** GirlBrief avatar. */ -avatar: string; - - /** GirlBrief star. */ -star: number; - - /** GirlBrief category. */ -category: number; - - /** GirlBrief listAvatarPath. */ -listAvatarPath: string; - - /** - * Creates a new GirlBrief instance using the specified properties. - * @param [properties] Properties to set - * @returns GirlBrief instance - */ -static create(properties?: cs.IGirlBrief): cs.GirlBrief; - - /** - * Encodes the specified GirlBrief message. Does not implicitly {@link cs.GirlBrief.verify|verify} messages. - * @param message GirlBrief message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IGirlBrief, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GirlBrief message, length delimited. Does not implicitly {@link cs.GirlBrief.verify|verify} messages. - * @param message GirlBrief message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IGirlBrief, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GirlBrief message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GirlBrief - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GirlBrief; - - /** - * Decodes a GirlBrief message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GirlBrief - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GirlBrief; - - /** - * Verifies a GirlBrief message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GirlBrief message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GirlBrief - */ -static fromObject(object: { [k: string]: any }): cs.GirlBrief; - - /** - * Creates a plain object from a GirlBrief message. Also converts values to other types if specified. - * @param message GirlBrief - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.GirlBrief, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GirlBrief to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for GirlBrief - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a GirlPhoto. */ - interface IGirlPhoto { - - /** GirlPhoto pic */ - pic?: (string|null); - - /** GirlPhoto isRelease */ - isRelease?: (boolean|null); - - /** GirlPhoto price */ - price?: (number|null); - } - - /** Represents a GirlPhoto. */ - class GirlPhoto implements IGirlPhoto { - - /** - * Constructs a new GirlPhoto. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IGirlPhoto); - - /** GirlPhoto pic. */ -pic: string; - - /** GirlPhoto isRelease. */ -isRelease: boolean; - - /** GirlPhoto price. */ -price: number; - - /** - * Creates a new GirlPhoto instance using the specified properties. - * @param [properties] Properties to set - * @returns GirlPhoto instance - */ -static create(properties?: cs.IGirlPhoto): cs.GirlPhoto; - - /** - * Encodes the specified GirlPhoto message. Does not implicitly {@link cs.GirlPhoto.verify|verify} messages. - * @param message GirlPhoto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IGirlPhoto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GirlPhoto message, length delimited. Does not implicitly {@link cs.GirlPhoto.verify|verify} messages. - * @param message GirlPhoto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IGirlPhoto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GirlPhoto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GirlPhoto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GirlPhoto; - - /** - * Decodes a GirlPhoto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GirlPhoto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GirlPhoto; - - /** - * Verifies a GirlPhoto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GirlPhoto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GirlPhoto - */ -static fromObject(object: { [k: string]: any }): cs.GirlPhoto; - - /** - * Creates a plain object from a GirlPhoto message. Also converts values to other types if specified. - * @param message GirlPhoto - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.GirlPhoto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GirlPhoto to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for GirlPhoto - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a PurchaseCommercialImage. */ - interface IPurchaseCommercialImage { - - /** PurchaseCommercialImage imageType */ - imageType?: (number|null); - - /** PurchaseCommercialImage imagePrice */ - imagePrice?: (number|null); - - /** PurchaseCommercialImage path */ - path?: (string|null); - - /** PurchaseCommercialImage isRelease */ - isRelease?: (boolean|null); - } - - /** Represents a PurchaseCommercialImage. */ - class PurchaseCommercialImage implements IPurchaseCommercialImage { - - /** - * Constructs a new PurchaseCommercialImage. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IPurchaseCommercialImage); - - /** PurchaseCommercialImage imageType. */ -imageType: number; - - /** PurchaseCommercialImage imagePrice. */ -imagePrice: number; - - /** PurchaseCommercialImage path. */ -path: string; - - /** PurchaseCommercialImage isRelease. */ -isRelease: boolean; - - /** - * Creates a new PurchaseCommercialImage instance using the specified properties. - * @param [properties] Properties to set - * @returns PurchaseCommercialImage instance - */ -static create(properties?: cs.IPurchaseCommercialImage): cs.PurchaseCommercialImage; - - /** - * Encodes the specified PurchaseCommercialImage message. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. - * @param message PurchaseCommercialImage message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IPurchaseCommercialImage, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PurchaseCommercialImage message, length delimited. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. - * @param message PurchaseCommercialImage message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IPurchaseCommercialImage, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PurchaseCommercialImage message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PurchaseCommercialImage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.PurchaseCommercialImage; - - /** - * Decodes a PurchaseCommercialImage message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PurchaseCommercialImage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.PurchaseCommercialImage; - - /** - * Verifies a PurchaseCommercialImage message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PurchaseCommercialImage message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PurchaseCommercialImage - */ -static fromObject(object: { [k: string]: any }): cs.PurchaseCommercialImage; - - /** - * Creates a plain object from a PurchaseCommercialImage message. Also converts values to other types if specified. - * @param message PurchaseCommercialImage - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.PurchaseCommercialImage, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PurchaseCommercialImage to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for PurchaseCommercialImage - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a PurchaseCommercialVideo. */ - interface IPurchaseCommercialVideo { - - /** PurchaseCommercialVideo path */ - path?: (string|null); - - /** PurchaseCommercialVideo emotion */ - emotion?: (number|null); - - /** PurchaseCommercialVideo videoPrice */ - videoPrice?: (number|null); - - /** PurchaseCommercialVideo isRelease */ - isRelease?: (boolean|null); - } - - /** Represents a PurchaseCommercialVideo. */ - class PurchaseCommercialVideo implements IPurchaseCommercialVideo { - - /** - * Constructs a new PurchaseCommercialVideo. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IPurchaseCommercialVideo); - - /** PurchaseCommercialVideo path. */ -path: string; - - /** PurchaseCommercialVideo emotion. */ -emotion: number; - - /** PurchaseCommercialVideo videoPrice. */ -videoPrice: number; - - /** PurchaseCommercialVideo isRelease. */ -isRelease: boolean; - - /** - * Creates a new PurchaseCommercialVideo instance using the specified properties. - * @param [properties] Properties to set - * @returns PurchaseCommercialVideo instance - */ -static create(properties?: cs.IPurchaseCommercialVideo): cs.PurchaseCommercialVideo; - - /** - * Encodes the specified PurchaseCommercialVideo message. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. - * @param message PurchaseCommercialVideo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IPurchaseCommercialVideo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PurchaseCommercialVideo message, length delimited. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. - * @param message PurchaseCommercialVideo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IPurchaseCommercialVideo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PurchaseCommercialVideo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PurchaseCommercialVideo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.PurchaseCommercialVideo; - - /** - * Decodes a PurchaseCommercialVideo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PurchaseCommercialVideo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.PurchaseCommercialVideo; - - /** - * Verifies a PurchaseCommercialVideo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PurchaseCommercialVideo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PurchaseCommercialVideo - */ -static fromObject(object: { [k: string]: any }): cs.PurchaseCommercialVideo; - - /** - * Creates a plain object from a PurchaseCommercialVideo message. Also converts values to other types if specified. - * @param message PurchaseCommercialVideo - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.PurchaseCommercialVideo, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PurchaseCommercialVideo to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for PurchaseCommercialVideo - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a GirlDetail. */ - interface IGirlDetail { - - /** GirlDetail brief */ - brief?: (cs.IGirlBrief|null); - - /** GirlDetail desc */ - desc?: (string|null); - - /** GirlDetail isRelease */ - isRelease?: (boolean|null); - - /** GirlDetail chatCount */ - chatCount?: (number|null); - - /** GirlDetail images */ - images?: (cs.IPurchaseCommercialImage[]|null); - - /** GirlDetail videos */ - videos?: (cs.IPurchaseCommercialVideo[]|null); - } - - /** Represents a GirlDetail. */ - class GirlDetail implements IGirlDetail { - - /** - * Constructs a new GirlDetail. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IGirlDetail); - - /** GirlDetail brief. */ -brief?: (cs.IGirlBrief|null); - - /** GirlDetail desc. */ -desc: string; - - /** GirlDetail isRelease. */ -isRelease: boolean; - - /** GirlDetail chatCount. */ -chatCount: number; - - /** GirlDetail images. */ -images: cs.IPurchaseCommercialImage[]; - - /** GirlDetail videos. */ -videos: cs.IPurchaseCommercialVideo[]; - - /** - * Creates a new GirlDetail instance using the specified properties. - * @param [properties] Properties to set - * @returns GirlDetail instance - */ -static create(properties?: cs.IGirlDetail): cs.GirlDetail; - - /** - * Encodes the specified GirlDetail message. Does not implicitly {@link cs.GirlDetail.verify|verify} messages. - * @param message GirlDetail message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IGirlDetail, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GirlDetail message, length delimited. Does not implicitly {@link cs.GirlDetail.verify|verify} messages. - * @param message GirlDetail message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IGirlDetail, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GirlDetail message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GirlDetail - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GirlDetail; - - /** - * Decodes a GirlDetail message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GirlDetail - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GirlDetail; - - /** - * Verifies a GirlDetail message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GirlDetail message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GirlDetail - */ -static fromObject(object: { [k: string]: any }): cs.GirlDetail; - - /** - * Creates a plain object from a GirlDetail message. Also converts values to other types if specified. - * @param message GirlDetail - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.GirlDetail, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GirlDetail to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for GirlDetail - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - /** Properties of a CSDailyRecommendReq. */ interface ICSDailyRecommendReq { } @@ -717,8 +100,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSDailyRecommendRes. */ interface ICSDailyRecommendRes { - /** CSDailyRecommendRes girls */ - girls?: (cs.IGirlBrief[]|null); + /** CSDailyRecommendRes girl */ + girl?: (cs.IGirls|null); } /** Represents a CSDailyRecommendRes. */ @@ -730,8 +113,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSDailyRecommendRes); - /** CSDailyRecommendRes girls. */ -girls: cs.IGirlBrief[]; + /** CSDailyRecommendRes girl. */ +girl?: (cs.IGirls|null); /** * Creates a new CSDailyRecommendRes instance using the specified properties. @@ -902,138 +285,11 @@ toJSON(): { [k: string]: any }; static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a HallTheme. */ - interface IHallTheme { - - /** HallTheme id */ - id?: (number|null); - - /** HallTheme key */ - key?: (string|null); - - /** HallTheme name */ - name?: (string|null); - - /** HallTheme category */ - category?: (number|null); - - /** HallTheme isRelease */ - isRelease?: (boolean|null); - - /** HallTheme path */ - path?: (string|null); - } - - /** Represents a HallTheme. */ - class HallTheme implements IHallTheme { - - /** - * Constructs a new HallTheme. - * @param [properties] Properties to set - */ - constructor(properties?: cs.IHallTheme); - - /** HallTheme id. */ -id: number; - - /** HallTheme key. */ -key: string; - - /** HallTheme name. */ -name: string; - - /** HallTheme category. */ -category: number; - - /** HallTheme isRelease. */ -isRelease: boolean; - - /** HallTheme path. */ -path: string; - - /** - * Creates a new HallTheme instance using the specified properties. - * @param [properties] Properties to set - * @returns HallTheme instance - */ -static create(properties?: cs.IHallTheme): cs.HallTheme; - - /** - * Encodes the specified HallTheme message. Does not implicitly {@link cs.HallTheme.verify|verify} messages. - * @param message HallTheme message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.IHallTheme, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified HallTheme message, length delimited. Does not implicitly {@link cs.HallTheme.verify|verify} messages. - * @param message HallTheme message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.IHallTheme, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a HallTheme message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns HallTheme - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.HallTheme; - - /** - * Decodes a HallTheme message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns HallTheme - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.HallTheme; - - /** - * Verifies a HallTheme message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a HallTheme message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns HallTheme - */ -static fromObject(object: { [k: string]: any }): cs.HallTheme; - - /** - * Creates a plain object from a HallTheme message. Also converts values to other types if specified. - * @param message HallTheme - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.HallTheme, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this HallTheme to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for HallTheme - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - /** Properties of a CSHallThemeRes. */ interface ICSHallThemeRes { /** CSHallThemeRes themes */ - themes?: (cs.IHallTheme[]|null); + themes?: (cs.IThemes[]|null); } /** Represents a CSHallThemeRes. */ @@ -1046,7 +302,7 @@ static getTypeUrl(typeUrlPrefix?: string): string; constructor(properties?: cs.ICSHallThemeRes); /** CSHallThemeRes themes. */ -themes: cs.IHallTheme[]; +themes: cs.IThemes[]; /** * Creates a new CSHallThemeRes instance using the specified properties. @@ -1126,6 +382,254 @@ toJSON(): { [k: string]: any }; static getTypeUrl(typeUrlPrefix?: string): string; } + /** Properties of a ResourceUnlock. */ + interface IResourceUnlock { + + /** ResourceUnlock girlId */ + girlId?: (number|null); + + /** ResourceUnlock resId */ + resId?: (number|null); + } + + /** Represents a ResourceUnlock. */ + class ResourceUnlock implements IResourceUnlock { + + /** + * Constructs a new ResourceUnlock. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IResourceUnlock); + + /** ResourceUnlock girlId. */ +girlId: number; + + /** ResourceUnlock resId. */ +resId: number; + + /** + * Creates a new ResourceUnlock instance using the specified properties. + * @param [properties] Properties to set + * @returns ResourceUnlock instance + */ +static create(properties?: cs.IResourceUnlock): cs.ResourceUnlock; + + /** + * Encodes the specified ResourceUnlock message. Does not implicitly {@link cs.ResourceUnlock.verify|verify} messages. + * @param message ResourceUnlock message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IResourceUnlock, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ResourceUnlock message, length delimited. Does not implicitly {@link cs.ResourceUnlock.verify|verify} messages. + * @param message ResourceUnlock message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IResourceUnlock, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ResourceUnlock message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ResourceUnlock + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.ResourceUnlock; + + /** + * Decodes a ResourceUnlock message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ResourceUnlock + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.ResourceUnlock; + + /** + * Verifies a ResourceUnlock message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ResourceUnlock message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ResourceUnlock + */ +static fromObject(object: { [k: string]: any }): cs.ResourceUnlock; + + /** + * Creates a plain object from a ResourceUnlock message. Also converts values to other types if specified. + * @param message ResourceUnlock + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.ResourceUnlock, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ResourceUnlock to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ResourceUnlock + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a GirlData. */ + interface IGirlData { + + /** GirlData id */ + id?: (number|null); + + /** GirlData girl */ + girl?: (cs.IGirls|null); + + /** GirlData isRelease */ + isRelease?: (boolean|null); + + /** GirlData star */ + star?: (number|null); + + /** GirlData detail */ + detail?: (cs.IGirlsDetail|null); + + /** GirlData images */ + images?: (cs.IResourceUnlock[]|null); + + /** GirlData videos */ + videos?: (cs.IResourceUnlock[]|null); + + /** GirlData chatTotalCount */ + chatTotalCount?: (number|null); + + /** GirlData chatRemainCount */ + chatRemainCount?: (number|null); + } + + /** Represents a GirlData. */ + class GirlData implements IGirlData { + + /** + * Constructs a new GirlData. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IGirlData); + + /** GirlData id. */ +id: number; + + /** GirlData girl. */ +girl?: (cs.IGirls|null); + + /** GirlData isRelease. */ +isRelease: boolean; + + /** GirlData star. */ +star: number; + + /** GirlData detail. */ +detail?: (cs.IGirlsDetail|null); + + /** GirlData images. */ +images: cs.IResourceUnlock[]; + + /** GirlData videos. */ +videos: cs.IResourceUnlock[]; + + /** GirlData chatTotalCount. */ +chatTotalCount: number; + + /** GirlData chatRemainCount. */ +chatRemainCount: number; + + /** + * Creates a new GirlData instance using the specified properties. + * @param [properties] Properties to set + * @returns GirlData instance + */ +static create(properties?: cs.IGirlData): cs.GirlData; + + /** + * Encodes the specified GirlData message. Does not implicitly {@link cs.GirlData.verify|verify} messages. + * @param message GirlData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IGirlData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GirlData message, length delimited. Does not implicitly {@link cs.GirlData.verify|verify} messages. + * @param message GirlData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IGirlData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GirlData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GirlData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GirlData; + + /** + * Decodes a GirlData message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GirlData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GirlData; + + /** + * Verifies a GirlData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GirlData message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GirlData + */ +static fromObject(object: { [k: string]: any }): cs.GirlData; + + /** + * Creates a plain object from a GirlData message. Also converts values to other types if specified. + * @param message GirlData + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.GirlData, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GirlData to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GirlData + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + /** Properties of a CSGetGirlListReq. */ interface ICSGetGirlListReq { @@ -1239,7 +743,7 @@ static getTypeUrl(typeUrlPrefix?: string): string; interface ICSGetGirlListRes { /** CSGetGirlListRes girls */ - girls?: (cs.IGirlBrief[]|null); + girls?: (cs.IGirlData[]|null); } /** Represents a CSGetGirlListRes. */ @@ -1252,7 +756,7 @@ static getTypeUrl(typeUrlPrefix?: string): string; constructor(properties?: cs.ICSGetGirlListRes); /** CSGetGirlListRes girls. */ -girls: cs.IGirlBrief[]; +girls: cs.IGirlData[]; /** * Creates a new CSGetGirlListRes instance using the specified properties. @@ -1432,8 +936,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSGetGirlDetailRes. */ interface ICSGetGirlDetailRes { - /** CSGetGirlDetailRes detail */ - detail?: (cs.IGirlDetail|null); + /** CSGetGirlDetailRes girl */ + girl?: (cs.IGirlData|null); } /** Represents a CSGetGirlDetailRes. */ @@ -1445,8 +949,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSGetGirlDetailRes); - /** CSGetGirlDetailRes detail. */ -detail?: (cs.IGirlDetail|null); + /** CSGetGirlDetailRes girl. */ +girl?: (cs.IGirlData|null); /** * Creates a new CSGetGirlDetailRes instance using the specified properties. @@ -1526,503 +1030,588 @@ toJSON(): { [k: string]: any }; static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Good. */ - interface IGood { + /** Properties of a CSUnlockGirlReq. */ + interface ICSUnlockGirlReq { - /** Good id */ + /** CSUnlockGirlReq id */ id?: (number|null); - - /** Good name */ - name?: (string|null); - - /** Good desc */ - desc?: (string|null); - - /** Good price */ - price?: (string|null); - - /** Good count */ - count?: (number|null); } - /** Represents a Good. */ - class Good implements IGood { + /** Represents a CSUnlockGirlReq. */ + class CSUnlockGirlReq implements ICSUnlockGirlReq { /** - * Constructs a new Good. + * Constructs a new CSUnlockGirlReq. * @param [properties] Properties to set */ - constructor(properties?: cs.IGood); + constructor(properties?: cs.ICSUnlockGirlReq); - /** Good id. */ + /** CSUnlockGirlReq id. */ id: number; - /** Good name. */ -name: string; - - /** Good desc. */ -desc: string; - - /** Good price. */ -price: string; - - /** Good count. */ -count: number; - /** - * Creates a new Good instance using the specified properties. + * Creates a new CSUnlockGirlReq instance using the specified properties. * @param [properties] Properties to set - * @returns Good instance + * @returns CSUnlockGirlReq instance */ -static create(properties?: cs.IGood): cs.Good; +static create(properties?: cs.ICSUnlockGirlReq): cs.CSUnlockGirlReq; /** - * Encodes the specified Good message. Does not implicitly {@link cs.Good.verify|verify} messages. - * @param message Good message or plain object to encode + * Encodes the specified CSUnlockGirlReq message. Does not implicitly {@link cs.CSUnlockGirlReq.verify|verify} messages. + * @param message CSUnlockGirlReq message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encode(message: cs.IGood, writer?: $protobuf.Writer): $protobuf.Writer; +static encode(message: cs.ICSUnlockGirlReq, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Good message, length delimited. Does not implicitly {@link cs.Good.verify|verify} messages. - * @param message Good message or plain object to encode + * Encodes the specified CSUnlockGirlReq message, length delimited. Does not implicitly {@link cs.CSUnlockGirlReq.verify|verify} messages. + * @param message CSUnlockGirlReq message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encodeDelimited(message: cs.IGood, writer?: $protobuf.Writer): $protobuf.Writer; +static encodeDelimited(message: cs.ICSUnlockGirlReq, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Good message from the specified reader or buffer. + * Decodes a CSUnlockGirlReq message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Good + * @returns CSUnlockGirlReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.Good; +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSUnlockGirlReq; /** - * Decodes a Good message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockGirlReq message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Good + * @returns CSUnlockGirlReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.Good; +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSUnlockGirlReq; /** - * Verifies a Good message. + * Verifies a CSUnlockGirlReq message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Good message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockGirlReq message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Good + * @returns CSUnlockGirlReq */ -static fromObject(object: { [k: string]: any }): cs.Good; +static fromObject(object: { [k: string]: any }): cs.CSUnlockGirlReq; /** - * Creates a plain object from a Good message. Also converts values to other types if specified. - * @param message Good + * Creates a plain object from a CSUnlockGirlReq message. Also converts values to other types if specified. + * @param message CSUnlockGirlReq * @param [options] Conversion options * @returns Plain object */ -static toObject(message: cs.Good, options?: $protobuf.IConversionOptions): { [k: string]: any }; +static toObject(message: cs.CSUnlockGirlReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Good to JSON. + * Converts this CSUnlockGirlReq to JSON. * @returns JSON object */ toJSON(): { [k: string]: any }; /** - * Gets the default type url for Good + * Gets the default type url for CSUnlockGirlReq * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CSGetShopReq. */ - interface ICSGetShopReq { + /** Properties of a CSUnlockGirlRes. */ + interface ICSUnlockGirlRes { } - /** Represents a CSGetShopReq. */ - class CSGetShopReq implements ICSGetShopReq { + /** Represents a CSUnlockGirlRes. */ + class CSUnlockGirlRes implements ICSUnlockGirlRes { /** - * Constructs a new CSGetShopReq. + * Constructs a new CSUnlockGirlRes. * @param [properties] Properties to set */ - constructor(properties?: cs.ICSGetShopReq); + constructor(properties?: cs.ICSUnlockGirlRes); /** - * Creates a new CSGetShopReq instance using the specified properties. + * Creates a new CSUnlockGirlRes instance using the specified properties. * @param [properties] Properties to set - * @returns CSGetShopReq instance + * @returns CSUnlockGirlRes instance */ -static create(properties?: cs.ICSGetShopReq): cs.CSGetShopReq; +static create(properties?: cs.ICSUnlockGirlRes): cs.CSUnlockGirlRes; /** - * Encodes the specified CSGetShopReq message. Does not implicitly {@link cs.CSGetShopReq.verify|verify} messages. - * @param message CSGetShopReq message or plain object to encode + * Encodes the specified CSUnlockGirlRes message. Does not implicitly {@link cs.CSUnlockGirlRes.verify|verify} messages. + * @param message CSUnlockGirlRes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encode(message: cs.ICSGetShopReq, writer?: $protobuf.Writer): $protobuf.Writer; +static encode(message: cs.ICSUnlockGirlRes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CSGetShopReq message, length delimited. Does not implicitly {@link cs.CSGetShopReq.verify|verify} messages. - * @param message CSGetShopReq message or plain object to encode + * Encodes the specified CSUnlockGirlRes message, length delimited. Does not implicitly {@link cs.CSUnlockGirlRes.verify|verify} messages. + * @param message CSUnlockGirlRes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encodeDelimited(message: cs.ICSGetShopReq, writer?: $protobuf.Writer): $protobuf.Writer; +static encodeDelimited(message: cs.ICSUnlockGirlRes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CSGetShopReq message from the specified reader or buffer. + * Decodes a CSUnlockGirlRes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CSGetShopReq + * @returns CSUnlockGirlRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetShopReq; +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSUnlockGirlRes; /** - * Decodes a CSGetShopReq message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockGirlRes message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CSGetShopReq + * @returns CSUnlockGirlRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetShopReq; +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSUnlockGirlRes; /** - * Verifies a CSGetShopReq message. + * Verifies a CSUnlockGirlRes message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CSGetShopReq message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockGirlRes message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CSGetShopReq + * @returns CSUnlockGirlRes */ -static fromObject(object: { [k: string]: any }): cs.CSGetShopReq; +static fromObject(object: { [k: string]: any }): cs.CSUnlockGirlRes; /** - * Creates a plain object from a CSGetShopReq message. Also converts values to other types if specified. - * @param message CSGetShopReq + * Creates a plain object from a CSUnlockGirlRes message. Also converts values to other types if specified. + * @param message CSUnlockGirlRes * @param [options] Conversion options * @returns Plain object */ -static toObject(message: cs.CSGetShopReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; +static toObject(message: cs.CSUnlockGirlRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CSGetShopReq to JSON. + * Converts this CSUnlockGirlRes to JSON. * @returns JSON object */ toJSON(): { [k: string]: any }; /** - * Gets the default type url for CSGetShopReq + * Gets the default type url for CSUnlockGirlRes * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CSGetShopRes. */ - interface ICSGetShopRes { - - /** CSGetShopRes Goods */ - Goods?: (cs.IGood[]|null); + /** EnmResType enum. */ + enum EnmResType { + ERT_Image = 0, + ERT_Video = 1 } - /** Represents a CSGetShopRes. */ - class CSGetShopRes implements ICSGetShopRes { + /** Properties of a CSUnlockResourceReq. */ + interface ICSUnlockResourceReq { - /** - * Constructs a new CSGetShopRes. - * @param [properties] Properties to set - */ - constructor(properties?: cs.ICSGetShopRes); - - /** CSGetShopRes Goods. */ -Goods: cs.IGood[]; - - /** - * Creates a new CSGetShopRes instance using the specified properties. - * @param [properties] Properties to set - * @returns CSGetShopRes instance - */ -static create(properties?: cs.ICSGetShopRes): cs.CSGetShopRes; - - /** - * Encodes the specified CSGetShopRes message. Does not implicitly {@link cs.CSGetShopRes.verify|verify} messages. - * @param message CSGetShopRes message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encode(message: cs.ICSGetShopRes, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CSGetShopRes message, length delimited. Does not implicitly {@link cs.CSGetShopRes.verify|verify} messages. - * @param message CSGetShopRes message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ -static encodeDelimited(message: cs.ICSGetShopRes, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CSGetShopRes message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CSGetShopRes - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetShopRes; - - /** - * Decodes a CSGetShopRes message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CSGetShopRes - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetShopRes; - - /** - * Verifies a CSGetShopRes message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ -static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CSGetShopRes message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CSGetShopRes - */ -static fromObject(object: { [k: string]: any }): cs.CSGetShopRes; - - /** - * Creates a plain object from a CSGetShopRes message. Also converts values to other types if specified. - * @param message CSGetShopRes - * @param [options] Conversion options - * @returns Plain object - */ -static toObject(message: cs.CSGetShopRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CSGetShopRes to JSON. - * @returns JSON object - */ -toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for CSGetShopRes - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ -static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a CSBuyChatReq. */ - interface ICSBuyChatReq { - - /** CSBuyChatReq girlId */ + /** CSUnlockResourceReq girlId */ girlId?: (number|null); - /** CSBuyChatReq times */ - times?: (number|null); + /** CSUnlockResourceReq resId */ + resId?: (number|null); + + /** CSUnlockResourceReq type */ + type?: (number|null); } - /** Represents a CSBuyChatReq. */ - class CSBuyChatReq implements ICSBuyChatReq { + /** Represents a CSUnlockResourceReq. */ + class CSUnlockResourceReq implements ICSUnlockResourceReq { /** - * Constructs a new CSBuyChatReq. + * Constructs a new CSUnlockResourceReq. * @param [properties] Properties to set */ - constructor(properties?: cs.ICSBuyChatReq); + constructor(properties?: cs.ICSUnlockResourceReq); - /** CSBuyChatReq girlId. */ + /** CSUnlockResourceReq girlId. */ girlId: number; - /** CSBuyChatReq times. */ -times: number; + /** CSUnlockResourceReq resId. */ +resId: number; + + /** CSUnlockResourceReq type. */ +type: number; /** - * Creates a new CSBuyChatReq instance using the specified properties. + * Creates a new CSUnlockResourceReq instance using the specified properties. * @param [properties] Properties to set - * @returns CSBuyChatReq instance + * @returns CSUnlockResourceReq instance */ -static create(properties?: cs.ICSBuyChatReq): cs.CSBuyChatReq; +static create(properties?: cs.ICSUnlockResourceReq): cs.CSUnlockResourceReq; /** - * Encodes the specified CSBuyChatReq message. Does not implicitly {@link cs.CSBuyChatReq.verify|verify} messages. - * @param message CSBuyChatReq message or plain object to encode + * Encodes the specified CSUnlockResourceReq message. Does not implicitly {@link cs.CSUnlockResourceReq.verify|verify} messages. + * @param message CSUnlockResourceReq message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encode(message: cs.ICSBuyChatReq, writer?: $protobuf.Writer): $protobuf.Writer; +static encode(message: cs.ICSUnlockResourceReq, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CSBuyChatReq message, length delimited. Does not implicitly {@link cs.CSBuyChatReq.verify|verify} messages. - * @param message CSBuyChatReq message or plain object to encode + * Encodes the specified CSUnlockResourceReq message, length delimited. Does not implicitly {@link cs.CSUnlockResourceReq.verify|verify} messages. + * @param message CSUnlockResourceReq message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encodeDelimited(message: cs.ICSBuyChatReq, writer?: $protobuf.Writer): $protobuf.Writer; +static encodeDelimited(message: cs.ICSUnlockResourceReq, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CSBuyChatReq message from the specified reader or buffer. + * Decodes a CSUnlockResourceReq message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CSBuyChatReq + * @returns CSUnlockResourceReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSBuyChatReq; +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSUnlockResourceReq; /** - * Decodes a CSBuyChatReq message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockResourceReq message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CSBuyChatReq + * @returns CSUnlockResourceReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSBuyChatReq; +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSUnlockResourceReq; /** - * Verifies a CSBuyChatReq message. + * Verifies a CSUnlockResourceReq message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CSBuyChatReq message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockResourceReq message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CSBuyChatReq + * @returns CSUnlockResourceReq */ -static fromObject(object: { [k: string]: any }): cs.CSBuyChatReq; +static fromObject(object: { [k: string]: any }): cs.CSUnlockResourceReq; /** - * Creates a plain object from a CSBuyChatReq message. Also converts values to other types if specified. - * @param message CSBuyChatReq + * Creates a plain object from a CSUnlockResourceReq message. Also converts values to other types if specified. + * @param message CSUnlockResourceReq * @param [options] Conversion options * @returns Plain object */ -static toObject(message: cs.CSBuyChatReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; +static toObject(message: cs.CSUnlockResourceReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CSBuyChatReq to JSON. + * Converts this CSUnlockResourceReq to JSON. * @returns JSON object */ toJSON(): { [k: string]: any }; /** - * Gets the default type url for CSBuyChatReq + * Gets the default type url for CSUnlockResourceReq * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CSBuyChatRes. */ - interface ICSBuyChatRes { + /** Properties of a CSUnlockResourceRes. */ + interface ICSUnlockResourceRes { } - /** Represents a CSBuyChatRes. */ - class CSBuyChatRes implements ICSBuyChatRes { + /** Represents a CSUnlockResourceRes. */ + class CSUnlockResourceRes implements ICSUnlockResourceRes { /** - * Constructs a new CSBuyChatRes. + * Constructs a new CSUnlockResourceRes. * @param [properties] Properties to set */ - constructor(properties?: cs.ICSBuyChatRes); + constructor(properties?: cs.ICSUnlockResourceRes); /** - * Creates a new CSBuyChatRes instance using the specified properties. + * Creates a new CSUnlockResourceRes instance using the specified properties. * @param [properties] Properties to set - * @returns CSBuyChatRes instance + * @returns CSUnlockResourceRes instance */ -static create(properties?: cs.ICSBuyChatRes): cs.CSBuyChatRes; +static create(properties?: cs.ICSUnlockResourceRes): cs.CSUnlockResourceRes; /** - * Encodes the specified CSBuyChatRes message. Does not implicitly {@link cs.CSBuyChatRes.verify|verify} messages. - * @param message CSBuyChatRes message or plain object to encode + * Encodes the specified CSUnlockResourceRes message. Does not implicitly {@link cs.CSUnlockResourceRes.verify|verify} messages. + * @param message CSUnlockResourceRes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encode(message: cs.ICSBuyChatRes, writer?: $protobuf.Writer): $protobuf.Writer; +static encode(message: cs.ICSUnlockResourceRes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CSBuyChatRes message, length delimited. Does not implicitly {@link cs.CSBuyChatRes.verify|verify} messages. - * @param message CSBuyChatRes message or plain object to encode + * Encodes the specified CSUnlockResourceRes message, length delimited. Does not implicitly {@link cs.CSUnlockResourceRes.verify|verify} messages. + * @param message CSUnlockResourceRes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ -static encodeDelimited(message: cs.ICSBuyChatRes, writer?: $protobuf.Writer): $protobuf.Writer; +static encodeDelimited(message: cs.ICSUnlockResourceRes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CSBuyChatRes message from the specified reader or buffer. + * Decodes a CSUnlockResourceRes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CSBuyChatRes + * @returns CSUnlockResourceRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSBuyChatRes; +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSUnlockResourceRes; /** - * Decodes a CSBuyChatRes message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockResourceRes message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CSBuyChatRes + * @returns CSUnlockResourceRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ -static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSBuyChatRes; +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSUnlockResourceRes; /** - * Verifies a CSBuyChatRes message. + * Verifies a CSUnlockResourceRes message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CSBuyChatRes message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockResourceRes message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CSBuyChatRes + * @returns CSUnlockResourceRes */ -static fromObject(object: { [k: string]: any }): cs.CSBuyChatRes; +static fromObject(object: { [k: string]: any }): cs.CSUnlockResourceRes; /** - * Creates a plain object from a CSBuyChatRes message. Also converts values to other types if specified. - * @param message CSBuyChatRes + * Creates a plain object from a CSUnlockResourceRes message. Also converts values to other types if specified. + * @param message CSUnlockResourceRes * @param [options] Conversion options * @returns Plain object */ -static toObject(message: cs.CSBuyChatRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; +static toObject(message: cs.CSUnlockResourceRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CSBuyChatRes to JSON. + * Converts this CSUnlockResourceRes to JSON. * @returns JSON object */ toJSON(): { [k: string]: any }; /** - * Gets the default type url for CSBuyChatRes + * Gets the default type url for CSUnlockResourceRes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSBuyGoodReq. */ + interface ICSBuyGoodReq { + + /** CSBuyGoodReq goodId */ + goodId?: (number|null); + + /** CSBuyGoodReq girlId */ + girlId?: (number|null); + } + + /** Represents a CSBuyGoodReq. */ + class CSBuyGoodReq implements ICSBuyGoodReq { + + /** + * Constructs a new CSBuyGoodReq. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSBuyGoodReq); + + /** CSBuyGoodReq goodId. */ +goodId: number; + + /** CSBuyGoodReq girlId. */ +girlId: number; + + /** + * Creates a new CSBuyGoodReq instance using the specified properties. + * @param [properties] Properties to set + * @returns CSBuyGoodReq instance + */ +static create(properties?: cs.ICSBuyGoodReq): cs.CSBuyGoodReq; + + /** + * Encodes the specified CSBuyGoodReq message. Does not implicitly {@link cs.CSBuyGoodReq.verify|verify} messages. + * @param message CSBuyGoodReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSBuyGoodReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSBuyGoodReq message, length delimited. Does not implicitly {@link cs.CSBuyGoodReq.verify|verify} messages. + * @param message CSBuyGoodReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSBuyGoodReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSBuyGoodReq message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSBuyGoodReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSBuyGoodReq; + + /** + * Decodes a CSBuyGoodReq message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSBuyGoodReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSBuyGoodReq; + + /** + * Verifies a CSBuyGoodReq message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSBuyGoodReq message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSBuyGoodReq + */ +static fromObject(object: { [k: string]: any }): cs.CSBuyGoodReq; + + /** + * Creates a plain object from a CSBuyGoodReq message. Also converts values to other types if specified. + * @param message CSBuyGoodReq + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSBuyGoodReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSBuyGoodReq to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSBuyGoodReq + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSBuyGoodRes. */ + interface ICSBuyGoodRes { + } + + /** Represents a CSBuyGoodRes. */ + class CSBuyGoodRes implements ICSBuyGoodRes { + + /** + * Constructs a new CSBuyGoodRes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSBuyGoodRes); + + /** + * Creates a new CSBuyGoodRes instance using the specified properties. + * @param [properties] Properties to set + * @returns CSBuyGoodRes instance + */ +static create(properties?: cs.ICSBuyGoodRes): cs.CSBuyGoodRes; + + /** + * Encodes the specified CSBuyGoodRes message. Does not implicitly {@link cs.CSBuyGoodRes.verify|verify} messages. + * @param message CSBuyGoodRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSBuyGoodRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSBuyGoodRes message, length delimited. Does not implicitly {@link cs.CSBuyGoodRes.verify|verify} messages. + * @param message CSBuyGoodRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSBuyGoodRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSBuyGoodRes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSBuyGoodRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSBuyGoodRes; + + /** + * Decodes a CSBuyGoodRes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSBuyGoodRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSBuyGoodRes; + + /** + * Verifies a CSBuyGoodRes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSBuyGoodRes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSBuyGoodRes + */ +static fromObject(object: { [k: string]: any }): cs.CSBuyGoodRes; + + /** + * Creates a plain object from a CSBuyGoodRes message. Also converts values to other types if specified. + * @param message CSBuyGoodRes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSBuyGoodRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSBuyGoodRes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSBuyGoodRes * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ @@ -2032,8 +1621,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSCreateOrderReq. */ interface ICSCreateOrderReq { - /** CSCreateOrderReq id */ - id?: (number|null); + /** CSCreateOrderReq goodId */ + goodId?: (number|null); } /** Represents a CSCreateOrderReq. */ @@ -2045,8 +1634,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSCreateOrderReq); - /** CSCreateOrderReq id. */ -id: number; + /** CSCreateOrderReq goodId. */ +goodId: number; /** * Creates a new CSCreateOrderReq instance using the specified properties. @@ -2335,8 +1924,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** CSQueryOrderRes retCode */ retCode?: (number|null); - /** CSQueryOrderRes diamond */ - diamond?: (number|Long|null); + /** CSQueryOrderRes balance */ + balance?: (number|Long|null); /** CSQueryOrderRes vipExpire */ vipExpire?: (number|Long|null); @@ -2357,8 +1946,8 @@ status: number; /** CSQueryOrderRes retCode. */ retCode: number; - /** CSQueryOrderRes diamond. */ -diamond: (number|Long); + /** CSQueryOrderRes balance. */ +balance: (number|Long); /** CSQueryOrderRes vipExpire. */ vipExpire: (number|Long); @@ -2547,6 +2136,9 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSChatMsgReq. */ interface ICSChatMsgReq { + /** CSChatMsgReq girlId */ + girlId?: (number|null); + /** CSChatMsgReq msgs */ msgs?: (cs.IChatMsg[]|null); } @@ -2560,6 +2152,9 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSChatMsgReq); + /** CSChatMsgReq girlId. */ +girlId: number; + /** CSChatMsgReq msgs. */ msgs: cs.IChatMsg[]; @@ -2643,6 +2238,12 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSChatMsgRes. */ interface ICSChatMsgRes { + + /** CSChatMsgRes chatRemainCount */ + chatRemainCount?: (number|null); + + /** CSChatMsgRes chatTotalCount */ + chatTotalCount?: (number|null); } /** Represents a CSChatMsgRes. */ @@ -2654,6 +2255,12 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSChatMsgRes); + /** CSChatMsgRes chatRemainCount. */ +chatRemainCount: number; + + /** CSChatMsgRes chatTotalCount. */ +chatTotalCount: number; + /** * Creates a new CSChatMsgRes instance using the specified properties. * @param [properties] Properties to set @@ -2740,6 +2347,9 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** CSGetChatMsgReq limit */ limit?: (number|null); + + /** CSGetChatMsgReq GirlId */ + GirlId?: (number|null); } /** Represents a CSGetChatMsgReq. */ @@ -2757,6 +2367,9 @@ page: number; /** CSGetChatMsgReq limit. */ limit: number; + /** CSGetChatMsgReq GirlId. */ +GirlId: number; + /** * Creates a new CSGetChatMsgReq instance using the specified properties. * @param [properties] Properties to set @@ -2840,6 +2453,12 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** CSGetChatMsgRes msgs */ msgs?: (cs.IChatMsg[]|null); + + /** CSGetChatMsgRes chatRemainCount */ + chatRemainCount?: (number|null); + + /** CSGetChatMsgRes chatTotalCount */ + chatTotalCount?: (number|null); } /** Represents a CSGetChatMsgRes. */ @@ -2854,6 +2473,12 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** CSGetChatMsgRes msgs. */ msgs: cs.IChatMsg[]; + /** CSGetChatMsgRes chatRemainCount. */ +chatRemainCount: number; + + /** CSGetChatMsgRes chatTotalCount. */ +chatTotalCount: number; + /** * Creates a new CSGetChatMsgRes instance using the specified properties. * @param [properties] Properties to set @@ -2932,6 +2557,2576 @@ toJSON(): { [k: string]: any }; static getTypeUrl(typeUrlPrefix?: string): string; } + /** Properties of a CSGetChatRemainCountReq. */ + interface ICSGetChatRemainCountReq { + + /** CSGetChatRemainCountReq id */ + id?: (number|null); + } + + /** Represents a CSGetChatRemainCountReq. */ + class CSGetChatRemainCountReq implements ICSGetChatRemainCountReq { + + /** + * Constructs a new CSGetChatRemainCountReq. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetChatRemainCountReq); + + /** CSGetChatRemainCountReq id. */ +id: number; + + /** + * Creates a new CSGetChatRemainCountReq instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetChatRemainCountReq instance + */ +static create(properties?: cs.ICSGetChatRemainCountReq): cs.CSGetChatRemainCountReq; + + /** + * Encodes the specified CSGetChatRemainCountReq message. Does not implicitly {@link cs.CSGetChatRemainCountReq.verify|verify} messages. + * @param message CSGetChatRemainCountReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetChatRemainCountReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetChatRemainCountReq message, length delimited. Does not implicitly {@link cs.CSGetChatRemainCountReq.verify|verify} messages. + * @param message CSGetChatRemainCountReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetChatRemainCountReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetChatRemainCountReq message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetChatRemainCountReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetChatRemainCountReq; + + /** + * Decodes a CSGetChatRemainCountReq message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetChatRemainCountReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetChatRemainCountReq; + + /** + * Verifies a CSGetChatRemainCountReq message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetChatRemainCountReq message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetChatRemainCountReq + */ +static fromObject(object: { [k: string]: any }): cs.CSGetChatRemainCountReq; + + /** + * Creates a plain object from a CSGetChatRemainCountReq message. Also converts values to other types if specified. + * @param message CSGetChatRemainCountReq + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetChatRemainCountReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetChatRemainCountReq to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetChatRemainCountReq + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSGetChatRemainCountRes. */ + interface ICSGetChatRemainCountRes { + + /** CSGetChatRemainCountRes chatRemainCount */ + chatRemainCount?: (number|null); + + /** CSGetChatRemainCountRes chatTotalCount */ + chatTotalCount?: (number|null); + } + + /** Represents a CSGetChatRemainCountRes. */ + class CSGetChatRemainCountRes implements ICSGetChatRemainCountRes { + + /** + * Constructs a new CSGetChatRemainCountRes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetChatRemainCountRes); + + /** CSGetChatRemainCountRes chatRemainCount. */ +chatRemainCount: number; + + /** CSGetChatRemainCountRes chatTotalCount. */ +chatTotalCount: number; + + /** + * Creates a new CSGetChatRemainCountRes instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetChatRemainCountRes instance + */ +static create(properties?: cs.ICSGetChatRemainCountRes): cs.CSGetChatRemainCountRes; + + /** + * Encodes the specified CSGetChatRemainCountRes message. Does not implicitly {@link cs.CSGetChatRemainCountRes.verify|verify} messages. + * @param message CSGetChatRemainCountRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetChatRemainCountRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetChatRemainCountRes message, length delimited. Does not implicitly {@link cs.CSGetChatRemainCountRes.verify|verify} messages. + * @param message CSGetChatRemainCountRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetChatRemainCountRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetChatRemainCountRes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetChatRemainCountRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetChatRemainCountRes; + + /** + * Decodes a CSGetChatRemainCountRes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetChatRemainCountRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetChatRemainCountRes; + + /** + * Verifies a CSGetChatRemainCountRes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetChatRemainCountRes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetChatRemainCountRes + */ +static fromObject(object: { [k: string]: any }): cs.CSGetChatRemainCountRes; + + /** + * Creates a plain object from a CSGetChatRemainCountRes message. Also converts values to other types if specified. + * @param message CSGetChatRemainCountRes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetChatRemainCountRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetChatRemainCountRes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetChatRemainCountRes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSGetResConfigReq. */ + interface ICSGetResConfigReq { + + /** CSGetResConfigReq resName */ + resName?: (string|null); + } + + /** Represents a CSGetResConfigReq. */ + class CSGetResConfigReq implements ICSGetResConfigReq { + + /** + * Constructs a new CSGetResConfigReq. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetResConfigReq); + + /** CSGetResConfigReq resName. */ +resName: string; + + /** + * Creates a new CSGetResConfigReq instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetResConfigReq instance + */ +static create(properties?: cs.ICSGetResConfigReq): cs.CSGetResConfigReq; + + /** + * Encodes the specified CSGetResConfigReq message. Does not implicitly {@link cs.CSGetResConfigReq.verify|verify} messages. + * @param message CSGetResConfigReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetResConfigReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetResConfigReq message, length delimited. Does not implicitly {@link cs.CSGetResConfigReq.verify|verify} messages. + * @param message CSGetResConfigReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetResConfigReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetResConfigReq message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetResConfigReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetResConfigReq; + + /** + * Decodes a CSGetResConfigReq message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetResConfigReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetResConfigReq; + + /** + * Verifies a CSGetResConfigReq message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetResConfigReq message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetResConfigReq + */ +static fromObject(object: { [k: string]: any }): cs.CSGetResConfigReq; + + /** + * Creates a plain object from a CSGetResConfigReq message. Also converts values to other types if specified. + * @param message CSGetResConfigReq + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetResConfigReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetResConfigReq to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetResConfigReq + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSGetResConfigRes. */ + interface ICSGetResConfigRes { + + /** CSGetResConfigRes data */ + data?: (string|null); + } + + /** Represents a CSGetResConfigRes. */ + class CSGetResConfigRes implements ICSGetResConfigRes { + + /** + * Constructs a new CSGetResConfigRes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetResConfigRes); + + /** CSGetResConfigRes data. */ +data: string; + + /** + * Creates a new CSGetResConfigRes instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetResConfigRes instance + */ +static create(properties?: cs.ICSGetResConfigRes): cs.CSGetResConfigRes; + + /** + * Encodes the specified CSGetResConfigRes message. Does not implicitly {@link cs.CSGetResConfigRes.verify|verify} messages. + * @param message CSGetResConfigRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetResConfigRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetResConfigRes message, length delimited. Does not implicitly {@link cs.CSGetResConfigRes.verify|verify} messages. + * @param message CSGetResConfigRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetResConfigRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetResConfigRes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetResConfigRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetResConfigRes; + + /** + * Decodes a CSGetResConfigRes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetResConfigRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetResConfigRes; + + /** + * Verifies a CSGetResConfigRes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetResConfigRes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetResConfigRes + */ +static fromObject(object: { [k: string]: any }): cs.CSGetResConfigRes; + + /** + * Creates a plain object from a CSGetResConfigRes message. Also converts values to other types if specified. + * @param message CSGetResConfigRes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetResConfigRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetResConfigRes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetResConfigRes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Category enum. */ + enum Category { + Category_mature = 0, + Category_eighteen = 1, + Category_qinfan = 2, + Category_luanlun = 3, + Category_bdsm = 4, + Category_loli = 5, + Category_upcomming = 6 + } + + /** PriceType enum. */ + enum PriceType { + PriceType_free = 0, + PriceType_first_time_free = 1, + PriceType_pay = 2 + } + + /** VideoEmotion enum. */ + enum VideoEmotion { + VideoEmotion_calm_down = 0, + VideoEmotion_arousal = 1, + VideoEmotion_desire = 2, + VideoEmotion_passion = 3, + VideoEmotion_orgasm = 4 + } + + /** Properties of an AiCharacters. */ + interface IAiCharacters { + + /** AiCharacters id */ + id?: (number|null); + + /** AiCharacters basePrompt */ + basePrompt?: (string|null); + + /** AiCharacters additionPrompt */ + additionPrompt?: (string|null); + } + + /** Represents an AiCharacters. */ + class AiCharacters implements IAiCharacters { + + /** + * Constructs a new AiCharacters. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IAiCharacters); + + /** AiCharacters id. */ +id: number; + + /** AiCharacters basePrompt. */ +basePrompt: string; + + /** AiCharacters additionPrompt. */ +additionPrompt: string; + + /** + * Creates a new AiCharacters instance using the specified properties. + * @param [properties] Properties to set + * @returns AiCharacters instance + */ +static create(properties?: cs.IAiCharacters): cs.AiCharacters; + + /** + * Encodes the specified AiCharacters message. Does not implicitly {@link cs.AiCharacters.verify|verify} messages. + * @param message AiCharacters message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IAiCharacters, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AiCharacters message, length delimited. Does not implicitly {@link cs.AiCharacters.verify|verify} messages. + * @param message AiCharacters message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IAiCharacters, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AiCharacters message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.AiCharacters; + + /** + * Decodes an AiCharacters message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.AiCharacters; + + /** + * Verifies an AiCharacters message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an AiCharacters message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AiCharacters + */ +static fromObject(object: { [k: string]: any }): cs.AiCharacters; + + /** + * Creates a plain object from an AiCharacters message. Also converts values to other types if specified. + * @param message AiCharacters + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.AiCharacters, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this AiCharacters to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for AiCharacters + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a Girls. */ + interface IGirls { + + /** Girls id */ + id?: (number|null); + + /** Girls nameKey */ + nameKey?: (string|null); + + /** Girls age */ + age?: (string|null); + + /** Girls category */ + category?: (cs.Category|null); + + /** Girls tagKey */ + tagKey?: (string|null); + + /** Girls priceType */ + priceType?: (cs.PriceType|null); + + /** Girls price */ + price?: (number|null); + + /** Girls vipUnlock */ + vipUnlock?: (number|null); + + /** Girls avatarPath */ + avatarPath?: (string|null); + + /** Girls listAvatarPath */ + listAvatarPath?: (string|null); + } + + /** Represents a Girls. */ + class Girls implements IGirls { + + /** + * Constructs a new Girls. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IGirls); + + /** Girls id. */ +id: number; + + /** Girls nameKey. */ +nameKey: string; + + /** Girls age. */ +age: string; + + /** Girls category. */ +category: cs.Category; + + /** Girls tagKey. */ +tagKey: string; + + /** Girls priceType. */ +priceType: cs.PriceType; + + /** Girls price. */ +price: number; + + /** Girls vipUnlock. */ +vipUnlock: number; + + /** Girls avatarPath. */ +avatarPath: string; + + /** Girls listAvatarPath. */ +listAvatarPath: string; + + /** + * Creates a new Girls instance using the specified properties. + * @param [properties] Properties to set + * @returns Girls instance + */ +static create(properties?: cs.IGirls): cs.Girls; + + /** + * Encodes the specified Girls message. Does not implicitly {@link cs.Girls.verify|verify} messages. + * @param message Girls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IGirls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Girls message, length delimited. Does not implicitly {@link cs.Girls.verify|verify} messages. + * @param message Girls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IGirls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Girls message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Girls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.Girls; + + /** + * Decodes a Girls message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Girls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.Girls; + + /** + * Verifies a Girls message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Girls message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Girls + */ +static fromObject(object: { [k: string]: any }): cs.Girls; + + /** + * Creates a plain object from a Girls message. Also converts values to other types if specified. + * @param message Girls + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.Girls, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Girls to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Girls + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a GirlsDetail. */ + interface IGirlsDetail { + + /** GirlsDetail id */ + id?: (number|null); + + /** GirlsDetail detailDesc */ + detailDesc?: (string|null); + + /** GirlsDetail commercialImages */ + commercialImages?: (cs.IPurchaseCommercialImage[]|null); + + /** GirlsDetail commercialVideos */ + commercialVideos?: (cs.IPurchaseCommercialVideo[]|null); + } + + /** Represents a GirlsDetail. */ + class GirlsDetail implements IGirlsDetail { + + /** + * Constructs a new GirlsDetail. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IGirlsDetail); + + /** GirlsDetail id. */ +id: number; + + /** GirlsDetail detailDesc. */ +detailDesc: string; + + /** GirlsDetail commercialImages. */ +commercialImages: cs.IPurchaseCommercialImage[]; + + /** GirlsDetail commercialVideos. */ +commercialVideos: cs.IPurchaseCommercialVideo[]; + + /** + * Creates a new GirlsDetail instance using the specified properties. + * @param [properties] Properties to set + * @returns GirlsDetail instance + */ +static create(properties?: cs.IGirlsDetail): cs.GirlsDetail; + + /** + * Encodes the specified GirlsDetail message. Does not implicitly {@link cs.GirlsDetail.verify|verify} messages. + * @param message GirlsDetail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IGirlsDetail, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GirlsDetail message, length delimited. Does not implicitly {@link cs.GirlsDetail.verify|verify} messages. + * @param message GirlsDetail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IGirlsDetail, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GirlsDetail message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GirlsDetail; + + /** + * Decodes a GirlsDetail message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GirlsDetail; + + /** + * Verifies a GirlsDetail message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GirlsDetail message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GirlsDetail + */ +static fromObject(object: { [k: string]: any }): cs.GirlsDetail; + + /** + * Creates a plain object from a GirlsDetail message. Also converts values to other types if specified. + * @param message GirlsDetail + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.GirlsDetail, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GirlsDetail to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GirlsDetail + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a GlobalConfig. */ + interface IGlobalConfig { + + /** GlobalConfig ApiKey */ + ApiKey?: (string|null); + + /** GlobalConfig emotionApiKey */ + emotionApiKey?: (string|null); + + /** GlobalConfig Model */ + Model?: (string|null); + + /** GlobalConfig Temperature */ + Temperature?: (number|null); + + /** GlobalConfig MaxTokens */ + MaxTokens?: (number|null); + + /** GlobalConfig Timeout */ + Timeout?: (number|null); + + /** GlobalConfig FreeChatTimes */ + FreeChatTimes?: (number|null); + + /** GlobalConfig OnceChatAddScore */ + OnceChatAddScore?: (number|null); + + /** GlobalConfig ScoreExchangeStarLevel */ + ScoreExchangeStarLevel?: (number|null); + + /** GlobalConfig GameName */ + GameName?: (string|null); + + /** GlobalConfig EmotionRating */ + EmotionRating?: (string|null); + + /** GlobalConfig girlBasePrompt */ + girlBasePrompt?: (string|null); + } + + /** Represents a GlobalConfig. */ + class GlobalConfig implements IGlobalConfig { + + /** + * Constructs a new GlobalConfig. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IGlobalConfig); + + /** GlobalConfig ApiKey. */ +ApiKey: string; + + /** GlobalConfig emotionApiKey. */ +emotionApiKey: string; + + /** GlobalConfig Model. */ +Model: string; + + /** GlobalConfig Temperature. */ +Temperature: number; + + /** GlobalConfig MaxTokens. */ +MaxTokens: number; + + /** GlobalConfig Timeout. */ +Timeout: number; + + /** GlobalConfig FreeChatTimes. */ +FreeChatTimes: number; + + /** GlobalConfig OnceChatAddScore. */ +OnceChatAddScore: number; + + /** GlobalConfig ScoreExchangeStarLevel. */ +ScoreExchangeStarLevel: number; + + /** GlobalConfig GameName. */ +GameName: string; + + /** GlobalConfig EmotionRating. */ +EmotionRating: string; + + /** GlobalConfig girlBasePrompt. */ +girlBasePrompt: string; + + /** + * Creates a new GlobalConfig instance using the specified properties. + * @param [properties] Properties to set + * @returns GlobalConfig instance + */ +static create(properties?: cs.IGlobalConfig): cs.GlobalConfig; + + /** + * Encodes the specified GlobalConfig message. Does not implicitly {@link cs.GlobalConfig.verify|verify} messages. + * @param message GlobalConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IGlobalConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GlobalConfig message, length delimited. Does not implicitly {@link cs.GlobalConfig.verify|verify} messages. + * @param message GlobalConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IGlobalConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.GlobalConfig; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.GlobalConfig; + + /** + * Verifies a GlobalConfig message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GlobalConfig + */ +static fromObject(object: { [k: string]: any }): cs.GlobalConfig; + + /** + * Creates a plain object from a GlobalConfig message. Also converts values to other types if specified. + * @param message GlobalConfig + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.GlobalConfig, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GlobalConfig to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GlobalConfig + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a Language. */ + interface ILanguage { + + /** Language key */ + key?: (string|null); + + /** Language languageEn */ + languageEn?: (string|null); + + /** Language languageCn */ + languageCn?: (string|null); + + /** Language languageHi */ + languageHi?: (string|null); + + /** Language languageFr */ + languageFr?: (string|null); + + /** Language languageDe */ + languageDe?: (string|null); + } + + /** Represents a Language. */ + class Language implements ILanguage { + + /** + * Constructs a new Language. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ILanguage); + + /** Language key. */ +key: string; + + /** Language languageEn. */ +languageEn: string; + + /** Language languageCn. */ +languageCn: string; + + /** Language languageHi. */ +languageHi: string; + + /** Language languageFr. */ +languageFr: string; + + /** Language languageDe. */ +languageDe: string; + + /** + * Creates a new Language instance using the specified properties. + * @param [properties] Properties to set + * @returns Language instance + */ +static create(properties?: cs.ILanguage): cs.Language; + + /** + * Encodes the specified Language message. Does not implicitly {@link cs.Language.verify|verify} messages. + * @param message Language message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ILanguage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Language message, length delimited. Does not implicitly {@link cs.Language.verify|verify} messages. + * @param message Language message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ILanguage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Language message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Language + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.Language; + + /** + * Decodes a Language message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Language + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.Language; + + /** + * Verifies a Language message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Language message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Language + */ +static fromObject(object: { [k: string]: any }): cs.Language; + + /** + * Creates a plain object from a Language message. Also converts values to other types if specified. + * @param message Language + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.Language, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Language to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Language + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PurchaseCommercialImage. */ + interface IPurchaseCommercialImage { + + /** PurchaseCommercialImage id */ + id?: (number|null); + + /** PurchaseCommercialImage imageType */ + imageType?: (number|null); + + /** PurchaseCommercialImage unlockCounts */ + unlockCounts?: (number|null); + + /** PurchaseCommercialImage imagePrice */ + imagePrice?: (number|null); + + /** PurchaseCommercialImage path */ + path?: (string|null); + } + + /** Represents a PurchaseCommercialImage. */ + class PurchaseCommercialImage implements IPurchaseCommercialImage { + + /** + * Constructs a new PurchaseCommercialImage. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IPurchaseCommercialImage); + + /** PurchaseCommercialImage id. */ +id: number; + + /** PurchaseCommercialImage imageType. */ +imageType: number; + + /** PurchaseCommercialImage unlockCounts. */ +unlockCounts: number; + + /** PurchaseCommercialImage imagePrice. */ +imagePrice: number; + + /** PurchaseCommercialImage path. */ +path: string; + + /** + * Creates a new PurchaseCommercialImage instance using the specified properties. + * @param [properties] Properties to set + * @returns PurchaseCommercialImage instance + */ +static create(properties?: cs.IPurchaseCommercialImage): cs.PurchaseCommercialImage; + + /** + * Encodes the specified PurchaseCommercialImage message. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. + * @param message PurchaseCommercialImage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IPurchaseCommercialImage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PurchaseCommercialImage message, length delimited. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. + * @param message PurchaseCommercialImage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IPurchaseCommercialImage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PurchaseCommercialImage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PurchaseCommercialImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.PurchaseCommercialImage; + + /** + * Decodes a PurchaseCommercialImage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PurchaseCommercialImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.PurchaseCommercialImage; + + /** + * Verifies a PurchaseCommercialImage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PurchaseCommercialImage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PurchaseCommercialImage + */ +static fromObject(object: { [k: string]: any }): cs.PurchaseCommercialImage; + + /** + * Creates a plain object from a PurchaseCommercialImage message. Also converts values to other types if specified. + * @param message PurchaseCommercialImage + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.PurchaseCommercialImage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PurchaseCommercialImage to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PurchaseCommercialImage + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PurchaseCommercialVideo. */ + interface IPurchaseCommercialVideo { + + /** PurchaseCommercialVideo id */ + id?: (number|null); + + /** PurchaseCommercialVideo path */ + path?: (string|null); + + /** PurchaseCommercialVideo emotion */ + emotion?: (cs.VideoEmotion|null); + + /** PurchaseCommercialVideo videoPrice */ + videoPrice?: (number|null); + } + + /** Represents a PurchaseCommercialVideo. */ + class PurchaseCommercialVideo implements IPurchaseCommercialVideo { + + /** + * Constructs a new PurchaseCommercialVideo. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IPurchaseCommercialVideo); + + /** PurchaseCommercialVideo id. */ +id: number; + + /** PurchaseCommercialVideo path. */ +path: string; + + /** PurchaseCommercialVideo emotion. */ +emotion: cs.VideoEmotion; + + /** PurchaseCommercialVideo videoPrice. */ +videoPrice: number; + + /** + * Creates a new PurchaseCommercialVideo instance using the specified properties. + * @param [properties] Properties to set + * @returns PurchaseCommercialVideo instance + */ +static create(properties?: cs.IPurchaseCommercialVideo): cs.PurchaseCommercialVideo; + + /** + * Encodes the specified PurchaseCommercialVideo message. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. + * @param message PurchaseCommercialVideo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IPurchaseCommercialVideo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PurchaseCommercialVideo message, length delimited. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. + * @param message PurchaseCommercialVideo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IPurchaseCommercialVideo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PurchaseCommercialVideo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PurchaseCommercialVideo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.PurchaseCommercialVideo; + + /** + * Decodes a PurchaseCommercialVideo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PurchaseCommercialVideo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.PurchaseCommercialVideo; + + /** + * Verifies a PurchaseCommercialVideo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PurchaseCommercialVideo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PurchaseCommercialVideo + */ +static fromObject(object: { [k: string]: any }): cs.PurchaseCommercialVideo; + + /** + * Creates a plain object from a PurchaseCommercialVideo message. Also converts values to other types if specified. + * @param message PurchaseCommercialVideo + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.PurchaseCommercialVideo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PurchaseCommercialVideo to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PurchaseCommercialVideo + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PurchaseConfig. */ + interface IPurchaseConfig { + + /** PurchaseConfig id */ + id?: (number|null); + + /** PurchaseConfig name */ + name?: (string|null); + + /** PurchaseConfig count */ + count?: (number|null); + + /** PurchaseConfig price */ + price?: (number|null); + } + + /** Represents a PurchaseConfig. */ + class PurchaseConfig implements IPurchaseConfig { + + /** + * Constructs a new PurchaseConfig. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IPurchaseConfig); + + /** PurchaseConfig id. */ +id: number; + + /** PurchaseConfig name. */ +name: string; + + /** PurchaseConfig count. */ +count: number; + + /** PurchaseConfig price. */ +price: number; + + /** + * Creates a new PurchaseConfig instance using the specified properties. + * @param [properties] Properties to set + * @returns PurchaseConfig instance + */ +static create(properties?: cs.IPurchaseConfig): cs.PurchaseConfig; + + /** + * Encodes the specified PurchaseConfig message. Does not implicitly {@link cs.PurchaseConfig.verify|verify} messages. + * @param message PurchaseConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IPurchaseConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PurchaseConfig message, length delimited. Does not implicitly {@link cs.PurchaseConfig.verify|verify} messages. + * @param message PurchaseConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IPurchaseConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PurchaseConfig message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.PurchaseConfig; + + /** + * Decodes a PurchaseConfig message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.PurchaseConfig; + + /** + * Verifies a PurchaseConfig message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PurchaseConfig message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PurchaseConfig + */ +static fromObject(object: { [k: string]: any }): cs.PurchaseConfig; + + /** + * Creates a plain object from a PurchaseConfig message. Also converts values to other types if specified. + * @param message PurchaseConfig + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.PurchaseConfig, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PurchaseConfig to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PurchaseConfig + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a Themes. */ + interface IThemes { + + /** Themes id */ + id?: (number|null); + + /** Themes key */ + key?: (string|null); + + /** Themes name */ + name?: (string|null); + + /** Themes category */ + category?: (cs.Category|null); + + /** Themes isRelease */ + isRelease?: (boolean|null); + + /** Themes path */ + path?: (string|null); + } + + /** Represents a Themes. */ + class Themes implements IThemes { + + /** + * Constructs a new Themes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.IThemes); + + /** Themes id. */ +id: number; + + /** Themes key. */ +key: string; + + /** Themes name. */ +name: string; + + /** Themes category. */ +category: cs.Category; + + /** Themes isRelease. */ +isRelease: boolean; + + /** Themes path. */ +path: string; + + /** + * Creates a new Themes instance using the specified properties. + * @param [properties] Properties to set + * @returns Themes instance + */ +static create(properties?: cs.IThemes): cs.Themes; + + /** + * Encodes the specified Themes message. Does not implicitly {@link cs.Themes.verify|verify} messages. + * @param message Themes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.IThemes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Themes message, length delimited. Does not implicitly {@link cs.Themes.verify|verify} messages. + * @param message Themes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.IThemes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Themes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Themes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.Themes; + + /** + * Decodes a Themes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Themes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.Themes; + + /** + * Verifies a Themes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Themes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Themes + */ +static fromObject(object: { [k: string]: any }): cs.Themes; + + /** + * Creates a plain object from a Themes message. Also converts values to other types if specified. + * @param message Themes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.Themes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Themes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Themes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a vector2. */ + interface Ivector2 { + + /** vector2 x */ + x?: (number|null); + + /** vector2 y */ + y?: (number|null); + } + + /** Represents a vector2. */ + class vector2 implements Ivector2 { + + /** + * Constructs a new vector2. + * @param [properties] Properties to set + */ + constructor(properties?: cs.Ivector2); + + /** vector2 x. */ +x: number; + + /** vector2 y. */ +y: number; + + /** + * Creates a new vector2 instance using the specified properties. + * @param [properties] Properties to set + * @returns vector2 instance + */ +static create(properties?: cs.Ivector2): cs.vector2; + + /** + * Encodes the specified vector2 message. Does not implicitly {@link cs.vector2.verify|verify} messages. + * @param message vector2 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.Ivector2, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vector2 message, length delimited. Does not implicitly {@link cs.vector2.verify|verify} messages. + * @param message vector2 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.Ivector2, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vector2 message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns vector2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.vector2; + + /** + * Decodes a vector2 message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns vector2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.vector2; + + /** + * Verifies a vector2 message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a vector2 message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns vector2 + */ +static fromObject(object: { [k: string]: any }): cs.vector2; + + /** + * Creates a plain object from a vector2 message. Also converts values to other types if specified. + * @param message vector2 + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.vector2, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this vector2 to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for vector2 + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a vector3. */ + interface Ivector3 { + + /** vector3 x */ + x?: (number|null); + + /** vector3 y */ + y?: (number|null); + + /** vector3 z */ + z?: (number|null); + } + + /** Represents a vector3. */ + class vector3 implements Ivector3 { + + /** + * Constructs a new vector3. + * @param [properties] Properties to set + */ + constructor(properties?: cs.Ivector3); + + /** vector3 x. */ +x: number; + + /** vector3 y. */ +y: number; + + /** vector3 z. */ +z: number; + + /** + * Creates a new vector3 instance using the specified properties. + * @param [properties] Properties to set + * @returns vector3 instance + */ +static create(properties?: cs.Ivector3): cs.vector3; + + /** + * Encodes the specified vector3 message. Does not implicitly {@link cs.vector3.verify|verify} messages. + * @param message vector3 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.Ivector3, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vector3 message, length delimited. Does not implicitly {@link cs.vector3.verify|verify} messages. + * @param message vector3 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.Ivector3, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vector3 message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns vector3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.vector3; + + /** + * Decodes a vector3 message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns vector3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.vector3; + + /** + * Verifies a vector3 message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a vector3 message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns vector3 + */ +static fromObject(object: { [k: string]: any }): cs.vector3; + + /** + * Creates a plain object from a vector3 message. Also converts values to other types if specified. + * @param message vector3 + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.vector3, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this vector3 to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for vector3 + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a vector4. */ + interface Ivector4 { + + /** vector4 x */ + x?: (number|null); + + /** vector4 y */ + y?: (number|null); + + /** vector4 z */ + z?: (number|null); + + /** vector4 w */ + w?: (number|null); + } + + /** Represents a vector4. */ + class vector4 implements Ivector4 { + + /** + * Constructs a new vector4. + * @param [properties] Properties to set + */ + constructor(properties?: cs.Ivector4); + + /** vector4 x. */ +x: number; + + /** vector4 y. */ +y: number; + + /** vector4 z. */ +z: number; + + /** vector4 w. */ +w: number; + + /** + * Creates a new vector4 instance using the specified properties. + * @param [properties] Properties to set + * @returns vector4 instance + */ +static create(properties?: cs.Ivector4): cs.vector4; + + /** + * Encodes the specified vector4 message. Does not implicitly {@link cs.vector4.verify|verify} messages. + * @param message vector4 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.Ivector4, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vector4 message, length delimited. Does not implicitly {@link cs.vector4.verify|verify} messages. + * @param message vector4 message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.Ivector4, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vector4 message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns vector4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.vector4; + + /** + * Decodes a vector4 message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns vector4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.vector4; + + /** + * Verifies a vector4 message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a vector4 message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns vector4 + */ +static fromObject(object: { [k: string]: any }): cs.vector4; + + /** + * Creates a plain object from a vector4 message. Also converts values to other types if specified. + * @param message vector4 + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.vector4, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this vector4 to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for vector4 + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbLanguage. */ + interface ITbLanguage { + + /** TbLanguage items */ + items?: (cs.ILanguage[]|null); + } + + /** Represents a TbLanguage. */ + class TbLanguage implements ITbLanguage { + + /** + * Constructs a new TbLanguage. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbLanguage); + + /** TbLanguage items. */ +items: cs.ILanguage[]; + + /** + * Creates a new TbLanguage instance using the specified properties. + * @param [properties] Properties to set + * @returns TbLanguage instance + */ +static create(properties?: cs.ITbLanguage): cs.TbLanguage; + + /** + * Encodes the specified TbLanguage message. Does not implicitly {@link cs.TbLanguage.verify|verify} messages. + * @param message TbLanguage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbLanguage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbLanguage message, length delimited. Does not implicitly {@link cs.TbLanguage.verify|verify} messages. + * @param message TbLanguage message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbLanguage, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbLanguage message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbLanguage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbLanguage; + + /** + * Decodes a TbLanguage message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbLanguage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbLanguage; + + /** + * Verifies a TbLanguage message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbLanguage message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbLanguage + */ +static fromObject(object: { [k: string]: any }): cs.TbLanguage; + + /** + * Creates a plain object from a TbLanguage message. Also converts values to other types if specified. + * @param message TbLanguage + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbLanguage, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbLanguage to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbLanguage + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbGirls. */ + interface ITbGirls { + + /** TbGirls items */ + items?: (cs.IGirls[]|null); + } + + /** Represents a TbGirls. */ + class TbGirls implements ITbGirls { + + /** + * Constructs a new TbGirls. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbGirls); + + /** TbGirls items. */ +items: cs.IGirls[]; + + /** + * Creates a new TbGirls instance using the specified properties. + * @param [properties] Properties to set + * @returns TbGirls instance + */ +static create(properties?: cs.ITbGirls): cs.TbGirls; + + /** + * Encodes the specified TbGirls message. Does not implicitly {@link cs.TbGirls.verify|verify} messages. + * @param message TbGirls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbGirls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbGirls message, length delimited. Does not implicitly {@link cs.TbGirls.verify|verify} messages. + * @param message TbGirls message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbGirls, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbGirls message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbGirls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbGirls; + + /** + * Decodes a TbGirls message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbGirls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbGirls; + + /** + * Verifies a TbGirls message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbGirls message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbGirls + */ +static fromObject(object: { [k: string]: any }): cs.TbGirls; + + /** + * Creates a plain object from a TbGirls message. Also converts values to other types if specified. + * @param message TbGirls + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbGirls, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbGirls to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbGirls + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbGirlsDetail. */ + interface ITbGirlsDetail { + + /** TbGirlsDetail items */ + items?: (cs.IGirlsDetail[]|null); + } + + /** Represents a TbGirlsDetail. */ + class TbGirlsDetail implements ITbGirlsDetail { + + /** + * Constructs a new TbGirlsDetail. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbGirlsDetail); + + /** TbGirlsDetail items. */ +items: cs.IGirlsDetail[]; + + /** + * Creates a new TbGirlsDetail instance using the specified properties. + * @param [properties] Properties to set + * @returns TbGirlsDetail instance + */ +static create(properties?: cs.ITbGirlsDetail): cs.TbGirlsDetail; + + /** + * Encodes the specified TbGirlsDetail message. Does not implicitly {@link cs.TbGirlsDetail.verify|verify} messages. + * @param message TbGirlsDetail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbGirlsDetail, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbGirlsDetail message, length delimited. Does not implicitly {@link cs.TbGirlsDetail.verify|verify} messages. + * @param message TbGirlsDetail message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbGirlsDetail, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbGirlsDetail message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbGirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbGirlsDetail; + + /** + * Decodes a TbGirlsDetail message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbGirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbGirlsDetail; + + /** + * Verifies a TbGirlsDetail message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbGirlsDetail message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbGirlsDetail + */ +static fromObject(object: { [k: string]: any }): cs.TbGirlsDetail; + + /** + * Creates a plain object from a TbGirlsDetail message. Also converts values to other types if specified. + * @param message TbGirlsDetail + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbGirlsDetail, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbGirlsDetail to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbGirlsDetail + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbThemes. */ + interface ITbThemes { + + /** TbThemes items */ + items?: (cs.IThemes[]|null); + } + + /** Represents a TbThemes. */ + class TbThemes implements ITbThemes { + + /** + * Constructs a new TbThemes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbThemes); + + /** TbThemes items. */ +items: cs.IThemes[]; + + /** + * Creates a new TbThemes instance using the specified properties. + * @param [properties] Properties to set + * @returns TbThemes instance + */ +static create(properties?: cs.ITbThemes): cs.TbThemes; + + /** + * Encodes the specified TbThemes message. Does not implicitly {@link cs.TbThemes.verify|verify} messages. + * @param message TbThemes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbThemes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbThemes message, length delimited. Does not implicitly {@link cs.TbThemes.verify|verify} messages. + * @param message TbThemes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbThemes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbThemes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbThemes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbThemes; + + /** + * Decodes a TbThemes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbThemes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbThemes; + + /** + * Verifies a TbThemes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbThemes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbThemes + */ +static fromObject(object: { [k: string]: any }): cs.TbThemes; + + /** + * Creates a plain object from a TbThemes message. Also converts values to other types if specified. + * @param message TbThemes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbThemes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbThemes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbThemes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbAiCharacters. */ + interface ITbAiCharacters { + + /** TbAiCharacters items */ + items?: (cs.IAiCharacters[]|null); + } + + /** Represents a TbAiCharacters. */ + class TbAiCharacters implements ITbAiCharacters { + + /** + * Constructs a new TbAiCharacters. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbAiCharacters); + + /** TbAiCharacters items. */ +items: cs.IAiCharacters[]; + + /** + * Creates a new TbAiCharacters instance using the specified properties. + * @param [properties] Properties to set + * @returns TbAiCharacters instance + */ +static create(properties?: cs.ITbAiCharacters): cs.TbAiCharacters; + + /** + * Encodes the specified TbAiCharacters message. Does not implicitly {@link cs.TbAiCharacters.verify|verify} messages. + * @param message TbAiCharacters message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbAiCharacters, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbAiCharacters message, length delimited. Does not implicitly {@link cs.TbAiCharacters.verify|verify} messages. + * @param message TbAiCharacters message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbAiCharacters, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbAiCharacters message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbAiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbAiCharacters; + + /** + * Decodes a TbAiCharacters message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbAiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbAiCharacters; + + /** + * Verifies a TbAiCharacters message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbAiCharacters message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbAiCharacters + */ +static fromObject(object: { [k: string]: any }): cs.TbAiCharacters; + + /** + * Creates a plain object from a TbAiCharacters message. Also converts values to other types if specified. + * @param message TbAiCharacters + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbAiCharacters, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbAiCharacters to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbAiCharacters + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbGlobalConfig. */ + interface ITbGlobalConfig { + + /** TbGlobalConfig items */ + items?: (cs.IGlobalConfig[]|null); + } + + /** Represents a TbGlobalConfig. */ + class TbGlobalConfig implements ITbGlobalConfig { + + /** + * Constructs a new TbGlobalConfig. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbGlobalConfig); + + /** TbGlobalConfig items. */ +items: cs.IGlobalConfig[]; + + /** + * Creates a new TbGlobalConfig instance using the specified properties. + * @param [properties] Properties to set + * @returns TbGlobalConfig instance + */ +static create(properties?: cs.ITbGlobalConfig): cs.TbGlobalConfig; + + /** + * Encodes the specified TbGlobalConfig message. Does not implicitly {@link cs.TbGlobalConfig.verify|verify} messages. + * @param message TbGlobalConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbGlobalConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbGlobalConfig message, length delimited. Does not implicitly {@link cs.TbGlobalConfig.verify|verify} messages. + * @param message TbGlobalConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbGlobalConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbGlobalConfig message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbGlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbGlobalConfig; + + /** + * Decodes a TbGlobalConfig message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbGlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbGlobalConfig; + + /** + * Verifies a TbGlobalConfig message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbGlobalConfig message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbGlobalConfig + */ +static fromObject(object: { [k: string]: any }): cs.TbGlobalConfig; + + /** + * Creates a plain object from a TbGlobalConfig message. Also converts values to other types if specified. + * @param message TbGlobalConfig + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbGlobalConfig, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbGlobalConfig to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbGlobalConfig + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a TbPurchaseConfig. */ + interface ITbPurchaseConfig { + + /** TbPurchaseConfig items */ + items?: (cs.IPurchaseConfig[]|null); + } + + /** Represents a TbPurchaseConfig. */ + class TbPurchaseConfig implements ITbPurchaseConfig { + + /** + * Constructs a new TbPurchaseConfig. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ITbPurchaseConfig); + + /** TbPurchaseConfig items. */ +items: cs.IPurchaseConfig[]; + + /** + * Creates a new TbPurchaseConfig instance using the specified properties. + * @param [properties] Properties to set + * @returns TbPurchaseConfig instance + */ +static create(properties?: cs.ITbPurchaseConfig): cs.TbPurchaseConfig; + + /** + * Encodes the specified TbPurchaseConfig message. Does not implicitly {@link cs.TbPurchaseConfig.verify|verify} messages. + * @param message TbPurchaseConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ITbPurchaseConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TbPurchaseConfig message, length delimited. Does not implicitly {@link cs.TbPurchaseConfig.verify|verify} messages. + * @param message TbPurchaseConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ITbPurchaseConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TbPurchaseConfig message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TbPurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.TbPurchaseConfig; + + /** + * Decodes a TbPurchaseConfig message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TbPurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.TbPurchaseConfig; + + /** + * Verifies a TbPurchaseConfig message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TbPurchaseConfig message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TbPurchaseConfig + */ +static fromObject(object: { [k: string]: any }): cs.TbPurchaseConfig; + + /** + * Creates a plain object from a TbPurchaseConfig message. Also converts values to other types if specified. + * @param message TbPurchaseConfig + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.TbPurchaseConfig, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TbPurchaseConfig to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TbPurchaseConfig + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + /** Properties of a CSLoginReq. */ interface ICSLoginReq { @@ -3061,6 +5256,12 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** CSLoginRes expire */ expire?: (number|Long|null); + + /** CSLoginRes accId */ + accId?: (number|Long|null); + + /** CSLoginRes cdn */ + cdn?: (string|null); } /** Represents a CSLoginRes. */ @@ -3084,6 +5285,12 @@ refreshToken: string; /** CSLoginRes expire. */ expire: (number|Long); + /** CSLoginRes accId. */ +accId: (number|Long); + + /** CSLoginRes cdn. */ +cdn: string; + /** * Creates a new CSLoginRes instance using the specified properties. * @param [properties] Properties to set @@ -3256,8 +5463,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; /** Properties of a CSMyInfoRes. */ interface ICSMyInfoRes { - /** CSMyInfoRes diamond */ - diamond?: (number|Long|null); + /** CSMyInfoRes balance */ + balance?: (number|Long|null); /** CSMyInfoRes vipExpire */ vipExpire?: (number|Long|null); @@ -3272,8 +5479,8 @@ static getTypeUrl(typeUrlPrefix?: string): string; */ constructor(properties?: cs.ICSMyInfoRes); - /** CSMyInfoRes diamond. */ -diamond: (number|Long); + /** CSMyInfoRes balance. */ +balance: (number|Long); /** CSMyInfoRes vipExpire. */ vipExpire: (number|Long); diff --git a/assets/Scripts/proto/proto.pb.js b/assets/Scripts/proto/proto.pb.js index 31b91b5d..ab3d1be5 100644 --- a/assets/Scripts/proto/proto.pb.js +++ b/assets/Scripts/proto/proto.pb.js @@ -18,1605 +18,6 @@ $root.cs = (function() { */ var cs = {}; - cs.GirlBrief = (function() { - - /** - * Properties of a GirlBrief. - * @memberof cs - * @interface IGirlBrief - * @property {number|null} [id] GirlBrief id - * @property {string|null} [name] GirlBrief name - * @property {number|null} [age] GirlBrief age - * @property {string|null} [tagKey] GirlBrief tagKey - * @property {number|null} [priceType] GirlBrief priceType - * @property {number|Long|null} [price] GirlBrief price - * @property {string|null} [avatar] GirlBrief avatar - * @property {number|null} [star] GirlBrief star - * @property {number|null} [category] GirlBrief category - * @property {string|null} [listAvatarPath] GirlBrief listAvatarPath - */ - - /** - * Constructs a new GirlBrief. - * @memberof cs - * @classdesc Represents a GirlBrief. - * @implements IGirlBrief - * @constructor - * @param {cs.IGirlBrief=} [properties] Properties to set - */ - function GirlBrief(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GirlBrief id. - * @member {number} id - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.id = 0; - - /** - * GirlBrief name. - * @member {string} name - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.name = ""; - - /** - * GirlBrief age. - * @member {number} age - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.age = 0; - - /** - * GirlBrief tagKey. - * @member {string} tagKey - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.tagKey = ""; - - /** - * GirlBrief priceType. - * @member {number} priceType - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.priceType = 0; - - /** - * GirlBrief price. - * @member {number|Long} price - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.price = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GirlBrief avatar. - * @member {string} avatar - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.avatar = ""; - - /** - * GirlBrief star. - * @member {number} star - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.star = 0; - - /** - * GirlBrief category. - * @member {number} category - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.category = 0; - - /** - * GirlBrief listAvatarPath. - * @member {string} listAvatarPath - * @memberof cs.GirlBrief - * @instance - */ - GirlBrief.prototype.listAvatarPath = ""; - - /** - * Creates a new GirlBrief instance using the specified properties. - * @function create - * @memberof cs.GirlBrief - * @static - * @param {cs.IGirlBrief=} [properties] Properties to set - * @returns {cs.GirlBrief} GirlBrief instance - */ - GirlBrief.create = function create(properties) { - return new GirlBrief(properties); - }; - - /** - * Encodes the specified GirlBrief message. Does not implicitly {@link cs.GirlBrief.verify|verify} messages. - * @function encode - * @memberof cs.GirlBrief - * @static - * @param {cs.IGirlBrief} message GirlBrief message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlBrief.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); - if (message.age != null && Object.hasOwnProperty.call(message, "age")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.age); - if (message.tagKey != null && Object.hasOwnProperty.call(message, "tagKey")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.tagKey); - if (message.priceType != null && Object.hasOwnProperty.call(message, "priceType")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.priceType); - if (message.price != null && Object.hasOwnProperty.call(message, "price")) - writer.uint32(/* id 6, wireType 0 =*/48).int64(message.price); - if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar")) - writer.uint32(/* id 7, wireType 2 =*/58).string(message.avatar); - if (message.star != null && Object.hasOwnProperty.call(message, "star")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.star); - if (message.category != null && Object.hasOwnProperty.call(message, "category")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.category); - if (message.listAvatarPath != null && Object.hasOwnProperty.call(message, "listAvatarPath")) - writer.uint32(/* id 10, wireType 2 =*/82).string(message.listAvatarPath); - return writer; - }; - - /** - * Encodes the specified GirlBrief message, length delimited. Does not implicitly {@link cs.GirlBrief.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.GirlBrief - * @static - * @param {cs.IGirlBrief} message GirlBrief message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlBrief.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GirlBrief message from the specified reader or buffer. - * @function decode - * @memberof cs.GirlBrief - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.GirlBrief} GirlBrief - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlBrief.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GirlBrief(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.id = reader.int32(); - break; - } - case 2: { - message.name = reader.string(); - break; - } - case 3: { - message.age = reader.int32(); - break; - } - case 4: { - message.tagKey = reader.string(); - break; - } - case 5: { - message.priceType = reader.int32(); - break; - } - case 6: { - message.price = reader.int64(); - break; - } - case 7: { - message.avatar = reader.string(); - break; - } - case 8: { - message.star = reader.int32(); - break; - } - case 9: { - message.category = reader.int32(); - break; - } - case 10: { - message.listAvatarPath = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GirlBrief message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.GirlBrief - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.GirlBrief} GirlBrief - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlBrief.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GirlBrief message. - * @function verify - * @memberof cs.GirlBrief - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GirlBrief.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) - if (!$util.isInteger(message.id)) - return "id: integer expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.age != null && message.hasOwnProperty("age")) - if (!$util.isInteger(message.age)) - return "age: integer expected"; - if (message.tagKey != null && message.hasOwnProperty("tagKey")) - if (!$util.isString(message.tagKey)) - return "tagKey: string expected"; - if (message.priceType != null && message.hasOwnProperty("priceType")) - if (!$util.isInteger(message.priceType)) - return "priceType: integer expected"; - if (message.price != null && message.hasOwnProperty("price")) - if (!$util.isInteger(message.price) && !(message.price && $util.isInteger(message.price.low) && $util.isInteger(message.price.high))) - return "price: integer|Long expected"; - if (message.avatar != null && message.hasOwnProperty("avatar")) - if (!$util.isString(message.avatar)) - return "avatar: string expected"; - if (message.star != null && message.hasOwnProperty("star")) - if (!$util.isInteger(message.star)) - return "star: integer expected"; - if (message.category != null && message.hasOwnProperty("category")) - if (!$util.isInteger(message.category)) - return "category: integer expected"; - if (message.listAvatarPath != null && message.hasOwnProperty("listAvatarPath")) - if (!$util.isString(message.listAvatarPath)) - return "listAvatarPath: string expected"; - return null; - }; - - /** - * Creates a GirlBrief message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.GirlBrief - * @static - * @param {Object.} object Plain object - * @returns {cs.GirlBrief} GirlBrief - */ - GirlBrief.fromObject = function fromObject(object) { - if (object instanceof $root.cs.GirlBrief) - return object; - var message = new $root.cs.GirlBrief(); - if (object.id != null) - message.id = object.id | 0; - if (object.name != null) - message.name = String(object.name); - if (object.age != null) - message.age = object.age | 0; - if (object.tagKey != null) - message.tagKey = String(object.tagKey); - if (object.priceType != null) - message.priceType = object.priceType | 0; - if (object.price != null) - if ($util.Long) - (message.price = $util.Long.fromValue(object.price)).unsigned = false; - else if (typeof object.price === "string") - message.price = parseInt(object.price, 10); - else if (typeof object.price === "number") - message.price = object.price; - else if (typeof object.price === "object") - message.price = new $util.LongBits(object.price.low >>> 0, object.price.high >>> 0).toNumber(); - if (object.avatar != null) - message.avatar = String(object.avatar); - if (object.star != null) - message.star = object.star | 0; - if (object.category != null) - message.category = object.category | 0; - if (object.listAvatarPath != null) - message.listAvatarPath = String(object.listAvatarPath); - return message; - }; - - /** - * Creates a plain object from a GirlBrief message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.GirlBrief - * @static - * @param {cs.GirlBrief} message GirlBrief - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GirlBrief.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.id = 0; - object.name = ""; - object.age = 0; - object.tagKey = ""; - object.priceType = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.price = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.price = options.longs === String ? "0" : 0; - object.avatar = ""; - object.star = 0; - object.category = 0; - object.listAvatarPath = ""; - } - if (message.id != null && message.hasOwnProperty("id")) - object.id = message.id; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.age != null && message.hasOwnProperty("age")) - object.age = message.age; - if (message.tagKey != null && message.hasOwnProperty("tagKey")) - object.tagKey = message.tagKey; - if (message.priceType != null && message.hasOwnProperty("priceType")) - object.priceType = message.priceType; - if (message.price != null && message.hasOwnProperty("price")) - if (typeof message.price === "number") - object.price = options.longs === String ? String(message.price) : message.price; - else - object.price = options.longs === String ? $util.Long.prototype.toString.call(message.price) : options.longs === Number ? new $util.LongBits(message.price.low >>> 0, message.price.high >>> 0).toNumber() : message.price; - if (message.avatar != null && message.hasOwnProperty("avatar")) - object.avatar = message.avatar; - if (message.star != null && message.hasOwnProperty("star")) - object.star = message.star; - if (message.category != null && message.hasOwnProperty("category")) - object.category = message.category; - if (message.listAvatarPath != null && message.hasOwnProperty("listAvatarPath")) - object.listAvatarPath = message.listAvatarPath; - return object; - }; - - /** - * Converts this GirlBrief to JSON. - * @function toJSON - * @memberof cs.GirlBrief - * @instance - * @returns {Object.} JSON object - */ - GirlBrief.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GirlBrief - * @function getTypeUrl - * @memberof cs.GirlBrief - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GirlBrief.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.GirlBrief"; - }; - - return GirlBrief; - })(); - - cs.GirlPhoto = (function() { - - /** - * Properties of a GirlPhoto. - * @memberof cs - * @interface IGirlPhoto - * @property {string|null} [pic] GirlPhoto pic - * @property {boolean|null} [isRelease] GirlPhoto isRelease - * @property {number|null} [price] GirlPhoto price - */ - - /** - * Constructs a new GirlPhoto. - * @memberof cs - * @classdesc Represents a GirlPhoto. - * @implements IGirlPhoto - * @constructor - * @param {cs.IGirlPhoto=} [properties] Properties to set - */ - function GirlPhoto(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GirlPhoto pic. - * @member {string} pic - * @memberof cs.GirlPhoto - * @instance - */ - GirlPhoto.prototype.pic = ""; - - /** - * GirlPhoto isRelease. - * @member {boolean} isRelease - * @memberof cs.GirlPhoto - * @instance - */ - GirlPhoto.prototype.isRelease = false; - - /** - * GirlPhoto price. - * @member {number} price - * @memberof cs.GirlPhoto - * @instance - */ - GirlPhoto.prototype.price = 0; - - /** - * Creates a new GirlPhoto instance using the specified properties. - * @function create - * @memberof cs.GirlPhoto - * @static - * @param {cs.IGirlPhoto=} [properties] Properties to set - * @returns {cs.GirlPhoto} GirlPhoto instance - */ - GirlPhoto.create = function create(properties) { - return new GirlPhoto(properties); - }; - - /** - * Encodes the specified GirlPhoto message. Does not implicitly {@link cs.GirlPhoto.verify|verify} messages. - * @function encode - * @memberof cs.GirlPhoto - * @static - * @param {cs.IGirlPhoto} message GirlPhoto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlPhoto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.pic != null && Object.hasOwnProperty.call(message, "pic")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.pic); - if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isRelease); - if (message.price != null && Object.hasOwnProperty.call(message, "price")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.price); - return writer; - }; - - /** - * Encodes the specified GirlPhoto message, length delimited. Does not implicitly {@link cs.GirlPhoto.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.GirlPhoto - * @static - * @param {cs.IGirlPhoto} message GirlPhoto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlPhoto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GirlPhoto message from the specified reader or buffer. - * @function decode - * @memberof cs.GirlPhoto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.GirlPhoto} GirlPhoto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlPhoto.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GirlPhoto(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.pic = reader.string(); - break; - } - case 2: { - message.isRelease = reader.bool(); - break; - } - case 3: { - message.price = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GirlPhoto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.GirlPhoto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.GirlPhoto} GirlPhoto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlPhoto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GirlPhoto message. - * @function verify - * @memberof cs.GirlPhoto - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GirlPhoto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.pic != null && message.hasOwnProperty("pic")) - if (!$util.isString(message.pic)) - return "pic: string expected"; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - if (typeof message.isRelease !== "boolean") - return "isRelease: boolean expected"; - if (message.price != null && message.hasOwnProperty("price")) - if (!$util.isInteger(message.price)) - return "price: integer expected"; - return null; - }; - - /** - * Creates a GirlPhoto message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.GirlPhoto - * @static - * @param {Object.} object Plain object - * @returns {cs.GirlPhoto} GirlPhoto - */ - GirlPhoto.fromObject = function fromObject(object) { - if (object instanceof $root.cs.GirlPhoto) - return object; - var message = new $root.cs.GirlPhoto(); - if (object.pic != null) - message.pic = String(object.pic); - if (object.isRelease != null) - message.isRelease = Boolean(object.isRelease); - if (object.price != null) - message.price = object.price | 0; - return message; - }; - - /** - * Creates a plain object from a GirlPhoto message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.GirlPhoto - * @static - * @param {cs.GirlPhoto} message GirlPhoto - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GirlPhoto.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.pic = ""; - object.isRelease = false; - object.price = 0; - } - if (message.pic != null && message.hasOwnProperty("pic")) - object.pic = message.pic; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - object.isRelease = message.isRelease; - if (message.price != null && message.hasOwnProperty("price")) - object.price = message.price; - return object; - }; - - /** - * Converts this GirlPhoto to JSON. - * @function toJSON - * @memberof cs.GirlPhoto - * @instance - * @returns {Object.} JSON object - */ - GirlPhoto.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GirlPhoto - * @function getTypeUrl - * @memberof cs.GirlPhoto - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GirlPhoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.GirlPhoto"; - }; - - return GirlPhoto; - })(); - - cs.PurchaseCommercialImage = (function() { - - /** - * Properties of a PurchaseCommercialImage. - * @memberof cs - * @interface IPurchaseCommercialImage - * @property {number|null} [imageType] PurchaseCommercialImage imageType - * @property {number|null} [imagePrice] PurchaseCommercialImage imagePrice - * @property {string|null} [path] PurchaseCommercialImage path - * @property {boolean|null} [isRelease] PurchaseCommercialImage isRelease - */ - - /** - * Constructs a new PurchaseCommercialImage. - * @memberof cs - * @classdesc Represents a PurchaseCommercialImage. - * @implements IPurchaseCommercialImage - * @constructor - * @param {cs.IPurchaseCommercialImage=} [properties] Properties to set - */ - function PurchaseCommercialImage(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PurchaseCommercialImage imageType. - * @member {number} imageType - * @memberof cs.PurchaseCommercialImage - * @instance - */ - PurchaseCommercialImage.prototype.imageType = 0; - - /** - * PurchaseCommercialImage imagePrice. - * @member {number} imagePrice - * @memberof cs.PurchaseCommercialImage - * @instance - */ - PurchaseCommercialImage.prototype.imagePrice = 0; - - /** - * PurchaseCommercialImage path. - * @member {string} path - * @memberof cs.PurchaseCommercialImage - * @instance - */ - PurchaseCommercialImage.prototype.path = ""; - - /** - * PurchaseCommercialImage isRelease. - * @member {boolean} isRelease - * @memberof cs.PurchaseCommercialImage - * @instance - */ - PurchaseCommercialImage.prototype.isRelease = false; - - /** - * Creates a new PurchaseCommercialImage instance using the specified properties. - * @function create - * @memberof cs.PurchaseCommercialImage - * @static - * @param {cs.IPurchaseCommercialImage=} [properties] Properties to set - * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage instance - */ - PurchaseCommercialImage.create = function create(properties) { - return new PurchaseCommercialImage(properties); - }; - - /** - * Encodes the specified PurchaseCommercialImage message. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. - * @function encode - * @memberof cs.PurchaseCommercialImage - * @static - * @param {cs.IPurchaseCommercialImage} message PurchaseCommercialImage message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PurchaseCommercialImage.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.imageType != null && Object.hasOwnProperty.call(message, "imageType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.imageType); - if (message.imagePrice != null && Object.hasOwnProperty.call(message, "imagePrice")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.imagePrice); - if (message.path != null && Object.hasOwnProperty.call(message, "path")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.path); - if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.isRelease); - return writer; - }; - - /** - * Encodes the specified PurchaseCommercialImage message, length delimited. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.PurchaseCommercialImage - * @static - * @param {cs.IPurchaseCommercialImage} message PurchaseCommercialImage message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PurchaseCommercialImage.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PurchaseCommercialImage message from the specified reader or buffer. - * @function decode - * @memberof cs.PurchaseCommercialImage - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PurchaseCommercialImage.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.PurchaseCommercialImage(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.imageType = reader.int32(); - break; - } - case 2: { - message.imagePrice = reader.int32(); - break; - } - case 3: { - message.path = reader.string(); - break; - } - case 4: { - message.isRelease = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PurchaseCommercialImage message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.PurchaseCommercialImage - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PurchaseCommercialImage.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PurchaseCommercialImage message. - * @function verify - * @memberof cs.PurchaseCommercialImage - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PurchaseCommercialImage.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.imageType != null && message.hasOwnProperty("imageType")) - if (!$util.isInteger(message.imageType)) - return "imageType: integer expected"; - if (message.imagePrice != null && message.hasOwnProperty("imagePrice")) - if (!$util.isInteger(message.imagePrice)) - return "imagePrice: integer expected"; - if (message.path != null && message.hasOwnProperty("path")) - if (!$util.isString(message.path)) - return "path: string expected"; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - if (typeof message.isRelease !== "boolean") - return "isRelease: boolean expected"; - return null; - }; - - /** - * Creates a PurchaseCommercialImage message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.PurchaseCommercialImage - * @static - * @param {Object.} object Plain object - * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage - */ - PurchaseCommercialImage.fromObject = function fromObject(object) { - if (object instanceof $root.cs.PurchaseCommercialImage) - return object; - var message = new $root.cs.PurchaseCommercialImage(); - if (object.imageType != null) - message.imageType = object.imageType | 0; - if (object.imagePrice != null) - message.imagePrice = object.imagePrice | 0; - if (object.path != null) - message.path = String(object.path); - if (object.isRelease != null) - message.isRelease = Boolean(object.isRelease); - return message; - }; - - /** - * Creates a plain object from a PurchaseCommercialImage message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.PurchaseCommercialImage - * @static - * @param {cs.PurchaseCommercialImage} message PurchaseCommercialImage - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PurchaseCommercialImage.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.imageType = 0; - object.imagePrice = 0; - object.path = ""; - object.isRelease = false; - } - if (message.imageType != null && message.hasOwnProperty("imageType")) - object.imageType = message.imageType; - if (message.imagePrice != null && message.hasOwnProperty("imagePrice")) - object.imagePrice = message.imagePrice; - if (message.path != null && message.hasOwnProperty("path")) - object.path = message.path; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - object.isRelease = message.isRelease; - return object; - }; - - /** - * Converts this PurchaseCommercialImage to JSON. - * @function toJSON - * @memberof cs.PurchaseCommercialImage - * @instance - * @returns {Object.} JSON object - */ - PurchaseCommercialImage.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PurchaseCommercialImage - * @function getTypeUrl - * @memberof cs.PurchaseCommercialImage - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PurchaseCommercialImage.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.PurchaseCommercialImage"; - }; - - return PurchaseCommercialImage; - })(); - - cs.PurchaseCommercialVideo = (function() { - - /** - * Properties of a PurchaseCommercialVideo. - * @memberof cs - * @interface IPurchaseCommercialVideo - * @property {string|null} [path] PurchaseCommercialVideo path - * @property {number|null} [emotion] PurchaseCommercialVideo emotion - * @property {number|null} [videoPrice] PurchaseCommercialVideo videoPrice - * @property {boolean|null} [isRelease] PurchaseCommercialVideo isRelease - */ - - /** - * Constructs a new PurchaseCommercialVideo. - * @memberof cs - * @classdesc Represents a PurchaseCommercialVideo. - * @implements IPurchaseCommercialVideo - * @constructor - * @param {cs.IPurchaseCommercialVideo=} [properties] Properties to set - */ - function PurchaseCommercialVideo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PurchaseCommercialVideo path. - * @member {string} path - * @memberof cs.PurchaseCommercialVideo - * @instance - */ - PurchaseCommercialVideo.prototype.path = ""; - - /** - * PurchaseCommercialVideo emotion. - * @member {number} emotion - * @memberof cs.PurchaseCommercialVideo - * @instance - */ - PurchaseCommercialVideo.prototype.emotion = 0; - - /** - * PurchaseCommercialVideo videoPrice. - * @member {number} videoPrice - * @memberof cs.PurchaseCommercialVideo - * @instance - */ - PurchaseCommercialVideo.prototype.videoPrice = 0; - - /** - * PurchaseCommercialVideo isRelease. - * @member {boolean} isRelease - * @memberof cs.PurchaseCommercialVideo - * @instance - */ - PurchaseCommercialVideo.prototype.isRelease = false; - - /** - * Creates a new PurchaseCommercialVideo instance using the specified properties. - * @function create - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {cs.IPurchaseCommercialVideo=} [properties] Properties to set - * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo instance - */ - PurchaseCommercialVideo.create = function create(properties) { - return new PurchaseCommercialVideo(properties); - }; - - /** - * Encodes the specified PurchaseCommercialVideo message. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. - * @function encode - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {cs.IPurchaseCommercialVideo} message PurchaseCommercialVideo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PurchaseCommercialVideo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.path != null && Object.hasOwnProperty.call(message, "path")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.path); - if (message.emotion != null && Object.hasOwnProperty.call(message, "emotion")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.emotion); - if (message.videoPrice != null && Object.hasOwnProperty.call(message, "videoPrice")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.videoPrice); - if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.isRelease); - return writer; - }; - - /** - * Encodes the specified PurchaseCommercialVideo message, length delimited. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {cs.IPurchaseCommercialVideo} message PurchaseCommercialVideo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PurchaseCommercialVideo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PurchaseCommercialVideo message from the specified reader or buffer. - * @function decode - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PurchaseCommercialVideo.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.PurchaseCommercialVideo(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.path = reader.string(); - break; - } - case 2: { - message.emotion = reader.int32(); - break; - } - case 3: { - message.videoPrice = reader.int32(); - break; - } - case 4: { - message.isRelease = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PurchaseCommercialVideo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PurchaseCommercialVideo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PurchaseCommercialVideo message. - * @function verify - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PurchaseCommercialVideo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.path != null && message.hasOwnProperty("path")) - if (!$util.isString(message.path)) - return "path: string expected"; - if (message.emotion != null && message.hasOwnProperty("emotion")) - if (!$util.isInteger(message.emotion)) - return "emotion: integer expected"; - if (message.videoPrice != null && message.hasOwnProperty("videoPrice")) - if (!$util.isInteger(message.videoPrice)) - return "videoPrice: integer expected"; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - if (typeof message.isRelease !== "boolean") - return "isRelease: boolean expected"; - return null; - }; - - /** - * Creates a PurchaseCommercialVideo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {Object.} object Plain object - * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo - */ - PurchaseCommercialVideo.fromObject = function fromObject(object) { - if (object instanceof $root.cs.PurchaseCommercialVideo) - return object; - var message = new $root.cs.PurchaseCommercialVideo(); - if (object.path != null) - message.path = String(object.path); - if (object.emotion != null) - message.emotion = object.emotion | 0; - if (object.videoPrice != null) - message.videoPrice = object.videoPrice | 0; - if (object.isRelease != null) - message.isRelease = Boolean(object.isRelease); - return message; - }; - - /** - * Creates a plain object from a PurchaseCommercialVideo message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {cs.PurchaseCommercialVideo} message PurchaseCommercialVideo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PurchaseCommercialVideo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.path = ""; - object.emotion = 0; - object.videoPrice = 0; - object.isRelease = false; - } - if (message.path != null && message.hasOwnProperty("path")) - object.path = message.path; - if (message.emotion != null && message.hasOwnProperty("emotion")) - object.emotion = message.emotion; - if (message.videoPrice != null && message.hasOwnProperty("videoPrice")) - object.videoPrice = message.videoPrice; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - object.isRelease = message.isRelease; - return object; - }; - - /** - * Converts this PurchaseCommercialVideo to JSON. - * @function toJSON - * @memberof cs.PurchaseCommercialVideo - * @instance - * @returns {Object.} JSON object - */ - PurchaseCommercialVideo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PurchaseCommercialVideo - * @function getTypeUrl - * @memberof cs.PurchaseCommercialVideo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PurchaseCommercialVideo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.PurchaseCommercialVideo"; - }; - - return PurchaseCommercialVideo; - })(); - - cs.GirlDetail = (function() { - - /** - * Properties of a GirlDetail. - * @memberof cs - * @interface IGirlDetail - * @property {cs.IGirlBrief|null} [brief] GirlDetail brief - * @property {string|null} [desc] GirlDetail desc - * @property {boolean|null} [isRelease] GirlDetail isRelease - * @property {number|null} [chatCount] GirlDetail chatCount - * @property {Array.|null} [images] GirlDetail images - * @property {Array.|null} [videos] GirlDetail videos - */ - - /** - * Constructs a new GirlDetail. - * @memberof cs - * @classdesc Represents a GirlDetail. - * @implements IGirlDetail - * @constructor - * @param {cs.IGirlDetail=} [properties] Properties to set - */ - function GirlDetail(properties) { - this.images = []; - this.videos = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GirlDetail brief. - * @member {cs.IGirlBrief|null|undefined} brief - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.brief = null; - - /** - * GirlDetail desc. - * @member {string} desc - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.desc = ""; - - /** - * GirlDetail isRelease. - * @member {boolean} isRelease - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.isRelease = false; - - /** - * GirlDetail chatCount. - * @member {number} chatCount - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.chatCount = 0; - - /** - * GirlDetail images. - * @member {Array.} images - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.images = $util.emptyArray; - - /** - * GirlDetail videos. - * @member {Array.} videos - * @memberof cs.GirlDetail - * @instance - */ - GirlDetail.prototype.videos = $util.emptyArray; - - /** - * Creates a new GirlDetail instance using the specified properties. - * @function create - * @memberof cs.GirlDetail - * @static - * @param {cs.IGirlDetail=} [properties] Properties to set - * @returns {cs.GirlDetail} GirlDetail instance - */ - GirlDetail.create = function create(properties) { - return new GirlDetail(properties); - }; - - /** - * Encodes the specified GirlDetail message. Does not implicitly {@link cs.GirlDetail.verify|verify} messages. - * @function encode - * @memberof cs.GirlDetail - * @static - * @param {cs.IGirlDetail} message GirlDetail message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlDetail.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.brief != null && Object.hasOwnProperty.call(message, "brief")) - $root.cs.GirlBrief.encode(message.brief, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.desc != null && Object.hasOwnProperty.call(message, "desc")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.desc); - if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.isRelease); - if (message.chatCount != null && Object.hasOwnProperty.call(message, "chatCount")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.chatCount); - if (message.images != null && message.images.length) - for (var i = 0; i < message.images.length; ++i) - $root.cs.PurchaseCommercialImage.encode(message.images[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.videos != null && message.videos.length) - for (var i = 0; i < message.videos.length; ++i) - $root.cs.PurchaseCommercialVideo.encode(message.videos[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified GirlDetail message, length delimited. Does not implicitly {@link cs.GirlDetail.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.GirlDetail - * @static - * @param {cs.IGirlDetail} message GirlDetail message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GirlDetail.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GirlDetail message from the specified reader or buffer. - * @function decode - * @memberof cs.GirlDetail - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.GirlDetail} GirlDetail - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlDetail.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GirlDetail(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.brief = $root.cs.GirlBrief.decode(reader, reader.uint32()); - break; - } - case 2: { - message.desc = reader.string(); - break; - } - case 4: { - message.isRelease = reader.bool(); - break; - } - case 5: { - message.chatCount = reader.int32(); - break; - } - case 6: { - if (!(message.images && message.images.length)) - message.images = []; - message.images.push($root.cs.PurchaseCommercialImage.decode(reader, reader.uint32())); - break; - } - case 7: { - if (!(message.videos && message.videos.length)) - message.videos = []; - message.videos.push($root.cs.PurchaseCommercialVideo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GirlDetail message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.GirlDetail - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.GirlDetail} GirlDetail - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GirlDetail.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GirlDetail message. - * @function verify - * @memberof cs.GirlDetail - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GirlDetail.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.brief != null && message.hasOwnProperty("brief")) { - var error = $root.cs.GirlBrief.verify(message.brief); - if (error) - return "brief." + error; - } - if (message.desc != null && message.hasOwnProperty("desc")) - if (!$util.isString(message.desc)) - return "desc: string expected"; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - if (typeof message.isRelease !== "boolean") - return "isRelease: boolean expected"; - if (message.chatCount != null && message.hasOwnProperty("chatCount")) - if (!$util.isInteger(message.chatCount)) - return "chatCount: integer expected"; - if (message.images != null && message.hasOwnProperty("images")) { - if (!Array.isArray(message.images)) - return "images: array expected"; - for (var i = 0; i < message.images.length; ++i) { - var error = $root.cs.PurchaseCommercialImage.verify(message.images[i]); - if (error) - return "images." + error; - } - } - if (message.videos != null && message.hasOwnProperty("videos")) { - if (!Array.isArray(message.videos)) - return "videos: array expected"; - for (var i = 0; i < message.videos.length; ++i) { - var error = $root.cs.PurchaseCommercialVideo.verify(message.videos[i]); - if (error) - return "videos." + error; - } - } - return null; - }; - - /** - * Creates a GirlDetail message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.GirlDetail - * @static - * @param {Object.} object Plain object - * @returns {cs.GirlDetail} GirlDetail - */ - GirlDetail.fromObject = function fromObject(object) { - if (object instanceof $root.cs.GirlDetail) - return object; - var message = new $root.cs.GirlDetail(); - if (object.brief != null) { - if (typeof object.brief !== "object") - throw TypeError(".cs.GirlDetail.brief: object expected"); - message.brief = $root.cs.GirlBrief.fromObject(object.brief); - } - if (object.desc != null) - message.desc = String(object.desc); - if (object.isRelease != null) - message.isRelease = Boolean(object.isRelease); - if (object.chatCount != null) - message.chatCount = object.chatCount | 0; - if (object.images) { - if (!Array.isArray(object.images)) - throw TypeError(".cs.GirlDetail.images: array expected"); - message.images = []; - for (var i = 0; i < object.images.length; ++i) { - if (typeof object.images[i] !== "object") - throw TypeError(".cs.GirlDetail.images: object expected"); - message.images[i] = $root.cs.PurchaseCommercialImage.fromObject(object.images[i]); - } - } - if (object.videos) { - if (!Array.isArray(object.videos)) - throw TypeError(".cs.GirlDetail.videos: array expected"); - message.videos = []; - for (var i = 0; i < object.videos.length; ++i) { - if (typeof object.videos[i] !== "object") - throw TypeError(".cs.GirlDetail.videos: object expected"); - message.videos[i] = $root.cs.PurchaseCommercialVideo.fromObject(object.videos[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a GirlDetail message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.GirlDetail - * @static - * @param {cs.GirlDetail} message GirlDetail - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GirlDetail.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.images = []; - object.videos = []; - } - if (options.defaults) { - object.brief = null; - object.desc = ""; - object.isRelease = false; - object.chatCount = 0; - } - if (message.brief != null && message.hasOwnProperty("brief")) - object.brief = $root.cs.GirlBrief.toObject(message.brief, options); - if (message.desc != null && message.hasOwnProperty("desc")) - object.desc = message.desc; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - object.isRelease = message.isRelease; - if (message.chatCount != null && message.hasOwnProperty("chatCount")) - object.chatCount = message.chatCount; - if (message.images && message.images.length) { - object.images = []; - for (var j = 0; j < message.images.length; ++j) - object.images[j] = $root.cs.PurchaseCommercialImage.toObject(message.images[j], options); - } - if (message.videos && message.videos.length) { - object.videos = []; - for (var j = 0; j < message.videos.length; ++j) - object.videos[j] = $root.cs.PurchaseCommercialVideo.toObject(message.videos[j], options); - } - return object; - }; - - /** - * Converts this GirlDetail to JSON. - * @function toJSON - * @memberof cs.GirlDetail - * @instance - * @returns {Object.} JSON object - */ - GirlDetail.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GirlDetail - * @function getTypeUrl - * @memberof cs.GirlDetail - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GirlDetail.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.GirlDetail"; - }; - - return GirlDetail; - })(); - cs.CSDailyRecommendReq = (function() { /** @@ -1800,7 +201,7 @@ $root.cs = (function() { * Properties of a CSDailyRecommendRes. * @memberof cs * @interface ICSDailyRecommendRes - * @property {Array.|null} [girls] CSDailyRecommendRes girls + * @property {cs.IGirls|null} [girl] CSDailyRecommendRes girl */ /** @@ -1812,7 +213,6 @@ $root.cs = (function() { * @param {cs.ICSDailyRecommendRes=} [properties] Properties to set */ function CSDailyRecommendRes(properties) { - this.girls = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -1820,12 +220,12 @@ $root.cs = (function() { } /** - * CSDailyRecommendRes girls. - * @member {Array.} girls + * CSDailyRecommendRes girl. + * @member {cs.IGirls|null|undefined} girl * @memberof cs.CSDailyRecommendRes * @instance */ - CSDailyRecommendRes.prototype.girls = $util.emptyArray; + CSDailyRecommendRes.prototype.girl = null; /** * Creates a new CSDailyRecommendRes instance using the specified properties. @@ -1851,9 +251,8 @@ $root.cs = (function() { CSDailyRecommendRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.girls != null && message.girls.length) - for (var i = 0; i < message.girls.length; ++i) - $root.cs.GirlBrief.encode(message.girls[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.girl != null && Object.hasOwnProperty.call(message, "girl")) + $root.cs.Girls.encode(message.girl, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -1891,9 +290,7 @@ $root.cs = (function() { break; switch (tag >>> 3) { case 1: { - if (!(message.girls && message.girls.length)) - message.girls = []; - message.girls.push($root.cs.GirlBrief.decode(reader, reader.uint32())); + message.girl = $root.cs.Girls.decode(reader, reader.uint32()); break; } default: @@ -1931,14 +328,10 @@ $root.cs = (function() { CSDailyRecommendRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.girls != null && message.hasOwnProperty("girls")) { - if (!Array.isArray(message.girls)) - return "girls: array expected"; - for (var i = 0; i < message.girls.length; ++i) { - var error = $root.cs.GirlBrief.verify(message.girls[i]); - if (error) - return "girls." + error; - } + if (message.girl != null && message.hasOwnProperty("girl")) { + var error = $root.cs.Girls.verify(message.girl); + if (error) + return "girl." + error; } return null; }; @@ -1955,15 +348,10 @@ $root.cs = (function() { if (object instanceof $root.cs.CSDailyRecommendRes) return object; var message = new $root.cs.CSDailyRecommendRes(); - if (object.girls) { - if (!Array.isArray(object.girls)) - throw TypeError(".cs.CSDailyRecommendRes.girls: array expected"); - message.girls = []; - for (var i = 0; i < object.girls.length; ++i) { - if (typeof object.girls[i] !== "object") - throw TypeError(".cs.CSDailyRecommendRes.girls: object expected"); - message.girls[i] = $root.cs.GirlBrief.fromObject(object.girls[i]); - } + if (object.girl != null) { + if (typeof object.girl !== "object") + throw TypeError(".cs.CSDailyRecommendRes.girl: object expected"); + message.girl = $root.cs.Girls.fromObject(object.girl); } return message; }; @@ -1981,13 +369,10 @@ $root.cs = (function() { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.girls = []; - if (message.girls && message.girls.length) { - object.girls = []; - for (var j = 0; j < message.girls.length; ++j) - object.girls[j] = $root.cs.GirlBrief.toObject(message.girls[j], options); - } + if (options.defaults) + object.girl = null; + if (message.girl != null && message.hasOwnProperty("girl")) + object.girl = $root.cs.Girls.toObject(message.girl, options); return object; }; @@ -2197,334 +582,13 @@ $root.cs = (function() { return CSHallThemeReq; })(); - cs.HallTheme = (function() { - - /** - * Properties of a HallTheme. - * @memberof cs - * @interface IHallTheme - * @property {number|null} [id] HallTheme id - * @property {string|null} [key] HallTheme key - * @property {string|null} [name] HallTheme name - * @property {number|null} [category] HallTheme category - * @property {boolean|null} [isRelease] HallTheme isRelease - * @property {string|null} [path] HallTheme path - */ - - /** - * Constructs a new HallTheme. - * @memberof cs - * @classdesc Represents a HallTheme. - * @implements IHallTheme - * @constructor - * @param {cs.IHallTheme=} [properties] Properties to set - */ - function HallTheme(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * HallTheme id. - * @member {number} id - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.id = 0; - - /** - * HallTheme key. - * @member {string} key - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.key = ""; - - /** - * HallTheme name. - * @member {string} name - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.name = ""; - - /** - * HallTheme category. - * @member {number} category - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.category = 0; - - /** - * HallTheme isRelease. - * @member {boolean} isRelease - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.isRelease = false; - - /** - * HallTheme path. - * @member {string} path - * @memberof cs.HallTheme - * @instance - */ - HallTheme.prototype.path = ""; - - /** - * Creates a new HallTheme instance using the specified properties. - * @function create - * @memberof cs.HallTheme - * @static - * @param {cs.IHallTheme=} [properties] Properties to set - * @returns {cs.HallTheme} HallTheme instance - */ - HallTheme.create = function create(properties) { - return new HallTheme(properties); - }; - - /** - * Encodes the specified HallTheme message. Does not implicitly {@link cs.HallTheme.verify|verify} messages. - * @function encode - * @memberof cs.HallTheme - * @static - * @param {cs.IHallTheme} message HallTheme message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallTheme.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.key); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); - if (message.category != null && Object.hasOwnProperty.call(message, "category")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.category); - if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.isRelease); - if (message.path != null && Object.hasOwnProperty.call(message, "path")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.path); - return writer; - }; - - /** - * Encodes the specified HallTheme message, length delimited. Does not implicitly {@link cs.HallTheme.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.HallTheme - * @static - * @param {cs.IHallTheme} message HallTheme message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallTheme.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a HallTheme message from the specified reader or buffer. - * @function decode - * @memberof cs.HallTheme - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.HallTheme} HallTheme - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallTheme.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.HallTheme(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.id = reader.int32(); - break; - } - case 2: { - message.key = reader.string(); - break; - } - case 3: { - message.name = reader.string(); - break; - } - case 4: { - message.category = reader.int32(); - break; - } - case 5: { - message.isRelease = reader.bool(); - break; - } - case 6: { - message.path = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HallTheme message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.HallTheme - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.HallTheme} HallTheme - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallTheme.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a HallTheme message. - * @function verify - * @memberof cs.HallTheme - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HallTheme.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) - if (!$util.isInteger(message.id)) - return "id: integer expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!$util.isString(message.key)) - return "key: string expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.category != null && message.hasOwnProperty("category")) - if (!$util.isInteger(message.category)) - return "category: integer expected"; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - if (typeof message.isRelease !== "boolean") - return "isRelease: boolean expected"; - if (message.path != null && message.hasOwnProperty("path")) - if (!$util.isString(message.path)) - return "path: string expected"; - return null; - }; - - /** - * Creates a HallTheme message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.HallTheme - * @static - * @param {Object.} object Plain object - * @returns {cs.HallTheme} HallTheme - */ - HallTheme.fromObject = function fromObject(object) { - if (object instanceof $root.cs.HallTheme) - return object; - var message = new $root.cs.HallTheme(); - if (object.id != null) - message.id = object.id | 0; - if (object.key != null) - message.key = String(object.key); - if (object.name != null) - message.name = String(object.name); - if (object.category != null) - message.category = object.category | 0; - if (object.isRelease != null) - message.isRelease = Boolean(object.isRelease); - if (object.path != null) - message.path = String(object.path); - return message; - }; - - /** - * Creates a plain object from a HallTheme message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.HallTheme - * @static - * @param {cs.HallTheme} message HallTheme - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HallTheme.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.id = 0; - object.key = ""; - object.name = ""; - object.category = 0; - object.isRelease = false; - object.path = ""; - } - if (message.id != null && message.hasOwnProperty("id")) - object.id = message.id; - if (message.key != null && message.hasOwnProperty("key")) - object.key = message.key; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.category != null && message.hasOwnProperty("category")) - object.category = message.category; - if (message.isRelease != null && message.hasOwnProperty("isRelease")) - object.isRelease = message.isRelease; - if (message.path != null && message.hasOwnProperty("path")) - object.path = message.path; - return object; - }; - - /** - * Converts this HallTheme to JSON. - * @function toJSON - * @memberof cs.HallTheme - * @instance - * @returns {Object.} JSON object - */ - HallTheme.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for HallTheme - * @function getTypeUrl - * @memberof cs.HallTheme - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - HallTheme.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.HallTheme"; - }; - - return HallTheme; - })(); - cs.CSHallThemeRes = (function() { /** * Properties of a CSHallThemeRes. * @memberof cs * @interface ICSHallThemeRes - * @property {Array.|null} [themes] CSHallThemeRes themes + * @property {Array.|null} [themes] CSHallThemeRes themes */ /** @@ -2545,7 +609,7 @@ $root.cs = (function() { /** * CSHallThemeRes themes. - * @member {Array.} themes + * @member {Array.} themes * @memberof cs.CSHallThemeRes * @instance */ @@ -2577,7 +641,7 @@ $root.cs = (function() { writer = $Writer.create(); if (message.themes != null && message.themes.length) for (var i = 0; i < message.themes.length; ++i) - $root.cs.HallTheme.encode(message.themes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.cs.Themes.encode(message.themes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -2617,7 +681,7 @@ $root.cs = (function() { case 1: { if (!(message.themes && message.themes.length)) message.themes = []; - message.themes.push($root.cs.HallTheme.decode(reader, reader.uint32())); + message.themes.push($root.cs.Themes.decode(reader, reader.uint32())); break; } default: @@ -2659,7 +723,7 @@ $root.cs = (function() { if (!Array.isArray(message.themes)) return "themes: array expected"; for (var i = 0; i < message.themes.length; ++i) { - var error = $root.cs.HallTheme.verify(message.themes[i]); + var error = $root.cs.Themes.verify(message.themes[i]); if (error) return "themes." + error; } @@ -2686,7 +750,7 @@ $root.cs = (function() { for (var i = 0; i < object.themes.length; ++i) { if (typeof object.themes[i] !== "object") throw TypeError(".cs.CSHallThemeRes.themes: object expected"); - message.themes[i] = $root.cs.HallTheme.fromObject(object.themes[i]); + message.themes[i] = $root.cs.Themes.fromObject(object.themes[i]); } } return message; @@ -2710,7 +774,7 @@ $root.cs = (function() { if (message.themes && message.themes.length) { object.themes = []; for (var j = 0; j < message.themes.length; ++j) - object.themes[j] = $root.cs.HallTheme.toObject(message.themes[j], options); + object.themes[j] = $root.cs.Themes.toObject(message.themes[j], options); } return object; }; @@ -2744,6 +808,679 @@ $root.cs = (function() { return CSHallThemeRes; })(); + cs.ResourceUnlock = (function() { + + /** + * Properties of a ResourceUnlock. + * @memberof cs + * @interface IResourceUnlock + * @property {number|null} [girlId] ResourceUnlock girlId + * @property {number|null} [resId] ResourceUnlock resId + */ + + /** + * Constructs a new ResourceUnlock. + * @memberof cs + * @classdesc Represents a ResourceUnlock. + * @implements IResourceUnlock + * @constructor + * @param {cs.IResourceUnlock=} [properties] Properties to set + */ + function ResourceUnlock(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ResourceUnlock girlId. + * @member {number} girlId + * @memberof cs.ResourceUnlock + * @instance + */ + ResourceUnlock.prototype.girlId = 0; + + /** + * ResourceUnlock resId. + * @member {number} resId + * @memberof cs.ResourceUnlock + * @instance + */ + ResourceUnlock.prototype.resId = 0; + + /** + * Creates a new ResourceUnlock instance using the specified properties. + * @function create + * @memberof cs.ResourceUnlock + * @static + * @param {cs.IResourceUnlock=} [properties] Properties to set + * @returns {cs.ResourceUnlock} ResourceUnlock instance + */ + ResourceUnlock.create = function create(properties) { + return new ResourceUnlock(properties); + }; + + /** + * Encodes the specified ResourceUnlock message. Does not implicitly {@link cs.ResourceUnlock.verify|verify} messages. + * @function encode + * @memberof cs.ResourceUnlock + * @static + * @param {cs.IResourceUnlock} message ResourceUnlock message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResourceUnlock.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.girlId != null && Object.hasOwnProperty.call(message, "girlId")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.girlId); + if (message.resId != null && Object.hasOwnProperty.call(message, "resId")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resId); + return writer; + }; + + /** + * Encodes the specified ResourceUnlock message, length delimited. Does not implicitly {@link cs.ResourceUnlock.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.ResourceUnlock + * @static + * @param {cs.IResourceUnlock} message ResourceUnlock message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResourceUnlock.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ResourceUnlock message from the specified reader or buffer. + * @function decode + * @memberof cs.ResourceUnlock + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.ResourceUnlock} ResourceUnlock + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResourceUnlock.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.ResourceUnlock(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.girlId = reader.int32(); + break; + } + case 2: { + message.resId = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ResourceUnlock message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.ResourceUnlock + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.ResourceUnlock} ResourceUnlock + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResourceUnlock.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ResourceUnlock message. + * @function verify + * @memberof cs.ResourceUnlock + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ResourceUnlock.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.girlId != null && message.hasOwnProperty("girlId")) + if (!$util.isInteger(message.girlId)) + return "girlId: integer expected"; + if (message.resId != null && message.hasOwnProperty("resId")) + if (!$util.isInteger(message.resId)) + return "resId: integer expected"; + return null; + }; + + /** + * Creates a ResourceUnlock message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.ResourceUnlock + * @static + * @param {Object.} object Plain object + * @returns {cs.ResourceUnlock} ResourceUnlock + */ + ResourceUnlock.fromObject = function fromObject(object) { + if (object instanceof $root.cs.ResourceUnlock) + return object; + var message = new $root.cs.ResourceUnlock(); + if (object.girlId != null) + message.girlId = object.girlId | 0; + if (object.resId != null) + message.resId = object.resId | 0; + return message; + }; + + /** + * Creates a plain object from a ResourceUnlock message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.ResourceUnlock + * @static + * @param {cs.ResourceUnlock} message ResourceUnlock + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResourceUnlock.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.girlId = 0; + object.resId = 0; + } + if (message.girlId != null && message.hasOwnProperty("girlId")) + object.girlId = message.girlId; + if (message.resId != null && message.hasOwnProperty("resId")) + object.resId = message.resId; + return object; + }; + + /** + * Converts this ResourceUnlock to JSON. + * @function toJSON + * @memberof cs.ResourceUnlock + * @instance + * @returns {Object.} JSON object + */ + ResourceUnlock.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ResourceUnlock + * @function getTypeUrl + * @memberof cs.ResourceUnlock + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ResourceUnlock.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.ResourceUnlock"; + }; + + return ResourceUnlock; + })(); + + cs.GirlData = (function() { + + /** + * Properties of a GirlData. + * @memberof cs + * @interface IGirlData + * @property {number|null} [id] GirlData id + * @property {cs.IGirls|null} [girl] GirlData girl + * @property {boolean|null} [isRelease] GirlData isRelease + * @property {number|null} [star] GirlData star + * @property {cs.IGirlsDetail|null} [detail] GirlData detail + * @property {Array.|null} [images] GirlData images + * @property {Array.|null} [videos] GirlData videos + * @property {number|null} [chatTotalCount] GirlData chatTotalCount + * @property {number|null} [chatRemainCount] GirlData chatRemainCount + */ + + /** + * Constructs a new GirlData. + * @memberof cs + * @classdesc Represents a GirlData. + * @implements IGirlData + * @constructor + * @param {cs.IGirlData=} [properties] Properties to set + */ + function GirlData(properties) { + this.images = []; + this.videos = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GirlData id. + * @member {number} id + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.id = 0; + + /** + * GirlData girl. + * @member {cs.IGirls|null|undefined} girl + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.girl = null; + + /** + * GirlData isRelease. + * @member {boolean} isRelease + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.isRelease = false; + + /** + * GirlData star. + * @member {number} star + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.star = 0; + + /** + * GirlData detail. + * @member {cs.IGirlsDetail|null|undefined} detail + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.detail = null; + + /** + * GirlData images. + * @member {Array.} images + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.images = $util.emptyArray; + + /** + * GirlData videos. + * @member {Array.} videos + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.videos = $util.emptyArray; + + /** + * GirlData chatTotalCount. + * @member {number} chatTotalCount + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.chatTotalCount = 0; + + /** + * GirlData chatRemainCount. + * @member {number} chatRemainCount + * @memberof cs.GirlData + * @instance + */ + GirlData.prototype.chatRemainCount = 0; + + /** + * Creates a new GirlData instance using the specified properties. + * @function create + * @memberof cs.GirlData + * @static + * @param {cs.IGirlData=} [properties] Properties to set + * @returns {cs.GirlData} GirlData instance + */ + GirlData.create = function create(properties) { + return new GirlData(properties); + }; + + /** + * Encodes the specified GirlData message. Does not implicitly {@link cs.GirlData.verify|verify} messages. + * @function encode + * @memberof cs.GirlData + * @static + * @param {cs.IGirlData} message GirlData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GirlData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.girl != null && Object.hasOwnProperty.call(message, "girl")) + $root.cs.Girls.encode(message.girl, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isRelease); + if (message.star != null && Object.hasOwnProperty.call(message, "star")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.star); + if (message.detail != null && Object.hasOwnProperty.call(message, "detail")) + $root.cs.GirlsDetail.encode(message.detail, writer.uint32(/* id 30, wireType 2 =*/242).fork()).ldelim(); + if (message.images != null && message.images.length) + for (var i = 0; i < message.images.length; ++i) + $root.cs.ResourceUnlock.encode(message.images[i], writer.uint32(/* id 31, wireType 2 =*/250).fork()).ldelim(); + if (message.videos != null && message.videos.length) + for (var i = 0; i < message.videos.length; ++i) + $root.cs.ResourceUnlock.encode(message.videos[i], writer.uint32(/* id 32, wireType 2 =*/258).fork()).ldelim(); + if (message.chatTotalCount != null && Object.hasOwnProperty.call(message, "chatTotalCount")) + writer.uint32(/* id 34, wireType 0 =*/272).int32(message.chatTotalCount); + if (message.chatRemainCount != null && Object.hasOwnProperty.call(message, "chatRemainCount")) + writer.uint32(/* id 35, wireType 0 =*/280).int32(message.chatRemainCount); + return writer; + }; + + /** + * Encodes the specified GirlData message, length delimited. Does not implicitly {@link cs.GirlData.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.GirlData + * @static + * @param {cs.IGirlData} message GirlData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GirlData.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GirlData message from the specified reader or buffer. + * @function decode + * @memberof cs.GirlData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.GirlData} GirlData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GirlData.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GirlData(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.girl = $root.cs.Girls.decode(reader, reader.uint32()); + break; + } + case 3: { + message.isRelease = reader.bool(); + break; + } + case 4: { + message.star = reader.int32(); + break; + } + case 30: { + message.detail = $root.cs.GirlsDetail.decode(reader, reader.uint32()); + break; + } + case 31: { + if (!(message.images && message.images.length)) + message.images = []; + message.images.push($root.cs.ResourceUnlock.decode(reader, reader.uint32())); + break; + } + case 32: { + if (!(message.videos && message.videos.length)) + message.videos = []; + message.videos.push($root.cs.ResourceUnlock.decode(reader, reader.uint32())); + break; + } + case 34: { + message.chatTotalCount = reader.int32(); + break; + } + case 35: { + message.chatRemainCount = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GirlData message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.GirlData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.GirlData} GirlData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GirlData.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GirlData message. + * @function verify + * @memberof cs.GirlData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GirlData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.girl != null && message.hasOwnProperty("girl")) { + var error = $root.cs.Girls.verify(message.girl); + if (error) + return "girl." + error; + } + if (message.isRelease != null && message.hasOwnProperty("isRelease")) + if (typeof message.isRelease !== "boolean") + return "isRelease: boolean expected"; + if (message.star != null && message.hasOwnProperty("star")) + if (!$util.isInteger(message.star)) + return "star: integer expected"; + if (message.detail != null && message.hasOwnProperty("detail")) { + var error = $root.cs.GirlsDetail.verify(message.detail); + if (error) + return "detail." + error; + } + if (message.images != null && message.hasOwnProperty("images")) { + if (!Array.isArray(message.images)) + return "images: array expected"; + for (var i = 0; i < message.images.length; ++i) { + var error = $root.cs.ResourceUnlock.verify(message.images[i]); + if (error) + return "images." + error; + } + } + if (message.videos != null && message.hasOwnProperty("videos")) { + if (!Array.isArray(message.videos)) + return "videos: array expected"; + for (var i = 0; i < message.videos.length; ++i) { + var error = $root.cs.ResourceUnlock.verify(message.videos[i]); + if (error) + return "videos." + error; + } + } + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + if (!$util.isInteger(message.chatTotalCount)) + return "chatTotalCount: integer expected"; + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + if (!$util.isInteger(message.chatRemainCount)) + return "chatRemainCount: integer expected"; + return null; + }; + + /** + * Creates a GirlData message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.GirlData + * @static + * @param {Object.} object Plain object + * @returns {cs.GirlData} GirlData + */ + GirlData.fromObject = function fromObject(object) { + if (object instanceof $root.cs.GirlData) + return object; + var message = new $root.cs.GirlData(); + if (object.id != null) + message.id = object.id | 0; + if (object.girl != null) { + if (typeof object.girl !== "object") + throw TypeError(".cs.GirlData.girl: object expected"); + message.girl = $root.cs.Girls.fromObject(object.girl); + } + if (object.isRelease != null) + message.isRelease = Boolean(object.isRelease); + if (object.star != null) + message.star = object.star | 0; + if (object.detail != null) { + if (typeof object.detail !== "object") + throw TypeError(".cs.GirlData.detail: object expected"); + message.detail = $root.cs.GirlsDetail.fromObject(object.detail); + } + if (object.images) { + if (!Array.isArray(object.images)) + throw TypeError(".cs.GirlData.images: array expected"); + message.images = []; + for (var i = 0; i < object.images.length; ++i) { + if (typeof object.images[i] !== "object") + throw TypeError(".cs.GirlData.images: object expected"); + message.images[i] = $root.cs.ResourceUnlock.fromObject(object.images[i]); + } + } + if (object.videos) { + if (!Array.isArray(object.videos)) + throw TypeError(".cs.GirlData.videos: array expected"); + message.videos = []; + for (var i = 0; i < object.videos.length; ++i) { + if (typeof object.videos[i] !== "object") + throw TypeError(".cs.GirlData.videos: object expected"); + message.videos[i] = $root.cs.ResourceUnlock.fromObject(object.videos[i]); + } + } + if (object.chatTotalCount != null) + message.chatTotalCount = object.chatTotalCount | 0; + if (object.chatRemainCount != null) + message.chatRemainCount = object.chatRemainCount | 0; + return message; + }; + + /** + * Creates a plain object from a GirlData message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.GirlData + * @static + * @param {cs.GirlData} message GirlData + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GirlData.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.images = []; + object.videos = []; + } + if (options.defaults) { + object.id = 0; + object.girl = null; + object.isRelease = false; + object.star = 0; + object.detail = null; + object.chatTotalCount = 0; + object.chatRemainCount = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.girl != null && message.hasOwnProperty("girl")) + object.girl = $root.cs.Girls.toObject(message.girl, options); + if (message.isRelease != null && message.hasOwnProperty("isRelease")) + object.isRelease = message.isRelease; + if (message.star != null && message.hasOwnProperty("star")) + object.star = message.star; + if (message.detail != null && message.hasOwnProperty("detail")) + object.detail = $root.cs.GirlsDetail.toObject(message.detail, options); + if (message.images && message.images.length) { + object.images = []; + for (var j = 0; j < message.images.length; ++j) + object.images[j] = $root.cs.ResourceUnlock.toObject(message.images[j], options); + } + if (message.videos && message.videos.length) { + object.videos = []; + for (var j = 0; j < message.videos.length; ++j) + object.videos[j] = $root.cs.ResourceUnlock.toObject(message.videos[j], options); + } + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + object.chatTotalCount = message.chatTotalCount; + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + object.chatRemainCount = message.chatRemainCount; + return object; + }; + + /** + * Converts this GirlData to JSON. + * @function toJSON + * @memberof cs.GirlData + * @instance + * @returns {Object.} JSON object + */ + GirlData.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for GirlData + * @function getTypeUrl + * @memberof cs.GirlData + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GirlData.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.GirlData"; + }; + + return GirlData; + })(); + cs.CSGetGirlListReq = (function() { /** @@ -3002,7 +1739,7 @@ $root.cs = (function() { * Properties of a CSGetGirlListRes. * @memberof cs * @interface ICSGetGirlListRes - * @property {Array.|null} [girls] CSGetGirlListRes girls + * @property {Array.|null} [girls] CSGetGirlListRes girls */ /** @@ -3023,7 +1760,7 @@ $root.cs = (function() { /** * CSGetGirlListRes girls. - * @member {Array.} girls + * @member {Array.} girls * @memberof cs.CSGetGirlListRes * @instance */ @@ -3055,7 +1792,7 @@ $root.cs = (function() { writer = $Writer.create(); if (message.girls != null && message.girls.length) for (var i = 0; i < message.girls.length; ++i) - $root.cs.GirlBrief.encode(message.girls[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.cs.GirlData.encode(message.girls[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -3095,7 +1832,7 @@ $root.cs = (function() { case 1: { if (!(message.girls && message.girls.length)) message.girls = []; - message.girls.push($root.cs.GirlBrief.decode(reader, reader.uint32())); + message.girls.push($root.cs.GirlData.decode(reader, reader.uint32())); break; } default: @@ -3137,7 +1874,7 @@ $root.cs = (function() { if (!Array.isArray(message.girls)) return "girls: array expected"; for (var i = 0; i < message.girls.length; ++i) { - var error = $root.cs.GirlBrief.verify(message.girls[i]); + var error = $root.cs.GirlData.verify(message.girls[i]); if (error) return "girls." + error; } @@ -3164,7 +1901,7 @@ $root.cs = (function() { for (var i = 0; i < object.girls.length; ++i) { if (typeof object.girls[i] !== "object") throw TypeError(".cs.CSGetGirlListRes.girls: object expected"); - message.girls[i] = $root.cs.GirlBrief.fromObject(object.girls[i]); + message.girls[i] = $root.cs.GirlData.fromObject(object.girls[i]); } } return message; @@ -3188,7 +1925,7 @@ $root.cs = (function() { if (message.girls && message.girls.length) { object.girls = []; for (var j = 0; j < message.girls.length; ++j) - object.girls[j] = $root.cs.GirlBrief.toObject(message.girls[j], options); + object.girls[j] = $root.cs.GirlData.toObject(message.girls[j], options); } return object; }; @@ -3433,7 +2170,7 @@ $root.cs = (function() { * Properties of a CSGetGirlDetailRes. * @memberof cs * @interface ICSGetGirlDetailRes - * @property {cs.IGirlDetail|null} [detail] CSGetGirlDetailRes detail + * @property {cs.IGirlData|null} [girl] CSGetGirlDetailRes girl */ /** @@ -3452,12 +2189,12 @@ $root.cs = (function() { } /** - * CSGetGirlDetailRes detail. - * @member {cs.IGirlDetail|null|undefined} detail + * CSGetGirlDetailRes girl. + * @member {cs.IGirlData|null|undefined} girl * @memberof cs.CSGetGirlDetailRes * @instance */ - CSGetGirlDetailRes.prototype.detail = null; + CSGetGirlDetailRes.prototype.girl = null; /** * Creates a new CSGetGirlDetailRes instance using the specified properties. @@ -3483,8 +2220,8 @@ $root.cs = (function() { CSGetGirlDetailRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.detail != null && Object.hasOwnProperty.call(message, "detail")) - $root.cs.GirlDetail.encode(message.detail, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.girl != null && Object.hasOwnProperty.call(message, "girl")) + $root.cs.GirlData.encode(message.girl, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -3522,7 +2259,7 @@ $root.cs = (function() { break; switch (tag >>> 3) { case 1: { - message.detail = $root.cs.GirlDetail.decode(reader, reader.uint32()); + message.girl = $root.cs.GirlData.decode(reader, reader.uint32()); break; } default: @@ -3560,10 +2297,10 @@ $root.cs = (function() { CSGetGirlDetailRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.detail != null && message.hasOwnProperty("detail")) { - var error = $root.cs.GirlDetail.verify(message.detail); + if (message.girl != null && message.hasOwnProperty("girl")) { + var error = $root.cs.GirlData.verify(message.girl); if (error) - return "detail." + error; + return "girl." + error; } return null; }; @@ -3580,10 +2317,10 @@ $root.cs = (function() { if (object instanceof $root.cs.CSGetGirlDetailRes) return object; var message = new $root.cs.CSGetGirlDetailRes(); - if (object.detail != null) { - if (typeof object.detail !== "object") - throw TypeError(".cs.CSGetGirlDetailRes.detail: object expected"); - message.detail = $root.cs.GirlDetail.fromObject(object.detail); + if (object.girl != null) { + if (typeof object.girl !== "object") + throw TypeError(".cs.CSGetGirlDetailRes.girl: object expected"); + message.girl = $root.cs.GirlData.fromObject(object.girl); } return message; }; @@ -3602,9 +2339,9 @@ $root.cs = (function() { options = {}; var object = {}; if (options.defaults) - object.detail = null; - if (message.detail != null && message.hasOwnProperty("detail")) - object.detail = $root.cs.GirlDetail.toObject(message.detail, options); + object.girl = null; + if (message.girl != null && message.hasOwnProperty("girl")) + object.girl = $root.cs.GirlData.toObject(message.girl, options); return object; }; @@ -3637,28 +2374,24 @@ $root.cs = (function() { return CSGetGirlDetailRes; })(); - cs.Good = (function() { + cs.CSUnlockGirlReq = (function() { /** - * Properties of a Good. + * Properties of a CSUnlockGirlReq. * @memberof cs - * @interface IGood - * @property {number|null} [id] Good id - * @property {string|null} [name] Good name - * @property {string|null} [desc] Good desc - * @property {string|null} [price] Good price - * @property {number|null} [count] Good count + * @interface ICSUnlockGirlReq + * @property {number|null} [id] CSUnlockGirlReq id */ /** - * Constructs a new Good. + * Constructs a new CSUnlockGirlReq. * @memberof cs - * @classdesc Represents a Good. - * @implements IGood + * @classdesc Represents a CSUnlockGirlReq. + * @implements ICSUnlockGirlReq * @constructor - * @param {cs.IGood=} [properties] Properties to set + * @param {cs.ICSUnlockGirlReq=} [properties] Properties to set */ - function Good(properties) { + function CSUnlockGirlReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3666,110 +2399,70 @@ $root.cs = (function() { } /** - * Good id. + * CSUnlockGirlReq id. * @member {number} id - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @instance */ - Good.prototype.id = 0; + CSUnlockGirlReq.prototype.id = 0; /** - * Good name. - * @member {string} name - * @memberof cs.Good - * @instance - */ - Good.prototype.name = ""; - - /** - * Good desc. - * @member {string} desc - * @memberof cs.Good - * @instance - */ - Good.prototype.desc = ""; - - /** - * Good price. - * @member {string} price - * @memberof cs.Good - * @instance - */ - Good.prototype.price = ""; - - /** - * Good count. - * @member {number} count - * @memberof cs.Good - * @instance - */ - Good.prototype.count = 0; - - /** - * Creates a new Good instance using the specified properties. + * Creates a new CSUnlockGirlReq instance using the specified properties. * @function create - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static - * @param {cs.IGood=} [properties] Properties to set - * @returns {cs.Good} Good instance + * @param {cs.ICSUnlockGirlReq=} [properties] Properties to set + * @returns {cs.CSUnlockGirlReq} CSUnlockGirlReq instance */ - Good.create = function create(properties) { - return new Good(properties); + CSUnlockGirlReq.create = function create(properties) { + return new CSUnlockGirlReq(properties); }; /** - * Encodes the specified Good message. Does not implicitly {@link cs.Good.verify|verify} messages. + * Encodes the specified CSUnlockGirlReq message. Does not implicitly {@link cs.CSUnlockGirlReq.verify|verify} messages. * @function encode - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static - * @param {cs.IGood} message Good message or plain object to encode + * @param {cs.ICSUnlockGirlReq} message CSUnlockGirlReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Good.encode = function encode(message, writer) { + CSUnlockGirlReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); - if (message.desc != null && Object.hasOwnProperty.call(message, "desc")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.desc); - if (message.price != null && Object.hasOwnProperty.call(message, "price")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.price); - if (message.count != null && Object.hasOwnProperty.call(message, "count")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.count); return writer; }; /** - * Encodes the specified Good message, length delimited. Does not implicitly {@link cs.Good.verify|verify} messages. + * Encodes the specified CSUnlockGirlReq message, length delimited. Does not implicitly {@link cs.CSUnlockGirlReq.verify|verify} messages. * @function encodeDelimited - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static - * @param {cs.IGood} message Good message or plain object to encode + * @param {cs.ICSUnlockGirlReq} message CSUnlockGirlReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Good.encodeDelimited = function encodeDelimited(message, writer) { + CSUnlockGirlReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Good message from the specified reader or buffer. + * Decodes a CSUnlockGirlReq message from the specified reader or buffer. * @function decode - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {cs.Good} Good + * @returns {cs.CSUnlockGirlReq} CSUnlockGirlReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Good.decode = function decode(reader, length, error) { + CSUnlockGirlReq.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.Good(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSUnlockGirlReq(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) @@ -3779,22 +2472,6 @@ $root.cs = (function() { message.id = reader.int32(); break; } - case 2: { - message.name = reader.string(); - break; - } - case 3: { - message.desc = reader.string(); - break; - } - case 4: { - message.price = reader.string(); - break; - } - case 5: { - message.count = reader.int32(); - break; - } default: reader.skipType(tag & 7); break; @@ -3804,154 +2481,121 @@ $root.cs = (function() { }; /** - * Decodes a Good message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockGirlReq message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.Good} Good + * @returns {cs.CSUnlockGirlReq} CSUnlockGirlReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Good.decodeDelimited = function decodeDelimited(reader) { + CSUnlockGirlReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Good message. + * Verifies a CSUnlockGirlReq message. * @function verify - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Good.verify = function verify(message) { + CSUnlockGirlReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.id != null && message.hasOwnProperty("id")) if (!$util.isInteger(message.id)) return "id: integer expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.desc != null && message.hasOwnProperty("desc")) - if (!$util.isString(message.desc)) - return "desc: string expected"; - if (message.price != null && message.hasOwnProperty("price")) - if (!$util.isString(message.price)) - return "price: string expected"; - if (message.count != null && message.hasOwnProperty("count")) - if (!$util.isInteger(message.count)) - return "count: integer expected"; return null; }; /** - * Creates a Good message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockGirlReq message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static * @param {Object.} object Plain object - * @returns {cs.Good} Good + * @returns {cs.CSUnlockGirlReq} CSUnlockGirlReq */ - Good.fromObject = function fromObject(object) { - if (object instanceof $root.cs.Good) + CSUnlockGirlReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSUnlockGirlReq) return object; - var message = new $root.cs.Good(); + var message = new $root.cs.CSUnlockGirlReq(); if (object.id != null) message.id = object.id | 0; - if (object.name != null) - message.name = String(object.name); - if (object.desc != null) - message.desc = String(object.desc); - if (object.price != null) - message.price = String(object.price); - if (object.count != null) - message.count = object.count | 0; return message; }; /** - * Creates a plain object from a Good message. Also converts values to other types if specified. + * Creates a plain object from a CSUnlockGirlReq message. Also converts values to other types if specified. * @function toObject - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static - * @param {cs.Good} message Good + * @param {cs.CSUnlockGirlReq} message CSUnlockGirlReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Good.toObject = function toObject(message, options) { + CSUnlockGirlReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { + if (options.defaults) object.id = 0; - object.name = ""; - object.desc = ""; - object.price = ""; - object.count = 0; - } if (message.id != null && message.hasOwnProperty("id")) object.id = message.id; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.desc != null && message.hasOwnProperty("desc")) - object.desc = message.desc; - if (message.price != null && message.hasOwnProperty("price")) - object.price = message.price; - if (message.count != null && message.hasOwnProperty("count")) - object.count = message.count; return object; }; /** - * Converts this Good to JSON. + * Converts this CSUnlockGirlReq to JSON. * @function toJSON - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @instance * @returns {Object.} JSON object */ - Good.prototype.toJSON = function toJSON() { + CSUnlockGirlReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Good + * Gets the default type url for CSUnlockGirlReq * @function getTypeUrl - * @memberof cs.Good + * @memberof cs.CSUnlockGirlReq * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Good.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CSUnlockGirlReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/cs.Good"; + return typeUrlPrefix + "/cs.CSUnlockGirlReq"; }; - return Good; + return CSUnlockGirlReq; })(); - cs.CSGetShopReq = (function() { + cs.CSUnlockGirlRes = (function() { /** - * Properties of a CSGetShopReq. + * Properties of a CSUnlockGirlRes. * @memberof cs - * @interface ICSGetShopReq + * @interface ICSUnlockGirlRes */ /** - * Constructs a new CSGetShopReq. + * Constructs a new CSUnlockGirlRes. * @memberof cs - * @classdesc Represents a CSGetShopReq. - * @implements ICSGetShopReq + * @classdesc Represents a CSUnlockGirlRes. + * @implements ICSUnlockGirlRes * @constructor - * @param {cs.ICSGetShopReq=} [properties] Properties to set + * @param {cs.ICSUnlockGirlRes=} [properties] Properties to set */ - function CSGetShopReq(properties) { + function CSUnlockGirlRes(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3959,60 +2603,60 @@ $root.cs = (function() { } /** - * Creates a new CSGetShopReq instance using the specified properties. + * Creates a new CSUnlockGirlRes instance using the specified properties. * @function create - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static - * @param {cs.ICSGetShopReq=} [properties] Properties to set - * @returns {cs.CSGetShopReq} CSGetShopReq instance + * @param {cs.ICSUnlockGirlRes=} [properties] Properties to set + * @returns {cs.CSUnlockGirlRes} CSUnlockGirlRes instance */ - CSGetShopReq.create = function create(properties) { - return new CSGetShopReq(properties); + CSUnlockGirlRes.create = function create(properties) { + return new CSUnlockGirlRes(properties); }; /** - * Encodes the specified CSGetShopReq message. Does not implicitly {@link cs.CSGetShopReq.verify|verify} messages. + * Encodes the specified CSUnlockGirlRes message. Does not implicitly {@link cs.CSUnlockGirlRes.verify|verify} messages. * @function encode - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static - * @param {cs.ICSGetShopReq} message CSGetShopReq message or plain object to encode + * @param {cs.ICSUnlockGirlRes} message CSUnlockGirlRes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSGetShopReq.encode = function encode(message, writer) { + CSUnlockGirlRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); return writer; }; /** - * Encodes the specified CSGetShopReq message, length delimited. Does not implicitly {@link cs.CSGetShopReq.verify|verify} messages. + * Encodes the specified CSUnlockGirlRes message, length delimited. Does not implicitly {@link cs.CSUnlockGirlRes.verify|verify} messages. * @function encodeDelimited - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static - * @param {cs.ICSGetShopReq} message CSGetShopReq message or plain object to encode + * @param {cs.ICSUnlockGirlRes} message CSUnlockGirlRes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSGetShopReq.encodeDelimited = function encodeDelimited(message, writer) { + CSUnlockGirlRes.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CSGetShopReq message from the specified reader or buffer. + * Decodes a CSUnlockGirlRes message from the specified reader or buffer. * @function decode - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {cs.CSGetShopReq} CSGetShopReq + * @returns {cs.CSUnlockGirlRes} CSUnlockGirlRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSGetShopReq.decode = function decode(reader, length, error) { + CSUnlockGirlRes.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetShopReq(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSUnlockGirlRes(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) @@ -4027,110 +2671,125 @@ $root.cs = (function() { }; /** - * Decodes a CSGetShopReq message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockGirlRes message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.CSGetShopReq} CSGetShopReq + * @returns {cs.CSUnlockGirlRes} CSUnlockGirlRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSGetShopReq.decodeDelimited = function decodeDelimited(reader) { + CSUnlockGirlRes.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CSGetShopReq message. + * Verifies a CSUnlockGirlRes message. * @function verify - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CSGetShopReq.verify = function verify(message) { + CSUnlockGirlRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; return null; }; /** - * Creates a CSGetShopReq message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockGirlRes message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static * @param {Object.} object Plain object - * @returns {cs.CSGetShopReq} CSGetShopReq + * @returns {cs.CSUnlockGirlRes} CSUnlockGirlRes */ - CSGetShopReq.fromObject = function fromObject(object) { - if (object instanceof $root.cs.CSGetShopReq) + CSUnlockGirlRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSUnlockGirlRes) return object; - return new $root.cs.CSGetShopReq(); + return new $root.cs.CSUnlockGirlRes(); }; /** - * Creates a plain object from a CSGetShopReq message. Also converts values to other types if specified. + * Creates a plain object from a CSUnlockGirlRes message. Also converts values to other types if specified. * @function toObject - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static - * @param {cs.CSGetShopReq} message CSGetShopReq + * @param {cs.CSUnlockGirlRes} message CSUnlockGirlRes * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CSGetShopReq.toObject = function toObject() { + CSUnlockGirlRes.toObject = function toObject() { return {}; }; /** - * Converts this CSGetShopReq to JSON. + * Converts this CSUnlockGirlRes to JSON. * @function toJSON - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @instance * @returns {Object.} JSON object */ - CSGetShopReq.prototype.toJSON = function toJSON() { + CSUnlockGirlRes.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CSGetShopReq + * Gets the default type url for CSUnlockGirlRes * @function getTypeUrl - * @memberof cs.CSGetShopReq + * @memberof cs.CSUnlockGirlRes * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CSGetShopReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CSUnlockGirlRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/cs.CSGetShopReq"; + return typeUrlPrefix + "/cs.CSUnlockGirlRes"; }; - return CSGetShopReq; + return CSUnlockGirlRes; })(); - cs.CSGetShopRes = (function() { + /** + * EnmResType enum. + * @name cs.EnmResType + * @enum {number} + * @property {number} ERT_Image=0 ERT_Image value + * @property {number} ERT_Video=1 ERT_Video value + */ + cs.EnmResType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ERT_Image"] = 0; + values[valuesById[1] = "ERT_Video"] = 1; + return values; + })(); + + cs.CSUnlockResourceReq = (function() { /** - * Properties of a CSGetShopRes. + * Properties of a CSUnlockResourceReq. * @memberof cs - * @interface ICSGetShopRes - * @property {Array.|null} [Goods] CSGetShopRes Goods + * @interface ICSUnlockResourceReq + * @property {number|null} [girlId] CSUnlockResourceReq girlId + * @property {number|null} [resId] CSUnlockResourceReq resId + * @property {number|null} [type] CSUnlockResourceReq type */ /** - * Constructs a new CSGetShopRes. + * Constructs a new CSUnlockResourceReq. * @memberof cs - * @classdesc Represents a CSGetShopRes. - * @implements ICSGetShopRes + * @classdesc Represents a CSUnlockResourceReq. + * @implements ICSUnlockResourceReq * @constructor - * @param {cs.ICSGetShopRes=} [properties] Properties to set + * @param {cs.ICSUnlockResourceReq=} [properties] Properties to set */ - function CSGetShopRes(properties) { - this.Goods = []; + function CSUnlockResourceReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4138,306 +2797,90 @@ $root.cs = (function() { } /** - * CSGetShopRes Goods. - * @member {Array.} Goods - * @memberof cs.CSGetShopRes - * @instance - */ - CSGetShopRes.prototype.Goods = $util.emptyArray; - - /** - * Creates a new CSGetShopRes instance using the specified properties. - * @function create - * @memberof cs.CSGetShopRes - * @static - * @param {cs.ICSGetShopRes=} [properties] Properties to set - * @returns {cs.CSGetShopRes} CSGetShopRes instance - */ - CSGetShopRes.create = function create(properties) { - return new CSGetShopRes(properties); - }; - - /** - * Encodes the specified CSGetShopRes message. Does not implicitly {@link cs.CSGetShopRes.verify|verify} messages. - * @function encode - * @memberof cs.CSGetShopRes - * @static - * @param {cs.ICSGetShopRes} message CSGetShopRes message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetShopRes.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Goods != null && message.Goods.length) - for (var i = 0; i < message.Goods.length; ++i) - $root.cs.Good.encode(message.Goods[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified CSGetShopRes message, length delimited. Does not implicitly {@link cs.CSGetShopRes.verify|verify} messages. - * @function encodeDelimited - * @memberof cs.CSGetShopRes - * @static - * @param {cs.ICSGetShopRes} message CSGetShopRes message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetShopRes.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetShopRes message from the specified reader or buffer. - * @function decode - * @memberof cs.CSGetShopRes - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {cs.CSGetShopRes} CSGetShopRes - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetShopRes.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetShopRes(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - if (!(message.Goods && message.Goods.length)) - message.Goods = []; - message.Goods.push($root.cs.Good.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetShopRes message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof cs.CSGetShopRes - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.CSGetShopRes} CSGetShopRes - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetShopRes.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetShopRes message. - * @function verify - * @memberof cs.CSGetShopRes - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetShopRes.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Goods != null && message.hasOwnProperty("Goods")) { - if (!Array.isArray(message.Goods)) - return "Goods: array expected"; - for (var i = 0; i < message.Goods.length; ++i) { - var error = $root.cs.Good.verify(message.Goods[i]); - if (error) - return "Goods." + error; - } - } - return null; - }; - - /** - * Creates a CSGetShopRes message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof cs.CSGetShopRes - * @static - * @param {Object.} object Plain object - * @returns {cs.CSGetShopRes} CSGetShopRes - */ - CSGetShopRes.fromObject = function fromObject(object) { - if (object instanceof $root.cs.CSGetShopRes) - return object; - var message = new $root.cs.CSGetShopRes(); - if (object.Goods) { - if (!Array.isArray(object.Goods)) - throw TypeError(".cs.CSGetShopRes.Goods: array expected"); - message.Goods = []; - for (var i = 0; i < object.Goods.length; ++i) { - if (typeof object.Goods[i] !== "object") - throw TypeError(".cs.CSGetShopRes.Goods: object expected"); - message.Goods[i] = $root.cs.Good.fromObject(object.Goods[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a CSGetShopRes message. Also converts values to other types if specified. - * @function toObject - * @memberof cs.CSGetShopRes - * @static - * @param {cs.CSGetShopRes} message CSGetShopRes - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetShopRes.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Goods = []; - if (message.Goods && message.Goods.length) { - object.Goods = []; - for (var j = 0; j < message.Goods.length; ++j) - object.Goods[j] = $root.cs.Good.toObject(message.Goods[j], options); - } - return object; - }; - - /** - * Converts this CSGetShopRes to JSON. - * @function toJSON - * @memberof cs.CSGetShopRes - * @instance - * @returns {Object.} JSON object - */ - CSGetShopRes.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetShopRes - * @function getTypeUrl - * @memberof cs.CSGetShopRes - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetShopRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/cs.CSGetShopRes"; - }; - - return CSGetShopRes; - })(); - - cs.CSBuyChatReq = (function() { - - /** - * Properties of a CSBuyChatReq. - * @memberof cs - * @interface ICSBuyChatReq - * @property {number|null} [girlId] CSBuyChatReq girlId - * @property {number|null} [times] CSBuyChatReq times - */ - - /** - * Constructs a new CSBuyChatReq. - * @memberof cs - * @classdesc Represents a CSBuyChatReq. - * @implements ICSBuyChatReq - * @constructor - * @param {cs.ICSBuyChatReq=} [properties] Properties to set - */ - function CSBuyChatReq(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSBuyChatReq girlId. + * CSUnlockResourceReq girlId. * @member {number} girlId - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @instance */ - CSBuyChatReq.prototype.girlId = 0; + CSUnlockResourceReq.prototype.girlId = 0; /** - * CSBuyChatReq times. - * @member {number} times - * @memberof cs.CSBuyChatReq + * CSUnlockResourceReq resId. + * @member {number} resId + * @memberof cs.CSUnlockResourceReq * @instance */ - CSBuyChatReq.prototype.times = 0; + CSUnlockResourceReq.prototype.resId = 0; /** - * Creates a new CSBuyChatReq instance using the specified properties. + * CSUnlockResourceReq type. + * @member {number} type + * @memberof cs.CSUnlockResourceReq + * @instance + */ + CSUnlockResourceReq.prototype.type = 0; + + /** + * Creates a new CSUnlockResourceReq instance using the specified properties. * @function create - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static - * @param {cs.ICSBuyChatReq=} [properties] Properties to set - * @returns {cs.CSBuyChatReq} CSBuyChatReq instance + * @param {cs.ICSUnlockResourceReq=} [properties] Properties to set + * @returns {cs.CSUnlockResourceReq} CSUnlockResourceReq instance */ - CSBuyChatReq.create = function create(properties) { - return new CSBuyChatReq(properties); + CSUnlockResourceReq.create = function create(properties) { + return new CSUnlockResourceReq(properties); }; /** - * Encodes the specified CSBuyChatReq message. Does not implicitly {@link cs.CSBuyChatReq.verify|verify} messages. + * Encodes the specified CSUnlockResourceReq message. Does not implicitly {@link cs.CSUnlockResourceReq.verify|verify} messages. * @function encode - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static - * @param {cs.ICSBuyChatReq} message CSBuyChatReq message or plain object to encode + * @param {cs.ICSUnlockResourceReq} message CSUnlockResourceReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSBuyChatReq.encode = function encode(message, writer) { + CSUnlockResourceReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.girlId != null && Object.hasOwnProperty.call(message, "girlId")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.girlId); - if (message.times != null && Object.hasOwnProperty.call(message, "times")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.times); + if (message.resId != null && Object.hasOwnProperty.call(message, "resId")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resId); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.type); return writer; }; /** - * Encodes the specified CSBuyChatReq message, length delimited. Does not implicitly {@link cs.CSBuyChatReq.verify|verify} messages. + * Encodes the specified CSUnlockResourceReq message, length delimited. Does not implicitly {@link cs.CSUnlockResourceReq.verify|verify} messages. * @function encodeDelimited - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static - * @param {cs.ICSBuyChatReq} message CSBuyChatReq message or plain object to encode + * @param {cs.ICSUnlockResourceReq} message CSUnlockResourceReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSBuyChatReq.encodeDelimited = function encodeDelimited(message, writer) { + CSUnlockResourceReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CSBuyChatReq message from the specified reader or buffer. + * Decodes a CSUnlockResourceReq message from the specified reader or buffer. * @function decode - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {cs.CSBuyChatReq} CSBuyChatReq + * @returns {cs.CSUnlockResourceReq} CSUnlockResourceReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSBuyChatReq.decode = function decode(reader, length, error) { + CSUnlockResourceReq.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSBuyChatReq(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSUnlockResourceReq(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) @@ -4448,7 +2891,11 @@ $root.cs = (function() { break; } case 2: { - message.times = reader.int32(); + message.resId = reader.int32(); + break; + } + case 3: { + message.type = reader.int32(); break; } default: @@ -4460,130 +2907,138 @@ $root.cs = (function() { }; /** - * Decodes a CSBuyChatReq message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockResourceReq message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.CSBuyChatReq} CSBuyChatReq + * @returns {cs.CSUnlockResourceReq} CSUnlockResourceReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSBuyChatReq.decodeDelimited = function decodeDelimited(reader) { + CSUnlockResourceReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CSBuyChatReq message. + * Verifies a CSUnlockResourceReq message. * @function verify - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CSBuyChatReq.verify = function verify(message) { + CSUnlockResourceReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.girlId != null && message.hasOwnProperty("girlId")) if (!$util.isInteger(message.girlId)) return "girlId: integer expected"; - if (message.times != null && message.hasOwnProperty("times")) - if (!$util.isInteger(message.times)) - return "times: integer expected"; + if (message.resId != null && message.hasOwnProperty("resId")) + if (!$util.isInteger(message.resId)) + return "resId: integer expected"; + if (message.type != null && message.hasOwnProperty("type")) + if (!$util.isInteger(message.type)) + return "type: integer expected"; return null; }; /** - * Creates a CSBuyChatReq message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockResourceReq message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static * @param {Object.} object Plain object - * @returns {cs.CSBuyChatReq} CSBuyChatReq + * @returns {cs.CSUnlockResourceReq} CSUnlockResourceReq */ - CSBuyChatReq.fromObject = function fromObject(object) { - if (object instanceof $root.cs.CSBuyChatReq) + CSUnlockResourceReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSUnlockResourceReq) return object; - var message = new $root.cs.CSBuyChatReq(); + var message = new $root.cs.CSUnlockResourceReq(); if (object.girlId != null) message.girlId = object.girlId | 0; - if (object.times != null) - message.times = object.times | 0; + if (object.resId != null) + message.resId = object.resId | 0; + if (object.type != null) + message.type = object.type | 0; return message; }; /** - * Creates a plain object from a CSBuyChatReq message. Also converts values to other types if specified. + * Creates a plain object from a CSUnlockResourceReq message. Also converts values to other types if specified. * @function toObject - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static - * @param {cs.CSBuyChatReq} message CSBuyChatReq + * @param {cs.CSUnlockResourceReq} message CSUnlockResourceReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CSBuyChatReq.toObject = function toObject(message, options) { + CSUnlockResourceReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.girlId = 0; - object.times = 0; + object.resId = 0; + object.type = 0; } if (message.girlId != null && message.hasOwnProperty("girlId")) object.girlId = message.girlId; - if (message.times != null && message.hasOwnProperty("times")) - object.times = message.times; + if (message.resId != null && message.hasOwnProperty("resId")) + object.resId = message.resId; + if (message.type != null && message.hasOwnProperty("type")) + object.type = message.type; return object; }; /** - * Converts this CSBuyChatReq to JSON. + * Converts this CSUnlockResourceReq to JSON. * @function toJSON - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @instance * @returns {Object.} JSON object */ - CSBuyChatReq.prototype.toJSON = function toJSON() { + CSUnlockResourceReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CSBuyChatReq + * Gets the default type url for CSUnlockResourceReq * @function getTypeUrl - * @memberof cs.CSBuyChatReq + * @memberof cs.CSUnlockResourceReq * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CSBuyChatReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CSUnlockResourceReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/cs.CSBuyChatReq"; + return typeUrlPrefix + "/cs.CSUnlockResourceReq"; }; - return CSBuyChatReq; + return CSUnlockResourceReq; })(); - cs.CSBuyChatRes = (function() { + cs.CSUnlockResourceRes = (function() { /** - * Properties of a CSBuyChatRes. + * Properties of a CSUnlockResourceRes. * @memberof cs - * @interface ICSBuyChatRes + * @interface ICSUnlockResourceRes */ /** - * Constructs a new CSBuyChatRes. + * Constructs a new CSUnlockResourceRes. * @memberof cs - * @classdesc Represents a CSBuyChatRes. - * @implements ICSBuyChatRes + * @classdesc Represents a CSUnlockResourceRes. + * @implements ICSUnlockResourceRes * @constructor - * @param {cs.ICSBuyChatRes=} [properties] Properties to set + * @param {cs.ICSUnlockResourceRes=} [properties] Properties to set */ - function CSBuyChatRes(properties) { + function CSUnlockResourceRes(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4591,60 +3046,60 @@ $root.cs = (function() { } /** - * Creates a new CSBuyChatRes instance using the specified properties. + * Creates a new CSUnlockResourceRes instance using the specified properties. * @function create - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static - * @param {cs.ICSBuyChatRes=} [properties] Properties to set - * @returns {cs.CSBuyChatRes} CSBuyChatRes instance + * @param {cs.ICSUnlockResourceRes=} [properties] Properties to set + * @returns {cs.CSUnlockResourceRes} CSUnlockResourceRes instance */ - CSBuyChatRes.create = function create(properties) { - return new CSBuyChatRes(properties); + CSUnlockResourceRes.create = function create(properties) { + return new CSUnlockResourceRes(properties); }; /** - * Encodes the specified CSBuyChatRes message. Does not implicitly {@link cs.CSBuyChatRes.verify|verify} messages. + * Encodes the specified CSUnlockResourceRes message. Does not implicitly {@link cs.CSUnlockResourceRes.verify|verify} messages. * @function encode - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static - * @param {cs.ICSBuyChatRes} message CSBuyChatRes message or plain object to encode + * @param {cs.ICSUnlockResourceRes} message CSUnlockResourceRes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSBuyChatRes.encode = function encode(message, writer) { + CSUnlockResourceRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); return writer; }; /** - * Encodes the specified CSBuyChatRes message, length delimited. Does not implicitly {@link cs.CSBuyChatRes.verify|verify} messages. + * Encodes the specified CSUnlockResourceRes message, length delimited. Does not implicitly {@link cs.CSUnlockResourceRes.verify|verify} messages. * @function encodeDelimited - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static - * @param {cs.ICSBuyChatRes} message CSBuyChatRes message or plain object to encode + * @param {cs.ICSUnlockResourceRes} message CSUnlockResourceRes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CSBuyChatRes.encodeDelimited = function encodeDelimited(message, writer) { + CSUnlockResourceRes.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CSBuyChatRes message from the specified reader or buffer. + * Decodes a CSUnlockResourceRes message from the specified reader or buffer. * @function decode - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {cs.CSBuyChatRes} CSBuyChatRes + * @returns {cs.CSUnlockResourceRes} CSUnlockResourceRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSBuyChatRes.decode = function decode(reader, length, error) { + CSUnlockResourceRes.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSBuyChatRes(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSUnlockResourceRes(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) @@ -4659,89 +3114,495 @@ $root.cs = (function() { }; /** - * Decodes a CSBuyChatRes message from the specified reader or buffer, length delimited. + * Decodes a CSUnlockResourceRes message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {cs.CSBuyChatRes} CSBuyChatRes + * @returns {cs.CSUnlockResourceRes} CSUnlockResourceRes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CSBuyChatRes.decodeDelimited = function decodeDelimited(reader) { + CSUnlockResourceRes.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CSBuyChatRes message. + * Verifies a CSUnlockResourceRes message. * @function verify - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CSBuyChatRes.verify = function verify(message) { + CSUnlockResourceRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; return null; }; /** - * Creates a CSBuyChatRes message from a plain object. Also converts values to their respective internal types. + * Creates a CSUnlockResourceRes message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static * @param {Object.} object Plain object - * @returns {cs.CSBuyChatRes} CSBuyChatRes + * @returns {cs.CSUnlockResourceRes} CSUnlockResourceRes */ - CSBuyChatRes.fromObject = function fromObject(object) { - if (object instanceof $root.cs.CSBuyChatRes) + CSUnlockResourceRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSUnlockResourceRes) return object; - return new $root.cs.CSBuyChatRes(); + return new $root.cs.CSUnlockResourceRes(); }; /** - * Creates a plain object from a CSBuyChatRes message. Also converts values to other types if specified. + * Creates a plain object from a CSUnlockResourceRes message. Also converts values to other types if specified. * @function toObject - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static - * @param {cs.CSBuyChatRes} message CSBuyChatRes + * @param {cs.CSUnlockResourceRes} message CSUnlockResourceRes * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CSBuyChatRes.toObject = function toObject() { + CSUnlockResourceRes.toObject = function toObject() { return {}; }; /** - * Converts this CSBuyChatRes to JSON. + * Converts this CSUnlockResourceRes to JSON. * @function toJSON - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @instance * @returns {Object.} JSON object */ - CSBuyChatRes.prototype.toJSON = function toJSON() { + CSUnlockResourceRes.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CSBuyChatRes + * Gets the default type url for CSUnlockResourceRes * @function getTypeUrl - * @memberof cs.CSBuyChatRes + * @memberof cs.CSUnlockResourceRes * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CSBuyChatRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CSUnlockResourceRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/cs.CSBuyChatRes"; + return typeUrlPrefix + "/cs.CSUnlockResourceRes"; }; - return CSBuyChatRes; + return CSUnlockResourceRes; + })(); + + cs.CSBuyGoodReq = (function() { + + /** + * Properties of a CSBuyGoodReq. + * @memberof cs + * @interface ICSBuyGoodReq + * @property {number|null} [goodId] CSBuyGoodReq goodId + * @property {number|null} [girlId] CSBuyGoodReq girlId + */ + + /** + * Constructs a new CSBuyGoodReq. + * @memberof cs + * @classdesc Represents a CSBuyGoodReq. + * @implements ICSBuyGoodReq + * @constructor + * @param {cs.ICSBuyGoodReq=} [properties] Properties to set + */ + function CSBuyGoodReq(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSBuyGoodReq goodId. + * @member {number} goodId + * @memberof cs.CSBuyGoodReq + * @instance + */ + CSBuyGoodReq.prototype.goodId = 0; + + /** + * CSBuyGoodReq girlId. + * @member {number} girlId + * @memberof cs.CSBuyGoodReq + * @instance + */ + CSBuyGoodReq.prototype.girlId = 0; + + /** + * Creates a new CSBuyGoodReq instance using the specified properties. + * @function create + * @memberof cs.CSBuyGoodReq + * @static + * @param {cs.ICSBuyGoodReq=} [properties] Properties to set + * @returns {cs.CSBuyGoodReq} CSBuyGoodReq instance + */ + CSBuyGoodReq.create = function create(properties) { + return new CSBuyGoodReq(properties); + }; + + /** + * Encodes the specified CSBuyGoodReq message. Does not implicitly {@link cs.CSBuyGoodReq.verify|verify} messages. + * @function encode + * @memberof cs.CSBuyGoodReq + * @static + * @param {cs.ICSBuyGoodReq} message CSBuyGoodReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSBuyGoodReq.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.goodId != null && Object.hasOwnProperty.call(message, "goodId")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.goodId); + if (message.girlId != null && Object.hasOwnProperty.call(message, "girlId")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.girlId); + return writer; + }; + + /** + * Encodes the specified CSBuyGoodReq message, length delimited. Does not implicitly {@link cs.CSBuyGoodReq.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSBuyGoodReq + * @static + * @param {cs.ICSBuyGoodReq} message CSBuyGoodReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSBuyGoodReq.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSBuyGoodReq message from the specified reader or buffer. + * @function decode + * @memberof cs.CSBuyGoodReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSBuyGoodReq} CSBuyGoodReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSBuyGoodReq.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSBuyGoodReq(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.goodId = reader.int32(); + break; + } + case 2: { + message.girlId = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSBuyGoodReq message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSBuyGoodReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSBuyGoodReq} CSBuyGoodReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSBuyGoodReq.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSBuyGoodReq message. + * @function verify + * @memberof cs.CSBuyGoodReq + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSBuyGoodReq.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.goodId != null && message.hasOwnProperty("goodId")) + if (!$util.isInteger(message.goodId)) + return "goodId: integer expected"; + if (message.girlId != null && message.hasOwnProperty("girlId")) + if (!$util.isInteger(message.girlId)) + return "girlId: integer expected"; + return null; + }; + + /** + * Creates a CSBuyGoodReq message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSBuyGoodReq + * @static + * @param {Object.} object Plain object + * @returns {cs.CSBuyGoodReq} CSBuyGoodReq + */ + CSBuyGoodReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSBuyGoodReq) + return object; + var message = new $root.cs.CSBuyGoodReq(); + if (object.goodId != null) + message.goodId = object.goodId | 0; + if (object.girlId != null) + message.girlId = object.girlId | 0; + return message; + }; + + /** + * Creates a plain object from a CSBuyGoodReq message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSBuyGoodReq + * @static + * @param {cs.CSBuyGoodReq} message CSBuyGoodReq + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSBuyGoodReq.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.goodId = 0; + object.girlId = 0; + } + if (message.goodId != null && message.hasOwnProperty("goodId")) + object.goodId = message.goodId; + if (message.girlId != null && message.hasOwnProperty("girlId")) + object.girlId = message.girlId; + return object; + }; + + /** + * Converts this CSBuyGoodReq to JSON. + * @function toJSON + * @memberof cs.CSBuyGoodReq + * @instance + * @returns {Object.} JSON object + */ + CSBuyGoodReq.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSBuyGoodReq + * @function getTypeUrl + * @memberof cs.CSBuyGoodReq + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSBuyGoodReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSBuyGoodReq"; + }; + + return CSBuyGoodReq; + })(); + + cs.CSBuyGoodRes = (function() { + + /** + * Properties of a CSBuyGoodRes. + * @memberof cs + * @interface ICSBuyGoodRes + */ + + /** + * Constructs a new CSBuyGoodRes. + * @memberof cs + * @classdesc Represents a CSBuyGoodRes. + * @implements ICSBuyGoodRes + * @constructor + * @param {cs.ICSBuyGoodRes=} [properties] Properties to set + */ + function CSBuyGoodRes(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new CSBuyGoodRes instance using the specified properties. + * @function create + * @memberof cs.CSBuyGoodRes + * @static + * @param {cs.ICSBuyGoodRes=} [properties] Properties to set + * @returns {cs.CSBuyGoodRes} CSBuyGoodRes instance + */ + CSBuyGoodRes.create = function create(properties) { + return new CSBuyGoodRes(properties); + }; + + /** + * Encodes the specified CSBuyGoodRes message. Does not implicitly {@link cs.CSBuyGoodRes.verify|verify} messages. + * @function encode + * @memberof cs.CSBuyGoodRes + * @static + * @param {cs.ICSBuyGoodRes} message CSBuyGoodRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSBuyGoodRes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified CSBuyGoodRes message, length delimited. Does not implicitly {@link cs.CSBuyGoodRes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSBuyGoodRes + * @static + * @param {cs.ICSBuyGoodRes} message CSBuyGoodRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSBuyGoodRes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSBuyGoodRes message from the specified reader or buffer. + * @function decode + * @memberof cs.CSBuyGoodRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSBuyGoodRes} CSBuyGoodRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSBuyGoodRes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSBuyGoodRes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSBuyGoodRes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSBuyGoodRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSBuyGoodRes} CSBuyGoodRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSBuyGoodRes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSBuyGoodRes message. + * @function verify + * @memberof cs.CSBuyGoodRes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSBuyGoodRes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a CSBuyGoodRes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSBuyGoodRes + * @static + * @param {Object.} object Plain object + * @returns {cs.CSBuyGoodRes} CSBuyGoodRes + */ + CSBuyGoodRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSBuyGoodRes) + return object; + return new $root.cs.CSBuyGoodRes(); + }; + + /** + * Creates a plain object from a CSBuyGoodRes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSBuyGoodRes + * @static + * @param {cs.CSBuyGoodRes} message CSBuyGoodRes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSBuyGoodRes.toObject = function toObject() { + return {}; + }; + + /** + * Converts this CSBuyGoodRes to JSON. + * @function toJSON + * @memberof cs.CSBuyGoodRes + * @instance + * @returns {Object.} JSON object + */ + CSBuyGoodRes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSBuyGoodRes + * @function getTypeUrl + * @memberof cs.CSBuyGoodRes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSBuyGoodRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSBuyGoodRes"; + }; + + return CSBuyGoodRes; })(); cs.CSCreateOrderReq = (function() { @@ -4750,7 +3611,7 @@ $root.cs = (function() { * Properties of a CSCreateOrderReq. * @memberof cs * @interface ICSCreateOrderReq - * @property {number|null} [id] CSCreateOrderReq id + * @property {number|null} [goodId] CSCreateOrderReq goodId */ /** @@ -4769,12 +3630,12 @@ $root.cs = (function() { } /** - * CSCreateOrderReq id. - * @member {number} id + * CSCreateOrderReq goodId. + * @member {number} goodId * @memberof cs.CSCreateOrderReq * @instance */ - CSCreateOrderReq.prototype.id = 0; + CSCreateOrderReq.prototype.goodId = 0; /** * Creates a new CSCreateOrderReq instance using the specified properties. @@ -4800,8 +3661,8 @@ $root.cs = (function() { CSCreateOrderReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.goodId != null && Object.hasOwnProperty.call(message, "goodId")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.goodId); return writer; }; @@ -4839,7 +3700,7 @@ $root.cs = (function() { break; switch (tag >>> 3) { case 1: { - message.id = reader.int32(); + message.goodId = reader.int32(); break; } default: @@ -4877,9 +3738,9 @@ $root.cs = (function() { CSCreateOrderReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) - if (!$util.isInteger(message.id)) - return "id: integer expected"; + if (message.goodId != null && message.hasOwnProperty("goodId")) + if (!$util.isInteger(message.goodId)) + return "goodId: integer expected"; return null; }; @@ -4895,8 +3756,8 @@ $root.cs = (function() { if (object instanceof $root.cs.CSCreateOrderReq) return object; var message = new $root.cs.CSCreateOrderReq(); - if (object.id != null) - message.id = object.id | 0; + if (object.goodId != null) + message.goodId = object.goodId | 0; return message; }; @@ -4914,9 +3775,9 @@ $root.cs = (function() { options = {}; var object = {}; if (options.defaults) - object.id = 0; - if (message.id != null && message.hasOwnProperty("id")) - object.id = message.id; + object.goodId = 0; + if (message.goodId != null && message.hasOwnProperty("goodId")) + object.goodId = message.goodId; return object; }; @@ -5391,7 +4252,7 @@ $root.cs = (function() { * @interface ICSQueryOrderRes * @property {number|null} [status] CSQueryOrderRes status * @property {number|null} [retCode] CSQueryOrderRes retCode - * @property {number|Long|null} [diamond] CSQueryOrderRes diamond + * @property {number|Long|null} [balance] CSQueryOrderRes balance * @property {number|Long|null} [vipExpire] CSQueryOrderRes vipExpire */ @@ -5427,12 +4288,12 @@ $root.cs = (function() { CSQueryOrderRes.prototype.retCode = 0; /** - * CSQueryOrderRes diamond. - * @member {number|Long} diamond + * CSQueryOrderRes balance. + * @member {number|Long} balance * @memberof cs.CSQueryOrderRes * @instance */ - CSQueryOrderRes.prototype.diamond = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + CSQueryOrderRes.prototype.balance = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** * CSQueryOrderRes vipExpire. @@ -5470,8 +4331,8 @@ $root.cs = (function() { writer.uint32(/* id 1, wireType 0 =*/8).int32(message.status); if (message.retCode != null && Object.hasOwnProperty.call(message, "retCode")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.retCode); - if (message.diamond != null && Object.hasOwnProperty.call(message, "diamond")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.diamond); + if (message.balance != null && Object.hasOwnProperty.call(message, "balance")) + writer.uint32(/* id 3, wireType 0 =*/24).int64(message.balance); if (message.vipExpire != null && Object.hasOwnProperty.call(message, "vipExpire")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.vipExpire); return writer; @@ -5519,7 +4380,7 @@ $root.cs = (function() { break; } case 3: { - message.diamond = reader.int64(); + message.balance = reader.int64(); break; } case 4: { @@ -5567,9 +4428,9 @@ $root.cs = (function() { if (message.retCode != null && message.hasOwnProperty("retCode")) if (!$util.isInteger(message.retCode)) return "retCode: integer expected"; - if (message.diamond != null && message.hasOwnProperty("diamond")) - if (!$util.isInteger(message.diamond) && !(message.diamond && $util.isInteger(message.diamond.low) && $util.isInteger(message.diamond.high))) - return "diamond: integer|Long expected"; + if (message.balance != null && message.hasOwnProperty("balance")) + if (!$util.isInteger(message.balance) && !(message.balance && $util.isInteger(message.balance.low) && $util.isInteger(message.balance.high))) + return "balance: integer|Long expected"; if (message.vipExpire != null && message.hasOwnProperty("vipExpire")) if (!$util.isInteger(message.vipExpire) && !(message.vipExpire && $util.isInteger(message.vipExpire.low) && $util.isInteger(message.vipExpire.high))) return "vipExpire: integer|Long expected"; @@ -5592,15 +4453,15 @@ $root.cs = (function() { message.status = object.status | 0; if (object.retCode != null) message.retCode = object.retCode | 0; - if (object.diamond != null) + if (object.balance != null) if ($util.Long) - (message.diamond = $util.Long.fromValue(object.diamond)).unsigned = false; - else if (typeof object.diamond === "string") - message.diamond = parseInt(object.diamond, 10); - else if (typeof object.diamond === "number") - message.diamond = object.diamond; - else if (typeof object.diamond === "object") - message.diamond = new $util.LongBits(object.diamond.low >>> 0, object.diamond.high >>> 0).toNumber(); + (message.balance = $util.Long.fromValue(object.balance)).unsigned = false; + else if (typeof object.balance === "string") + message.balance = parseInt(object.balance, 10); + else if (typeof object.balance === "number") + message.balance = object.balance; + else if (typeof object.balance === "object") + message.balance = new $util.LongBits(object.balance.low >>> 0, object.balance.high >>> 0).toNumber(); if (object.vipExpire != null) if ($util.Long) (message.vipExpire = $util.Long.fromValue(object.vipExpire)).unsigned = false; @@ -5631,9 +4492,9 @@ $root.cs = (function() { object.retCode = 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.diamond = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.balance = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else - object.diamond = options.longs === String ? "0" : 0; + object.balance = options.longs === String ? "0" : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); object.vipExpire = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; @@ -5644,11 +4505,11 @@ $root.cs = (function() { object.status = message.status; if (message.retCode != null && message.hasOwnProperty("retCode")) object.retCode = message.retCode; - if (message.diamond != null && message.hasOwnProperty("diamond")) - if (typeof message.diamond === "number") - object.diamond = options.longs === String ? String(message.diamond) : message.diamond; + if (message.balance != null && message.hasOwnProperty("balance")) + if (typeof message.balance === "number") + object.balance = options.longs === String ? String(message.balance) : message.balance; else - object.diamond = options.longs === String ? $util.Long.prototype.toString.call(message.diamond) : options.longs === Number ? new $util.LongBits(message.diamond.low >>> 0, message.diamond.high >>> 0).toNumber() : message.diamond; + object.balance = options.longs === String ? $util.Long.prototype.toString.call(message.balance) : options.longs === Number ? new $util.LongBits(message.balance.low >>> 0, message.balance.high >>> 0).toNumber() : message.balance; if (message.vipExpire != null && message.hasOwnProperty("vipExpire")) if (typeof message.vipExpire === "number") object.vipExpire = options.longs === String ? String(message.vipExpire) : message.vipExpire; @@ -5921,6 +4782,7 @@ $root.cs = (function() { * Properties of a CSChatMsgReq. * @memberof cs * @interface ICSChatMsgReq + * @property {number|null} [girlId] CSChatMsgReq girlId * @property {Array.|null} [msgs] CSChatMsgReq msgs */ @@ -5940,6 +4802,14 @@ $root.cs = (function() { this[keys[i]] = properties[keys[i]]; } + /** + * CSChatMsgReq girlId. + * @member {number} girlId + * @memberof cs.CSChatMsgReq + * @instance + */ + CSChatMsgReq.prototype.girlId = 0; + /** * CSChatMsgReq msgs. * @member {Array.} msgs @@ -5972,9 +4842,11 @@ $root.cs = (function() { CSChatMsgReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.girlId != null && Object.hasOwnProperty.call(message, "girlId")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.girlId); if (message.msgs != null && message.msgs.length) for (var i = 0; i < message.msgs.length; ++i) - $root.cs.ChatMsg.encode(message.msgs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.cs.ChatMsg.encode(message.msgs[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -6012,6 +4884,10 @@ $root.cs = (function() { break; switch (tag >>> 3) { case 1: { + message.girlId = reader.int32(); + break; + } + case 2: { if (!(message.msgs && message.msgs.length)) message.msgs = []; message.msgs.push($root.cs.ChatMsg.decode(reader, reader.uint32())); @@ -6052,6 +4928,9 @@ $root.cs = (function() { CSChatMsgReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.girlId != null && message.hasOwnProperty("girlId")) + if (!$util.isInteger(message.girlId)) + return "girlId: integer expected"; if (message.msgs != null && message.hasOwnProperty("msgs")) { if (!Array.isArray(message.msgs)) return "msgs: array expected"; @@ -6076,6 +4955,8 @@ $root.cs = (function() { if (object instanceof $root.cs.CSChatMsgReq) return object; var message = new $root.cs.CSChatMsgReq(); + if (object.girlId != null) + message.girlId = object.girlId | 0; if (object.msgs) { if (!Array.isArray(object.msgs)) throw TypeError(".cs.CSChatMsgReq.msgs: array expected"); @@ -6104,6 +4985,10 @@ $root.cs = (function() { var object = {}; if (options.arrays || options.defaults) object.msgs = []; + if (options.defaults) + object.girlId = 0; + if (message.girlId != null && message.hasOwnProperty("girlId")) + object.girlId = message.girlId; if (message.msgs && message.msgs.length) { object.msgs = []; for (var j = 0; j < message.msgs.length; ++j) @@ -6147,6 +5032,8 @@ $root.cs = (function() { * Properties of a CSChatMsgRes. * @memberof cs * @interface ICSChatMsgRes + * @property {number|null} [chatRemainCount] CSChatMsgRes chatRemainCount + * @property {number|null} [chatTotalCount] CSChatMsgRes chatTotalCount */ /** @@ -6164,6 +5051,22 @@ $root.cs = (function() { this[keys[i]] = properties[keys[i]]; } + /** + * CSChatMsgRes chatRemainCount. + * @member {number} chatRemainCount + * @memberof cs.CSChatMsgRes + * @instance + */ + CSChatMsgRes.prototype.chatRemainCount = 0; + + /** + * CSChatMsgRes chatTotalCount. + * @member {number} chatTotalCount + * @memberof cs.CSChatMsgRes + * @instance + */ + CSChatMsgRes.prototype.chatTotalCount = 0; + /** * Creates a new CSChatMsgRes instance using the specified properties. * @function create @@ -6188,6 +5091,10 @@ $root.cs = (function() { CSChatMsgRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.chatRemainCount != null && Object.hasOwnProperty.call(message, "chatRemainCount")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.chatRemainCount); + if (message.chatTotalCount != null && Object.hasOwnProperty.call(message, "chatTotalCount")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.chatTotalCount); return writer; }; @@ -6224,6 +5131,14 @@ $root.cs = (function() { if (tag === error) break; switch (tag >>> 3) { + case 1: { + message.chatRemainCount = reader.int32(); + break; + } + case 2: { + message.chatTotalCount = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -6259,6 +5174,12 @@ $root.cs = (function() { CSChatMsgRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + if (!$util.isInteger(message.chatRemainCount)) + return "chatRemainCount: integer expected"; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + if (!$util.isInteger(message.chatTotalCount)) + return "chatTotalCount: integer expected"; return null; }; @@ -6273,7 +5194,12 @@ $root.cs = (function() { CSChatMsgRes.fromObject = function fromObject(object) { if (object instanceof $root.cs.CSChatMsgRes) return object; - return new $root.cs.CSChatMsgRes(); + var message = new $root.cs.CSChatMsgRes(); + if (object.chatRemainCount != null) + message.chatRemainCount = object.chatRemainCount | 0; + if (object.chatTotalCount != null) + message.chatTotalCount = object.chatTotalCount | 0; + return message; }; /** @@ -6285,8 +5211,19 @@ $root.cs = (function() { * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CSChatMsgRes.toObject = function toObject() { - return {}; + CSChatMsgRes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.chatRemainCount = 0; + object.chatTotalCount = 0; + } + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + object.chatRemainCount = message.chatRemainCount; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + object.chatTotalCount = message.chatTotalCount; + return object; }; /** @@ -6326,6 +5263,7 @@ $root.cs = (function() { * @interface ICSGetChatMsgReq * @property {number|null} [page] CSGetChatMsgReq page * @property {number|null} [limit] CSGetChatMsgReq limit + * @property {number|null} [GirlId] CSGetChatMsgReq GirlId */ /** @@ -6359,6 +5297,14 @@ $root.cs = (function() { */ CSGetChatMsgReq.prototype.limit = 0; + /** + * CSGetChatMsgReq GirlId. + * @member {number} GirlId + * @memberof cs.CSGetChatMsgReq + * @instance + */ + CSGetChatMsgReq.prototype.GirlId = 0; + /** * Creates a new CSGetChatMsgReq instance using the specified properties. * @function create @@ -6387,6 +5333,8 @@ $root.cs = (function() { writer.uint32(/* id 1, wireType 0 =*/8).int32(message.page); if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.limit); + if (message.GirlId != null && Object.hasOwnProperty.call(message, "GirlId")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.GirlId); return writer; }; @@ -6431,6 +5379,10 @@ $root.cs = (function() { message.limit = reader.int32(); break; } + case 3: { + message.GirlId = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -6472,6 +5424,9 @@ $root.cs = (function() { if (message.limit != null && message.hasOwnProperty("limit")) if (!$util.isInteger(message.limit)) return "limit: integer expected"; + if (message.GirlId != null && message.hasOwnProperty("GirlId")) + if (!$util.isInteger(message.GirlId)) + return "GirlId: integer expected"; return null; }; @@ -6491,6 +5446,8 @@ $root.cs = (function() { message.page = object.page | 0; if (object.limit != null) message.limit = object.limit | 0; + if (object.GirlId != null) + message.GirlId = object.GirlId | 0; return message; }; @@ -6510,11 +5467,14 @@ $root.cs = (function() { if (options.defaults) { object.page = 0; object.limit = 0; + object.GirlId = 0; } if (message.page != null && message.hasOwnProperty("page")) object.page = message.page; if (message.limit != null && message.hasOwnProperty("limit")) object.limit = message.limit; + if (message.GirlId != null && message.hasOwnProperty("GirlId")) + object.GirlId = message.GirlId; return object; }; @@ -6554,6 +5514,8 @@ $root.cs = (function() { * @memberof cs * @interface ICSGetChatMsgRes * @property {Array.|null} [msgs] CSGetChatMsgRes msgs + * @property {number|null} [chatRemainCount] CSGetChatMsgRes chatRemainCount + * @property {number|null} [chatTotalCount] CSGetChatMsgRes chatTotalCount */ /** @@ -6580,6 +5542,22 @@ $root.cs = (function() { */ CSGetChatMsgRes.prototype.msgs = $util.emptyArray; + /** + * CSGetChatMsgRes chatRemainCount. + * @member {number} chatRemainCount + * @memberof cs.CSGetChatMsgRes + * @instance + */ + CSGetChatMsgRes.prototype.chatRemainCount = 0; + + /** + * CSGetChatMsgRes chatTotalCount. + * @member {number} chatTotalCount + * @memberof cs.CSGetChatMsgRes + * @instance + */ + CSGetChatMsgRes.prototype.chatTotalCount = 0; + /** * Creates a new CSGetChatMsgRes instance using the specified properties. * @function create @@ -6607,6 +5585,10 @@ $root.cs = (function() { if (message.msgs != null && message.msgs.length) for (var i = 0; i < message.msgs.length; ++i) $root.cs.ChatMsg.encode(message.msgs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.chatRemainCount != null && Object.hasOwnProperty.call(message, "chatRemainCount")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.chatRemainCount); + if (message.chatTotalCount != null && Object.hasOwnProperty.call(message, "chatTotalCount")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.chatTotalCount); return writer; }; @@ -6649,6 +5631,14 @@ $root.cs = (function() { message.msgs.push($root.cs.ChatMsg.decode(reader, reader.uint32())); break; } + case 2: { + message.chatRemainCount = reader.int32(); + break; + } + case 3: { + message.chatTotalCount = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -6693,6 +5683,12 @@ $root.cs = (function() { return "msgs." + error; } } + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + if (!$util.isInteger(message.chatRemainCount)) + return "chatRemainCount: integer expected"; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + if (!$util.isInteger(message.chatTotalCount)) + return "chatTotalCount: integer expected"; return null; }; @@ -6718,6 +5714,10 @@ $root.cs = (function() { message.msgs[i] = $root.cs.ChatMsg.fromObject(object.msgs[i]); } } + if (object.chatRemainCount != null) + message.chatRemainCount = object.chatRemainCount | 0; + if (object.chatTotalCount != null) + message.chatTotalCount = object.chatTotalCount | 0; return message; }; @@ -6736,11 +5736,19 @@ $root.cs = (function() { var object = {}; if (options.arrays || options.defaults) object.msgs = []; + if (options.defaults) { + object.chatRemainCount = 0; + object.chatTotalCount = 0; + } if (message.msgs && message.msgs.length) { object.msgs = []; for (var j = 0; j < message.msgs.length; ++j) object.msgs[j] = $root.cs.ChatMsg.toObject(message.msgs[j], options); } + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + object.chatRemainCount = message.chatRemainCount; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + object.chatTotalCount = message.chatTotalCount; return object; }; @@ -6773,6 +5781,6327 @@ $root.cs = (function() { return CSGetChatMsgRes; })(); + cs.CSGetChatRemainCountReq = (function() { + + /** + * Properties of a CSGetChatRemainCountReq. + * @memberof cs + * @interface ICSGetChatRemainCountReq + * @property {number|null} [id] CSGetChatRemainCountReq id + */ + + /** + * Constructs a new CSGetChatRemainCountReq. + * @memberof cs + * @classdesc Represents a CSGetChatRemainCountReq. + * @implements ICSGetChatRemainCountReq + * @constructor + * @param {cs.ICSGetChatRemainCountReq=} [properties] Properties to set + */ + function CSGetChatRemainCountReq(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSGetChatRemainCountReq id. + * @member {number} id + * @memberof cs.CSGetChatRemainCountReq + * @instance + */ + CSGetChatRemainCountReq.prototype.id = 0; + + /** + * Creates a new CSGetChatRemainCountReq instance using the specified properties. + * @function create + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {cs.ICSGetChatRemainCountReq=} [properties] Properties to set + * @returns {cs.CSGetChatRemainCountReq} CSGetChatRemainCountReq instance + */ + CSGetChatRemainCountReq.create = function create(properties) { + return new CSGetChatRemainCountReq(properties); + }; + + /** + * Encodes the specified CSGetChatRemainCountReq message. Does not implicitly {@link cs.CSGetChatRemainCountReq.verify|verify} messages. + * @function encode + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {cs.ICSGetChatRemainCountReq} message CSGetChatRemainCountReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetChatRemainCountReq.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + return writer; + }; + + /** + * Encodes the specified CSGetChatRemainCountReq message, length delimited. Does not implicitly {@link cs.CSGetChatRemainCountReq.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {cs.ICSGetChatRemainCountReq} message CSGetChatRemainCountReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetChatRemainCountReq.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetChatRemainCountReq message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetChatRemainCountReq} CSGetChatRemainCountReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetChatRemainCountReq.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetChatRemainCountReq(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetChatRemainCountReq message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetChatRemainCountReq} CSGetChatRemainCountReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetChatRemainCountReq.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetChatRemainCountReq message. + * @function verify + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetChatRemainCountReq.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + return null; + }; + + /** + * Creates a CSGetChatRemainCountReq message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetChatRemainCountReq} CSGetChatRemainCountReq + */ + CSGetChatRemainCountReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetChatRemainCountReq) + return object; + var message = new $root.cs.CSGetChatRemainCountReq(); + if (object.id != null) + message.id = object.id | 0; + return message; + }; + + /** + * Creates a plain object from a CSGetChatRemainCountReq message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {cs.CSGetChatRemainCountReq} message CSGetChatRemainCountReq + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetChatRemainCountReq.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.id = 0; + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + return object; + }; + + /** + * Converts this CSGetChatRemainCountReq to JSON. + * @function toJSON + * @memberof cs.CSGetChatRemainCountReq + * @instance + * @returns {Object.} JSON object + */ + CSGetChatRemainCountReq.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetChatRemainCountReq + * @function getTypeUrl + * @memberof cs.CSGetChatRemainCountReq + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetChatRemainCountReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetChatRemainCountReq"; + }; + + return CSGetChatRemainCountReq; + })(); + + cs.CSGetChatRemainCountRes = (function() { + + /** + * Properties of a CSGetChatRemainCountRes. + * @memberof cs + * @interface ICSGetChatRemainCountRes + * @property {number|null} [chatRemainCount] CSGetChatRemainCountRes chatRemainCount + * @property {number|null} [chatTotalCount] CSGetChatRemainCountRes chatTotalCount + */ + + /** + * Constructs a new CSGetChatRemainCountRes. + * @memberof cs + * @classdesc Represents a CSGetChatRemainCountRes. + * @implements ICSGetChatRemainCountRes + * @constructor + * @param {cs.ICSGetChatRemainCountRes=} [properties] Properties to set + */ + function CSGetChatRemainCountRes(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSGetChatRemainCountRes chatRemainCount. + * @member {number} chatRemainCount + * @memberof cs.CSGetChatRemainCountRes + * @instance + */ + CSGetChatRemainCountRes.prototype.chatRemainCount = 0; + + /** + * CSGetChatRemainCountRes chatTotalCount. + * @member {number} chatTotalCount + * @memberof cs.CSGetChatRemainCountRes + * @instance + */ + CSGetChatRemainCountRes.prototype.chatTotalCount = 0; + + /** + * Creates a new CSGetChatRemainCountRes instance using the specified properties. + * @function create + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {cs.ICSGetChatRemainCountRes=} [properties] Properties to set + * @returns {cs.CSGetChatRemainCountRes} CSGetChatRemainCountRes instance + */ + CSGetChatRemainCountRes.create = function create(properties) { + return new CSGetChatRemainCountRes(properties); + }; + + /** + * Encodes the specified CSGetChatRemainCountRes message. Does not implicitly {@link cs.CSGetChatRemainCountRes.verify|verify} messages. + * @function encode + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {cs.ICSGetChatRemainCountRes} message CSGetChatRemainCountRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetChatRemainCountRes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.chatRemainCount != null && Object.hasOwnProperty.call(message, "chatRemainCount")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.chatRemainCount); + if (message.chatTotalCount != null && Object.hasOwnProperty.call(message, "chatTotalCount")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.chatTotalCount); + return writer; + }; + + /** + * Encodes the specified CSGetChatRemainCountRes message, length delimited. Does not implicitly {@link cs.CSGetChatRemainCountRes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {cs.ICSGetChatRemainCountRes} message CSGetChatRemainCountRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetChatRemainCountRes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetChatRemainCountRes message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetChatRemainCountRes} CSGetChatRemainCountRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetChatRemainCountRes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetChatRemainCountRes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.chatRemainCount = reader.int32(); + break; + } + case 2: { + message.chatTotalCount = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetChatRemainCountRes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetChatRemainCountRes} CSGetChatRemainCountRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetChatRemainCountRes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetChatRemainCountRes message. + * @function verify + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetChatRemainCountRes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + if (!$util.isInteger(message.chatRemainCount)) + return "chatRemainCount: integer expected"; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + if (!$util.isInteger(message.chatTotalCount)) + return "chatTotalCount: integer expected"; + return null; + }; + + /** + * Creates a CSGetChatRemainCountRes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetChatRemainCountRes} CSGetChatRemainCountRes + */ + CSGetChatRemainCountRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetChatRemainCountRes) + return object; + var message = new $root.cs.CSGetChatRemainCountRes(); + if (object.chatRemainCount != null) + message.chatRemainCount = object.chatRemainCount | 0; + if (object.chatTotalCount != null) + message.chatTotalCount = object.chatTotalCount | 0; + return message; + }; + + /** + * Creates a plain object from a CSGetChatRemainCountRes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {cs.CSGetChatRemainCountRes} message CSGetChatRemainCountRes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetChatRemainCountRes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.chatRemainCount = 0; + object.chatTotalCount = 0; + } + if (message.chatRemainCount != null && message.hasOwnProperty("chatRemainCount")) + object.chatRemainCount = message.chatRemainCount; + if (message.chatTotalCount != null && message.hasOwnProperty("chatTotalCount")) + object.chatTotalCount = message.chatTotalCount; + return object; + }; + + /** + * Converts this CSGetChatRemainCountRes to JSON. + * @function toJSON + * @memberof cs.CSGetChatRemainCountRes + * @instance + * @returns {Object.} JSON object + */ + CSGetChatRemainCountRes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetChatRemainCountRes + * @function getTypeUrl + * @memberof cs.CSGetChatRemainCountRes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetChatRemainCountRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetChatRemainCountRes"; + }; + + return CSGetChatRemainCountRes; + })(); + + cs.CSGetResConfigReq = (function() { + + /** + * Properties of a CSGetResConfigReq. + * @memberof cs + * @interface ICSGetResConfigReq + * @property {string|null} [resName] CSGetResConfigReq resName + */ + + /** + * Constructs a new CSGetResConfigReq. + * @memberof cs + * @classdesc Represents a CSGetResConfigReq. + * @implements ICSGetResConfigReq + * @constructor + * @param {cs.ICSGetResConfigReq=} [properties] Properties to set + */ + function CSGetResConfigReq(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSGetResConfigReq resName. + * @member {string} resName + * @memberof cs.CSGetResConfigReq + * @instance + */ + CSGetResConfigReq.prototype.resName = ""; + + /** + * Creates a new CSGetResConfigReq instance using the specified properties. + * @function create + * @memberof cs.CSGetResConfigReq + * @static + * @param {cs.ICSGetResConfigReq=} [properties] Properties to set + * @returns {cs.CSGetResConfigReq} CSGetResConfigReq instance + */ + CSGetResConfigReq.create = function create(properties) { + return new CSGetResConfigReq(properties); + }; + + /** + * Encodes the specified CSGetResConfigReq message. Does not implicitly {@link cs.CSGetResConfigReq.verify|verify} messages. + * @function encode + * @memberof cs.CSGetResConfigReq + * @static + * @param {cs.ICSGetResConfigReq} message CSGetResConfigReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetResConfigReq.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.resName != null && Object.hasOwnProperty.call(message, "resName")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.resName); + return writer; + }; + + /** + * Encodes the specified CSGetResConfigReq message, length delimited. Does not implicitly {@link cs.CSGetResConfigReq.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetResConfigReq + * @static + * @param {cs.ICSGetResConfigReq} message CSGetResConfigReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetResConfigReq.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetResConfigReq message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetResConfigReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetResConfigReq} CSGetResConfigReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetResConfigReq.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetResConfigReq(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.resName = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetResConfigReq message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetResConfigReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetResConfigReq} CSGetResConfigReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetResConfigReq.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetResConfigReq message. + * @function verify + * @memberof cs.CSGetResConfigReq + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetResConfigReq.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.resName != null && message.hasOwnProperty("resName")) + if (!$util.isString(message.resName)) + return "resName: string expected"; + return null; + }; + + /** + * Creates a CSGetResConfigReq message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetResConfigReq + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetResConfigReq} CSGetResConfigReq + */ + CSGetResConfigReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetResConfigReq) + return object; + var message = new $root.cs.CSGetResConfigReq(); + if (object.resName != null) + message.resName = String(object.resName); + return message; + }; + + /** + * Creates a plain object from a CSGetResConfigReq message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetResConfigReq + * @static + * @param {cs.CSGetResConfigReq} message CSGetResConfigReq + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetResConfigReq.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.resName = ""; + if (message.resName != null && message.hasOwnProperty("resName")) + object.resName = message.resName; + return object; + }; + + /** + * Converts this CSGetResConfigReq to JSON. + * @function toJSON + * @memberof cs.CSGetResConfigReq + * @instance + * @returns {Object.} JSON object + */ + CSGetResConfigReq.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetResConfigReq + * @function getTypeUrl + * @memberof cs.CSGetResConfigReq + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetResConfigReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetResConfigReq"; + }; + + return CSGetResConfigReq; + })(); + + cs.CSGetResConfigRes = (function() { + + /** + * Properties of a CSGetResConfigRes. + * @memberof cs + * @interface ICSGetResConfigRes + * @property {string|null} [data] CSGetResConfigRes data + */ + + /** + * Constructs a new CSGetResConfigRes. + * @memberof cs + * @classdesc Represents a CSGetResConfigRes. + * @implements ICSGetResConfigRes + * @constructor + * @param {cs.ICSGetResConfigRes=} [properties] Properties to set + */ + function CSGetResConfigRes(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSGetResConfigRes data. + * @member {string} data + * @memberof cs.CSGetResConfigRes + * @instance + */ + CSGetResConfigRes.prototype.data = ""; + + /** + * Creates a new CSGetResConfigRes instance using the specified properties. + * @function create + * @memberof cs.CSGetResConfigRes + * @static + * @param {cs.ICSGetResConfigRes=} [properties] Properties to set + * @returns {cs.CSGetResConfigRes} CSGetResConfigRes instance + */ + CSGetResConfigRes.create = function create(properties) { + return new CSGetResConfigRes(properties); + }; + + /** + * Encodes the specified CSGetResConfigRes message. Does not implicitly {@link cs.CSGetResConfigRes.verify|verify} messages. + * @function encode + * @memberof cs.CSGetResConfigRes + * @static + * @param {cs.ICSGetResConfigRes} message CSGetResConfigRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetResConfigRes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.data != null && Object.hasOwnProperty.call(message, "data")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.data); + return writer; + }; + + /** + * Encodes the specified CSGetResConfigRes message, length delimited. Does not implicitly {@link cs.CSGetResConfigRes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetResConfigRes + * @static + * @param {cs.ICSGetResConfigRes} message CSGetResConfigRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetResConfigRes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetResConfigRes message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetResConfigRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetResConfigRes} CSGetResConfigRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetResConfigRes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetResConfigRes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.data = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetResConfigRes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetResConfigRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetResConfigRes} CSGetResConfigRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetResConfigRes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetResConfigRes message. + * @function verify + * @memberof cs.CSGetResConfigRes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetResConfigRes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.data != null && message.hasOwnProperty("data")) + if (!$util.isString(message.data)) + return "data: string expected"; + return null; + }; + + /** + * Creates a CSGetResConfigRes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetResConfigRes + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetResConfigRes} CSGetResConfigRes + */ + CSGetResConfigRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetResConfigRes) + return object; + var message = new $root.cs.CSGetResConfigRes(); + if (object.data != null) + message.data = String(object.data); + return message; + }; + + /** + * Creates a plain object from a CSGetResConfigRes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetResConfigRes + * @static + * @param {cs.CSGetResConfigRes} message CSGetResConfigRes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetResConfigRes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.data = ""; + if (message.data != null && message.hasOwnProperty("data")) + object.data = message.data; + return object; + }; + + /** + * Converts this CSGetResConfigRes to JSON. + * @function toJSON + * @memberof cs.CSGetResConfigRes + * @instance + * @returns {Object.} JSON object + */ + CSGetResConfigRes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetResConfigRes + * @function getTypeUrl + * @memberof cs.CSGetResConfigRes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetResConfigRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetResConfigRes"; + }; + + return CSGetResConfigRes; + })(); + + /** + * Category enum. + * @name cs.Category + * @enum {number} + * @property {number} Category_mature=0 Category_mature value + * @property {number} Category_eighteen=1 Category_eighteen value + * @property {number} Category_qinfan=2 Category_qinfan value + * @property {number} Category_luanlun=3 Category_luanlun value + * @property {number} Category_bdsm=4 Category_bdsm value + * @property {number} Category_loli=5 Category_loli value + * @property {number} Category_upcomming=6 Category_upcomming value + */ + cs.Category = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "Category_mature"] = 0; + values[valuesById[1] = "Category_eighteen"] = 1; + values[valuesById[2] = "Category_qinfan"] = 2; + values[valuesById[3] = "Category_luanlun"] = 3; + values[valuesById[4] = "Category_bdsm"] = 4; + values[valuesById[5] = "Category_loli"] = 5; + values[valuesById[6] = "Category_upcomming"] = 6; + return values; + })(); + + /** + * PriceType enum. + * @name cs.PriceType + * @enum {number} + * @property {number} PriceType_free=0 PriceType_free value + * @property {number} PriceType_first_time_free=1 PriceType_first_time_free value + * @property {number} PriceType_pay=2 PriceType_pay value + */ + cs.PriceType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "PriceType_free"] = 0; + values[valuesById[1] = "PriceType_first_time_free"] = 1; + values[valuesById[2] = "PriceType_pay"] = 2; + return values; + })(); + + /** + * VideoEmotion enum. + * @name cs.VideoEmotion + * @enum {number} + * @property {number} VideoEmotion_calm_down=0 VideoEmotion_calm_down value + * @property {number} VideoEmotion_arousal=1 VideoEmotion_arousal value + * @property {number} VideoEmotion_desire=2 VideoEmotion_desire value + * @property {number} VideoEmotion_passion=3 VideoEmotion_passion value + * @property {number} VideoEmotion_orgasm=4 VideoEmotion_orgasm value + */ + cs.VideoEmotion = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "VideoEmotion_calm_down"] = 0; + values[valuesById[1] = "VideoEmotion_arousal"] = 1; + values[valuesById[2] = "VideoEmotion_desire"] = 2; + values[valuesById[3] = "VideoEmotion_passion"] = 3; + values[valuesById[4] = "VideoEmotion_orgasm"] = 4; + return values; + })(); + + cs.AiCharacters = (function() { + + /** + * Properties of an AiCharacters. + * @memberof cs + * @interface IAiCharacters + * @property {number|null} [id] AiCharacters id + * @property {string|null} [basePrompt] AiCharacters basePrompt + * @property {string|null} [additionPrompt] AiCharacters additionPrompt + */ + + /** + * Constructs a new AiCharacters. + * @memberof cs + * @classdesc Represents an AiCharacters. + * @implements IAiCharacters + * @constructor + * @param {cs.IAiCharacters=} [properties] Properties to set + */ + function AiCharacters(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AiCharacters id. + * @member {number} id + * @memberof cs.AiCharacters + * @instance + */ + AiCharacters.prototype.id = 0; + + /** + * AiCharacters basePrompt. + * @member {string} basePrompt + * @memberof cs.AiCharacters + * @instance + */ + AiCharacters.prototype.basePrompt = ""; + + /** + * AiCharacters additionPrompt. + * @member {string} additionPrompt + * @memberof cs.AiCharacters + * @instance + */ + AiCharacters.prototype.additionPrompt = ""; + + /** + * Creates a new AiCharacters instance using the specified properties. + * @function create + * @memberof cs.AiCharacters + * @static + * @param {cs.IAiCharacters=} [properties] Properties to set + * @returns {cs.AiCharacters} AiCharacters instance + */ + AiCharacters.create = function create(properties) { + return new AiCharacters(properties); + }; + + /** + * Encodes the specified AiCharacters message. Does not implicitly {@link cs.AiCharacters.verify|verify} messages. + * @function encode + * @memberof cs.AiCharacters + * @static + * @param {cs.IAiCharacters} message AiCharacters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AiCharacters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.basePrompt != null && Object.hasOwnProperty.call(message, "basePrompt")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.basePrompt); + if (message.additionPrompt != null && Object.hasOwnProperty.call(message, "additionPrompt")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.additionPrompt); + return writer; + }; + + /** + * Encodes the specified AiCharacters message, length delimited. Does not implicitly {@link cs.AiCharacters.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.AiCharacters + * @static + * @param {cs.IAiCharacters} message AiCharacters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AiCharacters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AiCharacters message from the specified reader or buffer. + * @function decode + * @memberof cs.AiCharacters + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.AiCharacters} AiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AiCharacters.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.AiCharacters(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.basePrompt = reader.string(); + break; + } + case 3: { + message.additionPrompt = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AiCharacters message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.AiCharacters + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.AiCharacters} AiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AiCharacters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AiCharacters message. + * @function verify + * @memberof cs.AiCharacters + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AiCharacters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.basePrompt != null && message.hasOwnProperty("basePrompt")) + if (!$util.isString(message.basePrompt)) + return "basePrompt: string expected"; + if (message.additionPrompt != null && message.hasOwnProperty("additionPrompt")) + if (!$util.isString(message.additionPrompt)) + return "additionPrompt: string expected"; + return null; + }; + + /** + * Creates an AiCharacters message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.AiCharacters + * @static + * @param {Object.} object Plain object + * @returns {cs.AiCharacters} AiCharacters + */ + AiCharacters.fromObject = function fromObject(object) { + if (object instanceof $root.cs.AiCharacters) + return object; + var message = new $root.cs.AiCharacters(); + if (object.id != null) + message.id = object.id | 0; + if (object.basePrompt != null) + message.basePrompt = String(object.basePrompt); + if (object.additionPrompt != null) + message.additionPrompt = String(object.additionPrompt); + return message; + }; + + /** + * Creates a plain object from an AiCharacters message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.AiCharacters + * @static + * @param {cs.AiCharacters} message AiCharacters + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AiCharacters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.basePrompt = ""; + object.additionPrompt = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.basePrompt != null && message.hasOwnProperty("basePrompt")) + object.basePrompt = message.basePrompt; + if (message.additionPrompt != null && message.hasOwnProperty("additionPrompt")) + object.additionPrompt = message.additionPrompt; + return object; + }; + + /** + * Converts this AiCharacters to JSON. + * @function toJSON + * @memberof cs.AiCharacters + * @instance + * @returns {Object.} JSON object + */ + AiCharacters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for AiCharacters + * @function getTypeUrl + * @memberof cs.AiCharacters + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + AiCharacters.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.AiCharacters"; + }; + + return AiCharacters; + })(); + + cs.Girls = (function() { + + /** + * Properties of a Girls. + * @memberof cs + * @interface IGirls + * @property {number|null} [id] Girls id + * @property {string|null} [nameKey] Girls nameKey + * @property {string|null} [age] Girls age + * @property {cs.Category|null} [category] Girls category + * @property {string|null} [tagKey] Girls tagKey + * @property {cs.PriceType|null} [priceType] Girls priceType + * @property {number|null} [price] Girls price + * @property {number|null} [vipUnlock] Girls vipUnlock + * @property {string|null} [avatarPath] Girls avatarPath + * @property {string|null} [listAvatarPath] Girls listAvatarPath + */ + + /** + * Constructs a new Girls. + * @memberof cs + * @classdesc Represents a Girls. + * @implements IGirls + * @constructor + * @param {cs.IGirls=} [properties] Properties to set + */ + function Girls(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Girls id. + * @member {number} id + * @memberof cs.Girls + * @instance + */ + Girls.prototype.id = 0; + + /** + * Girls nameKey. + * @member {string} nameKey + * @memberof cs.Girls + * @instance + */ + Girls.prototype.nameKey = ""; + + /** + * Girls age. + * @member {string} age + * @memberof cs.Girls + * @instance + */ + Girls.prototype.age = ""; + + /** + * Girls category. + * @member {cs.Category} category + * @memberof cs.Girls + * @instance + */ + Girls.prototype.category = 0; + + /** + * Girls tagKey. + * @member {string} tagKey + * @memberof cs.Girls + * @instance + */ + Girls.prototype.tagKey = ""; + + /** + * Girls priceType. + * @member {cs.PriceType} priceType + * @memberof cs.Girls + * @instance + */ + Girls.prototype.priceType = 0; + + /** + * Girls price. + * @member {number} price + * @memberof cs.Girls + * @instance + */ + Girls.prototype.price = 0; + + /** + * Girls vipUnlock. + * @member {number} vipUnlock + * @memberof cs.Girls + * @instance + */ + Girls.prototype.vipUnlock = 0; + + /** + * Girls avatarPath. + * @member {string} avatarPath + * @memberof cs.Girls + * @instance + */ + Girls.prototype.avatarPath = ""; + + /** + * Girls listAvatarPath. + * @member {string} listAvatarPath + * @memberof cs.Girls + * @instance + */ + Girls.prototype.listAvatarPath = ""; + + /** + * Creates a new Girls instance using the specified properties. + * @function create + * @memberof cs.Girls + * @static + * @param {cs.IGirls=} [properties] Properties to set + * @returns {cs.Girls} Girls instance + */ + Girls.create = function create(properties) { + return new Girls(properties); + }; + + /** + * Encodes the specified Girls message. Does not implicitly {@link cs.Girls.verify|verify} messages. + * @function encode + * @memberof cs.Girls + * @static + * @param {cs.IGirls} message Girls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Girls.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.nameKey != null && Object.hasOwnProperty.call(message, "nameKey")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.nameKey); + if (message.age != null && Object.hasOwnProperty.call(message, "age")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.age); + if (message.category != null && Object.hasOwnProperty.call(message, "category")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.category); + if (message.tagKey != null && Object.hasOwnProperty.call(message, "tagKey")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.tagKey); + if (message.priceType != null && Object.hasOwnProperty.call(message, "priceType")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.priceType); + if (message.price != null && Object.hasOwnProperty.call(message, "price")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.price); + if (message.vipUnlock != null && Object.hasOwnProperty.call(message, "vipUnlock")) + writer.uint32(/* id 8, wireType 0 =*/64).int32(message.vipUnlock); + if (message.avatarPath != null && Object.hasOwnProperty.call(message, "avatarPath")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.avatarPath); + if (message.listAvatarPath != null && Object.hasOwnProperty.call(message, "listAvatarPath")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.listAvatarPath); + return writer; + }; + + /** + * Encodes the specified Girls message, length delimited. Does not implicitly {@link cs.Girls.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.Girls + * @static + * @param {cs.IGirls} message Girls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Girls.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Girls message from the specified reader or buffer. + * @function decode + * @memberof cs.Girls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.Girls} Girls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Girls.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.Girls(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.nameKey = reader.string(); + break; + } + case 3: { + message.age = reader.string(); + break; + } + case 4: { + message.category = reader.int32(); + break; + } + case 5: { + message.tagKey = reader.string(); + break; + } + case 6: { + message.priceType = reader.int32(); + break; + } + case 7: { + message.price = reader.int32(); + break; + } + case 8: { + message.vipUnlock = reader.int32(); + break; + } + case 9: { + message.avatarPath = reader.string(); + break; + } + case 10: { + message.listAvatarPath = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Girls message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.Girls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.Girls} Girls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Girls.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Girls message. + * @function verify + * @memberof cs.Girls + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Girls.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.nameKey != null && message.hasOwnProperty("nameKey")) + if (!$util.isString(message.nameKey)) + return "nameKey: string expected"; + if (message.age != null && message.hasOwnProperty("age")) + if (!$util.isString(message.age)) + return "age: string expected"; + if (message.category != null && message.hasOwnProperty("category")) + switch (message.category) { + default: + return "category: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.tagKey != null && message.hasOwnProperty("tagKey")) + if (!$util.isString(message.tagKey)) + return "tagKey: string expected"; + if (message.priceType != null && message.hasOwnProperty("priceType")) + switch (message.priceType) { + default: + return "priceType: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.price != null && message.hasOwnProperty("price")) + if (!$util.isInteger(message.price)) + return "price: integer expected"; + if (message.vipUnlock != null && message.hasOwnProperty("vipUnlock")) + if (!$util.isInteger(message.vipUnlock)) + return "vipUnlock: integer expected"; + if (message.avatarPath != null && message.hasOwnProperty("avatarPath")) + if (!$util.isString(message.avatarPath)) + return "avatarPath: string expected"; + if (message.listAvatarPath != null && message.hasOwnProperty("listAvatarPath")) + if (!$util.isString(message.listAvatarPath)) + return "listAvatarPath: string expected"; + return null; + }; + + /** + * Creates a Girls message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.Girls + * @static + * @param {Object.} object Plain object + * @returns {cs.Girls} Girls + */ + Girls.fromObject = function fromObject(object) { + if (object instanceof $root.cs.Girls) + return object; + var message = new $root.cs.Girls(); + if (object.id != null) + message.id = object.id | 0; + if (object.nameKey != null) + message.nameKey = String(object.nameKey); + if (object.age != null) + message.age = String(object.age); + switch (object.category) { + default: + if (typeof object.category === "number") { + message.category = object.category; + break; + } + break; + case "Category_mature": + case 0: + message.category = 0; + break; + case "Category_eighteen": + case 1: + message.category = 1; + break; + case "Category_qinfan": + case 2: + message.category = 2; + break; + case "Category_luanlun": + case 3: + message.category = 3; + break; + case "Category_bdsm": + case 4: + message.category = 4; + break; + case "Category_loli": + case 5: + message.category = 5; + break; + case "Category_upcomming": + case 6: + message.category = 6; + break; + } + if (object.tagKey != null) + message.tagKey = String(object.tagKey); + switch (object.priceType) { + default: + if (typeof object.priceType === "number") { + message.priceType = object.priceType; + break; + } + break; + case "PriceType_free": + case 0: + message.priceType = 0; + break; + case "PriceType_first_time_free": + case 1: + message.priceType = 1; + break; + case "PriceType_pay": + case 2: + message.priceType = 2; + break; + } + if (object.price != null) + message.price = object.price | 0; + if (object.vipUnlock != null) + message.vipUnlock = object.vipUnlock | 0; + if (object.avatarPath != null) + message.avatarPath = String(object.avatarPath); + if (object.listAvatarPath != null) + message.listAvatarPath = String(object.listAvatarPath); + return message; + }; + + /** + * Creates a plain object from a Girls message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.Girls + * @static + * @param {cs.Girls} message Girls + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Girls.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.nameKey = ""; + object.age = ""; + object.category = options.enums === String ? "Category_mature" : 0; + object.tagKey = ""; + object.priceType = options.enums === String ? "PriceType_free" : 0; + object.price = 0; + object.vipUnlock = 0; + object.avatarPath = ""; + object.listAvatarPath = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.nameKey != null && message.hasOwnProperty("nameKey")) + object.nameKey = message.nameKey; + if (message.age != null && message.hasOwnProperty("age")) + object.age = message.age; + if (message.category != null && message.hasOwnProperty("category")) + object.category = options.enums === String ? $root.cs.Category[message.category] === undefined ? message.category : $root.cs.Category[message.category] : message.category; + if (message.tagKey != null && message.hasOwnProperty("tagKey")) + object.tagKey = message.tagKey; + if (message.priceType != null && message.hasOwnProperty("priceType")) + object.priceType = options.enums === String ? $root.cs.PriceType[message.priceType] === undefined ? message.priceType : $root.cs.PriceType[message.priceType] : message.priceType; + if (message.price != null && message.hasOwnProperty("price")) + object.price = message.price; + if (message.vipUnlock != null && message.hasOwnProperty("vipUnlock")) + object.vipUnlock = message.vipUnlock; + if (message.avatarPath != null && message.hasOwnProperty("avatarPath")) + object.avatarPath = message.avatarPath; + if (message.listAvatarPath != null && message.hasOwnProperty("listAvatarPath")) + object.listAvatarPath = message.listAvatarPath; + return object; + }; + + /** + * Converts this Girls to JSON. + * @function toJSON + * @memberof cs.Girls + * @instance + * @returns {Object.} JSON object + */ + Girls.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Girls + * @function getTypeUrl + * @memberof cs.Girls + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Girls.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.Girls"; + }; + + return Girls; + })(); + + cs.GirlsDetail = (function() { + + /** + * Properties of a GirlsDetail. + * @memberof cs + * @interface IGirlsDetail + * @property {number|null} [id] GirlsDetail id + * @property {string|null} [detailDesc] GirlsDetail detailDesc + * @property {Array.|null} [commercialImages] GirlsDetail commercialImages + * @property {Array.|null} [commercialVideos] GirlsDetail commercialVideos + */ + + /** + * Constructs a new GirlsDetail. + * @memberof cs + * @classdesc Represents a GirlsDetail. + * @implements IGirlsDetail + * @constructor + * @param {cs.IGirlsDetail=} [properties] Properties to set + */ + function GirlsDetail(properties) { + this.commercialImages = []; + this.commercialVideos = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GirlsDetail id. + * @member {number} id + * @memberof cs.GirlsDetail + * @instance + */ + GirlsDetail.prototype.id = 0; + + /** + * GirlsDetail detailDesc. + * @member {string} detailDesc + * @memberof cs.GirlsDetail + * @instance + */ + GirlsDetail.prototype.detailDesc = ""; + + /** + * GirlsDetail commercialImages. + * @member {Array.} commercialImages + * @memberof cs.GirlsDetail + * @instance + */ + GirlsDetail.prototype.commercialImages = $util.emptyArray; + + /** + * GirlsDetail commercialVideos. + * @member {Array.} commercialVideos + * @memberof cs.GirlsDetail + * @instance + */ + GirlsDetail.prototype.commercialVideos = $util.emptyArray; + + /** + * Creates a new GirlsDetail instance using the specified properties. + * @function create + * @memberof cs.GirlsDetail + * @static + * @param {cs.IGirlsDetail=} [properties] Properties to set + * @returns {cs.GirlsDetail} GirlsDetail instance + */ + GirlsDetail.create = function create(properties) { + return new GirlsDetail(properties); + }; + + /** + * Encodes the specified GirlsDetail message. Does not implicitly {@link cs.GirlsDetail.verify|verify} messages. + * @function encode + * @memberof cs.GirlsDetail + * @static + * @param {cs.IGirlsDetail} message GirlsDetail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GirlsDetail.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.detailDesc != null && Object.hasOwnProperty.call(message, "detailDesc")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.detailDesc); + if (message.commercialImages != null && message.commercialImages.length) + for (var i = 0; i < message.commercialImages.length; ++i) + $root.cs.PurchaseCommercialImage.encode(message.commercialImages[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.commercialVideos != null && message.commercialVideos.length) + for (var i = 0; i < message.commercialVideos.length; ++i) + $root.cs.PurchaseCommercialVideo.encode(message.commercialVideos[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified GirlsDetail message, length delimited. Does not implicitly {@link cs.GirlsDetail.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.GirlsDetail + * @static + * @param {cs.IGirlsDetail} message GirlsDetail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GirlsDetail.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GirlsDetail message from the specified reader or buffer. + * @function decode + * @memberof cs.GirlsDetail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.GirlsDetail} GirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GirlsDetail.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GirlsDetail(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.detailDesc = reader.string(); + break; + } + case 3: { + if (!(message.commercialImages && message.commercialImages.length)) + message.commercialImages = []; + message.commercialImages.push($root.cs.PurchaseCommercialImage.decode(reader, reader.uint32())); + break; + } + case 4: { + if (!(message.commercialVideos && message.commercialVideos.length)) + message.commercialVideos = []; + message.commercialVideos.push($root.cs.PurchaseCommercialVideo.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GirlsDetail message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.GirlsDetail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.GirlsDetail} GirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GirlsDetail.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GirlsDetail message. + * @function verify + * @memberof cs.GirlsDetail + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GirlsDetail.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.detailDesc != null && message.hasOwnProperty("detailDesc")) + if (!$util.isString(message.detailDesc)) + return "detailDesc: string expected"; + if (message.commercialImages != null && message.hasOwnProperty("commercialImages")) { + if (!Array.isArray(message.commercialImages)) + return "commercialImages: array expected"; + for (var i = 0; i < message.commercialImages.length; ++i) { + var error = $root.cs.PurchaseCommercialImage.verify(message.commercialImages[i]); + if (error) + return "commercialImages." + error; + } + } + if (message.commercialVideos != null && message.hasOwnProperty("commercialVideos")) { + if (!Array.isArray(message.commercialVideos)) + return "commercialVideos: array expected"; + for (var i = 0; i < message.commercialVideos.length; ++i) { + var error = $root.cs.PurchaseCommercialVideo.verify(message.commercialVideos[i]); + if (error) + return "commercialVideos." + error; + } + } + return null; + }; + + /** + * Creates a GirlsDetail message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.GirlsDetail + * @static + * @param {Object.} object Plain object + * @returns {cs.GirlsDetail} GirlsDetail + */ + GirlsDetail.fromObject = function fromObject(object) { + if (object instanceof $root.cs.GirlsDetail) + return object; + var message = new $root.cs.GirlsDetail(); + if (object.id != null) + message.id = object.id | 0; + if (object.detailDesc != null) + message.detailDesc = String(object.detailDesc); + if (object.commercialImages) { + if (!Array.isArray(object.commercialImages)) + throw TypeError(".cs.GirlsDetail.commercialImages: array expected"); + message.commercialImages = []; + for (var i = 0; i < object.commercialImages.length; ++i) { + if (typeof object.commercialImages[i] !== "object") + throw TypeError(".cs.GirlsDetail.commercialImages: object expected"); + message.commercialImages[i] = $root.cs.PurchaseCommercialImage.fromObject(object.commercialImages[i]); + } + } + if (object.commercialVideos) { + if (!Array.isArray(object.commercialVideos)) + throw TypeError(".cs.GirlsDetail.commercialVideos: array expected"); + message.commercialVideos = []; + for (var i = 0; i < object.commercialVideos.length; ++i) { + if (typeof object.commercialVideos[i] !== "object") + throw TypeError(".cs.GirlsDetail.commercialVideos: object expected"); + message.commercialVideos[i] = $root.cs.PurchaseCommercialVideo.fromObject(object.commercialVideos[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a GirlsDetail message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.GirlsDetail + * @static + * @param {cs.GirlsDetail} message GirlsDetail + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GirlsDetail.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.commercialImages = []; + object.commercialVideos = []; + } + if (options.defaults) { + object.id = 0; + object.detailDesc = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.detailDesc != null && message.hasOwnProperty("detailDesc")) + object.detailDesc = message.detailDesc; + if (message.commercialImages && message.commercialImages.length) { + object.commercialImages = []; + for (var j = 0; j < message.commercialImages.length; ++j) + object.commercialImages[j] = $root.cs.PurchaseCommercialImage.toObject(message.commercialImages[j], options); + } + if (message.commercialVideos && message.commercialVideos.length) { + object.commercialVideos = []; + for (var j = 0; j < message.commercialVideos.length; ++j) + object.commercialVideos[j] = $root.cs.PurchaseCommercialVideo.toObject(message.commercialVideos[j], options); + } + return object; + }; + + /** + * Converts this GirlsDetail to JSON. + * @function toJSON + * @memberof cs.GirlsDetail + * @instance + * @returns {Object.} JSON object + */ + GirlsDetail.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for GirlsDetail + * @function getTypeUrl + * @memberof cs.GirlsDetail + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GirlsDetail.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.GirlsDetail"; + }; + + return GirlsDetail; + })(); + + cs.GlobalConfig = (function() { + + /** + * Properties of a GlobalConfig. + * @memberof cs + * @interface IGlobalConfig + * @property {string|null} [ApiKey] GlobalConfig ApiKey + * @property {string|null} [emotionApiKey] GlobalConfig emotionApiKey + * @property {string|null} [Model] GlobalConfig Model + * @property {number|null} [Temperature] GlobalConfig Temperature + * @property {number|null} [MaxTokens] GlobalConfig MaxTokens + * @property {number|null} [Timeout] GlobalConfig Timeout + * @property {number|null} [FreeChatTimes] GlobalConfig FreeChatTimes + * @property {number|null} [OnceChatAddScore] GlobalConfig OnceChatAddScore + * @property {number|null} [ScoreExchangeStarLevel] GlobalConfig ScoreExchangeStarLevel + * @property {string|null} [GameName] GlobalConfig GameName + * @property {string|null} [EmotionRating] GlobalConfig EmotionRating + * @property {string|null} [girlBasePrompt] GlobalConfig girlBasePrompt + */ + + /** + * Constructs a new GlobalConfig. + * @memberof cs + * @classdesc Represents a GlobalConfig. + * @implements IGlobalConfig + * @constructor + * @param {cs.IGlobalConfig=} [properties] Properties to set + */ + function GlobalConfig(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GlobalConfig ApiKey. + * @member {string} ApiKey + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.ApiKey = ""; + + /** + * GlobalConfig emotionApiKey. + * @member {string} emotionApiKey + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.emotionApiKey = ""; + + /** + * GlobalConfig Model. + * @member {string} Model + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.Model = ""; + + /** + * GlobalConfig Temperature. + * @member {number} Temperature + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.Temperature = 0; + + /** + * GlobalConfig MaxTokens. + * @member {number} MaxTokens + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.MaxTokens = 0; + + /** + * GlobalConfig Timeout. + * @member {number} Timeout + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.Timeout = 0; + + /** + * GlobalConfig FreeChatTimes. + * @member {number} FreeChatTimes + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.FreeChatTimes = 0; + + /** + * GlobalConfig OnceChatAddScore. + * @member {number} OnceChatAddScore + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.OnceChatAddScore = 0; + + /** + * GlobalConfig ScoreExchangeStarLevel. + * @member {number} ScoreExchangeStarLevel + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.ScoreExchangeStarLevel = 0; + + /** + * GlobalConfig GameName. + * @member {string} GameName + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.GameName = ""; + + /** + * GlobalConfig EmotionRating. + * @member {string} EmotionRating + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.EmotionRating = ""; + + /** + * GlobalConfig girlBasePrompt. + * @member {string} girlBasePrompt + * @memberof cs.GlobalConfig + * @instance + */ + GlobalConfig.prototype.girlBasePrompt = ""; + + /** + * Creates a new GlobalConfig instance using the specified properties. + * @function create + * @memberof cs.GlobalConfig + * @static + * @param {cs.IGlobalConfig=} [properties] Properties to set + * @returns {cs.GlobalConfig} GlobalConfig instance + */ + GlobalConfig.create = function create(properties) { + return new GlobalConfig(properties); + }; + + /** + * Encodes the specified GlobalConfig message. Does not implicitly {@link cs.GlobalConfig.verify|verify} messages. + * @function encode + * @memberof cs.GlobalConfig + * @static + * @param {cs.IGlobalConfig} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GlobalConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ApiKey != null && Object.hasOwnProperty.call(message, "ApiKey")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.ApiKey); + if (message.emotionApiKey != null && Object.hasOwnProperty.call(message, "emotionApiKey")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.emotionApiKey); + if (message.Model != null && Object.hasOwnProperty.call(message, "Model")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.Model); + if (message.Temperature != null && Object.hasOwnProperty.call(message, "Temperature")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.Temperature); + if (message.MaxTokens != null && Object.hasOwnProperty.call(message, "MaxTokens")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.MaxTokens); + if (message.Timeout != null && Object.hasOwnProperty.call(message, "Timeout")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.Timeout); + if (message.FreeChatTimes != null && Object.hasOwnProperty.call(message, "FreeChatTimes")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.FreeChatTimes); + if (message.OnceChatAddScore != null && Object.hasOwnProperty.call(message, "OnceChatAddScore")) + writer.uint32(/* id 8, wireType 0 =*/64).int32(message.OnceChatAddScore); + if (message.ScoreExchangeStarLevel != null && Object.hasOwnProperty.call(message, "ScoreExchangeStarLevel")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.ScoreExchangeStarLevel); + if (message.GameName != null && Object.hasOwnProperty.call(message, "GameName")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.GameName); + if (message.EmotionRating != null && Object.hasOwnProperty.call(message, "EmotionRating")) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.EmotionRating); + if (message.girlBasePrompt != null && Object.hasOwnProperty.call(message, "girlBasePrompt")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.girlBasePrompt); + return writer; + }; + + /** + * Encodes the specified GlobalConfig message, length delimited. Does not implicitly {@link cs.GlobalConfig.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.GlobalConfig + * @static + * @param {cs.IGlobalConfig} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GlobalConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer. + * @function decode + * @memberof cs.GlobalConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GlobalConfig.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.GlobalConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.ApiKey = reader.string(); + break; + } + case 2: { + message.emotionApiKey = reader.string(); + break; + } + case 3: { + message.Model = reader.string(); + break; + } + case 4: { + message.Temperature = reader.float(); + break; + } + case 5: { + message.MaxTokens = reader.int32(); + break; + } + case 6: { + message.Timeout = reader.int32(); + break; + } + case 7: { + message.FreeChatTimes = reader.int32(); + break; + } + case 8: { + message.OnceChatAddScore = reader.int32(); + break; + } + case 9: { + message.ScoreExchangeStarLevel = reader.int32(); + break; + } + case 10: { + message.GameName = reader.string(); + break; + } + case 11: { + message.EmotionRating = reader.string(); + break; + } + case 12: { + message.girlBasePrompt = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.GlobalConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GlobalConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GlobalConfig message. + * @function verify + * @memberof cs.GlobalConfig + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GlobalConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ApiKey != null && message.hasOwnProperty("ApiKey")) + if (!$util.isString(message.ApiKey)) + return "ApiKey: string expected"; + if (message.emotionApiKey != null && message.hasOwnProperty("emotionApiKey")) + if (!$util.isString(message.emotionApiKey)) + return "emotionApiKey: string expected"; + if (message.Model != null && message.hasOwnProperty("Model")) + if (!$util.isString(message.Model)) + return "Model: string expected"; + if (message.Temperature != null && message.hasOwnProperty("Temperature")) + if (typeof message.Temperature !== "number") + return "Temperature: number expected"; + if (message.MaxTokens != null && message.hasOwnProperty("MaxTokens")) + if (!$util.isInteger(message.MaxTokens)) + return "MaxTokens: integer expected"; + if (message.Timeout != null && message.hasOwnProperty("Timeout")) + if (!$util.isInteger(message.Timeout)) + return "Timeout: integer expected"; + if (message.FreeChatTimes != null && message.hasOwnProperty("FreeChatTimes")) + if (!$util.isInteger(message.FreeChatTimes)) + return "FreeChatTimes: integer expected"; + if (message.OnceChatAddScore != null && message.hasOwnProperty("OnceChatAddScore")) + if (!$util.isInteger(message.OnceChatAddScore)) + return "OnceChatAddScore: integer expected"; + if (message.ScoreExchangeStarLevel != null && message.hasOwnProperty("ScoreExchangeStarLevel")) + if (!$util.isInteger(message.ScoreExchangeStarLevel)) + return "ScoreExchangeStarLevel: integer expected"; + if (message.GameName != null && message.hasOwnProperty("GameName")) + if (!$util.isString(message.GameName)) + return "GameName: string expected"; + if (message.EmotionRating != null && message.hasOwnProperty("EmotionRating")) + if (!$util.isString(message.EmotionRating)) + return "EmotionRating: string expected"; + if (message.girlBasePrompt != null && message.hasOwnProperty("girlBasePrompt")) + if (!$util.isString(message.girlBasePrompt)) + return "girlBasePrompt: string expected"; + return null; + }; + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.GlobalConfig + * @static + * @param {Object.} object Plain object + * @returns {cs.GlobalConfig} GlobalConfig + */ + GlobalConfig.fromObject = function fromObject(object) { + if (object instanceof $root.cs.GlobalConfig) + return object; + var message = new $root.cs.GlobalConfig(); + if (object.ApiKey != null) + message.ApiKey = String(object.ApiKey); + if (object.emotionApiKey != null) + message.emotionApiKey = String(object.emotionApiKey); + if (object.Model != null) + message.Model = String(object.Model); + if (object.Temperature != null) + message.Temperature = Number(object.Temperature); + if (object.MaxTokens != null) + message.MaxTokens = object.MaxTokens | 0; + if (object.Timeout != null) + message.Timeout = object.Timeout | 0; + if (object.FreeChatTimes != null) + message.FreeChatTimes = object.FreeChatTimes | 0; + if (object.OnceChatAddScore != null) + message.OnceChatAddScore = object.OnceChatAddScore | 0; + if (object.ScoreExchangeStarLevel != null) + message.ScoreExchangeStarLevel = object.ScoreExchangeStarLevel | 0; + if (object.GameName != null) + message.GameName = String(object.GameName); + if (object.EmotionRating != null) + message.EmotionRating = String(object.EmotionRating); + if (object.girlBasePrompt != null) + message.girlBasePrompt = String(object.girlBasePrompt); + return message; + }; + + /** + * Creates a plain object from a GlobalConfig message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.GlobalConfig + * @static + * @param {cs.GlobalConfig} message GlobalConfig + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GlobalConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.ApiKey = ""; + object.emotionApiKey = ""; + object.Model = ""; + object.Temperature = 0; + object.MaxTokens = 0; + object.Timeout = 0; + object.FreeChatTimes = 0; + object.OnceChatAddScore = 0; + object.ScoreExchangeStarLevel = 0; + object.GameName = ""; + object.EmotionRating = ""; + object.girlBasePrompt = ""; + } + if (message.ApiKey != null && message.hasOwnProperty("ApiKey")) + object.ApiKey = message.ApiKey; + if (message.emotionApiKey != null && message.hasOwnProperty("emotionApiKey")) + object.emotionApiKey = message.emotionApiKey; + if (message.Model != null && message.hasOwnProperty("Model")) + object.Model = message.Model; + if (message.Temperature != null && message.hasOwnProperty("Temperature")) + object.Temperature = options.json && !isFinite(message.Temperature) ? String(message.Temperature) : message.Temperature; + if (message.MaxTokens != null && message.hasOwnProperty("MaxTokens")) + object.MaxTokens = message.MaxTokens; + if (message.Timeout != null && message.hasOwnProperty("Timeout")) + object.Timeout = message.Timeout; + if (message.FreeChatTimes != null && message.hasOwnProperty("FreeChatTimes")) + object.FreeChatTimes = message.FreeChatTimes; + if (message.OnceChatAddScore != null && message.hasOwnProperty("OnceChatAddScore")) + object.OnceChatAddScore = message.OnceChatAddScore; + if (message.ScoreExchangeStarLevel != null && message.hasOwnProperty("ScoreExchangeStarLevel")) + object.ScoreExchangeStarLevel = message.ScoreExchangeStarLevel; + if (message.GameName != null && message.hasOwnProperty("GameName")) + object.GameName = message.GameName; + if (message.EmotionRating != null && message.hasOwnProperty("EmotionRating")) + object.EmotionRating = message.EmotionRating; + if (message.girlBasePrompt != null && message.hasOwnProperty("girlBasePrompt")) + object.girlBasePrompt = message.girlBasePrompt; + return object; + }; + + /** + * Converts this GlobalConfig to JSON. + * @function toJSON + * @memberof cs.GlobalConfig + * @instance + * @returns {Object.} JSON object + */ + GlobalConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for GlobalConfig + * @function getTypeUrl + * @memberof cs.GlobalConfig + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GlobalConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.GlobalConfig"; + }; + + return GlobalConfig; + })(); + + cs.Language = (function() { + + /** + * Properties of a Language. + * @memberof cs + * @interface ILanguage + * @property {string|null} [key] Language key + * @property {string|null} [languageEn] Language languageEn + * @property {string|null} [languageCn] Language languageCn + * @property {string|null} [languageHi] Language languageHi + * @property {string|null} [languageFr] Language languageFr + * @property {string|null} [languageDe] Language languageDe + */ + + /** + * Constructs a new Language. + * @memberof cs + * @classdesc Represents a Language. + * @implements ILanguage + * @constructor + * @param {cs.ILanguage=} [properties] Properties to set + */ + function Language(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Language key. + * @member {string} key + * @memberof cs.Language + * @instance + */ + Language.prototype.key = ""; + + /** + * Language languageEn. + * @member {string} languageEn + * @memberof cs.Language + * @instance + */ + Language.prototype.languageEn = ""; + + /** + * Language languageCn. + * @member {string} languageCn + * @memberof cs.Language + * @instance + */ + Language.prototype.languageCn = ""; + + /** + * Language languageHi. + * @member {string} languageHi + * @memberof cs.Language + * @instance + */ + Language.prototype.languageHi = ""; + + /** + * Language languageFr. + * @member {string} languageFr + * @memberof cs.Language + * @instance + */ + Language.prototype.languageFr = ""; + + /** + * Language languageDe. + * @member {string} languageDe + * @memberof cs.Language + * @instance + */ + Language.prototype.languageDe = ""; + + /** + * Creates a new Language instance using the specified properties. + * @function create + * @memberof cs.Language + * @static + * @param {cs.ILanguage=} [properties] Properties to set + * @returns {cs.Language} Language instance + */ + Language.create = function create(properties) { + return new Language(properties); + }; + + /** + * Encodes the specified Language message. Does not implicitly {@link cs.Language.verify|verify} messages. + * @function encode + * @memberof cs.Language + * @static + * @param {cs.ILanguage} message Language message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Language.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.key); + if (message.languageEn != null && Object.hasOwnProperty.call(message, "languageEn")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.languageEn); + if (message.languageCn != null && Object.hasOwnProperty.call(message, "languageCn")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.languageCn); + if (message.languageHi != null && Object.hasOwnProperty.call(message, "languageHi")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.languageHi); + if (message.languageFr != null && Object.hasOwnProperty.call(message, "languageFr")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.languageFr); + if (message.languageDe != null && Object.hasOwnProperty.call(message, "languageDe")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.languageDe); + return writer; + }; + + /** + * Encodes the specified Language message, length delimited. Does not implicitly {@link cs.Language.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.Language + * @static + * @param {cs.ILanguage} message Language message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Language.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Language message from the specified reader or buffer. + * @function decode + * @memberof cs.Language + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.Language} Language + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Language.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.Language(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.key = reader.string(); + break; + } + case 2: { + message.languageEn = reader.string(); + break; + } + case 3: { + message.languageCn = reader.string(); + break; + } + case 4: { + message.languageHi = reader.string(); + break; + } + case 5: { + message.languageFr = reader.string(); + break; + } + case 6: { + message.languageDe = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Language message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.Language + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.Language} Language + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Language.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Language message. + * @function verify + * @memberof cs.Language + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Language.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!$util.isString(message.key)) + return "key: string expected"; + if (message.languageEn != null && message.hasOwnProperty("languageEn")) + if (!$util.isString(message.languageEn)) + return "languageEn: string expected"; + if (message.languageCn != null && message.hasOwnProperty("languageCn")) + if (!$util.isString(message.languageCn)) + return "languageCn: string expected"; + if (message.languageHi != null && message.hasOwnProperty("languageHi")) + if (!$util.isString(message.languageHi)) + return "languageHi: string expected"; + if (message.languageFr != null && message.hasOwnProperty("languageFr")) + if (!$util.isString(message.languageFr)) + return "languageFr: string expected"; + if (message.languageDe != null && message.hasOwnProperty("languageDe")) + if (!$util.isString(message.languageDe)) + return "languageDe: string expected"; + return null; + }; + + /** + * Creates a Language message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.Language + * @static + * @param {Object.} object Plain object + * @returns {cs.Language} Language + */ + Language.fromObject = function fromObject(object) { + if (object instanceof $root.cs.Language) + return object; + var message = new $root.cs.Language(); + if (object.key != null) + message.key = String(object.key); + if (object.languageEn != null) + message.languageEn = String(object.languageEn); + if (object.languageCn != null) + message.languageCn = String(object.languageCn); + if (object.languageHi != null) + message.languageHi = String(object.languageHi); + if (object.languageFr != null) + message.languageFr = String(object.languageFr); + if (object.languageDe != null) + message.languageDe = String(object.languageDe); + return message; + }; + + /** + * Creates a plain object from a Language message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.Language + * @static + * @param {cs.Language} message Language + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Language.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.key = ""; + object.languageEn = ""; + object.languageCn = ""; + object.languageHi = ""; + object.languageFr = ""; + object.languageDe = ""; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = message.key; + if (message.languageEn != null && message.hasOwnProperty("languageEn")) + object.languageEn = message.languageEn; + if (message.languageCn != null && message.hasOwnProperty("languageCn")) + object.languageCn = message.languageCn; + if (message.languageHi != null && message.hasOwnProperty("languageHi")) + object.languageHi = message.languageHi; + if (message.languageFr != null && message.hasOwnProperty("languageFr")) + object.languageFr = message.languageFr; + if (message.languageDe != null && message.hasOwnProperty("languageDe")) + object.languageDe = message.languageDe; + return object; + }; + + /** + * Converts this Language to JSON. + * @function toJSON + * @memberof cs.Language + * @instance + * @returns {Object.} JSON object + */ + Language.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Language + * @function getTypeUrl + * @memberof cs.Language + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Language.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.Language"; + }; + + return Language; + })(); + + cs.PurchaseCommercialImage = (function() { + + /** + * Properties of a PurchaseCommercialImage. + * @memberof cs + * @interface IPurchaseCommercialImage + * @property {number|null} [id] PurchaseCommercialImage id + * @property {number|null} [imageType] PurchaseCommercialImage imageType + * @property {number|null} [unlockCounts] PurchaseCommercialImage unlockCounts + * @property {number|null} [imagePrice] PurchaseCommercialImage imagePrice + * @property {string|null} [path] PurchaseCommercialImage path + */ + + /** + * Constructs a new PurchaseCommercialImage. + * @memberof cs + * @classdesc Represents a PurchaseCommercialImage. + * @implements IPurchaseCommercialImage + * @constructor + * @param {cs.IPurchaseCommercialImage=} [properties] Properties to set + */ + function PurchaseCommercialImage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PurchaseCommercialImage id. + * @member {number} id + * @memberof cs.PurchaseCommercialImage + * @instance + */ + PurchaseCommercialImage.prototype.id = 0; + + /** + * PurchaseCommercialImage imageType. + * @member {number} imageType + * @memberof cs.PurchaseCommercialImage + * @instance + */ + PurchaseCommercialImage.prototype.imageType = 0; + + /** + * PurchaseCommercialImage unlockCounts. + * @member {number} unlockCounts + * @memberof cs.PurchaseCommercialImage + * @instance + */ + PurchaseCommercialImage.prototype.unlockCounts = 0; + + /** + * PurchaseCommercialImage imagePrice. + * @member {number} imagePrice + * @memberof cs.PurchaseCommercialImage + * @instance + */ + PurchaseCommercialImage.prototype.imagePrice = 0; + + /** + * PurchaseCommercialImage path. + * @member {string} path + * @memberof cs.PurchaseCommercialImage + * @instance + */ + PurchaseCommercialImage.prototype.path = ""; + + /** + * Creates a new PurchaseCommercialImage instance using the specified properties. + * @function create + * @memberof cs.PurchaseCommercialImage + * @static + * @param {cs.IPurchaseCommercialImage=} [properties] Properties to set + * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage instance + */ + PurchaseCommercialImage.create = function create(properties) { + return new PurchaseCommercialImage(properties); + }; + + /** + * Encodes the specified PurchaseCommercialImage message. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. + * @function encode + * @memberof cs.PurchaseCommercialImage + * @static + * @param {cs.IPurchaseCommercialImage} message PurchaseCommercialImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseCommercialImage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.imageType != null && Object.hasOwnProperty.call(message, "imageType")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.imageType); + if (message.unlockCounts != null && Object.hasOwnProperty.call(message, "unlockCounts")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.unlockCounts); + if (message.imagePrice != null && Object.hasOwnProperty.call(message, "imagePrice")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.imagePrice); + if (message.path != null && Object.hasOwnProperty.call(message, "path")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.path); + return writer; + }; + + /** + * Encodes the specified PurchaseCommercialImage message, length delimited. Does not implicitly {@link cs.PurchaseCommercialImage.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.PurchaseCommercialImage + * @static + * @param {cs.IPurchaseCommercialImage} message PurchaseCommercialImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseCommercialImage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PurchaseCommercialImage message from the specified reader or buffer. + * @function decode + * @memberof cs.PurchaseCommercialImage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseCommercialImage.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.PurchaseCommercialImage(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.imageType = reader.int32(); + break; + } + case 3: { + message.unlockCounts = reader.int32(); + break; + } + case 4: { + message.imagePrice = reader.int32(); + break; + } + case 5: { + message.path = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PurchaseCommercialImage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.PurchaseCommercialImage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseCommercialImage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PurchaseCommercialImage message. + * @function verify + * @memberof cs.PurchaseCommercialImage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PurchaseCommercialImage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.imageType != null && message.hasOwnProperty("imageType")) + if (!$util.isInteger(message.imageType)) + return "imageType: integer expected"; + if (message.unlockCounts != null && message.hasOwnProperty("unlockCounts")) + if (!$util.isInteger(message.unlockCounts)) + return "unlockCounts: integer expected"; + if (message.imagePrice != null && message.hasOwnProperty("imagePrice")) + if (!$util.isInteger(message.imagePrice)) + return "imagePrice: integer expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; + return null; + }; + + /** + * Creates a PurchaseCommercialImage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.PurchaseCommercialImage + * @static + * @param {Object.} object Plain object + * @returns {cs.PurchaseCommercialImage} PurchaseCommercialImage + */ + PurchaseCommercialImage.fromObject = function fromObject(object) { + if (object instanceof $root.cs.PurchaseCommercialImage) + return object; + var message = new $root.cs.PurchaseCommercialImage(); + if (object.id != null) + message.id = object.id | 0; + if (object.imageType != null) + message.imageType = object.imageType | 0; + if (object.unlockCounts != null) + message.unlockCounts = object.unlockCounts | 0; + if (object.imagePrice != null) + message.imagePrice = object.imagePrice | 0; + if (object.path != null) + message.path = String(object.path); + return message; + }; + + /** + * Creates a plain object from a PurchaseCommercialImage message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.PurchaseCommercialImage + * @static + * @param {cs.PurchaseCommercialImage} message PurchaseCommercialImage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PurchaseCommercialImage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.imageType = 0; + object.unlockCounts = 0; + object.imagePrice = 0; + object.path = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.imageType != null && message.hasOwnProperty("imageType")) + object.imageType = message.imageType; + if (message.unlockCounts != null && message.hasOwnProperty("unlockCounts")) + object.unlockCounts = message.unlockCounts; + if (message.imagePrice != null && message.hasOwnProperty("imagePrice")) + object.imagePrice = message.imagePrice; + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; + return object; + }; + + /** + * Converts this PurchaseCommercialImage to JSON. + * @function toJSON + * @memberof cs.PurchaseCommercialImage + * @instance + * @returns {Object.} JSON object + */ + PurchaseCommercialImage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PurchaseCommercialImage + * @function getTypeUrl + * @memberof cs.PurchaseCommercialImage + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PurchaseCommercialImage.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.PurchaseCommercialImage"; + }; + + return PurchaseCommercialImage; + })(); + + cs.PurchaseCommercialVideo = (function() { + + /** + * Properties of a PurchaseCommercialVideo. + * @memberof cs + * @interface IPurchaseCommercialVideo + * @property {number|null} [id] PurchaseCommercialVideo id + * @property {string|null} [path] PurchaseCommercialVideo path + * @property {cs.VideoEmotion|null} [emotion] PurchaseCommercialVideo emotion + * @property {number|null} [videoPrice] PurchaseCommercialVideo videoPrice + */ + + /** + * Constructs a new PurchaseCommercialVideo. + * @memberof cs + * @classdesc Represents a PurchaseCommercialVideo. + * @implements IPurchaseCommercialVideo + * @constructor + * @param {cs.IPurchaseCommercialVideo=} [properties] Properties to set + */ + function PurchaseCommercialVideo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PurchaseCommercialVideo id. + * @member {number} id + * @memberof cs.PurchaseCommercialVideo + * @instance + */ + PurchaseCommercialVideo.prototype.id = 0; + + /** + * PurchaseCommercialVideo path. + * @member {string} path + * @memberof cs.PurchaseCommercialVideo + * @instance + */ + PurchaseCommercialVideo.prototype.path = ""; + + /** + * PurchaseCommercialVideo emotion. + * @member {cs.VideoEmotion} emotion + * @memberof cs.PurchaseCommercialVideo + * @instance + */ + PurchaseCommercialVideo.prototype.emotion = 0; + + /** + * PurchaseCommercialVideo videoPrice. + * @member {number} videoPrice + * @memberof cs.PurchaseCommercialVideo + * @instance + */ + PurchaseCommercialVideo.prototype.videoPrice = 0; + + /** + * Creates a new PurchaseCommercialVideo instance using the specified properties. + * @function create + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {cs.IPurchaseCommercialVideo=} [properties] Properties to set + * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo instance + */ + PurchaseCommercialVideo.create = function create(properties) { + return new PurchaseCommercialVideo(properties); + }; + + /** + * Encodes the specified PurchaseCommercialVideo message. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. + * @function encode + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {cs.IPurchaseCommercialVideo} message PurchaseCommercialVideo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseCommercialVideo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.path != null && Object.hasOwnProperty.call(message, "path")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.path); + if (message.emotion != null && Object.hasOwnProperty.call(message, "emotion")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.emotion); + if (message.videoPrice != null && Object.hasOwnProperty.call(message, "videoPrice")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.videoPrice); + return writer; + }; + + /** + * Encodes the specified PurchaseCommercialVideo message, length delimited. Does not implicitly {@link cs.PurchaseCommercialVideo.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {cs.IPurchaseCommercialVideo} message PurchaseCommercialVideo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseCommercialVideo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PurchaseCommercialVideo message from the specified reader or buffer. + * @function decode + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseCommercialVideo.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.PurchaseCommercialVideo(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.path = reader.string(); + break; + } + case 3: { + message.emotion = reader.int32(); + break; + } + case 4: { + message.videoPrice = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PurchaseCommercialVideo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseCommercialVideo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PurchaseCommercialVideo message. + * @function verify + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PurchaseCommercialVideo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; + if (message.emotion != null && message.hasOwnProperty("emotion")) + switch (message.emotion) { + default: + return "emotion: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.videoPrice != null && message.hasOwnProperty("videoPrice")) + if (!$util.isInteger(message.videoPrice)) + return "videoPrice: integer expected"; + return null; + }; + + /** + * Creates a PurchaseCommercialVideo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {Object.} object Plain object + * @returns {cs.PurchaseCommercialVideo} PurchaseCommercialVideo + */ + PurchaseCommercialVideo.fromObject = function fromObject(object) { + if (object instanceof $root.cs.PurchaseCommercialVideo) + return object; + var message = new $root.cs.PurchaseCommercialVideo(); + if (object.id != null) + message.id = object.id | 0; + if (object.path != null) + message.path = String(object.path); + switch (object.emotion) { + default: + if (typeof object.emotion === "number") { + message.emotion = object.emotion; + break; + } + break; + case "VideoEmotion_calm_down": + case 0: + message.emotion = 0; + break; + case "VideoEmotion_arousal": + case 1: + message.emotion = 1; + break; + case "VideoEmotion_desire": + case 2: + message.emotion = 2; + break; + case "VideoEmotion_passion": + case 3: + message.emotion = 3; + break; + case "VideoEmotion_orgasm": + case 4: + message.emotion = 4; + break; + } + if (object.videoPrice != null) + message.videoPrice = object.videoPrice | 0; + return message; + }; + + /** + * Creates a plain object from a PurchaseCommercialVideo message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {cs.PurchaseCommercialVideo} message PurchaseCommercialVideo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PurchaseCommercialVideo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.path = ""; + object.emotion = options.enums === String ? "VideoEmotion_calm_down" : 0; + object.videoPrice = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; + if (message.emotion != null && message.hasOwnProperty("emotion")) + object.emotion = options.enums === String ? $root.cs.VideoEmotion[message.emotion] === undefined ? message.emotion : $root.cs.VideoEmotion[message.emotion] : message.emotion; + if (message.videoPrice != null && message.hasOwnProperty("videoPrice")) + object.videoPrice = message.videoPrice; + return object; + }; + + /** + * Converts this PurchaseCommercialVideo to JSON. + * @function toJSON + * @memberof cs.PurchaseCommercialVideo + * @instance + * @returns {Object.} JSON object + */ + PurchaseCommercialVideo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PurchaseCommercialVideo + * @function getTypeUrl + * @memberof cs.PurchaseCommercialVideo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PurchaseCommercialVideo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.PurchaseCommercialVideo"; + }; + + return PurchaseCommercialVideo; + })(); + + cs.PurchaseConfig = (function() { + + /** + * Properties of a PurchaseConfig. + * @memberof cs + * @interface IPurchaseConfig + * @property {number|null} [id] PurchaseConfig id + * @property {string|null} [name] PurchaseConfig name + * @property {number|null} [count] PurchaseConfig count + * @property {number|null} [price] PurchaseConfig price + */ + + /** + * Constructs a new PurchaseConfig. + * @memberof cs + * @classdesc Represents a PurchaseConfig. + * @implements IPurchaseConfig + * @constructor + * @param {cs.IPurchaseConfig=} [properties] Properties to set + */ + function PurchaseConfig(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PurchaseConfig id. + * @member {number} id + * @memberof cs.PurchaseConfig + * @instance + */ + PurchaseConfig.prototype.id = 0; + + /** + * PurchaseConfig name. + * @member {string} name + * @memberof cs.PurchaseConfig + * @instance + */ + PurchaseConfig.prototype.name = ""; + + /** + * PurchaseConfig count. + * @member {number} count + * @memberof cs.PurchaseConfig + * @instance + */ + PurchaseConfig.prototype.count = 0; + + /** + * PurchaseConfig price. + * @member {number} price + * @memberof cs.PurchaseConfig + * @instance + */ + PurchaseConfig.prototype.price = 0; + + /** + * Creates a new PurchaseConfig instance using the specified properties. + * @function create + * @memberof cs.PurchaseConfig + * @static + * @param {cs.IPurchaseConfig=} [properties] Properties to set + * @returns {cs.PurchaseConfig} PurchaseConfig instance + */ + PurchaseConfig.create = function create(properties) { + return new PurchaseConfig(properties); + }; + + /** + * Encodes the specified PurchaseConfig message. Does not implicitly {@link cs.PurchaseConfig.verify|verify} messages. + * @function encode + * @memberof cs.PurchaseConfig + * @static + * @param {cs.IPurchaseConfig} message PurchaseConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.count != null && Object.hasOwnProperty.call(message, "count")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.count); + if (message.price != null && Object.hasOwnProperty.call(message, "price")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.price); + return writer; + }; + + /** + * Encodes the specified PurchaseConfig message, length delimited. Does not implicitly {@link cs.PurchaseConfig.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.PurchaseConfig + * @static + * @param {cs.IPurchaseConfig} message PurchaseConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PurchaseConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PurchaseConfig message from the specified reader or buffer. + * @function decode + * @memberof cs.PurchaseConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.PurchaseConfig} PurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseConfig.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.PurchaseConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.name = reader.string(); + break; + } + case 3: { + message.count = reader.int32(); + break; + } + case 4: { + message.price = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PurchaseConfig message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.PurchaseConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.PurchaseConfig} PurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PurchaseConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PurchaseConfig message. + * @function verify + * @memberof cs.PurchaseConfig + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PurchaseConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.count != null && message.hasOwnProperty("count")) + if (!$util.isInteger(message.count)) + return "count: integer expected"; + if (message.price != null && message.hasOwnProperty("price")) + if (!$util.isInteger(message.price)) + return "price: integer expected"; + return null; + }; + + /** + * Creates a PurchaseConfig message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.PurchaseConfig + * @static + * @param {Object.} object Plain object + * @returns {cs.PurchaseConfig} PurchaseConfig + */ + PurchaseConfig.fromObject = function fromObject(object) { + if (object instanceof $root.cs.PurchaseConfig) + return object; + var message = new $root.cs.PurchaseConfig(); + if (object.id != null) + message.id = object.id | 0; + if (object.name != null) + message.name = String(object.name); + if (object.count != null) + message.count = object.count | 0; + if (object.price != null) + message.price = object.price | 0; + return message; + }; + + /** + * Creates a plain object from a PurchaseConfig message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.PurchaseConfig + * @static + * @param {cs.PurchaseConfig} message PurchaseConfig + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PurchaseConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.name = ""; + object.count = 0; + object.price = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.count != null && message.hasOwnProperty("count")) + object.count = message.count; + if (message.price != null && message.hasOwnProperty("price")) + object.price = message.price; + return object; + }; + + /** + * Converts this PurchaseConfig to JSON. + * @function toJSON + * @memberof cs.PurchaseConfig + * @instance + * @returns {Object.} JSON object + */ + PurchaseConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PurchaseConfig + * @function getTypeUrl + * @memberof cs.PurchaseConfig + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PurchaseConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.PurchaseConfig"; + }; + + return PurchaseConfig; + })(); + + cs.Themes = (function() { + + /** + * Properties of a Themes. + * @memberof cs + * @interface IThemes + * @property {number|null} [id] Themes id + * @property {string|null} [key] Themes key + * @property {string|null} [name] Themes name + * @property {cs.Category|null} [category] Themes category + * @property {boolean|null} [isRelease] Themes isRelease + * @property {string|null} [path] Themes path + */ + + /** + * Constructs a new Themes. + * @memberof cs + * @classdesc Represents a Themes. + * @implements IThemes + * @constructor + * @param {cs.IThemes=} [properties] Properties to set + */ + function Themes(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Themes id. + * @member {number} id + * @memberof cs.Themes + * @instance + */ + Themes.prototype.id = 0; + + /** + * Themes key. + * @member {string} key + * @memberof cs.Themes + * @instance + */ + Themes.prototype.key = ""; + + /** + * Themes name. + * @member {string} name + * @memberof cs.Themes + * @instance + */ + Themes.prototype.name = ""; + + /** + * Themes category. + * @member {cs.Category} category + * @memberof cs.Themes + * @instance + */ + Themes.prototype.category = 0; + + /** + * Themes isRelease. + * @member {boolean} isRelease + * @memberof cs.Themes + * @instance + */ + Themes.prototype.isRelease = false; + + /** + * Themes path. + * @member {string} path + * @memberof cs.Themes + * @instance + */ + Themes.prototype.path = ""; + + /** + * Creates a new Themes instance using the specified properties. + * @function create + * @memberof cs.Themes + * @static + * @param {cs.IThemes=} [properties] Properties to set + * @returns {cs.Themes} Themes instance + */ + Themes.create = function create(properties) { + return new Themes(properties); + }; + + /** + * Encodes the specified Themes message. Does not implicitly {@link cs.Themes.verify|verify} messages. + * @function encode + * @memberof cs.Themes + * @static + * @param {cs.IThemes} message Themes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Themes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.key); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + if (message.category != null && Object.hasOwnProperty.call(message, "category")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.category); + if (message.isRelease != null && Object.hasOwnProperty.call(message, "isRelease")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.isRelease); + if (message.path != null && Object.hasOwnProperty.call(message, "path")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.path); + return writer; + }; + + /** + * Encodes the specified Themes message, length delimited. Does not implicitly {@link cs.Themes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.Themes + * @static + * @param {cs.IThemes} message Themes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Themes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Themes message from the specified reader or buffer. + * @function decode + * @memberof cs.Themes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.Themes} Themes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Themes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.Themes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.id = reader.int32(); + break; + } + case 2: { + message.key = reader.string(); + break; + } + case 3: { + message.name = reader.string(); + break; + } + case 4: { + message.category = reader.int32(); + break; + } + case 5: { + message.isRelease = reader.bool(); + break; + } + case 6: { + message.path = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Themes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.Themes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.Themes} Themes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Themes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Themes message. + * @function verify + * @memberof cs.Themes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Themes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!$util.isString(message.key)) + return "key: string expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.category != null && message.hasOwnProperty("category")) + switch (message.category) { + default: + return "category: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.isRelease != null && message.hasOwnProperty("isRelease")) + if (typeof message.isRelease !== "boolean") + return "isRelease: boolean expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; + return null; + }; + + /** + * Creates a Themes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.Themes + * @static + * @param {Object.} object Plain object + * @returns {cs.Themes} Themes + */ + Themes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.Themes) + return object; + var message = new $root.cs.Themes(); + if (object.id != null) + message.id = object.id | 0; + if (object.key != null) + message.key = String(object.key); + if (object.name != null) + message.name = String(object.name); + switch (object.category) { + default: + if (typeof object.category === "number") { + message.category = object.category; + break; + } + break; + case "Category_mature": + case 0: + message.category = 0; + break; + case "Category_eighteen": + case 1: + message.category = 1; + break; + case "Category_qinfan": + case 2: + message.category = 2; + break; + case "Category_luanlun": + case 3: + message.category = 3; + break; + case "Category_bdsm": + case 4: + message.category = 4; + break; + case "Category_loli": + case 5: + message.category = 5; + break; + case "Category_upcomming": + case 6: + message.category = 6; + break; + } + if (object.isRelease != null) + message.isRelease = Boolean(object.isRelease); + if (object.path != null) + message.path = String(object.path); + return message; + }; + + /** + * Creates a plain object from a Themes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.Themes + * @static + * @param {cs.Themes} message Themes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Themes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.key = ""; + object.name = ""; + object.category = options.enums === String ? "Category_mature" : 0; + object.isRelease = false; + object.path = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.key != null && message.hasOwnProperty("key")) + object.key = message.key; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.category != null && message.hasOwnProperty("category")) + object.category = options.enums === String ? $root.cs.Category[message.category] === undefined ? message.category : $root.cs.Category[message.category] : message.category; + if (message.isRelease != null && message.hasOwnProperty("isRelease")) + object.isRelease = message.isRelease; + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; + return object; + }; + + /** + * Converts this Themes to JSON. + * @function toJSON + * @memberof cs.Themes + * @instance + * @returns {Object.} JSON object + */ + Themes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Themes + * @function getTypeUrl + * @memberof cs.Themes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Themes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.Themes"; + }; + + return Themes; + })(); + + cs.vector2 = (function() { + + /** + * Properties of a vector2. + * @memberof cs + * @interface Ivector2 + * @property {number|null} [x] vector2 x + * @property {number|null} [y] vector2 y + */ + + /** + * Constructs a new vector2. + * @memberof cs + * @classdesc Represents a vector2. + * @implements Ivector2 + * @constructor + * @param {cs.Ivector2=} [properties] Properties to set + */ + function vector2(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vector2 x. + * @member {number} x + * @memberof cs.vector2 + * @instance + */ + vector2.prototype.x = 0; + + /** + * vector2 y. + * @member {number} y + * @memberof cs.vector2 + * @instance + */ + vector2.prototype.y = 0; + + /** + * Creates a new vector2 instance using the specified properties. + * @function create + * @memberof cs.vector2 + * @static + * @param {cs.Ivector2=} [properties] Properties to set + * @returns {cs.vector2} vector2 instance + */ + vector2.create = function create(properties) { + return new vector2(properties); + }; + + /** + * Encodes the specified vector2 message. Does not implicitly {@link cs.vector2.verify|verify} messages. + * @function encode + * @memberof cs.vector2 + * @static + * @param {cs.Ivector2} message vector2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector2.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && Object.hasOwnProperty.call(message, "x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && Object.hasOwnProperty.call(message, "y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + return writer; + }; + + /** + * Encodes the specified vector2 message, length delimited. Does not implicitly {@link cs.vector2.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.vector2 + * @static + * @param {cs.Ivector2} message vector2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vector2 message from the specified reader or buffer. + * @function decode + * @memberof cs.vector2 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.vector2} vector2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector2.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.vector2(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.x = reader.float(); + break; + } + case 2: { + message.y = reader.float(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vector2 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.vector2 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.vector2} vector2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vector2 message. + * @function verify + * @memberof cs.vector2 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + vector2.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + return null; + }; + + /** + * Creates a vector2 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.vector2 + * @static + * @param {Object.} object Plain object + * @returns {cs.vector2} vector2 + */ + vector2.fromObject = function fromObject(object) { + if (object instanceof $root.cs.vector2) + return object; + var message = new $root.cs.vector2(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + return message; + }; + + /** + * Creates a plain object from a vector2 message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.vector2 + * @static + * @param {cs.vector2} message vector2 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vector2.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = options.json && !isFinite(message.x) ? String(message.x) : message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = options.json && !isFinite(message.y) ? String(message.y) : message.y; + return object; + }; + + /** + * Converts this vector2 to JSON. + * @function toJSON + * @memberof cs.vector2 + * @instance + * @returns {Object.} JSON object + */ + vector2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for vector2 + * @function getTypeUrl + * @memberof cs.vector2 + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + vector2.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.vector2"; + }; + + return vector2; + })(); + + cs.vector3 = (function() { + + /** + * Properties of a vector3. + * @memberof cs + * @interface Ivector3 + * @property {number|null} [x] vector3 x + * @property {number|null} [y] vector3 y + * @property {number|null} [z] vector3 z + */ + + /** + * Constructs a new vector3. + * @memberof cs + * @classdesc Represents a vector3. + * @implements Ivector3 + * @constructor + * @param {cs.Ivector3=} [properties] Properties to set + */ + function vector3(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vector3 x. + * @member {number} x + * @memberof cs.vector3 + * @instance + */ + vector3.prototype.x = 0; + + /** + * vector3 y. + * @member {number} y + * @memberof cs.vector3 + * @instance + */ + vector3.prototype.y = 0; + + /** + * vector3 z. + * @member {number} z + * @memberof cs.vector3 + * @instance + */ + vector3.prototype.z = 0; + + /** + * Creates a new vector3 instance using the specified properties. + * @function create + * @memberof cs.vector3 + * @static + * @param {cs.Ivector3=} [properties] Properties to set + * @returns {cs.vector3} vector3 instance + */ + vector3.create = function create(properties) { + return new vector3(properties); + }; + + /** + * Encodes the specified vector3 message. Does not implicitly {@link cs.vector3.verify|verify} messages. + * @function encode + * @memberof cs.vector3 + * @static + * @param {cs.Ivector3} message vector3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector3.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && Object.hasOwnProperty.call(message, "x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && Object.hasOwnProperty.call(message, "y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && Object.hasOwnProperty.call(message, "z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + return writer; + }; + + /** + * Encodes the specified vector3 message, length delimited. Does not implicitly {@link cs.vector3.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.vector3 + * @static + * @param {cs.Ivector3} message vector3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector3.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vector3 message from the specified reader or buffer. + * @function decode + * @memberof cs.vector3 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.vector3} vector3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector3.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.vector3(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.x = reader.float(); + break; + } + case 2: { + message.y = reader.float(); + break; + } + case 3: { + message.z = reader.float(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vector3 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.vector3 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.vector3} vector3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector3.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vector3 message. + * @function verify + * @memberof cs.vector3 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + vector3.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates a vector3 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.vector3 + * @static + * @param {Object.} object Plain object + * @returns {cs.vector3} vector3 + */ + vector3.fromObject = function fromObject(object) { + if (object instanceof $root.cs.vector3) + return object; + var message = new $root.cs.vector3(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates a plain object from a vector3 message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.vector3 + * @static + * @param {cs.vector3} message vector3 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vector3.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = options.json && !isFinite(message.x) ? String(message.x) : message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = options.json && !isFinite(message.y) ? String(message.y) : message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = options.json && !isFinite(message.z) ? String(message.z) : message.z; + return object; + }; + + /** + * Converts this vector3 to JSON. + * @function toJSON + * @memberof cs.vector3 + * @instance + * @returns {Object.} JSON object + */ + vector3.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for vector3 + * @function getTypeUrl + * @memberof cs.vector3 + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + vector3.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.vector3"; + }; + + return vector3; + })(); + + cs.vector4 = (function() { + + /** + * Properties of a vector4. + * @memberof cs + * @interface Ivector4 + * @property {number|null} [x] vector4 x + * @property {number|null} [y] vector4 y + * @property {number|null} [z] vector4 z + * @property {number|null} [w] vector4 w + */ + + /** + * Constructs a new vector4. + * @memberof cs + * @classdesc Represents a vector4. + * @implements Ivector4 + * @constructor + * @param {cs.Ivector4=} [properties] Properties to set + */ + function vector4(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vector4 x. + * @member {number} x + * @memberof cs.vector4 + * @instance + */ + vector4.prototype.x = 0; + + /** + * vector4 y. + * @member {number} y + * @memberof cs.vector4 + * @instance + */ + vector4.prototype.y = 0; + + /** + * vector4 z. + * @member {number} z + * @memberof cs.vector4 + * @instance + */ + vector4.prototype.z = 0; + + /** + * vector4 w. + * @member {number} w + * @memberof cs.vector4 + * @instance + */ + vector4.prototype.w = 0; + + /** + * Creates a new vector4 instance using the specified properties. + * @function create + * @memberof cs.vector4 + * @static + * @param {cs.Ivector4=} [properties] Properties to set + * @returns {cs.vector4} vector4 instance + */ + vector4.create = function create(properties) { + return new vector4(properties); + }; + + /** + * Encodes the specified vector4 message. Does not implicitly {@link cs.vector4.verify|verify} messages. + * @function encode + * @memberof cs.vector4 + * @static + * @param {cs.Ivector4} message vector4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector4.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && Object.hasOwnProperty.call(message, "x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && Object.hasOwnProperty.call(message, "y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && Object.hasOwnProperty.call(message, "z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + if (message.w != null && Object.hasOwnProperty.call(message, "w")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.w); + return writer; + }; + + /** + * Encodes the specified vector4 message, length delimited. Does not implicitly {@link cs.vector4.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.vector4 + * @static + * @param {cs.Ivector4} message vector4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vector4.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vector4 message from the specified reader or buffer. + * @function decode + * @memberof cs.vector4 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.vector4} vector4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector4.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.vector4(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.x = reader.float(); + break; + } + case 2: { + message.y = reader.float(); + break; + } + case 3: { + message.z = reader.float(); + break; + } + case 4: { + message.w = reader.float(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vector4 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.vector4 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.vector4} vector4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vector4.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vector4 message. + * @function verify + * @memberof cs.vector4 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + vector4.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + if (message.w != null && message.hasOwnProperty("w")) + if (typeof message.w !== "number") + return "w: number expected"; + return null; + }; + + /** + * Creates a vector4 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.vector4 + * @static + * @param {Object.} object Plain object + * @returns {cs.vector4} vector4 + */ + vector4.fromObject = function fromObject(object) { + if (object instanceof $root.cs.vector4) + return object; + var message = new $root.cs.vector4(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + if (object.w != null) + message.w = Number(object.w); + return message; + }; + + /** + * Creates a plain object from a vector4 message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.vector4 + * @static + * @param {cs.vector4} message vector4 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vector4.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + object.w = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = options.json && !isFinite(message.x) ? String(message.x) : message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = options.json && !isFinite(message.y) ? String(message.y) : message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = options.json && !isFinite(message.z) ? String(message.z) : message.z; + if (message.w != null && message.hasOwnProperty("w")) + object.w = options.json && !isFinite(message.w) ? String(message.w) : message.w; + return object; + }; + + /** + * Converts this vector4 to JSON. + * @function toJSON + * @memberof cs.vector4 + * @instance + * @returns {Object.} JSON object + */ + vector4.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for vector4 + * @function getTypeUrl + * @memberof cs.vector4 + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + vector4.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.vector4"; + }; + + return vector4; + })(); + + cs.TbLanguage = (function() { + + /** + * Properties of a TbLanguage. + * @memberof cs + * @interface ITbLanguage + * @property {Array.|null} [items] TbLanguage items + */ + + /** + * Constructs a new TbLanguage. + * @memberof cs + * @classdesc Represents a TbLanguage. + * @implements ITbLanguage + * @constructor + * @param {cs.ITbLanguage=} [properties] Properties to set + */ + function TbLanguage(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbLanguage items. + * @member {Array.} items + * @memberof cs.TbLanguage + * @instance + */ + TbLanguage.prototype.items = $util.emptyArray; + + /** + * Creates a new TbLanguage instance using the specified properties. + * @function create + * @memberof cs.TbLanguage + * @static + * @param {cs.ITbLanguage=} [properties] Properties to set + * @returns {cs.TbLanguage} TbLanguage instance + */ + TbLanguage.create = function create(properties) { + return new TbLanguage(properties); + }; + + /** + * Encodes the specified TbLanguage message. Does not implicitly {@link cs.TbLanguage.verify|verify} messages. + * @function encode + * @memberof cs.TbLanguage + * @static + * @param {cs.ITbLanguage} message TbLanguage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbLanguage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.Language.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbLanguage message, length delimited. Does not implicitly {@link cs.TbLanguage.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbLanguage + * @static + * @param {cs.ITbLanguage} message TbLanguage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbLanguage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbLanguage message from the specified reader or buffer. + * @function decode + * @memberof cs.TbLanguage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbLanguage} TbLanguage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbLanguage.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbLanguage(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.Language.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbLanguage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbLanguage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbLanguage} TbLanguage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbLanguage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbLanguage message. + * @function verify + * @memberof cs.TbLanguage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbLanguage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.Language.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbLanguage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbLanguage + * @static + * @param {Object.} object Plain object + * @returns {cs.TbLanguage} TbLanguage + */ + TbLanguage.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbLanguage) + return object; + var message = new $root.cs.TbLanguage(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbLanguage.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbLanguage.items: object expected"); + message.items[i] = $root.cs.Language.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbLanguage message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbLanguage + * @static + * @param {cs.TbLanguage} message TbLanguage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbLanguage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.Language.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbLanguage to JSON. + * @function toJSON + * @memberof cs.TbLanguage + * @instance + * @returns {Object.} JSON object + */ + TbLanguage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbLanguage + * @function getTypeUrl + * @memberof cs.TbLanguage + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbLanguage.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbLanguage"; + }; + + return TbLanguage; + })(); + + cs.TbGirls = (function() { + + /** + * Properties of a TbGirls. + * @memberof cs + * @interface ITbGirls + * @property {Array.|null} [items] TbGirls items + */ + + /** + * Constructs a new TbGirls. + * @memberof cs + * @classdesc Represents a TbGirls. + * @implements ITbGirls + * @constructor + * @param {cs.ITbGirls=} [properties] Properties to set + */ + function TbGirls(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbGirls items. + * @member {Array.} items + * @memberof cs.TbGirls + * @instance + */ + TbGirls.prototype.items = $util.emptyArray; + + /** + * Creates a new TbGirls instance using the specified properties. + * @function create + * @memberof cs.TbGirls + * @static + * @param {cs.ITbGirls=} [properties] Properties to set + * @returns {cs.TbGirls} TbGirls instance + */ + TbGirls.create = function create(properties) { + return new TbGirls(properties); + }; + + /** + * Encodes the specified TbGirls message. Does not implicitly {@link cs.TbGirls.verify|verify} messages. + * @function encode + * @memberof cs.TbGirls + * @static + * @param {cs.ITbGirls} message TbGirls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGirls.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.Girls.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbGirls message, length delimited. Does not implicitly {@link cs.TbGirls.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbGirls + * @static + * @param {cs.ITbGirls} message TbGirls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGirls.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbGirls message from the specified reader or buffer. + * @function decode + * @memberof cs.TbGirls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbGirls} TbGirls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGirls.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbGirls(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.Girls.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbGirls message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbGirls + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbGirls} TbGirls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGirls.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbGirls message. + * @function verify + * @memberof cs.TbGirls + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbGirls.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.Girls.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbGirls message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbGirls + * @static + * @param {Object.} object Plain object + * @returns {cs.TbGirls} TbGirls + */ + TbGirls.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbGirls) + return object; + var message = new $root.cs.TbGirls(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbGirls.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbGirls.items: object expected"); + message.items[i] = $root.cs.Girls.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbGirls message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbGirls + * @static + * @param {cs.TbGirls} message TbGirls + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbGirls.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.Girls.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbGirls to JSON. + * @function toJSON + * @memberof cs.TbGirls + * @instance + * @returns {Object.} JSON object + */ + TbGirls.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbGirls + * @function getTypeUrl + * @memberof cs.TbGirls + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbGirls.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbGirls"; + }; + + return TbGirls; + })(); + + cs.TbGirlsDetail = (function() { + + /** + * Properties of a TbGirlsDetail. + * @memberof cs + * @interface ITbGirlsDetail + * @property {Array.|null} [items] TbGirlsDetail items + */ + + /** + * Constructs a new TbGirlsDetail. + * @memberof cs + * @classdesc Represents a TbGirlsDetail. + * @implements ITbGirlsDetail + * @constructor + * @param {cs.ITbGirlsDetail=} [properties] Properties to set + */ + function TbGirlsDetail(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbGirlsDetail items. + * @member {Array.} items + * @memberof cs.TbGirlsDetail + * @instance + */ + TbGirlsDetail.prototype.items = $util.emptyArray; + + /** + * Creates a new TbGirlsDetail instance using the specified properties. + * @function create + * @memberof cs.TbGirlsDetail + * @static + * @param {cs.ITbGirlsDetail=} [properties] Properties to set + * @returns {cs.TbGirlsDetail} TbGirlsDetail instance + */ + TbGirlsDetail.create = function create(properties) { + return new TbGirlsDetail(properties); + }; + + /** + * Encodes the specified TbGirlsDetail message. Does not implicitly {@link cs.TbGirlsDetail.verify|verify} messages. + * @function encode + * @memberof cs.TbGirlsDetail + * @static + * @param {cs.ITbGirlsDetail} message TbGirlsDetail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGirlsDetail.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.GirlsDetail.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbGirlsDetail message, length delimited. Does not implicitly {@link cs.TbGirlsDetail.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbGirlsDetail + * @static + * @param {cs.ITbGirlsDetail} message TbGirlsDetail message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGirlsDetail.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbGirlsDetail message from the specified reader or buffer. + * @function decode + * @memberof cs.TbGirlsDetail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbGirlsDetail} TbGirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGirlsDetail.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbGirlsDetail(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.GirlsDetail.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbGirlsDetail message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbGirlsDetail + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbGirlsDetail} TbGirlsDetail + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGirlsDetail.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbGirlsDetail message. + * @function verify + * @memberof cs.TbGirlsDetail + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbGirlsDetail.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.GirlsDetail.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbGirlsDetail message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbGirlsDetail + * @static + * @param {Object.} object Plain object + * @returns {cs.TbGirlsDetail} TbGirlsDetail + */ + TbGirlsDetail.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbGirlsDetail) + return object; + var message = new $root.cs.TbGirlsDetail(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbGirlsDetail.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbGirlsDetail.items: object expected"); + message.items[i] = $root.cs.GirlsDetail.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbGirlsDetail message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbGirlsDetail + * @static + * @param {cs.TbGirlsDetail} message TbGirlsDetail + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbGirlsDetail.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.GirlsDetail.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbGirlsDetail to JSON. + * @function toJSON + * @memberof cs.TbGirlsDetail + * @instance + * @returns {Object.} JSON object + */ + TbGirlsDetail.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbGirlsDetail + * @function getTypeUrl + * @memberof cs.TbGirlsDetail + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbGirlsDetail.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbGirlsDetail"; + }; + + return TbGirlsDetail; + })(); + + cs.TbThemes = (function() { + + /** + * Properties of a TbThemes. + * @memberof cs + * @interface ITbThemes + * @property {Array.|null} [items] TbThemes items + */ + + /** + * Constructs a new TbThemes. + * @memberof cs + * @classdesc Represents a TbThemes. + * @implements ITbThemes + * @constructor + * @param {cs.ITbThemes=} [properties] Properties to set + */ + function TbThemes(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbThemes items. + * @member {Array.} items + * @memberof cs.TbThemes + * @instance + */ + TbThemes.prototype.items = $util.emptyArray; + + /** + * Creates a new TbThemes instance using the specified properties. + * @function create + * @memberof cs.TbThemes + * @static + * @param {cs.ITbThemes=} [properties] Properties to set + * @returns {cs.TbThemes} TbThemes instance + */ + TbThemes.create = function create(properties) { + return new TbThemes(properties); + }; + + /** + * Encodes the specified TbThemes message. Does not implicitly {@link cs.TbThemes.verify|verify} messages. + * @function encode + * @memberof cs.TbThemes + * @static + * @param {cs.ITbThemes} message TbThemes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbThemes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.Themes.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbThemes message, length delimited. Does not implicitly {@link cs.TbThemes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbThemes + * @static + * @param {cs.ITbThemes} message TbThemes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbThemes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbThemes message from the specified reader or buffer. + * @function decode + * @memberof cs.TbThemes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbThemes} TbThemes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbThemes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbThemes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.Themes.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbThemes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbThemes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbThemes} TbThemes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbThemes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbThemes message. + * @function verify + * @memberof cs.TbThemes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbThemes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.Themes.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbThemes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbThemes + * @static + * @param {Object.} object Plain object + * @returns {cs.TbThemes} TbThemes + */ + TbThemes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbThemes) + return object; + var message = new $root.cs.TbThemes(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbThemes.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbThemes.items: object expected"); + message.items[i] = $root.cs.Themes.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbThemes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbThemes + * @static + * @param {cs.TbThemes} message TbThemes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbThemes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.Themes.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbThemes to JSON. + * @function toJSON + * @memberof cs.TbThemes + * @instance + * @returns {Object.} JSON object + */ + TbThemes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbThemes + * @function getTypeUrl + * @memberof cs.TbThemes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbThemes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbThemes"; + }; + + return TbThemes; + })(); + + cs.TbAiCharacters = (function() { + + /** + * Properties of a TbAiCharacters. + * @memberof cs + * @interface ITbAiCharacters + * @property {Array.|null} [items] TbAiCharacters items + */ + + /** + * Constructs a new TbAiCharacters. + * @memberof cs + * @classdesc Represents a TbAiCharacters. + * @implements ITbAiCharacters + * @constructor + * @param {cs.ITbAiCharacters=} [properties] Properties to set + */ + function TbAiCharacters(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbAiCharacters items. + * @member {Array.} items + * @memberof cs.TbAiCharacters + * @instance + */ + TbAiCharacters.prototype.items = $util.emptyArray; + + /** + * Creates a new TbAiCharacters instance using the specified properties. + * @function create + * @memberof cs.TbAiCharacters + * @static + * @param {cs.ITbAiCharacters=} [properties] Properties to set + * @returns {cs.TbAiCharacters} TbAiCharacters instance + */ + TbAiCharacters.create = function create(properties) { + return new TbAiCharacters(properties); + }; + + /** + * Encodes the specified TbAiCharacters message. Does not implicitly {@link cs.TbAiCharacters.verify|verify} messages. + * @function encode + * @memberof cs.TbAiCharacters + * @static + * @param {cs.ITbAiCharacters} message TbAiCharacters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbAiCharacters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.AiCharacters.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbAiCharacters message, length delimited. Does not implicitly {@link cs.TbAiCharacters.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbAiCharacters + * @static + * @param {cs.ITbAiCharacters} message TbAiCharacters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbAiCharacters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbAiCharacters message from the specified reader or buffer. + * @function decode + * @memberof cs.TbAiCharacters + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbAiCharacters} TbAiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbAiCharacters.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbAiCharacters(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.AiCharacters.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbAiCharacters message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbAiCharacters + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbAiCharacters} TbAiCharacters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbAiCharacters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbAiCharacters message. + * @function verify + * @memberof cs.TbAiCharacters + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbAiCharacters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.AiCharacters.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbAiCharacters message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbAiCharacters + * @static + * @param {Object.} object Plain object + * @returns {cs.TbAiCharacters} TbAiCharacters + */ + TbAiCharacters.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbAiCharacters) + return object; + var message = new $root.cs.TbAiCharacters(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbAiCharacters.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbAiCharacters.items: object expected"); + message.items[i] = $root.cs.AiCharacters.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbAiCharacters message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbAiCharacters + * @static + * @param {cs.TbAiCharacters} message TbAiCharacters + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbAiCharacters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.AiCharacters.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbAiCharacters to JSON. + * @function toJSON + * @memberof cs.TbAiCharacters + * @instance + * @returns {Object.} JSON object + */ + TbAiCharacters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbAiCharacters + * @function getTypeUrl + * @memberof cs.TbAiCharacters + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbAiCharacters.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbAiCharacters"; + }; + + return TbAiCharacters; + })(); + + cs.TbGlobalConfig = (function() { + + /** + * Properties of a TbGlobalConfig. + * @memberof cs + * @interface ITbGlobalConfig + * @property {Array.|null} [items] TbGlobalConfig items + */ + + /** + * Constructs a new TbGlobalConfig. + * @memberof cs + * @classdesc Represents a TbGlobalConfig. + * @implements ITbGlobalConfig + * @constructor + * @param {cs.ITbGlobalConfig=} [properties] Properties to set + */ + function TbGlobalConfig(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbGlobalConfig items. + * @member {Array.} items + * @memberof cs.TbGlobalConfig + * @instance + */ + TbGlobalConfig.prototype.items = $util.emptyArray; + + /** + * Creates a new TbGlobalConfig instance using the specified properties. + * @function create + * @memberof cs.TbGlobalConfig + * @static + * @param {cs.ITbGlobalConfig=} [properties] Properties to set + * @returns {cs.TbGlobalConfig} TbGlobalConfig instance + */ + TbGlobalConfig.create = function create(properties) { + return new TbGlobalConfig(properties); + }; + + /** + * Encodes the specified TbGlobalConfig message. Does not implicitly {@link cs.TbGlobalConfig.verify|verify} messages. + * @function encode + * @memberof cs.TbGlobalConfig + * @static + * @param {cs.ITbGlobalConfig} message TbGlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGlobalConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.GlobalConfig.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbGlobalConfig message, length delimited. Does not implicitly {@link cs.TbGlobalConfig.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbGlobalConfig + * @static + * @param {cs.ITbGlobalConfig} message TbGlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbGlobalConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbGlobalConfig message from the specified reader or buffer. + * @function decode + * @memberof cs.TbGlobalConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbGlobalConfig} TbGlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGlobalConfig.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbGlobalConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.GlobalConfig.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbGlobalConfig message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbGlobalConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbGlobalConfig} TbGlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbGlobalConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbGlobalConfig message. + * @function verify + * @memberof cs.TbGlobalConfig + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbGlobalConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.GlobalConfig.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbGlobalConfig message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbGlobalConfig + * @static + * @param {Object.} object Plain object + * @returns {cs.TbGlobalConfig} TbGlobalConfig + */ + TbGlobalConfig.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbGlobalConfig) + return object; + var message = new $root.cs.TbGlobalConfig(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbGlobalConfig.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbGlobalConfig.items: object expected"); + message.items[i] = $root.cs.GlobalConfig.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbGlobalConfig message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbGlobalConfig + * @static + * @param {cs.TbGlobalConfig} message TbGlobalConfig + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbGlobalConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.GlobalConfig.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbGlobalConfig to JSON. + * @function toJSON + * @memberof cs.TbGlobalConfig + * @instance + * @returns {Object.} JSON object + */ + TbGlobalConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbGlobalConfig + * @function getTypeUrl + * @memberof cs.TbGlobalConfig + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbGlobalConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbGlobalConfig"; + }; + + return TbGlobalConfig; + })(); + + cs.TbPurchaseConfig = (function() { + + /** + * Properties of a TbPurchaseConfig. + * @memberof cs + * @interface ITbPurchaseConfig + * @property {Array.|null} [items] TbPurchaseConfig items + */ + + /** + * Constructs a new TbPurchaseConfig. + * @memberof cs + * @classdesc Represents a TbPurchaseConfig. + * @implements ITbPurchaseConfig + * @constructor + * @param {cs.ITbPurchaseConfig=} [properties] Properties to set + */ + function TbPurchaseConfig(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TbPurchaseConfig items. + * @member {Array.} items + * @memberof cs.TbPurchaseConfig + * @instance + */ + TbPurchaseConfig.prototype.items = $util.emptyArray; + + /** + * Creates a new TbPurchaseConfig instance using the specified properties. + * @function create + * @memberof cs.TbPurchaseConfig + * @static + * @param {cs.ITbPurchaseConfig=} [properties] Properties to set + * @returns {cs.TbPurchaseConfig} TbPurchaseConfig instance + */ + TbPurchaseConfig.create = function create(properties) { + return new TbPurchaseConfig(properties); + }; + + /** + * Encodes the specified TbPurchaseConfig message. Does not implicitly {@link cs.TbPurchaseConfig.verify|verify} messages. + * @function encode + * @memberof cs.TbPurchaseConfig + * @static + * @param {cs.ITbPurchaseConfig} message TbPurchaseConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbPurchaseConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.PurchaseConfig.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TbPurchaseConfig message, length delimited. Does not implicitly {@link cs.TbPurchaseConfig.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.TbPurchaseConfig + * @static + * @param {cs.ITbPurchaseConfig} message TbPurchaseConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TbPurchaseConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TbPurchaseConfig message from the specified reader or buffer. + * @function decode + * @memberof cs.TbPurchaseConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.TbPurchaseConfig} TbPurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbPurchaseConfig.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.TbPurchaseConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.PurchaseConfig.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TbPurchaseConfig message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.TbPurchaseConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.TbPurchaseConfig} TbPurchaseConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TbPurchaseConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TbPurchaseConfig message. + * @function verify + * @memberof cs.TbPurchaseConfig + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TbPurchaseConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.PurchaseConfig.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a TbPurchaseConfig message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.TbPurchaseConfig + * @static + * @param {Object.} object Plain object + * @returns {cs.TbPurchaseConfig} TbPurchaseConfig + */ + TbPurchaseConfig.fromObject = function fromObject(object) { + if (object instanceof $root.cs.TbPurchaseConfig) + return object; + var message = new $root.cs.TbPurchaseConfig(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.TbPurchaseConfig.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.TbPurchaseConfig.items: object expected"); + message.items[i] = $root.cs.PurchaseConfig.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a TbPurchaseConfig message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.TbPurchaseConfig + * @static + * @param {cs.TbPurchaseConfig} message TbPurchaseConfig + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TbPurchaseConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.PurchaseConfig.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this TbPurchaseConfig to JSON. + * @function toJSON + * @memberof cs.TbPurchaseConfig + * @instance + * @returns {Object.} JSON object + */ + TbPurchaseConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TbPurchaseConfig + * @function getTypeUrl + * @memberof cs.TbPurchaseConfig + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TbPurchaseConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.TbPurchaseConfig"; + }; + + return TbPurchaseConfig; + })(); + cs.CSLoginReq = (function() { /** @@ -7058,6 +12387,8 @@ $root.cs = (function() { * @property {string|null} [token] CSLoginRes token * @property {string|null} [refreshToken] CSLoginRes refreshToken * @property {number|Long|null} [expire] CSLoginRes expire + * @property {number|Long|null} [accId] CSLoginRes accId + * @property {string|null} [cdn] CSLoginRes cdn */ /** @@ -7107,6 +12438,22 @@ $root.cs = (function() { */ CSLoginRes.prototype.expire = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * CSLoginRes accId. + * @member {number|Long} accId + * @memberof cs.CSLoginRes + * @instance + */ + CSLoginRes.prototype.accId = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * CSLoginRes cdn. + * @member {string} cdn + * @memberof cs.CSLoginRes + * @instance + */ + CSLoginRes.prototype.cdn = ""; + /** * Creates a new CSLoginRes instance using the specified properties. * @function create @@ -7139,6 +12486,10 @@ $root.cs = (function() { writer.uint32(/* id 3, wireType 2 =*/26).string(message.refreshToken); if (message.expire != null && Object.hasOwnProperty.call(message, "expire")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.expire); + if (message.accId != null && Object.hasOwnProperty.call(message, "accId")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.accId); + if (message.cdn != null && Object.hasOwnProperty.call(message, "cdn")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.cdn); return writer; }; @@ -7191,6 +12542,14 @@ $root.cs = (function() { message.expire = reader.int64(); break; } + case 5: { + message.accId = reader.int64(); + break; + } + case 6: { + message.cdn = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -7238,6 +12597,12 @@ $root.cs = (function() { if (message.expire != null && message.hasOwnProperty("expire")) if (!$util.isInteger(message.expire) && !(message.expire && $util.isInteger(message.expire.low) && $util.isInteger(message.expire.high))) return "expire: integer|Long expected"; + if (message.accId != null && message.hasOwnProperty("accId")) + if (!$util.isInteger(message.accId) && !(message.accId && $util.isInteger(message.accId.low) && $util.isInteger(message.accId.high))) + return "accId: integer|Long expected"; + if (message.cdn != null && message.hasOwnProperty("cdn")) + if (!$util.isString(message.cdn)) + return "cdn: string expected"; return null; }; @@ -7268,6 +12633,17 @@ $root.cs = (function() { message.expire = object.expire; else if (typeof object.expire === "object") message.expire = new $util.LongBits(object.expire.low >>> 0, object.expire.high >>> 0).toNumber(); + if (object.accId != null) + if ($util.Long) + (message.accId = $util.Long.fromValue(object.accId)).unsigned = false; + else if (typeof object.accId === "string") + message.accId = parseInt(object.accId, 10); + else if (typeof object.accId === "number") + message.accId = object.accId; + else if (typeof object.accId === "object") + message.accId = new $util.LongBits(object.accId.low >>> 0, object.accId.high >>> 0).toNumber(); + if (object.cdn != null) + message.cdn = String(object.cdn); return message; }; @@ -7293,6 +12669,12 @@ $root.cs = (function() { object.expire = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.expire = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.accId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.accId = options.longs === String ? "0" : 0; + object.cdn = ""; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -7305,6 +12687,13 @@ $root.cs = (function() { object.expire = options.longs === String ? String(message.expire) : message.expire; else object.expire = options.longs === String ? $util.Long.prototype.toString.call(message.expire) : options.longs === Number ? new $util.LongBits(message.expire.low >>> 0, message.expire.high >>> 0).toNumber() : message.expire; + if (message.accId != null && message.hasOwnProperty("accId")) + if (typeof message.accId === "number") + object.accId = options.longs === String ? String(message.accId) : message.accId; + else + object.accId = options.longs === String ? $util.Long.prototype.toString.call(message.accId) : options.longs === Number ? new $util.LongBits(message.accId.low >>> 0, message.accId.high >>> 0).toNumber() : message.accId; + if (message.cdn != null && message.hasOwnProperty("cdn")) + object.cdn = message.cdn; return object; }; @@ -7520,7 +12909,7 @@ $root.cs = (function() { * Properties of a CSMyInfoRes. * @memberof cs * @interface ICSMyInfoRes - * @property {number|Long|null} [diamond] CSMyInfoRes diamond + * @property {number|Long|null} [balance] CSMyInfoRes balance * @property {number|Long|null} [vipExpire] CSMyInfoRes vipExpire */ @@ -7540,12 +12929,12 @@ $root.cs = (function() { } /** - * CSMyInfoRes diamond. - * @member {number|Long} diamond + * CSMyInfoRes balance. + * @member {number|Long} balance * @memberof cs.CSMyInfoRes * @instance */ - CSMyInfoRes.prototype.diamond = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + CSMyInfoRes.prototype.balance = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** * CSMyInfoRes vipExpire. @@ -7579,8 +12968,8 @@ $root.cs = (function() { CSMyInfoRes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.diamond != null && Object.hasOwnProperty.call(message, "diamond")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.diamond); + if (message.balance != null && Object.hasOwnProperty.call(message, "balance")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.balance); if (message.vipExpire != null && Object.hasOwnProperty.call(message, "vipExpire")) writer.uint32(/* id 2, wireType 0 =*/16).int64(message.vipExpire); return writer; @@ -7620,7 +13009,7 @@ $root.cs = (function() { break; switch (tag >>> 3) { case 1: { - message.diamond = reader.int64(); + message.balance = reader.int64(); break; } case 2: { @@ -7662,9 +13051,9 @@ $root.cs = (function() { CSMyInfoRes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.diamond != null && message.hasOwnProperty("diamond")) - if (!$util.isInteger(message.diamond) && !(message.diamond && $util.isInteger(message.diamond.low) && $util.isInteger(message.diamond.high))) - return "diamond: integer|Long expected"; + if (message.balance != null && message.hasOwnProperty("balance")) + if (!$util.isInteger(message.balance) && !(message.balance && $util.isInteger(message.balance.low) && $util.isInteger(message.balance.high))) + return "balance: integer|Long expected"; if (message.vipExpire != null && message.hasOwnProperty("vipExpire")) if (!$util.isInteger(message.vipExpire) && !(message.vipExpire && $util.isInteger(message.vipExpire.low) && $util.isInteger(message.vipExpire.high))) return "vipExpire: integer|Long expected"; @@ -7683,15 +13072,15 @@ $root.cs = (function() { if (object instanceof $root.cs.CSMyInfoRes) return object; var message = new $root.cs.CSMyInfoRes(); - if (object.diamond != null) + if (object.balance != null) if ($util.Long) - (message.diamond = $util.Long.fromValue(object.diamond)).unsigned = false; - else if (typeof object.diamond === "string") - message.diamond = parseInt(object.diamond, 10); - else if (typeof object.diamond === "number") - message.diamond = object.diamond; - else if (typeof object.diamond === "object") - message.diamond = new $util.LongBits(object.diamond.low >>> 0, object.diamond.high >>> 0).toNumber(); + (message.balance = $util.Long.fromValue(object.balance)).unsigned = false; + else if (typeof object.balance === "string") + message.balance = parseInt(object.balance, 10); + else if (typeof object.balance === "number") + message.balance = object.balance; + else if (typeof object.balance === "object") + message.balance = new $util.LongBits(object.balance.low >>> 0, object.balance.high >>> 0).toNumber(); if (object.vipExpire != null) if ($util.Long) (message.vipExpire = $util.Long.fromValue(object.vipExpire)).unsigned = false; @@ -7720,20 +13109,20 @@ $root.cs = (function() { if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.diamond = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.balance = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else - object.diamond = options.longs === String ? "0" : 0; + object.balance = options.longs === String ? "0" : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); object.vipExpire = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.vipExpire = options.longs === String ? "0" : 0; } - if (message.diamond != null && message.hasOwnProperty("diamond")) - if (typeof message.diamond === "number") - object.diamond = options.longs === String ? String(message.diamond) : message.diamond; + if (message.balance != null && message.hasOwnProperty("balance")) + if (typeof message.balance === "number") + object.balance = options.longs === String ? String(message.balance) : message.balance; else - object.diamond = options.longs === String ? $util.Long.prototype.toString.call(message.diamond) : options.longs === Number ? new $util.LongBits(message.diamond.low >>> 0, message.diamond.high >>> 0).toNumber() : message.diamond; + object.balance = options.longs === String ? $util.Long.prototype.toString.call(message.balance) : options.longs === Number ? new $util.LongBits(message.balance.low >>> 0, message.balance.high >>> 0).toNumber() : message.balance; if (message.vipExpire != null && message.hasOwnProperty("vipExpire")) if (typeof message.vipExpire === "number") object.vipExpire = options.longs === String ? String(message.vipExpire) : message.vipExpire; diff --git a/assets/Scripts/schema/schema.ts b/assets/Scripts/schema/schema.ts index 162c7e05..55a12bb9 100644 --- a/assets/Scripts/schema/schema.ts +++ b/assets/Scripts/schema/schema.ts @@ -15,29 +15,29 @@ export enum Category { /** * 熟女 */ - shunv = 0, + mature = 0, /** - * 20s + * 18s */ - twenty = 1, + eighteen = 1, /** - * 辣妈 + * qinfan */ - lama = 2, + qinfan = 2, /** - * 捆绑 + * luanlun */ - kunbang = 3, + luanlun = 3, /** - * 公众野战 + * bdsm */ - publicfight = 4, + bdsm = 4, /** - * 卡通 + * loli */ - cartoon = 5, + loli = 5, /** - * 未完成 + * upcomming */ upcomming = 6, } @@ -92,7 +92,7 @@ export class AiCharacters { */ readonly basePrompt: string /** - * 额外信息prompt(聊天&评分都需要) + * 额外信息prompt(聊天需要) */ readonly additionPrompt: string @@ -199,11 +199,11 @@ export class GirlsDetail { */ readonly detailDesc: string /** - * 类型 + * 资源ID */ readonly commercialImages: purchase.CommercialImage[] /** - * 视频资源列表 + * 资源ID */ readonly commercialVideos: purchase.CommercialVideo[] @@ -229,10 +229,11 @@ export class GlobalConfig { this.MaxTokens = _buf_.readInt() this.Timeout = _buf_.readInt() this.FreeChatTimes = _buf_.readInt() + this.OnceChatAddScore = _buf_.readInt() + this.ScoreExchangeStarLevel = _buf_.readInt() this.GameName = _buf_.readString() this.EmotionRating = _buf_.readString() this.girlBasePrompt = _buf_.readString() - this.dailyRecommendGirl = _buf_.readInt() } /** @@ -260,6 +261,14 @@ export class GlobalConfig { * 单个角色免费聊天次数 */ readonly FreeChatTimes: number + /** + * 单次对话增长好感度 + */ + readonly OnceChatAddScore: number + /** + * 好感度等级兑换比例 + */ + readonly ScoreExchangeStarLevel: number /** * 游戏名 */ @@ -272,10 +281,6 @@ export class GlobalConfig { * ai机器人基础规则 */ readonly girlBasePrompt: string - /** - * 每日推荐技师ID,参见:girls.id - */ - readonly dailyRecommendGirl: number resolve(tables:Tables) { @@ -289,6 +294,7 @@ export class GlobalConfig { + } } @@ -343,15 +349,25 @@ export namespace purchase { export class CommercialImage { constructor(_buf_: ByteBuf) { + this.id = _buf_.readInt() this.imageType = _buf_.readInt() - this.imagePrice = _buf_.readFloat() + this.unlockCounts = _buf_.readInt() + this.imagePrice = _buf_.readInt() this.path = _buf_.readString() } + /** + * 图片资源ID + */ + readonly id: number /** * 1=详情页展示
2=聊天触发 */ readonly imageType: number + /** + * 聊天触发次数 + */ + readonly unlockCounts: number /** * 价格 */ @@ -365,6 +381,8 @@ export class CommercialImage { + + } } @@ -375,11 +393,16 @@ export namespace purchase { export class CommercialVideo { constructor(_buf_: ByteBuf) { + this.id = _buf_.readInt() this.path = _buf_.readString() this.emotion = _buf_.readInt() - this.videoPrice = _buf_.readFloat() + this.videoPrice = _buf_.readInt() } + /** + * 视频资源ID + */ + readonly id: number /** * 资源路径 */ @@ -397,6 +420,7 @@ export class CommercialVideo { + } } @@ -409,8 +433,8 @@ export class PurchaseConfig { constructor(_buf_: ByteBuf) { this.id = _buf_.readInt() this.name = _buf_.readString() - this.desc = _buf_.readString() this.count = _buf_.readInt() + this.price = _buf_.readInt() } /** @@ -424,11 +448,11 @@ export class PurchaseConfig { /** * 数量 */ - readonly desc: string - /** - * 计费点ID - */ readonly count: number + /** + * 价格 + */ + readonly price: number resolve(tables:Tables) { @@ -762,6 +786,14 @@ export class TbGlobalConfig { * 单个角色免费聊天次数 */ get FreeChatTimes(): number { return this._data.FreeChatTimes; } + /** + * 单次对话增长好感度 + */ + get OnceChatAddScore(): number { return this._data.OnceChatAddScore; } + /** + * 好感度等级兑换比例 + */ + get ScoreExchangeStarLevel(): number { return this._data.ScoreExchangeStarLevel; } /** * 游戏名 */ @@ -774,10 +806,6 @@ export class TbGlobalConfig { * ai机器人基础规则 */ get girlBasePrompt(): string { return this._data.girlBasePrompt; } - /** - * 每日推荐技师ID,参见:girls.id - */ - get dailyRecommendGirl(): number { return this._data.dailyRecommendGirl; } resolve(tables:Tables) { this._data.resolve(tables) diff --git a/assets/bundles/DataTable/tbaicharacters.bin b/assets/bundles/DataTable/tbaicharacters.bin index c108560abe18dfb55c3d6f85dedfa288a907da08..a582eff6e3998f089b636e01c2837dbf0d7a5cb7 100644 GIT binary patch literal 79915 zcmce<%a3GPw&sOeViGgnG>>j03dqb$xZkXNRaM>r@`%i=h^mat= z`{BpE>p?SL^roZ!d!P1>dZ!o7e7G1l%i(G7dV1dU=7Z&Y&@6k?tI1&A8%}yZpEkX# zi)nA(^oPxIu;8(i#i|+gu7->Lblhtu{T`28UR?La&G}@o2%VY z50|`q@t`*tpUj)n^6$h zFBtf6!gLpd)8&wFOwW2}!$~ta?b^-@3QMQjr*IvTaFWTBVM`JgxO92(8>v*BVi zyj-8+(fQzDJ{YkN{oZ%eOBOnYv>1+F@yf+=&X`%qIZtZllR^IhyRt+q&Uqz2@>uVG zdoh?G0HYB?v*N>XGoN4o`}cc)x*9CB1`Cb#XmUNB3@kjS&1jTc+Vt*!w^}TFgV$c` z#o+b*|KcAr*yH7NeqCht(|a$blOe0X{++FOjW_>vz?-I%Yl)0R>O`V)HlI$|r;BFP z^ezyA!KAN2YvohwM=UG5(>uBDE!nG+>Evw4^jKX#gsG0M5BP+?u?m;Ht9dg!>}gvU zrvskNelB=iGrF2i`@QLK6x%vz`16Qu(DRwx)Q?*r+LAsNr!D= z@jhncRRge^jAnW|XePZA&fNC{M6bDKG{fbE*M!mXmb2zWCyx2X%CY!bi!z!;N&jm43MrVc&L1G}ETZ-c;bm|V)#t{$(>p zx$rc`zc`&U1D-7r2ntNKY1RbokzVo!&<}CVh!np9do@jPnV4Z^6J= zY?gwPH|~vDlIe2A&!>x_j(+T`4-!k$*IM;4Ci)_;KflP~qG$%34u){m%u&J`k<{w} zBN`2DHBj->K6?~L@N6(1qP-Da?ew9?_z*M3Ci7kl*mR*P+5D4eQGy$2s@=PXsaq^_p^noY>Wp3^ zBT@&sr>~|%_Od^p&a59eHY>zg%5=Dpg7?Oi?TMWW)1y-)VYreE@qg!w3#9D$V)&|I zr}Tzq{6M4P&kGjL>xJT3tWK6XC>D3WvoDP)t-c&+yeQf)Ikv5yeK}pd!@n;YtoUS# z;gJAN7S=B#zA1^E_C^gFdwGHG;N@r7`0-$I*!zl=l5RVlvsRp>@u1cBY`C;v2x~Qg z$l?r@6UTWqk^Ms-umr<%$2_oiv+0s^G-P#h4WtC-+HV7&7Z-!!oF6xVU=aFLGi4Z3rNE`t4CPq0 z>R1SCX=&x{axj?nRuhwehG zSxMyBze9eP7f3-OQx1iXB%i&*f~+{F&2ZG5jJznv?5AdlsW?NHSP7k;K1*@`iG*rt zY{f9AE7^1lHzpC0(%yPOT19wx*pn^JH|Z%_-!(k60!|L6%8~Q3e9V#NL2j z*3a0y7rFqUwjtNUP8-xK`T=_zw)qMPTc81Tl6=H$ra1!~x=T)8Gn+{ofsAJldKRBv ze66p=mhjClu9p{M~*^A!nV%{ux(RcuQVKb+_Urr~N&19&R z^}cIi8x{i_^&mDu8^V-lgT~Mu#f6>(?M>2ndZ)b7hj0J+|NO781e+A(m(8nd7{~`d z-C!V=2tXsIobxTreY!$h0eoyj1+$otZZv ztSs?L=lGn(;lDlFMBzO0L0~l~)y(I`@I3S&Q=3lo9%P$iQaIH3nwhhV`zgr_#_K7- zQ6wpo74$~$McX6fi@_YlIJElJpaF?GNXNkt3Wur-hV2^mkvjdlvK)ZW5-kYU(NDh( z93jJqP>UV%mbyOPXUsB)iTO*484LS<$*~+rY+elqSL~6V^iqmIq1;MeQq;8g_k+FMhZVC1QhP`k2yi-DSuW?-fAgQ=3>?ikFpL+uOfvrIy<-_B zN%6<;{N#R!>p2R4FgdtDX(Z0DgJV$BM}Md3)j4?a2=3R7P}KH(Lo;ybG_v=-C> z=d9rb2z`7vxME*|S#jF(iHpHtEQD|Zrhym)F>AqTKyGd6`n{+8F|LAwd{w1sOu&7NGPq=uyLY z|K;>zbTA)|$Nah(p%KA3*T@}?55!2~Su_n;fafg$hf`K?q}TefK$g@ytf@8|oR|bt z|1v#=1E3v7S0Ytj5uh(@hyyQkYd(tIJWKw@3kq5fDi3E{r@zR~y>OwxLHgGc7l|E5 z(=3@~{`xiAi(!OX#WsRWnIez2n6lH@YuP6Mtrg87K*Z&v;P31Q9~rGMs=0uJyi-DSrvToCaSF@BqHCRyoU|*cy*WesxHcmY>s+1G z8M2%f3B4F_cE)(E`ufdv5NCF-0;@ddrySh)KJt$$2;7Jl%S)HKlmUkREhkad4Y{|u z1z@ARn{(Dn=evU1!s+yM{yLw&nqq%#Mv7`qV7byzTz@B+R&s?xQS`g+Y8 zd-A~1-|J-{kns!(i6t`|-14)Wu_}lgi~U`*Ft*Y`6(eUtg{CjAhI6?9cpUqrhowds z<6U{s6Y0|0BNB*`0gJV0T0AJ;D7_>tEq?^Z0C$WyzU#dFi#Z_e;$S&Mm*Zz(64Lh~ z=^B6)rVyP$y9kr?@K{a~i=9AwgEJyT@(E`LDvh3#ycX+ReT=fo0Y-&NdXMpx43lI& z;lvtF$n&a)Rz?nyoE6n4aYl~b2{%TJK>SGNk@ng^u4gOUjAUs z`BFR#w!ii;gj+F5Y<0+Je1+;G=wmrB3fkj6IsIJbZ}2?Gqae4@sXQL?%!I|lrKAn7 z^sZPe;bf#04~W_PQpZ#KAWR;<5L=PSl=sfHzWT7~kMWq_TILz)YX<+Sl* z{g3$k3-(&h0v}{xKTf+-+)h)TEwRKpxXvumwz(d9PEea6>dT&3!#|45$mzFP&Gvk8?i_2?$C9SO!2}^f5 zm}`-4qx;Q@@p76gxlF3UmH-^t6EMl*5T1WcJcV@;gV79w=i|LWgl5A5g7D-W?Vg=` z$Uho5m1k@cp~-_{E$dw? zVhAt;wcEffq)#wk16%~s2KeO#0JKXY&;~SzZ~uiif4svF@N7Q3Zp0#bAAH=py9`hd~!&5kWq?NT@sVTc~Igo0S-{H4LZgnk|CChCXYShDrOZ_ zKtGnsw@+SS9zd@Am@Ko*L7EO)_tMU2WY*WT#jHz>Y(0p_6kXW;V&w=I9MgS^+j zo-lo!226j=D@g1#LT@8uJ`MnTzk0pGz<^FzbIY1Xv=u-++GOAScFha%su>XiWPV66 zJEaIN{xbOq@!!D4Sqvl+RI7oS52Ag5yQUL|fAfFaLz-hd>^;TKF5%9fBzFda0XaZp zh$6=pm#|isuOR1g)ejm3-5x`M6;LarPE_Zy{sog;UN8eVI?k|g@dxX+m&d1Jfty-f zE{Lxf-)O4iBK!e-XgMutT^>D-l_W-A6nF~pRA5p>QJW)C7GIQso+yA-s%Xuf9* zCa0bNq-;*4Dv!f(ftzN4-%qDNF&#{eBuTg;W@E1mr&$r@&;SZUefY@%B>%%th-4_( zcaHyDDgoEPX9fGjda?5|tUk_iX6g~11ulkp;Oy4l5O35%fXUF?g?pS&1u=zBS?zYk z@Hm{xmtPSK-nZ9sWFb2aGNE9t;v#EPm!<>~ z&1mkM{_e_@P!y#BbywhJw)KRu0!| zpFsyk98!-GKl}$mf%*vN#AN{uMaS68Z;|Z*#U6M9u_C!5@jO6cRwu0zBOaN6 zi52iGVCnKbp@B7Ket$MZTA2-AI-VrTq0oW8iv`1wf-pRnadQnp6)dR18{sycTRn;2 zO1W8Zb`jl|;35B5fMPKiooSGW=5UM38$T0f-R|E>Ls4Gz+{L8dLUnui&6ESt_B<}F+c zl{XkNwVXHB%V`{lwPVB{SDih}sLf**(jCS4;96n<)!ENZ$c!;5JyB<};#i-zL3 zl)$-m1I?w-FI$VeO5%?urdO?<7CSOI8M=&jvUVA z_6sTo=Z5*tliKO5%O1nu?hXk<}}MuwxA~A}K}m%2a+$R$27(6$%g2NxUKzt@d1RWpYX^ z(f)YoDMq|sz6Z~|*mi%e%%0^TJ_|)VJv0BAsm+%F)+M=6yasI$P=e$rD)yB{7KA8zVIRZyqTj3i>2Whuv-8K z4P8g`jPr{S0GLKYf&$?-76Jpg*$nM;4m?SRn`97`m0?RXC%i=ORoI{WCBPuUi`6U0 z1Ie~M9tpLxiV7s_E1m3xGdwiaE#mdjWW<$Y83$9~5*Ske9|PFBlD!d0UIL^LT|lqk z3Q+999|Qh~7Rn`q9*`x+KMFf#{WK!B0Jo3Q<)pfb=8`~a(*>+~qlueV{UCM!pNiLM z(hF;zVCtG2sf&-4YHSej@@DvmDpB}j{?)Np!f=` zsJ1;#AZEKWSFv3TR^iNC7#}1Pukw=Re1+V|nTc0GPeY6~ZDSBaX0$!gO7Fdfjmgmp zj$`qVvI$xrs+yrD;v?w>jz?N1n4Neavx%eughs?c2?G*Axd9a1s5AGrJ4?ryk4a1R zQ^;`i4Ek~}X!mVH8Lw0+NMY3UH5*e=BFeHHd1h~MB(Ttm8{2F*8(!l;7!xE94$1FD+vAhr^ z5g|Gc=R%?KN{S}4O&I=^vxkfWZr;_z!f!iYyvLzK>;Y(f>@^29qy+1N_(+fO1_p^G zKffimzfdYCYsI+{y5XqcTm`oP-J8qlHD2<2IL?06Njh+Dm`Q=T{bP(;zj5fE?PcQO z4?r=Hkkm%s^^|Xg0Qz`t1Wqlp#`l6H`q)1|V?Jz_@+t|*iEEEnmt<@cwIULXMcEga zzkd`afrVwO;eo(mdBqM7_ooE|x$ws;7p1#hV8{EBbIbys;-O?ko$mLd8AbMqQ4BBY zW|iZ%UjF(2y2pR;@jD;f_Y#Yr!RX~|PiC#4m^01~*x&<_0ZHbHbe`7|FYUTb{e&ZY zGB>psOIa+hwN40?5?2=s3`+>J4J3p376_qW@Q^2^yh>?f zXc^2%Nl@}X=ut?jTwW1aWu_!@lOW!=i$b`%=oL|XIjsq~OK*+IK0~+l2#*E!?#oK) zX^wQ*CJ~v%2gM>1S@#f9-LBL6n@R<~o1RDnNg6_XKr$Avdd5l*b|}C7d6vdzgO%Ky%iDvSR$58L~dv;xPZ{1 zR+P1(M@k|>GnOb7%Pc^bx`d@N+|-6FniUV{*E%BBrb1YFpm@&CsC3%-c#k#gJ;R#dWLk}fZ%3(W-KEi>4zo0oMbZb*I zTb+?}7sEy52OP~!YCH>`oxs8}{um zN{ynhNuu*4G$obL1ycs|_iT=;D|9=&i}ok{B-LTT)1krXMk+!h zpSLzl^Xi0-gPN3dZGBjcfb9;^JdmJH-A+39QpUXiqQc)w+V)XPv7D`wL&CSI^j5H< z!XDC>t4a8K*@DRKCcyg@)l8yWkU&WgG*05hJ}?Kk7m6L1T<>zosli+Z*wO%$S-FwL z&77h{qj0u$94E7m%kvyh>QL@vP4kmoVX8c}=509R*5tCEFSH>+DG)am`{5?a! zjXdqNF|mZqUEoAACdC0y=&$U(yyO`ai|Gk9M;jynJ4PJr^V$mhp%OzA*jz<~0ZJtx{i4M5-3^fd^jjqT-7(4PTn@MLuY z(ND)FKnc1}rtn~xE=Q|*l%(^tN>I8PoL|G=R~&K0uR_FxikH$w=y0cDPfr9RN`xV~ ziiEN7mzsYa(cIXyHpXk^L9#NrtANPy$>Q+szx3uG?x0JL8)^`?>5}U-p-UuZ2@wh? z5jvVq!KKEznOFVwqM;yE?3Hk|LhnNo=Ec*Ab|fW2pk!s83#V)cs<)UU_EZ?MlxY_J zQoN8TtZ{f0b@WKQWDGz};xK4f++naW!zpV7Mkl-3;H*>X)qO=*y>k5H==kaL`(msw zltm|R>;&&2do2Vn9cl*}z{GVv&JdOF#wz96uHw!YQc#O)B^FH~e7sj%*=um);mycM zX?dO`{Wz1TbJ+k#^4g#<$P3WtjBPW&`DFM#X~_&QSsiQ&H5TcQdHyyjSlAqAG}=L2 zpS;e*kT#qSET}d}YooKY6`y5P8?~8tOK@(9nDlpp7TW z6E-Cv{JX!(P|?|J)p{!Q$M1Y-R<=&a96%sh7~O({9?+V=60-b0xDEZ0JZKcGLjg2qdzR+V!9+SV#0>( zxTPrI+{K-w`WB?fz!xFPL&_1zXIYE-_?^Yc5Qi+?SZFsmA(cQJAG8w$#Cgx}MSO}Q zq=Hqu%CCeY3&sG(ui!ZzxAsiyL$SbRbI`}i0XUR-gf}Fm79kgk46M6O!jNStUqz&d z09uD5Z(eUJ4;Hs8(>P6i5Uqm_#Kd6na0VgpF{Nbwt`cX1=YV`wr-|lhC>|pNeHxQE z&`jG3HBI3@L%@xSuSms40&4d&(#l`6>|inNH!3BKa!Bi^k~)m@2abRtU@YKQ0h9a6 z_hnoY;>K0FDX_VK8|L~dAw0tE8iMy3zk~zsu~^&ms%k|{$@kwEOTte^EQZP{O|qG^ z7RAfdEuU3%`ULLf;#v6sl|#q^q9!9qNq!N|E*!;SWynV#zkqi-5h31k}un9`Br<1{Gh0zlxaKMnP7uc{6iTEg7lXV>rms3vC1b3=v zH8WU}lf;gCBA%C`Xbz_p{SoXrUYy)nPqgcfhjYfIGc2w)Wx^utS~z6xLdMX~Ivgdq zC;4Cx$rcc_H!~6&lJnHF@hC;QJxbR+$S1=X(9Pa^Wu!S^gP1(&y+htdpRD8f9exwM zZ?_V%4E-KB=+C1q)TX_h1wYA*UB_y@=o!Fsx}*^VHMovOAPfQ-S@5KyxRx!#JZIZv zOL?G*VJxnRJ!@~wx~BL?@$w)vGP^*P{$Tn;Iah&Ra{5)4CF_G58zC$a4#BZ~Obalj zI@i5a%fF>-fGN8??ufh`dlDbi2)~t2s>JdQzvOmQ7>+awl(L-;iWu3A=5a+DWS@t{ zas8)F)vjdYRpR0Eypb@x&DD_X`O0>Z&2PCH3Lejf=Ba=thhVb2e@Cj8GA?*YwCpd5 zpnU*A>+A>sTxcVUlwHMe4h@U;x#Rz7$LB^6XaTJ#)h$t~JCL+crX$)CwNkc@|(cHM&h;=Q0 z5Th#~>yFG$5cdENn;c)#*z&i9;qB5pwB?!XbZ?#F{SaOk7^Zqc4&VOEZ~oQ}YWEd9 z^jjqxDTQo zDB^}TE`G7N9LtS%yP3LafZY~5qvpzrBa*~>qAGZlB;zjy5;6>yMUmTau%`sQFr?%F z$w}i_AJ3;v2FL4Udd-@`Ra=_3PR1M-ivku0k63cK6XtsR3+6-V5qe&MRt0AU3Mol`W@2_Zk*dkyxfROP0NF57lAgI4QN$$rfAFz_S|D{0_1J9gk}C(=FS7{q}W zm|zb;n`vOfc9G18^pO!Cv3k9qN$RHu(ya=c5uE~EO8*Tf6e$PfE3bmKX!ALWFckRH+raGdBU#p1N`!^)UplHVB`Bn?d^uey zz>G~+V!tda;Ex^+1{ zI2{ZlT7+sw*r?I&v+7a7pN2el_)3_NUKD~9Y?sZF^-tHXK9%E1 zfy3};$WhrWx7eqWC(U|pEdQK1zONk3O!N1VAT|(mB&o1+zyPzFs3N0F{KjTXZ95=` zk`b7#jzCsFSR)-bM;%JKoKg~arvE-gUl$(rXlI+It+1cg0S`B3TY1_l=4wvY!hhis zNT1Qg>KrdH1eUO%3OZwUN+S-oNqB(=&JV0Stq||RHib>r8K3<}htqB*OMCmKnc;jEvz*0b=;TF>Ep=c4+-0Tgebn{FbJm>mEOnMcl> z3RA7;kCh_m0v`!$a6+lJ3a9SCFj?xzKnzEjfEE9y0f;qSoGP7a<=HteTQ4r^3yZ;! z_(N0~E#PB+C^vi#T##n=2A3M3YT#qe6`2hBH@093AX=LWF~(A&8Pw-)k-KBInD~Zq zMCtGd82Sqg+WEY*08S8MU4tdLeit}PPC8MK`8F41Z?YZ}bF5}cV)`;os#R2$4xT$= z`=^)Kv~}LsWstQ~ibMb($9ec}?CS~WkrfRK7U3?jyJk)Xoc!NP>B^2(l9l5X(!?2i z1TtUl<$mZJ5k1l)=_n#BPU5Y_U#Xyb>EDfgm5O791StzQS`_H8v~!13LlVmzm(diK zg)yY#!1v#0V%>qr3gwv~HHIX(qi#t$!mJe}N(q8TN8fxNcu{k#3QUpDE24J)${Q`) zW*ejP{=q>Nq@MqSd)lzea{llsR>2toN0=Q1Ud+12E% zb{0;7J&2B7>J0)2(wiQE4p`L*pv}*4YS28w4A1sO;#yWIY@^?W)w{Qwz8_%wt7sm)5w7llW_ zUT7HSoj4=K-(yTyquWr^HgRw;6S;Kr9KPXL_$Jw6p@=M| zdDKr>Z2n)T2~ekYQ>E2DGtv=&3C&LlCLB`rK;6ZQ5ZK}cv+JZJ9Rq<%jNyjA0^N!CCe}EjB0cT$*pH$E6mq)QI6WxSj#?!Rg{X zsRc7kDXwHJ!-FLDJXs4yF)SZ6a~$(96_z?Bi{EE$tJ5T6DYZwKeRM(9Cg(*Qz9+>lFarUXcin)NWl zGrh`k!6ML{f2VqBTI)>8%CNb>RN}v?IgpQ8z)}L}rm!Z#2LG@~(L;0rs{sYk15SW; z5u6Znh~8UdTazyt_3qjarx^$W7=RP;`ID+l21q*%8#St*Ctgu4u7BvFx4DskePHXaf>)wX_BKElLw-M zV72A31f!^lbo!1C<2BA|HqB^cNYNnMzLPW|WNMELRz*tGLm6RC@}(_yg`Zs+EQsq* zyzX#X@JR{Y{UG8b35PhLXH}unGAGLe3Qj8CCKE4cDFIXhrSc~?`qB`;yAndu7sb5M zCIB^t&4lbs+21~=lSe82Jat>UjNWllBL;5`QCU>%1>K9J`@H@;sgx?6IV#w4;0fkY zM;mp2H!4*^b{y~n=k-|uY>=uc*<>6^xQ~T&gFB&-rfP{G^}dnh8sR=~@e_&>=KK#1 zgV28{s)#6J^u825t;OOmL#OWJQL%KANnvLtS9BwD+xd@`4~6Cv!b;X8Ngh*5tp6YK zt;`Ogw>-H5&ObbGwnmN|712?%8I}9zfh9ozfOPnc9z$S@q78NlXBCOCckdcoYQH+&W2J;XQwvx_e5|qi zT1X&`JftNr2?7~{O;6E1Kt2p>gm8R>LW6=y9V0-4DjSeY1=`le1mQFP>YM**2cLOL z=H9UP0*W%xKO?4(XH2RIQY^aL3A?QWRECts1J`2Hf*f}Y1u3A3$E>kE@ zje_Rb4flKv{4 zQs`TK$uZ5*-$eo|pB)9rRueyMakkE)5h;FHpegaHUFGhSVf=6y};j9~w z9sLj_!UooUz+Bg@_@psOr$Q){#FHy*AH4S4G>*)okPBMn)5U{E6^zD2a1CV~l@@X$ z+j7Ll5J^FgF&9p46zcIkb^_a(_x+rq+c>3aNT9Xl?8M4#lPBw2gjWoiZ-?>#)+w>l ztsgW}rK||Pk~XWf36>%Z0abDcg*zbWYsrv;VoD7}f~dhLxh6U&w52;I<(ky!Grb!*2%z*zys})e3L$1iYMXYk=B%u&HhdKI zfP7HB|MEGoq$@h#+LVag&v>b`5YO%Y(ma*so#L>WbBWbK1^P?Q#>6w!cN;#3R0E!G zQLHH3X1BY2DA&sK931PW#U-j%#L;gT?nQj%3j3nXM4u7*%nG*GZV|{kuXy8 zW~p!ig%U|wjR3ZGoo1U2Cp%`XcT(HP|E9!Y%G1*xT3*VP7f!T{o)>-is&u|0%5>wS z{h0D_QLGkYiNirT0-SiNOqIbJ+5Xxv75_=lBJ}h(Z1ziMlei1yg?5rNi7-F<^6O)2 zAmt{{WwffGER9>>y4+Tx zwQgmu1oAa~bKYFXXY}coYv1il+FG>dHYrxOv4KdveG_KndI)-ci6jnnGTgw##c#E) zYrHzwg3W!#?Lv{COvjz0iy}jE!zC3eN}k@m5h%3xiSDS94sqiyPPurS^OVErMt_Di z+O#{Nv6xcX7VoTWcD-1_?T0d*0kvEb!J?OiHYohU-VwK1$;-10HsA$XbNPUMhW>D# zr3KDvE_cI5@*=(bekeA59!T}R6+!3E4vpRKhNo~TMpeHC$sQ}3R&yW}BEuv8HiQ_dDdP+oOqAB^@l4^=K@GkNXn8q^?E zZB(Plk?^cmh%-%kj{)gz^iCBJm{pWHyG5%OFtr*4htcG?vwIjMV<_=^54l9Ms8~Q_ zp=n%+hCOpIKq^)>PaxkP!tuJ?j*ZP0pJdmlepxLH+VE6q-VyjL>eiI>hK4DOs}`JD z^ePxv^*+A5Y%Q8zbEP(bHP6BixWY?6iJUEBqL(XJ;9q_7=Q~*7lZ70)H0-+n{5bVm1juW0qbHP0ogs^ z2z~fcl&5uqix~*G)UfplQHDHhAT)JeKx{O19J?qrVNXYSBCPDEt#dz7zmrHoX->4t zNHymNWU-gL9UHe50!QMQRWcT{&$urKcL{@)tVKYoQn8un3y`Hxu;QCxbk3ZMfy$r` zgDW0>_uucOaS`l_EGB*g=;lNulSNkrYz~NfAcoSVbDJ$dzn~(5>_`R3aJC}gEQpJ- zq>^z~vxD~ka@s4}j)j-xae`1o-0DLr&rE!hTRGh5<74Uawp*u9a82z9PjDDaP&CGy z+;{3|3H8voi2gs6wp--g(ot^HwPvJ@Y^CN(!c2;yx)!o=PMG=NSC2lC5n^^#P1|1lFG83 z+Q=r@pUtrA2?cSXg4J55)DJoPZ_DY6*h`4G;L=fJPL7z9x_kI?8t-Abc?$Jl6>mks zPGYt`c>nz|?;wvF6{1s2)&f-_(9D^ztAJr>{F%Zk)l1GH z=$>E4;CFSIkW{U;nSerd1s`l9EJ4sqt!|IqfQ2#zgbm0+@mmU|RAO8+$zOw-D-lq_ z<@B;{&J!n>Jt=(ok`aW6~s6v|w(PUN(mZ31L5;M!y6BOu#Gg5T8Y8y3p=KPZk z3qEm=HWZHQ@sKa1UpRyvTFo&B_LlJvEI!wJ>TGl(LN^A-FsT6!^ek<|L7%i+vkHZ| zu;BQ)Lhw4xR&-mWR-g@<>F04k$=@}U)ybld2<`>$hvbk&_Cyp2;8Iu8C`u)m-i}Kj zJ8?0QNes8URdPt=W#n}wBANMBhTjgDv1Uqk0ZAzINWw1CB6$=LwPUA4mT5?ip5kfr zfSsxx6!rj@t2(}F4{;C?!$aWFTkMT&jk?lCcb2{VN1SV>Fz{m1pkQ?IQB_sO9{^gT z8v6{AfN4g;1?H{EC~b3>5QgM!LeMl}W5WNRq;Y+Uq!hS~dFxxa zF-j-Y00!3C+`cUFV|Yz94P^l~>0xE88~sOsjqXus&_?XtS7r;l{RJj6GK)A>lA~nYcUW zH@i17x%FsXFeCZbxEul<$a!Hv7!m#-eij`V1%fyVk~b^uy-_}q6x3N{m#TsW(P%Kr7cTI zq9H~02^4e}rTmNpjzF>ID8y@A#app}vNU`N?Sf8Q(wr=UN;ej+q~e0?1x4DJ3aI11 z_U7+x-%NjuVvt9iR7HhKPULiY_k+!A>czRa3`DH^X*0pgjaI^fDNv^vs(r)KYgmv0 z@t2miaXToT7(8?Vw{zN*$!JzsM#k_;E(Y{=c(_`rtxhuu~;{DS-xZOG-3PWhX?KRdARl$NRpu$AxZ61IpH2PUKjg1m0cfwT-5Tl|~}{@_QgM z#wu*UfNtw-hog;t)jA_3#z5=~uOo~A^>)oJQ%#2o+8O)%R&fitgF}ZT%j-{Xi2tz- zYB`+0h<)&p1((oiVd0_givxy0fWkreNCok6@rd93axa_wnS+9IRZg$)Q!CqCl?FaG z8v#N3XE>_hW)3nmkHJXbG7#ws`dH*0i6WW?Z5AVk8-iQd3+1>`)S^_N)y$1~v=_R_ zkvJjOIBZfzrGtfSey*n7z#bXEw z2QhNs>otu@oUyuibLE-$Rkaa4grg%AdR1(QB6|ED@dJRUUjkPQ!Dcx@^}FSun0Sf+(?bGF5hGlopHg7zL8AVye@k*O&F1>oEzL^FUs?4Na- z=mPnueU)O>_uH&BYq~)5J6WanQsG3Bm~;;Kt)|Q$i4d}M+yJLIr7vs1(T4giTW#OF zVvZ!6ujgutD`uu1)Ew`R`-fVpw8)O};2tHm9T`A8AE9N)?l=X&f7$Svq>*c`E{Dos z7^uXz6tTE2>bBfXt%4&W1X<#;3NX2wl6zB$ILI8BQ1Sd`#1`pd3GXr%4$#`b1N-|} zr51$WWf={tH&GG{GEYwvEK4HVvQ~VP8@*&=4pQc@YC2Da(g9~d1##}9D}}Zo^9wbV z2(|QH@KJW7?abA<2#I}gS&xPD|8=Hu*f2Vs3GW?)Ni-KO_UE}SRYLwb5 zq{`A7<#my!N!q?s@+Sv$iQ#i@nGu}?+3w+z&>*6A^1Wt`CQqe935IQ?8-N(SgFxg- zXSXYlZi{)A`dSP^+~*i!u&39(JWE3M*m4K%#WZAb!l7L7db!?$J56RB?6%el)xlX4 zy8+h4g*A(nlKo_qk;@!lM1{;tR2Uhqc&rD9gG7E8yHHRC-I!sep^kF%RGu~gSTIJwRE5heX@&}1p_s4H z_wUFSd)XrQXt{U?kQvF3EswU}j0|piTdSuH*2#t0JX`smWE794*EmgXq@X${=thR5 z@kMT~Z_Ug$md|v7%@Jwll$SUk7=9SEvs?PcPamEWU`D6-p=F%*_=rCbMH2IRY!`(aiji$@t(9j3V^EeTe3LS6J7~i zct}EX(;k=qI>V+(%%n)-0y5mo(sGO5!__6VJeNb>?!q@|fm$`?>z#yYZjU(2JJI-cOuhjtL9BE zrV;5TLQ5FL@U$2UvYzgJfoAv%=7}Zz*}G3_F6krD*!I4{WX3KQirPg^naGgI<;A^C z5~(CHf0t$)!2Ln*>jmqit{H$A7age<)F`kLN1c6?s(+>w)4^+ipWe%&2~DHdLt#}I zb{mP5QHOS%teg$%pu0|z;f{*X#U8VBrM6Ygh&d|ZZ3Ji)GOZ2P&>q zeHYULC{u{c8>vZ^d@;`;k^mX=+kgGd-{EL%mcO-u!iNeK5Gf>dj|$%rC@hUEpQ!qr z{wCQgTy)e%Z5)jte_g4@^>qjtNlv0qfcPon%D<% zT27@%N#JN}&c<}+P{O?4yxxqYt(#LvNp&!ZHjGKF*>i;>)ma_mFSay`L|gO@tqBP| zi0Md3(!sBw$3=r1HnxRkd#XJww|4OLQSy|%3=f%>XF=Rf!^NS_D^UX^bcm3_?srf) z-=)iolrv>NeK>QZ-9_FuQUc{AX4~|5+zI->!`W>l%}kM&g{gsz)A(;ETIxZ*bOBI+ zBQZMg8_ih0(z|C;Co3;`4P9nK*czjK435iJS7VkxFT!-7PtJ<;YWhu)q@O8kIN-8A zN7BO1Wr-y_;g;_8T(lXXm)MkW7jt1-)VhrZ_+?pgn5WW2QId)gX|hFnZ|*mOk1g-W zbRLn8qAemJUV0wIadGb%7vS;u@0?jh?~BdW7g~G|JXar>tx^HG0Av7NP9DUK5d5Y3?H}MFdr&!Kz``;%jmO9N0-7`_5zYCPNXbC4JvPR zJ|AG9xP4ip`nmf3aA}b1G$FQaSPUp4iPZ0;otP$13F%NYQfNEt6APJmbhqj`-m%0r zD*L*Nw(zk-1T52@+XkE`lnG1>%I!;?T+UB%JKu$lb*UK5RowzrGZhy$?oMp)`N}uU zF+zj-VhpdOZl33Lku@rho7O7*7D%nMzLDMf$zf`Eniu5r1MkmkPylW;?7sYAenCzxK}=^k?`%%pqBsDs0s*+-Xkio_3(?k zFMbB-i>Br2fwvaBosj_zd?#GtWPpJjRA)>g38Bhy&eWEGbiF5J;06sc!Qdc7jKryFos~b8FazVUoc7}Mm#TQZ_>Abux;s<3_DMn~s{7aH1G9*Vi;nQnHTRo{wr1%r9dg zy?YNyPzfIPDe;HLIBylE1!9w7s#1yar*2MP{hV5qPkYaB&IQNf1OjX6 z<-&=R*ow)yMIryt_wW4((bhz3GGcT)RM8h-cfmjKxRo*jVx@zjo@W$MJT;6M$0<9l zns}#=O0bkAr1M^U-uheAWw;E+gJ2Zv6=YSW+(fr zlt%&^(3PRzya|HUZk+<*NSD%ZROxCzUMvZtNl1Ipd!gb;zWQ)*K}>$iKK#-BcOUZ` zN-{}a4qq1Hk=tjZ0~$jJ+|Lg$l%i51Fa)IZAiYnR46yP?%>6)K2OTkehBJCT_8T-0 zweUa?I3h~Sh?KvO3amxsUKdCdA3E^1hS{N7)j`G$3gwm0%Js=ll)j`eBRcsxYFiPr zI>R8R=nT31!kn^~Fov87bB$y(7BDH)k1Nd^02$4A!#n$9intt9;d$U_J=#^i;hECi$;luT#+T-8UC$=cKJ4B za4!n@qx(-#<~Cc3N=jQeO6!(j*eF~mncAZ*5-*tgd&&#C|3}&Yia~`_9fbPyUS&mH zRgo51iQ;hryeP^{XM}J6&HwEGxyjD@(r&h{a#`+MB!*28g1@k}ePE$eIvwRF*eta{%&#*z@1Rri_3x!?E`B4N!vDk%v zKoTl4K9;*&LXD5(Tuv681Nd#EH6Yd|YAja+Q zbD@m{4)>T<@WkRm&_n~EYC`4}Jr0|pDW0Mmd~m@%i}sQ*&e49lNYUbhXMW49%nEXtKqP(0wu6J@guL~KC9^p zQf%{-jnKB!+-(ts-{>zyOS0oU7wxppD|>_uv2CV~)Jj8%uWNjiT2OtxtM?GctV5H| zThl8Z-@(E~BdK@w-rzh~eXm8C_44zsL&A%K2mR$+8r6hx(gHl$= zlgK1~4J4DPHBvx_TkbqbjptJ#vqC8rx^7&D4F0YnaI#mZ{Cw zCX(`CB8=^BdA?dDj56i~Kc>|Ik!(@b$__5VHE$cC=MT!9FEL%&BQjA&MH$Y#iXS{ds?O%KIf8AtI zxe!bVpa+P0b{!P*8BD&L(lUB6crEt~J-xZB2QnHN=d6#SJ%r9(tre7(6e2~WY%$WX zbHq6C>3D@t<-ygOnlKl4mhcQt(RjG%^njEC9)ySy8%~nwNRcz#sdo-Hlb&9%kZE-h z1EW~Z7)hhSk?{!7-H3)fX}rm&T{qs3sFfkh5U5JWOZ>sTBc_7+M2o%qti2=e%jV=g ze)*LxmQrouYNe`l&EP+82>Q52;E25t&3Qqh78b9L1SCN|qr#7#28F^Xgu~vG4m^=+ z%8gJ>oz9J9kJ2jX{s4LMQ1GIJc)Y;15pJbW_lNb)Ws;h0H!3Vof-relK_^qzY&SFj z%asj#_}TGO)I|J}S8@{Zz_bsp$55L-)E&m0(O~CzT2L}7PxWh{C`y!S-C#0u zz$)e@Ys{}k-g#anTDFkCX^P*ZXD6y|N3t$P@`UVGh_q!prkY1TgJcSJpeV@ zjf(B9Nq$AnoC(M038AIrHyHg(NPr6~TB!~oLdtfQ6Gqx=8ykZ9z=(mp>@itrS${|; z04}hT2DT#vlNYK?F%sadMug$V&uuu9DnXX{6dj~WPahL~O)y9=Kz-;Hw$a4vn7E0N z!;gh`@L}v_raywOl_KMHE*bxE8a8|g(OUya3|+x&fjpxX-WA6w5JAp0W?N-~*i*So zp> zhr~W33yDYeprRx0E}5a!bJ|Y=#KeyUef&h37v(VPxM1e2N?8X>k~7))6`RNDV5lWT zR76S}mztrHd?TcT-shnupB7u{m48B9iUcM746i1ybyzJ>fTf5PCj-E7K287vhR+0b zid3zMycvtbK4B;HK#UiuBjNwu1JfSKpekw}@Tuj#`FIv2&4V78dcLaWqVSO=>9;(V zDRMh8+h-N0Weus=W%@=y3%ZYkJq;6P%2F&&+B{vCsbim3F-%JTnn)tqd-3AiKvyYD za_batYR*RxjOb;A0&w#wAsZ}05Yt&K&Sl#T#pu5+4Q#nYYU&BY<^_1+k5Wm#N1FMi z6tSX^eBFf8#XFA9B6rN@?O%V>y9v4#a>lAXC3R2UDi|Iz!XsN>0gBLm0PhhsSlpY* zw7>+_4O09AmGh^iF#uK>6P67%lQxIIq zD2t;QC7*VkBwwh4*Atoc9-*zN4e?V!O7KPFDbYXEB;0|j?y$Nxqa|}Su28jcUeKGC zD_`jvMeaoPg9uOYFf0~~hSl%xRMJ0GFc^b?tS;8D*}Tr{fgx$Pi8V;r5dOMW|c?_uJ!JVb0Ii zVa~^!Feh@i!vB^q=Zg$2)WCzY^$-J9wjs^o*8m_RrE8%FXJBh>+38pG*-yX7XD!mn zLK&U_$;^wXN^fTYetr|45;yP^q+=1e3Q5q_dz&JRfbi9AOcGHB<78>*P)kLWgd{}n zL~7GHhE$hi8jF@Ve;$~WbS-w$by0!Hc1QupFcJMV;2PrdTTrPfZhdb+|3Ol?OJ^wt%u2WK;bVr6B60zWm<^-upb_e zVmU}?P_GqWfLzvh@_*nYM3~s#HCNk~<0GJl1S7SHRxAbV7JCY-!nI7WVtA_6qI|}! zr!cDF&bC4MA+8VtSs(+B9TN5L+5iDK_I2>eq@56lK;(9KhP&2E$Y^*0D63r1pFfu!!<1X27`-qw&L)tNUfPHpxXv3fN zEWv1=9nlbSCx`_~&mi>*qm&X-U)e?OR|jM0#|VQxkSw!`8yRGu6fJjro}PI`a*2vO z6ESJC=BT6-MFj*wS4G71ENM9v0L0;wNeTU=&x%j0t-Q{XC4bqM098ySOOSq^FPm$6 zZXJydp3)=?C+V<45v4<{xotj2!E#!9?`9sxks6T19|sFLdAhNkXOz>Z5yWvcgF(Tf zMU-pN#V_&ll8o#PwBv%b3Ll#C#%u}67loV6N9eOrzm)k#^0thEp4zZ>iGHza4RLIjv;jds^i!o)o0tjrm97uMi$LuLT#zreOQ}`Q%~^9@NZrl(#SUX z7;>c#zpBHOE-yX;9wzCHbpH;T=MV?>OBKF__P!aaDBMkV+CW(KX6I(9{zc~*tzl%} z`oI{Z;`b3Kh>U)QsIpmU5N#6+s2?5n{>wkU6()YNA0~b+`QsKw^UiFhZaHd5;*2^1 zrA%-foV{`kTQeh)g?3shifuinCS#w=7KI?}x^8`_-m^zQPf}SzIU9k~efIY!kc*T*SPFe03ABZ961V%|sRwK{hdwWVYv`{WY? z7DOut9^dD>3Kv@9v~*x6&I!p3nYE#87b>J_f`R;&Tcva9%`Fp-#z+&5PBB|B6a<*dQye7XxZhw@T#IR{K_ z3=HW7rA$R*IE~CRw#h0&o<{UUNfC0BQg+0;ltq^tiSlACCVEY4l>Dn>g?NLPs3h*| zTc+fBU^hVh3!aT}<2c$%0s%Op4BKnxB)E*i%Ny_ZLPf_*0#O+0$BWfr?6?GS6+J+1 z=)(>pxCR!v*J>6@uC(_3TwVD>_BGP^^aL+~2Sp)0ULi~XikNzS{D_op>uK6_g)3c< zqlHlOk-oJ($po{GM#n2m)fS#gkJ2YW*i*JCjB&WT(8KJ^wZg_>C)!+|((t$Vt#CZ( z^_PQd->O~Kw8m?Xg_?qT6#paI7>-+d0RR5ifA`&eu1S8m#~xiHwsV^x#V;>%v zsr%Ttd6Io5Blm!?L#V75n3Bc98&{5fQY7YN1d?Ij-~amWDbcFq=QQ~F)XNsSAaF~F zdOplX+2?3h(xpz7*Yo>d|5xGv*8ckq(wl6$sz>Y^B}AYMCHrQ(RWnLXR45pPE_hz- z&ZoWSQFCD@Rz$P;5GR6!O8Sfai8UvKS~4idi5OtZvaI~FgNI*#t>COi*t$57|ndh@+^mGyh6QN^e8c;Lg|#W!4~1$b2VIg zBU8H;A&TzU@$)eD%+f;O>5+UH8<-);UXWNun+JX;aV_hnX7;EFcLhdq$Eh~&tgWz-)5C@Gv7 zZSK>7hP(noRkOjAa8E}x%*C}?GV45&lSa~)Qye%D#?v~oKuB+M%QLH(GHe`5g+E7; zwT&I;eR>DC0qW#Qn^FcEXv{H;G>>p8YADP1a-Zb^Hn)-rKH>`NZJ9(J)RS}=8MoE0W2tr znk(8Y#*U5V;bpbxS};8)K!}S$3AWNcvGrblA7-l&#>K=GHyUBo&Nx$?5aSL745$K@ zsasPl2>jcB>&^eN-vzQ+?@*f)lACx$S(0NBT#CQ~B2ONV0nnO@12dB@4p^<=5#mSt z(3omAC7OV2?8q{T!75wIB^KPSs&G+@<}xZIP2LS!We7$#aYLGse_bHvJl~l*?8HE~ z@;`rpNHd|{Q#qmA0*jw)_z0fMS@U_!D?hQ0*z*k-%+4ekYSO1k^io^&%&f`6&5Q@sjc-HHp&6CTeroE0ZCy2V-a3!NH*| z8I)tpdta;X*mN#&r^|5W9Aq+(FX51LDbjZ9LPY|Qdn?@#DS52U0KuZGxZv6^`;$*a zIwPl{n4eU>TilsHq<%!`eOI%IG??7^BV?AMU-_TP*bo2gpS_I(|K$BO4*bdcoluEO zH!OYZ6GuD{bu!*ZL3Ggu#NAMUXTx*kiKP-{Udsykg0#9)r;(&hd?+uwG;QS9_-wIt zqDbt~W|f9pi|exaxX{akaa5&5P9C~8BMQeQ1YsF6&I)A_DiJB*IPD0a6bW%L2d|fQ zQi^mk4{7mm%0?0g?uc?n8l~psFd=9Ws1F-0i0S@HR{sRnIM5(a8#wKG3@3bsdKLPD z0*C0(QKDz)1{{Sc2^*yBF(dN@Y4z~ntkA3@2iD}rjD)`hAF6>EH_G70HRU3!O@sBI zzm;g6O~aGSu-LS;cG*WcUe5VZPhY8D9m?$2#Y|p-v>Azl!+7SEGcYQXs4VD3o~E^6 zjaV0uE?i~u@rWp8#k5{wUqf4+A_ww=^jFE>V29tx#Z@Id!f`1s>qqj>)>;tFo`{&1 zzERW|>BSt7Xo2{43u_8KFYGRY*i!9~6phJfS`9Z>Qa0FF>+SOXyMeMbzl&Ro6Ow9GmPoF&W(X}x&yy!1@VNQ%JtzEBO{6O^%1VhcNnQ&=!-E^3Hg zpA)WfVGFM+H(eGcm;1XD^ge1+9XOH-aBHJ%#u#H;1x9+$W8Vjx;_<{M)#yliBeq!pnMH6SvR;q>E!V!|d+GwCwozNQmi{h#*ZX{5~1F3_fO0coAqJH6&Y;Qee{}d{ZzU zc!G3WC<(vbpU&|GR0AKJjbpJs%H1d^rS_l5!?y)Xo&&4GPft50hhOCT3rwO$^a#}9 zZ~yjfK;)D4N|#SQ=m3%9wi6F|fD`b4f{<@$(+iGOeUP#)t;<>6jt}0or0EyQyp1j% zp#d4NRkgqN33!VFjOmOfDv{$CsJxxn!E>1=ucI0%Q#f=$Bf*uu!9SoFf5MT#XWH@F z(`E-2DJ7#^5Ux(2C|>DAuB~tchu!Xi6m%C|c5n?T#A@aPp1tB{h=l>RCRE(TmqT66 z0RGJ5Mr;XE1F;4l@gOTpi&tQjK%JE5R_I)`^`ex=Tkj6xHhPc=X$ z4hsv@*+9(ge8owImLz)6&3G`t(>A({Xg!_t7W5Du`@>~ifg2DX3!fk@4Zm7F%r-23 zW8X! zg$c3CxWVqM(X18jB8+^0l~U|nwz|T0rYO`Sm>!kW)v z^$4V?d!e#e4ZLz}IQ7;_N$omm9@JjI4n@^kn$+hu-n*PF62L7CBQBkXYr}MB;S7+b z_*_c4IA@Rgg_($X->4ZF?h49w z3$nCvj}-d0mgNrtKe>Vh{bWLf$`5hav3@$vk@$lnC1w}u!(xg7>zMKi25xAzq1&Lb z{|exuWY=9PEk@F37_#)O#3;_G{OVw%TihCZDqhxFZ%EkE!{Q)a25LMEVP4&4B@*Wx zk#c957DTR{7*z2Bt-~hpRk*)WiM2Vw$Emr#sJ9nY#}l{k7AKE`mrlDe%yr$QbpJ?= z`rLY-orrp)(8}as0P2hCcI=rIOiSQBOuT$ERx7Fz5L(P?T7#;5Ew>f63GSprs8n3q zoGXpMSSQ}?1V{;dd4akQIbrP&fpEn^lmR;P|Ke_vbAk6L*+fw-M74l0P_MR5rc8Ok z@%~#N7jwAHQ&SNbhS%+x|V|6;;T`xYL4GojvPl%q=5o}Nt#;Yz3wkc(xc^VqS1m3v28N2Duz}t z6Ki}q?HzO7T*XU2+rUe0|E;Hr;IK6t7^x0>-QnV@m>1K_YrHL7MyB_;1t^JBGEdZn zknA%=|1uTn%XY5x=f}haOv-RiD~}ievJtqUn{;tWwfagCeW%N_pq`Zm1t$wzB==i@HkIUdu6;{v6QA&h2Toy13kq`1hXgEB5}wTthm z_+?OEx|Sgk&!cE8lCG;xFi2Hbq!^Z#UB&BSzQK!loKQ?gg7|}iyjbAke`(8Z_)IY? z33Clg+~99j0r9FfsU_;wL-SpOr6H2fz{;R* z4$?ekiUAe0wir5v9<)|6s1Z@&S?eZ$&3=Z}FCGoByN;XA@uRf}O$36fRI&P~COkx1 z;_TYhmdC_FvDeRVDq|y3X027eoAV@+zPcbG*bjVPU3D2KV*o~L#IgdV)TG1+2q&SV zI3tRG#c4+a3)bA?LP;Bp`ylRnt6HJ@RxHRxH=xu?K*k!pxK*k<NR}APjyN`%<-7HVSv|kCCW70?iP$nPBh;80!*^fB@xSHvWO!iDk*?3Uf z6IHXxXx{!iZ~p8iTV71mvURUy=S(z=#jIqK7+M3G*9=XY3Drs{{f;q55T=U;N*IQnXWuBD{cmmq0nyB}HXQrp z!%i4R`5>YV&6O^tE-{#+(x5XmQFJy6E>f~V(8O2@B(U2o#9^3(0glpSeB~FYPA*!K zz1p(&HaegUN>ZT#SxTF}jwggMNEc%%XQgAOr8n=E(w^=x{}Pa{H=>G#JFGgvKW%dB zmjJwNC4!JqM8pPTN_1t z=gwGhk#NO6CS<_GM-6b>L$!qpd_Cy6a88^8rXL41mCj887$5ZEoaQJ2LyBQ3=mVJO zCawjj`ql&w5#i+YWzR85iAKUEq3TraoiDu`eh@ZD^gz8Cp|)WBeh*%J42tEtL+o=Y zruOTixIxg^969@U zXnvawJXB#S&8gGkgXj>Flewxk^drfkbVxt@ux(|AAMejYnSS8&^)rm9ibQm0WT1@1j!Tfd}D2S#)jUV11g%CRiSuo+>ee?PznBX$~Hc6qD(|T_TLg?gaxPV4i zFWS(D=cw$BEKbsqnB1EA$$rud8;&iJQJNdeo$jf&+_9!$k0@KRCnBd*0K!8ONCXdt zw8^OGU^6k}D@mya`or=vN{3OhGT>b_B_oA&j>{n5*}(^13E6i80;gpV_>UwC*J!mH z)FS!^n8Tu zfVLzG>B}4o9Hi~%Sa#e51sI4TazXRqZ=c@^3~opiEj>Wp*K0d9V;u|#1L)+kWe!L0 z2!YsBfPvr2xR5E~V&>sQ86P~h&AZ5^VVPN>PLp9#$*#vmg->;l?N?j*uo$-dP4Am0 z&zwiuNxDNHitD<8SMeBOV~Is#Ipv4sEaesUGF~;DfIvt{stw=RKzm0wOt{<^OmZ-K zHCP^i>EIxBK*m?ql(UB1TY)*Cn1W`=x_iuApcM9LBxe-2h1+SWUOE1JXOserG{tt^ z-OjrkAxj*UtZ1M$Z*?B0*n+DP5MQ?;mQUF&QfQc^UEamifqA7Sb^2Prz+=!<8$O6l z6MGSss!@cs7M^hdg3?PUw#gbHo}p;Et|MQwu6MKVjnE!qHp}P2?eO=xP zy7DBT=+?3Ku&0EZML)OW*@ZV?}rg`G_3YuKM8MCRa+eQg?dvNj>PLy zA659JS1gv!?L!5rbfz}IU6KqER(Ba^nyAx8t?Qz%F>E&YS2wrpWkyD2{kd_sq`$T#5B&e09rdKg`$e1K9Qi?jZ;<;lhR z?6kNYeyJ@eRJvn<%$>W2M-^GF;L()Q7p^XkLVUY%KpDZ^46vzb*x*_)Edv~Wh7PZG zBN?3ajD!9TQ*yRjD387@Z{2NmUA#jKRc&M|wCGOL9VY|clo@Z@R#ItdE6SkO;Eo#& z?G9bEX=saeF{C8e%jV-ZsQtQcvaekNUBd(j3eiEq66{`~)pxe4YU?M?Ja~=9q;?49 zD*a)IQ?;1Bz)i70*_|x;C>zxRPG#?_+kD-;ruC9hefQ0Oc#~26azHU5{vt*~hkaBz z$0Ir?BEc9R53VK43KDDnS^vvHu}Lmuuee--6M0rAvSDxQq}MHOe&5>fA>4RH&vmY?T4h4hX`_A; z=zEyAT;(2&x04mKSK3)Ah1%pYnp>LKR4UwAnRR`dQ!mTK@+W=TlOyaJh4b9Fr{G>orPSXexXO!im7~&PX?EO-wN=JB_JKw(A9p z2`kxVQW~8+xWZr?^@%$fz)7N~f%2^!o~{@Ya6@~&#iF%lce9}_iH)HL#*WkhmX+{1 z3mWqk?Mi>TL2;SkZnIe|BtLiRg$;k$J^^YP=xj3B$g(yWG%AVP-+`gb+2V@?I}L=N&1fz8TILiIL+a2@84=^eXnEF%rT zP_!wm11o8DrFL*BL>@!e+q|BB)~y0e(_8Y*GQAAFX!5s%*|sOm+e}7?VY>hCwpSJ0=aY0S6EvO6iNK-sHJj^l!{#OC<>mtMd3{8VHmC z@tK_3%1SLPwh~t~xgFvyTs0$d(0KH$U*gDnO_n3bc?FFndNOIzpE5Vd-CUQL_acw-m_>|SKRak#dNZ8q8t-{#hH|7|X zgzLlJ+dq2q-`!-RKX|{r$g0{acn#!&ti$1al>XCV7Tjekh1;#0NH=tg=7pR5Ds%cJ zl85NR>D3QUwYl!q zjL5t@3iowUx}7epTXYceQWD&uO`3(34>Gij!VxFg=Xqwfj6ydMI`ft0pCsY+(Mzhy zR`cF;!ATbZGlJPEOR^1f=h@ma??>k>iHrB;MXUE(azPZQ$s7j5fMzGSA|_2QhTr~2 zw^?*t(B0cCKk`M02ZYfV{T)NvhD#T3U|ZC0Hx^|bU{%|5DxaCzU>?M^6Z8nwvG(o`q9sw%Bs zL24FVePY(Ts%D1Rc1KiFw4QL^D{VHfeF2p5FaPbBwdzJWk6I9J#z4s`O^e2#UUpGE zt4Ze)aJwz4xRl}V>UqkWzRk9xichd#MJUwV?};!PTTz0^292quefcGtp0XH5qT^TG z30vXdM{#q~dPaJQjVU)@`U@Q_A8-j8GYo9Ha@D(9@+N!!3>C;+F^!$eE=!(z$xTmv z=FTRmJo5mc*01!+h^*el#IwVHpCzhI83A0;pcQ8+hA@P%ZK((xr6@N$Dv~BXzP5ti zMaW;Y-4PE6X>)ggN`OLvbWU8HOzFNchfc@ZcYxI6SK2eb{rBE{c~>-06RL}13N)ZH zeBHgyJMIPptc@62>FkX$dMhp{86xB=iNp-6{Xc6tCRE8&wQZ-Y9cNb5it%s z4&>1mRg=My?dVO(5FQaFB4NCDm&8BRC3#sgK!V)~1;zX`Dg3DW#)>ekCfl2Ux2*P; z+%_F);Kf9PhZ!i86h)wOLBf7C6+isV|8bkWrW;__UVpsR958dep4mZ#n8@$p>ls4l zE0WA&c1?B3>3T>Si|&h7Hj92J8-aMZg1s1DCv(?pAj`?AjpM(Zs?pJc?%{|C3rEJQ zFL_+Ey6l$NGCf1tN%xc_@k3)my=`3W*by8j^^BBL1urS4IV^Co0Vq51Tsq5G)n?J5 z#STBU`yy9cD>sO}Ji3R3uOouxYLa5^n+1uoM61%bjBt|fA^j1_)2T5xvc>*}{qp6A z=Xe=rvA(QHF~7y=s%94L>?k!K7n|z)8u_vmchISt0)HxSN7a&O>Hyju2?N5w$v%cbgxlqmVING zHXESQMw(E6km>SpcSwmwA?{7%X%qt*oJGO{r->Tl+SNzZaXR?KNB>AsmVr#-cOQId4QCE3$^Oj|VHI;c2~nh)FZ z>Ti^X&UW+WW5lur7+oW}%O2rD8`C?>&^2x6+Xru&yPD26!@3+S*-j{IhvlX5#4O&x zpf><_CHn?Q;9lQKSgeVzA&@x{^6Rj*wLY`y-RAarZk^sps=nQlerB@0n;W-tUbm&? zRULNh9(bxX(;e-`uRs}OAI+!bAmi9qEyygwQJBuM_dS?7O0hDyl)I*%$#I}NMd2Qi zEA93r7Mc#o*vEf8r%Z%x*B8TIL+!=9t^?_CLT*{l$1Tr=O8ek+^07J3r1j|JNo*T{ zz=l2jTesTN57zBzx5pihj<{<^D!3L`+n#!TWlQ5?nVt4jiNmGuoNTHObJv<~-m1*= zT-~%zWYIQiR~xr`o(<4<)_8esw@KGd+ZkQ!oE3};QJIJquGmUb605IuqKemPKA6(G z1@B4-NWouHMd!n~-ZEj7d(CcOt~I$KP);l?u0Kqw&r;@S^UturJBeqs7-QpjTY36jtYj&emSGgK5gnB4T(>dHP||OB zKu;GfpSPBYa&k1K3i%2fjo0q6ku}Sqpm0C3C7+4y)0C!DJNIL!ajZ0RlUlmCr>lWA z_8r>e?nba$KnwqF`-k_K>XaKuWG(>0Cn}Z-v;#1Gy;<1YV3;!2Zx7x)xvSZG5;@50 zHcuK|^A9ANR&TG*ILYEJo2-WfZSsxUoW1mXW>C9iU11D-8%g+xJd_{QK9Gi9je>LL7EC3y&?`tS6nLZ|0IliK? za#(88)hoi`phQhBRbwkAs!Q04`QPCb-V?(;mZPv(wMrV>laNP1?z9_tV%NLdGQ|<> zQ662#<>^?Wb83IVa5_Ky%|E%#ynVc$8uii7I;l~+N`%6}n*+XqD>@BoEz3Bgvc*l? zHGY*QYW2-$iiJD2dmIDcI|YS|?VV-5^eE(s#ZfC0F@YDLLY-=~iz}vlu=9PcP3BTs zZc+qmUIywUbcmY+yR~lA@?dyix?n!U#^sr+*2GVUT(=~!H42-c5ZsX*vzVN9gU9`j zCcW5k1_nN(4X|9WqZRfxg19E!BF%*XLZrA+oa<$(Y^}y(X56zeoJEmShH!BmsV>R* z+8uY{IHlQBn{9QB>gbw0+p?A-hL5$4ZFa0uwfD-RMiCTyw8z@1=2pfIelZY@jf=nl zXI*Bvi;^m`3cFb+ZQ6!VKE=|M*Y7lkFC*54sJT6u2#qXZJQ)FV1z~3iwf9fZ;o6^S z0^|A>Or~D$yf1hs+F`FJc8xcdqi=N+bd$;df2Cc)O$0Fv{8Pmh05rf8#2W!0o~MKR zA?^Vbz=I-afF|gP7MK~^iF2FHuEh7GjdF34v1c6HxZ290)`Hw4R6Gh9Q(cQL^Qxok z>g*~!oFiG0FM$3VZCE%C2g_wEXv!gBxR7?*xDU|yQ_v;ag{ga7g75PWRz$i*JIW9; zet*7BU{L9w+f5c%K@IVF9UT6twkkk2Ogu9k6%Y52KM*_~5`L1b+R;%nTnGnfeHQO< zhEdxw0)AOpf03I7XA@ndOE1_5)$?I9*lTsLUyY5Ic!T{$UiNOM#NP=>#sah`S&Nx= z(eZTS6T&s=zJYPYUT6kqfn{VA7+4or>;KvnUFi$Z`ypL~uL_T?Ylu`*)6PfBBrO(+ zbGXI$c1kT_kRt}G-%Lw%y%;T`c~&wu4i~cuiiGMXXcRsYNsoEh$CPILxrC)7>Q!mR z5hGUaRd@UVMl(tp?P@E@;@d`Mb+Vh5=vT#>MfIGAR3n6~JXME#Wd;s*$xc?F_K6xc z5*0gHv2)*+sf`cnk`xUVB*yEao(!RDiRm45FP`@Jv?naJb>du@q2wi0c*@2ZZp%NSl_y;m3PLEd2J)@HSlq33P4n bf5D(iwXes)`>HQy0PMwIRa-1@$oc*O47)If delta 698 zcmYk)(MywI6vuJSt4UeS3!9;?R6Ed_&fA56Hj;RpTIG)t1GkoA%2>T5~P2#+HyI1e5h*EVa7%W){x(iG3B!mKL#J zh!u;2-ZIMtalO(B^7I*4Y+L5YRJ)Z_9653^CL^0J708IG;|8(Uopu3bR~C~eU_cHaR zrb`@cebP@oZU61v%iFis$7d%is;Y`sKZnz!xvO_>!h4%xJ)6z;zMl^3qs2GBJzs?J z;_I(rGn~a2t0BBN_|NL(_!>&MHhBFr)_7dTx1*;Xp_XVyq47XfcaE)+n!D@x@1A&|Lta~_d z6W~8TrnlUn+*q<&q5M$fHpvahZMfx<+@joCvRa}1NaQX(Z2Ww6*2C@)?krfX5PmFh zpN?F?E%yPwINX_hnR}FbOI9nCpNuk9Nrof)_qJc=f=m_2epb$iUZMO{7*F2l8kBcGecG@ly^nW z0joi_0!El7vI3@82)__G2aExZ0lPSybcC=?WED)WP<|L?I?3fnCnIM?->bWOqidQzf^jK@}9`~FIabdyk`yxE8R0=oczp?)e7Zz zBBzA82IQEq!aXy_iLHd`70T~LP6@jrhlCZ+jB#QsVXRgt?~9xhhG&imE1ek|##X~v ztx*0Ta%vdY@U(NoCO^-N4P&cedWG_V$oXGbbwfU3p<(mFk0fKA*lL(wq5M(g)G%s5 zHXFuRC$<`%Gkj;iM)`_i#=@rVKMNSR7a%Qt(jCEqGVS0t~mr-`9VbsYV VK>uEB*rc8g8|G)_lIRu4{{Z5YY8(In delta 41 vcmX>hvzv>Ndm^Lg?WixL&F3RQ(z{ume$^Fq+O$x zoT`mnmy$rzP%#WC2^5lHEViLs24-3k?l4o*;=o%0w@nL~5s+SzAWf|#y}!CAFBDGHr|PGE)Y<q!cQS`CJ++JeKr0*69E1NleQwyh=(zfQ!%5w7SRzB5oy@d- z#$tEagM+%x;`Ru6oH=xm?Pi-bD@rde9Qn$_^y;HYI~`-2b;o399)E&lL{-L40&I}jU3HBR+fM9#m_mrq45-jS?EQ5?NTHM12QY;$LU)4--Na_=Vvs@) zv7@AL3osCVVjtuV2+W6VtZwWvjOGLPP~F(G7~MXb@X0k^>@byxZcudZvMKqZ zY&x%&jh2iWW=fBy*s$g}R18{5XWD?BPO%{>4U5Gn<3kqHc=wnIJ=0SX*t7YQWHH#ACXi#Nm}$tG#%$Zw>1`~e0yY33RV?LkQa(?uc|~ned0xF zTKc|FC+i+BOMT+|B4$8+;@gKAP@VYpg9cP5zDFuBXMT&i|Laa!!?=^@ODfYb%u_DF3Hy~D|*mn+MMT&jrA(m21 z=j;N+cJtQp{R?7y1Y2BN-Kf&B@YhA%>&8y-%a)I6md3X0u~>$pYQ;>A>cwGnt-&Kb zY!9=fKA^|>)rxqBqWf_@o*qiK-btzE-9ri9VhzPj#}F4S1A0_TJ333G9W%-d&0&_! z;+i#-rmKWjc5m8AG2POWLz%X1gM)N^BHq4IH&iw8xH#gFZ4YMJ*f#45aQl0Gq>1a9 zL|ao~DsoU3llH2rXy;WCc}x})FG^Jr`IT1Z;^qgDZHmEKo=g7Bcy<^e8`SUD@bzS;7p<~c_PwYQ9Pdd7LtytqUhj7G5)kHBwmz?V*Dr4ka$@tit*!^ z0Tspg3Cw_sV*IC|0Tspg&oBcjit(Rg22>Q|zW@!WD8_#&D+=%F;zcq3D_K!USUzOG z29L|f>^C6G$LzPDLx^rv@-3b)bySp9M`c;%mqM&4tNb#E6=juQ4zZ%F@+%-#lvREu z#EP=YuYy=nR(S@oqO9^aL9Dn@$*=a@s7S}cUmtasOyg#wX*cnVEY+P=&DP1AZQ^&b zRC`fM$;3%%s=X|wWa3%OfSPUMIn02XZQ}Q!0X5si1ZF_ZHgO6wpk|x+186|aHt|PU zt9VaWz+YdOI$d8V7`y{^Ikp$OLb;_NtD^3zI_{=AF1P$$ zRz+SkNa#PLRpe#ciTx*L5F+#}X3#^WJxc~2MB zak=HZtd1otAF>P5I+nn}xT6B2$?HamK%64JvH z5}uOH4lhax374g_!^=`a!WS_EN=Wz;Wp?$14>BvZOniY5`G6XpoE0q zl_kV`x_Cmu|CS|0!qSlSD$;~V;NT3R@A1s~o{EI@R3@bNQxMB9EXuu~hFH3=aF>pK znKtaOEeSK8VOx{*Jw9#eIdHr&&`rB~`fS<(WbrrlHulBSI@2?{LtoT=oAt$QE2h)8 z@3e1+?*V$UvG>0l2lzMhwAn}OT5{N07B^F=IDMsOCv+>t;e-3nAI~+?FFneJX$uk^ zU<2Q5kkaX=O)Q}=DwK_xk_i&<|9?mVejXBI7KTztjM*4U88PNyC}qTGz);GF(TJfG z5o0cfQbddrt4G++q~wW48o_yBmo%t8-1~?SH!^C=XY6OO%a!Ay)K-u@hqXjY!#uLoB}$ zDH{ohROgmq29)XC za?F7GIJW{cphC{AB!lWlA(GR@3puw+R>^JgLD++Gak&q9`OyT*IW)I#~`HCT=VoZSbF1#K~Q zSJXiDbVyZHpdY#F=|iBZ>aM)@su%0Gs7f8Cda?c(s9NW)s)6c;PpHZaP<6uzP<4jO zYM{DZSCx8Db^CLmYQ1|?4OBB}RhbE@W+p+^neOTus2<&;DziYP(682 zRc3>#Coh4jv)x;2pn5K^Dsw>9^9`Wt9CyvNSG~0ODOG8}R4*-Q0aY8^wKY(^?HN^R z1XVY!2UQ#0bv00pKCdcsLDg6fs5;kuUkz0E7gVJQRDGl$RBdwC*Fg10Z>q{XQ1!?6 zfU5J{TWg>?Ia5`dLDfkURBd)QTzl2a%3@WSkEvc(GN9^wx3vbU>(;2s0#J3`K2UXm kyRinUcXz1DLQwVY!=UOyx2*=M=`E_V2vkiU163FO2dg(EQ~&?~ literal 11656 zcmds-+lm}j6ozw9#EAxsX9ZbAjTcUOy87G~5;7(vqevtQ-Uwm$^zQC5)m2R$W^7Ox z5WJ9}A_f$MfCw%40^_52J1=0KAh@e4F=Ma)Z_3NbT=n6by=tcW|MuFu_Nm1)d-u-X zy>n|{uKMe;_107_hGuT$eKU)qcwLM%TIc81#OI@6D8tyAsf}e6M^pJAn+}X$lPwtp zHXKSCo1vfjQ7F59I&n|)7Z3J+Ea@G85SuWS#Ke9gX(UNt?M+D>X473)U|mKgndHCj z-k(IfZe08MEVfA^)4AiKcwYN7ly{@i$XW@a9d{iEKi!ruAP!+Ml!G_OZ`z6)XqMA{FwWBeQRpQcH@d42g!z4 zuh+eeOExurur(c*&u@6gukYWxPyuY5s0cQzmTpxo-L6`?Q?+!rYUy6p(*2_J8x{WH z^`dqa(kqHrA5o+ermT)e723u826G`Y1i6k`Gty-E$LXX(Tf!3f`UsHi2~0T7+|0f%pJhoZHnj10Ub{9LxsIZExs-_$Ne~nxj-zNa zugSHr1TNgSjVU^iY3(U2g65J4noI;5BqGot5rGDY2sB7Upg|%64H6M(kcdEoq+8IS zS1%-_W_Cc5ZUK;u$5mdMhvd>+Ef<6mxgeCt1))SP2rcEZcR0LE7nL_!E9 z5<)1E5JHKB5K0yg2=(fZ<=Y&K7ml#7$Sy)>Nmv~wEDaK2X^;p@gG5*wB*M}l5tast zurx@7r9mPr4Z3fa>P9+;M9^6+0)!F~Ae4vzp`{2GFCO6(kZHTSl!7ixfd)wmG)PjQ zL6QOuk`!o=q(Flt1sWtN&>%^H2HCU?NV0?mB$>7WS$;aI6#!)Gv`TCDP+GgI(~3}% zR)mtYB9u(q2qn`tLdmp^P%>>JluX+QCDS%S-B&7~w$=V1WWC}>LN&I5_Z{K5&Hur+ z$~NPrBP>|5N7-8vY>x?6gG8_zB!bl-5v&G@U^Pett3e`I4HCg>kO)?TOt63?f(2yb zgpy(JkPLgPWr)yHhKrXUy$tl1GSFuk&>+cx21y1qNHU;7k^v2p3}}#KK!YR$8YCIe zAj<$CNd^GfIH@wwKa_#~>I@*1Gz17O8-m3vd*8bQCvth}2Xna+yL;B|NXo7KHLvGR zrEEs-1WTB|@b%hekXf;Fo4DInzshD1g+uG^G`o{0`5Bf!)-FD{NuJ+@c867pQ#Xm6 zlfX~Yz}?`ArZ!A-`1Ut{?|--Ee(778xg#`gfVcA->#22*-jS(219!;0`hQd4)m;km zlL5Ka`8NS}q7BazQAO3qpxp5ZW%*#LHb1{IfdM(QdJN nt~6>7o<)Qg(1&{n5cTSC4*|0t+!w$s-fzGx-fzHcx!>>)-;Dl# diff --git a/assets/bundles/DataTable/tbglobalconfig.bin b/assets/bundles/DataTable/tbglobalconfig.bin index 15f47ab8343cb1882533b7677a26b8828d1f2cd8..580571605ae5ab5cf1c8cfbb837c73b325657705 100644 GIT binary patch delta 13 UcmbO%G(~7aE>q)|jX6s>03{X$iU0rr delta 13 UcmbOtG+Agu?#6;898Ajv0VEa#&;S4c diff --git a/assets/bundles/DataTable/tblanguage.bin b/assets/bundles/DataTable/tblanguage.bin index ae6da0ac17b394ea67ddc4a99ca62ce0059cd0e6..d9e42c19e5e4417f0024830300d1f42549a4e260 100644 GIT binary patch delta 690 zcmY+CO-sWt7=SlMlO5*A|M1dvPUo=}FS=bE3_OjO5?yGUV#|b{3VQP($k@Rjpx{Zz z@F0j6|H_#D4AZ=^HizU1ybmEfX#Z{N2svw7=;tlk%^kEhwX)uZI+ z^=3VPSnh0GHS(~P)$SWDTR0t@eni&;Q;T*2eIIn zQ${tbj$`8`14wuf6NDkOmCziqMBd^+^cg3L(;x%Q2Yu_L&2296(BPC Ze1)pe(H+kqjkq8PDQwEGw|v|V=`V{#*nt25 delta 56 zcmV-80LTA=HIXm@FtGuS3=GA$snP#;KKRAgt#$$gGA$snP#;KKRODh$PAn?P&(C9JnE2BU0L8ltX8-^I diff --git a/proto_cs b/proto_cs index f055100c..9a53ebc7 160000 --- a/proto_cs +++ b/proto_cs @@ -1 +1 @@ -Subproject commit f055100cf0f378ddd96d8e153655b5166c65e6e8 +Subproject commit 9a53ebc7f9ada1dc2f7bb50b3ce088ddb98ee6c4 diff --git a/settings/v2/packages/cocos-service.json b/settings/v2/packages/cocos-service.json index f7dec085..c65b54dd 100644 --- a/settings/v2/packages/cocos-service.json +++ b/settings/v2/packages/cocos-service.json @@ -1,7 +1,7 @@ { "__version__": "3.0.7", "game": { - "name": "UNKNOW GAME", + "name": "未知游戏", "app_id": "UNKNOW", "c_id": "0" }, diff --git a/settings/v2/packages/information.json b/settings/v2/packages/information.json index 94848dec..b76ead73 100644 --- a/settings/v2/packages/information.json +++ b/settings/v2/packages/information.json @@ -4,19 +4,19 @@ "customSplash": { "id": "customSplash", "label": "customSplash", - "enable": false, + "enable": true, "customSplash": { - "complete": false, - "form": "https://creator-api.cocos.com/api/form/show?" + "complete": true, + "form": "https://creator-api.cocos.com/api/form/show?sid=800ccf353f6eb54dc483510ce462e944" } }, "removeSplash": { "id": "removeSplash", "label": "removeSplash", - "enable": false, + "enable": true, "removeSplash": { - "complete": false, - "form": "https://creator-api.cocos.com/api/form/show?" + "complete": true, + "form": "https://creator-api.cocos.com/api/form/show?sid=800ccf353f6eb54dc483510ce462e944" } } } diff --git a/xchat_cfg b/xchat_cfg index f0e8993d..151531a5 160000 --- a/xchat_cfg +++ b/xchat_cfg @@ -1 +1 @@ -Subproject commit f0e8993d1e825604324f0532d3fbdb3d0e40f12d +Subproject commit 151531a5c7d7e50be490d54df2c1ab8ba4d51005 From 8c5f8243a9a732554a3594fbc3c1126d01f13550 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 15:31:02 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=A1=A8=E5=92=8C=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- proto_cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto_cs b/proto_cs index 9a53ebc7..667f36bd 160000 --- a/proto_cs +++ b/proto_cs @@ -1 +1 @@ -Subproject commit 9a53ebc7f9ada1dc2f7bb50b3ce088ddb98ee6c4 +Subproject commit 667f36bd33dd72e2d585ecc57d0783dca347dbf3 From bc3660f329cdc94379e4e82556c7550ff7907195 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 15:36:44 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A1=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/bundles/DataTable/tbglobalconfig.bin | Bin 2324 -> 2324 bytes assets/bundles/DataTable/tbpurchaseconfig.bin | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/bundles/DataTable/tbglobalconfig.bin b/assets/bundles/DataTable/tbglobalconfig.bin index 6136d9c834ac6b1c45b8351b34385faa51e7a037..580571605ae5ab5cf1c8cfbb837c73b325657705 100644 GIT binary patch delta 12 TcmbOtG(~7a8e_-C^tBuS9e)Iw delta 12 TcmbOtG(~7a8l(Nj^tBuS91;Xj diff --git a/assets/bundles/DataTable/tbpurchaseconfig.bin b/assets/bundles/DataTable/tbpurchaseconfig.bin index 7984f2ee..f1d5c68e 100644 --- a/assets/bundles/DataTable/tbpurchaseconfig.bin +++ b/assets/bundles/DataTable/tbpurchaseconfig.bin @@ -1 +1,2 @@ - 充值挡? 充值挡??? 充值挡?NN 充值挡?u/u/ 充值挡??o?o 充值挡? 7天会员?30天会员Їϋ?增加聊天次数? \ No newline at end of file + 充值挡位1 充值挡位2 充值挡位3NN 充值挡位4u/u/ 充值挡位5oo 充值挡位6 +7天会员 30天会员Їϋ增加聊天次数 \ No newline at end of file From 7665696c83336dbc0a3ba2a93656b39cb289be6f Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 16:12:40 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/data/GirlData.ts | 24 +++++++++++++++++++ .../network/services/MockGirlService.ts | 2 +- .../chat18x/ui/panels/GirlDetailPanel.ts | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/assets/Scripts/chat18x/data/GirlData.ts b/assets/Scripts/chat18x/data/GirlData.ts index 84791595..e5fc1b49 100644 --- a/assets/Scripts/chat18x/data/GirlData.ts +++ b/assets/Scripts/chat18x/data/GirlData.ts @@ -288,6 +288,18 @@ export class GirlData extends BaseData { return oneData.getAllGrilPhotoDataId(); } + /** 获取第一个技师图片的资源路径 */ + public getFirstGrilPhotoPath(categoryId: string, girlId: number): string { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return ""; + // 第一个 id + const ids = this.getAllGrilPhotoDataId(categoryId, girlId); + const length = ids.length; + if (length <= 0) return ""; + // 返回数据 + return oneData.getGrilPhotoPath(ids[0]); + } + /** 获取技师图片的类型 */ public getGrilPhotoType(categoryId: string, girlId: number, id: number): number { let oneData = this.getGrilDetail(categoryId, girlId); @@ -328,6 +340,18 @@ export class GirlData extends BaseData { let oneData = this.getGrilDetail(categoryId, girlId); if (!oneData) return []; return oneData.getAllGrilVideoDataId(); + } + + /** 获取第一个技师视频的资源路径 */ + public getFirstGrilVideoPath(categoryId: string, girlId: number): string { + let oneData = this.getGrilDetail(categoryId, girlId); + if (!oneData) return ""; + // 第一个 id + const ids = this.getAllGrilVideoDataId(categoryId, girlId); + const length = ids.length; + if (length <= 0) return ""; + // 返回数据 + return oneData.getGrilVideoPath(ids[0]); } /** 获取技师视频的资源路径 */ diff --git a/assets/Scripts/chat18x/network/services/MockGirlService.ts b/assets/Scripts/chat18x/network/services/MockGirlService.ts index 9c43ec10..86aac2ef 100644 --- a/assets/Scripts/chat18x/network/services/MockGirlService.ts +++ b/assets/Scripts/chat18x/network/services/MockGirlService.ts @@ -195,7 +195,7 @@ export class MockGirlService implements IGirlService { let videoPrice = girlDetailConfig.getVideoPriceById(girlId, id); let oneData = this.genVideo(id, videoPath, videoEmotion, videoPrice); videoData.push(oneData); - } + } // 详细数据 let detail = this.genDetail(girlId, detailDesc, photoData, videoData); // 图片解锁数据 diff --git a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts index 620acf0f..fc4fcc00 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts @@ -166,7 +166,8 @@ export class GirlDetailPanel extends li_BaseView { this.descAge.string = LanguageUtils.getText("girldetailpanel.age") + age.toString(); - const firstPath = girlData.getGrilVideoPath(this.category.toString(), this.id, 0); + const firstPath = girlData.getFirstGrilVideoPath(this.category.toString(), this.id); + console.log("firstPath: ", firstPath); ResManager.I.changeBundleVideo( this.avatarVideo, firstPath, From e7cb527ca00d4c75da6f6ad909e08f377b863285 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 16:35:21 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/data/DataManager.ts | 6 ------ assets/Scripts/chat18x/data/GirlBriefData.ts | 1 - assets/Scripts/chat18x/data/GirlDetailData.ts | 1 - assets/Scripts/chat18x/data/GirlUnlockData.ts | 6 +++--- assets/Scripts/chat18x/data/LoginData.ts | 1 - assets/Scripts/chat18x/manager/ConfigManager.ts | 6 ------ assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts | 1 - 7 files changed, 3 insertions(+), 19 deletions(-) diff --git a/assets/Scripts/chat18x/data/DataManager.ts b/assets/Scripts/chat18x/data/DataManager.ts index a29fb30e..f8845c9e 100644 --- a/assets/Scripts/chat18x/data/DataManager.ts +++ b/assets/Scripts/chat18x/data/DataManager.ts @@ -110,8 +110,6 @@ export class DataManager { // 若你的 BaseData.init 接受 dataId,可传入 instance.init?.(dataId); this._dataMap.set(dataId, instance); - - console.log(`[DataManager] 实例化并缓存数据: ${dataId}`); return instance; } @@ -123,7 +121,6 @@ export class DataManager { if (data) { data.destroy?.(); this._dataMap.delete(dataId); - console.log(`[DataManager] 移除数据: ${dataId}`); return true; } return false; @@ -133,7 +130,6 @@ export class DataManager { * 重置所有数据 */ public resetAllData(): void { - console.log("[DataManager] 重置所有数据"); this._dataMap.forEach((data) => data.reset?.()); } @@ -141,7 +137,6 @@ export class DataManager { * 清空所有数据 */ public clearAllData(): void { - console.log("[DataManager] 清空所有数据"); this._dataMap.forEach((data) => data.clear?.()); } @@ -149,7 +144,6 @@ export class DataManager { * 销毁所有数据 */ public destroyAllData(): void { - console.log("[DataManager] 销毁所有数据"); this._dataMap.forEach((data) => data.destroy?.()); this._dataMap.clear(); } diff --git a/assets/Scripts/chat18x/data/GirlBriefData.ts b/assets/Scripts/chat18x/data/GirlBriefData.ts index 73ca409d..9f4813fc 100644 --- a/assets/Scripts/chat18x/data/GirlBriefData.ts +++ b/assets/Scripts/chat18x/data/GirlBriefData.ts @@ -93,7 +93,6 @@ export class GirlBriefData extends BaseData { this.vipUnlock = data.vipUnlock; this.avatarPath = data.avatarPath; this.listAvatarPath = data.listAvatarPath; - console.log("保存了技师的简要数据,id:", this.id); } /** 获取 id */ diff --git a/assets/Scripts/chat18x/data/GirlDetailData.ts b/assets/Scripts/chat18x/data/GirlDetailData.ts index 5d41de47..43cc5fb1 100644 --- a/assets/Scripts/chat18x/data/GirlDetailData.ts +++ b/assets/Scripts/chat18x/data/GirlDetailData.ts @@ -51,7 +51,6 @@ export class GirlDetailData extends BaseData { this.detailDesc = data.detailDesc; this.photoData = this.parseAllGirlPhoto(data.commercialImages); this.videoData = this.parseAllGirlVideo(data.commercialVideos); - console.log("保存了技师的详细数据,id:", this.id); } /** 获取 id */ diff --git a/assets/Scripts/chat18x/data/GirlUnlockData.ts b/assets/Scripts/chat18x/data/GirlUnlockData.ts index 4e65ecb3..e9bc4eb7 100644 --- a/assets/Scripts/chat18x/data/GirlUnlockData.ts +++ b/assets/Scripts/chat18x/data/GirlUnlockData.ts @@ -81,7 +81,7 @@ export class GirlUnlockData extends BaseData { if (!exists) { this.unlockedImageIds.push(id); } - console.log("当前解锁图片的所有id:", this.unlockedImageIds); + // console.log("技师 ", this.id, " 当前解锁图片的所有id:",this.unlockedImageIds); } /** 获取所有解锁图片的 id */ @@ -112,8 +112,8 @@ export class GirlUnlockData extends BaseData { let exists = this.isVideoUnlock(id);; if (!exists) { this.unlockedVideoIds.push(id); - } - console.log("当前解锁视频的所有id:", this.unlockedVideoIds); + } + // console.log("技师 ", this.id, " 当前解锁视频的所有id:",this.unlockedVideoIds); } /** 获取所有解锁视频的 id */ diff --git a/assets/Scripts/chat18x/data/LoginData.ts b/assets/Scripts/chat18x/data/LoginData.ts index 7a1f2fa4..b1590204 100644 --- a/assets/Scripts/chat18x/data/LoginData.ts +++ b/assets/Scripts/chat18x/data/LoginData.ts @@ -88,7 +88,6 @@ export class LoginData extends BaseData { /** 设置登录refresh token */ public set refreshToken(value: string) { this._refreshToken = value; - console.log("设置登录refresh token", this._refreshToken); } /** 获取登录refresh token */ diff --git a/assets/Scripts/chat18x/manager/ConfigManager.ts b/assets/Scripts/chat18x/manager/ConfigManager.ts index 283132ea..8e4804fd 100644 --- a/assets/Scripts/chat18x/manager/ConfigManager.ts +++ b/assets/Scripts/chat18x/manager/ConfigManager.ts @@ -156,8 +156,6 @@ export class ConfigManager { // 若你的 BaseConfig.init 接受 configId,可传入 instance.init?.(configId); this._dataMap.set(configId, instance); - - console.log(`[ConfigManager] 实例化并缓存数据: ${configId}`); return instance; } @@ -169,7 +167,6 @@ export class ConfigManager { if (data) { data.destroy?.(); this._dataMap.delete(configId); - console.log(`[ConfigManager] 移除数据: ${configId}`); return true; } return false; @@ -179,7 +176,6 @@ export class ConfigManager { * 重置所有数据 */ public resetAllData(): void { - console.log("[ConfigManager] 重置所有数据"); this._dataMap.forEach((data) => data.reset?.()); } @@ -187,7 +183,6 @@ export class ConfigManager { * 清空所有数据 */ public clearAllData(): void { - console.log("[ConfigManager] 清空所有数据"); this._dataMap.forEach((data) => data.clear?.()); } @@ -195,7 +190,6 @@ export class ConfigManager { * 销毁所有数据 */ public destroyAllData(): void { - console.log("[ConfigManager] 销毁所有数据"); this._dataMap.forEach((data) => data.destroy?.()); this._dataMap.clear(); } diff --git a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts index fc4fcc00..e9ab1ada 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts @@ -167,7 +167,6 @@ export class GirlDetailPanel extends li_BaseView { LanguageUtils.getText("girldetailpanel.age") + age.toString(); const firstPath = girlData.getFirstGrilVideoPath(this.category.toString(), this.id); - console.log("firstPath: ", firstPath); ResManager.I.changeBundleVideo( this.avatarVideo, firstPath, From d4d3e986b320c7cf48d2de7b375ae02b9f639bb0 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 19:44:45 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/chat18x/config/PurchaseConfig.ts | 4 +- assets/Scripts/chat18x/data/ShopData.ts | 77 ++-- .../chat18x/network/services/ChatService.ts | 16 +- .../chat18x/network/services/GirlService.ts | 10 + .../network/services/HttpChatService.ts | 30 +- .../network/services/HttpGirlService.ts | 22 + .../network/services/HttpShopService.ts | 17 +- .../chat18x/network/services/IChatService.ts | 8 +- .../chat18x/network/services/IGirlService.ts | 4 + .../chat18x/network/services/IShopService.ts | 4 +- .../network/services/MockChatService.ts | 85 +++- .../network/services/MockGirlService.ts | 22 +- .../network/services/MockShopService.ts | 45 +- .../chat18x/network/services/ShopService.ts | 7 +- assets/Scripts/proto/proto.pb.d.ts | 188 ++++++++ assets/Scripts/proto/proto.pb.js | 403 ++++++++++++++++++ proto_cs | 2 +- 17 files changed, 878 insertions(+), 66 deletions(-) diff --git a/assets/Scripts/chat18x/config/PurchaseConfig.ts b/assets/Scripts/chat18x/config/PurchaseConfig.ts index 002a480d..0eaaaf84 100644 --- a/assets/Scripts/chat18x/config/PurchaseConfig.ts +++ b/assets/Scripts/chat18x/config/PurchaseConfig.ts @@ -61,7 +61,7 @@ export class PurchaseConfig extends BaseConfig { // 获取所有 id let resultId = []; for (let one of allId) { - const firstDigit = one.toString()[0]; + const firstDigit = one.toString()[0]; // 取首位字符 if (firstDigit === "2") { resultId.push(one); } @@ -76,7 +76,7 @@ export class PurchaseConfig extends BaseConfig { // 获取所有 id let resultId = []; for (let one of allId) { - const firstDigit = one.toString()[0]; + const firstDigit = one.toString()[0]; // 取首位字符 if (firstDigit === "3") { resultId.push(one); } diff --git a/assets/Scripts/chat18x/data/ShopData.ts b/assets/Scripts/chat18x/data/ShopData.ts index 49ef5850..cd365fc2 100644 --- a/assets/Scripts/chat18x/data/ShopData.ts +++ b/assets/Scripts/chat18x/data/ShopData.ts @@ -1,12 +1,12 @@ /** - * 商品数据 + * 商城数据 */ import { BaseData } from "./BaseData"; import proto from 'db://assets/Scripts/proto/proto.pb.js'; export class ShopData extends BaseData { // 商品数据 - private _goods = new Map(); + private _goods = new Map(); // 商品 id private _goodIds: number[] = []; @@ -27,17 +27,16 @@ export class ShopData extends BaseData { } /** 设置商品数据 */ - public set goods(res: proto.cs.ICSGetShopRes) { - const list = res.Goods ?? []; + public set goods(res: proto.cs.ICSGetPurchaseRes) { + const list = res.items ?? []; this._goods.clear(); this._goodIds = []; for (const g of list) { - const vo: proto.cs.IGood = { + const vo: proto.cs.IPurchaseConfig = { id: g.id, // 商品 id - name: g.name || "", // 商品名字 - desc: g.desc || "", // 商品描述 - price: g.price || "0.00", // 商品价格 - count: g.count || 0, // 商品数量 + name: g.name, // 商品名字 + count: g.count, // 商品数量 + price: g.price, // 商品价格 }; this._goods.set(vo.id, vo); this._goodIds.push(vo.id); @@ -46,7 +45,7 @@ export class ShopData extends BaseData { } /** 获取所有商品数据 */ - public get goods(): Map { return this._goods; } + public get goods(): Map { return this._goods; } /** 获取所有商品数据的数量 */ public get goodsCount(): number { return this._goods ? this._goods.size : 0; } @@ -54,18 +53,53 @@ export class ShopData extends BaseData { /** 获取所有商品 id */ public get goodIds(): number[] { return this._goodIds; } - /** 获取vip商品数据 */ - public get vipGoods(): proto.cs.IGood[] { - return this._goodIds.map(id => this._goods.get(id)!).filter(g => g.id > 2000); + /** 获取 充值商品的id数组,首位数字为 1 */ + private getRechargeIds(): number[] { + let allId = this._goodIds; + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; // 取首位字符 + if (firstDigit === "1") { + resultId.push(one); + } + } + return resultId; } - /** 获取普通商品数据 */ - public get normalGoods(): proto.cs.IGood[] { - return this._goodIds.map(id => this._goods.get(id)!).filter(g => g.id <= 2000); + /** 获取 会员商品的id数组,首位数字为 2 */ + private getMemberIds(): number[] { + let allId = this._goodIds; + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; // 取首位字符 + if (firstDigit === "2") { + resultId.push(one); + } + } + return resultId; } + /** 获取 聊天商品的id数组,首位数字为 3 */ + private getChatIds(): number[] { + let allId = this._goodIds; + if (!allId) return []; + // 获取所有 id + let resultId = []; + for (let one of allId) { + const firstDigit = one.toString()[0]; // 取首位字符 + if (firstDigit === "3") { + resultId.push(one); + } + } + return resultId; + } + /** 根据商品 id 获取商品数据 */ - private getGoodDataById(id: number): proto.cs.IGood | null { + private getGoodDataById(id: number): proto.cs.IPurchaseConfig | null { if (!this._goods) return null; return this._goods.get(id) ?? null; } @@ -77,15 +111,8 @@ export class ShopData extends BaseData { return oneData.name; } - /** 根据商品 id 获取商品描述 */ - public getDescById(id: number): string | null { - let oneData = this.getGoodDataById(id); - if (!oneData) return null; - return oneData.desc; - } - /** 根据商品 id 获取商品价格 */ - public getPriceById(id: number): string | null { + public getPriceById(id: number): number | null { let oneData = this.getGoodDataById(id); if (!oneData) return null; return oneData.price; diff --git a/assets/Scripts/chat18x/network/services/ChatService.ts b/assets/Scripts/chat18x/network/services/ChatService.ts index 9f6e8832..f718e231 100644 --- a/assets/Scripts/chat18x/network/services/ChatService.ts +++ b/assets/Scripts/chat18x/network/services/ChatService.ts @@ -26,8 +26,18 @@ export class ChatService implements IChatService { this.impl = useMock ? new MockChatService() : new HttpChatService(); } - // 对外 API 保持不变 - public async reqBuyChat(req: proto.cs.ICSBuyChatReq): Promise> { - return this.impl.reqBuyChat(req); + // 上报聊天数据 + public async reqChatMsg(req: proto.cs.ICSChatMsgReq): Promise> { + return this.impl.reqChatMsg(req); } + + // 获取聊天数据 + public async reqGetChatMsg(req: proto.cs.ICSGetChatMsgReq): Promise> { + return this.impl.reqGetChatMsg(req); + } + + // 获取技师聊天次数 + public async reqChatCountData(req: proto.cs.ICSGetChatRemainCountReq): Promise> { + return this.impl.reqChatCountData(req); + } } diff --git a/assets/Scripts/chat18x/network/services/GirlService.ts b/assets/Scripts/chat18x/network/services/GirlService.ts index f948fd28..777a933c 100644 --- a/assets/Scripts/chat18x/network/services/GirlService.ts +++ b/assets/Scripts/chat18x/network/services/GirlService.ts @@ -38,4 +38,14 @@ export class GirlService implements IGirlService { public async reqGetGirlDetail(req: proto.cs.ICSGetGirlDetailReq): Promise> { return this.impl.reqGetGirlDetail(req); } + + // 解锁技师 + public async reqUnlockGirl(req: proto.cs.ICSUnlockGirlReq): Promise> { + return this.impl.reqUnlockGirl(req); + } + + // 解锁资源 + public async reqUnlockGirlRes(req: proto.cs.ICSUnlockResourceReq): Promise> { + return this.impl.reqUnlockGirlRes(req); + } } diff --git a/assets/Scripts/chat18x/network/services/HttpChatService.ts b/assets/Scripts/chat18x/network/services/HttpChatService.ts index 2f9bcbfa..ae67fd57 100644 --- a/assets/Scripts/chat18x/network/services/HttpChatService.ts +++ b/assets/Scripts/chat18x/network/services/HttpChatService.ts @@ -7,14 +7,36 @@ import type { IChatService } from "./IChatService"; export class HttpChatService implements IChatService { constructor(private api = ApiClient.I) {} - // 购买聊天次数 - async reqBuyChat(req: proto.cs.ICSBuyChatReq): Promise> { - const ep: Endpoint = { - path: "api/logic/buyChat", + // 上报聊天数据 + async reqChatMsg(req: proto.cs.ICSChatMsgReq): Promise> { + const ep: Endpoint = { + path: "api/logic/chatMsg", method: "POST", codec: "json", needsAuth: true, }; return this.api.call(ep, req); } + + // 获取聊天数据 + async reqGetChatMsg(req: proto.cs.ICSGetChatMsgReq): Promise> { + const ep: Endpoint = { + path: "api/logic/getChatMsg", + method: "POST", + codec: "json", + needsAuth: true, + }; + return this.api.call(ep, req); + } + + // 获取技师聊天次数 + async reqChatCountData(req: proto.cs.ICSGetChatRemainCountReq): Promise> { + const ep: Endpoint = { + path: "api/logic/getChatRemainCount", + method: "POST", + codec: "json", + needsAuth: true, + }; + return this.api.call(ep, req); + } } diff --git a/assets/Scripts/chat18x/network/services/HttpGirlService.ts b/assets/Scripts/chat18x/network/services/HttpGirlService.ts index 7b1e11c3..f1f32ae0 100644 --- a/assets/Scripts/chat18x/network/services/HttpGirlService.ts +++ b/assets/Scripts/chat18x/network/services/HttpGirlService.ts @@ -39,4 +39,26 @@ export class HttpGirlService implements IGirlService { }; return this.api.call(epData, req); } + + // 解锁技师 + async reqUnlockGirl(req: proto.cs.ICSUnlockGirlReq): Promise> { + let epData: Endpoint = { + path: "api/logic/unlockGirl", + method: "POST", + codec: "json", + needsAuth: true + }; + return this.api.call(epData, req); + } + + // 解锁资源 + async reqUnlockGirlRes(req: proto.cs.ICSUnlockResourceReq): Promise> { + let epData: Endpoint = { + path: "api/logic/unlockResource", + method: "POST", + codec: "json", + needsAuth: true + }; + return this.api.call(epData, req); + } } diff --git a/assets/Scripts/chat18x/network/services/HttpShopService.ts b/assets/Scripts/chat18x/network/services/HttpShopService.ts index 95b6860a..d6894303 100644 --- a/assets/Scripts/chat18x/network/services/HttpShopService.ts +++ b/assets/Scripts/chat18x/network/services/HttpShopService.ts @@ -8,13 +8,24 @@ export class HttpShopService implements IShopService { constructor(private api = ApiClient.I) {} // 获取商品列表 - async reqShopList(req: proto.cs.ICSGetShopReq): Promise> { - const ep: Endpoint = { - path: "api/logic/shop", + async reqShopList(req: proto.cs.ICSGetPurchaseReq): Promise> { + const ep: Endpoint = { + path: "api/logic/getPurchase", method: "POST", codec: "json", needsAuth: true, }; return this.api.call(ep, req); } + + // 使用余额购买商品 + async reqBuyGood(req: proto.cs.ICSBuyGoodReq): Promise> { + const ep: Endpoint = { + path: "api/logic/buyGood", + method: "POST", + codec: "json", + needsAuth: true, + }; + return this.api.call(ep, req); + } } diff --git a/assets/Scripts/chat18x/network/services/IChatService.ts b/assets/Scripts/chat18x/network/services/IChatService.ts index f53151cd..6f4e19a6 100644 --- a/assets/Scripts/chat18x/network/services/IChatService.ts +++ b/assets/Scripts/chat18x/network/services/IChatService.ts @@ -3,6 +3,10 @@ import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; export interface IChatService { - // 购买聊天次数 - reqBuyChat(req: proto.cs.ICSBuyChatReq): Promise>; + // 上报聊天数据 + reqChatMsg(req: proto.cs.ICSChatMsgReq): Promise>; + // 获取聊天数据 + reqGetChatMsg(req: proto.cs.ICSGetChatMsgReq): Promise>; + // 获取技师聊天次数 + reqChatCountData(req: proto.cs.ICSGetChatRemainCountReq): Promise>; } diff --git a/assets/Scripts/chat18x/network/services/IGirlService.ts b/assets/Scripts/chat18x/network/services/IGirlService.ts index 5115b98b..5351022b 100644 --- a/assets/Scripts/chat18x/network/services/IGirlService.ts +++ b/assets/Scripts/chat18x/network/services/IGirlService.ts @@ -8,4 +8,8 @@ export interface IGirlService { reqGetGirlList(req: proto.cs.ICSGetGirlListReq): Promise>; // 获取技师详细信息 reqGetGirlDetail(req: proto.cs.ICSGetGirlDetailReq): Promise>; + // 解锁技师 + reqUnlockGirl(req: proto.cs.ICSUnlockGirlReq): Promise>; + // 解锁资源 + reqUnlockGirlRes(req: proto.cs.ICSUnlockResourceReq): Promise>; } diff --git a/assets/Scripts/chat18x/network/services/IShopService.ts b/assets/Scripts/chat18x/network/services/IShopService.ts index e426cac9..fd2e4277 100644 --- a/assets/Scripts/chat18x/network/services/IShopService.ts +++ b/assets/Scripts/chat18x/network/services/IShopService.ts @@ -3,5 +3,7 @@ import proto from "db://assets/Scripts/proto/proto.pb.js"; export interface IShopService { // 获取商品列表 - reqShopList(req: proto.cs.ICSGetShopReq): Promise>; + reqShopList(req: proto.cs.ICSGetPurchaseReq): Promise>; + // 使用余额购买商品 + reqBuyGood(req: proto.cs.ICSBuyGoodReq): Promise>; } diff --git a/assets/Scripts/chat18x/network/services/MockChatService.ts b/assets/Scripts/chat18x/network/services/MockChatService.ts index 995ee7c9..5b7e4871 100644 --- a/assets/Scripts/chat18x/network/services/MockChatService.ts +++ b/assets/Scripts/chat18x/network/services/MockChatService.ts @@ -1,22 +1,91 @@ import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; import type { IChatService } from "./IChatService"; +import { DataManager, DataId } from "../../data/DataManager"; +import { GirlData } from "../../data/GirlData"; export class MockChatService implements IChatService { private delay(ms = 160) { return new Promise(r => setTimeout(r, ms)); } - // 按你们项目的 ApiResponse 结构调整这里即可 private ok(data: T): ApiResponse { - return ({ ok: true, data } as unknown) as ApiResponse; + return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } - // private err(message = "mock buyChat error"): ApiResponse { - // return ({ ok: false, error: { message } } as unknown) as ApiResponse; - // } - async reqBuyChat(_req: proto.cs.ICSBuyChatReq): Promise> { + // 上报聊天数据 + async reqChatMsg(req: proto.cs.ICSChatMsgReq): Promise> { + // 延时 await this.delay(); - // CSBuyChatRes 在 proto 中为空消息,这里返回 {} - const res: proto.cs.ICSBuyChatRes = {}; + // 请求数据 + const reqGirlId = req.girlId; + // 数据层的数据 + const girlData = DataManager.I.getDataById(DataId.Girl); + const reqGirlCategory = girlData.getGrilCategoryById(reqGirlId); + const chatTotalCount = girlData.getChatTotalCount(reqGirlCategory.toString(), reqGirlId); + const chatRemainCount = girlData.getChatRemainCount(reqGirlCategory.toString(), reqGirlId); + // 计算 + let resultTotalCount = chatTotalCount + 1; + let resultRemainCount = chatRemainCount; + if (chatRemainCount > 0) { + resultRemainCount = chatRemainCount - 1; + } + // 返回数据 + const res: proto.cs.ICSChatMsgRes = { + chatRemainCount: resultRemainCount, + chatTotalCount: resultTotalCount, + }; return this.ok(res); } + + // 获取聊天数据 + async reqGetChatMsg(req: proto.cs.ICSGetChatMsgReq): Promise> { + // 延时 + await this.delay(); + // 请求数据 + const reqGirlId = req.GirlId; + const page = req.page; + const limit = req.limit; + // 数据层的数据 + const girlData = DataManager.I.getDataById(DataId.Girl); + const reqGirlCategory = girlData.getGrilCategoryById(reqGirlId); + const chatTotalCount = girlData.getChatTotalCount(reqGirlCategory.toString(), reqGirlId); + const chatRemainCount = girlData.getChatRemainCount(reqGirlCategory.toString(), reqGirlId); + // 模拟一个完整的聊天记录池 + const allMsgs: proto.cs.IChatMsg[] = []; + for (let i = 0; i < 50; i++) { + allMsgs.push({ + msg: `模拟消息 ${i + 1} 来自技师 ${reqGirlId}`, + isAi: i % 2 === 0, // 偶数条当成 AI 说的 + }); + } + // 分页计算 + const start = (page - 1) * limit; + const end = start + limit; + const pageMsgs = allMsgs.slice(start, end); + // 返回数据 + const res: proto.cs.ICSGetChatMsgRes = { + msgs: pageMsgs, + chatRemainCount, + chatTotalCount, + }; + return this.ok(res); + } + + // 获取技师聊天次数 + async reqChatCountData(req: proto.cs.ICSGetChatRemainCountReq): Promise> { + // 延时 + await this.delay(); + // 请求数据 + const reqGirlId = req.id; + // 数据层的数据 + const girlData = DataManager.I.getDataById(DataId.Girl); + const reqGirlCategory = girlData.getGrilCategoryById(reqGirlId); + const chatTotalCount = girlData.getChatTotalCount(reqGirlCategory.toString(), reqGirlId); + const chatRemainCount = girlData.getChatRemainCount(reqGirlCategory.toString(), reqGirlId); + // 返回数据 + const res: proto.cs.ICSGetChatRemainCountRes = { + chatRemainCount, + chatTotalCount, + }; + return this.ok(res); + } } diff --git a/assets/Scripts/chat18x/network/services/MockGirlService.ts b/assets/Scripts/chat18x/network/services/MockGirlService.ts index 86aac2ef..e00cc458 100644 --- a/assets/Scripts/chat18x/network/services/MockGirlService.ts +++ b/assets/Scripts/chat18x/network/services/MockGirlService.ts @@ -226,12 +226,30 @@ export class MockGirlService implements IGirlService { } const star = 3; - const chatTotalCount = 10; - const chatRemainCount = 10; + const chatTotalCount = 20; + const chatRemainCount = 20; const girlData = this.genGirlData(girlId, briefData, isRelease, star, detail, unlockImageData, unlockVideoData, chatTotalCount, chatRemainCount); // 返回数据 const res: proto.cs.ICSGetGirlDetailRes = {girl: girlData}; return this.ok(res); } + + // 解锁技师 + async reqUnlockGirl(_req: proto.cs.ICSUnlockGirlReq): Promise> { + // 延时 + await this.delay(180); + // 返回数据 + const res: proto.cs.ICSUnlockGirlRes = {}; + return this.ok(res); + } + + // 解锁资源 + async reqUnlockGirlRes(_req: proto.cs.ICSUnlockResourceReq): Promise> { + // 延时 + await this.delay(180); + // 返回数据 + const res: proto.cs.ICSUnlockResourceRes = {}; + return this.ok(res); + } } diff --git a/assets/Scripts/chat18x/network/services/MockShopService.ts b/assets/Scripts/chat18x/network/services/MockShopService.ts index dd96c5c9..44613d99 100644 --- a/assets/Scripts/chat18x/network/services/MockShopService.ts +++ b/assets/Scripts/chat18x/network/services/MockShopService.ts @@ -1,6 +1,8 @@ import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; import type { IShopService } from "./IShopService"; +import { PurchaseConfig } from "../../config/PurchaseConfig"; +import { ConfigManager, ConfigId } from "../../manager/ConfigManager"; export class MockShopService implements IShopService { private delay(ms = 180) { return new Promise(r => setTimeout(r, ms)); } @@ -11,29 +13,44 @@ export class MockShopService implements IShopService { } private ok(data: T): ApiResponse { - return ({ ok: true, data } as unknown) as ApiResponse; + return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } - private genGood(id: number, vip = false): proto.cs.IGood { + private genGood(id: number, name: string, count: number, price: number): proto.cs.IPurchaseConfig { return { id, - name: vip ? `VIP-${id}` : `Diamond Pack ${id}`, - desc: vip ? `VIP access for ${this.randInt(24, 168)} hours` : `Diamonds x${this.randInt(60, 2000)}`, - price: this.priceUSD(vip ? 4.99 : 0.99, vip ? 49.99 : 29.99), - count: vip ? this.randInt(24, 168) : this.randInt(60, 2000), // VIP=小时,普通=数量 + name, + count, + price, }; } // 获取商品列表 - async reqShopList(_req: proto.cs.ICSGetShopReq): Promise> { + async reqShopList(_req: proto.cs.ICSGetPurchaseReq): Promise> { + // 延时 await this.delay(); - - // 普通商品(<=2000)+ VIP 商品(>2000) - const normals: proto.cs.IGood[] = Array.from({ length: 5 }, (_, i) => this.genGood(1000 + i, false)); - const vips: proto.cs.IGood[] = Array.from({ length: 3 }, (_, i) => this.genGood(2001 + i, true)); - - // 注意:你的 proto 定义中字段名为 "Goods"(大写 G) - const res: proto.cs.ICSGetShopRes = { Goods: [...normals, ...vips] }; + // 配置数据 + const configData = ConfigManager.I.getDataById(ConfigId.Purchase); + const allId = configData.getAllId(); + let goodData: proto.cs.IPurchaseConfig[] = []; + for (let id of allId) { + let name = configData.getNameById(id); + let count = configData.getCountById(id); + let price = configData.getPriceById(id); + let oneData = this.genGood(id, name, count, price); + goodData.push(oneData); + } + // 返回数据 + const res: proto.cs.ICSGetPurchaseRes = { items: goodData }; return this.ok(res); } + + // 使用余额购买商品 + async reqBuyGood(_req: proto.cs.ICSBuyGoodReq): Promise> { + // 延时 + await this.delay(); + // 返回数据 + const res: proto.cs.ICSBuyGoodRes = {}; + return this.ok(res); + } } diff --git a/assets/Scripts/chat18x/network/services/ShopService.ts b/assets/Scripts/chat18x/network/services/ShopService.ts index c4caeb6c..9d65e3ed 100644 --- a/assets/Scripts/chat18x/network/services/ShopService.ts +++ b/assets/Scripts/chat18x/network/services/ShopService.ts @@ -26,7 +26,12 @@ export class ShopService implements IShopService { } // 获取商品列表 - public async reqShopList(req: proto.cs.ICSGetShopReq): Promise> { + public async reqShopList(req: proto.cs.ICSGetPurchaseReq): Promise> { return this.impl.reqShopList(req); } + + // 使用余额购买商品 + public async reqBuyGood(req: proto.cs.ICSBuyGoodReq): Promise> { + return this.impl.reqBuyGood(req); + } } diff --git a/assets/Scripts/proto/proto.pb.d.ts b/assets/Scripts/proto/proto.pb.d.ts index c9b3ce0a..a93fd73e 100644 --- a/assets/Scripts/proto/proto.pb.d.ts +++ b/assets/Scripts/proto/proto.pb.d.ts @@ -2951,6 +2951,194 @@ toJSON(): { [k: string]: any }; static getTypeUrl(typeUrlPrefix?: string): string; } + /** Properties of a CSGetPurchaseReq. */ + interface ICSGetPurchaseReq { + } + + /** Represents a CSGetPurchaseReq. */ + class CSGetPurchaseReq implements ICSGetPurchaseReq { + + /** + * Constructs a new CSGetPurchaseReq. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetPurchaseReq); + + /** + * Creates a new CSGetPurchaseReq instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetPurchaseReq instance + */ +static create(properties?: cs.ICSGetPurchaseReq): cs.CSGetPurchaseReq; + + /** + * Encodes the specified CSGetPurchaseReq message. Does not implicitly {@link cs.CSGetPurchaseReq.verify|verify} messages. + * @param message CSGetPurchaseReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetPurchaseReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetPurchaseReq message, length delimited. Does not implicitly {@link cs.CSGetPurchaseReq.verify|verify} messages. + * @param message CSGetPurchaseReq message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetPurchaseReq, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetPurchaseReq message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetPurchaseReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetPurchaseReq; + + /** + * Decodes a CSGetPurchaseReq message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetPurchaseReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetPurchaseReq; + + /** + * Verifies a CSGetPurchaseReq message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetPurchaseReq message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetPurchaseReq + */ +static fromObject(object: { [k: string]: any }): cs.CSGetPurchaseReq; + + /** + * Creates a plain object from a CSGetPurchaseReq message. Also converts values to other types if specified. + * @param message CSGetPurchaseReq + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetPurchaseReq, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetPurchaseReq to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetPurchaseReq + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CSGetPurchaseRes. */ + interface ICSGetPurchaseRes { + + /** CSGetPurchaseRes items */ + items?: (cs.IPurchaseConfig[]|null); + } + + /** Represents a CSGetPurchaseRes. */ + class CSGetPurchaseRes implements ICSGetPurchaseRes { + + /** + * Constructs a new CSGetPurchaseRes. + * @param [properties] Properties to set + */ + constructor(properties?: cs.ICSGetPurchaseRes); + + /** CSGetPurchaseRes items. */ +items: cs.IPurchaseConfig[]; + + /** + * Creates a new CSGetPurchaseRes instance using the specified properties. + * @param [properties] Properties to set + * @returns CSGetPurchaseRes instance + */ +static create(properties?: cs.ICSGetPurchaseRes): cs.CSGetPurchaseRes; + + /** + * Encodes the specified CSGetPurchaseRes message. Does not implicitly {@link cs.CSGetPurchaseRes.verify|verify} messages. + * @param message CSGetPurchaseRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encode(message: cs.ICSGetPurchaseRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CSGetPurchaseRes message, length delimited. Does not implicitly {@link cs.CSGetPurchaseRes.verify|verify} messages. + * @param message CSGetPurchaseRes message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ +static encodeDelimited(message: cs.ICSGetPurchaseRes, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CSGetPurchaseRes message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CSGetPurchaseRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cs.CSGetPurchaseRes; + + /** + * Decodes a CSGetPurchaseRes message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CSGetPurchaseRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ +static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cs.CSGetPurchaseRes; + + /** + * Verifies a CSGetPurchaseRes message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ +static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CSGetPurchaseRes message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CSGetPurchaseRes + */ +static fromObject(object: { [k: string]: any }): cs.CSGetPurchaseRes; + + /** + * Creates a plain object from a CSGetPurchaseRes message. Also converts values to other types if specified. + * @param message CSGetPurchaseRes + * @param [options] Conversion options + * @returns Plain object + */ +static toObject(message: cs.CSGetPurchaseRes, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CSGetPurchaseRes to JSON. + * @returns JSON object + */ +toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CSGetPurchaseRes + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ +static getTypeUrl(typeUrlPrefix?: string): string; + } + /** Category enum. */ enum Category { Category_mature = 0, diff --git a/assets/Scripts/proto/proto.pb.js b/assets/Scripts/proto/proto.pb.js index ab3d1be5..820d2843 100644 --- a/assets/Scripts/proto/proto.pb.js +++ b/assets/Scripts/proto/proto.pb.js @@ -6625,6 +6625,409 @@ $root.cs = (function() { return CSGetResConfigRes; })(); + cs.CSGetPurchaseReq = (function() { + + /** + * Properties of a CSGetPurchaseReq. + * @memberof cs + * @interface ICSGetPurchaseReq + */ + + /** + * Constructs a new CSGetPurchaseReq. + * @memberof cs + * @classdesc Represents a CSGetPurchaseReq. + * @implements ICSGetPurchaseReq + * @constructor + * @param {cs.ICSGetPurchaseReq=} [properties] Properties to set + */ + function CSGetPurchaseReq(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new CSGetPurchaseReq instance using the specified properties. + * @function create + * @memberof cs.CSGetPurchaseReq + * @static + * @param {cs.ICSGetPurchaseReq=} [properties] Properties to set + * @returns {cs.CSGetPurchaseReq} CSGetPurchaseReq instance + */ + CSGetPurchaseReq.create = function create(properties) { + return new CSGetPurchaseReq(properties); + }; + + /** + * Encodes the specified CSGetPurchaseReq message. Does not implicitly {@link cs.CSGetPurchaseReq.verify|verify} messages. + * @function encode + * @memberof cs.CSGetPurchaseReq + * @static + * @param {cs.ICSGetPurchaseReq} message CSGetPurchaseReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetPurchaseReq.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified CSGetPurchaseReq message, length delimited. Does not implicitly {@link cs.CSGetPurchaseReq.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetPurchaseReq + * @static + * @param {cs.ICSGetPurchaseReq} message CSGetPurchaseReq message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetPurchaseReq.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetPurchaseReq message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetPurchaseReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetPurchaseReq} CSGetPurchaseReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetPurchaseReq.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetPurchaseReq(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetPurchaseReq message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetPurchaseReq + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetPurchaseReq} CSGetPurchaseReq + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetPurchaseReq.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetPurchaseReq message. + * @function verify + * @memberof cs.CSGetPurchaseReq + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetPurchaseReq.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a CSGetPurchaseReq message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetPurchaseReq + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetPurchaseReq} CSGetPurchaseReq + */ + CSGetPurchaseReq.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetPurchaseReq) + return object; + return new $root.cs.CSGetPurchaseReq(); + }; + + /** + * Creates a plain object from a CSGetPurchaseReq message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetPurchaseReq + * @static + * @param {cs.CSGetPurchaseReq} message CSGetPurchaseReq + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetPurchaseReq.toObject = function toObject() { + return {}; + }; + + /** + * Converts this CSGetPurchaseReq to JSON. + * @function toJSON + * @memberof cs.CSGetPurchaseReq + * @instance + * @returns {Object.} JSON object + */ + CSGetPurchaseReq.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetPurchaseReq + * @function getTypeUrl + * @memberof cs.CSGetPurchaseReq + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetPurchaseReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetPurchaseReq"; + }; + + return CSGetPurchaseReq; + })(); + + cs.CSGetPurchaseRes = (function() { + + /** + * Properties of a CSGetPurchaseRes. + * @memberof cs + * @interface ICSGetPurchaseRes + * @property {Array.|null} [items] CSGetPurchaseRes items + */ + + /** + * Constructs a new CSGetPurchaseRes. + * @memberof cs + * @classdesc Represents a CSGetPurchaseRes. + * @implements ICSGetPurchaseRes + * @constructor + * @param {cs.ICSGetPurchaseRes=} [properties] Properties to set + */ + function CSGetPurchaseRes(properties) { + this.items = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CSGetPurchaseRes items. + * @member {Array.} items + * @memberof cs.CSGetPurchaseRes + * @instance + */ + CSGetPurchaseRes.prototype.items = $util.emptyArray; + + /** + * Creates a new CSGetPurchaseRes instance using the specified properties. + * @function create + * @memberof cs.CSGetPurchaseRes + * @static + * @param {cs.ICSGetPurchaseRes=} [properties] Properties to set + * @returns {cs.CSGetPurchaseRes} CSGetPurchaseRes instance + */ + CSGetPurchaseRes.create = function create(properties) { + return new CSGetPurchaseRes(properties); + }; + + /** + * Encodes the specified CSGetPurchaseRes message. Does not implicitly {@link cs.CSGetPurchaseRes.verify|verify} messages. + * @function encode + * @memberof cs.CSGetPurchaseRes + * @static + * @param {cs.ICSGetPurchaseRes} message CSGetPurchaseRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetPurchaseRes.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.items != null && message.items.length) + for (var i = 0; i < message.items.length; ++i) + $root.cs.PurchaseConfig.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CSGetPurchaseRes message, length delimited. Does not implicitly {@link cs.CSGetPurchaseRes.verify|verify} messages. + * @function encodeDelimited + * @memberof cs.CSGetPurchaseRes + * @static + * @param {cs.ICSGetPurchaseRes} message CSGetPurchaseRes message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CSGetPurchaseRes.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CSGetPurchaseRes message from the specified reader or buffer. + * @function decode + * @memberof cs.CSGetPurchaseRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cs.CSGetPurchaseRes} CSGetPurchaseRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetPurchaseRes.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cs.CSGetPurchaseRes(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.items && message.items.length)) + message.items = []; + message.items.push($root.cs.PurchaseConfig.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CSGetPurchaseRes message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof cs.CSGetPurchaseRes + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cs.CSGetPurchaseRes} CSGetPurchaseRes + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CSGetPurchaseRes.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CSGetPurchaseRes message. + * @function verify + * @memberof cs.CSGetPurchaseRes + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CSGetPurchaseRes.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.items != null && message.hasOwnProperty("items")) { + if (!Array.isArray(message.items)) + return "items: array expected"; + for (var i = 0; i < message.items.length; ++i) { + var error = $root.cs.PurchaseConfig.verify(message.items[i]); + if (error) + return "items." + error; + } + } + return null; + }; + + /** + * Creates a CSGetPurchaseRes message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof cs.CSGetPurchaseRes + * @static + * @param {Object.} object Plain object + * @returns {cs.CSGetPurchaseRes} CSGetPurchaseRes + */ + CSGetPurchaseRes.fromObject = function fromObject(object) { + if (object instanceof $root.cs.CSGetPurchaseRes) + return object; + var message = new $root.cs.CSGetPurchaseRes(); + if (object.items) { + if (!Array.isArray(object.items)) + throw TypeError(".cs.CSGetPurchaseRes.items: array expected"); + message.items = []; + for (var i = 0; i < object.items.length; ++i) { + if (typeof object.items[i] !== "object") + throw TypeError(".cs.CSGetPurchaseRes.items: object expected"); + message.items[i] = $root.cs.PurchaseConfig.fromObject(object.items[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a CSGetPurchaseRes message. Also converts values to other types if specified. + * @function toObject + * @memberof cs.CSGetPurchaseRes + * @static + * @param {cs.CSGetPurchaseRes} message CSGetPurchaseRes + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CSGetPurchaseRes.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.items = []; + if (message.items && message.items.length) { + object.items = []; + for (var j = 0; j < message.items.length; ++j) + object.items[j] = $root.cs.PurchaseConfig.toObject(message.items[j], options); + } + return object; + }; + + /** + * Converts this CSGetPurchaseRes to JSON. + * @function toJSON + * @memberof cs.CSGetPurchaseRes + * @instance + * @returns {Object.} JSON object + */ + CSGetPurchaseRes.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CSGetPurchaseRes + * @function getTypeUrl + * @memberof cs.CSGetPurchaseRes + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CSGetPurchaseRes.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/cs.CSGetPurchaseRes"; + }; + + return CSGetPurchaseRes; + })(); + /** * Category enum. * @name cs.Category diff --git a/proto_cs b/proto_cs index 667f36bd..984b9da4 160000 --- a/proto_cs +++ b/proto_cs @@ -1 +1 @@ -Subproject commit 667f36bd33dd72e2d585ecc57d0783dca347dbf3 +Subproject commit 984b9da4046b12f7ee336664cfa28f6165286c0d From 2545aadcab57afef6e5e03cd095d28c3d1e18c3c Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Mon, 8 Sep 2025 22:59:32 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/data/DataManager.ts | 3 ++ assets/Scripts/chat18x/data/GlobalData.ts | 28 ++++++++++++++ .../Scripts/chat18x/data/GlobalData.ts.meta | 9 +++++ .../chat18x/network/services/CommonService.ts | 32 ++++++++++++++++ .../network/services/CommonService.ts.meta | 9 +++++ .../network/services/HttpCommonService.ts | 20 ++++++++++ .../services/HttpCommonService.ts.meta | 9 +++++ .../network/services/ICommonService.ts | 7 ++++ .../network/services/ICommonService.ts.meta | 9 +++++ .../network/services/MockCommonService.ts | 37 +++++++++++++++++++ .../services/MockCommonService.ts.meta | 9 +++++ .../network/services/MockGirlService.ts | 2 +- .../network/services/MockThemeService.ts | 2 +- 13 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 assets/Scripts/chat18x/data/GlobalData.ts create mode 100644 assets/Scripts/chat18x/data/GlobalData.ts.meta create mode 100644 assets/Scripts/chat18x/network/services/CommonService.ts create mode 100644 assets/Scripts/chat18x/network/services/CommonService.ts.meta create mode 100644 assets/Scripts/chat18x/network/services/HttpCommonService.ts create mode 100644 assets/Scripts/chat18x/network/services/HttpCommonService.ts.meta create mode 100644 assets/Scripts/chat18x/network/services/ICommonService.ts create mode 100644 assets/Scripts/chat18x/network/services/ICommonService.ts.meta create mode 100644 assets/Scripts/chat18x/network/services/MockCommonService.ts create mode 100644 assets/Scripts/chat18x/network/services/MockCommonService.ts.meta diff --git a/assets/Scripts/chat18x/data/DataManager.ts b/assets/Scripts/chat18x/data/DataManager.ts index f8845c9e..04ceb0c5 100644 --- a/assets/Scripts/chat18x/data/DataManager.ts +++ b/assets/Scripts/chat18x/data/DataManager.ts @@ -14,6 +14,7 @@ import { ShopData } from "./ShopData"; import { OrderData } from "./OrderData"; import { GirlData } from "./GirlData"; import { EnvData } from "./EnvData"; +import { GlobalData } from "./GlobalData"; /** * 集中定义数据ID,避免写错字符串 @@ -35,6 +36,7 @@ export enum DataId { GirlChat = "girlChat", // 技师的聊天数据 GirlFavorability = "girlFavorability", // 技师的好感度数据 Env = "env", // 环境数据 + Global = "global", // 全局数据 } /** 构造器类型 */ @@ -78,6 +80,7 @@ export class DataManager { this.register(DataId.Order, OrderData); this.register(DataId.Girl, GirlData); this.register(DataId.Env, EnvData); + this.register(DataId.Global, GlobalData); } /** diff --git a/assets/Scripts/chat18x/data/GlobalData.ts b/assets/Scripts/chat18x/data/GlobalData.ts new file mode 100644 index 00000000..e4c72da5 --- /dev/null +++ b/assets/Scripts/chat18x/data/GlobalData.ts @@ -0,0 +1,28 @@ +/** + * 全局数据 + */ +import { BaseData } from "./BaseData"; +import proto from 'db://assets/Scripts/proto/proto.pb.js'; + +export class GlobalData extends BaseData { + + + public reset(): void { + + } + + public clear(): void { + + } + + public destroy(): void { + super.destroy(); + } + + /** 设置全局数据 */ + public set globals(res: proto.cs.ICSGetResConfigRes) { + + + console.log("设置全局数据:"); + } +} diff --git a/assets/Scripts/chat18x/data/GlobalData.ts.meta b/assets/Scripts/chat18x/data/GlobalData.ts.meta new file mode 100644 index 00000000..1f9d115d --- /dev/null +++ b/assets/Scripts/chat18x/data/GlobalData.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "cc12432f-6e2f-4190-94c6-084037af001f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/network/services/CommonService.ts b/assets/Scripts/chat18x/network/services/CommonService.ts new file mode 100644 index 00000000..ee98091b --- /dev/null +++ b/assets/Scripts/chat18x/network/services/CommonService.ts @@ -0,0 +1,32 @@ +import type { ApiResponse } from "../client/types"; +import proto from "db://assets/Scripts/proto/proto.pb.js"; +import type { ICommonService } from "./ICommonService"; +import { HttpCommonService } from "./HttpCommonService"; +import { MockCommonService } from "./MockCommonService"; + +// 模拟开关 +const USE_MOCK = true; + +export class CommonService implements ICommonService { + private static _I: CommonService | null = null; + public static get I(): CommonService { + if (!CommonService._I) CommonService._I = new CommonService(); + return CommonService._I; + } + + private impl: ICommonService; + + private constructor() { + this.impl = USE_MOCK ? new MockCommonService() : new HttpCommonService(); + } + + /** 运行期切换 */ + public switch(useMock: boolean) { + this.impl = useMock ? new MockCommonService() : new HttpCommonService(); + } + + // 获取配置 + public async reqResConfig(req: proto.cs.ICSGetResConfigReq): Promise> { + return this.impl.reqResConfig(req); + } +} diff --git a/assets/Scripts/chat18x/network/services/CommonService.ts.meta b/assets/Scripts/chat18x/network/services/CommonService.ts.meta new file mode 100644 index 00000000..3d907bf0 --- /dev/null +++ b/assets/Scripts/chat18x/network/services/CommonService.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "c53fc890-4e39-4c5e-bf35-ab87a8359139", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/network/services/HttpCommonService.ts b/assets/Scripts/chat18x/network/services/HttpCommonService.ts new file mode 100644 index 00000000..4ded40e7 --- /dev/null +++ b/assets/Scripts/chat18x/network/services/HttpCommonService.ts @@ -0,0 +1,20 @@ +import { ApiClient } from "../client/ApiClient"; +import type { Endpoint } from "../client/endpoints"; +import type { ApiResponse } from "../client/types"; +import proto from "db://assets/Scripts/proto/proto.pb.js"; +import type { ICommonService } from "./ICommonService"; + +export class HttpCommonService implements ICommonService { + constructor(private api = ApiClient.I) {} + + // 获取配置 + async reqResConfig(req: proto.cs.ICSGetResConfigReq): Promise> { + const ep: Endpoint = { + path: "api/logic/getResConfig", + method: "POST", + codec: "json", + needsAuth: true, + }; + return this.api.call(ep, req); + } +} diff --git a/assets/Scripts/chat18x/network/services/HttpCommonService.ts.meta b/assets/Scripts/chat18x/network/services/HttpCommonService.ts.meta new file mode 100644 index 00000000..ae9b07af --- /dev/null +++ b/assets/Scripts/chat18x/network/services/HttpCommonService.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "612b35c8-b85f-4ac1-8cbb-e4fd58c5d3c1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/network/services/ICommonService.ts b/assets/Scripts/chat18x/network/services/ICommonService.ts new file mode 100644 index 00000000..7e89ae32 --- /dev/null +++ b/assets/Scripts/chat18x/network/services/ICommonService.ts @@ -0,0 +1,7 @@ +import type { ApiResponse } from "../client/types"; +import proto from "db://assets/Scripts/proto/proto.pb.js"; + +export interface ICommonService { + // 获取配置 + reqResConfig(req: proto.cs.ICSGetResConfigReq): Promise>; +} diff --git a/assets/Scripts/chat18x/network/services/ICommonService.ts.meta b/assets/Scripts/chat18x/network/services/ICommonService.ts.meta new file mode 100644 index 00000000..a43e995d --- /dev/null +++ b/assets/Scripts/chat18x/network/services/ICommonService.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "05ed90ec-18c9-42cd-ae17-4a7ea4b3875c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/network/services/MockCommonService.ts b/assets/Scripts/chat18x/network/services/MockCommonService.ts new file mode 100644 index 00000000..55dad99d --- /dev/null +++ b/assets/Scripts/chat18x/network/services/MockCommonService.ts @@ -0,0 +1,37 @@ +import type { ApiResponse } from "../client/types"; +import proto from "db://assets/Scripts/proto/proto.pb.js"; +import type { ICommonService } from "./ICommonService"; +import { ConfigManager, ConfigId } from "../../manager/ConfigManager"; +import { GlobalConfig } from "../../config/GlobalConfig"; + +export class MockCommonService implements ICommonService { + private delay(ms = 160) { return new Promise(r => setTimeout(r, ms)); } + private ok(data: T): ApiResponse { + return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; + } + + // 获取配置 + async reqResConfig(req: proto.cs.ICSGetResConfigReq): Promise> { + // 延时 + await this.delay(); + + let data = ""; + const resName = req.resName; + if (resName === "global_config") { + // 全局配置 + data = this.getGlobalConfig(); + } + + // 返回数据 + const res: proto.cs.ICSGetResConfigRes = { data }; + return this.ok(res); + } + + // 全局配置 + private getGlobalConfig(): string { + + const configData = ConfigManager.I.getDataById(ConfigId.Global); + + return ""; + } +} diff --git a/assets/Scripts/chat18x/network/services/MockCommonService.ts.meta b/assets/Scripts/chat18x/network/services/MockCommonService.ts.meta new file mode 100644 index 00000000..ca4d7d64 --- /dev/null +++ b/assets/Scripts/chat18x/network/services/MockCommonService.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "8fd66f05-3289-4fa5-aed1-69f384223065", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Scripts/chat18x/network/services/MockGirlService.ts b/assets/Scripts/chat18x/network/services/MockGirlService.ts index e00cc458..a444d05e 100644 --- a/assets/Scripts/chat18x/network/services/MockGirlService.ts +++ b/assets/Scripts/chat18x/network/services/MockGirlService.ts @@ -76,7 +76,7 @@ export class MockGirlService implements IGirlService { } // 每日推荐 - async reqDailyRecommend(_req: proto.cs.ICSDailyRecommendReq): Promise> { + async reqDailyRecommend(req: proto.cs.ICSDailyRecommendReq): Promise> { // 延时 await this.delay(180); // 配置数据 diff --git a/assets/Scripts/chat18x/network/services/MockThemeService.ts b/assets/Scripts/chat18x/network/services/MockThemeService.ts index a596dd8e..bd741e29 100644 --- a/assets/Scripts/chat18x/network/services/MockThemeService.ts +++ b/assets/Scripts/chat18x/network/services/MockThemeService.ts @@ -22,7 +22,7 @@ export class MockThemeService implements IThemeService { } // 获取大厅分类列表 - async reqHallTheme(_req: proto.cs.ICSHallThemeReq): Promise> { + async reqHallTheme(req: proto.cs.ICSHallThemeReq): Promise> { // 延时 await this.delay(); From 8fbbca0e4123eee3f206bf208dcca38b6ddb8acb Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Tue, 9 Sep 2025 00:33:16 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/Sub/UI/PreloadUI.ts | 9 ++++----- assets/Scripts/chat18x/data/WalletData.ts | 4 ++-- .../foundation/identity/MachineInfoService.ts | 18 ++++++++++++++++++ .../chat18x/network/client/ApiClient.ts | 3 +-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/assets/Scripts/Sub/UI/PreloadUI.ts b/assets/Scripts/Sub/UI/PreloadUI.ts index 6b79e882..b1d8be8e 100644 --- a/assets/Scripts/Sub/UI/PreloadUI.ts +++ b/assets/Scripts/Sub/UI/PreloadUI.ts @@ -260,12 +260,12 @@ export class PreloadUI extends Component { // 游客登录 const deviceId = DeviceIdService.I.id; - const machineIdentifier = MachineInfoService.I.getMachineIdentifier(); + const os = MachineInfoService.I.getMachineOs(); const reqData = { platType: 'guset', userId: deviceId, device: deviceId, - os: 3, + os, }; console.log("登录请求数据:", reqData); let res = await AuthService.I.login(reqData); @@ -285,8 +285,8 @@ export class PreloadUI extends Component { envData.cdn = resData.cdn; this.loginFinish = true; - - // this.reqMyInfo(); + // 请求个人信息 + this.reqMyInfo(); }; } @@ -295,7 +295,6 @@ export class PreloadUI extends Component { const reqData = { }; - console.log("个人信息请求数据:", reqData); let res = await PlayerDataService.I.reqMyInfo(reqData); console.log("个人信息响应数据:", res); if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { diff --git a/assets/Scripts/chat18x/data/WalletData.ts b/assets/Scripts/chat18x/data/WalletData.ts index 85867c29..6aa46cd9 100644 --- a/assets/Scripts/chat18x/data/WalletData.ts +++ b/assets/Scripts/chat18x/data/WalletData.ts @@ -5,9 +5,9 @@ import { BaseData } from "./BaseData"; export class WalletData extends BaseData { // 余额 - private _balance = 0; + private _balance: number = 0; // vip失效时间戳 - private _vipExpire = 0; + private _vipExpire: number = 0; public reset(): void { this._balance = 0; diff --git a/assets/Scripts/chat18x/foundation/identity/MachineInfoService.ts b/assets/Scripts/chat18x/foundation/identity/MachineInfoService.ts index 8d65abdb..423e7d45 100644 --- a/assets/Scripts/chat18x/foundation/identity/MachineInfoService.ts +++ b/assets/Scripts/chat18x/foundation/identity/MachineInfoService.ts @@ -108,6 +108,24 @@ export class MachineInfoService { if (s.length > 64) s = s.slice(0, 64); return s || "Unknown"; } + + /** 获取机器系统标识 1: android 2:ios; 3: windows */ + public getMachineOs(): number { + if (EDITOR) { + return 3; // 在 Cocos Creator 编辑器里运行 + } + + if (sys.platform === sys.Platform.ANDROID) { + return 1; + } + if (sys.platform === sys.Platform.IOS) { + return 2; + } + if (sys.platform === sys.Platform.WIN32) { + return 3; + } + return 3; + } } export default MachineInfoService; diff --git a/assets/Scripts/chat18x/network/client/ApiClient.ts b/assets/Scripts/chat18x/network/client/ApiClient.ts index b23a2346..d4f9a5f4 100644 --- a/assets/Scripts/chat18x/network/client/ApiClient.ts +++ b/assets/Scripts/chat18x/network/client/ApiClient.ts @@ -25,9 +25,8 @@ export class ApiClient { let jsonData: any; if (ep.needsAuth && this.token) { - headers["Authorization"] = `Bearer ${this.token}`; + headers["Authorization"] = `${this.token}`; } - // 编码 if (ep.codec === "json") { jsonData = (ep.method === "GET") ? req : JsonCodec.encode(req); From 52dfc3cdd33a234ae238cfa1d1b163bb0e593a65 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Tue, 9 Sep 2025 10:30:46 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/data/AccountData.ts | 10 +++--- assets/Scripts/chat18x/data/PlayerData.ts | 32 +---------------- assets/Scripts/chat18x/data/ThemeData.ts | 10 +++--- .../network/services/MockAuthService.ts | 2 +- .../network/services/MockCommonService.ts | 2 +- .../chat18x/network/services/ThemeService.ts | 2 +- .../Scripts/chat18x/ui/panels/ThemePanel.ts | 2 +- assets/Scripts/proto/proto.pb.d.ts | 4 +-- assets/Scripts/proto/proto.pb.js | 34 ++++++------------- proto_cs | 2 +- 10 files changed, 28 insertions(+), 72 deletions(-) diff --git a/assets/Scripts/chat18x/data/AccountData.ts b/assets/Scripts/chat18x/data/AccountData.ts index 27a8958b..ab33c879 100644 --- a/assets/Scripts/chat18x/data/AccountData.ts +++ b/assets/Scripts/chat18x/data/AccountData.ts @@ -9,7 +9,7 @@ export class AccountData extends BaseData { // 身份类型,1:游客;2:微信;3:googleplay private _identityType = 1; // 用户id - private _accId = 0; + private _accId: string = ""; // 是否新手 private _isNewGuide = true; // 是否刚注册 @@ -18,7 +18,7 @@ export class AccountData extends BaseData { public reset(): void { this._identifier = ""; this._identityType = 1; - this._accId = 0; + this._accId = ""; this._isNewGuide = true; this._isNewRegist = true; } @@ -26,7 +26,7 @@ export class AccountData extends BaseData { public clear(): void { this._identifier = ""; this._identityType = 1; - this._accId = 0; + this._accId = ""; this._isNewGuide = true; this._isNewRegist = true; } @@ -61,12 +61,12 @@ export class AccountData extends BaseData { } /** 设置用户id */ - public set accId(value: number) { + public set accId(value: string) { this._accId = value; } /** 获取用户id */ - public get accId(): number { + public get accId(): string { return this._accId; } diff --git a/assets/Scripts/chat18x/data/PlayerData.ts b/assets/Scripts/chat18x/data/PlayerData.ts index e8034af7..8e3c51dc 100644 --- a/assets/Scripts/chat18x/data/PlayerData.ts +++ b/assets/Scripts/chat18x/data/PlayerData.ts @@ -6,28 +6,18 @@ import { BaseData } from "./BaseData"; export class PlayerData extends BaseData { // 用户名 private _name: string = ''; - // 钻石数 - private _diamond: number = 0; - // vip失效时间戳 - private _vipExpire: number = 0; public reset(): void { this._name = ''; - this._diamond = 0; - this._vipExpire = 0; } public clear(): void { this._name = ''; - this._diamond = 0; - this._vipExpire = 0; } public destroy(): void { super.destroy(); this._name = null; - this._diamond = null; - this._vipExpire = null; } /** 设置用户名 */ @@ -38,25 +28,5 @@ export class PlayerData extends BaseData { /** 获取用户名 */ public get name(): string { return this._name; - } - - /** 设置钻石数 */ - public set diamond(value: number) { - this._diamond = value; - } - - /** 获取钻石数 */ - public get diamond(): number { - return this._diamond; - } - - /** 设置vip失效时间戳 */ - public set vipExpire(value: number) { - this._vipExpire = value; - } - - /** 获取vip失效时间戳 */ - public get vipExpire(): number { - return this._vipExpire; - } + } } \ No newline at end of file diff --git a/assets/Scripts/chat18x/data/ThemeData.ts b/assets/Scripts/chat18x/data/ThemeData.ts index c207f3d1..98a8f6d8 100644 --- a/assets/Scripts/chat18x/data/ThemeData.ts +++ b/assets/Scripts/chat18x/data/ThemeData.ts @@ -33,12 +33,12 @@ export class ThemeData extends BaseData { this._themeIds = []; for (const t of list) { const vo: proto.cs.IThemes = { - id: t.id || 0, // 主题 id - key: t.key || "", // 多语言键 - name: t.name || "", // 主题名称 - category: t.category || 0, // 主题枚举 + id: t.id, // 主题 id + key: t.key, // 多语言键 + name: t.name, // 主题名称 + category: t.category, // 主题枚举 isRelease: t.isRelease, // 是否解锁 - path: t.path || "", // 图片路径 + path: t.path, // 图片路径 }; this._themes.set(vo.id, vo); this._themeIds.push(vo.id); diff --git a/assets/Scripts/chat18x/network/services/MockAuthService.ts b/assets/Scripts/chat18x/network/services/MockAuthService.ts index 045bb0ec..2f28c5aa 100644 --- a/assets/Scripts/chat18x/network/services/MockAuthService.ts +++ b/assets/Scripts/chat18x/network/services/MockAuthService.ts @@ -24,7 +24,7 @@ export class MockAuthService implements IAuthService { const expireSeconds = Math.floor(Date.now() / 1000) + 7 * 24 * 3600; // 模拟用户ID - const accId = Math.floor(Math.random() * 1000000); + const accId = (Math.floor(Math.random() * 1000000)).toString(); // 模拟 CDN 前缀 const cdn = "https://cdn.mockserver.com/"; diff --git a/assets/Scripts/chat18x/network/services/MockCommonService.ts b/assets/Scripts/chat18x/network/services/MockCommonService.ts index 55dad99d..1d6034af 100644 --- a/assets/Scripts/chat18x/network/services/MockCommonService.ts +++ b/assets/Scripts/chat18x/network/services/MockCommonService.ts @@ -17,7 +17,7 @@ export class MockCommonService implements ICommonService { let data = ""; const resName = req.resName; - if (resName === "global_config") { + if (resName === "TbGlobalConfig") { // 全局配置 data = this.getGlobalConfig(); } diff --git a/assets/Scripts/chat18x/network/services/ThemeService.ts b/assets/Scripts/chat18x/network/services/ThemeService.ts index 32f191b6..c5c6f593 100644 --- a/assets/Scripts/chat18x/network/services/ThemeService.ts +++ b/assets/Scripts/chat18x/network/services/ThemeService.ts @@ -5,7 +5,7 @@ import { HttpThemeService } from "./HttpThemeService"; import { MockThemeService } from "./MockThemeService"; // 模拟开关 -const USE_MOCK = true; +const USE_MOCK = false; export class ThemeService implements IThemeService { private static _I: ThemeService | null = null; diff --git a/assets/Scripts/chat18x/ui/panels/ThemePanel.ts b/assets/Scripts/chat18x/ui/panels/ThemePanel.ts index 215ff232..e086b7cc 100644 --- a/assets/Scripts/chat18x/ui/panels/ThemePanel.ts +++ b/assets/Scripts/chat18x/ui/panels/ThemePanel.ts @@ -98,7 +98,7 @@ export class ThemePanel extends li_BaseView { this.recId = girlData.getRecommendGirlId(); this.rectNameKey = girlData.getRecommendGrilName(); let avatarPath = girlData.getRecommendGrilAvatar(); - //this.recName.string = LanguageUtils.getText(this.rectNameKey); + this.recName.string = LanguageUtils.getText(this.rectNameKey); ResManager.I.changeBundleSpriteFrame( this.recSprite, avatarPath, diff --git a/assets/Scripts/proto/proto.pb.d.ts b/assets/Scripts/proto/proto.pb.d.ts index a93fd73e..a92602bb 100644 --- a/assets/Scripts/proto/proto.pb.d.ts +++ b/assets/Scripts/proto/proto.pb.d.ts @@ -5446,7 +5446,7 @@ static getTypeUrl(typeUrlPrefix?: string): string; expire?: (number|Long|null); /** CSLoginRes accId */ - accId?: (number|Long|null); + accId?: (string|null); /** CSLoginRes cdn */ cdn?: (string|null); @@ -5474,7 +5474,7 @@ refreshToken: string; expire: (number|Long); /** CSLoginRes accId. */ -accId: (number|Long); +accId: string; /** CSLoginRes cdn. */ cdn: string; diff --git a/assets/Scripts/proto/proto.pb.js b/assets/Scripts/proto/proto.pb.js index 820d2843..28ba57aa 100644 --- a/assets/Scripts/proto/proto.pb.js +++ b/assets/Scripts/proto/proto.pb.js @@ -12790,7 +12790,7 @@ $root.cs = (function() { * @property {string|null} [token] CSLoginRes token * @property {string|null} [refreshToken] CSLoginRes refreshToken * @property {number|Long|null} [expire] CSLoginRes expire - * @property {number|Long|null} [accId] CSLoginRes accId + * @property {string|null} [accId] CSLoginRes accId * @property {string|null} [cdn] CSLoginRes cdn */ @@ -12843,11 +12843,11 @@ $root.cs = (function() { /** * CSLoginRes accId. - * @member {number|Long} accId + * @member {string} accId * @memberof cs.CSLoginRes * @instance */ - CSLoginRes.prototype.accId = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + CSLoginRes.prototype.accId = ""; /** * CSLoginRes cdn. @@ -12890,7 +12890,7 @@ $root.cs = (function() { if (message.expire != null && Object.hasOwnProperty.call(message, "expire")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.expire); if (message.accId != null && Object.hasOwnProperty.call(message, "accId")) - writer.uint32(/* id 5, wireType 0 =*/40).int64(message.accId); + writer.uint32(/* id 5, wireType 2 =*/42).string(message.accId); if (message.cdn != null && Object.hasOwnProperty.call(message, "cdn")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.cdn); return writer; @@ -12946,7 +12946,7 @@ $root.cs = (function() { break; } case 5: { - message.accId = reader.int64(); + message.accId = reader.string(); break; } case 6: { @@ -13001,8 +13001,8 @@ $root.cs = (function() { if (!$util.isInteger(message.expire) && !(message.expire && $util.isInteger(message.expire.low) && $util.isInteger(message.expire.high))) return "expire: integer|Long expected"; if (message.accId != null && message.hasOwnProperty("accId")) - if (!$util.isInteger(message.accId) && !(message.accId && $util.isInteger(message.accId.low) && $util.isInteger(message.accId.high))) - return "accId: integer|Long expected"; + if (!$util.isString(message.accId)) + return "accId: string expected"; if (message.cdn != null && message.hasOwnProperty("cdn")) if (!$util.isString(message.cdn)) return "cdn: string expected"; @@ -13037,14 +13037,7 @@ $root.cs = (function() { else if (typeof object.expire === "object") message.expire = new $util.LongBits(object.expire.low >>> 0, object.expire.high >>> 0).toNumber(); if (object.accId != null) - if ($util.Long) - (message.accId = $util.Long.fromValue(object.accId)).unsigned = false; - else if (typeof object.accId === "string") - message.accId = parseInt(object.accId, 10); - else if (typeof object.accId === "number") - message.accId = object.accId; - else if (typeof object.accId === "object") - message.accId = new $util.LongBits(object.accId.low >>> 0, object.accId.high >>> 0).toNumber(); + message.accId = String(object.accId); if (object.cdn != null) message.cdn = String(object.cdn); return message; @@ -13072,11 +13065,7 @@ $root.cs = (function() { object.expire = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.expire = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.accId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.accId = options.longs === String ? "0" : 0; + object.accId = ""; object.cdn = ""; } if (message.name != null && message.hasOwnProperty("name")) @@ -13091,10 +13080,7 @@ $root.cs = (function() { else object.expire = options.longs === String ? $util.Long.prototype.toString.call(message.expire) : options.longs === Number ? new $util.LongBits(message.expire.low >>> 0, message.expire.high >>> 0).toNumber() : message.expire; if (message.accId != null && message.hasOwnProperty("accId")) - if (typeof message.accId === "number") - object.accId = options.longs === String ? String(message.accId) : message.accId; - else - object.accId = options.longs === String ? $util.Long.prototype.toString.call(message.accId) : options.longs === Number ? new $util.LongBits(message.accId.low >>> 0, message.accId.high >>> 0).toNumber() : message.accId; + object.accId = message.accId; if (message.cdn != null && message.hasOwnProperty("cdn")) object.cdn = message.cdn; return object; diff --git a/proto_cs b/proto_cs index 984b9da4..4943c6df 160000 --- a/proto_cs +++ b/proto_cs @@ -1 +1 @@ -Subproject commit 984b9da4046b12f7ee336664cfa28f6165286c0d +Subproject commit 4943c6df6be597204db66bd332e28ea8d4ef2601 From 54321458eb866c1511f17b24f65dcbfe471e5b3e Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Tue, 9 Sep 2025 11:14:27 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/Sub/UI/PreloadUI.ts | 6 +++--- assets/Scripts/chat18x/data/GirlChatData.ts | 4 ++-- assets/Scripts/chat18x/data/GirlData.ts | 13 ++++++++----- assets/Scripts/chat18x/data/GirlUnlockData.ts | 4 ++-- .../Scripts/chat18x/network/services/GirlService.ts | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/assets/Scripts/Sub/UI/PreloadUI.ts b/assets/Scripts/Sub/UI/PreloadUI.ts index b1d8be8e..07d4effc 100644 --- a/assets/Scripts/Sub/UI/PreloadUI.ts +++ b/assets/Scripts/Sub/UI/PreloadUI.ts @@ -276,7 +276,7 @@ export class PreloadUI extends Component { const loginData = DataManager.I.getDataById(DataId.Login); loginData.token = resData.token; loginData.refreshToken = resData.refreshToken; - loginData.expire = resData.expire; + loginData.expire = Number(resData.expire); const playerData = DataManager.I.getDataById(DataId.Player); playerData.name = resData.name; const accountData = DataManager.I.getDataById(DataId.Account); @@ -301,8 +301,8 @@ export class PreloadUI extends Component { const resData = res.data; // 保存数据 const walletData = DataManager.I.getDataById(DataId.Wallet); - walletData.balance = resData.balance; - walletData.vipExpire = resData.vipExpire; + walletData.balance = Number(resData.balance); + walletData.vipExpire = Number(resData.vipExpire); } } diff --git a/assets/Scripts/chat18x/data/GirlChatData.ts b/assets/Scripts/chat18x/data/GirlChatData.ts index 4977da66..1eac96f1 100644 --- a/assets/Scripts/chat18x/data/GirlChatData.ts +++ b/assets/Scripts/chat18x/data/GirlChatData.ts @@ -56,7 +56,7 @@ export class GirlChatData extends BaseData { /** 保存总聊天次数 */ public setChatTotalCount(value: number): void { this.chatTotalCount = value; - console.log("当前总聊天次数:", this.chatTotalCount); + console.log("当前技师 ", this.id, " ,总聊天次数:", this.chatTotalCount); } /** 获取剩余聊天次数 */ @@ -67,7 +67,7 @@ export class GirlChatData extends BaseData { /** 保存剩余聊天次数 */ public setChatRemainCount(value: number): void { this.chatRemainCount = value; - console.log("当前剩余聊天次数:", this.chatRemainCount); + console.log("当前技师 ", this.id, " ,剩余聊天次数:", this.chatRemainCount); } /** 更新剩余聊天次数 */ diff --git a/assets/Scripts/chat18x/data/GirlData.ts b/assets/Scripts/chat18x/data/GirlData.ts index e5fc1b49..887a769a 100644 --- a/assets/Scripts/chat18x/data/GirlData.ts +++ b/assets/Scripts/chat18x/data/GirlData.ts @@ -84,6 +84,9 @@ export class GirlData extends BaseData { this.setGirlBrief(categoryId, data.girls); this.setGirlUnlock(categoryId, data.girls); this.setGirlFavorability(categoryId, data.girls); + + const bucket = this.ensureBucket(categoryId); + console.log("保存类别 ", categoryId, " 的技师列表: ", bucket); } /** 保存技师详细数据 */ @@ -96,6 +99,9 @@ export class GirlData extends BaseData { this.setGirlUnlock(categoryId, details); this.setGirlChat(categoryId, details); this.setGirlFavorability(categoryId, details); + + const bucket = this.ensureBucket(categoryId); + console.log("保存类别 ", categoryId, " 的详细数据: ", bucket); } /** --------------------------------------------------------- 技师的简要数据 --------------------------------------------------------- */ @@ -136,7 +142,6 @@ export class GirlData extends BaseData { existed.add(g.id); } } - console.log("保存技师的简要数据: ", bucket); } private parseOneGirlBrief(data: proto.cs.IGirls): GirlBriefData | null { @@ -257,7 +262,6 @@ export class GirlData extends BaseData { if (!one) continue; bucket.details.set(g.id, one); } - console.log("保存技师的详细数据: ", bucket); } /** 取某分类 + girlId 的详细数据 */ @@ -410,7 +414,6 @@ export class GirlData extends BaseData { if (!one) continue; bucket.unlocks.set(g.id, one); } - console.log("保存技师的解锁数据: ", bucket); } /** 取某分类 + girlId 的解锁数据 */ @@ -476,6 +479,7 @@ export class GirlData extends BaseData { if (!data) return null; let oneData = new GirlChatData(); oneData.init?.(DataId.GirlChat); + oneData.setId(data.id); oneData.setChatTotalCount(data.chatTotalCount); oneData.setChatRemainCount(data.chatRemainCount); return oneData; @@ -490,7 +494,6 @@ export class GirlData extends BaseData { if (!one) continue; bucket.chats.set(g.id, one); } - console.log("保存技师的聊天数据: ", bucket); } /** 取某分类 + girlId 的聊天数据 */ @@ -542,6 +545,7 @@ export class GirlData extends BaseData { if (!data) return null; let oneData = new GirlFavorabilityData(); oneData.init?.(DataId.GirlFavorability); + oneData.setId(data.id); oneData.setStar(data.star); return oneData; } @@ -555,7 +559,6 @@ export class GirlData extends BaseData { if (!one) continue; bucket.favorability.set(g.id, one); } - console.log("保存技师的好感度数据: ", bucket); } /** 取某分类 + girlId 的好感度数据 */ diff --git a/assets/Scripts/chat18x/data/GirlUnlockData.ts b/assets/Scripts/chat18x/data/GirlUnlockData.ts index e9bc4eb7..da9da60d 100644 --- a/assets/Scripts/chat18x/data/GirlUnlockData.ts +++ b/assets/Scripts/chat18x/data/GirlUnlockData.ts @@ -81,7 +81,7 @@ export class GirlUnlockData extends BaseData { if (!exists) { this.unlockedImageIds.push(id); } - // console.log("技师 ", this.id, " 当前解锁图片的所有id:",this.unlockedImageIds); + console.log("技师 ", this.id, " 当前解锁图片的所有id:",this.unlockedImageIds); } /** 获取所有解锁图片的 id */ @@ -113,7 +113,7 @@ export class GirlUnlockData extends BaseData { if (!exists) { this.unlockedVideoIds.push(id); } - // console.log("技师 ", this.id, " 当前解锁视频的所有id:",this.unlockedVideoIds); + console.log("技师 ", this.id, " 当前解锁视频的所有id:",this.unlockedVideoIds); } /** 获取所有解锁视频的 id */ diff --git a/assets/Scripts/chat18x/network/services/GirlService.ts b/assets/Scripts/chat18x/network/services/GirlService.ts index 777a933c..b2bcca54 100644 --- a/assets/Scripts/chat18x/network/services/GirlService.ts +++ b/assets/Scripts/chat18x/network/services/GirlService.ts @@ -5,7 +5,7 @@ import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; // 模拟开关 -const USE_MOCK = true; +const USE_MOCK = false; export class GirlService implements IGirlService { private static _I: GirlService | null = null;