// Get animation configuration regarding of the equipement public AnimationClip[] GetAnimationClip(ref WeaponItem weapon, ref SecondItem second, ref ShieldItem shield, ref BodyItem body, ref HeadItem head, ref BackpackItem backpack) { if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 5) { return(spearConfiguration); } else if (second.type != SecondItem.Type.None && second.animationCode == 2) { return(archeryConfiguration); } else if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 3) { return(crossbowConfiguration); } else if (shield.type != ShieldItem.Type.None) { return(shieldedConfiguration); } else if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 4) { return(twoHandedConfiguration); } else if (weapon.type != WeaponItem.Type.None && second.animationCode == 6) { return(staffConfiguration); } else if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 7) { return(polearmConfiguration); } else { return(defaultConfiguration); } }
public bool Equip(SecondItem.Type type, bool forceUpdate = false) { if (type == equipedItem.type && !forceUpdate) { return(true); } if (type != SecondItem.Type.None) { SecondItem newItem = Arsenal.Instance.Get(type); if (newItem) { MeshFilter mf = newItem.GetComponent <MeshFilter>(); if (mf) { equipedMesh.mesh = mf.mesh; SecondItem.Copy(newItem, equipedItem); return(true); } } } equipedItem.Clear(); equipedMesh.mesh = null; return(false); }
public static void Copy(SecondItem source, SecondItem destination) { Item.Copy(source, destination); destination.type = source.type; destination.forbidWeapon = source.forbidWeapon; destination.forbidShield = source.forbidShield; destination.animationCode = source.animationCode; destination.load = source.load; destination.dammage = source.dammage; }
public static Item AttachItemCopy(Item original, GameObject destination) { switch (original.itemType) { case Item.ItemType.Backpack: BackpackItem backpack = destination.AddComponent <BackpackItem>(); BackpackItem.Copy(original as BackpackItem, backpack); return(backpack); case Item.ItemType.Body: BodyItem body = destination.AddComponent <BodyItem>(); BodyItem.Copy(original as BodyItem, body); return(body); case Item.ItemType.Head: HeadItem head = destination.AddComponent <HeadItem>(); HeadItem.Copy(original as HeadItem, head); return(head); case Item.ItemType.Horse: HorseItem horse = destination.AddComponent <HorseItem>(); HorseItem.Copy(original as HorseItem, horse); return(horse); case Item.ItemType.Second: SecondItem second = destination.AddComponent <SecondItem>(); SecondItem.Copy(original as SecondItem, second); return(second); case Item.ItemType.Shield: ShieldItem shield = destination.AddComponent <ShieldItem>(); ShieldItem.Copy(original as ShieldItem, shield); return(shield); case Item.ItemType.Weapon: WeaponItem weapon = destination.AddComponent <WeaponItem>(); WeaponItem.Copy(original as WeaponItem, weapon); return(weapon); case Item.ItemType.Resource: ResourceItem resource = destination.AddComponent <ResourceItem>(); ResourceItem.Copy(original as ResourceItem, resource); return(resource); default: Debug.LogError("Unsuported Item type"); return(null); } }
internal SecondItem GetItemFile(int DayInt) { if (!_itemsdictionary.ContainsKey(DayInt)) { lock (_object) { if (!_itemsdictionary.ContainsKey(DayInt)) { SecondItem item = new SecondItem(DayInt, this); _itemsdictionary.Add(DayInt, item); } } } return(_itemsdictionary[DayInt]); }
public void CopyProperties(QuickNSmart.Contracts.Business.Account.IIdentityUser other) { if (other == null) { throw new System.ArgumentNullException(nameof(other)); } bool handled = false; BeforeCopyProperties(other, ref handled); if (handled == false) { Id = other.Id; RowVersion = other.RowVersion; FirstItem.CopyProperties(other.FirstItem); SecondItem.CopyProperties(other.SecondItem); } AfterCopyProperties(other); }
public AnimationClip[] GetMountedAnimationClip(ref WeaponItem weapon, ref SecondItem second, ref ShieldItem shield, ref BodyItem body, ref HeadItem head, ref BackpackItem backpack) { if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 5) { return(mountedSpearConfiguration); } else if (second.type != SecondItem.Type.None && second.animationCode == 2) { return(mountedArcheryConfiguration); } else if (weapon.type != WeaponItem.Type.None && weapon.animationCode == 3) { return(mountedCrossbowConfiguration); } else { return(mountedDefaultConfiguration); } }
public GameObject GetPickable(SecondItem.Type type, bool showName = false, bool destroyOnPick = true) { SecondItem item = Get(type); if (!item) { return(null); } GameObject go = Instantiate(pickablePrefab.gameObject); go.name = type.ToString(); go.transform.parent = null; go.transform.position = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableSecond; SecondItem.Copy(item, go.AddComponent <SecondItem>()); go.SetActive(true); MeshFilter mf = item.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); pickable.textmesh.gameObject.SetActive(showName); go.GetComponent <Item>().destroyOnPick = destroyOnPick; return(go); }
public bool EquipInteraction(InteractionType.Type type, GameObject interactor) { bool success = false; if (type == InteractionType.Type.pickableWeapon) { WeaponItem item = interactor.GetComponent <WeaponItem>(); if (item && playerController.weapon.Equip(item.type)) { if (item.forbidSecond || playerController.secondHand.equipedItem.forbidWeapon) { if (playerController.secondHand.equipedItem.type != SecondItem.Type.None) { inventory.AddItem(playerController.secondHand.equipedItem.Summarize(), 1); } playerController.secondHand.Equip(SecondItem.Type.None); } if (item.forbidShield) { if (playerController.shield.equipedItem.type != ShieldItem.Type.None) { inventory.AddItem(playerController.shield.equipedItem.Summarize(), 1); } playerController.shield.Equip(ShieldItem.Type.None); } success = true; playerController.needEquipementAnimationUpdate = true; if (ToolDictionary.instance.tools.ContainsKey(playerController.weapon.equipedItem.toolFamily)) { List <AudioClip> sounds = ToolDictionary.instance.tools[playerController.weapon.equipedItem.toolFamily].collectionSound; audiosource.clip = sounds[Random.Range(0, sounds.Count)]; audiosource.Play(); } } } else if (type == InteractionType.Type.pickableBackpack) { BackpackItem item = interactor.GetComponent <BackpackItem>(); if (item && playerController.backpack.Equip(item.type)) { success = true; } playerController.needEquipementAnimationUpdate = true; if (success) { inventory.capacity = item.capacity; } if (ToolDictionary.instance.tools.ContainsKey(playerController.backpack.equipedItem.toolFamily)) { List <AudioClip> sounds = ToolDictionary.instance.tools[playerController.backpack.equipedItem.toolFamily].collectionSound; audiosource.clip = sounds[Random.Range(0, sounds.Count)]; audiosource.Play(); } } else if (type == InteractionType.Type.pickableHead) { HeadItem item = interactor.GetComponent <HeadItem>(); if (item && playerController.head.Equip(item.type)) { success = true; playerController.needEquipementAnimationUpdate = true; int index = Mathf.Clamp((int)HeadItem.getCategory(playerController.head.equipedItem.type), 0, wearHead.Count - 1); audiosource.clip = wearHead[index]; audiosource.Play(); } } else if (type == InteractionType.Type.pickableSecond) { SecondItem item = interactor.GetComponent <SecondItem>(); if (item && playerController.secondHand.Equip(item.type)) { if (item.forbidWeapon || playerController.weapon.equipedItem.forbidSecond) { if (playerController.weapon.equipedItem.type != WeaponItem.Type.None) { inventory.AddItem(playerController.weapon.equipedItem.Summarize(), 1); } playerController.weapon.Equip(WeaponItem.Type.None); } if (item.forbidShield) { if (playerController.shield.equipedItem.type != ShieldItem.Type.None) { inventory.AddItem(playerController.shield.equipedItem.Summarize(), 1); } playerController.shield.Equip(ShieldItem.Type.None); } success = true; playerController.needEquipementAnimationUpdate = true; } } else if (type == InteractionType.Type.pickableShield) { ShieldItem item = interactor.GetComponent <ShieldItem>(); if (item && playerController.shield.Equip(item.type)) { if (playerController.weapon.equipedItem.forbidShield) { if (playerController.weapon.equipedItem.type != WeaponItem.Type.None) { inventory.AddItem(playerController.weapon.equipedItem.Summarize(), 1); } playerController.weapon.Equip(WeaponItem.Type.None); } if (playerController.secondHand.equipedItem.forbidShield) { if (playerController.secondHand.equipedItem.type != SecondItem.Type.None) { inventory.AddItem(playerController.secondHand.equipedItem.Summarize(), 1); } playerController.secondHand.Equip(SecondItem.Type.None); } success = true; playerController.needEquipementAnimationUpdate = true; } } else if (type == InteractionType.Type.pickableBody) { BodyItem item = interactor.GetComponent <BodyItem>(); bool mounted = playerController.horse ? playerController.horse.equipedItem.type != HorseItem.Type.None : false; if (item && playerController.body.Equip(item.type, mounted)) { success = true; playerController.needEquipementAnimationUpdate = true; int index = Mathf.Clamp((int)BodyItem.getCategory(playerController.body.equipedItem.type), 0, wearBody.Count - 1); audiosource.clip = wearBody[index]; audiosource.Play(); } } else if (type == InteractionType.Type.pickableHorse) { HorseItem item = interactor.GetComponent <HorseItem>(); if ((playerController.horse && item.type == HorseItem.Type.None) || (!playerController.horse && item.type != HorseItem.Type.None)) { // change player template PlayerController playerTemplate; if (item.type == HorseItem.Type.None) { playerTemplate = Arsenal.Instance.playerTemplate; } else { playerTemplate = Arsenal.Instance.mountedPlayerTemplate; } PlayerController destination = Instantiate <PlayerController>(playerTemplate); destination.gameObject.name = playerTemplate.gameObject.name; // copy PlayerController.MainInstance = destination; PlayerController.Copy(playerController, destination); MapStreaming.instance.focusAgent = destination.transform; ConstructionSystem.instance.tpsController.target = destination.transform.Find("CameraTarget"); InteractionUI.instance.juicer = destination.interactionController.interactionJuicer; destination.interactionController.PickableInteraction(type, interactor); interactionJuicer.OnDelete(); Destroy(gameObject); } else { if (playerController.horse && item && playerController.horse.Equip(item.type)) { success = true; playerController.needEquipementAnimationUpdate = true; int index = Mathf.Clamp((int)BodyItem.getCategory(playerController.body.equipedItem.type), 0, wearBody.Count - 1); audiosource.clip = wearBody[index]; audiosource.Play(); bool mounted = playerController.horse ? playerController.horse.equipedItem.type != HorseItem.Type.None : false; playerController.body.Equip(playerController.body.equipedItem.type, mounted, true); inventory.onUpdateContent.Invoke(); } } } if (success) { playerController.RecomputeLoadFactor(); } return(success); }
private void InstanciateShop() { GameObject shopContainer = new GameObject("shopContainer"); shopContainer.transform.parent = transform; shopContainer.transform.localPosition = Vector3.zero; shopContainer.transform.localRotation = Quaternion.identity; shopContainer.transform.localScale = Vector3.one; shopContainer.SetActive(true); if (export_csv) { file_csv += "Arsenal items\n" + "Name;Load;Dammage;Armor;Capacity;Wood;Wheat;Stone;Iron;Gold;Crystal\n"; } // backpack Vector3 position = Vector3.zero; { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = BackpackItem.Type.None.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(-2 * gap, position.y, position.z); go.AddComponent <InteractionType>().type = InteractionType.Type.pickableBackpack; go.AddComponent <BackpackItem>(); go.SetActive(true); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.body.gameObject.SetActive(false); if (export_csv) { file_csv += "\nbackpack items\n"; } } foreach (KeyValuePair <BackpackItem.Type, BackpackItem> item in backpackDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableBackpack; BackpackItem.Copy(item.Value, go.AddComponent <BackpackItem>()); go.SetActive(true); MeshFilter mf = item.Value.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 15, 0); cameraPivot.position = go.transform.position + new Vector3(-0.13f, 0.6f, 1.1f); if (item.Key == BackpackItem.Type.AdventureBackpack) { pickable.transform.localEulerAngles = new Vector3(0, 90, 0); cameraPivot.position = go.transform.position + new Vector3(0f, 0.7f, 0.9f); } CreateIcon(iconFolderPath + "/Backpacks/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";0;0;" + item.Value.capacity.ToString() + ";" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // shields position.x = 0; position.z -= gap; position.y += gapY; { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = ShieldItem.Type.None.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(-2 * gap, position.y, position.z); go.AddComponent <InteractionType>().type = InteractionType.Type.pickableShield; go.AddComponent <ShieldItem>(); go.SetActive(true); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.body.gameObject.SetActive(false); if (export_csv) { file_csv += "\nshield items\n"; } } foreach (KeyValuePair <ShieldItem.Type, ShieldItem> item in shieldDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableShield; ShieldItem.Copy(item.Value, go.AddComponent <ShieldItem>()); go.SetActive(true); MeshFilter mf = item.Value.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 30, 0); cameraPivot.position = go.transform.position + new Vector3(0f, 0.6f, 1.3f); CreateIcon(iconFolderPath + "/Shields/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";0;" + item.Value.armor.ToString() + ";0;" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // second hand position.x = 0; position.z -= gap; position.y += gapY; { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = SecondItem.Type.None.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(-2 * gap, position.y, position.z); go.AddComponent <InteractionType>().type = InteractionType.Type.pickableSecond; go.AddComponent <SecondItem>(); go.SetActive(true); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.body.gameObject.SetActive(false); if (export_csv) { file_csv += "\nsecond hand items\n"; } } foreach (KeyValuePair <SecondItem.Type, SecondItem> item in secondDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableSecond; SecondItem.Copy(item.Value, go.AddComponent <SecondItem>()); go.SetActive(true); MeshFilter mf = item.Value.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 0, -42); cameraPivot.position = go.transform.position + new Vector3(0.3f, 0.45f, 1.5f); CreateIcon(iconFolderPath + "/SecondHands/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";" + item.Value.dammage.ToString() + ";0;0;" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // weapons position.x = 0; position.z -= gap; position.y += gapY; { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = WeaponItem.Type.None.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(-2 * gap, position.y, position.z); go.AddComponent <InteractionType>().type = InteractionType.Type.pickableWeapon; go.AddComponent <WeaponItem>(); go.SetActive(true); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.body.gameObject.SetActive(false); if (export_csv) { file_csv += "\nweapon items\n"; } } foreach (KeyValuePair <WeaponItem.Type, WeaponItem> item in weaponDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableWeapon; WeaponItem.Copy(item.Value, go.AddComponent <WeaponItem>()); go.SetActive(true); MeshFilter mf = item.Value.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 0, -42); cameraPivot.position = go.transform.position + new Vector3(0.3f, 0.6f, 1.5f); if (item.Key == WeaponItem.Type.FireSword) { pickable.itemMesh.gameObject.transform.Find("swordFireEffect").gameObject.SetActive(true); } else if (item.Key == WeaponItem.Type.ElectricSword) { pickable.itemMesh.gameObject.transform.Find("swordElectricEffect").gameObject.SetActive(true); } CreateIcon(iconFolderPath + "/Weapons/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";" + item.Value.dammage.ToString() + ";0;0;" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // heads position.x = 0; position.z -= gap; position.y += gapY; if (export_csv) { file_csv += "\nhead items\n"; } foreach (KeyValuePair <HeadItem.Type, HeadItem> item in headDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableHead; HeadItem.Copy(item.Value, go.AddComponent <HeadItem>()); go.SetActive(true); MeshFilter mf = item.Value.gameObject.GetComponent <MeshFilter>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } if (mf) { pickable.itemMesh.mesh = mf.mesh; } else { pickable.itemMesh.gameObject.SetActive(false); } pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 15, 0); cameraPivot.position = go.transform.position + new Vector3(0, 0.6f, 1f); CreateIcon(iconFolderPath + "/Heads/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";0;" + item.Value.armor.ToString() + ";0;" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // bodies position.x = 0; position.z -= gap; position.y += gapY; if (export_csv) { file_csv += "\nbody items\n"; } foreach (KeyValuePair <BodyItem.Type, BodyItem> item in bodyDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableBody; BodyItem.Copy(item.Value, go.AddComponent <BodyItem>()); go.SetActive(true); SkinnedMeshRenderer skin = item.Value.gameObject.GetComponent <SkinnedMeshRenderer>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.itemMesh.gameObject.SetActive(false); if (skin) { BodySlot.CopySkinnedMesh(skin, pickable.body); } else { pickable.body.gameObject.SetActive(false); } if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 15, 0); cameraPivot.position = go.transform.position + new Vector3(0, 0.5f, 1.5f); CreateIcon(iconFolderPath + "/Bodies/" + go.name + ".png"); } if (export_csv) { ItemCost cost = GetCost(item.Value.crafting); file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";0;" + item.Value.armor.ToString() + ";0;" + cost.wood.ToString() + ";" + cost.wheat.ToString() + ";" + cost.stone.ToString() + ";" + cost.iron.ToString() + ";" + cost.gold.ToString() + ";" + cost.crystal.ToString() + "\n"; } position.x += gap; } // horses position.x = 0; position.z -= 2 * gap; position.y += gapY; { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = HorseItem.Type.None.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(-2 * gap, position.y, position.z); go.AddComponent <InteractionType>().type = InteractionType.Type.pickableHorse; go.AddComponent <HorseItem>(); go.SetActive(true); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.body.gameObject.SetActive(false); if (export_csv) { file_csv += "\nhorse items\n"; } } foreach (KeyValuePair <HorseItem.Type, HorseItem> item in horseDictionary) { GameObject go = Instantiate(pickablePrefab.gameObject); go.name = item.Key.ToString(); go.transform.parent = shopContainer.transform; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.transform.localPosition = position; go.AddComponent <InteractionType>().type = InteractionType.Type.pickableHorse; HorseItem.Copy(item.Value, go.AddComponent <HorseItem>()); go.SetActive(true); SkinnedMeshRenderer skin = item.Value.gameObject.GetComponent <SkinnedMeshRenderer>(); SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>(); pickable.textmesh.text = go.name; if (go.name.Length >= 8) { pickable.textmesh.characterSize *= 0.5f; } pickable.itemMesh.gameObject.SetActive(false); if (skin) { BodySlot.CopySkinnedMesh(skin, pickable.horse); } else { pickable.horse.gameObject.SetActive(false); } pickable.horse.gameObject.SetActive(true); pickable.body.gameObject.SetActive(false); if (createIcons) { pickable.textmesh.gameObject.SetActive(false); pickable.transform.localEulerAngles = new Vector3(0, 90, 0); cameraPivot.position = go.transform.position + new Vector3(0, 1, 3f); CreateIcon(iconFolderPath + "/Horses/" + go.name + ".png"); } if (export_csv) { file_csv += item.Key.ToString() + ";" + item.Value.load.ToString() + ";0;" + item.Value.armor.ToString() + ";0;0;0;0;0;0;0\n"; } position.x += gap; } if (export_csv) { StreamWriter writer = new StreamWriter("Assets/Resources/arsenal.csv", false); writer.WriteLine(file_csv); writer.Close(); } }
private bool Equip(InteractionType.Type type, GameObject interactor) { bool success = false; if (type == InteractionType.Type.pickableWeapon) { WeaponItem item = interactor.GetComponent <WeaponItem>(); if (item && weapon.Equip(item.type)) { if (item.forbidSecond || secondHand.equipedItem.forbidWeapon) { secondHand.Equip(SecondItem.Type.None); } if (item.forbidShield) { shield.Equip(ShieldItem.Type.None); } success = true; } } else if (type == InteractionType.Type.pickableBackpack) { BackpackItem item = interactor.GetComponent <BackpackItem>(); if (item && backpack.Equip(item.type)) { success = true; } } else if (type == InteractionType.Type.pickableHead) { HeadItem item = interactor.GetComponent <HeadItem>(); if (item && head.Equip(item.type)) { success = true; } } else if (type == InteractionType.Type.pickableSecond) { SecondItem item = interactor.GetComponent <SecondItem>(); if (item && secondHand.Equip(item.type)) { if (item.forbidWeapon || weapon.equipedItem.forbidSecond) { weapon.Equip(WeaponItem.Type.None); } if (item.forbidShield) { shield.Equip(ShieldItem.Type.None); } success = true; } } else if (type == InteractionType.Type.pickableShield) { ShieldItem item = interactor.GetComponent <ShieldItem>(); if (item && shield.Equip(item.type)) { if (weapon.equipedItem.forbidShield) { weapon.Equip(WeaponItem.Type.None); } if (secondHand.equipedItem.forbidShield) { secondHand.Equip(SecondItem.Type.None); } success = true; } } else if (type == InteractionType.Type.pickableBody) { bool mounted = horse ? horse.equipedItem.type != HorseItem.Type.None : false; BodyItem item = interactor.GetComponent <BodyItem>(); if (item && body.Equip(item.type, mounted)) { success = true; } } else { Debug.LogWarning("no interaction defined for this type " + type.ToString()); return(false); } return(success); }
public float GetDammage(SecondItem alternative) { return(weapon.equipedItem.dammage + alternative.dammage); }
public void OnForgeItemPointerEnter(ForgeItem forgeItem) { forgeItem.itemName.color = hoveredItemTextColor; hoveredForgeItem = forgeItem; enoughResources = HasEnoughResources(hoveredForgeItem); enoughResourceMessage.SetActive(!enoughResources); descriptionName.text = forgeItem.itemName.text; description.text = forgeItem.description; loadCount.text = forgeItem.loadCount.text; armorCount.text = forgeItem.armorCount.text; dammageCount.text = forgeItem.dammageCount.text; itemIcon.sprite = forgeItem.icon; switch (forgeItem.summarizedItem.itemType) { case Item.ItemType.Weapon: avatar.weapon.Equip((WeaponItem.Type)forgeItem.summarizedItem.derivatedType); WeaponItem weapon = Arsenal.Instance.Get((WeaponItem.Type)forgeItem.summarizedItem.derivatedType); if (weapon.forbidSecond) { avatar.second.Equip(SecondItem.Type.None); } else if (!PlayerController.MainInstance.secondHand.equipedItem.forbidWeapon) { avatar.second.Equip(PlayerController.MainInstance.secondHand.equipedItem.type); } if (weapon.forbidShield) { avatar.shield.Equip(ShieldItem.Type.None); } else { avatar.shield.Equip(PlayerController.MainInstance.shield.equipedItem.type); } break; case Item.ItemType.Head: avatar.head.Equip((HeadItem.Type)forgeItem.summarizedItem.derivatedType); break; case Item.ItemType.Body: avatar.body.Equip((BodyItem.Type)forgeItem.summarizedItem.derivatedType, false); break; case Item.ItemType.Second: avatar.second.Equip((SecondItem.Type)forgeItem.summarizedItem.derivatedType); SecondItem second = Arsenal.Instance.Get((SecondItem.Type)forgeItem.summarizedItem.derivatedType); if (second.forbidWeapon) { avatar.weapon.Equip(WeaponItem.Type.None); } else if (!PlayerController.MainInstance.weapon.equipedItem.forbidSecond) { avatar.weapon.Equip(PlayerController.MainInstance.weapon.equipedItem.type); } if (second.forbidShield) { avatar.shield.Equip(ShieldItem.Type.None); } else { avatar.shield.Equip(PlayerController.MainInstance.shield.equipedItem.type); } break; case Item.ItemType.Backpack: avatar.backpack.Equip((BackpackItem.Type)forgeItem.summarizedItem.derivatedType); break; case Item.ItemType.Shield: avatar.shield.Equip((ShieldItem.Type)forgeItem.summarizedItem.derivatedType); if (PlayerController.MainInstance.weapon.equipedItem.forbidShield) { avatar.weapon.Equip(WeaponItem.Type.None); } else { avatar.weapon.Equip(PlayerController.MainInstance.weapon.equipedItem.type); } if (PlayerController.MainInstance.secondHand.equipedItem.forbidShield) { avatar.second.Equip(SecondItem.Type.None); } else { avatar.second.Equip(PlayerController.MainInstance.secondHand.equipedItem.type); } break; default: break; } avatar.AnimationParameterRefresh(); }