This commit is contained in:
Nim XD
2024-08-27 21:01:33 +05:30
parent 99eaf514fd
commit 121a1b7c73
31803 changed files with 623461 additions and 623399 deletions

View File

@@ -1,135 +1,135 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
using Assets.HeroEditor4D.Common.Scripts.Common;
using Assets.HeroEditor4D.Common.Scripts.Enums;
using Assets.HeroEditor4D.InventorySystem.Scripts.Data;
using Assets.HeroEditor4D.InventorySystem.Scripts.Enums;
using UnityEngine;
namespace Assets.HeroEditor4D.InventorySystem.Scripts.Helpers
{
public class CharacterInventorySetup
{
public static void Setup(Character character, List<Item> equipped, CharacterAppearance appearance)
{
if (!appearance.Underwear.IsEmpty())
{
character.Underwear = character.SpriteCollection.Armor.Single(i => i.Id == appearance.Underwear).Sprites;
}
character.UnderwearColor = appearance.UnderwearColor;
character.ShowHelmet = appearance.ShowHelmet;
appearance.Setup(character, initialize: false);
Setup(character, equipped);
}
public static void Setup(Character character, List<Item> equipped)
{
character.ResetEquipment();
character.HideEars = false;
character.CropHair = false;
foreach (var item in equipped)
{
try
{
var spriteCollection = character.SpriteCollection;
#if TAP_HEROES // TODO: Temp workaround.
if (item.Params.SpriteId.StartsWith("FantasyHeroes.Basic."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "FantasyHeroes");
}
else if (item.Params.SpriteId.StartsWith("FantasyHeroes.Goblin."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "GoblinHeroes");
}
else if (item.Params.SpriteId.StartsWith("UndeadHeroes."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "UndeadHeroes");
}
#endif
switch (item.Params.Type)
{
case ItemType.Weapon:
switch (item.Params.Class)
{
case ItemClass.Bow:
character.WeaponType = WeaponType.Bow;
character.CompositeWeapon = spriteCollection.Bow.FindSprites(item.Params.SpriteId);
break;
case ItemClass.Firearm:
character.WeaponType = WeaponType.Paired;
character.SecondaryWeapon = spriteCollection.Firearm1H.Union(spriteCollection.Firearm2H).FindSprites(item.Params.SpriteId).Single(i => i.name == "Side");
break;
default:
if (equipped.Any(i => i.IsFirearm))
{
character.WeaponType = WeaponType.Paired;
character.PrimaryWeapon = spriteCollection.MeleeWeapon1H.FindSprite(item.Params.SpriteId);
}
else
{
character.WeaponType = item.Params.Tags.Contains(ItemTag.TwoHanded) ? WeaponType.Melee2H : WeaponType.Melee1H;
character.PrimaryWeapon = (character.WeaponType == WeaponType.Melee1H ? spriteCollection.MeleeWeapon1H : spriteCollection.MeleeWeapon2H).FindSprite(item.Params.SpriteId);
}
break;
case ItemClass.Bomb:
character.WeaponType = WeaponType.Throwable;
character.PrimaryWeapon = spriteCollection.Throwable.FindSprite(item.Params.SpriteId);
break;
}
break;
case ItemType.Shield:
character.Shield = spriteCollection.Shield.FindSprites(item.Params.SpriteId);
character.WeaponType = WeaponType.Melee1H;
break;
case ItemType.Armor:
character.Armor = spriteCollection.Armor.FindSprites(item.Params.SpriteId);
break;
case ItemType.Helmet:
var entry = spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId);
character.Equip(entry, EquipmentPart.Helmet);
character.HideEars = !entry.Tags.Contains("ShowEars");
character.CropHair = !entry.Tags.Contains("FullHair");
break;
case ItemType.Vest:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Vest, Color.white);
break;
case ItemType.Bracers:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Bracers, Color.white);
break;
case ItemType.Leggings:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Leggings, Color.white);
break;
}
}
catch (Exception e)
{
Debug.LogErrorFormat("Unable to equip {0} ({1})", item.Params.SpriteId, e.Message);
}
}
foreach (var part in new[] { ItemType.Vest, ItemType.Bracers, ItemType.Leggings })
{
if (equipped.Any(i => i.Params.Type == part))
{
}
else if (character.Underwear.Any())
{
var entry = character.SpriteCollection.Armor.Single(i => i.Sprites.Contains(character.Underwear[0]));
character.Equip(entry, part.ToString().ToEnum<EquipmentPart>(), character.UnderwearColor);
}
}
character.Initialize();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
using Assets.HeroEditor4D.Common.Scripts.Common;
using Assets.HeroEditor4D.Common.Scripts.Enums;
using Assets.HeroEditor4D.InventorySystem.Scripts.Data;
using Assets.HeroEditor4D.InventorySystem.Scripts.Enums;
using UnityEngine;
namespace Assets.HeroEditor4D.InventorySystem.Scripts.Helpers
{
public class CharacterInventorySetup
{
public static void Setup(Character character, List<Item> equipped, CharacterAppearance appearance)
{
if (!appearance.Underwear.IsEmpty())
{
character.Underwear = character.SpriteCollection.Armor.Single(i => i.Id == appearance.Underwear).Sprites;
}
character.UnderwearColor = appearance.UnderwearColor;
character.ShowHelmet = appearance.ShowHelmet;
appearance.Setup(character, initialize: false);
Setup(character, equipped);
}
public static void Setup(Character character, List<Item> equipped)
{
character.ResetEquipment();
character.HideEars = false;
character.CropHair = false;
foreach (var item in equipped)
{
try
{
var spriteCollection = character.SpriteCollection;
#if TAP_HEROES // TODO: Temp workaround.
if (item.Params.SpriteId.StartsWith("FantasyHeroes.Basic."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "FantasyHeroes");
}
else if (item.Params.SpriteId.StartsWith("FantasyHeroes.Goblin."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "GoblinHeroes");
}
else if (item.Params.SpriteId.StartsWith("UndeadHeroes."))
{
spriteCollection = ItemCollection.Active.SpriteCollections.Single(i => i.Id == "UndeadHeroes");
}
#endif
switch (item.Params.Type)
{
case ItemType.Weapon:
switch (item.Params.Class)
{
case ItemClass.Bow:
character.WeaponType = WeaponType.Bow;
character.CompositeWeapon = spriteCollection.Bow.FindSprites(item.Params.SpriteId);
break;
case ItemClass.Firearm:
character.WeaponType = WeaponType.Paired;
character.SecondaryWeapon = spriteCollection.Firearm1H.Union(spriteCollection.Firearm2H).FindSprites(item.Params.SpriteId).Single(i => i.name == "Side");
break;
default:
if (equipped.Any(i => i.IsFirearm))
{
character.WeaponType = WeaponType.Paired;
character.PrimaryWeapon = spriteCollection.MeleeWeapon1H.FindSprite(item.Params.SpriteId);
}
else
{
character.WeaponType = item.Params.Tags.Contains(ItemTag.TwoHanded) ? WeaponType.Melee2H : WeaponType.Melee1H;
character.PrimaryWeapon = (character.WeaponType == WeaponType.Melee1H ? spriteCollection.MeleeWeapon1H : spriteCollection.MeleeWeapon2H).FindSprite(item.Params.SpriteId);
}
break;
case ItemClass.Bomb:
character.WeaponType = WeaponType.Throwable;
character.PrimaryWeapon = spriteCollection.Throwable.FindSprite(item.Params.SpriteId);
break;
}
break;
case ItemType.Shield:
character.Shield = spriteCollection.Shield.FindSprites(item.Params.SpriteId);
character.WeaponType = WeaponType.Melee1H;
break;
case ItemType.Armor:
character.Armor = spriteCollection.Armor.FindSprites(item.Params.SpriteId);
break;
case ItemType.Helmet:
var entry = spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId);
character.Equip(entry, EquipmentPart.Helmet);
character.HideEars = !entry.Tags.Contains("ShowEars");
character.CropHair = !entry.Tags.Contains("FullHair");
break;
case ItemType.Vest:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Vest, Color.white);
break;
case ItemType.Bracers:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Bracers, Color.white);
break;
case ItemType.Leggings:
character.Equip(spriteCollection.Armor.Single(i => i.Id == item.Params.SpriteId), EquipmentPart.Leggings, Color.white);
break;
}
}
catch (Exception e)
{
Debug.LogErrorFormat("Unable to equip {0} ({1})", item.Params.SpriteId, e.Message);
}
}
foreach (var part in new[] { ItemType.Vest, ItemType.Bracers, ItemType.Leggings })
{
if (equipped.Any(i => i.Params.Type == part))
{
}
else if (character.Underwear.Any())
{
var entry = character.SpriteCollection.Armor.Single(i => i.Sprites.Contains(character.Underwear[0]));
character.Equip(entry, part.ToString().ToEnum<EquipmentPart>(), character.UnderwearColor);
}
}
character.Initialize();
}
}
}

View File

@@ -1,11 +1,11 @@
fileFormatVersion: 2
guid: d9432d5771f4c1f409fe5e1294778097
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d9432d5771f4c1f409fe5e1294778097
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,36 +1,36 @@
using System.Collections.Generic;
using System.Linq;
using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
using Assets.HeroEditor4D.InventorySystem.Scripts.Elements;
using UnityEngine;
namespace Assets.HeroEditor4D.InventorySystem.Scripts.Helpers
{
public class SetupResolver : MonoBehaviour
{
public Character4D Character;
public Equipment Equipment;
public ItemWorkspace ItemWorkspace;
public List<Character4D> Characters;
public List<ItemCollection> ItemCollections;
/// <summary>
/// The main point of this method is to place a correct existing prefab on a scene.
/// </summary>
public void Awake()
{
if (Character != null)
{
Destroy(Character.gameObject);
Character = Instantiate(Characters.First(i => i != null));
Character.transform.position = new Vector3(0, 2.5f);
Character.SetDirection(Vector2.down);
if (Equipment) Equipment.Preview = Character.Front;
}
if (ItemWorkspace) ItemWorkspace.ItemCollection = ItemCollections.First(i => i != null);
}
}
using System.Collections.Generic;
using System.Linq;
using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
using Assets.HeroEditor4D.InventorySystem.Scripts.Elements;
using UnityEngine;
namespace Assets.HeroEditor4D.InventorySystem.Scripts.Helpers
{
public class SetupResolver : MonoBehaviour
{
public Character4D Character;
public Equipment Equipment;
public ItemWorkspace ItemWorkspace;
public List<Character4D> Characters;
public List<ItemCollection> ItemCollections;
/// <summary>
/// The main point of this method is to place a correct existing prefab on a scene.
/// </summary>
public void Awake()
{
if (Character != null)
{
Destroy(Character.gameObject);
Character = Instantiate(Characters.First(i => i != null));
Character.transform.position = new Vector3(0, 2.5f);
Character.SetDirection(Vector2.down);
if (Equipment) Equipment.Preview = Character.Front;
}
if (ItemWorkspace) ItemWorkspace.ItemCollection = ItemCollections.First(i => i != null);
}
}
}

View File

@@ -1,11 +1,11 @@
fileFormatVersion: 2
guid: bdd21f735b5f054448b0e96d62944905
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: bdd21f735b5f054448b0e96d62944905
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: