volleyballsimtypes 0.0.165 → 0.0.166
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/dist/cjs/src/data/models/performance-stats.d.ts +26 -15
- package/dist/cjs/src/data/models/performance-stats.js +37 -7
- package/dist/cjs/src/data/transformers/performance-stats.js +22 -10
- package/dist/cjs/src/formula/index.d.ts +0 -1
- package/dist/cjs/src/formula/index.js +0 -1
- package/dist/cjs/src/formula/role.formula.json +76 -46
- package/dist/cjs/src/formula/roles.d.ts +3 -14
- package/dist/cjs/src/formula/stats.d.ts +2 -6
- package/dist/cjs/src/formula/stats.js +52 -11
- package/dist/cjs/src/service/player/performance-stats.d.ts +5 -25
- package/dist/cjs/src/service/player/performance-stats.js +10 -29
- package/dist/esm/src/data/models/performance-stats.d.ts +26 -15
- package/dist/esm/src/data/models/performance-stats.js +37 -7
- package/dist/esm/src/data/transformers/performance-stats.js +22 -10
- package/dist/esm/src/formula/index.d.ts +0 -1
- package/dist/esm/src/formula/index.js +0 -1
- package/dist/esm/src/formula/role.formula.json +76 -46
- package/dist/esm/src/formula/roles.d.ts +3 -14
- package/dist/esm/src/formula/stats.d.ts +2 -6
- package/dist/esm/src/formula/stats.js +50 -7
- package/dist/esm/src/service/player/performance-stats.d.ts +5 -25
- package/dist/esm/src/service/player/performance-stats.js +9 -28
- package/package.json +1 -1
- package/dist/cjs/src/formula/event.formula.json +0 -125
- package/dist/cjs/src/formula/events.d.ts +0 -125
- package/dist/cjs/src/formula/events.js +0 -8
- package/dist/cjs/src/formula/stat.formula.json +0 -66
- package/dist/esm/src/formula/event.formula.json +0 -125
- package/dist/esm/src/formula/events.d.ts +0 -125
- package/dist/esm/src/formula/events.js +0 -2
- package/dist/esm/src/formula/stat.formula.json +0 -66
|
@@ -1,37 +1,48 @@
|
|
|
1
1
|
import * as Sequelize from 'sequelize';
|
|
2
|
-
import { Model
|
|
2
|
+
import { Model } from 'sequelize';
|
|
3
3
|
import { PlayerId, PlayerModel } from '.';
|
|
4
4
|
export interface PerformanceStatsAttributes {
|
|
5
5
|
player_id: string;
|
|
6
6
|
setting: number;
|
|
7
|
-
|
|
8
|
-
reception: number;
|
|
7
|
+
serve: number;
|
|
9
8
|
spike: number;
|
|
9
|
+
quick: number;
|
|
10
|
+
power: number;
|
|
11
|
+
awareness: number;
|
|
12
|
+
attack: number;
|
|
10
13
|
back_attack: number;
|
|
11
|
-
|
|
14
|
+
reception: number;
|
|
15
|
+
overhand: number;
|
|
16
|
+
bump: number;
|
|
12
17
|
block: number;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
read: number;
|
|
19
|
+
commit: number;
|
|
20
|
+
focus: number;
|
|
16
21
|
defense: number;
|
|
22
|
+
stamina: number;
|
|
17
23
|
}
|
|
18
24
|
export type PerformanceStatsPk = 'player_id';
|
|
19
25
|
export type PerformanceStatsId = PerformanceStatsModel[PerformanceStatsPk];
|
|
20
|
-
export type
|
|
21
|
-
export type PerformanceStatsCreationAttributes = Optional<PerformanceStatsAttributes, PerformanceStatsOptionalAttributes>;
|
|
26
|
+
export type PerformanceStatsCreationAttributes = PerformanceStatsAttributes;
|
|
22
27
|
export declare class PerformanceStatsModel extends Model<PerformanceStatsAttributes, PerformanceStatsCreationAttributes> implements PerformanceStatsAttributes {
|
|
23
28
|
player_id: string;
|
|
24
29
|
setting: number;
|
|
25
|
-
|
|
26
|
-
reception: number;
|
|
30
|
+
serve: number;
|
|
27
31
|
spike: number;
|
|
32
|
+
quick: number;
|
|
33
|
+
power: number;
|
|
34
|
+
awareness: number;
|
|
35
|
+
attack: number;
|
|
28
36
|
back_attack: number;
|
|
29
|
-
|
|
37
|
+
reception: number;
|
|
38
|
+
overhand: number;
|
|
39
|
+
bump: number;
|
|
30
40
|
block: number;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
read: number;
|
|
42
|
+
commit: number;
|
|
43
|
+
focus: number;
|
|
34
44
|
defense: number;
|
|
45
|
+
stamina: number;
|
|
35
46
|
player: PlayerModel;
|
|
36
47
|
getPlayer: Sequelize.BelongsToGetAssociationMixin<PlayerModel>;
|
|
37
48
|
setPlayer: Sequelize.BelongsToSetAssociationMixin<PlayerModel, PlayerId>;
|
|
@@ -19,17 +19,32 @@ class PerformanceStatsModel extends sequelize_1.Model {
|
|
|
19
19
|
allowNull: false,
|
|
20
20
|
defaultValue: 0
|
|
21
21
|
},
|
|
22
|
-
|
|
22
|
+
serve: {
|
|
23
23
|
type: sequelize_1.DataTypes.INTEGER,
|
|
24
24
|
allowNull: false,
|
|
25
25
|
defaultValue: 0
|
|
26
26
|
},
|
|
27
|
-
|
|
27
|
+
spike: {
|
|
28
28
|
type: sequelize_1.DataTypes.INTEGER,
|
|
29
29
|
allowNull: false,
|
|
30
30
|
defaultValue: 0
|
|
31
31
|
},
|
|
32
|
-
|
|
32
|
+
quick: {
|
|
33
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
34
|
+
allowNull: false,
|
|
35
|
+
defaultValue: 0
|
|
36
|
+
},
|
|
37
|
+
power: {
|
|
38
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
39
|
+
allowNull: false,
|
|
40
|
+
defaultValue: 0
|
|
41
|
+
},
|
|
42
|
+
awareness: {
|
|
43
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
44
|
+
allowNull: false,
|
|
45
|
+
defaultValue: 0
|
|
46
|
+
},
|
|
47
|
+
attack: {
|
|
33
48
|
type: sequelize_1.DataTypes.INTEGER,
|
|
34
49
|
allowNull: false,
|
|
35
50
|
defaultValue: 0
|
|
@@ -39,7 +54,17 @@ class PerformanceStatsModel extends sequelize_1.Model {
|
|
|
39
54
|
allowNull: false,
|
|
40
55
|
defaultValue: 0
|
|
41
56
|
},
|
|
42
|
-
|
|
57
|
+
reception: {
|
|
58
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
59
|
+
allowNull: false,
|
|
60
|
+
defaultValue: 0
|
|
61
|
+
},
|
|
62
|
+
overhand: {
|
|
63
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
64
|
+
allowNull: false,
|
|
65
|
+
defaultValue: 0
|
|
66
|
+
},
|
|
67
|
+
bump: {
|
|
43
68
|
type: sequelize_1.DataTypes.INTEGER,
|
|
44
69
|
allowNull: false,
|
|
45
70
|
defaultValue: 0
|
|
@@ -49,17 +74,17 @@ class PerformanceStatsModel extends sequelize_1.Model {
|
|
|
49
74
|
allowNull: false,
|
|
50
75
|
defaultValue: 0
|
|
51
76
|
},
|
|
52
|
-
|
|
77
|
+
read: {
|
|
53
78
|
type: sequelize_1.DataTypes.INTEGER,
|
|
54
79
|
allowNull: false,
|
|
55
80
|
defaultValue: 0
|
|
56
81
|
},
|
|
57
|
-
|
|
82
|
+
commit: {
|
|
58
83
|
type: sequelize_1.DataTypes.INTEGER,
|
|
59
84
|
allowNull: false,
|
|
60
85
|
defaultValue: 0
|
|
61
86
|
},
|
|
62
|
-
|
|
87
|
+
focus: {
|
|
63
88
|
type: sequelize_1.DataTypes.INTEGER,
|
|
64
89
|
allowNull: false,
|
|
65
90
|
defaultValue: 0
|
|
@@ -68,6 +93,11 @@ class PerformanceStatsModel extends sequelize_1.Model {
|
|
|
68
93
|
type: sequelize_1.DataTypes.INTEGER,
|
|
69
94
|
allowNull: false,
|
|
70
95
|
defaultValue: 0
|
|
96
|
+
},
|
|
97
|
+
stamina: {
|
|
98
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
99
|
+
allowNull: false,
|
|
100
|
+
defaultValue: 0
|
|
71
101
|
}
|
|
72
102
|
}, {
|
|
73
103
|
sequelize,
|
|
@@ -7,12 +7,18 @@ function transformToAttributes(player) {
|
|
|
7
7
|
player_id: player.id,
|
|
8
8
|
back_attack: player.stats.backAttack,
|
|
9
9
|
block: player.stats.block,
|
|
10
|
+
read: player.stats.read,
|
|
11
|
+
commit: player.stats.commit,
|
|
12
|
+
focus: player.stats.focus,
|
|
10
13
|
awareness: player.stats.awareness,
|
|
11
14
|
defense: player.stats.defense,
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
quick: player.stats.quick,
|
|
16
|
+
power: player.stats.power,
|
|
17
|
+
attack: player.stats.attack,
|
|
14
18
|
serve: player.stats.serve,
|
|
15
19
|
reception: player.stats.reception,
|
|
20
|
+
overhand: player.stats.overhand,
|
|
21
|
+
bump: player.stats.bump,
|
|
16
22
|
setting: player.stats.setting,
|
|
17
23
|
spike: player.stats.spike,
|
|
18
24
|
stamina: player.stats.stamina
|
|
@@ -21,17 +27,23 @@ function transformToAttributes(player) {
|
|
|
21
27
|
exports.transformFromPerformanceStats = transformToAttributes;
|
|
22
28
|
function transformToObject(model) {
|
|
23
29
|
return new service_1.PerformanceStats({
|
|
24
|
-
awareness: model.awareness,
|
|
25
|
-
defense: model.defense,
|
|
26
|
-
jump: model.jump,
|
|
27
|
-
pass: model.pass,
|
|
28
|
-
serve: model.serve,
|
|
29
|
-
reception: model.reception,
|
|
30
30
|
setting: model.setting,
|
|
31
|
+
serve: model.serve,
|
|
31
32
|
spike: model.spike,
|
|
32
|
-
|
|
33
|
+
quick: model.quick,
|
|
34
|
+
power: model.power,
|
|
35
|
+
awareness: model.awareness,
|
|
36
|
+
attack: model.attack,
|
|
37
|
+
backAttack: model.back_attack,
|
|
38
|
+
reception: model.reception,
|
|
39
|
+
overhand: model.overhand,
|
|
40
|
+
bump: model.bump,
|
|
33
41
|
block: model.block,
|
|
34
|
-
|
|
42
|
+
read: model.read,
|
|
43
|
+
commit: model.commit,
|
|
44
|
+
focus: model.focus,
|
|
45
|
+
defense: model.defense,
|
|
46
|
+
stamina: model.stamina
|
|
35
47
|
});
|
|
36
48
|
}
|
|
37
49
|
exports.transformToPerformanceStats = transformToObject;
|
|
@@ -15,5 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./stats"), exports);
|
|
18
|
-
__exportStar(require("./events"), exports);
|
|
19
18
|
__exportStar(require("./roles"), exports);
|
|
@@ -3,80 +3,110 @@
|
|
|
3
3
|
"role": "SETTER",
|
|
4
4
|
"weight": {
|
|
5
5
|
"serve": 0.2,
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"spike": 0
|
|
6
|
+
"stamina": 0.05,
|
|
7
|
+
"setting": 0.7,
|
|
8
|
+
"block": 0.05,
|
|
9
|
+
"spike": 0,
|
|
10
|
+
"quick": 0,
|
|
11
|
+
"power": 0,
|
|
10
12
|
"backAttack": 0,
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
13
|
+
"awareness": 0,
|
|
14
|
+
"attack": 0,
|
|
15
|
+
"reception": 0,
|
|
16
|
+
"overhand": 0,
|
|
17
|
+
"bump": 0,
|
|
18
|
+
"read": 0,
|
|
19
|
+
"commit": 0,
|
|
20
|
+
"focus": 0,
|
|
21
|
+
"defense": 0
|
|
16
22
|
}
|
|
17
23
|
},
|
|
18
24
|
{
|
|
19
25
|
"role": "LIBERO",
|
|
20
26
|
"weight": {
|
|
21
|
-
"serve": 0.02,
|
|
22
|
-
"setting": 0.045,
|
|
23
|
-
"pass": 0.095,
|
|
24
|
-
"reception": 0.33,
|
|
25
27
|
"spike": 0,
|
|
28
|
+
"quick": 0,
|
|
29
|
+
"power": 0,
|
|
26
30
|
"backAttack": 0,
|
|
27
|
-
"
|
|
31
|
+
"awareness": 0,
|
|
32
|
+
"attack": 0,
|
|
33
|
+
"serve": 0,
|
|
34
|
+
"stamina": 0.15,
|
|
35
|
+
"setting": 0.15,
|
|
36
|
+
"reception": 0.7,
|
|
37
|
+
"overhand": 0,
|
|
38
|
+
"bump": 0,
|
|
28
39
|
"block": 0,
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
40
|
+
"read": 0,
|
|
41
|
+
"commit": 0,
|
|
42
|
+
"focus": 0,
|
|
43
|
+
"defense": 0
|
|
32
44
|
}
|
|
33
45
|
},
|
|
34
46
|
{
|
|
35
47
|
"role": "OUTSIDE_HITTER",
|
|
36
48
|
"weight": {
|
|
37
|
-
"
|
|
49
|
+
"spike": 0.6,
|
|
50
|
+
"quick": 0,
|
|
51
|
+
"power": 0,
|
|
52
|
+
"backAttack": 0.2,
|
|
53
|
+
"awareness": 0,
|
|
54
|
+
"attack": 0,
|
|
55
|
+
"serve": 0.15,
|
|
56
|
+
"stamina": 0.05,
|
|
38
57
|
"setting": 0,
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"defense": 0
|
|
47
|
-
"stamina": 0.05
|
|
58
|
+
"reception": 0,
|
|
59
|
+
"overhand": 0,
|
|
60
|
+
"bump": 0,
|
|
61
|
+
"block": 0,
|
|
62
|
+
"read": 0,
|
|
63
|
+
"commit": 0,
|
|
64
|
+
"focus": 0,
|
|
65
|
+
"defense": 0
|
|
48
66
|
}
|
|
49
67
|
},
|
|
50
68
|
{
|
|
51
69
|
"role": "OPPOSITE_HITTER",
|
|
52
70
|
"weight": {
|
|
53
|
-
"
|
|
71
|
+
"spike": 0.3,
|
|
72
|
+
"quick": 0,
|
|
73
|
+
"power": 0,
|
|
74
|
+
"backAttack": 0.1,
|
|
75
|
+
"awareness": 0,
|
|
76
|
+
"attack": 0,
|
|
77
|
+
"serve": 0.1,
|
|
78
|
+
"stamina": 0.1,
|
|
54
79
|
"setting": 0,
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"defense": 0
|
|
63
|
-
"stamina": 0.05
|
|
80
|
+
"reception": 0.2,
|
|
81
|
+
"overhand": 0,
|
|
82
|
+
"bump": 0,
|
|
83
|
+
"block": 0.2,
|
|
84
|
+
"read": 0,
|
|
85
|
+
"commit": 0,
|
|
86
|
+
"focus": 0,
|
|
87
|
+
"defense": 0
|
|
64
88
|
}
|
|
65
89
|
},
|
|
66
90
|
{
|
|
67
91
|
"role": "MIDDLE_BLOCKER",
|
|
68
92
|
"weight": {
|
|
69
|
-
"
|
|
93
|
+
"spike": 0.2,
|
|
94
|
+
"quick": 0,
|
|
95
|
+
"power": 0,
|
|
96
|
+
"backAttack": 0,
|
|
97
|
+
"awareness": 0,
|
|
98
|
+
"attack": 0,
|
|
99
|
+
"serve": 0,
|
|
100
|
+
"stamina": 0.1,
|
|
70
101
|
"setting": 0,
|
|
71
|
-
"pass": 0,
|
|
72
102
|
"reception": 0,
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
103
|
+
"overhand": 0,
|
|
104
|
+
"bump": 0,
|
|
105
|
+
"block": 0.7,
|
|
106
|
+
"read": 0,
|
|
107
|
+
"commit": 0,
|
|
108
|
+
"focus": 0,
|
|
109
|
+
"defense": 0
|
|
80
110
|
}
|
|
81
111
|
}
|
|
82
112
|
]
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
+
import { PerformanceStatsParams } from '../service';
|
|
1
2
|
export declare const ALL_ROLES: string[];
|
|
2
3
|
export type RolesTuple = typeof ALL_ROLES;
|
|
3
4
|
export type Roles = RolesTuple[number];
|
|
4
5
|
export interface RolesFormula {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'serve': number;
|
|
8
|
-
'setting': number;
|
|
9
|
-
'pass': number;
|
|
10
|
-
'reception': number;
|
|
11
|
-
'spike': number;
|
|
12
|
-
'backAttack': number;
|
|
13
|
-
'jump': number;
|
|
14
|
-
'block': number;
|
|
15
|
-
'awareness': number;
|
|
16
|
-
'defense': number;
|
|
17
|
-
'stamina': number;
|
|
18
|
-
};
|
|
6
|
+
role: Roles;
|
|
7
|
+
weight: PerformanceStatsParams;
|
|
19
8
|
}
|
|
20
9
|
export declare const rolesFormula: RolesFormula[];
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { PerformanceStats
|
|
1
|
+
import { PerformanceStats } from '../service';
|
|
2
2
|
export declare const ALL_STATS: string[];
|
|
3
3
|
export type StatsTuple = typeof ALL_STATS;
|
|
4
4
|
export type Stats = StatsTuple[number];
|
|
5
|
-
export interface StatFormula {
|
|
6
|
-
statName: Stats;
|
|
7
|
-
weight: PerformanceStatsParams;
|
|
8
|
-
}
|
|
9
|
-
export declare const statsFormula: StatFormula[];
|
|
10
5
|
export declare function calculateScore(performanceStats: PerformanceStats, statName: Stats): number;
|
|
6
|
+
export declare function getMultipliers(statName: Stats, performanceStats?: PerformanceStats): any;
|
|
@@ -1,18 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
exports.ALL_STATS = ['ATTACK', 'DEFENSE', 'SERVE', 'PHYSICAL'];
|
|
9
|
-
exports.statsFormula = stat_formula_json_1.default;
|
|
3
|
+
exports.getMultipliers = exports.calculateScore = exports.ALL_STATS = void 0;
|
|
4
|
+
exports.ALL_STATS = ['ATTACK', 'SET', 'RECEIVE', 'SERVE', 'BLOCK', 'STAMINA'];
|
|
10
5
|
function calculateScore(performanceStats, statName) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
throw new Error('COULD_NOT_FIND_ROLE_WEIGHT');
|
|
14
|
-
const score = Object.entries(weights.weight)
|
|
6
|
+
const multipliers = getMultipliers(statName, performanceStats);
|
|
7
|
+
const score = Object.entries(multipliers)
|
|
15
8
|
.reduce((total, [key, value]) => total + value * performanceStats[key], 0);
|
|
16
9
|
return Math.round(score);
|
|
17
10
|
}
|
|
18
11
|
exports.calculateScore = calculateScore;
|
|
12
|
+
function getMultipliers(statName, performanceStats) {
|
|
13
|
+
switch (statName) {
|
|
14
|
+
case 'ATTACK':
|
|
15
|
+
return {
|
|
16
|
+
spike: 0.55,
|
|
17
|
+
backAttack: 0.1,
|
|
18
|
+
power: performanceStats == null ? 0.125 : performanceStats.power > performanceStats.quick ? 0.2 : 0.05,
|
|
19
|
+
quick: performanceStats == null ? 0.125 : performanceStats.quick > performanceStats.power ? 0.2 : 0.05,
|
|
20
|
+
awareness: 0.05,
|
|
21
|
+
attack: 0.05
|
|
22
|
+
};
|
|
23
|
+
case 'SET':
|
|
24
|
+
return {
|
|
25
|
+
setting: 0.7,
|
|
26
|
+
overhand: 0.1,
|
|
27
|
+
bump: 0.05,
|
|
28
|
+
awareness: 0.075,
|
|
29
|
+
attack: 0.075
|
|
30
|
+
};
|
|
31
|
+
case 'RECEIVE':
|
|
32
|
+
return {
|
|
33
|
+
reception: 0.75,
|
|
34
|
+
overhand: 0.025,
|
|
35
|
+
bump: 0.15,
|
|
36
|
+
focus: 0.025,
|
|
37
|
+
defense: 0.05
|
|
38
|
+
};
|
|
39
|
+
case 'SERVE':
|
|
40
|
+
return {
|
|
41
|
+
serve: 0.85,
|
|
42
|
+
awareness: 0.075,
|
|
43
|
+
attack: 0.075
|
|
44
|
+
};
|
|
45
|
+
case 'BLOCK':
|
|
46
|
+
return {
|
|
47
|
+
block: 0.65,
|
|
48
|
+
read: performanceStats == null ? 0.125 : performanceStats.read > performanceStats.commit ? 0.2 : 0.05,
|
|
49
|
+
commit: performanceStats == null ? 0.125 : performanceStats.commit > performanceStats.read ? 0.2 : 0.05,
|
|
50
|
+
focus: 0.05,
|
|
51
|
+
defense: 0.05
|
|
52
|
+
};
|
|
53
|
+
case 'STAMINA':
|
|
54
|
+
return { stamina: 1 };
|
|
55
|
+
default:
|
|
56
|
+
throw new Error('INVALID_STAT');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.getMultipliers = getMultipliers;
|
|
@@ -1,30 +1,10 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly spike: number;
|
|
6
|
-
readonly backAttack: number;
|
|
7
|
-
readonly jump: number;
|
|
8
|
-
readonly block: number;
|
|
9
|
-
readonly awareness: number;
|
|
10
|
-
readonly serve: number;
|
|
11
|
-
readonly defense: number;
|
|
12
|
-
readonly stamina: number;
|
|
1
|
+
export declare const performanceStatKeys: readonly ["setting", "serve", "spike", "quick", "power", "awareness", "attack", "backAttack", "reception", "overhand", "bump", "block", "read", "commit", "focus", "defense", "stamina"];
|
|
2
|
+
export type PerformanceStatsKey = typeof performanceStatKeys[number];
|
|
3
|
+
export type PerformanceStatsParams = Record<PerformanceStatsKey, number>;
|
|
4
|
+
export interface PerformanceStats extends PerformanceStatsParams {
|
|
13
5
|
}
|
|
14
|
-
export type PerformanceStatsKey = keyof PerformanceStatsParams;
|
|
15
6
|
export declare class PerformanceStats {
|
|
16
|
-
readonly setting: number;
|
|
17
|
-
readonly pass: number;
|
|
18
|
-
readonly reception: number;
|
|
19
|
-
readonly spike: number;
|
|
20
|
-
readonly backAttack: number;
|
|
21
|
-
readonly jump: number;
|
|
22
|
-
readonly block: number;
|
|
23
|
-
readonly awareness: number;
|
|
24
|
-
readonly serve: number;
|
|
25
|
-
readonly defense: number;
|
|
26
|
-
readonly stamina: number;
|
|
27
7
|
constructor(opts: PerformanceStatsParams);
|
|
8
|
+
static fromAverage(avg: number): PerformanceStats;
|
|
28
9
|
toString(): string;
|
|
29
|
-
static fromAverage(average: number): PerformanceStats;
|
|
30
10
|
}
|
|
@@ -1,38 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PerformanceStats = void 0;
|
|
4
|
-
|
|
3
|
+
exports.PerformanceStats = exports.performanceStatKeys = void 0;
|
|
4
|
+
exports.performanceStatKeys = ['setting', 'serve', 'spike', 'quick', 'power', 'awareness', 'attack', 'backAttack',
|
|
5
|
+
'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina'];
|
|
5
6
|
class PerformanceStats {
|
|
6
7
|
constructor(opts) {
|
|
7
|
-
this
|
|
8
|
-
this.pass = opts.pass;
|
|
9
|
-
this.setting = opts.setting;
|
|
10
|
-
this.reception = opts.reception;
|
|
11
|
-
this.spike = opts.spike;
|
|
12
|
-
this.backAttack = opts.backAttack;
|
|
13
|
-
this.jump = opts.jump;
|
|
14
|
-
this.block = opts.block;
|
|
15
|
-
this.awareness = opts.awareness;
|
|
16
|
-
this.defense = opts.defense;
|
|
17
|
-
this.stamina = opts.stamina;
|
|
8
|
+
Object.assign(this, opts);
|
|
18
9
|
}
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
static fromAverage(avg) {
|
|
11
|
+
const opts = Object.fromEntries(exports.performanceStatKeys.map((key) => [key, avg]));
|
|
12
|
+
return new PerformanceStats(opts);
|
|
21
13
|
}
|
|
22
|
-
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
pass: average,
|
|
26
|
-
reception: average,
|
|
27
|
-
spike: average,
|
|
28
|
-
backAttack: average,
|
|
29
|
-
jump: average,
|
|
30
|
-
block: average,
|
|
31
|
-
awareness: average,
|
|
32
|
-
serve: average,
|
|
33
|
-
defense: average,
|
|
34
|
-
stamina: average
|
|
35
|
-
});
|
|
14
|
+
toString() {
|
|
15
|
+
return exports.performanceStatKeys.map((key) => `${key}: ${this[key]}`)
|
|
16
|
+
.join(', ');
|
|
36
17
|
}
|
|
37
18
|
}
|
|
38
19
|
exports.PerformanceStats = PerformanceStats;
|
|
@@ -1,37 +1,48 @@
|
|
|
1
1
|
import * as Sequelize from 'sequelize';
|
|
2
|
-
import { Model
|
|
2
|
+
import { Model } from 'sequelize';
|
|
3
3
|
import { PlayerId, PlayerModel } from '.';
|
|
4
4
|
export interface PerformanceStatsAttributes {
|
|
5
5
|
player_id: string;
|
|
6
6
|
setting: number;
|
|
7
|
-
|
|
8
|
-
reception: number;
|
|
7
|
+
serve: number;
|
|
9
8
|
spike: number;
|
|
9
|
+
quick: number;
|
|
10
|
+
power: number;
|
|
11
|
+
awareness: number;
|
|
12
|
+
attack: number;
|
|
10
13
|
back_attack: number;
|
|
11
|
-
|
|
14
|
+
reception: number;
|
|
15
|
+
overhand: number;
|
|
16
|
+
bump: number;
|
|
12
17
|
block: number;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
read: number;
|
|
19
|
+
commit: number;
|
|
20
|
+
focus: number;
|
|
16
21
|
defense: number;
|
|
22
|
+
stamina: number;
|
|
17
23
|
}
|
|
18
24
|
export type PerformanceStatsPk = 'player_id';
|
|
19
25
|
export type PerformanceStatsId = PerformanceStatsModel[PerformanceStatsPk];
|
|
20
|
-
export type
|
|
21
|
-
export type PerformanceStatsCreationAttributes = Optional<PerformanceStatsAttributes, PerformanceStatsOptionalAttributes>;
|
|
26
|
+
export type PerformanceStatsCreationAttributes = PerformanceStatsAttributes;
|
|
22
27
|
export declare class PerformanceStatsModel extends Model<PerformanceStatsAttributes, PerformanceStatsCreationAttributes> implements PerformanceStatsAttributes {
|
|
23
28
|
player_id: string;
|
|
24
29
|
setting: number;
|
|
25
|
-
|
|
26
|
-
reception: number;
|
|
30
|
+
serve: number;
|
|
27
31
|
spike: number;
|
|
32
|
+
quick: number;
|
|
33
|
+
power: number;
|
|
34
|
+
awareness: number;
|
|
35
|
+
attack: number;
|
|
28
36
|
back_attack: number;
|
|
29
|
-
|
|
37
|
+
reception: number;
|
|
38
|
+
overhand: number;
|
|
39
|
+
bump: number;
|
|
30
40
|
block: number;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
read: number;
|
|
42
|
+
commit: number;
|
|
43
|
+
focus: number;
|
|
34
44
|
defense: number;
|
|
45
|
+
stamina: number;
|
|
35
46
|
player: PlayerModel;
|
|
36
47
|
getPlayer: Sequelize.BelongsToGetAssociationMixin<PlayerModel>;
|
|
37
48
|
setPlayer: Sequelize.BelongsToSetAssociationMixin<PlayerModel, PlayerId>;
|