class.component.ts 2.9 KB

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