public CharacterData(CharacterDataTemplate templateArg) { Setup(templateArg.template); // set color hex code from the template's character color characterInfo.characterHexColorCode = ColorUtility.ToHtmlStringRGB(templateArg.characterInfoColor); if (templateArg.favoredWeaponTypesTemplate != null) { favoredWeaponTypes = new WeaponTypeSet(templateArg.favoredWeaponTypesTemplate); } if (templateArg.characterInventoryTemplate != null) { characterInventory = new CharacterInventory(templateArg.characterInventoryTemplate); } factionReputation = new FactionReputation(templateArg.factionReputationTemplate); activeAbilityLoadout = new ActiveAbilityLoadout(); foreach (ActiveAbilityTemplate iterAbilityTemp in templateArg.activeAbilityTemplates) { activeAbilityLoadout.AddActiveAbility(new ActiveAbility(iterAbilityTemp)); } outfitLoadout = new CharacterOutfitLoadout(); foreach (CharacterOutfitTemplate iterTemp in templateArg.outfitTemplates) { outfitLoadout.AddOutfit(iterTemp); } }
/// <summary> /// Returns the character data based on the given character ID. /// </summary> /// <param name="charIdArg"></param> /// <returns></returns> private CharacterData GetCharacterDataFromId(string charIdArg) { // get character from party characters CharacterData partyCharData = _gameManager.GetPartyCharacterFromID(charIdArg); // if char data was found in the party if (partyCharData != null) { // return party char data return(partyCharData); } // load character data template CharacterDataTemplate charDataTemp = AssetRefMethods. LoadBundleAssetCharacterDataTemplate(charIdArg); // if loaded data WAS found if (charDataTemp != null) { // return data based on loaded template return(new CharacterData(charDataTemp)); } // else NO data found else { // return NULL data return(null); } }
public override void Initialize(LDBlock data) { bool found = false; LDCharacter OwningCharacter = new LDCharacter(); foreach (LDCharacter Character in data.characters) { if (Character.role == (byte)Role) { OwningCharacter = Character; found = true; } } if(!found) { DestroyImmediate(gameObject); return; } GridPos = (Vector2Int)GameStateManager.Instance.GetGridManager().WorldToCell(transform.position); transform.position = GameStateManager.Instance.GetGridManager().CellToWorld((Vector3Int)GridPos); GameStateManager.Instance.GetGridManager().setOccupied((Vector3Int)GridPos, true); Animator = GetComponentInChildren<Animator>(); AbilitySystem = new AbilitySystem(this); Name = OwningCharacter.name; Color = (CharacterColor)OwningCharacter.color; if (OwningCharacter.timeLine != null) { TimeLine = OwningCharacter.timeLine.ToList(); } else { TimeLine = new List<LDInputFrame>(); } CharacterDataTemplate Data = CharacterDataTemplate.Load(); if (OwningCharacter.attributes == null || OwningCharacter.attributes.Length == 0) { // NOTE: First time, Playing from start! Data.GetStartingAttributes(Role) .ForEach(Entry => AbilitySystem.RegisterAttribute(Entry.Attribute, Entry.Value)); } else { AbilitySystem.RegisterLDAttributes(OwningCharacter.attributes); } Data.GetAbilities(Role) .ForEach(Ability => AbilitySystem.GrantAbility(Ability)); Data.GetStartingEffects(Role) .ForEach(Effect => AbilitySystem.TryApplyEffectToSelf(Effect)); AbilitySystem.RegisterOnAttributeChanged(Attribute.Health, OnDamageTaken); CurrentHealth = AbilitySystem.GetAttributeValue(Attribute.Health).Value; AbilitySystem.RegisterOnAttributeChanged(Attribute.MaxHealth, UpdateMaxHealth); MaxHealth = AbilitySystem.GetAttributeValue(Attribute.MaxHealth).Value; }
public override void Initialize(LDBlock _data) { GridPos = (Vector2Int)Grid.WorldToCell(transform.position); transform.position = Grid.CellToWorld((Vector3Int)GridPos); Grid.setOccupied((Vector3Int)GridPos, true); Animator = GetComponentInChildren <Animator>(); AbilitySystem = new AbilitySystem(this); CharacterDataTemplate Data = CharacterDataTemplate.Load(); Data.GetMonsterStartingAttributes(Role) .ForEach(Entry => AbilitySystem.RegisterAttribute(Entry.Attribute, Entry.Value)); Data.GetMonsterAbilities(Role) .ForEach(Ability => AbilitySystem.GrantAbility(Ability)); Data.GetMonsterStartingEffects(Role) .ForEach(Effect => AbilitySystem.TryApplyEffectToSelf(Effect)); AbilitySystem.RegisterOnAttributeChanged(Attribute.Health, OnDamageTaken); CurrentHealth = AbilitySystem.GetAttributeValue(Attribute.Health).Value; AbilitySystem.RegisterOnAttributeChanged(Attribute.MaxHealth, UpdateMaxHealth); MaxHealth = AbilitySystem.GetAttributeValue(Attribute.MaxHealth).Value; AbilitySystem .GetGrantedAbilityTypes() .ForEach(Ability => { if (!Ability.Is(TypeTag.MoveAbility)) { MainAbility = Ability; } }); }
/// <summary> /// Returns the name of the character asscoaited with the given ID. /// </summary> /// <param name="charIdArg"></param> /// <returns></returns> private string GetCharacterName(string charIdArg) { // load character template from given ID CharacterDataTemplate charTemp = AssetRefMethods. LoadBundleAssetCharacterDataTemplate(charIdArg); // if a character was found if (charTemp != null) { // return loaded char's name return(charTemp.template.characterInfo.characterName); } // else NO character template could be found else { // print warning to log Debug.LogWarning("Problem in GetCharacterName(). No character " + $"associated with ID: {charIdArg}"); // return some default value return(string.Empty); } }