public void AddNotesBody(BodyItem bodyItem)
 {
     if (!_bodyItems.Contains(bodyItem))
     {
         _bodyItems.Add(bodyItem);
     }
 }
Beispiel #2
0
    public bool Equip(BodyItem.Type type, bool mounted, bool forceUpdate = false)
    {
        if (type == equipedItem.type && !forceUpdate)
        {
            return(true);
        }

        if (type != BodyItem.Type.None)
        {
            BodyItem newItem = Arsenal.Instance.Get(type, mounted);
            if (newItem)
            {
                SkinnedMeshRenderer smr = newItem.GetComponent <SkinnedMeshRenderer>();
                if (smr)
                {
                    CopySkinnedMesh(smr, equipedMesh);
                    BodyItem.Copy(newItem, equipedItem);
                    return(true);
                }
            }
        }
        equipedItem.Clear();
        equipedMesh.sharedMesh = null;
        return(false);
    }
Beispiel #3
0
 public Item QuickSetEquipment(Item item)
 {
     if (item is HeadItem)
     {
         HeadItem head = item as HeadItem;
         HeadItem old  = _headSlot.ChangeItem(head);
         return(old);
     }
     else if (item is FootItem)
     {
         FootItem foot = item as FootItem;
         FootItem old  = _footSlot.ChangeItem(foot);
         return(old);
     }
     else if (item is BodyItem)
     {
         BodyItem body = item as BodyItem;
         BodyItem old  = _bodySlot.ChangeItem(body);
         return(old);
     }
     else if (item is SwordItem)
     {
         SwordItem sword = item as SwordItem;
         return(_swordSlot.ChangeItem(sword));
     }
     return(item);
 }
Beispiel #4
0
    public void UnSet(int ItemID)
    {
        BodyItem Item = ItemManager.returnBodyItem(ItemID);

        Item.UnEquip();
        DataManager.Save();
    }
Beispiel #5
0
 public static void Copy(BodyItem source, BodyItem destination)
 {
     Item.Copy(source, destination);
     destination.type  = source.type;
     destination.load  = source.load;
     destination.armor = source.armor;
 }
Beispiel #6
0
 public static BodyItem GetInstance()
 {
     if (singleInstance == null)
     {
         singleInstance = new BodyItem();
     }
     return(singleInstance);
 }
Beispiel #7
0
        public override String ToString()
        {
            String s = "[Wearables] =>";

            s += " Body Item: " + BodyItem.ToString() + ";";
            s += " Skin Item: " + SkinItem.ToString() + ";";
            s += " Shirt Item: " + ShirtItem.ToString() + ";";
            s += " Pants Item: " + PantsItem.ToString() + ";";
            return(s);
        }
Beispiel #8
0
 public void Set(int itemid)
 {
     ItemId = itemid;
     if (itemid != 9999)
     {
         BodyItem Item = ItemManager.returnBodyItem(itemid);
         Item.Equip();
     }
     DataManager.Save();
 }
Beispiel #9
0
        /// <summary>
        /// Add and convert generic secondary body section
        /// </summary>
        /// <param name="bookStructureManager"></param>
        /// <param name="bodyItem"></param>
        private void AddSecondaryBody(BookStructureManager bookStructureManager, BodyItem bodyItem)
        {
            string docTitle = string.Empty;

            if (string.IsNullOrEmpty(bodyItem.Name))
            {
                if (bodyItem.Title != null)
                {
                    docTitle = bodyItem.Title.ToString();
                }
            }
            else
            {
                docTitle = bodyItem.Name;
            }
            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                Id                   = docTitle,
                GuideRole            = GuideTypeEnum.Text,
                Type                 = SectionTypeEnum.Text,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                Content              = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent     = null,
                NotPartOfNavigation  = false,
                FileName             = string.Format("section{0}.xhtml", ++_sectionCounter)
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = _commonSettings.CapitalDrop,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                                                                   new TitleConverterParamsV2 {
                    Settings = converterSettings, TitleLevel = 1
                }));
            }
            bookStructureManager.AddBookPage(sectionDocument);


            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(bookStructureManager, section, sectionDocument, false);
            }
        }
Beispiel #10
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);
        }
    }
Beispiel #11
0
        // this is used for OGS1
        public virtual Hashtable ToHashTable()
        {
            Hashtable h = new Hashtable();

            h["owner"]            = Owner.ToString();
            h["serial"]           = Serial.ToString();
            h["visual_params"]    = VisualParams;
            h["texture"]          = Texture.GetBytes();
            h["avatar_height"]    = AvatarHeight.ToString();
            h["body_item"]        = BodyItem.ToString();
            h["body_asset"]       = BodyAsset.ToString();
            h["skin_item"]        = SkinItem.ToString();
            h["skin_asset"]       = SkinAsset.ToString();
            h["hair_item"]        = HairItem.ToString();
            h["hair_asset"]       = HairAsset.ToString();
            h["eyes_item"]        = EyesItem.ToString();
            h["eyes_asset"]       = EyesAsset.ToString();
            h["shirt_item"]       = ShirtItem.ToString();
            h["shirt_asset"]      = ShirtAsset.ToString();
            h["pants_item"]       = PantsItem.ToString();
            h["pants_asset"]      = PantsAsset.ToString();
            h["shoes_item"]       = ShoesItem.ToString();
            h["shoes_asset"]      = ShoesAsset.ToString();
            h["socks_item"]       = SocksItem.ToString();
            h["socks_asset"]      = SocksAsset.ToString();
            h["jacket_item"]      = JacketItem.ToString();
            h["jacket_asset"]     = JacketAsset.ToString();
            h["gloves_item"]      = GlovesItem.ToString();
            h["gloves_asset"]     = GlovesAsset.ToString();
            h["undershirt_item"]  = UnderShirtItem.ToString();
            h["undershirt_asset"] = UnderShirtAsset.ToString();
            h["underpants_item"]  = UnderPantsItem.ToString();
            h["underpants_asset"] = UnderPantsAsset.ToString();
            h["skirt_item"]       = SkirtItem.ToString();
            h["skirt_asset"]      = SkirtAsset.ToString();

            string attachments = GetAttachmentsString();

            if (attachments != String.Empty)
            {
                h["attachments"] = attachments;
            }

            return(h);
        }
Beispiel #12
0
    public GameObject GetPickable(BodyItem.Type type, bool showName = false, bool destroyOnPick = true)
    {
        BodyItem item = Get(type, false);

        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.pickableBody;
        BodyItem.Copy(item, go.AddComponent <BodyItem>());
        go.SetActive(true);

        SkinnedMeshRenderer        skin     = item.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);
        pickable.horse.gameObject.SetActive(false);

        pickable.body.gameObject.SetActive(true);
        if (skin)
        {
            BodySlot.CopySkinnedMesh(skin, pickable.body);
        }
        else
        {
            pickable.body.gameObject.SetActive(false);
        }
        pickable.textmesh.gameObject.SetActive(showName);
        go.GetComponent <Item>().destroyOnPick = destroyOnPick;

        return(go);
    }
        public static Attachment ToAttachment(this BodyItem bodyItem)
        {
            switch (bodyItem)
            {
            case MessageBodyItemWithLink messageItemWithLink:
                return(CreateAttachment(messageItemWithLink, ZoomAttachmentContentTypes.MessageWithLink));

            case DropdownBodyItem dropdownItem:
                return(CreateAttachment(dropdownItem, ZoomAttachmentContentTypes.Dropdown));

            case AttachmentBodyItem attachmentItem:
                return(CreateAttachment(attachmentItem, ZoomAttachmentContentTypes.Attachment));

            case FieldsBodyItem fieldsItem:
                return(CreateAttachment(fieldsItem, ZoomAttachmentContentTypes.Fields));

            default:
                return(null);
            }
        }
Beispiel #14
0
        private List <FB2NotesPageSectionFile> AddV2StyleFbeNotesBody(BodyItem bodyItem)
        {
            List <FB2NotesPageSectionFile> documents = new List <FB2NotesPageSectionFile>();
            string docTitle = bodyItem.Name;

            Logger.Log.DebugFormat("Adding notes section : {0}", docTitle);
            var sectionDocument = new FB2NotesPageSectionFile
            {
                PageTitle            = docTitle,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                GuideRole            = GuideTypeEnum.Glossary,
                Content             = new Div(HTMLElementType.HTML5),
                NavigationParent    = null,
                NotPartOfNavigation = true,
                FileName            = BuildSectionFileName()
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV3
                {
                    CapitalDrop       = false,
                    Images            = _images,
                    MaxSize           = _v3Settings.HTMLFileMaxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV3();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                                                                   new TitleConverterParamsV3 {
                    Settings = converterSettings, TitleLevel = 1
                }));
            }
            documents.Add(sectionDocument);

            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                documents.AddRange(AddSection(section, sectionDocument));
            }
            return(documents);
        }
        /// <summary>
        /// Add and convert FBE style generated notes sections
        /// </summary>
        /// <param name="epubFile"></param>
        /// <param name="bodyItem"></param>
        private void AddFbeNotesBody(EPubFileV2 epubFile, BodyItem bodyItem)
        {
            string docTitle = bodyItem.Name;

            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                PageTitle            = docTitle,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                GuideRole            = GuideTypeEnum.Glossary,
                Type                = SectionTypeEnum.Links,
                Content             = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent    = null,
                NotPartOfNavigation = true,
                FileName            = string.Format("section{0}.xhtml", ++_sectionCounter),
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = false,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                                                                   new TitleConverterParamsV2 {
                    Settings = converterSettings, TitleLevel = 1
                }));
            }
            epubFile.AddXHTMLFile(sectionDocument);

            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(epubFile, section, sectionDocument, true);
            }
        }
Beispiel #16
0
        private void UpdatePlayerPanel(int id)
        {
            Player p = Game.Players[id];

            for (int i = 0; i < p.Body.Items.Count; i++)
            {
                Panel panel = GetPanelByPlayerPosition(id, i);
                if (panel == null)
                {
                    break;
                }
                BodyItem item = p.Body.Items[i];

                panel.Children.Clear();

                //TextBlock tb = new TextBlock() { Text = item.ToString() };

                Image im = new Image()
                {
                    Source = new BitmapImage(new Uri(GUITools.GetImageFromCard(item.Organ))),
                    Height = 100,
                    Width  = 200
                };

                panel.Children.Add(im);

                for (int j = 0; j < item.Modifiers.Count; j++)
                {
                    Card c = item.Modifiers[j];

                    Image imm = new Image()
                    {
                        Height = 50,
                        Width  = 75
                    };
                    imm.Source = new BitmapImage(new Uri(GUITools.GetImageFromCard(c)));
                    panel.Children.Add(imm);
                }
            }
        }
        public PlayerInventory() : base()
        {
            // init default inventory
            InventoryManager.Add(this);

            InventoryManager.CreateDefault <PlayerInventory>();

            CurrentWeapon   = WeaponItem.None();
            CurrentHeadItem = HeadItem.None();
            CurrentBodyItem = BodyItem.None();
            CurrentLegsItem = LegsItem.None();

            InventoryManager.AddToInventory <PlayerInventory>(WeaponItem.Longsword());
            InventoryManager.AddToInventory <PlayerInventory>(HeadItem.IronHelmet());
            InventoryManager.AddToInventory <PlayerInventory>(BodyItem.IronChestplate());
            InventoryManager.AddToInventory <PlayerInventory>(LegsItem.IronLeggings());

            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
        }
Beispiel #18
0
        private void UpdatePlayerPanel(int id)
        {
            Player p = Game.Players[id];
            Panel  pItem;
            int    i = 0;

            for (i = 0; i < p.Body.Items.Count; i++)
            {
                pItem = GetBodyItemPanel(id, i);

                pItem.Controls.Clear();

                BodyItem item = p.Body.Items[i];

                CCheckBox cb = FormUtilities.CreateButtonCheckBoxCard(item.Organ, 0.4, id, i, false);

                //cb.Click += CardClicked;
                cb.Click += CardClicked2;

                pItem.Controls.Add(cb);

                for (int j = 0; j < item.Modifiers.Count; j++)
                {
                    cb = FormUtilities.CreateButtonCheckBoxCard(item.Modifiers[j], 0.25, id, i, false);
                    //cb.Click += CardClicked;
                    cb.Click += CardClicked2;

                    pItem.Controls.Add(cb);
                }
            }
            while (i < Game.Settings.NumberToWin)
            {
                pItem = GetBodyItemPanel(id, i);
                pItem.Controls.Clear();
                i++;
            }
        }
    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);
    }
        public static Tensor scan(
            Func <Tensor, Tensor, Tensor> fn,
            Tensor elems,
            Tensor initializer      = null,
            int parallel_iterations = 10,
            bool back_prop          = true,
            bool swap_memory        = false,
            bool infer_shape        = true,
            bool reverse            = false,
            string name             = null)
        {
            bool input_is_sequence = nest.is_sequence(elems);

            Tensor[] input_flatten(Tensor x) => input_is_sequence?nest.flatten(x).ToArray() : new[] { x };
            Tensor input_pack(Tensor[] x) => input_is_sequence ? (Tensor)nest.pack_sequence_as(elems, x) : x[0];

            bool output_is_sequence;
            Func <Tensor, Tensor[]> output_flatten;
            Func <Tensor[], Tensor> output_pack;

            if (initializer == null)
            {
                output_is_sequence = input_is_sequence;
                output_flatten     = input_flatten;
                output_pack        = input_pack;
            }
            else
            {
                output_is_sequence = nest.is_sequence(initializer);
                output_flatten     = (x) => output_is_sequence?nest.flatten(x).ToArray() : new[] { x };
                output_pack        = (x) => output_is_sequence ? (Tensor)nest.pack_sequence_as(initializer, x) : x[0];
            }

            var elems_flat = input_flatten(elems);

            bool in_graph_mode = tf.Context.executing_eagerly();

            return(tf_with(ops.name_scope(name, "scan", new { elems_flat }), scope =>
            {
                if (in_graph_mode)
                {
                    // todo tf.net doesn't expose .caching_device
                    //// Any get_variable calls in fn will cache the first call locally
                    //// and not issue repeated network I/O requests for each iteration.
                    //var varscope = variable_scope.get_variable_scope();
                    //bool varscope_caching_device_was_none = false;
                    //if (varscope.caching_device = null)
                    //{
                    //    //      varscope.set_caching_device(lambda op: op.device)
                    //    //      varscope_caching_device_was_none = True
                    //}
                }

                elems_flat = elems_flat.Select(elem => ops.convert_to_tensor(elem, name: "elem")).ToArray();

                var n = tensor_shape.dimension_value(elems_flat[0].shape[0]);

                // todo python had the below but dimension_value returns int which can't be null
                //if (n == null)
                //{
                //    n = array_ops.shape(elems_flat[0])[0];
                //}

                var elems_ta = elems_flat.Select(elem => new TensorArray(
                                                     elem.dtype,
                                                     size: tf.constant(n),
                                                     dynamic_size: false,
                                                     element_shape: elem.shape.Skip(1).ToArray(),
                                                     infer_shape: true)).ToList();

                for (int index = 0; index < elems_ta.Count; index++)
                {
                    elems_ta[index].unstack(elems_flat[index]);
                }

                Tensor[] a_flat;
                int i;
                if (initializer == null)
                {
                    a_flat = elems_ta.Select(elem => elem.read(tf.constant(reverse ? n - 1 : 0))).ToArray();
                    i = 1;
                }
                else
                {
                    Tensor[] initializer_flat = output_flatten(initializer);
                    a_flat = initializer_flat.Select(init => ops.convert_to_tensor(init)).ToArray();
                    i = 0;
                }

                var accs_ta = a_flat.Select(init => new TensorArray(
                                                dtype: init.dtype,
                                                size: tf.constant(n),
                                                element_shape: infer_shape ? init.shape : null,
                                                dynamic_size: false,
                                                infer_shape: infer_shape)).ToArray();

                if (initializer == null)
                {
                    for (int index = 0; index < accs_ta.Length; index++)
                    {
                        accs_ta[index].write(tf.constant(reverse ? n - 1 : 0), a_flat[index]);
                    }
                }

                BodyItem compute(BodyItem item)
                {
                    var packed_elems = input_pack(elems_ta.Select(elem_ta => elem_ta.read(item.I)).ToArray());
                    var packed_a = output_pack(item.A_Flat);
                    var a_out = fn(packed_a, packed_elems);

                    var flat_a_out = output_flatten(a_out);
                    for (int j = 0; j < item.Accs_ta.Length; j++)
                    {
                        item.Accs_ta[j].write(item.I, flat_a_out[j]);
                    }

                    var next_i = reverse ? item.I - 1 : item.I + 1;
                    return new BodyItem(next_i, flat_a_out, item.Accs_ta);
                }

                int initial_i;
                Func <BodyItem, Tensor> condition;
                if (reverse)
                {
                    initial_i = n - 1 - i;
                    condition = x => x.I >= 0;
                }
                else
                {
                    initial_i = i;
                    condition = x => x.I < n;
                }

                BodyItem bodyItem =
                    control_flow_ops.while_loop(
                        condition,
                        compute,
                        new BodyItem(tf.constant(initial_i), a_flat, accs_ta),
                        parallel_iterations: parallel_iterations,
                        back_prop: back_prop,
                        swap_memory: swap_memory,
                        maximum_iterations: tf.constant(n));

                var results_flat = bodyItem.Accs_ta.Select(r => r.stack()).ToArray();

                var n_static = new Dimension(tensor_shape.dimension_value(elems_flat[0].TensorShape.with_rank_at_least(1).dims[0]));

                foreach (var elem in elems_flat.Skip(1))
                {
                    n_static.merge_with(new Dimension(tensor_shape.dimension_value(elem.TensorShape.with_rank_at_least(1).dims[0])));
                }

                foreach (Tensor r in results_flat)
                {
                    r.set_shape(new TensorShape(n_static).concatenate(r.dims.Skip(1).ToArray()));
                }

                // todo get working when the above caching_device is fixed
                //if (in_graph_mode && varscope_caching_device_was_none) {
                //    varscope.set_caching_device(None);
                //}

                return output_pack(results_flat);
            }));
        }
Beispiel #21
0
 public float GetArmor(BodyItem alternative)
 {
     return(head.equipedItem.armor + alternative.armor + shield.equipedItem.armor + (horse ? horse.equipedItem.armor : 0));
 }
Beispiel #22
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);
     }
 }
Beispiel #23
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);
     }
 }
Beispiel #24
0
        /// <summary>
        /// Loads the file as data from XML data
        /// </summary>
        /// <param name="fileDocument">XML document containing the file</param>
        /// <param name="loadHeaderOnly">if true loads only header information</param>
        public void Load(XDocument fileDocument, bool loadHeaderOnly)
        {
            if (fileDocument == null)
            {
                throw new ArgumentNullException(nameof(fileDocument));
            }
            if (fileDocument.Root == null)
            {
                throw new ArgumentException("Document's root is NULL (empty document passed)");
            }

            // theoretically the namespace should be "http://www.gribuser.ru/xml/fictionbook/2.0" but just to be sure with invalid files
            _fileNameSpace = fileDocument.Root.GetDefaultNamespace();

            _styles.Clear();
            IEnumerable <XElement> xStyles = fileDocument.Root.Elements(_fileNameSpace + StyleElement.StyleElementName).ToArray();

            // attempt to load some bad FB2 with wrong namespace
            if (!xStyles.Any())
            {
                xStyles = fileDocument.Elements(StyleElement.StyleElementName);
            }
            foreach (var style in xStyles)
            {
                var element = new StyleElement();
                try
                {
                    element.Load(style);
                    _styles.Add(element);
                }
                catch
                {
                    // ignored
                }
            }

            LoadDescriptionSection(fileDocument);

            if (!loadHeaderOnly)
            {
                XNamespace namespaceUsed = _fileNameSpace;
                // Load body elements (first is main text)
                if (fileDocument.Root != null)
                {
                    IEnumerable <XElement> xBodyElements = fileDocument.Root.Elements(_fileNameSpace + Fb2TextBodyElementName).ToArray();
                    // try to read some badly formatted FB2 files
                    if (!xBodyElements.Any())
                    {
                        namespaceUsed = "";
                        xBodyElements = fileDocument.Root.Elements(namespaceUsed + Fb2TextBodyElementName);
                    }
                    foreach (var body in xBodyElements)
                    {
                        var bodyItem = new BodyItem {
                            NameSpace = namespaceUsed
                        };
                        try
                        {
                            bodyItem.Load(body);
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                        _bodiesList.Add(bodyItem);
                    }
                }
                if (_bodiesList.Count > 0)
                {
                    _mainBody = _bodiesList[0];
                }


                // Load binaries sections (currently images only)
                if (fileDocument.Root != null)
                {
                    IEnumerable <XElement> xBinaryElements = fileDocument.Root.Elements(namespaceUsed + Fb2BinaryElementName).ToArray();
                    if (!xBinaryElements.Any())
                    {
                        xBinaryElements = fileDocument.Root.Elements(Fb2BinaryElementName);
                    }
                    foreach (var binaryElement in xBinaryElements)
                    {
                        var item = new BinaryItem();
                        try
                        {
                            item.Load(binaryElement);
                        }
                        catch
                        {
                            continue;
                        }
                        // add just unique IDs to fix some invalid FB2s
                        if (!_binaryObjects.ContainsKey(item.Id))
                        {
                            _binaryObjects.Add(item.Id, item);
                        }
                    }
                }
            }
        }
Beispiel #25
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();
        }
    }
Beispiel #26
0
    public void OnIconClick(InventoryIcon icon)
    {
        Item item = GetItem(icon.item);

        if (!item)
        {
            return;
        }

        if (icon.item.itemType == Item.ItemType.Resource && interactionUI.resourceContainer != null)
        {
            ResourceItem resource = (ResourceItem)item;
            if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1))
            {
                string resourceName   = resource.resource.name;
                int    transfertCount = Input.GetMouseButtonUp(0) ? 1 : 10;
                transfertCount = Mathf.Min(transfertCount, inventory.inventory[icon.item]);
                transfertCount = interactionUI.resourceContainer.TryAddItem(resourceName, transfertCount);

                if (transfertCount > 0)
                {
                    inventory.RemoveItem(icon.item, transfertCount, true);
                }
                else if (interactionUI.resourceContainer.Accept(resourceName))
                {
                    PlayerController.MainInstance.interactionController.ThrowHelp("Container", "full");  // no icon for storage
                }
                else
                {
                    PlayerController.MainInstance.interactionController.ThrowHelp(resourceName, "nok");
                }
            }
        }
        else
        {
            if (item.usable && Input.GetMouseButtonUp(0))
            {
                Debug.Log("Use item " + icon.name);
                inventory.RemoveItem(icon.item, 1, true);
                PlayerController.MainInstance.RecomputeLoadFactor();
            }
            else if (item.equipable && Input.GetMouseButtonUp(1))
            {
                PlayerController player = PlayerController.MainInstance;

                if (IsEquipementIcon(icon)) // unequip
                {
                    if (icon.item.itemType == Item.ItemType.Weapon)
                    {
                        if (player.weapon.equipedItem.type != WeaponItem.Type.None)
                        {
                            Item old = Arsenal.Instance.Get(player.weapon.equipedItem.type, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            if (ToolDictionary.instance.tools.ContainsKey(player.weapon.equipedItem.toolFamily))
                            {
                                FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools[player.weapon.equipedItem.toolFamily].collectionSound));
                            }
                            player.weapon.Equip(WeaponItem.Type.None);
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Backpack)
                    {
                        if (player.backpack.equipedItem.type != BackpackItem.Type.None)
                        {
                            Item old = Arsenal.Instance.Get(player.backpack.equipedItem.type, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            if (ToolDictionary.instance.tools.ContainsKey(player.backpack.equipedItem.toolFamily))
                            {
                                FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools[player.backpack.equipedItem.toolFamily].collectionSound));
                            }
                            player.backpack.Equip(BackpackItem.Type.None);
                            player.inventory.capacity = player.backpack.equipedItem.capacity;
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Body)
                    {
                        if (!player.body.equipedItem.IsDefault())
                        {
                            Item old = Arsenal.Instance.Get(player.body.equipedItem.type, false, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            FinishedUnequip(player, player.interactionController.wearBody[Mathf.Clamp((int)BodyItem.getCategory(player.body.equipedItem.type), 0, player.interactionController.wearBody.Count - 1)]);
                            player.body.Equip(BodyItem.defaultType, player.horse ? player.horse.equipedItem.type != HorseItem.Type.None : false);
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Head)
                    {
                        if (!player.head.equipedItem.IsDefault())
                        {
                            Item old = Arsenal.Instance.Get(player.head.equipedItem.type, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            FinishedUnequip(player, player.interactionController.wearHead[Mathf.Clamp((int)HeadItem.getCategory(player.head.equipedItem.type), 0, player.interactionController.wearHead.Count - 1)]);
                            player.head.Equip(HeadItem.defaultType);
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Horse)
                    {
                        if (player.horse && player.horse.equipedItem.type != HorseItem.Type.None)
                        {
                            Item old = Arsenal.Instance.Get(player.horse.equipedItem.type, false);
                            if (old)
                            {
                                GameObject dropped = InstanciatePickable(icon.item);
                                dropped.transform.position = player.transform.position + Vector3.right;
                                MapModifier.instance.grid.AddGameObject(dropped, ConstructionLayer.LayerType.Decoration, false, false);
                            }
                            player.interactionController.Unmount();
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Second)
                    {
                        if (player.secondHand.equipedItem.type != SecondItem.Type.None)
                        {
                            Item old = Arsenal.Instance.Get(player.secondHand.equipedItem.type, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools["Hammer"].collectionSound));
                            player.secondHand.Equip(SecondItem.Type.None);
                        }
                    }
                    else if (icon.item.itemType == Item.ItemType.Shield)
                    {
                        if (player.shield.equipedItem.type != ShieldItem.Type.None)
                        {
                            Item old = Arsenal.Instance.Get(player.shield.equipedItem.type, false);
                            if (old)
                            {
                                inventory.AddItem(old.Summarize(), 1);
                            }
                            FinishedUnequip(player, player.interactionController.wearHead[Mathf.Clamp((int)HeadItem.Category.Medium, 0, player.interactionController.wearHead.Count - 1)]);
                            player.shield.Equip(ShieldItem.Type.None);
                        }
                    }
                    else
                    {
                        Debug.LogWarning("No equip methode for this type of object " + icon.item.itemType.ToString());
                    }
                }
                else // equip
                {
                    if (icon.item.itemType == Item.ItemType.Weapon)
                    {
                        Item old = Arsenal.Instance.Get(player.weapon.equipedItem.type, false);
                        if (old)
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableWeapon, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Backpack)
                    {
                        Item old = Arsenal.Instance.Get(player.backpack.equipedItem.type, false);
                        if (old)
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableBackpack, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Body)
                    {
                        Item old = Arsenal.Instance.Get(player.body.equipedItem.type, false, false);
                        if (old && !player.body.equipedItem.IsDefault())
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableBody, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Head)
                    {
                        Item old = Arsenal.Instance.Get(player.head.equipedItem.type, false);
                        if (old && !player.head.equipedItem.IsDefault())
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableHead, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Horse)
                    {
                        Item old = Arsenal.Instance.Get(player.horse.equipedItem.type, false);
                        if (old)
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableHorse, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Second)
                    {
                        Item old = Arsenal.Instance.Get(player.secondHand.equipedItem.type, false);
                        if (old)
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableSecond, item.gameObject);
                    }
                    else if (icon.item.itemType == Item.ItemType.Shield)
                    {
                        Item old = Arsenal.Instance.Get(player.shield.equipedItem.type, false);
                        if (old)
                        {
                            inventory.AddItem(old.Summarize(), 1);
                        }
                        player.interactionController.EquipInteraction(InteractionType.Type.pickableShield, item.gameObject);
                    }
                    else
                    {
                        Debug.LogWarning("No equip methode for this type of object " + icon.item.itemType.ToString());
                    }
                    inventory.RemoveItem(icon.item, 1, true);
                }

                player.RecomputeLoadFactor();
            }
        }
    }
        void Init()
        {
            BackgroundColor           = Constants.BackgroundColor;
            Lbl_Username.TextColor    = Constants.MainTextColor;
            Lbl_Password.TextColor    = Constants.MainTextColor;
            ActivitySpinner.IsVisible = false;
            LoginIcon.HeightRequest   = Constants.LoginIconHeight;

            Entry_Username.Completed += (sender, e) => Entry_Password.Focus();
            Entry_Password.Completed += (sender, e) => SignInProcedure(sender, e);
            Constants.towns           = new ObservableCollection <TownModel>();
            Constants.Hero            = new Models.Character()
            {
                hp = 40, mp = 10, inventory = new Models.Inventory(), name = "Szymon"
            };
            Constants.Hero.updateStats();
            Constants.levelRate.Add(1, 50);
            Constants.levelRate.Add(2, 75);
            Constants.levelRate.Add(3, 125);
            Constants.levelRate.Add(4, 200);
            Constants.levelRate.Add(5, 300);
            Constants.levelRate.Add(6, 430);
            Constants.levelRate.Add(7, 580);
            Constants.levelRate.Add(8, 700);
            Constants.levelRate.Add(9, 1000);
            Constants.levelRate.Add(10, 1350);
            Constants.levelRate.Add(11, 1900);
            Constants.levelRate.Add(12, 2600);
            Constants.levelRate.Add(13, 3500);
            Constants.levelRate.Add(14, 4500);
            Constants.levelRate.Add(15, 6000);
            Constants.levelRate.Add(16, 7800);
            Constants.levelRate.Add(17, 9800);
            Constants.levelRate.Add(18, 12500);
            Constants.levelRate.Add(19, 14000);
            Constants.levelRate.Add(20, 18000);
            Constants.levelRate.Add(21, 25000);
            Constants.levelRate.Add(22, 35000);
            Constants.levelRate.Add(23, 50000);
            Constants.levelRate.Add(24, 67000);
            Constants.levelRate.Add(25, 83500);

            /*Constants.levelRate.Add(26, 50);
             *
             */
            //Przedmioty Startowe dopóki nie ma dwóch miast jest to na sztywno
            ConsumableItem item1 = new ConsumableItem()
            {
                name = "Mikstura Życia", type = 0, hpRestore = 500, price = 50, image = "elixir.png", isConsuamble = true
            };
            OneHandItem oneHand1 = new OneHandItem()
            {
                atk = 3, type = 1, name = "Sztylet", price = 200, image = "dagger.png", IsEquable = true
            };
            ShieldItem ShieldItem1 = new ShieldItem()
            {
                def = 3, type = 2, name = "Prosta Tarcza", price = 200, image = "shield.png", IsEquable = true
            };
            HelmetItem helmet1 = new HelmetItem()
            {
                mdef = 2, type = 3, name = "Prosty Hełm", price = 200, image = "viking.png", IsEquable = true
            };
            BodyItem body1 = new BodyItem()
            {
                def = 3, mdef = 1, type = 4, name = "Łachmany", price = 500, image = "armor.png", IsEquable = true
            };
            BootItem boot1 = new BootItem()
            {
                luck = 3, type = 5, name = "Buty", price = 200, image = "boots.png", IsEquable = true
            };
            RingItem ring1 = new RingItem()
            {
                hp = 30, type = 6, name = "Pierscień Życia", price = 200, image = "shenRing.png", IsEquable = true
            };
            //  TwoHandItem twohand = new TwoHandItem() { atk = 3, type=7, name = "Sztylet",  price = 200, image = "swords.png", IsEquable = true };

            ObservableCollection <Models.Item> items = new ObservableCollection <Item>();

            items.Add(item1);
            items.Add(oneHand1);
            items.Add(ShieldItem1);
            items.Add(helmet1);
            items.Add(body1);
            items.Add(boot1);
            items.Add(ring1);
            //Twohand!

            //Skille
            Constants.allSkills = new List <Skill>();
            AttackSkill wolfBite = new AttackSkill()
            {
                name = "Ugryzienie", manaCost = 2, skillStr = 5
            };


            Quest firstQuest = new Quest()
            {
                exp = 30, done = 0, desc = "Tutaj znajduje się opis pierwszego questa", gold = 50, itemReward = null, name = "Pierwszy Quest", reqDone = 3, reward = "armor.png"
            };
            ObservableCollection <Quest> firstTown = new ObservableCollection <Quest>();

            firstTown.Add(firstQuest);

            //enemies


            Enemy enemy = new Enemy()
            {
                name = "Osa", rarity = "Common", image = "bee.png", def = 4, exp = 10, gold = 10, hp = 40, id = 0, items = new List <Item>(), loot = new List <Item>(), mag = 3, str = 8, luck = 5, lvl = 1, mp = 12, spr = 3, speed = 9, maxHP = 40, maxMP = 12
            };
            Enemy wolf = new Enemy()
            {
                name = "Wilk", rarity = "Common", image = "wolf.png", def = 6, freqAi = 69, isAi = true, exp = 12, gold = 9, hp = 60, id = 1, items = new List <Item>(), loot = new List <Item>(), mag = 1, str = 14, luck = 4, lvl = 1, mp = 16, spr = 6, skills = new List <Skill>(), speed = 12, maxHP = 60, maxMP = 16
            };

            wolf.skills.Add(wolfBite);



            TownModel town = new TownModel()
            {
                image = "village.jpg", noTown = 0, Name = "Deling", Quests = firstTown, Shop = items, isUnlocked = true
            };

            Constants.towns.Add(town);
            Constants.actualTown           = 0;
            Constants.Hero.inventory.items = new ObservableCollection <Item>();
            Constants.allItems             = new Dictionary <string, Item>();
            Constants.allItems.Add(item1.name, item1);
            Constants.allItems.Add(oneHand1.name, oneHand1);
            Constants.allItems.Add(ShieldItem1.name, ShieldItem1);
            Constants.allItems.Add(helmet1.name, helmet1);
            Constants.allItems.Add(body1.name, body1);
            Constants.allItems.Add(boot1.name, boot1);
            Constants.allItems.Add(ring1.name, ring1);

            enemy.addLoot(new List <Item>()
            {
                item1
            });


            Constants.allEnemies = new List <Enemy>();
            Constants.allEnemies.Add(enemy);
            Constants.allEnemies.Add(wolf);
        }
Beispiel #28
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);
    }