private void LoadStartingAbilitiesForSpecies(EntityTemplate species) { GlobalHelper.DestroyAllChildren(SpeciesStartingAbilityParent); var startingAbilities = new List <AbilityTemplate>(); foreach (var bodyPartName in species.Parts) { var partAbilities = AbilityStore.GetAbilitiesByBodyPart(bodyPartName); if (partAbilities == null) { continue; } startingAbilities.AddRange(partAbilities); } foreach (var ability in startingAbilities) { var instance = Instantiate(StartingAbilityPrefab, StartingAbilityPrefab.transform.position, Quaternion.identity); instance.transform.SetParent(SpeciesStartingAbilityParent); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[0].text = GlobalHelper.CapitalizeAllWords(ability.Name); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[1].text = ability.Description; } }
//todo might move this out of here and just have in entity private Entity.AbilityDictionary BuildAbilityDictionary() { var abilities = new Entity.AbilityDictionary(); var freeAbility = AbilityStore.CreateAbility(_selectedFreeAbility, _player); if (freeAbility != null) { abilities.Add(freeAbility.Name, freeAbility); } var startingBodyPartAbilities = (from partAbilities in _playerTemplate.Parts.Select(AbilityStore.GetAbilitiesByBodyPart) where partAbilities != null from ability in partAbilities where ability.StartingAbility select ability).ToList(); foreach (var ability in startingBodyPartAbilities) { if (abilities.ContainsKey(ability.Name)) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } var startingBackgroundAbilities = AbilityStore.GetAbilitiesByBackground(_selectedBackground); foreach (var ability in startingBackgroundAbilities) { if (abilities.ContainsKey(ability.Name) || !ability.StartingAbility) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } var startingDamageTypeAbilities = AbilityStore.GetAllDamageTypeAbilities(); foreach (var damageType in startingDamageTypeAbilities.Keys) { foreach (var ability in startingDamageTypeAbilities[damageType]) { if (abilities.ContainsKey(ability.Name) || !ability.StartingAbility) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } } return(abilities); }
public void AbilitySelected(string abilityName) { var selectedAbility = AbilityStore.GetAbilityByName(abilityName); if (selectedAbility == null) { return; } DisplaySelectedAbilityDescription(selectedAbility.Description); _selectedFreeAbility = selectedAbility; }
private void LoadAbilitiesForAbilitySelectScreen() { GlobalHelper.DestroyAllChildren(AbilityCategoryParent); var bodyPartAbilities = (from partAbilities in _playerTemplate.Parts.Select(AbilityStore.GetAbilitiesByBodyPart) where partAbilities != null from ability in partAbilities where !ability.StartingAbility select ability).ToList(); if (bodyPartAbilities.Count > 0) { PopulateAbilityCategory("Species", bodyPartAbilities); } var backgroundAbilities = AbilityStore.GetAbilitiesByBackground(_selectedBackground); foreach (var ability in backgroundAbilities.ToArray().Where(ability => ability.StartingAbility)) { backgroundAbilities.Remove(ability); } if (backgroundAbilities.Count > 0) { PopulateAbilityCategory(_selectedBackground.Name, backgroundAbilities); } var damageTypeAbilities = AbilityStore.GetAllDamageTypeAbilities(); if (damageTypeAbilities.Count < 1) { return; } foreach (var damageType in damageTypeAbilities) { var abilityList = new List <AbilityTemplate>(damageType.Value); foreach (var ability in abilityList.ToArray().Where(ability => ability.StartingAbility)) { abilityList.Remove(ability); } if (abilityList.Count < 1) { continue; } PopulateAbilityCategory(damageType.Key.ToString(), abilityList); } }
private void LoadStartingAbilitiesForBackground(CharacterBackground background) { GlobalHelper.DestroyAllChildren(BackgroundStartingAbilityParent); var backgroundAbilities = AbilityStore.GetAbilitiesByBackground(background); foreach (var ability in backgroundAbilities) { var instance = Instantiate(StartingAbilityPrefab, StartingAbilityPrefab.transform.position, Quaternion.identity); instance.transform.SetParent(BackgroundStartingAbilityParent); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[0].text = GlobalHelper.CapitalizeAllWords(ability.Name); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[1].text = ability.Description; } }
public static Entity ConvertToEntity(EntitySdo entitySdo) { Entity entity; entity = new Entity(entitySdo.Id, entitySdo.PrefabPath, entitySdo.IsPlayer); entity.PrefabPath = entitySdo.PrefabPath; entity.TotalBodyPartCoverage = entitySdo.TotalBodyPartCoverage; entity.Level = entitySdo.Level; entity.Xp = entitySdo.Xp; entity.Strength = entitySdo.Strength; entity.Agility = entitySdo.Agility; entity.Constitution = entitySdo.Constitution; entity.Intelligence = entitySdo.Intelligence; entity.MaxHp = entitySdo.MaxHp; entity.CurrentHp = entitySdo.CurrentHp; entity.Speed = entitySdo.Speed; entity.Defense = entitySdo.Defense; entity.Body = entitySdo.Body; entity.EntityType = entitySdo.EntityType; entity.Classification = entitySdo.Classification; entity.Fluff = entitySdo.Fluff; entity.Mobile = entitySdo.Mobile; entity.ToppingDropped = ToppingSdo.ConvertToTopping(entitySdo.ToppingDropped); entity.ToppingCounts = entitySdo.ToppingCounts; entity.EntityReputation = entitySdo.Reputation; entity.Abilities = new Entity.AbilityDictionary(); if (string.IsNullOrEmpty(entitySdo.CurrentCellId)) { entity.CurrentCell = null; entity.CurrentArea = null; entity.CurrentTile = null; } else { entity.CurrentCell = WorldData.Instance.MapDictionary[entitySdo.CurrentCellId]; entity.CurrentArea = entity.CurrentCell.GetAreaById(entitySdo.CurrentAreaId); entity.CurrentTile = entity.CurrentArea?.GetTileById(entitySdo.CurrentTileId); } entity.CurrentPosition = new Vector3(entitySdo.CurrentPosition.Y, entitySdo.CurrentPosition.X, entitySdo.CurrentPosition.Z); foreach (var itemId in entitySdo.InventoryItemIds) { if (itemId == Guid.Empty) { continue; } var item = WorldData.Instance.Items[itemId]; entity.Inventory.Add(item.Id, item); } foreach (var equipped in entitySdo.EquippedIds) { if (equipped.Value == Guid.Empty) { continue; } var item = WorldData.Instance.Items[equipped.Value]; if (entity.Equipped.ContainsKey(equipped.Key)) { entity.Equipped[equipped.Key] = item; } else { entity.Equipped.Add(equipped.Key, item); } } if (entitySdo.AbilityNames != null && entitySdo.AbilityNames.Count > 0) { foreach (var abilityName in entitySdo.AbilityNames) { var template = AbilityStore.GetAbilityByName(abilityName); var ability = AbilityStore.CreateAbility(template, entity); entity.Abilities.Add(abilityName, ability); } } return(entity); }