class.component.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { Component } from '@angular/core';
  2. import { ClassService } from 'src/services/class/class.service';
  3. import { DataService } from 'src/services/data/data.service';
  4. import { ModalService } from 'src/services/modal/modal.service';
  5. import { AbilityModalComponent } from '../../journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component';
  6. import { Ability, Trait } from 'src/interfaces/interfaces';
  7. import { TraitModalComponent } from '../../journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component';
  8. @Component({
  9. selector: 'class',
  10. templateUrl: './class.component.html',
  11. styleUrl: './class.component.scss',
  12. })
  13. export class ClassComponent {
  14. public className: string = '';
  15. public class: any;
  16. public constructor(
  17. private classAccessor: ClassService,
  18. private dataAccessor: DataService,
  19. private modalAccessor: ModalService,
  20. ) {}
  21. public ngOnInit(): void {
  22. this.className = this.dataAccessor.characterData.class;
  23. this.class = this.classAccessor.getClassDetails(this.className);
  24. }
  25. public addFeature(feature: any) {
  26. if ('ability' in feature) {
  27. this.addAbility(feature);
  28. } else {
  29. this.addTrait(feature);
  30. }
  31. }
  32. private addAbility(feature: any) {
  33. let index = feature.name.indexOf('Optional');
  34. if (index > -1) {
  35. feature.name = feature.name.slice(index, 8);
  36. }
  37. let ability: Ability = {
  38. name: feature.name,
  39. shortDescription: '',
  40. longDescription: feature.description,
  41. cost: '',
  42. charges: 0,
  43. currentlyUsedCharges: 0,
  44. };
  45. this.modalAccessor.openModal(AbilityModalComponent, {
  46. ability: ability,
  47. isUpdate: true,
  48. isAddedFromCharacter: true,
  49. });
  50. const resultSubscription = this.modalAccessor.result$.subscribe(
  51. (result) => {
  52. if (result.state === 'update' || result.state === 'add') {
  53. let ability = this.dataAccessor.abilities;
  54. ability.push(result.data);
  55. this.dataAccessor.abilities = ability;
  56. }
  57. resultSubscription.unsubscribe();
  58. },
  59. );
  60. }
  61. private addTrait(feature: any) {
  62. let index = feature.name.indexOf('Optional');
  63. if (index > -1) {
  64. feature.name = feature.name.slice(index, 8);
  65. }
  66. let trait: Trait = {
  67. name: feature.name,
  68. shortDescription: '',
  69. longDescription: feature.description,
  70. origin: 'Class',
  71. };
  72. this.modalAccessor.openModal(TraitModalComponent, {
  73. trait: trait,
  74. isUpdate: true,
  75. isAddedFromCharacter: true,
  76. });
  77. const resultSubscription = this.modalAccessor.result$.subscribe(
  78. (result) => {
  79. if (result.state === 'update' || result.state === 'add') {
  80. let traits = this.dataAccessor.traits;
  81. traits.push(result.data);
  82. this.dataAccessor.traits = traits;
  83. }
  84. resultSubscription.unsubscribe();
  85. },
  86. );
  87. }
  88. }