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.
Files changed (87) hide show
  1. package/dist/cjs/src/data/init-models.js +0 -21
  2. package/dist/cjs/src/data/models/index.d.ts +0 -2
  3. package/dist/cjs/src/data/models/index.js +0 -2
  4. package/dist/cjs/src/data/models/performance-stats.d.ts +2 -0
  5. package/dist/cjs/src/data/models/performance-stats.js +5 -0
  6. package/dist/cjs/src/data/models/player.d.ts +8 -30
  7. package/dist/cjs/src/data/models/player.js +6 -2
  8. package/dist/cjs/src/data/transformers/index.d.ts +0 -2
  9. package/dist/cjs/src/data/transformers/index.js +0 -2
  10. package/dist/cjs/src/data/transformers/performance-stats.js +4 -2
  11. package/dist/cjs/src/data/transformers/player.js +4 -3
  12. package/dist/cjs/src/index.d.ts +0 -1
  13. package/dist/cjs/src/index.js +0 -1
  14. package/dist/cjs/src/service/coach/formation.js +57 -57
  15. package/dist/cjs/src/service/player/index.d.ts +2 -1
  16. package/dist/cjs/src/service/player/index.js +2 -1
  17. package/dist/cjs/src/service/player/performance-stats.d.ts +1 -1
  18. package/dist/cjs/src/service/player/performance-stats.js +1 -1
  19. package/dist/cjs/src/service/player/player.d.ts +4 -5
  20. package/dist/cjs/src/service/player/player.js +21 -41
  21. package/dist/cjs/src/service/player/rarity.d.ts +4 -1
  22. package/dist/cjs/src/service/player/rarity.js +16 -14
  23. package/dist/cjs/src/service/player/role.d.ts +16 -15
  24. package/dist/cjs/src/service/player/role.js +43 -39
  25. package/dist/cjs/src/service/player/stats.d.ts +12 -0
  26. package/dist/cjs/src/{formula → service/player}/stats.js +18 -10
  27. package/dist/cjs/src/service/player/trait.d.ts +19 -15
  28. package/dist/cjs/src/service/player/trait.js +50 -140
  29. package/dist/cjs/src/{formula/role.formula.json → stat-config/roles.json} +10 -5
  30. package/dist/cjs/src/stat-config/traits.json +58 -0
  31. package/dist/esm/src/data/init-models.js +1 -22
  32. package/dist/esm/src/data/models/index.d.ts +0 -2
  33. package/dist/esm/src/data/models/index.js +0 -2
  34. package/dist/esm/src/data/models/performance-stats.d.ts +2 -0
  35. package/dist/esm/src/data/models/performance-stats.js +5 -0
  36. package/dist/esm/src/data/models/player.d.ts +8 -30
  37. package/dist/esm/src/data/models/player.js +7 -3
  38. package/dist/esm/src/data/transformers/index.d.ts +0 -2
  39. package/dist/esm/src/data/transformers/index.js +0 -2
  40. package/dist/esm/src/data/transformers/performance-stats.js +4 -2
  41. package/dist/esm/src/data/transformers/player.js +5 -4
  42. package/dist/esm/src/index.d.ts +0 -1
  43. package/dist/esm/src/index.js +0 -1
  44. package/dist/esm/src/service/coach/formation.js +58 -58
  45. package/dist/esm/src/service/player/index.d.ts +2 -1
  46. package/dist/esm/src/service/player/index.js +2 -1
  47. package/dist/esm/src/service/player/performance-stats.d.ts +1 -1
  48. package/dist/esm/src/service/player/performance-stats.js +1 -1
  49. package/dist/esm/src/service/player/player.d.ts +4 -5
  50. package/dist/esm/src/service/player/player.js +21 -18
  51. package/dist/esm/src/service/player/rarity.d.ts +4 -1
  52. package/dist/esm/src/service/player/rarity.js +15 -13
  53. package/dist/esm/src/service/player/role.d.ts +16 -15
  54. package/dist/esm/src/service/player/role.js +37 -37
  55. package/dist/esm/src/service/player/stats.d.ts +12 -0
  56. package/dist/esm/src/{formula → service/player}/stats.js +16 -8
  57. package/dist/esm/src/service/player/trait.d.ts +19 -15
  58. package/dist/esm/src/service/player/trait.js +47 -117
  59. package/dist/esm/src/{formula/role.formula.json → stat-config/roles.json} +10 -5
  60. package/dist/esm/src/stat-config/traits.json +58 -0
  61. package/package.json +1 -1
  62. package/dist/cjs/src/data/models/player-trait.d.ts +0 -23
  63. package/dist/cjs/src/data/models/player-trait.js +0 -42
  64. package/dist/cjs/src/data/models/trait.d.ts +0 -37
  65. package/dist/cjs/src/data/models/trait.js +0 -30
  66. package/dist/cjs/src/data/transformers/role.d.ts +0 -5
  67. package/dist/cjs/src/data/transformers/role.js +0 -25
  68. package/dist/cjs/src/data/transformers/trait.d.ts +0 -5
  69. package/dist/cjs/src/data/transformers/trait.js +0 -19
  70. package/dist/cjs/src/formula/index.d.ts +0 -2
  71. package/dist/cjs/src/formula/index.js +0 -18
  72. package/dist/cjs/src/formula/roles.d.ts +0 -9
  73. package/dist/cjs/src/formula/roles.js +0 -9
  74. package/dist/cjs/src/formula/stats.d.ts +0 -6
  75. package/dist/esm/src/data/models/player-trait.d.ts +0 -23
  76. package/dist/esm/src/data/models/player-trait.js +0 -38
  77. package/dist/esm/src/data/models/trait.d.ts +0 -37
  78. package/dist/esm/src/data/models/trait.js +0 -26
  79. package/dist/esm/src/data/transformers/role.d.ts +0 -5
  80. package/dist/esm/src/data/transformers/role.js +0 -21
  81. package/dist/esm/src/data/transformers/trait.d.ts +0 -5
  82. package/dist/esm/src/data/transformers/trait.js +0 -15
  83. package/dist/esm/src/formula/index.d.ts +0 -2
  84. package/dist/esm/src/formula/index.js +0 -2
  85. package/dist/esm/src/formula/roles.d.ts +0 -9
  86. package/dist/esm/src/formula/roles.js +0 -3
  87. 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, PlayerTraitModel, RallyModel, SetPositionModel, TeamModel, TraitModel, UserModel } from './models';
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>;
@@ -95,6 +95,11 @@ export class PerformanceStatsModel extends Model {
95
95
  type: DataTypes.INTEGER,
96
96
  allowNull: false,
97
97
  defaultValue: 0
98
+ },
99
+ saving: {
100
+ type: DataTypes.INTEGER,
101
+ allowNull: false,
102
+ defaultValue: 0
98
103
  }
99
104
  }, {
100
105
  sequelize,
@@ -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, PlayerTraitId, PlayerTraitModel, SetPositionId, SetPositionModel, TeamId, TeamModel, TraitId, TraitModel } from '.';
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: RoleType[];
8
- rarity: PlayerRarity;
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: RoleType[];
23
- rarity: PlayerRarity;
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 { Rarity } from '../../service';
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(DataTypes.ENUM('SETTER', 'LIBERO', 'OUTSIDE_HITTER', 'OPPOSITE_HITTER', 'MIDDLE_BLOCKER')),
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(...Object.values(Rarity)),
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, transformFromRole, transformToCountry, transformToPerformanceStats, transformToRole, transformToTrait } from '.';
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.map(transformFromRole),
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.map(transformToRole),
23
- traits: model.Traits.map(transformToTrait),
23
+ roles: model.roles,
24
+ traits: model.traits,
24
25
  stats: transformToPerformanceStats(model.PerformanceStat),
25
26
  rarity: model.rarity
26
27
  });
@@ -1,3 +1,2 @@
1
1
  export * from './service';
2
2
  export * from './data';
3
- export * from './formula';
@@ -1,3 +1,2 @@
1
1
  export * from './service';
2
2
  export * from './data';
3
- export * from './formula';
@@ -1,4 +1,4 @@
1
- import { Role } from '../player';
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: [Role.SETTER],
19
- 2: [Role.OUTSIDE_HITTER],
20
- 3: [Role.MIDDLE_BLOCKER],
21
- 4: [Role.OPPOSITE_HITTER],
22
- 5: [Role.OUTSIDE_HITTER],
23
- 6: [Role.MIDDLE_BLOCKER]
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: [Role.OPPOSITE_HITTER, Role.SETTER],
27
- 2: [Role.OPPOSITE_HITTER],
28
- 3: [Role.MIDDLE_BLOCKER],
29
- 4: [Role.OUTSIDE_HITTER],
30
- 5: [Role.OUTSIDE_HITTER],
31
- 6: [Role.LIBERO]
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
- [Role.SETTER, Role.OPPOSITE_HITTER],
35
- [Role.OPPOSITE_HITTER],
36
- [Role.MIDDLE_BLOCKER],
37
- [Role.MIDDLE_BLOCKER],
38
- [Role.OUTSIDE_HITTER],
39
- [Role.OUTSIDE_HITTER],
40
- [Role.LIBERO]
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: [Role.MIDDLE_BLOCKER],
54
- 2: [Role.SETTER],
55
- 3: [Role.OUTSIDE_HITTER],
56
- 4: [Role.MIDDLE_BLOCKER],
57
- 5: [Role.SETTER],
58
- 6: [Role.OPPOSITE_HITTER]
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: [Role.SETTER],
62
- 2: [Role.OPPOSITE_HITTER, Role.SETTER],
63
- 3: [Role.MIDDLE_BLOCKER],
64
- 4: [Role.OUTSIDE_HITTER],
65
- 5: [Role.OUTSIDE_HITTER],
66
- 6: [Role.LIBERO]
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
- [Role.SETTER, Role.OPPOSITE_HITTER],
70
- [Role.SETTER],
71
- [Role.MIDDLE_BLOCKER],
72
- [Role.MIDDLE_BLOCKER],
73
- [Role.OUTSIDE_HITTER],
74
- [Role.OUTSIDE_HITTER],
75
- [Role.LIBERO]
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: [Role.OPPOSITE_HITTER, Role.SETTER],
89
- 2: [Role.OUTSIDE_HITTER],
90
- 3: [Role.MIDDLE_BLOCKER],
91
- 4: [Role.OPPOSITE_HITTER, Role.SETTER],
92
- 5: [Role.OUTSIDE_HITTER],
93
- 6: [Role.MIDDLE_BLOCKER]
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: [Role.SETTER],
97
- 2: [Role.OPPOSITE_HITTER, Role.SETTER],
98
- 3: [Role.MIDDLE_BLOCKER],
99
- 4: [Role.OUTSIDE_HITTER],
100
- 5: [Role.OUTSIDE_HITTER],
101
- 6: [Role.LIBERO]
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
- [Role.SETTER, Role.OPPOSITE_HITTER],
105
- [Role.OPPOSITE_HITTER, Role.SETTER],
106
- [Role.MIDDLE_BLOCKER],
107
- [Role.MIDDLE_BLOCKER],
108
- [Role.OUTSIDE_HITTER],
109
- [Role.OUTSIDE_HITTER],
110
- [Role.LIBERO]
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,5 +1,6 @@
1
1
  export * from './player';
2
2
  export * from './performance-stats';
3
- export * from './role';
4
3
  export * from './trait';
5
4
  export * from './rarity';
5
+ export * from './role';
6
+ export * from './stats';
@@ -1,5 +1,6 @@
1
1
  export * from './player';
2
2
  export * from './performance-stats';
3
- export * from './role';
4
3
  export * from './trait';
5
4
  export * from './rarity';
5
+ export * from './role';
6
+ export * from './stats';
@@ -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: GeneralStat.Stats;
8
+ readonly name: Stats;
9
9
  readonly value: number;
10
10
  constructor({ name, value }: {
11
- name: GeneralStat.Stats;
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 * as GeneralStat from '../../formula/stats';
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 = GeneralStat.ALL_STATS.map(stat => ({
32
+ this.generalStats = Object.values(StatsEnum).map((stat) => ({
33
33
  name: stat,
34
- value: GeneralStat.calculateScore(stats, stat)
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 = Role.calculateScore(p2.stats, role);
41
- const p1Score = Role.calculateScore(p1.stats, role);
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 'ATTACK':
50
- x *= 0.35;
49
+ case StatsEnum.ATTACK:
50
+ x *= 0.19;
51
51
  break;
52
- case 'DEFENSE':
53
- x *= 0.35;
52
+ case StatsEnum.SET:
53
+ x *= 0.19;
54
54
  break;
55
- case 'SERVE':
56
- x *= 0.2;
55
+ case StatsEnum.RECEIVE:
56
+ x *= 0.19;
57
57
  break;
58
- case 'PHYSICAL':
59
- x *= 0.1;
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(r => r.toString()).join(',')}]`,
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
- export declare enum Rarity {
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
- export var Rarity;
2
- (function (Rarity) {
3
- Rarity["COMMON"] = "COMMON";
4
- Rarity["RARE"] = "RARE";
5
- Rarity["LEGENDARY"] = "LEGENDARY";
6
- Rarity["MYTHIC"] = "MYTHIC";
7
- Rarity["SPECIAL"] = "SPECIAL";
8
- })(Rarity || (Rarity = {}));
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
- [Rarity.COMMON]: [0, 50],
11
- [Rarity.RARE]: [51, 70],
12
- [Rarity.LEGENDARY]: [71, 85],
13
- [Rarity.MYTHIC]: [86, 98],
14
- [Rarity.SPECIAL]: [99, 100]
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));