icon load fix, tooltip fix
This commit is contained in:
parent
e3dc37e3fd
commit
70a7a4774a
@ -274,7 +274,11 @@ namespace Kryz.CharacterStats.Examples
|
||||
}
|
||||
else
|
||||
{
|
||||
equipmentData.equippedItems[i].Icon = ItemIndexer.Instance.Items[equipmentData.equippedItems[i].templateIndex].Icon;
|
||||
if (equipmentData.equippedItems[i].templateIndex >= 0)
|
||||
equipmentData.equippedItems[i].Icon = ItemIndexer.Instance.Items[equipmentData.equippedItems[i].templateIndex].Icon;
|
||||
else
|
||||
equipmentData.equippedItems[i].Icon = Resources.Load<Sprite>(equipmentData.equippedItems[i].IconPath);
|
||||
|
||||
equipmentSlots[i].Item = equipmentData.equippedItems[i];
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,13 +125,14 @@ public class EquippedItemTooltip : MonoBehaviour
|
||||
|
||||
sb.Length = 0;
|
||||
|
||||
//TODO: Add new stats
|
||||
|
||||
AddStatText(item.AttackDamageBonus, " Attack Damage");
|
||||
AddStatText(item.SpellDamageBonus, " Spell Damage");
|
||||
AddStatText(item.CritChanceBonus, "% Base Crit Chance");
|
||||
AddStatText(item.CritDamageBonus, "% Base Crit Damage");
|
||||
AddStatText(item.MaxHealthBonus, " Max Health");
|
||||
AddStatText(item.HealthRegenBonus, " Health Regen");
|
||||
AddStatText(item.MaxManaBonus, " Max Mana");
|
||||
AddStatText(item.ManaRegenBonus, " Mana Regen");
|
||||
AddStatText(item.ArmorBonus, " Armor");
|
||||
AddStatText(item.MagicResistanceBonus, " Magic Resistance");
|
||||
|
||||
@ -139,11 +140,23 @@ public class EquippedItemTooltip : MonoBehaviour
|
||||
|
||||
AddStatText(item.AttackDamagePercentBonus * 100, " % Attack Damage");
|
||||
AddStatText(item.SpellDamagePercentBonus * 100, " % Spell Damage");
|
||||
AddStatText(item.AttackSpeedPercentBonus * 100, " % Attack Speed");
|
||||
AddStatText(item.CritChancePercentBonus * 100, "% Increased Crit Chance");
|
||||
AddStatText(item.CritDamagePercentBonus * 100, "% Increased Crit Damage");
|
||||
AddStatText(item.MaxHealthPercentBonus * 100, " % Max Health");
|
||||
AddStatText(item.HealthRegenPercentBonus * 100, " % Health Regen");
|
||||
AddStatText(item.MaxManaPercentBonus * 100, " % Max Mana");
|
||||
AddStatText(item.ManaRegenPercentBonus * 100, " % ManaRegen");
|
||||
AddStatText(item.ArmorPercentBonus * 100, " % Armor");
|
||||
AddStatText(item.MagicResistancePercentBonus * 100, " % Magic Resistance");
|
||||
AddStatText(item.DodgeChancePercentBonus * 100, " % Dodge Chance");
|
||||
AddStatText(item.BlockChancePercentBonus * 100, " % Block Chance");
|
||||
AddStatText(item.BlockEffectivenessPercentBonus * 100, " % Block Effectiveness");
|
||||
AddStatText(item.AreaEffectivenessPercentBonus * 100, " % Area Effectiveness");
|
||||
AddStatText(item.CooldownReductionPercentBonus * 100, " % Cooldown Reduction");
|
||||
AddStatText(item.MovementSpeedPercentBonus * 100, " % Movement Speed");
|
||||
AddStatText(item.ReputationGainIncreasePercentBonus * 100, " % Reputation Gain Increase");
|
||||
AddStatText(item.GoldCostReductionPercentBonus * 100, " % Gold Cost Reduction");
|
||||
|
||||
if (!string.IsNullOrEmpty(itemFromVendor.description))
|
||||
{
|
||||
|
||||
@ -67,13 +67,14 @@ namespace Kryz.CharacterStats.Examples
|
||||
|
||||
sb.Length = 0;
|
||||
|
||||
|
||||
|
||||
AddStatText(item.AttackDamageBonus, " Attack Damage");
|
||||
AddStatText(item.SpellDamageBonus, " Spell Damage");
|
||||
AddStatText(item.CritChanceBonus, "% Base Crit Chance");
|
||||
AddStatText(item.CritDamageBonus, "% Base Crit Damage");
|
||||
AddStatText(item.MaxHealthBonus, " Max Health");
|
||||
AddStatText(item.HealthRegenBonus, " Health Regen");
|
||||
AddStatText(item.MaxManaBonus, " Max Mana");
|
||||
AddStatText(item.ManaRegenBonus, " Mana Regen");
|
||||
AddStatText(item.ArmorBonus, " Armor");
|
||||
AddStatText(item.MagicResistanceBonus, " Magic Resistance");
|
||||
|
||||
@ -81,11 +82,23 @@ namespace Kryz.CharacterStats.Examples
|
||||
|
||||
AddStatText(item.AttackDamagePercentBonus * 100, " % Attack Damage");
|
||||
AddStatText(item.SpellDamagePercentBonus * 100, " % Spell Damage");
|
||||
AddStatText(item.AttackSpeedPercentBonus * 100, " % Attack Speed");
|
||||
AddStatText(item.CritChancePercentBonus * 100, "% Increased Crit Chance");
|
||||
AddStatText(item.CritDamagePercentBonus * 100, "% Increased Crit Damage");
|
||||
AddStatText(item.MaxHealthPercentBonus * 100, " % Max Health");
|
||||
AddStatText(item.HealthRegenPercentBonus * 100, " % Health Regen");
|
||||
AddStatText(item.MaxManaPercentBonus * 100, " % Max Mana");
|
||||
AddStatText(item.ManaRegenPercentBonus * 100, " % ManaRegen");
|
||||
AddStatText(item.ArmorPercentBonus * 100, " % Armor");
|
||||
AddStatText(item.MagicResistancePercentBonus * 100, " % Magic Resistance");
|
||||
AddStatText(item.DodgeChancePercentBonus * 100, " % Dodge Chance");
|
||||
AddStatText(item.BlockChancePercentBonus * 100, " % Block Chance");
|
||||
AddStatText(item.BlockEffectivenessPercentBonus * 100, " % Block Effectiveness");
|
||||
AddStatText(item.AreaEffectivenessPercentBonus * 100, " % Area Effectiveness");
|
||||
AddStatText(item.CooldownReductionPercentBonus * 100, " % Cooldown Reduction");
|
||||
AddStatText(item.MovementSpeedPercentBonus * 100, " % Movement Speed");
|
||||
AddStatText(item.ReputationGainIncreasePercentBonus * 100, " % Reputation Gain Increase");
|
||||
AddStatText(item.GoldCostReductionPercentBonus * 100, " % Gold Cost Reduction");
|
||||
|
||||
if (!string.IsNullOrEmpty(itemToShow.description))
|
||||
{
|
||||
|
||||
@ -3748,9 +3748,9 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::EquippableItemGenerator
|
||||
minStatRolls: 2
|
||||
maxStatRolls: 6
|
||||
baseStatValue: 10
|
||||
baseStatValue: 1
|
||||
statVariance: 0.3
|
||||
percentStatBaseValue: 0.05
|
||||
percentStatBaseValue: 0.01
|
||||
armorWeights:
|
||||
attackDamage: 1
|
||||
spellDamage: 1
|
||||
@ -8737,6 +8737,7 @@ MonoBehaviour:
|
||||
currentlySelectedCraftingItem:
|
||||
ItemName:
|
||||
Icon: {fileID: 0}
|
||||
IconPath:
|
||||
sellPricePlayer: 0
|
||||
sellPriceVendor: 0
|
||||
description:
|
||||
@ -8779,6 +8780,7 @@ MonoBehaviour:
|
||||
currentlySelectedCraftingStatStone:
|
||||
ItemName:
|
||||
Icon: {fileID: 0}
|
||||
IconPath:
|
||||
sellPricePlayer: 0
|
||||
sellPriceVendor: 0
|
||||
description:
|
||||
|
||||
@ -78,7 +78,7 @@ Material:
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _Rotation: 89.72914
|
||||
- _Rotation: 0.019999992
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
|
||||
@ -11,6 +11,10 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
public float statVariance = 0.3f; // 30% variance
|
||||
public float percentStatBaseValue = 0.05f; // 5% base for percent stats
|
||||
|
||||
// Add this field to your EquippableItemGenerator class
|
||||
[Header("Path Mapping")]
|
||||
private Dictionary<Sprite, string> spritePathMap = new Dictionary<Sprite, string>();
|
||||
|
||||
[Header("Stat Roll Weights by Equipment Type")]
|
||||
[SerializeField] private StatWeights armorWeights = new StatWeights();
|
||||
[SerializeField] private StatWeights weaponWeights = new StatWeights();
|
||||
@ -75,127 +79,175 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
Legendary
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
UpdateListsFromResources();
|
||||
}
|
||||
|
||||
[ContextMenu("Update Lists From Resources")]
|
||||
private void UpdateListsFromResources()
|
||||
{
|
||||
// Clear existing mappings
|
||||
if (spritePathMap == null)
|
||||
spritePathMap = new Dictionary<Sprite, string>();
|
||||
spritePathMap.Clear();
|
||||
|
||||
// Armor pieces
|
||||
HelmetIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Helmets"))
|
||||
Sprite[] helmetSprites = Resources.LoadAll<Sprite>("Armor/Helmets");
|
||||
foreach (Sprite sprite in helmetSprites)
|
||||
{
|
||||
HelmetIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Helmets/{sprite.name}";
|
||||
}
|
||||
|
||||
ShoulderIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Shoulders"))
|
||||
Sprite[] shoulderSprites = Resources.LoadAll<Sprite>("Armor/Shoulders");
|
||||
foreach (Sprite sprite in shoulderSprites)
|
||||
{
|
||||
ShoulderIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Shoulders/{sprite.name}";
|
||||
}
|
||||
|
||||
ChestIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Chests"))
|
||||
Sprite[] chestSprites = Resources.LoadAll<Sprite>("Armor/Chests");
|
||||
foreach (Sprite sprite in chestSprites)
|
||||
{
|
||||
ChestIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Chests/{sprite.name}";
|
||||
}
|
||||
|
||||
BeltIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Belts"))
|
||||
Sprite[] beltSprites = Resources.LoadAll<Sprite>("Armor/Belts");
|
||||
foreach (Sprite sprite in beltSprites)
|
||||
{
|
||||
BeltIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Belts/{sprite.name}";
|
||||
}
|
||||
|
||||
LegsIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Legs"))
|
||||
Sprite[] legsSprites = Resources.LoadAll<Sprite>("Armor/Legs");
|
||||
foreach (Sprite sprite in legsSprites)
|
||||
{
|
||||
LegsIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Legs/{sprite.name}";
|
||||
}
|
||||
|
||||
BracersIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Bracers"))
|
||||
Sprite[] bracersSprites = Resources.LoadAll<Sprite>("Armor/Bracers");
|
||||
foreach (Sprite sprite in bracersSprites)
|
||||
{
|
||||
BracersIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Bracers/{sprite.name}";
|
||||
}
|
||||
|
||||
GlovesIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Gloves"))
|
||||
Sprite[] glovesSprites = Resources.LoadAll<Sprite>("Armor/Gloves");
|
||||
foreach (Sprite sprite in glovesSprites)
|
||||
{
|
||||
GlovesIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Gloves/{sprite.name}";
|
||||
}
|
||||
|
||||
BootsIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Armor/Boots"))
|
||||
Sprite[] bootsSprites = Resources.LoadAll<Sprite>("Armor/Boots");
|
||||
foreach (Sprite sprite in bootsSprites)
|
||||
{
|
||||
BootsIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Armor/Boots/{sprite.name}";
|
||||
}
|
||||
|
||||
// Two-handed weapons
|
||||
StaffIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Staffs"))
|
||||
Sprite[] staffSprites = Resources.LoadAll<Sprite>("Weapons/Staffs");
|
||||
foreach (Sprite sprite in staffSprites)
|
||||
{
|
||||
StaffIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Staffs/{sprite.name}";
|
||||
}
|
||||
|
||||
SpearIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Spears"))
|
||||
Sprite[] spearSprites = Resources.LoadAll<Sprite>("Weapons/Spears");
|
||||
foreach (Sprite sprite in spearSprites)
|
||||
{
|
||||
SpearIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Spears/{sprite.name}";
|
||||
}
|
||||
|
||||
ScytheIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Scythes"))
|
||||
Sprite[] scytheSprites = Resources.LoadAll<Sprite>("Weapons/Scythes");
|
||||
foreach (Sprite sprite in scytheSprites)
|
||||
{
|
||||
ScytheIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Scythes/{sprite.name}";
|
||||
}
|
||||
|
||||
HammerIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Hammers"))
|
||||
Sprite[] hammerSprites = Resources.LoadAll<Sprite>("Weapons/Hammers");
|
||||
foreach (Sprite sprite in hammerSprites)
|
||||
{
|
||||
HammerIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Hammers/{sprite.name}";
|
||||
}
|
||||
|
||||
BowIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Bows"))
|
||||
Sprite[] bowSprites = Resources.LoadAll<Sprite>("Weapons/Bows");
|
||||
foreach (Sprite sprite in bowSprites)
|
||||
{
|
||||
BowIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Bows/{sprite.name}";
|
||||
}
|
||||
|
||||
CrossbowIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Crossbows"))
|
||||
Sprite[] crossbowSprites = Resources.LoadAll<Sprite>("Weapons/Crossbows");
|
||||
foreach (Sprite sprite in crossbowSprites)
|
||||
{
|
||||
CrossbowIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Crossbows/{sprite.name}";
|
||||
}
|
||||
|
||||
AxeIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Axes"))
|
||||
Sprite[] axeSprites = Resources.LoadAll<Sprite>("Weapons/Axes");
|
||||
foreach (Sprite sprite in axeSprites)
|
||||
{
|
||||
AxeIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Axes/{sprite.name}";
|
||||
}
|
||||
|
||||
// One-handed weapons
|
||||
SwordIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Swords"))
|
||||
Sprite[] swordSprites = Resources.LoadAll<Sprite>("Weapons/Swords");
|
||||
foreach (Sprite sprite in swordSprites)
|
||||
{
|
||||
SwordIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Swords/{sprite.name}";
|
||||
}
|
||||
|
||||
ShieldIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Shields"))
|
||||
Sprite[] shieldSprites = Resources.LoadAll<Sprite>("Weapons/Shields");
|
||||
foreach (Sprite sprite in shieldSprites)
|
||||
{
|
||||
ShieldIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Shields/{sprite.name}";
|
||||
}
|
||||
|
||||
DaggerIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Daggers"))
|
||||
Sprite[] daggerSprites = Resources.LoadAll<Sprite>("Weapons/Daggers");
|
||||
foreach (Sprite sprite in daggerSprites)
|
||||
{
|
||||
DaggerIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Daggers/{sprite.name}";
|
||||
}
|
||||
|
||||
BookIcons.Clear();
|
||||
foreach (Sprite sprite in Resources.LoadAll<Sprite>("Weapons/Books"))
|
||||
Sprite[] bookSprites = Resources.LoadAll<Sprite>("Weapons/Books");
|
||||
foreach (Sprite sprite in bookSprites)
|
||||
{
|
||||
BookIcons.Add(sprite);
|
||||
spritePathMap[sprite] = $"Weapons/Books/{sprite.name}";
|
||||
}
|
||||
|
||||
Debug.Log("Updated all icon lists from Resources folders");
|
||||
Debug.Log($"Updated all icon lists from Resources folders. Loaded {spritePathMap.Count} sprites with paths.");
|
||||
}
|
||||
|
||||
public EquippableItemInstance GenerateEquippableItemInstance()
|
||||
@ -229,7 +281,7 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
// Set basic properties
|
||||
item.EquipmentType = equipmentType;
|
||||
item.ItemName = GenerateItemName(equipmentType, tier);
|
||||
item.Icon = GetRandomIcon(equipmentType);
|
||||
item.Icon = GetRandomIcon(equipmentType, item);
|
||||
Debug.Log("Generated: " + item.ItemName + " icon " + item.Icon.name);
|
||||
|
||||
// Set weapon type if it's a weapon
|
||||
@ -253,7 +305,7 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
item.EquipmentType = EquipmentType.Weapon1;
|
||||
item.WeaponType = weaponType;
|
||||
item.ItemName = GenerateWeaponName(weaponType, tier);
|
||||
item.Icon = GetWeaponIcon(weaponType);
|
||||
item.Icon = GetWeaponIcon(weaponType, item);
|
||||
Debug.Log("Generated: " + item.ItemName + " icon " + item.Icon.name);
|
||||
|
||||
GenerateStatsForItem(item, tier, playerLevel);
|
||||
@ -274,7 +326,7 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
item.EquipmentType = weaponSlot;
|
||||
item.WeaponType = weaponType;
|
||||
item.ItemName = GenerateWeaponName(weaponType, tier);
|
||||
item.Icon = GetWeaponIcon(weaponType);
|
||||
item.Icon = GetWeaponIcon(weaponType, item);
|
||||
|
||||
GenerateStatsForItem(item, tier, playerLevel);
|
||||
|
||||
@ -572,7 +624,8 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
return string.IsNullOrEmpty(prefix) ? baseName : $"{prefix} {baseName}";
|
||||
}
|
||||
|
||||
private Sprite GetRandomIcon(EquipmentType equipmentType)
|
||||
// Update your icon selection methods to store the path
|
||||
private Sprite GetRandomIcon(EquipmentType equipmentType, EquippableItemInstance item)
|
||||
{
|
||||
List<Sprite> iconList = equipmentType switch
|
||||
{
|
||||
@ -590,12 +643,22 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
};
|
||||
|
||||
if (iconList != null && iconList.Count > 0)
|
||||
return iconList[Random.Range(0, iconList.Count)];
|
||||
{
|
||||
Sprite selectedSprite = iconList[Random.Range(0, iconList.Count)];
|
||||
|
||||
// Store the path in the item
|
||||
if (spritePathMap.TryGetValue(selectedSprite, out string path))
|
||||
{
|
||||
item.IconPath = path;
|
||||
}
|
||||
|
||||
return selectedSprite;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private Sprite GetWeaponIcon(WeaponType weaponType)
|
||||
private Sprite GetWeaponIcon(WeaponType weaponType, EquippableItemInstance item)
|
||||
{
|
||||
List<Sprite> iconList = weaponType switch
|
||||
{
|
||||
@ -614,7 +677,17 @@ public class EquippableItemGenerator : MonoBehaviour
|
||||
};
|
||||
|
||||
if (iconList != null && iconList.Count > 0)
|
||||
return iconList[Random.Range(0, iconList.Count)];
|
||||
{
|
||||
Sprite selectedSprite = iconList[Random.Range(0, iconList.Count)];
|
||||
|
||||
// Store the path in the item
|
||||
if (spritePathMap.TryGetValue(selectedSprite, out string path))
|
||||
{
|
||||
item.IconPath = path;
|
||||
}
|
||||
|
||||
return selectedSprite;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user