volleyballsimtypes 0.0.83 → 0.0.84

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 (65) hide show
  1. package/dist/cjs/src/api/player.d.ts +2 -7
  2. package/dist/cjs/src/api/player.js +0 -10
  3. package/dist/cjs/src/data/init-models.js +61 -0
  4. package/dist/cjs/src/data/models/block.d.ts +12 -2
  5. package/dist/cjs/src/data/models/event-trait.d.ts +23 -0
  6. package/dist/cjs/src/data/models/event-trait.js +42 -0
  7. package/dist/cjs/src/data/models/event.d.ts +12 -1
  8. package/dist/cjs/src/data/models/index.d.ts +3 -0
  9. package/dist/cjs/src/data/models/index.js +3 -0
  10. package/dist/cjs/src/data/models/match.d.ts +1 -1
  11. package/dist/cjs/src/data/models/player-trait.d.ts +23 -0
  12. package/dist/cjs/src/data/models/player-trait.js +42 -0
  13. package/dist/cjs/src/data/models/player.d.ts +14 -7
  14. package/dist/cjs/src/data/models/player.js +0 -4
  15. package/dist/cjs/src/data/models/reception.d.ts +12 -2
  16. package/dist/cjs/src/data/models/season-match.d.ts +1 -1
  17. package/dist/cjs/src/data/models/season.d.ts +3 -3
  18. package/dist/cjs/src/data/models/serve.d.ts +12 -2
  19. package/dist/cjs/src/data/models/set.d.ts +12 -2
  20. package/dist/cjs/src/data/models/spike.d.ts +12 -2
  21. package/dist/cjs/src/data/models/team.d.ts +1 -1
  22. package/dist/cjs/src/data/models/tournament.d.ts +1 -1
  23. package/dist/cjs/src/data/models/trait.d.ts +70 -0
  24. package/dist/cjs/src/data/models/trait.js +50 -0
  25. package/dist/cjs/src/data/transformers/player.js +2 -3
  26. package/dist/cjs/src/data/transformers/trait.d.ts +5 -5
  27. package/dist/cjs/src/data/transformers/trait.js +18 -26
  28. package/dist/cjs/src/service/match/match-set.d.ts +1 -1
  29. package/dist/cjs/src/service/match/rally.d.ts +1 -1
  30. package/dist/cjs/src/service/player/trait.d.ts +2 -3
  31. package/dist/cjs/src/service/player/trait.js +10 -12
  32. package/dist/cjs/src/service/team/team.d.ts +1 -1
  33. package/dist/esm/src/api/player.d.ts +2 -7
  34. package/dist/esm/src/api/player.js +1 -9
  35. package/dist/esm/src/data/init-models.js +62 -1
  36. package/dist/esm/src/data/models/block.d.ts +12 -2
  37. package/dist/esm/src/data/models/event-trait.d.ts +23 -0
  38. package/dist/esm/src/data/models/event-trait.js +38 -0
  39. package/dist/esm/src/data/models/event.d.ts +12 -1
  40. package/dist/esm/src/data/models/index.d.ts +3 -0
  41. package/dist/esm/src/data/models/index.js +3 -0
  42. package/dist/esm/src/data/models/match.d.ts +1 -1
  43. package/dist/esm/src/data/models/player-trait.d.ts +23 -0
  44. package/dist/esm/src/data/models/player-trait.js +38 -0
  45. package/dist/esm/src/data/models/player.d.ts +14 -7
  46. package/dist/esm/src/data/models/player.js +0 -4
  47. package/dist/esm/src/data/models/reception.d.ts +12 -2
  48. package/dist/esm/src/data/models/season-match.d.ts +1 -1
  49. package/dist/esm/src/data/models/season.d.ts +3 -3
  50. package/dist/esm/src/data/models/serve.d.ts +12 -2
  51. package/dist/esm/src/data/models/set.d.ts +12 -2
  52. package/dist/esm/src/data/models/spike.d.ts +12 -2
  53. package/dist/esm/src/data/models/team.d.ts +1 -1
  54. package/dist/esm/src/data/models/tournament.d.ts +1 -1
  55. package/dist/esm/src/data/models/trait.d.ts +70 -0
  56. package/dist/esm/src/data/models/trait.js +46 -0
  57. package/dist/esm/src/data/transformers/player.js +3 -4
  58. package/dist/esm/src/data/transformers/trait.d.ts +5 -5
  59. package/dist/esm/src/data/transformers/trait.js +15 -23
  60. package/dist/esm/src/service/match/match-set.d.ts +1 -1
  61. package/dist/esm/src/service/match/rally.d.ts +1 -1
  62. package/dist/esm/src/service/player/trait.d.ts +2 -3
  63. package/dist/esm/src/service/player/trait.js +10 -12
  64. package/dist/esm/src/service/team/team.d.ts +1 -1
  65. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { Model } from 'sequelize';
3
- import { CourtTarget, EventType, PlayerId, PlayerModel, RallyId, RallyModel, TraitType } from '.';
3
+ import { CourtTarget, EventType, PlayerId, PlayerModel, RallyId, RallyModel, TraitId, TraitModel } from '.';
4
4
  export interface SpikeAttributes {
5
5
  event_id: string;
6
6
  rally_id: string;
@@ -29,7 +29,6 @@ export declare class SpikeModel extends Model<SpikeAttributes, SpikeCreationAttr
29
29
  player_id: string;
30
30
  modifier: number;
31
31
  score: number;
32
- active_traits: TraitType[];
33
32
  player: PlayerModel;
34
33
  getPlayer: Sequelize.BelongsToGetAssociationMixin<PlayerModel>;
35
34
  setPlayer: Sequelize.BelongsToSetAssociationMixin<PlayerModel, PlayerId>;
@@ -38,5 +37,16 @@ export declare class SpikeModel extends Model<SpikeAttributes, SpikeCreationAttr
38
37
  getRally: Sequelize.BelongsToGetAssociationMixin<RallyModel>;
39
38
  setRally: Sequelize.BelongsToSetAssociationMixin<RallyModel, RallyId>;
40
39
  createRally: Sequelize.BelongsToCreateAssociationMixin<RallyModel>;
40
+ Traits: TraitModel[];
41
+ getTraits: Sequelize.BelongsToManyGetAssociationsMixin<TraitModel>;
42
+ setTraits: Sequelize.BelongsToManySetAssociationsMixin<TraitModel, TraitId>;
43
+ addTrait: Sequelize.BelongsToManyAddAssociationMixin<TraitModel, TraitId>;
44
+ addTraits: Sequelize.BelongsToManyAddAssociationsMixin<TraitModel, TraitId>;
45
+ createTrait: Sequelize.BelongsToManyCreateAssociationMixin<TraitModel>;
46
+ removeTrait: Sequelize.BelongsToManyRemoveAssociationMixin<TraitModel, TraitId>;
47
+ removeTraits: Sequelize.BelongsToManyRemoveAssociationsMixin<TraitModel, TraitId>;
48
+ hasTrait: Sequelize.BelongsToManyHasAssociationMixin<TraitModel, TraitId>;
49
+ hasTraits: Sequelize.BelongsToManyHasAssociationsMixin<TraitModel, TraitId>;
50
+ countTraits: Sequelize.BelongsToManyCountAssociationsMixin;
41
51
  static initModel(sequelize: Sequelize.Sequelize): typeof SpikeModel;
42
52
  }
@@ -26,6 +26,7 @@ export declare class TeamModel extends Model<TeamAttributes, TeamCreationAttribu
26
26
  league_id: string;
27
27
  country_id: string;
28
28
  coach: CoachModel;
29
+ league: LeagueModel;
29
30
  getCoach: Sequelize.BelongsToGetAssociationMixin<CoachModel>;
30
31
  setCoach: Sequelize.BelongsToSetAssociationMixin<CoachModel, CoachId>;
31
32
  createCoach: Sequelize.BelongsToCreateAssociationMixin<CoachModel>;
@@ -33,7 +34,6 @@ export declare class TeamModel extends Model<TeamAttributes, TeamCreationAttribu
33
34
  getCountry: Sequelize.BelongsToGetAssociationMixin<CountryModel>;
34
35
  setCountry: Sequelize.BelongsToSetAssociationMixin<CountryModel, CountryId>;
35
36
  createCountry: Sequelize.BelongsToCreateAssociationMixin<CountryModel>;
36
- league: LeagueModel;
37
37
  getLeague: Sequelize.BelongsToGetAssociationMixin<LeagueModel>;
38
38
  setLeague: Sequelize.BelongsToSetAssociationMixin<LeagueModel, LeagueId>;
39
39
  createLeague: Sequelize.BelongsToCreateAssociationMixin<LeagueModel>;
@@ -17,6 +17,7 @@ export declare class TournamentModel extends Model<TournamentAttributes, Tournam
17
17
  tournament_id: string;
18
18
  iteration: number;
19
19
  champion?: string;
20
+ TournamentMatches: TournamentMatchModel[];
20
21
  tournamentTeams: TeamModel[];
21
22
  Iteration: IterationModel;
22
23
  getIteration: Sequelize.BelongsToGetAssociationMixin<IterationModel>;
@@ -26,7 +27,6 @@ export declare class TournamentModel extends Model<TournamentAttributes, Tournam
26
27
  getChampion: Sequelize.BelongsToGetAssociationMixin<TeamModel>;
27
28
  setChampion: Sequelize.BelongsToSetAssociationMixin<TeamModel, TeamId>;
28
29
  createChampion: Sequelize.BelongsToCreateAssociationMixin<TeamModel>;
29
- TournamentMatches: TournamentMatchModel[];
30
30
  getTournamentMatches: Sequelize.HasManyGetAssociationsMixin<TournamentMatchModel>;
31
31
  setTournamentMatches: Sequelize.HasManySetAssociationsMixin<TournamentMatchModel, TournamentMatchId>;
32
32
  addTournamentMatch: Sequelize.HasManyAddAssociationMixin<TournamentMatchModel, TournamentMatchId>;
@@ -0,0 +1,70 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { Model } from 'sequelize';
3
+ import { EventId, EventModel, EventTraitId, EventTraitModel, PlayerId, PlayerModel, PlayerTraitId, PlayerTraitModel } from '.';
4
+ export interface TraitAttributes {
5
+ trait_id: string;
6
+ name: string;
7
+ modifier: number;
8
+ chance: number;
9
+ threshold: number;
10
+ weight: number;
11
+ general_stat: GeneralStatType;
12
+ }
13
+ export type TraitPk = 'trait_id';
14
+ export type TraitId = TraitModel[TraitPk];
15
+ export type TraitCreationAttributes = TraitAttributes;
16
+ export type GeneralStatType = 'Attack' | 'Defense' | 'Physical' | 'Serve';
17
+ export declare class TraitModel extends Model<TraitAttributes, TraitCreationAttributes> implements TraitAttributes {
18
+ trait_id: string;
19
+ name: string;
20
+ modifier: number;
21
+ chance: number;
22
+ threshold: number;
23
+ weight: number;
24
+ general_stat: GeneralStatType;
25
+ Events: EventModel[];
26
+ getEvents: Sequelize.BelongsToManyGetAssociationsMixin<EventModel>;
27
+ setEvents: Sequelize.BelongsToManySetAssociationsMixin<EventModel, EventId>;
28
+ addEvent: Sequelize.BelongsToManyAddAssociationMixin<EventModel, EventId>;
29
+ addEvents: Sequelize.BelongsToManyAddAssociationsMixin<EventModel, EventId>;
30
+ createEvent: Sequelize.BelongsToManyCreateAssociationMixin<EventModel>;
31
+ removeEvent: Sequelize.BelongsToManyRemoveAssociationMixin<EventModel, EventId>;
32
+ removeEvents: Sequelize.BelongsToManyRemoveAssociationsMixin<EventModel, EventId>;
33
+ hasEvent: Sequelize.BelongsToManyHasAssociationMixin<EventModel, EventId>;
34
+ hasEvents: Sequelize.BelongsToManyHasAssociationsMixin<EventModel, EventId>;
35
+ countEvents: Sequelize.BelongsToManyCountAssociationsMixin;
36
+ EventTraits: EventTraitModel[];
37
+ getEventTraits: Sequelize.HasManyGetAssociationsMixin<EventTraitModel>;
38
+ setEventTraits: Sequelize.HasManySetAssociationsMixin<EventTraitModel, EventTraitId>;
39
+ addEventTrait: Sequelize.HasManyAddAssociationMixin<EventTraitModel, EventTraitId>;
40
+ addEventTraits: Sequelize.HasManyAddAssociationsMixin<EventTraitModel, EventTraitId>;
41
+ createEventTrait: Sequelize.HasManyCreateAssociationMixin<EventTraitModel>;
42
+ removeEventTrait: Sequelize.HasManyRemoveAssociationMixin<EventTraitModel, EventTraitId>;
43
+ removeEventTraits: Sequelize.HasManyRemoveAssociationsMixin<EventTraitModel, EventTraitId>;
44
+ hasEventTrait: Sequelize.HasManyHasAssociationMixin<EventTraitModel, EventTraitId>;
45
+ hasEventTraits: Sequelize.HasManyHasAssociationsMixin<EventTraitModel, EventTraitId>;
46
+ countEventTraits: Sequelize.HasManyCountAssociationsMixin;
47
+ Players: PlayerModel[];
48
+ getPlayers: Sequelize.BelongsToManyGetAssociationsMixin<PlayerModel>;
49
+ setPlayers: Sequelize.BelongsToManySetAssociationsMixin<PlayerModel, PlayerId>;
50
+ addPlayer: Sequelize.BelongsToManyAddAssociationMixin<PlayerModel, PlayerId>;
51
+ addPlayers: Sequelize.BelongsToManyAddAssociationsMixin<PlayerModel, PlayerId>;
52
+ createPlayer: Sequelize.BelongsToManyCreateAssociationMixin<PlayerModel>;
53
+ removePlayer: Sequelize.BelongsToManyRemoveAssociationMixin<PlayerModel, PlayerId>;
54
+ removePlayers: Sequelize.BelongsToManyRemoveAssociationsMixin<PlayerModel, PlayerId>;
55
+ hasPlayer: Sequelize.BelongsToManyHasAssociationMixin<PlayerModel, PlayerId>;
56
+ hasPlayers: Sequelize.BelongsToManyHasAssociationsMixin<PlayerModel, PlayerId>;
57
+ countPlayers: Sequelize.BelongsToManyCountAssociationsMixin;
58
+ PlayerTraits: PlayerTraitModel[];
59
+ getPlayerTraits: Sequelize.HasManyGetAssociationsMixin<PlayerTraitModel>;
60
+ setPlayerTraits: Sequelize.HasManySetAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
61
+ addPlayerTrait: Sequelize.HasManyAddAssociationMixin<PlayerTraitModel, PlayerTraitId>;
62
+ addPlayerTraits: Sequelize.HasManyAddAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
63
+ createPlayerTrait: Sequelize.HasManyCreateAssociationMixin<PlayerTraitModel>;
64
+ removePlayerTrait: Sequelize.HasManyRemoveAssociationMixin<PlayerTraitModel, PlayerTraitId>;
65
+ removePlayerTraits: Sequelize.HasManyRemoveAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
66
+ hasPlayerTrait: Sequelize.HasManyHasAssociationMixin<PlayerTraitModel, PlayerTraitId>;
67
+ hasPlayerTraits: Sequelize.HasManyHasAssociationsMixin<PlayerTraitModel, PlayerTraitId>;
68
+ countPlayerTraits: Sequelize.HasManyCountAssociationsMixin;
69
+ static initModel(sequelize: Sequelize.Sequelize): typeof TraitModel;
70
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraitModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ class TraitModel extends sequelize_1.Model {
6
+ static initModel(sequelize) {
7
+ return TraitModel.init({
8
+ trait_id: {
9
+ type: sequelize_1.DataTypes.UUID,
10
+ allowNull: false,
11
+ primaryKey: true
12
+ },
13
+ name: {
14
+ type: sequelize_1.DataTypes.STRING,
15
+ allowNull: false
16
+ },
17
+ modifier: {
18
+ type: sequelize_1.DataTypes.REAL,
19
+ allowNull: false
20
+ },
21
+ chance: {
22
+ type: sequelize_1.DataTypes.REAL,
23
+ allowNull: false
24
+ },
25
+ threshold: {
26
+ type: sequelize_1.DataTypes.INTEGER,
27
+ allowNull: false
28
+ },
29
+ weight: {
30
+ type: sequelize_1.DataTypes.INTEGER,
31
+ allowNull: false
32
+ },
33
+ general_stat: {
34
+ type: sequelize_1.DataTypes.ENUM('Attack', 'Defense', 'Physical', 'Serve'),
35
+ allowNull: false
36
+ }
37
+ }, {
38
+ sequelize,
39
+ tableName: 'Trait',
40
+ schema: 'public',
41
+ timestamps: false,
42
+ indexes: [{
43
+ name: 'trait_pk',
44
+ unique: true,
45
+ fields: [{ name: 'trait_id' }]
46
+ }]
47
+ });
48
+ }
49
+ }
50
+ exports.TraitModel = TraitModel;
@@ -9,7 +9,6 @@ function transformToAttributes(player) {
9
9
  country_id: player.country.id,
10
10
  first_name: player.name.first,
11
11
  last_name: player.name.last,
12
- traits: player.traits.map(_1.transformFromTrait),
13
12
  roles: player.roles.map(_1.transformFromRole),
14
13
  PerformanceStat: (0, _1.transformFromPerformanceStats)(player)
15
14
  };
@@ -24,7 +23,7 @@ function transformToObject(model) {
24
23
  },
25
24
  country: (0, _1.transformToCountry)(model.country),
26
25
  roles: model.roles.map(_1.transformToRole),
27
- traits: model.traits.map(_1.transformToTrait),
26
+ traits: model.Traits.map(_1.transformToTrait),
28
27
  stats: (0, _1.transformToPerformanceStats)(model.PerformanceStat)
29
28
  });
30
29
  }
@@ -44,7 +43,7 @@ function transformToAPIObject(model) {
44
43
  },
45
44
  country: (0, _1.transformToCountry)(model.country),
46
45
  roles: model.roles.map(_1.transformToRole),
47
- traits: model.traits.map(_1.transformToAPITrait),
46
+ traits: model.Traits.map(_1.transformToAPITrait),
48
47
  generalStats,
49
48
  gameStats
50
49
  };
@@ -1,7 +1,7 @@
1
1
  import { Trait } from '../../service';
2
+ import { TraitAttributes, TraitModel } from '../models';
2
3
  import { APITrait } from '../../api';
3
- import { TraitType } from '../models';
4
- declare function transformToType(trait: Trait): TraitType;
5
- declare function transformFromType(trait: TraitType): Trait;
6
- declare function transformToEnum(trait: TraitType): APITrait;
7
- export { transformToType as transformFromTrait, transformFromType as transformToTrait, transformToEnum as transformToAPITrait };
4
+ declare function transformToAttributes(trait: Trait): TraitAttributes;
5
+ declare function transformToAPIObject(model: TraitModel): APITrait;
6
+ declare function transformToObject(model: TraitModel): Trait;
7
+ export { transformToObject as transformToTrait, transformToAPIObject as transformToAPITrait, transformToAttributes as transformFromTrait };
@@ -1,32 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transformToAPITrait = exports.transformToTrait = exports.transformFromTrait = void 0;
3
+ exports.transformFromTrait = exports.transformToAPITrait = exports.transformToTrait = void 0;
4
4
  const service_1 = require("../../service");
5
- const api_1 = require("../../api");
6
- function transformToType(trait) {
7
- switch (trait.name) {
8
- case 'Marksman':
9
- return 'MARKSMAN';
10
- case 'Master Mind':
11
- return 'MASTER_MIND';
12
- case 'Moving Wall':
13
- return 'MOVING_WALL';
14
- case 'Meteor Serve':
15
- return 'METEOR_SERVE';
16
- case 'Vigorous':
17
- return 'VIGOROUS';
18
- case 'Guardian':
19
- return 'GUARDIAN';
20
- default:
21
- throw new Error('UNKNOWN_TRAIT');
22
- }
5
+ function transformToAttributes(trait) {
6
+ return {
7
+ trait_id: trait.id,
8
+ name: trait.name,
9
+ modifier: trait.modifier,
10
+ chance: trait.chance,
11
+ weight: trait.weight,
12
+ threshold: trait.statThreshold,
13
+ general_stat: trait.stat
14
+ };
23
15
  }
24
- exports.transformFromTrait = transformToType;
25
- function transformFromType(trait) {
26
- return service_1.Trait[trait];
16
+ exports.transformFromTrait = transformToAttributes;
17
+ function transformToAPIObject(model) {
18
+ return { name: model.name };
27
19
  }
28
- exports.transformToTrait = transformFromType;
29
- function transformToEnum(trait) {
30
- return api_1.APITrait[trait];
20
+ exports.transformToAPITrait = transformToAPIObject;
21
+ function transformToObject(model) {
22
+ return service_1.Trait.getTraits().find(trait => trait.id === model.trait_id);
31
23
  }
32
- exports.transformToAPITrait = transformToEnum;
24
+ exports.transformToTrait = transformToObject;
@@ -50,8 +50,8 @@ export declare class MatchSet {
50
50
  private readonly scoreThreshold;
51
51
  private homeScore;
52
52
  private awayScore;
53
- constructor({ id, order, isTieBreak, homeLibero, awayLibero, stats, rallies, homeScore, awayScore }: MatchSetOpts);
54
53
  private _state;
54
+ constructor({ id, order, isTieBreak, homeLibero, awayLibero, stats, rallies, homeScore, awayScore }: MatchSetOpts);
55
55
  get state(): MatchSetState;
56
56
  getHomeScore(): number;
57
57
  getAwayScore(): number;
@@ -30,8 +30,8 @@ export declare class Rally {
30
30
  readonly homePlayerPosition: PlayerPosition[];
31
31
  readonly awayPlayerPosition: PlayerPosition[];
32
32
  readonly order: number;
33
- constructor({ id, order, servingTeam, homePlayerPosition, awayPlayerPosition, events }: RallyOpts);
34
33
  private _state;
34
+ constructor({ id, order, servingTeam, homePlayerPosition, awayPlayerPosition, events }: RallyOpts);
35
35
  get state(): RallyState;
36
36
  get score(): Score | undefined;
37
37
  isOver(): boolean;
@@ -1,4 +1,3 @@
1
- import { Role } from './role';
2
1
  import { GeneralStat } from './stats';
3
2
  import { PerformanceStats } from './performance-stats';
4
3
  export declare class Trait {
@@ -8,8 +7,8 @@ export declare class Trait {
8
7
  static readonly METEOR_SERVE: Trait;
9
8
  static readonly VIGOROUS: Trait;
10
9
  static readonly GUARDIAN: Trait;
10
+ readonly id: string;
11
11
  readonly name: string;
12
- readonly roles: Role[];
13
12
  readonly modifier: number;
14
13
  readonly chance: number;
15
14
  readonly statThreshold: number;
@@ -17,5 +16,5 @@ export declare class Trait {
17
16
  readonly weight: number;
18
17
  private constructor();
19
18
  static getTraits(): Trait[];
20
- static assignTraits(roles: Role[], performanceStats: PerformanceStats): Trait[];
19
+ static assignTraits(performanceStats: PerformanceStats): Trait[];
21
20
  }
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Trait = void 0;
4
- const role_1 = require("./role");
5
4
  const stats_1 = require("./stats");
6
5
  class Trait {
7
- constructor({ name, roles, modifier, chance, statThreshold, stat, weight }) {
6
+ constructor({ id, name, modifier, chance, statThreshold, stat, weight }) {
7
+ this.id = id;
8
8
  this.name = name;
9
- this.roles = roles;
10
9
  this.modifier = modifier;
11
10
  this.chance = chance;
12
11
  this.statThreshold = statThreshold;
@@ -16,10 +15,9 @@ class Trait {
16
15
  static getTraits() {
17
16
  return [Trait.GUARDIAN, Trait.MARKSMAN, Trait.METEOR_SERVE, Trait.VIGOROUS, Trait.MOVING_WALL, Trait.MASTER_MIND];
18
17
  }
19
- static assignTraits(roles, performanceStats) {
18
+ static assignTraits(performanceStats) {
20
19
  const qualifiedTraits = this.getTraits().filter(trait => {
21
- return (trait.roles.length < 1 || trait.roles.some(role => roles.includes(role))) &&
22
- stats_1.GeneralStat.calculateScore(performanceStats, trait.stat) >= trait.statThreshold;
20
+ return stats_1.GeneralStat.calculateScore(performanceStats, trait.stat) >= trait.statThreshold;
23
21
  });
24
22
  const random = Math.random();
25
23
  let traitCount;
@@ -44,8 +42,8 @@ exports.Trait = Trait;
44
42
  // A Setter gets a bonus to their score and the receiving attacker gets a bonus as well.
45
43
  // Stacks with attacker bonus
46
44
  Trait.MASTER_MIND = new Trait({
45
+ id: '0117a315-a743-43e3-9ec2-ad5cf700ef08',
47
46
  name: 'Master Mind',
48
- roles: [role_1.Role.SETTER],
49
47
  modifier: 1.25,
50
48
  chance: 0.2,
51
49
  statThreshold: 80,
@@ -54,8 +52,8 @@ Trait.MASTER_MIND = new Trait({
54
52
  });
55
53
  // Will always participate in blocking regardless of chance and adds
56
54
  Trait.MOVING_WALL = new Trait({
55
+ id: '304c53f6-5e7a-44d3-9625-f10d8109421a',
57
56
  name: 'Moving Wall',
58
- roles: [role_1.Role.MIDDLE_BLOCKER, role_1.Role.DEFENSIVE_SPECIALIST],
59
57
  modifier: 1.1,
60
58
  chance: 1,
61
59
  statThreshold: 75,
@@ -64,8 +62,8 @@ Trait.MOVING_WALL = new Trait({
64
62
  });
65
63
  // On attack, will always pick the worst receiver and adds a 10% to score
66
64
  Trait.MARKSMAN = new Trait({
65
+ id: 'ace3458e-69ab-487c-a9c0-d656f705d8dd',
67
66
  name: 'Marksman',
68
- roles: [role_1.Role.OUTSIDE_HITTER, role_1.Role.OPPOSITE_HITTER, role_1.Role.SETTER],
69
67
  modifier: 1.1,
70
68
  chance: 0.3,
71
69
  statThreshold: 75,
@@ -74,8 +72,8 @@ Trait.MARKSMAN = new Trait({
74
72
  });
75
73
  // Increases the score of the serve by 25% when serve type is Jumping.
76
74
  Trait.METEOR_SERVE = new Trait({
75
+ id: 'c929a79d-5866-40d6-bbd6-b0b67a929c4c',
77
76
  name: 'Meteor Serve',
78
- roles: [],
79
77
  modifier: 1.25,
80
78
  chance: 0.1,
81
79
  statThreshold: 75,
@@ -84,8 +82,8 @@ Trait.METEOR_SERVE = new Trait({
84
82
  });
85
83
  // Has a 50% chance of taking an action without decreasing energy.
86
84
  Trait.VIGOROUS = new Trait({
85
+ id: 'f9599b87-b3b2-49ce-8224-470f6fe6ed64',
87
86
  name: 'Vigorous',
88
- roles: [],
89
87
  modifier: 1,
90
88
  statThreshold: 60,
91
89
  chance: 0.5,
@@ -94,8 +92,8 @@ Trait.VIGOROUS = new Trait({
94
92
  });
95
93
  // Takes place of the receiver and increases reception score by 25%, guaranteeing success. Can only trigger in back-row.
96
94
  Trait.GUARDIAN = new Trait({
95
+ id: 'c3291953-9256-4559-b5a9-955ccb8f9a6f',
97
96
  name: 'Guardian',
98
- roles: [role_1.Role.DEFENSIVE_SPECIALIST, role_1.Role.LIBERO],
99
97
  chance: 0.25,
100
98
  statThreshold: 75,
101
99
  modifier: 1.25,
@@ -20,8 +20,8 @@ export declare class Team {
20
20
  readonly coach?: Coach;
21
21
  readonly league?: League;
22
22
  readonly country?: Country;
23
- constructor({ id, rating, name, shortName, country, roster, coach, league }: TeamOpts);
24
23
  private _rating;
24
+ constructor({ id, rating, name, shortName, country, roster, coach, league }: TeamOpts);
25
25
  get rating(): number;
26
26
  set rating(value: number);
27
27
  isPlayerInRoster(player: Player): boolean;
@@ -1,12 +1,7 @@
1
1
  import { Country, Name, Role, Stat } from '../service';
2
2
  import { APISetStatistics } from './';
3
- export declare enum APITrait {
4
- MASTER_MIND = "Master Mind",
5
- MOVING_WALL = "Moving Wall",
6
- MARKSMAN = "Marksman",
7
- METEOR_SERVE = "Meteor Serve",
8
- VIGOROUS = "Vigorous",
9
- GUARDIAN = "Guardian"
3
+ export interface APITrait {
4
+ readonly name: string;
10
5
  }
11
6
  export interface APIPlayer {
12
7
  readonly id: string;
@@ -1,9 +1 @@
1
- export var APITrait;
2
- (function (APITrait) {
3
- APITrait["MASTER_MIND"] = "Master Mind";
4
- APITrait["MOVING_WALL"] = "Moving Wall";
5
- APITrait["MARKSMAN"] = "Marksman";
6
- APITrait["METEOR_SERVE"] = "Meteor Serve";
7
- APITrait["VIGOROUS"] = "Vigorous";
8
- APITrait["GUARDIAN"] = "Guardian";
9
- })(APITrait || (APITrait = {}));
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { BlockModel, CoachModel, CountryModel, DraftModel, DraftPickModel, EventModel, IterationModel, LeagueModel, LiberoReplacementModel, MatchModel, MatchRatingModel, MatchSetModel, MatchSetStatsModel, PerformanceStatsModel, PlayerModel, PlayerTeamModel, RallyModel, RallyPositionModel, ReceptionModel, ScoreModel, SeasonMatchModel, SeasonModel, SeasonTeamsModel, ServeModel, SetModel, SpikeModel, SubstitutionModel, TeamModel, TournamentMatchModel, TournamentModel, TournamentTeamsModel, UserModel } from './models';
1
+ import { BlockModel, CoachModel, CountryModel, DraftModel, DraftPickModel, EventModel, EventTraitModel, IterationModel, LeagueModel, LiberoReplacementModel, MatchModel, MatchRatingModel, MatchSetModel, MatchSetStatsModel, PerformanceStatsModel, PlayerModel, PlayerTeamModel, PlayerTraitModel, RallyModel, RallyPositionModel, ReceptionModel, ScoreModel, SeasonMatchModel, SeasonModel, SeasonTeamsModel, ServeModel, SetModel, SpikeModel, SubstitutionModel, TeamModel, TournamentMatchModel, TournamentModel, TournamentTeamsModel, TraitModel, UserModel } from './models';
2
2
  export function initModels(sequelize) {
3
3
  const Block = BlockModel.initModel(sequelize);
4
4
  const Coach = CoachModel.initModel(sequelize);
@@ -6,6 +6,7 @@ export function initModels(sequelize) {
6
6
  const Draft = DraftModel.initModel(sequelize);
7
7
  const DraftPick = DraftPickModel.initModel(sequelize);
8
8
  const Event = EventModel.initModel(sequelize);
9
+ const EventTrait = EventTraitModel.initModel(sequelize);
9
10
  const Iteration = IterationModel.initModel(sequelize);
10
11
  const League = LeagueModel.initModel(sequelize);
11
12
  const LiberoReplacement = LiberoReplacementModel.initModel(sequelize);
@@ -16,6 +17,7 @@ export function initModels(sequelize) {
16
17
  const PerformanceStats = PerformanceStatsModel.initModel(sequelize);
17
18
  const Player = PlayerModel.initModel(sequelize);
18
19
  const PlayerTeam = PlayerTeamModel.initModel(sequelize);
20
+ const PlayerTrait = PlayerTraitModel.initModel(sequelize);
19
21
  const Rally = RallyModel.initModel(sequelize);
20
22
  const RallyPosition = RallyPositionModel.initModel(sequelize);
21
23
  const Reception = ReceptionModel.initModel(sequelize);
@@ -31,6 +33,7 @@ export function initModels(sequelize) {
31
33
  const Tournament = TournamentModel.initModel(sequelize);
32
34
  const TournamentMatch = TournamentMatchModel.initModel(sequelize);
33
35
  const TournamentTeams = TournamentTeamsModel.initModel(sequelize);
36
+ const Trait = TraitModel.initModel(sequelize);
34
37
  const User = UserModel.initModel(sequelize);
35
38
  Draft.hasMany(DraftPick, { as: 'DraftPicks', foreignKey: 'draft_id' });
36
39
  DraftPick.belongsTo(Draft, { as: 'draft', foreignKey: 'draft_id' });
@@ -41,6 +44,12 @@ export function initModels(sequelize) {
41
44
  Block.belongsTo(Player, { as: 'Blocker_3', foreignKey: 'blocker_3' });
42
45
  Block.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
43
46
  Block.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
47
+ Block.belongsToMany(Trait, {
48
+ as: 'Traits',
49
+ through: EventTrait,
50
+ foreignKey: 'event_id',
51
+ otherKey: 'trait_id'
52
+ });
44
53
  Coach.belongsTo(Country, { as: 'country', foreignKey: 'country_id' });
45
54
  Coach.hasMany(Team, { as: 'Teams', foreignKey: 'coach_id' });
46
55
  Country.hasMany(Coach, { as: 'Coaches', foreignKey: 'country_id' });
@@ -49,6 +58,13 @@ export function initModels(sequelize) {
49
58
  Country.hasMany(Team, { as: 'Teams', foreignKey: 'country_id' });
50
59
  Event.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
51
60
  Event.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
61
+ Event.belongsToMany(Trait, {
62
+ as: 'Traits',
63
+ through: EventTrait,
64
+ foreignKey: 'event_id',
65
+ otherKey: 'trait_id'
66
+ });
67
+ EventTrait.belongsTo(Trait, { as: 'trait', foreignKey: 'trait_id' });
52
68
  Iteration.hasMany(Season, { as: 'Seasons', foreignKey: 'iteration' });
53
69
  Iteration.hasOne(Tournament, { as: 'Tournament', foreignKey: 'iteration' });
54
70
  League.belongsTo(Country, { as: 'country', foreignKey: 'country_id' });
@@ -119,8 +135,15 @@ export function initModels(sequelize) {
119
135
  foreignKey: 'player_id',
120
136
  otherKey: 'rally_id'
121
137
  });
138
+ Player.belongsToMany(Trait, {
139
+ as: 'Traits',
140
+ through: PlayerTrait,
141
+ foreignKey: 'player_id',
142
+ otherKey: 'trait_id'
143
+ });
122
144
  PlayerTeam.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
123
145
  PlayerTeam.belongsTo(Team, { as: 'team', foreignKey: 'team_id' });
146
+ PlayerTrait.belongsTo(Trait, { as: 'trait', foreignKey: 'trait_id' });
124
147
  Rally.belongsTo(MatchSet, { as: 'match_set', foreignKey: 'match_set_id' });
125
148
  Rally.belongsTo(Team, { as: 'servingTeam', foreignKey: 'serving_team' });
126
149
  Rally.hasMany(Block, { as: 'Blocks', foreignKey: 'rally_id' });
@@ -143,6 +166,12 @@ export function initModels(sequelize) {
143
166
  RallyPosition.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
144
167
  Reception.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
145
168
  Reception.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
169
+ Reception.belongsToMany(Trait, {
170
+ as: 'Traits',
171
+ through: EventTrait,
172
+ foreignKey: 'event_id',
173
+ otherKey: 'trait_id'
174
+ });
146
175
  Score.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
147
176
  Score.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
148
177
  Score.belongsTo(Team, { as: 'team', foreignKey: 'team_id' });
@@ -163,10 +192,28 @@ export function initModels(sequelize) {
163
192
  SeasonTeams.belongsTo(Team, { as: 'team', foreignKey: 'team_id' });
164
193
  Serve.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
165
194
  Serve.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
195
+ Serve.belongsToMany(Trait, {
196
+ as: 'Traits',
197
+ through: EventTrait,
198
+ foreignKey: 'event_id',
199
+ otherKey: 'trait_id'
200
+ });
166
201
  Set.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
167
202
  Set.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
203
+ Set.belongsToMany(Trait, {
204
+ as: 'Traits',
205
+ through: EventTrait,
206
+ foreignKey: 'event_id',
207
+ otherKey: 'trait_id'
208
+ });
168
209
  Spike.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
169
210
  Spike.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
211
+ Spike.belongsToMany(Trait, {
212
+ as: 'Traits',
213
+ through: EventTrait,
214
+ foreignKey: 'event_id',
215
+ otherKey: 'trait_id'
216
+ });
170
217
  Substitution.belongsTo(Player, { as: 'player', foreignKey: 'player_id' });
171
218
  Substitution.belongsTo(Player, { as: 'playerOut', foreignKey: 'player_out' });
172
219
  Substitution.belongsTo(Rally, { as: 'rally', foreignKey: 'rally_id' });
@@ -216,6 +263,20 @@ export function initModels(sequelize) {
216
263
  TournamentMatch.belongsTo(Tournament, { as: 'tournament', foreignKey: 'tournament_id' });
217
264
  TournamentTeams.belongsTo(Team, { as: 'team', foreignKey: 'team_id' });
218
265
  TournamentTeams.belongsTo(Tournament, { as: 'tournament', foreignKey: 'tournament_id' });
266
+ Trait.belongsToMany(Event, {
267
+ as: 'Events',
268
+ through: EventTrait,
269
+ foreignKey: 'trait_id',
270
+ otherKey: 'event_id'
271
+ });
272
+ Trait.belongsToMany(Player, {
273
+ as: 'Players',
274
+ through: PlayerTrait,
275
+ foreignKey: 'trait_id',
276
+ otherKey: 'player_id'
277
+ });
278
+ Trait.hasMany(PlayerTrait, { as: 'PlayerTraits', foreignKey: 'trait_id' });
279
+ Trait.hasMany(EventTrait, { as: 'EventTraits', foreignKey: 'trait_id' });
219
280
  return {
220
281
  Block,
221
282
  Coach,
@@ -1,6 +1,6 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { Model, Optional } from 'sequelize';
3
- import { CourtTarget, EventType, PlayerId, PlayerModel, RallyId, RallyModel, TraitType } from '.';
3
+ import { CourtTarget, EventType, PlayerId, PlayerModel, RallyId, RallyModel, TraitId, TraitModel } from '.';
4
4
  export interface BlockAttributes {
5
5
  event_id: string;
6
6
  rally_id: string;
@@ -36,7 +36,6 @@ export declare class BlockModel extends Model<BlockAttributes, BlockCreationAttr
36
36
  blocker_3?: string;
37
37
  modifier: number;
38
38
  score: number;
39
- active_traits: TraitType[];
40
39
  player: PlayerModel;
41
40
  getPlayer: Sequelize.BelongsToGetAssociationMixin<PlayerModel>;
42
41
  setPlayer: Sequelize.BelongsToSetAssociationMixin<PlayerModel, PlayerId>;
@@ -57,5 +56,16 @@ export declare class BlockModel extends Model<BlockAttributes, BlockCreationAttr
57
56
  getRally: Sequelize.BelongsToGetAssociationMixin<RallyModel>;
58
57
  setRally: Sequelize.BelongsToSetAssociationMixin<RallyModel, RallyId>;
59
58
  createRally: Sequelize.BelongsToCreateAssociationMixin<RallyModel>;
59
+ Traits: TraitModel[];
60
+ getTraits: Sequelize.BelongsToManyGetAssociationsMixin<TraitModel>;
61
+ setTraits: Sequelize.BelongsToManySetAssociationsMixin<TraitModel, TraitId>;
62
+ addTrait: Sequelize.BelongsToManyAddAssociationMixin<TraitModel, TraitId>;
63
+ addTraits: Sequelize.BelongsToManyAddAssociationsMixin<TraitModel, TraitId>;
64
+ createTrait: Sequelize.BelongsToManyCreateAssociationMixin<TraitModel>;
65
+ removeTrait: Sequelize.BelongsToManyRemoveAssociationMixin<TraitModel, TraitId>;
66
+ removeTraits: Sequelize.BelongsToManyRemoveAssociationsMixin<TraitModel, TraitId>;
67
+ hasTrait: Sequelize.BelongsToManyHasAssociationMixin<TraitModel, TraitId>;
68
+ hasTraits: Sequelize.BelongsToManyHasAssociationsMixin<TraitModel, TraitId>;
69
+ countTraits: Sequelize.BelongsToManyCountAssociationsMixin;
60
70
  static initModel(sequelize: Sequelize.Sequelize): typeof BlockModel;
61
71
  }
@@ -0,0 +1,23 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { Model } from 'sequelize';
3
+ import type { EventId, EventModel, TraitId, TraitModel } from '.';
4
+ export interface EventTraitAttributes {
5
+ event_id: string;
6
+ trait_id: string;
7
+ }
8
+ export type EventTraitPk = 'event_id' | 'trait_id';
9
+ export type EventTraitId = EventTraitModel[EventTraitPk];
10
+ export type EventTraitCreationAttributes = EventTraitAttributes;
11
+ export declare class EventTraitModel extends Model<EventTraitAttributes, EventTraitCreationAttributes> implements EventTraitAttributes {
12
+ event_id: string;
13
+ trait_id: string;
14
+ event: EventModel;
15
+ getEvent: Sequelize.BelongsToGetAssociationMixin<EventModel>;
16
+ setEvent: Sequelize.BelongsToSetAssociationMixin<EventModel, EventId>;
17
+ createEvent: Sequelize.BelongsToCreateAssociationMixin<EventModel>;
18
+ trait: TraitModel;
19
+ getTrait: Sequelize.BelongsToGetAssociationMixin<TraitModel>;
20
+ setTrait: Sequelize.BelongsToSetAssociationMixin<TraitModel, TraitId>;
21
+ createTrait: Sequelize.BelongsToCreateAssociationMixin<TraitModel>;
22
+ static initModel(sequelize: Sequelize.Sequelize): typeof EventTraitModel;
23
+ }