Example #1
0
 // 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);
     }
 }
Example #2
0
    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);
    }
Example #3
0
 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;
 }
Example #4
0
    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);
        }
    }
Example #5
0
        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]);
        }
Example #6
0
        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);
        }
Example #7
0
 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);
     }
 }
Example #8
0
    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);
    }
Example #10
0
    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();
        }
    }
Example #11
0
    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);
    }
Example #12
0
 public float GetDammage(SecondItem alternative)
 {
     return(weapon.equipedItem.dammage + alternative.dammage);
 }
Example #13
0
    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();
    }