volleyballsimtypes 0.0.166 → 0.0.168
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 +19 -15
- package/dist/cjs/src/service/player/trait.js +50 -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 +19 -15
- package/dist/esm/src/service/player/trait.js +47 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoachModel, CompetitionChampionModel, CompetitionMatchModel, CompetitionModel, CompetitionTeamsModel, CountryModel, DraftModel, DraftPickModel, IterationModel, LeagueModel, LeagueSeasonModel, MatchModel, MatchRatingModel, MatchResultModel, MatchSetModel, MatchSetStatsModel, PerformanceStatsModel, PlayerModel, PlayerTeamModel,
|
|
1
|
+
import { CoachModel, CompetitionChampionModel, CompetitionMatchModel, CompetitionModel, CompetitionTeamsModel, CountryModel, DraftModel, DraftPickModel, IterationModel, LeagueModel, LeagueSeasonModel, MatchModel, MatchRatingModel, MatchResultModel, MatchSetModel, MatchSetStatsModel, PerformanceStatsModel, PlayerModel, PlayerTeamModel, RallyModel, SetPositionModel, TeamModel, UserModel } from './models';
|
|
2
2
|
export function initModels(sequelize) {
|
|
3
3
|
const Coach = CoachModel.initModel(sequelize);
|
|
4
4
|
const Country = CountryModel.initModel(sequelize);
|
|
@@ -19,11 +19,9 @@ export function initModels(sequelize) {
|
|
|
19
19
|
const PerformanceStats = PerformanceStatsModel.initModel(sequelize);
|
|
20
20
|
const Player = PlayerModel.initModel(sequelize);
|
|
21
21
|
const PlayerTeam = PlayerTeamModel.initModel(sequelize);
|
|
22
|
-
const PlayerTrait = PlayerTraitModel.initModel(sequelize);
|
|
23
22
|
const Rally = RallyModel.initModel(sequelize);
|
|
24
23
|
const SetPosition = SetPositionModel.initModel(sequelize);
|
|
25
24
|
const Team = TeamModel.initModel(sequelize);
|
|
26
|
-
const Trait = TraitModel.initModel(sequelize);
|
|
27
25
|
const User = UserModel.initModel(sequelize);
|
|
28
26
|
Coach.belongsTo(Country, { as: 'country', foreignKey: 'country_id' });
|
|
29
27
|
Coach.hasMany(Team, { as: 'Teams', foreignKey: 'coach_id' });
|
|
@@ -112,22 +110,13 @@ export function initModels(sequelize) {
|
|
|
112
110
|
foreignKey: 'player_id',
|
|
113
111
|
otherKey: 'team_id'
|
|
114
112
|
});
|
|
115
|
-
Player.belongsToMany(Trait, {
|
|
116
|
-
as: 'Traits',
|
|
117
|
-
through: PlayerTrait,
|
|
118
|
-
foreignKey: 'player_id',
|
|
119
|
-
otherKey: 'trait_id'
|
|
120
|
-
});
|
|
121
113
|
Player.hasMany(MatchSetStats, { as: 'MatchSetStats', foreignKey: 'player_id' });
|
|
122
114
|
Player.hasMany(PlayerTeam, { as: 'PlayerTeams', foreignKey: 'player_id' });
|
|
123
|
-
Player.hasMany(PlayerTrait, { as: 'PlayerTraits', foreignKey: 'player_id' });
|
|
124
115
|
Player.hasMany(SetPosition, { as: 'SetPositions', foreignKey: 'player_id' });
|
|
125
116
|
Player.hasOne(DraftPick, { as: 'DraftPick', foreignKey: 'player_id' });
|
|
126
117
|
Player.hasOne(PerformanceStats, { as: 'PerformanceStat', foreignKey: 'player_id' });
|
|
127
118
|
PlayerTeam.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
|
|
128
119
|
PlayerTeam.belongsTo(Team, { as: 'team', foreignKey: 'team_id' });
|
|
129
|
-
PlayerTrait.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
|
|
130
|
-
PlayerTrait.belongsTo(Trait, { as: 'trait', foreignKey: 'trait_id' });
|
|
131
120
|
Rally.belongsTo(MatchSet, { as: 'matchSet', foreignKey: 'match_set_id' });
|
|
132
121
|
Rally.belongsTo(Team, { as: 'ServingTeam', foreignKey: 'serving_team' });
|
|
133
122
|
SetPosition.belongsTo(MatchSet, { as: 'matchSet', foreignKey: 'match_set_id' });
|
|
@@ -162,13 +151,6 @@ export function initModels(sequelize) {
|
|
|
162
151
|
Team.hasMany(PlayerTeam, { as: 'PlayerTeams', foreignKey: 'team_id' });
|
|
163
152
|
Team.hasMany(Rally, { as: 'Rallies', foreignKey: 'serving_team' });
|
|
164
153
|
Team.hasMany(MatchResult, { as: 'WonMatches', foreignKey: 'winner_team_id' });
|
|
165
|
-
Trait.belongsToMany(Player, {
|
|
166
|
-
as: 'Players',
|
|
167
|
-
through: PlayerTrait,
|
|
168
|
-
foreignKey: 'trait_id',
|
|
169
|
-
otherKey: 'player_id'
|
|
170
|
-
});
|
|
171
|
-
Trait.hasMany(PlayerTrait, { as: 'PlayerTraits', foreignKey: 'trait_id' });
|
|
172
154
|
return {
|
|
173
155
|
Coach,
|
|
174
156
|
Competition,
|
|
@@ -178,7 +160,6 @@ export function initModels(sequelize) {
|
|
|
178
160
|
Country,
|
|
179
161
|
Draft,
|
|
180
162
|
DraftPick,
|
|
181
|
-
Event,
|
|
182
163
|
Iteration,
|
|
183
164
|
League,
|
|
184
165
|
LeagueSeason,
|
|
@@ -190,11 +171,9 @@ export function initModels(sequelize) {
|
|
|
190
171
|
PerformanceStats,
|
|
191
172
|
Player,
|
|
192
173
|
PlayerTeam,
|
|
193
|
-
PlayerTrait,
|
|
194
174
|
Rally,
|
|
195
175
|
SetPosition,
|
|
196
176
|
Team,
|
|
197
|
-
Trait,
|
|
198
177
|
User
|
|
199
178
|
};
|
|
200
179
|
}
|
|
@@ -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));
|