volleyballsimtypes 0.0.165 → 0.0.167
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/init-models.js +0 -21
- package/dist/cjs/src/data/models/index.d.ts +0 -2
- package/dist/cjs/src/data/models/index.js +0 -2
- package/dist/cjs/src/data/models/performance-stats.d.ts +28 -15
- package/dist/cjs/src/data/models/performance-stats.js +42 -7
- package/dist/cjs/src/data/models/player.d.ts +8 -30
- package/dist/cjs/src/data/models/player.js +6 -2
- package/dist/cjs/src/data/transformers/index.d.ts +0 -2
- package/dist/cjs/src/data/transformers/index.js +0 -2
- package/dist/cjs/src/data/transformers/performance-stats.js +25 -11
- package/dist/cjs/src/data/transformers/player.js +4 -3
- package/dist/cjs/src/index.d.ts +0 -1
- package/dist/cjs/src/index.js +0 -1
- package/dist/cjs/src/service/coach/formation.js +57 -57
- package/dist/cjs/src/service/player/index.d.ts +2 -1
- package/dist/cjs/src/service/player/index.js +2 -1
- 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/cjs/src/service/player/player.d.ts +4 -5
- package/dist/cjs/src/service/player/player.js +21 -41
- package/dist/cjs/src/service/player/rarity.d.ts +4 -1
- package/dist/cjs/src/service/player/rarity.js +16 -14
- package/dist/cjs/src/service/player/role.d.ts +16 -15
- package/dist/cjs/src/service/player/role.js +43 -39
- package/dist/cjs/src/service/player/stats.d.ts +12 -0
- package/dist/cjs/src/service/player/stats.js +67 -0
- package/dist/cjs/src/service/player/trait.d.ts +12 -19
- package/dist/cjs/src/service/player/trait.js +49 -140
- package/dist/cjs/src/stat-config/roles.json +117 -0
- package/dist/cjs/src/stat-config/traits.json +58 -0
- package/dist/esm/src/data/init-models.js +1 -22
- package/dist/esm/src/data/models/index.d.ts +0 -2
- package/dist/esm/src/data/models/index.js +0 -2
- package/dist/esm/src/data/models/performance-stats.d.ts +28 -15
- package/dist/esm/src/data/models/performance-stats.js +42 -7
- package/dist/esm/src/data/models/player.d.ts +8 -30
- package/dist/esm/src/data/models/player.js +7 -3
- package/dist/esm/src/data/transformers/index.d.ts +0 -2
- package/dist/esm/src/data/transformers/index.js +0 -2
- package/dist/esm/src/data/transformers/performance-stats.js +25 -11
- package/dist/esm/src/data/transformers/player.js +5 -4
- package/dist/esm/src/index.d.ts +0 -1
- package/dist/esm/src/index.js +0 -1
- package/dist/esm/src/service/coach/formation.js +58 -58
- package/dist/esm/src/service/player/index.d.ts +2 -1
- package/dist/esm/src/service/player/index.js +2 -1
- package/dist/esm/src/service/player/performance-stats.d.ts +5 -25
- package/dist/esm/src/service/player/performance-stats.js +9 -28
- package/dist/esm/src/service/player/player.d.ts +4 -5
- package/dist/esm/src/service/player/player.js +21 -18
- package/dist/esm/src/service/player/rarity.d.ts +4 -1
- package/dist/esm/src/service/player/rarity.js +15 -13
- package/dist/esm/src/service/player/role.d.ts +16 -15
- package/dist/esm/src/service/player/role.js +37 -37
- package/dist/esm/src/service/player/stats.d.ts +12 -0
- package/dist/esm/src/service/player/stats.js +62 -0
- package/dist/esm/src/service/player/trait.d.ts +12 -19
- package/dist/esm/src/service/player/trait.js +46 -117
- package/dist/esm/src/stat-config/roles.json +117 -0
- package/dist/esm/src/stat-config/traits.json +58 -0
- package/package.json +1 -1
- package/dist/cjs/src/data/models/player-trait.d.ts +0 -23
- package/dist/cjs/src/data/models/player-trait.js +0 -42
- package/dist/cjs/src/data/models/trait.d.ts +0 -37
- package/dist/cjs/src/data/models/trait.js +0 -30
- package/dist/cjs/src/data/transformers/role.d.ts +0 -5
- package/dist/cjs/src/data/transformers/role.js +0 -25
- package/dist/cjs/src/data/transformers/trait.d.ts +0 -5
- package/dist/cjs/src/data/transformers/trait.js +0 -19
- 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/index.d.ts +0 -3
- package/dist/cjs/src/formula/index.js +0 -19
- package/dist/cjs/src/formula/role.formula.json +0 -82
- package/dist/cjs/src/formula/roles.d.ts +0 -20
- package/dist/cjs/src/formula/roles.js +0 -9
- package/dist/cjs/src/formula/stat.formula.json +0 -66
- package/dist/cjs/src/formula/stats.d.ts +0 -10
- package/dist/cjs/src/formula/stats.js +0 -18
- package/dist/esm/src/data/models/player-trait.d.ts +0 -23
- package/dist/esm/src/data/models/player-trait.js +0 -38
- package/dist/esm/src/data/models/trait.d.ts +0 -37
- package/dist/esm/src/data/models/trait.js +0 -26
- package/dist/esm/src/data/transformers/role.d.ts +0 -5
- package/dist/esm/src/data/transformers/role.js +0 -21
- package/dist/esm/src/data/transformers/trait.d.ts +0 -5
- package/dist/esm/src/data/transformers/trait.js +0 -15
- 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/index.d.ts +0 -3
- package/dist/esm/src/formula/index.js +0 -3
- package/dist/esm/src/formula/role.formula.json +0 -82
- package/dist/esm/src/formula/roles.d.ts +0 -20
- package/dist/esm/src/formula/roles.js +0 -3
- package/dist/esm/src/formula/stat.formula.json +0 -66
- package/dist/esm/src/formula/stats.d.ts +0 -10
- package/dist/esm/src/formula/stats.js +0 -11
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as Sequelize from 'sequelize';
|
|
2
2
|
import { Model } from 'sequelize';
|
|
3
|
-
import { CountryId, CountryModel, DraftPickId, DraftPickModel, MatchSetId, MatchSetModel, MatchSetStatsAttributes, MatchSetStatsId, MatchSetStatsModel, PerformanceStatsAttributes, PerformanceStatsId, PerformanceStatsModel, PlayerTeamId, PlayerTeamModel,
|
|
4
|
-
import { Rarity } from '../../service';
|
|
3
|
+
import { CountryId, CountryModel, DraftPickId, DraftPickModel, MatchSetId, MatchSetModel, MatchSetStatsAttributes, MatchSetStatsId, MatchSetStatsModel, PerformanceStatsAttributes, PerformanceStatsId, PerformanceStatsModel, PlayerTeamId, PlayerTeamModel, SetPositionId, SetPositionModel, TeamId, TeamModel } from '.';
|
|
4
|
+
import { Rarity, Role, Trait } from '../../service';
|
|
5
5
|
export interface PlayerAttributes {
|
|
6
6
|
player_id: string;
|
|
7
|
-
roles:
|
|
8
|
-
|
|
7
|
+
roles: Role[];
|
|
8
|
+
traits: Trait[];
|
|
9
|
+
rarity: Rarity;
|
|
9
10
|
first_name: string;
|
|
10
11
|
last_name: string;
|
|
11
12
|
country_id: string;
|
|
@@ -13,14 +14,13 @@ export interface PlayerAttributes {
|
|
|
13
14
|
MatchSetStats?: MatchSetStatsAttributes[];
|
|
14
15
|
}
|
|
15
16
|
export type PlayerPk = 'player_id';
|
|
16
|
-
export type RoleType = 'SETTER' | 'LIBERO' | 'OUTSIDE_HITTER' | 'OPPOSITE_HITTER' | 'MIDDLE_BLOCKER';
|
|
17
|
-
export type PlayerRarity = Rarity.COMMON | Rarity.RARE | Rarity.LEGENDARY | Rarity.MYTHIC | Rarity.SPECIAL;
|
|
18
17
|
export type PlayerId = PlayerModel[PlayerPk];
|
|
19
18
|
export type PlayerCreationAttributes = PlayerAttributes;
|
|
20
19
|
export declare class PlayerModel extends Model<PlayerAttributes, PlayerCreationAttributes> implements PlayerAttributes {
|
|
21
20
|
player_id: string;
|
|
22
|
-
roles:
|
|
23
|
-
|
|
21
|
+
roles: Role[];
|
|
22
|
+
traits: Trait[];
|
|
23
|
+
rarity: Rarity;
|
|
24
24
|
first_name: string;
|
|
25
25
|
last_name: string;
|
|
26
26
|
country_id: string;
|
|
@@ -80,17 +80,6 @@ export declare class PlayerModel extends Model<PlayerAttributes, PlayerCreationA
|
|
|
80
80
|
hasPlayerTeam: Sequelize.HasManyHasAssociationMixin<PlayerTeamModel, PlayerTeamId>;
|
|
81
81
|
hasPlayerTeams: Sequelize.HasManyHasAssociationsMixin<PlayerTeamModel, PlayerTeamId>;
|
|
82
82
|
countPlayerTeams: Sequelize.HasManyCountAssociationsMixin;
|
|
83
|
-
PlayerTraits: PlayerTraitModel[];
|
|
84
|
-
getPlayerTraits: Sequelize.HasManyGetAssociationsMixin<PlayerTraitModel>;
|
|
85
|
-
setPlayerTraits: Sequelize.HasManySetAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
|
|
86
|
-
addPlayerTrait: Sequelize.HasManyAddAssociationMixin<PlayerTraitModel, PlayerTraitId>;
|
|
87
|
-
addPlayerTraits: Sequelize.HasManyAddAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
|
|
88
|
-
createPlayerTrait: Sequelize.HasManyCreateAssociationMixin<PlayerTraitModel>;
|
|
89
|
-
removePlayerTrait: Sequelize.HasManyRemoveAssociationMixin<PlayerTraitModel, PlayerTraitId>;
|
|
90
|
-
removePlayerTraits: Sequelize.HasManyRemoveAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
|
|
91
|
-
hasPlayerTrait: Sequelize.HasManyHasAssociationMixin<PlayerTraitModel, PlayerTraitId>;
|
|
92
|
-
hasPlayerTraits: Sequelize.HasManyHasAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
|
|
93
|
-
countPlayerTraits: Sequelize.HasManyCountAssociationsMixin;
|
|
94
83
|
SetPositions: SetPositionModel[];
|
|
95
84
|
getSetPositions: Sequelize.HasManyGetAssociationsMixin<SetPositionModel>;
|
|
96
85
|
setSetPositions: Sequelize.HasManySetAssociationsMixin<SetPositionModel, SetPositionId>;
|
|
@@ -113,16 +102,5 @@ export declare class PlayerModel extends Model<PlayerAttributes, PlayerCreationA
|
|
|
113
102
|
hasTeam: Sequelize.BelongsToManyHasAssociationMixin<TeamModel, TeamId>;
|
|
114
103
|
hasTeams: Sequelize.BelongsToManyHasAssociationsMixin<TeamModel, TeamId>;
|
|
115
104
|
countTeams: Sequelize.BelongsToManyCountAssociationsMixin;
|
|
116
|
-
Traits: TraitModel[];
|
|
117
|
-
getTraits: Sequelize.BelongsToManyGetAssociationsMixin<TraitModel>;
|
|
118
|
-
setTraits: Sequelize.BelongsToManySetAssociationsMixin<TraitModel, TraitId>;
|
|
119
|
-
addTrait: Sequelize.BelongsToManyAddAssociationMixin<TraitModel, TraitId>;
|
|
120
|
-
addTraits: Sequelize.BelongsToManyAddAssociationsMixin<TraitModel, TraitId>;
|
|
121
|
-
createTrait: Sequelize.BelongsToManyCreateAssociationMixin<TraitModel>;
|
|
122
|
-
removeTrait: Sequelize.BelongsToManyRemoveAssociationMixin<TraitModel, TraitId>;
|
|
123
|
-
removeTraits: Sequelize.BelongsToManyRemoveAssociationsMixin<TraitModel, TraitId>;
|
|
124
|
-
hasTrait: Sequelize.BelongsToManyHasAssociationMixin<TraitModel, TraitId>;
|
|
125
|
-
hasTraits: Sequelize.BelongsToManyHasAssociationsMixin<TraitModel, TraitId>;
|
|
126
|
-
countTraits: Sequelize.BelongsToManyCountAssociationsMixin;
|
|
127
105
|
static initModel(sequelize: Sequelize.Sequelize): typeof PlayerModel;
|
|
128
106
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataTypes, Model } from 'sequelize';
|
|
2
|
-
import {
|
|
2
|
+
import { RarityDataType, RoleDataType, TraitDataType } from '../../service';
|
|
3
3
|
export class PlayerModel extends Model {
|
|
4
4
|
static initModel(sequelize) {
|
|
5
5
|
return PlayerModel.init({
|
|
@@ -9,11 +9,15 @@ export class PlayerModel extends Model {
|
|
|
9
9
|
primaryKey: true
|
|
10
10
|
},
|
|
11
11
|
roles: {
|
|
12
|
-
type: DataTypes.ARRAY(
|
|
12
|
+
type: DataTypes.ARRAY(RoleDataType),
|
|
13
|
+
allowNull: false
|
|
14
|
+
},
|
|
15
|
+
traits: {
|
|
16
|
+
type: DataTypes.ARRAY(TraitDataType),
|
|
13
17
|
allowNull: false
|
|
14
18
|
},
|
|
15
19
|
rarity: {
|
|
16
|
-
type: DataTypes.ENUM(
|
|
20
|
+
type: DataTypes.ENUM(RarityDataType),
|
|
17
21
|
allowNull: false
|
|
18
22
|
},
|
|
19
23
|
first_name: {
|
|
@@ -16,10 +16,8 @@ export * from './performance-stats';
|
|
|
16
16
|
export * from './player';
|
|
17
17
|
export * from './rally';
|
|
18
18
|
export * from './set-position';
|
|
19
|
-
export * from './role';
|
|
20
19
|
export * from './season';
|
|
21
20
|
export * from './season-match';
|
|
22
21
|
export * from './player-team';
|
|
23
22
|
export * from './match-rating';
|
|
24
23
|
export * from './team';
|
|
25
|
-
export * from './trait';
|
|
@@ -16,10 +16,8 @@ export * from './performance-stats';
|
|
|
16
16
|
export * from './player';
|
|
17
17
|
export * from './rally';
|
|
18
18
|
export * from './set-position';
|
|
19
|
-
export * from './role';
|
|
20
19
|
export * from './season';
|
|
21
20
|
export * from './season-match';
|
|
22
21
|
export * from './player-team';
|
|
23
22
|
export * from './match-rating';
|
|
24
23
|
export * from './team';
|
|
25
|
-
export * from './trait';
|
|
@@ -4,30 +4,44 @@ function transformToAttributes(player) {
|
|
|
4
4
|
player_id: player.id,
|
|
5
5
|
back_attack: player.stats.backAttack,
|
|
6
6
|
block: player.stats.block,
|
|
7
|
+
read: player.stats.read,
|
|
8
|
+
commit: player.stats.commit,
|
|
9
|
+
focus: player.stats.focus,
|
|
7
10
|
awareness: player.stats.awareness,
|
|
8
11
|
defense: player.stats.defense,
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
quick: player.stats.quick,
|
|
13
|
+
power: player.stats.power,
|
|
14
|
+
attack: player.stats.attack,
|
|
11
15
|
serve: player.stats.serve,
|
|
12
16
|
reception: player.stats.reception,
|
|
17
|
+
overhand: player.stats.overhand,
|
|
18
|
+
bump: player.stats.bump,
|
|
13
19
|
setting: player.stats.setting,
|
|
14
20
|
spike: player.stats.spike,
|
|
15
|
-
stamina: player.stats.stamina
|
|
21
|
+
stamina: player.stats.stamina,
|
|
22
|
+
saving: player.stats.saving
|
|
16
23
|
};
|
|
17
24
|
}
|
|
18
25
|
function transformToObject(model) {
|
|
19
26
|
return new PerformanceStats({
|
|
20
|
-
awareness: model.awareness,
|
|
21
|
-
defense: model.defense,
|
|
22
|
-
jump: model.jump,
|
|
23
|
-
pass: model.pass,
|
|
24
|
-
serve: model.serve,
|
|
25
|
-
reception: model.reception,
|
|
26
27
|
setting: model.setting,
|
|
28
|
+
serve: model.serve,
|
|
27
29
|
spike: model.spike,
|
|
28
|
-
|
|
30
|
+
quick: model.quick,
|
|
31
|
+
power: model.power,
|
|
32
|
+
awareness: model.awareness,
|
|
33
|
+
attack: model.attack,
|
|
34
|
+
backAttack: model.back_attack,
|
|
35
|
+
reception: model.reception,
|
|
36
|
+
overhand: model.overhand,
|
|
37
|
+
bump: model.bump,
|
|
29
38
|
block: model.block,
|
|
30
|
-
|
|
39
|
+
read: model.read,
|
|
40
|
+
commit: model.commit,
|
|
41
|
+
focus: model.focus,
|
|
42
|
+
defense: model.defense,
|
|
43
|
+
stamina: model.stamina,
|
|
44
|
+
saving: model.saving
|
|
31
45
|
});
|
|
32
46
|
}
|
|
33
47
|
export { transformToObject as transformToPerformanceStats, transformToAttributes as transformFromPerformanceStats };
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Player } from '../../service';
|
|
2
|
-
import { transformFromPerformanceStats,
|
|
2
|
+
import { transformFromPerformanceStats, transformToCountry, transformToPerformanceStats } from '.';
|
|
3
3
|
function transformToAttributes(player) {
|
|
4
4
|
return {
|
|
5
5
|
player_id: player.id,
|
|
6
6
|
country_id: player.country.id,
|
|
7
7
|
first_name: player.name.first,
|
|
8
8
|
last_name: player.name.last,
|
|
9
|
-
roles: player.roles
|
|
9
|
+
roles: player.roles,
|
|
10
|
+
traits: player.traits,
|
|
10
11
|
PerformanceStat: transformFromPerformanceStats(player),
|
|
11
12
|
rarity: player.rarity
|
|
12
13
|
};
|
|
@@ -19,8 +20,8 @@ function transformToObject(model) {
|
|
|
19
20
|
last: model.last_name
|
|
20
21
|
},
|
|
21
22
|
country: transformToCountry(model.country),
|
|
22
|
-
roles: model.roles
|
|
23
|
-
traits: model.
|
|
23
|
+
roles: model.roles,
|
|
24
|
+
traits: model.traits,
|
|
24
25
|
stats: transformToPerformanceStats(model.PerformanceStat),
|
|
25
26
|
rarity: model.rarity
|
|
26
27
|
});
|
package/dist/esm/src/index.d.ts
CHANGED
package/dist/esm/src/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RoleEnum } from '../player';
|
|
2
2
|
import { CourtPosition } from '../match';
|
|
3
3
|
export class Formation {
|
|
4
4
|
constructor({ name, initialRotation, base, draftingPriorities, liberoSubPriority }) {
|
|
@@ -15,29 +15,29 @@ export class Formation {
|
|
|
15
15
|
Formation['5-1'] = new Formation({
|
|
16
16
|
name: '5-1',
|
|
17
17
|
initialRotation: {
|
|
18
|
-
1: [
|
|
19
|
-
2: [
|
|
20
|
-
3: [
|
|
21
|
-
4: [
|
|
22
|
-
5: [
|
|
23
|
-
6: [
|
|
18
|
+
1: [RoleEnum.SETTER],
|
|
19
|
+
2: [RoleEnum.OUTSIDE_HITTER],
|
|
20
|
+
3: [RoleEnum.MIDDLE_BLOCKER],
|
|
21
|
+
4: [RoleEnum.OPPOSITE_HITTER],
|
|
22
|
+
5: [RoleEnum.OUTSIDE_HITTER],
|
|
23
|
+
6: [RoleEnum.MIDDLE_BLOCKER]
|
|
24
24
|
},
|
|
25
25
|
base: {
|
|
26
|
-
1: [
|
|
27
|
-
2: [
|
|
28
|
-
3: [
|
|
29
|
-
4: [
|
|
30
|
-
5: [
|
|
31
|
-
6: [
|
|
26
|
+
1: [RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
27
|
+
2: [RoleEnum.OPPOSITE_HITTER],
|
|
28
|
+
3: [RoleEnum.MIDDLE_BLOCKER],
|
|
29
|
+
4: [RoleEnum.OUTSIDE_HITTER],
|
|
30
|
+
5: [RoleEnum.OUTSIDE_HITTER],
|
|
31
|
+
6: [RoleEnum.LIBERO]
|
|
32
32
|
},
|
|
33
33
|
draftingPriorities: [
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
34
|
+
[RoleEnum.SETTER, RoleEnum.OPPOSITE_HITTER],
|
|
35
|
+
[RoleEnum.OPPOSITE_HITTER],
|
|
36
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
37
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
38
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
39
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
40
|
+
[RoleEnum.LIBERO]
|
|
41
41
|
],
|
|
42
42
|
liberoSubPriority: {
|
|
43
43
|
MIDDLE_BLOCKER: 1,
|
|
@@ -50,29 +50,29 @@ Formation['5-1'] = new Formation({
|
|
|
50
50
|
Formation['4-2'] = new Formation({
|
|
51
51
|
name: '4-2',
|
|
52
52
|
initialRotation: {
|
|
53
|
-
1: [
|
|
54
|
-
2: [
|
|
55
|
-
3: [
|
|
56
|
-
4: [
|
|
57
|
-
5: [
|
|
58
|
-
6: [
|
|
53
|
+
1: [RoleEnum.MIDDLE_BLOCKER],
|
|
54
|
+
2: [RoleEnum.SETTER],
|
|
55
|
+
3: [RoleEnum.OUTSIDE_HITTER],
|
|
56
|
+
4: [RoleEnum.MIDDLE_BLOCKER],
|
|
57
|
+
5: [RoleEnum.SETTER],
|
|
58
|
+
6: [RoleEnum.OPPOSITE_HITTER]
|
|
59
59
|
},
|
|
60
60
|
base: {
|
|
61
|
-
1: [
|
|
62
|
-
2: [
|
|
63
|
-
3: [
|
|
64
|
-
4: [
|
|
65
|
-
5: [
|
|
66
|
-
6: [
|
|
61
|
+
1: [RoleEnum.SETTER],
|
|
62
|
+
2: [RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
63
|
+
3: [RoleEnum.MIDDLE_BLOCKER],
|
|
64
|
+
4: [RoleEnum.OUTSIDE_HITTER],
|
|
65
|
+
5: [RoleEnum.OUTSIDE_HITTER],
|
|
66
|
+
6: [RoleEnum.LIBERO]
|
|
67
67
|
},
|
|
68
68
|
draftingPriorities: [
|
|
69
|
-
[
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
69
|
+
[RoleEnum.SETTER, RoleEnum.OPPOSITE_HITTER],
|
|
70
|
+
[RoleEnum.SETTER],
|
|
71
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
72
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
73
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
74
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
75
|
+
[RoleEnum.LIBERO]
|
|
76
76
|
],
|
|
77
77
|
liberoSubPriority: {
|
|
78
78
|
MIDDLE_BLOCKER: 1,
|
|
@@ -85,29 +85,29 @@ Formation['4-2'] = new Formation({
|
|
|
85
85
|
Formation['6-2'] = new Formation({
|
|
86
86
|
name: '6-2',
|
|
87
87
|
initialRotation: {
|
|
88
|
-
1: [
|
|
89
|
-
2: [
|
|
90
|
-
3: [
|
|
91
|
-
4: [
|
|
92
|
-
5: [
|
|
93
|
-
6: [
|
|
88
|
+
1: [RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
89
|
+
2: [RoleEnum.OUTSIDE_HITTER],
|
|
90
|
+
3: [RoleEnum.MIDDLE_BLOCKER],
|
|
91
|
+
4: [RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
92
|
+
5: [RoleEnum.OUTSIDE_HITTER],
|
|
93
|
+
6: [RoleEnum.MIDDLE_BLOCKER]
|
|
94
94
|
},
|
|
95
95
|
base: {
|
|
96
|
-
1: [
|
|
97
|
-
2: [
|
|
98
|
-
3: [
|
|
99
|
-
4: [
|
|
100
|
-
5: [
|
|
101
|
-
6: [
|
|
96
|
+
1: [RoleEnum.SETTER],
|
|
97
|
+
2: [RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
98
|
+
3: [RoleEnum.MIDDLE_BLOCKER],
|
|
99
|
+
4: [RoleEnum.OUTSIDE_HITTER],
|
|
100
|
+
5: [RoleEnum.OUTSIDE_HITTER],
|
|
101
|
+
6: [RoleEnum.LIBERO]
|
|
102
102
|
},
|
|
103
103
|
draftingPriorities: [
|
|
104
|
-
[
|
|
105
|
-
[
|
|
106
|
-
[
|
|
107
|
-
[
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
[
|
|
104
|
+
[RoleEnum.SETTER, RoleEnum.OPPOSITE_HITTER],
|
|
105
|
+
[RoleEnum.OPPOSITE_HITTER, RoleEnum.SETTER],
|
|
106
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
107
|
+
[RoleEnum.MIDDLE_BLOCKER],
|
|
108
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
109
|
+
[RoleEnum.OUTSIDE_HITTER],
|
|
110
|
+
[RoleEnum.LIBERO]
|
|
111
111
|
],
|
|
112
112
|
liberoSubPriority: {
|
|
113
113
|
MIDDLE_BLOCKER: 1,
|
|
@@ -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", "saving"];
|
|
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,34 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
export const performanceStatKeys = ['setting', 'serve', 'spike', 'quick', 'power', 'awareness', 'attack', 'backAttack',
|
|
2
|
+
'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina', 'saving'];
|
|
2
3
|
export class PerformanceStats {
|
|
3
4
|
constructor(opts) {
|
|
4
|
-
this
|
|
5
|
-
this.pass = opts.pass;
|
|
6
|
-
this.setting = opts.setting;
|
|
7
|
-
this.reception = opts.reception;
|
|
8
|
-
this.spike = opts.spike;
|
|
9
|
-
this.backAttack = opts.backAttack;
|
|
10
|
-
this.jump = opts.jump;
|
|
11
|
-
this.block = opts.block;
|
|
12
|
-
this.awareness = opts.awareness;
|
|
13
|
-
this.defense = opts.defense;
|
|
14
|
-
this.stamina = opts.stamina;
|
|
5
|
+
Object.assign(this, opts);
|
|
15
6
|
}
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
static fromAverage(avg) {
|
|
8
|
+
const opts = Object.fromEntries(performanceStatKeys.map((key) => [key, avg]));
|
|
9
|
+
return new PerformanceStats(opts);
|
|
18
10
|
}
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
pass: average,
|
|
23
|
-
reception: average,
|
|
24
|
-
spike: average,
|
|
25
|
-
backAttack: average,
|
|
26
|
-
jump: average,
|
|
27
|
-
block: average,
|
|
28
|
-
awareness: average,
|
|
29
|
-
serve: average,
|
|
30
|
-
defense: average,
|
|
31
|
-
stamina: average
|
|
32
|
-
});
|
|
11
|
+
toString() {
|
|
12
|
+
return performanceStatKeys.map((key) => `${key}: ${this[key]}`)
|
|
13
|
+
.join(', ');
|
|
33
14
|
}
|
|
34
15
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { PerformanceStats } from './performance-stats';
|
|
2
|
-
import { Role } from './role';
|
|
3
2
|
import { Trait } from './trait';
|
|
4
3
|
import { Country } from '../country';
|
|
5
|
-
import * as GeneralStat from '../../formula/stats';
|
|
6
4
|
import { Rarity } from './rarity';
|
|
5
|
+
import { Stats } from './stats';
|
|
6
|
+
import { Role } from './role';
|
|
7
7
|
export declare class Stat {
|
|
8
|
-
readonly name:
|
|
8
|
+
readonly name: Stats;
|
|
9
9
|
readonly value: number;
|
|
10
10
|
constructor({ name, value }: {
|
|
11
|
-
name:
|
|
11
|
+
name: Stats;
|
|
12
12
|
value: number;
|
|
13
13
|
});
|
|
14
14
|
toString(): string;
|
|
@@ -43,7 +43,6 @@ export declare class Player {
|
|
|
43
43
|
constructor({ id, name, country, stats, roles, traits, rarity }: PlayerParams);
|
|
44
44
|
static sortPlayers(roles: Role[]): (p1: Player, p2: Player) => number;
|
|
45
45
|
static compareStats(p1: Player, p2: Player): number;
|
|
46
|
-
canPlayLibero(): boolean;
|
|
47
46
|
toString(): string;
|
|
48
47
|
}
|
|
49
48
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Role } from './role';
|
|
2
1
|
import { validateUUID } from '../utils';
|
|
3
|
-
import
|
|
2
|
+
import { calculateStatScore, StatsEnum } from './stats';
|
|
3
|
+
import { calculateRoleScore } from './role';
|
|
4
4
|
export class Stat {
|
|
5
5
|
constructor({ name, value }) {
|
|
6
6
|
this.name = name;
|
|
@@ -29,16 +29,16 @@ export class Player {
|
|
|
29
29
|
this.roles = roles;
|
|
30
30
|
this.traits = traits;
|
|
31
31
|
this.rarity = rarity;
|
|
32
|
-
this.generalStats =
|
|
32
|
+
this.generalStats = Object.values(StatsEnum).map((stat) => ({
|
|
33
33
|
name: stat,
|
|
34
|
-
value:
|
|
34
|
+
value: calculateStatScore(stats, stat)
|
|
35
35
|
}));
|
|
36
36
|
}
|
|
37
37
|
// Used as a base sorting function for players
|
|
38
38
|
static sortPlayers(roles) {
|
|
39
39
|
return (p1, p2) => roles.reduce((x, role) => {
|
|
40
|
-
const p2Score =
|
|
41
|
-
const p1Score =
|
|
40
|
+
const p2Score = calculateRoleScore(p2.stats, role);
|
|
41
|
+
const p1Score = calculateRoleScore(p1.stats, role);
|
|
42
42
|
return x + p2Score - p1Score;
|
|
43
43
|
}, 0);
|
|
44
44
|
}
|
|
@@ -46,17 +46,23 @@ export class Player {
|
|
|
46
46
|
const compareFn = (acc, current) => {
|
|
47
47
|
let x = current.value;
|
|
48
48
|
switch (current.name) {
|
|
49
|
-
case
|
|
50
|
-
x *= 0.
|
|
49
|
+
case StatsEnum.ATTACK:
|
|
50
|
+
x *= 0.19;
|
|
51
51
|
break;
|
|
52
|
-
case
|
|
53
|
-
x *= 0.
|
|
52
|
+
case StatsEnum.SET:
|
|
53
|
+
x *= 0.19;
|
|
54
54
|
break;
|
|
55
|
-
case
|
|
56
|
-
x *= 0.
|
|
55
|
+
case StatsEnum.RECEIVE:
|
|
56
|
+
x *= 0.19;
|
|
57
57
|
break;
|
|
58
|
-
case
|
|
59
|
-
x *= 0.
|
|
58
|
+
case StatsEnum.BLOCK:
|
|
59
|
+
x *= 0.19;
|
|
60
|
+
break;
|
|
61
|
+
case StatsEnum.SERVE:
|
|
62
|
+
x *= 0.19;
|
|
63
|
+
break;
|
|
64
|
+
case StatsEnum.STAMINA:
|
|
65
|
+
x *= 0.05;
|
|
60
66
|
break;
|
|
61
67
|
default:
|
|
62
68
|
x *= 0;
|
|
@@ -67,9 +73,6 @@ export class Player {
|
|
|
67
73
|
const s2 = p2.generalStats.reduce(compareFn, 0);
|
|
68
74
|
return s2 - s1;
|
|
69
75
|
}
|
|
70
|
-
canPlayLibero() {
|
|
71
|
-
return this.roles.includes(Role.LIBERO);
|
|
72
|
-
}
|
|
73
76
|
toString() {
|
|
74
77
|
return JSON.stringify({
|
|
75
78
|
id: this.id,
|
|
@@ -78,7 +81,7 @@ export class Player {
|
|
|
78
81
|
stats: this.stats.toString(),
|
|
79
82
|
rarity: this.rarity,
|
|
80
83
|
roles: `[${this.roles.map(r => r.toString()).join(',')}]`,
|
|
81
|
-
traits: `[${this.traits.map(
|
|
84
|
+
traits: `[${this.traits.map(t => t.toString()).join(',')}]`,
|
|
82
85
|
generalStats: `[${this.generalStats.map(r => r.toString()).join(',')}]`
|
|
83
86
|
});
|
|
84
87
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { EnumDataType } from 'sequelize';
|
|
2
|
+
export declare enum RarityEnum {
|
|
2
3
|
COMMON = "COMMON",
|
|
3
4
|
RARE = "RARE",
|
|
4
5
|
LEGENDARY = "LEGENDARY",
|
|
5
6
|
MYTHIC = "MYTHIC",
|
|
6
7
|
SPECIAL = "SPECIAL"
|
|
7
8
|
}
|
|
9
|
+
export type Rarity = RarityEnum.COMMON | RarityEnum.RARE | RarityEnum.LEGENDARY | RarityEnum.MYTHIC | RarityEnum.SPECIAL;
|
|
8
10
|
export declare const RarityRanges: {
|
|
9
11
|
COMMON: number[];
|
|
10
12
|
RARE: number[];
|
|
@@ -12,3 +14,4 @@ export declare const RarityRanges: {
|
|
|
12
14
|
MYTHIC: number[];
|
|
13
15
|
SPECIAL: number[];
|
|
14
16
|
};
|
|
17
|
+
export declare const RarityDataType: EnumDataType<RarityEnum>;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { DataTypes } from 'sequelize';
|
|
2
|
+
export var RarityEnum;
|
|
3
|
+
(function (RarityEnum) {
|
|
4
|
+
RarityEnum["COMMON"] = "COMMON";
|
|
5
|
+
RarityEnum["RARE"] = "RARE";
|
|
6
|
+
RarityEnum["LEGENDARY"] = "LEGENDARY";
|
|
7
|
+
RarityEnum["MYTHIC"] = "MYTHIC";
|
|
8
|
+
RarityEnum["SPECIAL"] = "SPECIAL";
|
|
9
|
+
})(RarityEnum || (RarityEnum = {}));
|
|
9
10
|
export const RarityRanges = {
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
11
|
+
[RarityEnum.COMMON]: [0, 50],
|
|
12
|
+
[RarityEnum.RARE]: [51, 70],
|
|
13
|
+
[RarityEnum.LEGENDARY]: [71, 85],
|
|
14
|
+
[RarityEnum.MYTHIC]: [86, 98],
|
|
15
|
+
[RarityEnum.SPECIAL]: [99, 100]
|
|
15
16
|
};
|
|
17
|
+
export const RarityDataType = DataTypes.ENUM(...Object.values(RarityEnum));
|