示例#1
0
    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);
        }
    }
示例#2
0
    /// <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);
        }
    }
示例#3
0
    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;
    }
示例#4
0
    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;
            }
        });
    }
示例#5
0
    /// <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);
        }
    }