123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- import { Component } from '@angular/core';
- import { DataService } from 'src/services/data/data.service';
- import { Router } from '@angular/router';
- @Component({
- selector: 'app-character-creator',
- templateUrl: './character-creator.component.html',
- styleUrls: ['./character-creator.component.scss'],
- })
- export class CharacterCreatorComponent {
- public constructor(
- public dataAccessor: DataService,
- private Router: Router
- ) {}
- public characterName: string = '';
- public async createCharacter(): Promise<void> {
- // Creates a new entry in the character collection
- this.dataAccessor.addData('characters', { name: this.characterName });
- // Creates a new collection with the character name
- this.createNewCharacterInDatabase().then(() => {
- // Die Funktion muss ertstmal durchlaufen, bevor der Character ausgewählt werden kann
- sessionStorage.setItem('characterName', this.characterName);
- this.dataAccessor.dataLoaded = false;
- this.Router.navigate(['journal']);
- });
- }
- public async createNewCharacterInDatabase(): Promise<void> {
- // TODO: Für alle Daten einen eigenen Key/Value Eintrag anlegen addData(collection: string, data: any, key?: string): void
- return Promise.all([
- // Character Data
- this.dataAccessor.addData(
- this.characterName,
- {
- class: '',
- subclass: '',
- race: '',
- background: '',
- level: 1,
- experience: 0,
- },
- 'characterData'
- ),
- // Character Attributes
- this.dataAccessor.addData(
- this.characterName,
- {
- strength: { name: 'strength', value: 10, proficiency: false },
- dexterity: { name: 'dexterity', value: 10, proficiency: false },
- constitution: { name: 'constitution', value: 10, proficiency: false },
- intelligence: { name: 'intelligence', value: 10, proficiency: false },
- wisdom: { name: 'wisdom', value: 10, proficiency: false },
- charisma: { name: 'charisma', value: 10, proficiency: false },
- },
- 'attributes'
- ),
- // Character Skills
- this.dataAccessor.addData(
- this.characterName,
- {
- acrobatics: { name: 'acrobatics', proficiency: false },
- animalHandling: { name: 'animalHandling', proficiency: false },
- arcana: { name: 'arcana', proficiency: false },
- athletics: { name: 'athletics', proficiency: false },
- deception: { name: 'deception', proficiency: false },
- history: { name: 'history', proficiency: false },
- insight: { name: 'insight', proficiency: false },
- intimidation: { name: 'intimidation', proficiency: false },
- investigation: { name: 'investigation', proficiency: false },
- medicine: { name: 'medicine', proficiency: false },
- nature: { name: 'nature', proficiency: false },
- perception: { name: 'perception', proficiency: false },
- performance: { name: 'performance', proficiency: false },
- persuasion: { name: 'persuasion', proficiency: false },
- religion: { name: 'religion', proficiency: false },
- sleightOfHand: { name: 'sleightOfHand', proficiency: false },
- stealth: { name: 'stealth', proficiency: false },
- survival: { name: 'survival', proficiency: false },
- },
- 'skills'
- ),
- // Character Combat Stats
- this.dataAccessor.addData(
- this.characterName,
- {
- armorClass: 10,
- initiative: 0,
- movement: 30,
- deathSaves: [0, 0],
- proficiencyBonus: 2,
- conditions: [],
- exhaustion: 0,
- inspiration: false,
- },
- 'combatStats'
- ),
- // Character Hit Points
- this.dataAccessor.addData(
- this.characterName,
- {
- hitPoints: {
- maxHitPoints: 10,
- currentHitPoints: 10,
- temporaryHitPoints: 0,
- },
- hitDice: {
- hitDiceNumber: 1,
- hitDiceType: 10,
- },
- },
- 'hitPoints'
- ),
- // Character Abilities
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'abilities'
- ),
- // Character Traits
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'traits'
- ),
- // Character Proficiencies
- this.dataAccessor.addData(
- this.characterName,
- {
- armor: {
- light: false,
- medium: false,
- heavy: false,
- },
- weapons: {
- simple: false,
- martial: false,
- other: [],
- },
- tools: [],
- languages: ['Gemeinsprache'],
- },
- 'proficiencies'
- ),
- // Character Spellslots
- this.dataAccessor.addData(
- this.characterName,
- {
- spellslots: [],
- showSpellslots: false,
- },
- 'spellslots'
- ),
- // Ki Points
- this.dataAccessor.addData(
- this.characterName,
- {
- totalPoints: 0,
- usedPoints: 0,
- showKiPoints: false,
- },
- 'kiPoints'
- ),
- // Character Appearance
- this.dataAccessor.addData(
- this.characterName,
- {
- age: '',
- height: '',
- weight: '',
- eyes: '',
- skin: '',
- hair: '',
- },
- 'appearance'
- ),
- // Weapons
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'favoriteWeapons'
- ),
- // WEAPONS AND ARMOR
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'weaponsAndArmor'
- ),
- // MISCELLANEOUS
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'miscellaneous'
- ),
- // CONSUMABLES
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'consumables'
- ),
- // MONEY
- this.dataAccessor.addData(
- this.characterName,
- {
- platinum: 0,
- gold: 0,
- electrum: 0,
- silver: 0,
- copper: 0,
- },
- 'money'
- ),
- // FOOD
- this.dataAccessor.addData(
- this.characterName,
- {
- data: [],
- },
- 'food'
- ),
- // Favorite Spells
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'favoriteSpells'
- ),
- // Spells
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel0'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel1'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel2'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel3'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel4'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel5'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel6'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel7'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel8'
- ),
- this.dataAccessor.addData(
- this.characterName,
- {
- spells: [],
- },
- 'spellLevel9'
- ),
- // Notes
- // Maps
- // NPCs
- // Quests
- ]).then(() => {});
- }
- }
|