drgame-cc 1.0.62 → 1.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drres/focus/focus_1/gesture.atlas +34 -34
- package/drres/focus/focus_2/gesture.atlas +41 -41
- package/drres/focus/focus_3/gesture.atlas +34 -34
- package/drres/focus/focus_4/gesture.atlas +20 -20
- package/drres/prefab/HelperWin.prefab +508 -508
- package/drscript/PlatformAdapter.ts +2 -2
- package/drscript/ad-sdk/README.md +78 -12
- package/drscript/ad-sdk/ad-sdk.ts +416 -0
- package/drscript/ad-sdk/{adapters/xiaomi-adapter.js.meta → ad-sdk.ts.meta} +2 -2
- package/drscript/ad-sdk/event-emitter.ts +66 -0
- package/drscript/ad-sdk/event-emitter.ts.meta +10 -0
- package/drscript/ad-sdk/leaderboard/leaderboard.ts +219 -0
- package/drscript/ad-sdk/leaderboard/leaderboard.ts.meta +10 -0
- package/drscript/ad-sdk/package.json +18 -17
- package/drscript/ad-sdk/reporters/reporter.ts +515 -0
- package/drscript/ad-sdk/reporters/reporter.ts.meta +10 -0
- package/drscript/ad-sdk/reporters/superset-lewo.ts +464 -0
- package/drscript/ad-sdk/reporters/superset-lewo.ts.meta +10 -0
- package/drscript/ad-sdk/types/enums.ts +103 -0
- package/drscript/ad-sdk/types/enums.ts.meta +10 -0
- package/drscript/ad-sdk/types/{index.d.ts → index.ts} +1 -1
- package/drscript/ad-sdk/types/index.ts.meta +10 -0
- package/drscript/ad-sdk/types/{interfaces.d.ts → interfaces.ts} +61 -10
- package/drscript/ad-sdk/types/interfaces.ts.meta +10 -0
- package/drscript/ad-sdk/user-gamedata/user-gamedata.ts +219 -0
- package/drscript/ad-sdk/user-gamedata/user-gamedata.ts.meta +10 -0
- package/drscript/ad-sdk/user-gamedata.meta +13 -0
- package/package.json +1 -1
- package/drscript/ad-sdk/ad-sdk.d.ts +0 -59
- package/drscript/ad-sdk/ad-sdk.js +0 -338
- package/drscript/ad-sdk/adapters/xiaomi-adapter.d.ts +0 -29
- package/drscript/ad-sdk/adapters/xiaomi-adapter.d.ts.meta +0 -6
- package/drscript/ad-sdk/adapters/xiaomi-adapter.js +0 -452
- package/drscript/ad-sdk/event-emitter.d.ts +0 -12
- package/drscript/ad-sdk/event-emitter.js +0 -65
- package/drscript/ad-sdk/leaderboard/leaderboard.d.ts +0 -23
- package/drscript/ad-sdk/leaderboard/leaderboard.js +0 -193
- package/drscript/ad-sdk/reporters/reporter.d.ts +0 -85
- package/drscript/ad-sdk/reporters/reporter.js +0 -500
- package/drscript/ad-sdk/reporters/superset-lewo.js +0 -574
- package/drscript/ad-sdk/types/enums.d.ts +0 -66
- package/drscript/ad-sdk/types/enums.js +0 -113
- package/drscript/ad-sdk/types/index.js +0 -15
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 排行榜模块 - 积分排行与添加积分
|
|
3
|
+
*
|
|
4
|
+
* 使用方式:
|
|
5
|
+
* Leaderboard.init(config) — 初始化(设置项目编码、服务地址)
|
|
6
|
+
* Leaderboard.getRank() — 获取积分排行榜
|
|
7
|
+
* Leaderboard.addPoint(params) — 添加积分
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
ILeaderboardConfig,
|
|
12
|
+
IRankResult,
|
|
13
|
+
IAddPointParams,
|
|
14
|
+
} from '../types/interfaces';
|
|
15
|
+
|
|
16
|
+
// ────────────────────────────────────────
|
|
17
|
+
// 内部类型
|
|
18
|
+
// ────────────────────────────────────────
|
|
19
|
+
|
|
20
|
+
interface LeaderboardConfig {
|
|
21
|
+
/** 服务基础域名 */
|
|
22
|
+
serverUrl: string;
|
|
23
|
+
/** 排行榜服务地址 */
|
|
24
|
+
rank_url: string;
|
|
25
|
+
/** 添加积分服务地址 */
|
|
26
|
+
add_url: string;
|
|
27
|
+
/** 项目编码 */
|
|
28
|
+
project: string;
|
|
29
|
+
/** 用户ID */
|
|
30
|
+
user_id: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface LeaderboardLike {
|
|
34
|
+
_initialized: boolean;
|
|
35
|
+
_config: LeaderboardConfig;
|
|
36
|
+
init(config: Partial<ILeaderboardConfig>): void;
|
|
37
|
+
getRank(): Promise<IRankResult>;
|
|
38
|
+
addPoint(params: IAddPointParams): Promise<any>;
|
|
39
|
+
setUserId(user_id: string): void;
|
|
40
|
+
getProject(): string;
|
|
41
|
+
_post(url: string, data: Record<string, any>): Promise<any>;
|
|
42
|
+
_formatTime(date: Date): string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** 服务器限制 user_id 最大 12 位,统一归一化后再使用(去除非法字符并截断) */
|
|
46
|
+
function normalizeUserId(userId: string): string {
|
|
47
|
+
userId = String(userId || '');
|
|
48
|
+
userId = userId.replace(/[^a-zA-Z0-9]/g, '');
|
|
49
|
+
return userId.slice(0, 12);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ────────────────────────────────────────
|
|
53
|
+
// 排行榜实现
|
|
54
|
+
// ────────────────────────────────────────
|
|
55
|
+
|
|
56
|
+
const Leaderboard: LeaderboardLike = {
|
|
57
|
+
/** 是否已初始化 */
|
|
58
|
+
_initialized: false,
|
|
59
|
+
|
|
60
|
+
/** 配置 */
|
|
61
|
+
_config: {
|
|
62
|
+
/** 服务基础域名 */
|
|
63
|
+
serverUrl: 'https://hyp-test.huyingpai.com',
|
|
64
|
+
/** 排行榜服务地址 */
|
|
65
|
+
rank_url: '',
|
|
66
|
+
/** 添加积分服务地址 */
|
|
67
|
+
add_url: '',
|
|
68
|
+
/** 项目编码 */
|
|
69
|
+
project: '',
|
|
70
|
+
/** 用户ID */
|
|
71
|
+
user_id: '',
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 初始化排行榜模块
|
|
76
|
+
* @param config 仅需项目编码与服务基础域名(project 由 ad-sdk 统一处理)
|
|
77
|
+
*/
|
|
78
|
+
init: function (config: Partial<ILeaderboardConfig>) {
|
|
79
|
+
config = config || {};
|
|
80
|
+
|
|
81
|
+
this._config.serverUrl = (config.serverUrl || 'https://hyp-test.huyingpai.com').replace(/\/+$/, '');
|
|
82
|
+
this._config.rank_url = this._config.serverUrl + '/API_ACHIEVEMENT/api/user/point/rank';
|
|
83
|
+
this._config.add_url = this._config.serverUrl + '/API_ACHIEVEMENT/api/user/point/add';
|
|
84
|
+
this._config.project = config.project || '';
|
|
85
|
+
|
|
86
|
+
this._initialized = true;
|
|
87
|
+
console.log('[Leaderboard] Initialized, project:', this._config.project);
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* 获取积分排行榜
|
|
92
|
+
*/
|
|
93
|
+
getRank: function (): Promise<IRankResult> {
|
|
94
|
+
if (!this._initialized) {
|
|
95
|
+
console.warn('[Leaderboard] Not initialized. Call Leaderboard.init() first.');
|
|
96
|
+
return Promise.reject({ code: -1, message: 'Leaderboard not initialized' });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const data: Record<string, any> = {
|
|
100
|
+
project: this._config.project,
|
|
101
|
+
timestamp: Date.now(),
|
|
102
|
+
time: this._formatTime(new Date()),
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
return this._post(this._config.rank_url, data);
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 添加积分
|
|
110
|
+
*/
|
|
111
|
+
addPoint: function (params: IAddPointParams): Promise<any> {
|
|
112
|
+
if (!this._initialized) {
|
|
113
|
+
console.warn('[Leaderboard] Not initialized. Call Leaderboard.init() first.');
|
|
114
|
+
return Promise.reject({ code: -1, message: 'Leaderboard not initialized' });
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const data: Record<string, any> = {
|
|
118
|
+
project: this._config.project,
|
|
119
|
+
userId: this._config.user_id,
|
|
120
|
+
point: params.point || 0,
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
// jsonData 为可选扩展数据
|
|
124
|
+
if (params.jsonData) {
|
|
125
|
+
data.jsonData = params.jsonData;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
data.timestamp = Date.now();
|
|
129
|
+
data.time = this._formatTime(new Date());
|
|
130
|
+
|
|
131
|
+
return this._post(this._config.add_url, data);
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* 更新用户ID(登录后调用)
|
|
136
|
+
*/
|
|
137
|
+
setUserId: function (user_id: string) {
|
|
138
|
+
this._config.user_id = normalizeUserId(user_id);
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 获取当前项目编码
|
|
143
|
+
*/
|
|
144
|
+
getProject: function (): string {
|
|
145
|
+
return this._config.project;
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
// ────────────────────────────────────────
|
|
149
|
+
// 内部方法
|
|
150
|
+
// ────────────────────────────────────────
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 发送 POST 请求(Promise 封装)
|
|
154
|
+
*/
|
|
155
|
+
_post: function (url: string, data: Record<string, any>): Promise<any> {
|
|
156
|
+
return new Promise(function (resolve, reject) {
|
|
157
|
+
const dataStr = JSON.stringify(data);
|
|
158
|
+
console.log('[Leaderboard] POST:', url, dataStr);
|
|
159
|
+
|
|
160
|
+
let xmlhttp: any;
|
|
161
|
+
if (typeof XMLHttpRequest !== 'undefined') {
|
|
162
|
+
xmlhttp = new XMLHttpRequest();
|
|
163
|
+
} else if (typeof ActiveXObject !== 'undefined') {
|
|
164
|
+
xmlhttp = new (ActiveXObject as any)('Microsoft.XMLHTTP');
|
|
165
|
+
} else {
|
|
166
|
+
reject({ code: -1, message: 'No HTTP client available' });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
xmlhttp.onreadystatechange = function () {
|
|
171
|
+
if (xmlhttp.readyState !== 4) return;
|
|
172
|
+
|
|
173
|
+
let rsp = xmlhttp.responseText || xmlhttp.responseXML;
|
|
174
|
+
let parseError = false;
|
|
175
|
+
|
|
176
|
+
if (typeof rsp === 'string') {
|
|
177
|
+
try {
|
|
178
|
+
rsp = JSON.parse(rsp);
|
|
179
|
+
} catch (e) {
|
|
180
|
+
parseError = true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (parseError || xmlhttp.status !== 200) {
|
|
185
|
+
const errMsg = parseError ? 'JSON parse error' : ('HTTP ' + xmlhttp.status);
|
|
186
|
+
console.error('[Leaderboard] Request failed:', errMsg);
|
|
187
|
+
reject({ code: xmlhttp.status || -1, message: errMsg });
|
|
188
|
+
} else {
|
|
189
|
+
console.log('[Leaderboard] Response:', rsp);
|
|
190
|
+
resolve(rsp);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
xmlhttp.open('POST', url, true);
|
|
195
|
+
xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
|
196
|
+
xmlhttp.send(dataStr);
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* 时间格式化:yyyy-MM-dd HH:mm:ss
|
|
202
|
+
*/
|
|
203
|
+
_formatTime: function (date: Date): string {
|
|
204
|
+
let m: any = date.getMonth() + 1;
|
|
205
|
+
m = m < 10 ? '0' + m : m;
|
|
206
|
+
let d: any = date.getDate();
|
|
207
|
+
d = d < 10 ? '0' + d : d;
|
|
208
|
+
let h: any = date.getHours();
|
|
209
|
+
h = h < 10 ? '0' + h : h;
|
|
210
|
+
let min: any = date.getMinutes();
|
|
211
|
+
min = min < 10 ? '0' + min : min;
|
|
212
|
+
let sec: any = date.getSeconds();
|
|
213
|
+
sec = sec < 10 ? '0' + sec : sec;
|
|
214
|
+
return date.getFullYear() + '-' + m + '-' + d + ' ' + h + ':' + min + ':' + sec;
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export { Leaderboard };
|
|
219
|
+
export default Leaderboard;
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ad-sdk",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "聚合广告 SDK - 电视端 JSBridge 适配,
|
|
5
|
-
"main": "ad-sdk.
|
|
6
|
-
"types": "ad-sdk.
|
|
4
|
+
"description": "聚合广告 SDK - 电视端 JSBridge 适配,TypeScript 源码",
|
|
5
|
+
"main": "ad-sdk.ts",
|
|
6
|
+
"types": "ad-sdk.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"require": "./ad-sdk.
|
|
10
|
-
"types": "./ad-sdk.
|
|
9
|
+
"require": "./ad-sdk.ts",
|
|
10
|
+
"types": "./ad-sdk.ts"
|
|
11
11
|
},
|
|
12
12
|
"./types": {
|
|
13
|
-
"require": "./types/index.
|
|
14
|
-
"types": "./types/index.
|
|
13
|
+
"require": "./types/index.ts",
|
|
14
|
+
"types": "./types/index.ts"
|
|
15
15
|
},
|
|
16
16
|
"./adapters/xiaomi-adapter": {
|
|
17
|
-
"require": "./adapters/xiaomi-adapter.
|
|
18
|
-
"types": "./adapters/xiaomi-adapter.
|
|
17
|
+
"require": "./adapters/xiaomi-adapter.ts",
|
|
18
|
+
"types": "./adapters/xiaomi-adapter.ts"
|
|
19
19
|
},
|
|
20
20
|
"./event-emitter": {
|
|
21
|
-
"require": "./event-emitter.
|
|
22
|
-
"types": "./event-emitter.
|
|
21
|
+
"require": "./event-emitter.ts",
|
|
22
|
+
"types": "./event-emitter.ts"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
|
-
"ad-sdk.
|
|
27
|
-
"
|
|
28
|
-
"event-emitter.js",
|
|
29
|
-
"event-emitter.d.ts",
|
|
26
|
+
"ad-sdk.ts",
|
|
27
|
+
"event-emitter.ts",
|
|
30
28
|
"types/",
|
|
31
|
-
"adapters/"
|
|
29
|
+
"adapters/",
|
|
30
|
+
"leaderboard/",
|
|
31
|
+
"reporters/",
|
|
32
|
+
"user-gamedata/"
|
|
32
33
|
],
|
|
33
34
|
"keywords": [
|
|
34
35
|
"ad",
|
|
@@ -43,4 +44,4 @@
|
|
|
43
44
|
"javascript-obfuscator": "^5.4.3",
|
|
44
45
|
"terser": "^5.48.0"
|
|
45
46
|
}
|
|
46
|
-
}
|
|
47
|
+
}
|