volleyballsimtypes 0.0.166 → 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 +2 -0
- package/dist/cjs/src/data/models/performance-stats.js +5 -0
- 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 +4 -2
- 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 +1 -1
- package/dist/cjs/src/service/player/performance-stats.js +1 -1
- 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/{formula → service/player}/stats.js +18 -10
- 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/{formula/role.formula.json → stat-config/roles.json} +10 -5
- 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 +2 -0
- package/dist/esm/src/data/models/performance-stats.js +5 -0
- 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 +4 -2
- 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 +1 -1
- package/dist/esm/src/service/player/performance-stats.js +1 -1
- 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/{formula → service/player}/stats.js +16 -8
- 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/{formula/role.formula.json → stat-config/roles.json} +10 -5
- 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/index.d.ts +0 -2
- package/dist/cjs/src/formula/index.js +0 -18
- package/dist/cjs/src/formula/roles.d.ts +0 -9
- package/dist/cjs/src/formula/roles.js +0 -9
- package/dist/cjs/src/formula/stats.d.ts +0 -6
- 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/index.d.ts +0 -2
- package/dist/esm/src/formula/index.js +0 -2
- package/dist/esm/src/formula/roles.d.ts +0 -9
- package/dist/esm/src/formula/roles.js +0 -3
- package/dist/esm/src/formula/stats.d.ts +0 -6
|
@@ -17,9 +17,7 @@ export * from './match-set-stats';
|
|
|
17
17
|
export * from './performance-stats';
|
|
18
18
|
export * from './player';
|
|
19
19
|
export * from './player-team';
|
|
20
|
-
export * from './player-trait';
|
|
21
20
|
export * from './rally';
|
|
22
21
|
export * from './set-position';
|
|
23
22
|
export * from './team';
|
|
24
|
-
export * from './trait';
|
|
25
23
|
export * from './user';
|
|
@@ -17,9 +17,7 @@ export * from './match-set-stats';
|
|
|
17
17
|
export * from './performance-stats';
|
|
18
18
|
export * from './player';
|
|
19
19
|
export * from './player-team';
|
|
20
|
-
export * from './player-trait';
|
|
21
20
|
export * from './rally';
|
|
22
21
|
export * from './set-position';
|
|
23
22
|
export * from './team';
|
|
24
|
-
export * from './trait';
|
|
25
23
|
export * from './user';
|
|
@@ -20,6 +20,7 @@ export interface PerformanceStatsAttributes {
|
|
|
20
20
|
focus: number;
|
|
21
21
|
defense: number;
|
|
22
22
|
stamina: number;
|
|
23
|
+
saving: number;
|
|
23
24
|
}
|
|
24
25
|
export type PerformanceStatsPk = 'player_id';
|
|
25
26
|
export type PerformanceStatsId = PerformanceStatsModel[PerformanceStatsPk];
|
|
@@ -43,6 +44,7 @@ export declare class PerformanceStatsModel extends Model<PerformanceStatsAttribu
|
|
|
43
44
|
focus: number;
|
|
44
45
|
defense: number;
|
|
45
46
|
stamina: number;
|
|
47
|
+
saving: number;
|
|
46
48
|
player: PlayerModel;
|
|
47
49
|
getPlayer: Sequelize.BelongsToGetAssociationMixin<PlayerModel>;
|
|
48
50
|
setPlayer: Sequelize.BelongsToSetAssociationMixin<PlayerModel, PlayerId>;
|
|
@@ -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';
|
|
@@ -18,7 +18,8 @@ function transformToAttributes(player) {
|
|
|
18
18
|
bump: player.stats.bump,
|
|
19
19
|
setting: player.stats.setting,
|
|
20
20
|
spike: player.stats.spike,
|
|
21
|
-
stamina: player.stats.stamina
|
|
21
|
+
stamina: player.stats.stamina,
|
|
22
|
+
saving: player.stats.saving
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
function transformToObject(model) {
|
|
@@ -39,7 +40,8 @@ function transformToObject(model) {
|
|
|
39
40
|
commit: model.commit,
|
|
40
41
|
focus: model.focus,
|
|
41
42
|
defense: model.defense,
|
|
42
|
-
stamina: model.stamina
|
|
43
|
+
stamina: model.stamina,
|
|
44
|
+
saving: model.saving
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
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,4 +1,4 @@
|
|
|
1
|
-
export declare const performanceStatKeys: readonly ["setting", "serve", "spike", "quick", "power", "awareness", "attack", "backAttack", "reception", "overhand", "bump", "block", "read", "commit", "focus", "defense", "stamina"];
|
|
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
2
|
export type PerformanceStatsKey = typeof performanceStatKeys[number];
|
|
3
3
|
export type PerformanceStatsParams = Record<PerformanceStatsKey, number>;
|
|
4
4
|
export interface PerformanceStats extends PerformanceStatsParams {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const performanceStatKeys = ['setting', 'serve', 'spike', 'quick', 'power', 'awareness', 'attack', 'backAttack',
|
|
2
|
-
'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina'];
|
|
2
|
+
'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina', 'saving'];
|
|
3
3
|
export class PerformanceStats {
|
|
4
4
|
constructor(opts) {
|
|
5
5
|
Object.assign(this, opts);
|
|
@@ -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));
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { PerformanceStats } from './performance-stats';
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private static readonly ROLES;
|
|
10
|
-
readonly name: Roles;
|
|
11
|
-
private constructor();
|
|
12
|
-
toString(): string;
|
|
13
|
-
static getRoles(): Role[];
|
|
14
|
-
static calculateScore(stats: PerformanceStats, role: Role): number;
|
|
15
|
-
static assignRoles(stats: PerformanceStats): Role[];
|
|
1
|
+
import { EnumDataType } from 'sequelize';
|
|
2
|
+
import { PerformanceStats, PerformanceStatsParams } from './performance-stats';
|
|
3
|
+
export declare enum RoleEnum {
|
|
4
|
+
SETTER = "SETTER",
|
|
5
|
+
LIBERO = "LIBERO",
|
|
6
|
+
OUTSIDE_HITTER = "OUTSIDE_HITTER",
|
|
7
|
+
OPPOSITE_HITTER = "OPPOSITE_HITTER",
|
|
8
|
+
MIDDLE_BLOCKER = "MIDDLE_BLOCKER"
|
|
16
9
|
}
|
|
10
|
+
export type Role = RoleEnum.SETTER | RoleEnum.LIBERO | RoleEnum.MIDDLE_BLOCKER | RoleEnum.OUTSIDE_HITTER | RoleEnum.OPPOSITE_HITTER;
|
|
11
|
+
export declare const RoleDataType: EnumDataType<Role>;
|
|
12
|
+
export interface RolesFormula {
|
|
13
|
+
role: Role;
|
|
14
|
+
weight: PerformanceStatsParams;
|
|
15
|
+
}
|
|
16
|
+
export declare function calculateRoleScore(stats: PerformanceStats, role: Role): number;
|
|
17
|
+
export declare function assignRoles(stats: PerformanceStats): Role[];
|