コード例 #1
0
    public ReadGuideVoiceTaskConfig(string xmlFilePath)
    {
        //TextAsset xmlfile = Resources.Load(xmlFilePath) as TextAsset;
        ResourceItem xmlfileUnit = ResourcesManager.Instance.loadImmediate(xmlFilePath, ResourceType.ASSET);
        TextAsset    xmlfile     = xmlfileUnit.Asset as TextAsset;

        if (!xmlfile)
        {
            Debug.LogError(" error infos: 没有找到指定的xml文件:" + xmlFilePath);
        }

        xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlfile.text);

        XmlNodeList infoNodeList = xmlDoc.SelectSingleNode("Audio").ChildNodes;

        for (int i = 0; i < infoNodeList.Count; i++)     //(XmlNode xNode in infoNodeList)
        {
            if ((infoNodeList[i] as XmlElement).GetAttributeNode("id") == null)
            {
                continue;
            }

            string typeName = (infoNodeList[i] as XmlElement).GetAttributeNode("id").InnerText;

            CVoiceTask voiceInfo = new CVoiceTask();
            voiceInfo.TaskId   = Convert.ToInt32(typeName);
            voiceInfo.TaskType = GuideTaskType.VoiceTask;
            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
            {
                #region 搜索
                switch (xEle.Name)
                {
                case "Audio":
                    voiceInfo.VoicePath = Convert.ToString(xEle.InnerText);
                    break;
                }
                #endregion
            }
            CTaskBase.voiceTaskDic.Add(voiceInfo.TaskId, voiceInfo);
        }
    }
コード例 #2
0
        public async Task Resource_ResourceItem_Create_Key()
        {
            var testEntity   = new ResourceItem();
            var resultEntity = new ResourceItem();
            var oldId        = Defaults.Integer;
            var oldKey       = Defaults.Guid;
            var newId        = Defaults.Integer;
            var newKey       = Defaults.Guid;

            // Create and insert record
            testEntity.Fill(testEntities[Arithmetic.Random(1, testEntities.Count)]);
            testEntity.Id  = Defaults.Integer;
            testEntity.Key = Guid.NewGuid();
            oldId          = testEntity.Id;
            oldKey         = testEntity.Key;
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Id == Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(!testEntity.FailedRules.Any());

            // Do Insert and check passed entity and returned entity
            using (var writer = new EntityWriter <ResourceItem>(testEntity, new ResourceItemSPConfig()))
            {
                resultEntity = await writer.CreateAsync();
            }
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);
            Assert.IsTrue(!resultEntity.FailedRules.Any());

            // Pull from DB and retest
            testEntity = new EntityReader <ResourceItem>().GetById(resultEntity.Id);
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.Id != oldId);
            Assert.IsTrue(testEntity.Key == oldKey);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(!testEntity.FailedRules.Any());

            // Cleanup
            RecycleBin.Add(testEntity.Key);
        }
コード例 #3
0
        private void Start()
        {
            #region INVENTORY TESTS
            if (shouldTestInventory)
            {
                Debug.Log("Start Testing inventory UUID is [" + TheInventory.InventoryUUID + "]");

                // Testing adding item to the inventory
                ResourceItem ritem = new ResourceItem();
                ritem.BaseData.ID         = 1;
                ritem.BaseData.UniqueUUID = ItemA_ID;
                ritem.BaseData.Name       = "AK47";
                //ritem.BaseData.Description = "Weapon mid-range";

                Debug.Log(ritem.BaseData.Name);

                TestAddItemToInventory(ritem);

                // Get specific item
                TestGetSpecificItem(ritem);

                // Testing updating item on inventory
                ResourceItem ritem2 = new ResourceItem();
                ritem2.BaseData.ID          = 1;
                ritem2.BaseData.UniqueUUID  = ItemB_ID;
                ritem2.BaseData.Name        = "AK47";
                ritem2.BaseData.Description = "Weapon mid-range altered.";

                TestUpdateItemInTheInventory(ritem2);

                // Test remove item
                TestRemoveItemFromInventory(ritem2);
                // Count all items
                TestCountAllItemsFromInventory(ritem, ritem2);

                // Get all items
                TestGetAllItemsFromInventory(ritem, ritem2);
            }
            #endregion INVENTORY TESTS

            //EventMessager.Instance.Raise(new EventTest(ItemA_ID));
        }
コード例 #4
0
        private async Task ShowFolderSaveDialogAsync(ResourceItem resourceItem)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                var progress = CreateAndShowDownloadFolderForm();

                Action <bool, ResourceItem, int, int> notify = (success, item, index, total) =>
                {
                    int pct = (int)(100.0 * index / total);
                    progress.lblPct.Text        = $@"{pct}%";
                    progress.progressBar1.Value = pct;
                };

                ResourceLoadStatus status = ResourceLoadStatus.Unknown;
                try
                {
                    status = await _client.DownloadFolderAsync(resourceItem, folderBrowserDialog1.SelectedPath, notify, _cancelToken);

                    progress.lblPct.Text        = "100%";
                    progress.progressBar1.Value = 100;

                    await Task.Delay(TimeSpan.FromMilliseconds(500), _cancelToken);
                }
                catch (Exception)
                {
                }
                finally
                {
                    if (status == ResourceLoadStatus.Ok)
                    {
                        Log($"Folder '{resourceItem.DisplayName}' saved to '{folderBrowserDialog1.SelectedPath}'");
                    }
                    else
                    {
                        Log($"Folder '{resourceItem.DisplayName}' was not saved correctly : {status}");
                    }

                    progress.Close();
                    InitCancellationTokenSource();
                }
            }
        }
コード例 #5
0
        public async Task Resource_ResourceItem_Update()
        {
            var resultEntity = new ResourceItem();
            var testEntity   = new ResourceItem();
            var uniqueValue  = Guid.NewGuid().ToString().Replace("-", "");
            var lastKey      = Defaults.Guid;
            var originalId   = Defaults.Integer;
            var originalKey  = Defaults.Guid;

            await Resource_ResourceItem_Create();

            lastKey = ResourceItemTests.RecycleBin.LastOrDefault();

            testEntity  = new EntityReader <ResourceItem>().GetByKey(lastKey);
            originalId  = testEntity.Id;
            originalKey = testEntity.Key;
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(!testEntity.FailedRules.Any());

            testEntity.ItemName     = uniqueValue;
            testEntity.ResourceName = uniqueValue;
            using (var writer = new EntityWriter <ResourceItem>(testEntity, new ResourceItemSPConfig()))
            {
                resultEntity = await writer.SaveAsync();
            }
            Assert.IsTrue(!resultEntity.IsNew);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.Id == resultEntity.Id && resultEntity.Id == originalId);
            Assert.IsTrue(testEntity.Key == resultEntity.Key && resultEntity.Key == originalKey);
            Assert.IsTrue(!testEntity.FailedRules.Any());

            testEntity = new EntityReader <ResourceItem>().GetByKey(originalKey);
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id == resultEntity.Id && resultEntity.Id == originalId);
            Assert.IsTrue(testEntity.Key == resultEntity.Key && resultEntity.Key == originalKey);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(!testEntity.FailedRules.Any());
        }
コード例 #6
0
        private void LoadOneRune(uint runeid, int num)
        {
            RuneConfigInfo sRuneConfigInfo = ConfigReader.GetRuneFromID(runeid);
            bool           isNewRune       = !nowAllRuneGO.ContainsKey(runeid);

            if (isNewRune)
            {
                ResourceItem objUnit = ResourcesManager.Instance.loadImmediate(GameConstDefine.LoadGameMarketRuneItem, ResourceType.PREFAB);
                GameObject   obj     = GameObject.Instantiate(objUnit.Asset) as GameObject;

                UIEventListener.Get(obj).onClick += onClickRuneCard;

                obj.transform.parent        = mGrid.transform;
                obj.transform.localScale    = Vector3.one;
                obj.transform.localPosition = Vector3.zero;

                obj.name = (runeid).ToString();

                UISprite icon = obj.transform.Find("Icon").GetComponent <UISprite>();
                icon.spriteName = sRuneConfigInfo.Icon;

                UILabel levelLabel = obj.transform.Find("NumLabel").GetComponent <UILabel>();
                levelLabel.text = Convert.ToString(num);

                UILabel desptionLabel = obj.transform.Find("StausLabel").GetComponent <UILabel>();
                desptionLabel.text = sRuneConfigInfo.Description;

                nowAllRuneGOCache snowAllRuneGOCache = new nowAllRuneGOCache();
                snowAllRuneGOCache.go    = obj;
                snowAllRuneGOCache.id    = runeid;
                snowAllRuneGOCache.level = sRuneConfigInfo.level;

                nowAllRuneGO.Add(runeid, snowAllRuneGOCache);
            }
            else
            {
                var obj = nowAllRuneGO[runeid];

                UILabel levelLabel = obj.go.transform.Find("NumLabel").GetComponent <UILabel>();
                levelLabel.text = Convert.ToString(num);
            }
        }
コード例 #7
0
        public List <ResourceItem> AddResourceItem(IEnumerable <string> filesPath, IEnumerable <string> fileTypeSuffix = null)
        {
            if (filesPath == null)
            {
                return((List <ResourceItem>)null);
            }
            string              path                   = filesPath.FirstOrDefault <string>();
            ResourceFolder      rootFolder             = this.CurrentResourceGroup.RootFolder;
            List <ResourceItem> resourceItemList1      = new List <ResourceItem>();
            List <ResourceItem> resourceItemList2      = new List <ResourceItem>();
            IProgressMonitor    consoleProgressMonitor = Services.ProgressMonitors.GetConsoleProgressMonitor(false);

            if ((FilePath)Path.GetDirectoryName(path) != rootFolder.BaseDirectory)
            {
                HashSet <string>    fileTypeSuffix1   = fileTypeSuffix == null ? (HashSet <string>)null : new HashSet <string>(fileTypeSuffix, (IEqualityComparer <string>)StringComparer.OrdinalIgnoreCase);
                List <ResourceItem> resourceItemList3 = this.ImportResources(rootFolder, filesPath, consoleProgressMonitor, CancellationToken.None, fileTypeSuffix1);
                if (null != resourceItemList3)
                {
                    resourceItemList1.AddRange((IEnumerable <ResourceItem>)resourceItemList3);
                    resourceItemList2.AddRange((IEnumerable <ResourceItem>)resourceItemList3);
                }
            }
            else
            {
                foreach (string filePath in filesPath)
                {
                    ResourceItem resourceItem = this.CurrentResourceGroup.FindResourceItem(filePath);
                    if (resourceItem == null)
                    {
                        resourceItem = this.AddResourceItem(rootFolder, (FilePath)filePath, consoleProgressMonitor);
                        resourceItemList2.Add(resourceItem);
                    }
                    if (resourceItem != null)
                    {
                        resourceItemList1.Add(resourceItem);
                    }
                }
            }
            Services.ProjectOperations.CurrentSelectedSolution.Save(consoleProgressMonitor);
            Services.EventsService.GetEvent <AddResourcesEvent>().Publish(new AddResourcesArgs(rootFolder, (IEnumerable <ResourceItem>)resourceItemList2, true));
            return(resourceItemList1);
        }
コード例 #8
0
ファイル: ExcelWriter.cs プロジェクト: SparrowBrain/ezResx
        private void WriteLocaleValues(IXLRow currentRow, ResourceItem resource)
        {
            foreach (var value in resource.Values)
            {
                if (value.Key == DefaultCultureColumn)
                {
                    continue;
                }

                var columnHeader = _sheet.FirstRow().Cells().FirstOrDefault(x => x.Value.ToString() == value.Key);
                if (columnHeader == null)
                {
                    _sheet.FirstRow().LastCellUsed().CellRight().SetValue(value.Key);
                    columnHeader = _sheet.LastColumnUsed().FirstCell();
                }

                currentRow.Cell(columnHeader.WorksheetColumn().ColumnNumber()).SetDataType(XLCellValues.Text);
                currentRow.Cell(columnHeader.WorksheetColumn().ColumnNumber()).SetValue(value.Value);
            }
        }
コード例 #9
0
 /// <summary>
 /// Copies all values from source to target resource set
 /// </summary>
 private static void CopyResourceSetContent(ResourceSet source, ResourceSet target, BaseValuesFilter filter)
 {
     foreach (var sourceResourceItem in source.Values.Where(p => !p.Locked))
     {
         if (!target.ContainsKey(sourceResourceItem.Name))
         {
             var targetResourceItem = new ResourceItem();
             targetResourceItem.Name  = sourceResourceItem.Name;
             targetResourceItem.Value = sourceResourceItem.Value;
             target.Add(sourceResourceItem.Name, targetResourceItem);
         }
         else
         {
             if (target[sourceResourceItem.Name].ValueEmpty || filter == BaseValuesFilter.AllUnlocked)
             {
                 target[sourceResourceItem.Name].Value = sourceResourceItem.Value;
             }
         }
     }
 }
コード例 #10
0
    /// <summary>
    /// 根据ResourceObj卸载资源
    /// </summary>
    /// <param name="resObj"></param>
    /// <param name="destroyObj"></param>
    /// <returns></returns>
    public bool ReleaseResource(ResourceObj resObj, bool destroyObj = false)
    {
        if (resObj == null)
        {
            return(false);
        }

        ResourceItem item = null;

        if (!AssetDic.TryGetValue(resObj.m_Crc, out item) || item == null)
        {
            Debug.Log("AssetDic里不存在该资源: " + resObj.m_CloneObj.name + " 可能释放多次!");
        }

        GameObject.Destroy(resObj.m_CloneObj);

        item.RefCount--;
        DestroyResourceItem(item, destroyObj);
        return(true);
    }
コード例 #11
0
 internal void OnDeserialize()
 {
     if (string.IsNullOrEmpty(path))
     {
         parent = ResourceDB.Instance.root;
     }
     else
     {
         parent = ResourceDB.GetFolder(path);
     }
     if (parent != null)
     {
         parent.childs.Add(name, this);
     }
     if (type == Type.Folder)
     {
         childs = new Dictionary <string, ResourceItem>();
     }
     objectType = System.Type.GetType(objectTypeName);
 }
コード例 #12
0
    ResourceItem FindGameObject(string path)
    {
        ResourceItem item = null;

        for (int i = 0; i < cacheList.Count; i++)
        {
            if (cacheList[i].path == path && cacheList[i].handle == -1)
            {
                item = cacheList[i];
                break;
            }
        }

        if (item == null)
        {
            item = CreateGameObject(path);
        }

        return(item);
    }
コード例 #13
0
 protected virtual NodeObject CreateObjectFromFile(ResourceItem resourceFile)
 {
     if (resourceFile is ImageFile || resourceFile is PlistImageFile)
     {
         return((NodeObject) new SpriteObject(resourceFile as ResourceFile));
     }
     if (resourceFile is Project)
     {
         Project project = resourceFile as Project;
         if (project.IsGameProject())
         {
             return((NodeObject) new ProjectNodeObject(project));
         }
     }
     else if (resourceFile is AudioFile)
     {
         return((NodeObject) new SimpleAudioObject(resourceFile as ResourceFile));
     }
     return((NodeObject)null);
 }
コード例 #14
0
        private void checkCircleRes()
        {
            string path = GameConstDefine.LoadGameOtherEffectPath;

            if (CircleRed == null)
            {
                ResourceItem objUnit = ResourcesManager.Instance.loadImmediate(path + "guangquan_red", ResourceType.PREFAB);
                CircleRed = GameObject.Instantiate(objUnit.Asset) as GameObject;
            }
            if (CircleGreen == null)
            {
                ResourceItem objUnit = ResourcesManager.Instance.loadImmediate(path + "guangquan_green", ResourceType.PREFAB);
                CircleGreen = GameObject.Instantiate(objUnit.Asset) as GameObject;
            }
            if (CircleYellow == null)
            {
                ResourceItem objUnit = ResourcesManager.Instance.loadImmediate(path + "guangquan_yellow", ResourceType.PREFAB);
                CircleYellow = GameObject.Instantiate(objUnit.Asset) as GameObject;
            }
        }
コード例 #15
0
    /// <summary>
    /// 加载资源
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="name"></param>
    /// <returns></returns>
    public ResourceRes<T> Load<T>(string name) where T : UnityEngine.Object
    {
        ResourceItem item = null;

        item = GetItemFromName(name);
        if (item == null)
        {
            return null;
        }
        T obj = Resources.Load<T>(item.path);
        if (obj == null)
        {
            return null;
        }
        else
        {
            return new ResourceRes<T>(name, obj);
        }

    }
コード例 #16
0
 public void add(int slot, Item item)
 {
     if (item is ResourceItem)
     {
         ResourceItem toTake = (ResourceItem)item;
         ResourceItem has    = findResource(toTake.resource);
         if (has == null)
         {
             items.Insert(slot, toTake);
         }
         else
         {
             has.count += toTake.count;
         }
     }
     else
     {
         items.Insert(slot, item);
     }
 }
コード例 #17
0
 public bool ExtractFileFromLS(ResourceItem rItem, string outputFile)
 {
     try
     {
         if (rItem.LSEntryInfo == null)
         {
             LogHelper.Error(string.Format("The LS information for {0} could not be found, can't extract the file.", rItem.AbsolutePath));
             return(false);
         }
         byte[] fileSize = GetFileDataDecompressed(rItem.LSEntryInfo.DTOffset + rItem.OffInPack, rItem.CmpSize, rItem.LSEntryInfo.DTIndex);
         Directory.CreateDirectory(Path.GetDirectoryName(outputFile));
         File.WriteAllBytes(outputFile, fileSize);
         return(true);
     }
     catch (Exception e)
     {
         LogHelper.Error(string.Format("Error extracting {0}, error: {1}", rItem.AbsolutePath, e.Message));
         return(false);
     }
 }
コード例 #18
0
    /// <summary>
    /// 不需要实例化的资源卸载
    /// </summary>
    /// <returns>bool</returns>
    public bool ReleaseResouce(string path, bool destoryObj = false)
    {
        if (string.IsNullOrEmpty(path))
        {
            return(false);
        }

        uint crc = CRC32.GetCRC32(path);

        ResourceItem item = null;

        if (!assetDic.TryGetValue(crc, out item) || item == null)
        {
            Debug.LogError("assetDic里不存在该资源:" + path + " 可能释放了多次!");
        }

        item.RefCount--;
        DestoryResourceItem(item, destoryObj);
        return(true);
    }
コード例 #19
0
        private void packThisFolderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TreeNode node = treeView.SelectedNode;

            if (node != null)
            {
                ResourceItem rItem = _ProjectManager.GetResource(node.Name);
                if (rItem != null)
                {
                    if (MessageBox.Show(UIStrings.WARNING_PACK_FOLDER, UIStrings.CAPTION_PACK_FOLDER, MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                    {
                        _ProjectManager.PackFolder(rItem.ResourceCollection, rItem.AbsolutePath);
                        if (node.TreeView != null)
                        {
                            RefreshTreeNodeStyle(node, true);
                        }
                    }
                }
            }
        }
コード例 #20
0
    private void CreateResourceItem(string title, int stackSize, int id, ResourceType resourceType)// id 7000-7999
    {
        ResourceItem item = new ResourceItem {
            Title = title, StackSize = stackSize, Id = id, ResourceType = resourceType
        };

        item.Icon = "ItemSprite/" + id;
        if (item.Icon == null)
        {
            item.Icon = "ItemSprite/Unknown";
        }

        item.WorldObj = "ItemObj/" + id;
        if (item.WorldObj == null)
        {
            item.WorldObj = "ItemObj/Unknown";
        }

        IDB.Add(item);
    }
コード例 #21
0
        public virtual void OnCreateShadow()
        {
            if (this.realObject.transform.Find("shadow(Clone)"))//阴影 指得是英雄脚下的黑影
            {
                return;
            }

            int   id     = (int)ObjTypeID;
            float radius = ConfigReader.GetNpcInfo(id).NpcCollideRadius;
            float range  = radius / 100.0f;//范围

            //加载阴影对象
            ResourceItem objUnit = ResourcesManager.Instance.loadImmediate(GameDefine.GameConstDefine.LoadGameShadow, ResourceType.PREFAB);
            GameObject   obj     = GameObject.Instantiate(objUnit.Asset) as GameObject;

            //初始化
            obj.transform.parent        = this.realObject.transform;
            obj.transform.localScale    = new Vector3(range, 1, range);
            obj.transform.localPosition = Vector3.zero;
        }
コード例 #22
0
        /// <summary>
        /// 播放死亡音效
        /// </summary>
        private void PlayDeadSound()
        {
            string deadSound = "";

            if (this.entityType == EntityType.Player)
            {
                deadSound = ConfigReader.GetHeroInfo(this.NpcGUIDType).HeroDeathSould;
            }
            else
            {
                deadSound = ConfigReader.GetNpcInfo(this.NpcGUIDType).NpcDeathSould;
            }
            if (deadSound != "" && deadSound != "0" && deadSound != null)
            {
                //AudioClip clip = Resources.Load(AudioDefine.PATH_HERO_DEADSOUND + deadSound) as AudioClip;
                ResourceItem clipUnit = ResourcesManager.Instance.loadImmediate(AudioDefine.PATH_HERO_DEADSOUND + deadSound, ResourceType.ASSET);
                AudioClip    clip     = clipUnit.Asset as AudioClip;
                AudioManager.Instance.PlayEffectAudio(clip);
            }
        }
コード例 #23
0
ファイル: Recipe.cs プロジェクト: UnforeseenOcean/MiniRealms
 public void CheckCanCraft(Player player)
 {
     for (int i = 0; i < Costs.Size(); i++)
     {
         Item item         = Costs.Get(i);
         var  resourceItem = item as ResourceItem;
         if (resourceItem == null)
         {
             continue;
         }
         ResourceItem ri = resourceItem;
         if (player.Inventory.HasResources(ri.Resource, ri.Count))
         {
             continue;
         }
         CanCraft = false;
         return;
     }
     CanCraft = true;
 }
コード例 #24
0
    public void AddToStack(ResourceItem resourceScript)
    {
        int timesToPop = _MAX_COUNT - this._stackSize;

        if (timesToPop > 0)
        {
            for (int i = 0; i < timesToPop; i++)
            {
                int poppedID = resourceScript.PopStack();
                if (poppedID != -1)
                {
                    this._resrcStack.Push(poppedID);
                    this._initialStats = false;
                }
                else break;
            }
            this._stackSize = this._resrcStack.Count;
            this.StoreSpecificItemInfo();
        }
    }
コード例 #25
0
    /// <summary>
    /// 异步加载(实例化)
    /// </summary>
    /// <param name="path"></param>
    /// <param name="resObj"></param>
    /// <param name="callback"></param>
    /// <param name="priority"></param>
    public void AsyncLoadResource(string path, ResourceObject resObj, AsyncResObjFinishCallback callback, ResLoadPriority priority)
    {
        if (m_StartCoroutine == null)
        {
            Debug.LogError("ResourceManager.AsyncLoadResource 协程未启动,无法使用异步加载");
            return;
        }
        WashOut();
        ResourceItem item = GetCacheResourceItem(resObj.m_Crc);

        //如果资源已经加载
        if (item != null)
        {
            resObj.m_ResItem = item;
            if (callback != null)
            {
                callback(path, resObj, resObj.param1, resObj.param2, resObj.param3);
            }
            return;
        }
        //判断是否正在加载
        AsyncLoadResParam asyncParam = null;

        if (!m_AsyncLoadDic.TryGetValue(resObj.m_Crc, out asyncParam))
        {
            //添加到正在加载
            asyncParam            = m_AsyncLoadResParamPool.Spawn(true);
            asyncParam.m_Crc      = resObj.m_Crc;
            asyncParam.m_Path     = path;
            asyncParam.m_Priority = priority;
            m_AsyncLoadDic.Add(resObj.m_Crc, asyncParam);
            m_AsyncLoadingList[(int)priority].Add(asyncParam);
        }
        //缓存回调信息
        AsyncCallback asyncCallback = m_AsyncCallbackPool.Spawn(true);

        asyncCallback.m_ResCallback = callback;
        asyncCallback.m_ResObj      = resObj;
        asyncParam.m_AsyncCallbackList.Add(asyncCallback);
        //异步加载在AsyncLoadCoroutine 里执行
    }
コード例 #26
0
        /// <summary>
        /// This is used to load a resource item file's content into the
        /// dictionaries used by the editor.
        /// </summary>
        /// <param name="filename">The file to load</param>
        /// <param name="containsOverrides">True if this file contains overrides
        /// for the Sandcastle items</param>
        private void LoadItemFile(string filename, bool containsOverrides)
        {
            ResourceItem      r;
            XmlReaderSettings settings = new XmlReaderSettings();
            XmlReader         xr       = null;

            try
            {
                settings.CloseInput = true;

                xr = XmlReader.Create(filename, settings);
                xr.MoveToContent();

                while (!xr.EOF)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "item")
                    {
                        r = new ResourceItem(filename, xr.GetAttribute("id"),
                                             xr.ReadInnerXml(), containsOverrides);

                        allItems[r.Id] = r;

                        // Create a clone of the original for Sandcastle items
                        if (!containsOverrides)
                        {
                            r = new ResourceItem(filename, r.Id, r.Value, false);
                            sandcastleItems[r.Id] = r;
                        }
                    }

                    xr.Read();
                }
            }
            finally
            {
                if (xr != null)
                {
                    xr.Close();
                }
            }
        }
コード例 #27
0
ファイル: ResourceMgr.cs プロジェクト: takararei/Framework
    public void AsyncLoadResource(string path, OnLoadResFinish dealFinish, LoadResPriority priority,
                                  object param1 = null, object param2 = null, object param3 = null, uint crc = 0)
    {
        if (crc == 0)
        {
            crc = Crc32.GetCrc32(path);
        }

        ResourceItem item = GetCacheResourceItem(crc);

        if (item != null)
        {
            if (dealFinish != null)
            {
                dealFinish(path, item.m_Obj, param1, param2, param3);
            }

            return;
        }
        //判断是否在加载中
        AsyncLoadResInfo para = null;

        if (!m_LoadingAssetDic.TryGetValue(crc, out para) || para == null)
        {
            para            = m_AsyncLoadResParamPool.Spawn();
            para.m_Crc      = crc;
            para.m_Path     = path;
            para.m_Priority = priority;
            m_LoadingAssetDic.Add(crc, para);
            m_LoadingAssetList[(int)priority].Add(para);
        }

        //往回调列表里面加回调
        AsyncLoadResCallBackInfo callBack = m_AsyncCallBackPool.Spawn();

        callBack.m_DealFinish = dealFinish;
        callBack.m_Param1     = param1;
        callBack.m_Param2     = param2;
        callBack.m_Param3     = param3;
        para.m_CallBackList.Add(callBack);
    }
コード例 #28
0
        /// <summary>
        /// This is used to load a resource item file's content into the dictionaries used by the editor
        /// </summary>
        /// <param name="filename">The file to load</param>
        /// <param name="containsOverrides">True if this file contains overrides for the Sandcastle items</param>
        private void LoadItemFile(string filename, bool containsOverrides)
        {
            ResourceItem      r;
            XmlReaderSettings settings = new XmlReaderSettings {
                CloseInput = true
            };

            try
            {
                using (var xr = XmlReader.Create(filename, settings))
                {
                    xr.MoveToContent();

                    while (!xr.EOF)
                    {
                        if (xr.NodeType == XmlNodeType.Element && xr.Name == "item")
                        {
                            r = new ResourceItem(filename, xr.GetAttribute("id"), xr.ReadInnerXml(), containsOverrides);

                            allItems[r.Id] = r;

                            // Create a clone of the original for Sandcastle items
                            if (!containsOverrides)
                            {
                                r = new ResourceItem(filename, r.Id, r.Value, false);
                                sandcastleItems[r.Id] = r;
                            }
                        }

                        xr.Read();
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);

                MessageBox.Show("Unable to save resource item file: " + ex.Message, Constants.AppName,
                                MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #29
0
    public void CreateASSdkButton()
    {
        ResourceItem ASUnit = ResourcesManager.Instance.loadImmediate("Guis/Aisi", ResourceType.PREFAB);

        mToolBarObj = Instantiate(ASUnit.Asset) as GameObject;
        DontDestroyOnLoad(mToolBarObj);

        //绑定到camera
        GameObject cameraObj = GameObject.Find("Camera");

        mToolBarObj.transform.parent        = cameraObj.transform;
        mToolBarObj.transform.localScale    = new Vector3(1, 1, 1);
        mToolBarObj.transform.localPosition = new Vector3(0, 0, 0);

        //添加listener
        GameObject    positonObj           = mToolBarObj.transform.Find("Position").gameObject;
        ButtonOnPress positonButtonOnPress = positonObj.GetComponent <ButtonOnPress>();

        //添加listener
        positonButtonOnPress.AddListener(PositionOnPress);
    }
コード例 #30
0
ファイル: Resources.cs プロジェクト: dj-soft/GraphLibrary
 /// <summary>
 /// Metoda vrátí <see cref="System.Drawing.Image"/> na základě dat v objektu <see cref="Noris.LCS.Base.WorkScheduler.GuiImage"/>.
 /// </summary>
 /// <param name="guiImage"></param>
 /// <returns></returns>
 public Image GetImage(Noris.LCS.Base.WorkScheduler.GuiImage guiImage)
 {
     if (guiImage == null)
     {
         return(null);
     }
     if (guiImage.Image != null)
     {
         return(guiImage.Image);
     }
     if (guiImage.ImageContent != null)
     {
         guiImage.Image = ResourceItem.GetImage(guiImage.ImageContent);
         return(guiImage.Image);
     }
     if (guiImage.ImageFile != null)
     {
         return(this.GetImage(guiImage.ImageFile));
     }
     return(null);
 }
コード例 #31
0
        public void CreateEffect(Transform tran, string pathName)
        {
            ResourceItem objUnit = ResourcesManager.Instance.loadImmediate("effect/ui_effect/" + pathName, ResourceType.PREFAB);
            GameObject   obj     = objUnit.Asset as GameObject;

            if (obj == null)
            {
                return;
            }

            for (int i = 0; i < tran.childCount; i++)
            {
                GameObject.DestroyImmediate(tran.GetChild(i).gameObject);
            }

            GameObject ShowEffect = GameObject.Instantiate(obj) as GameObject;

            ShowEffect.transform.parent        = tran;
            ShowEffect.transform.localPosition = Vector3.zero;
            ShowEffect.transform.localScale    = Vector3.one;
        }
コード例 #32
0
ファイル: BuckleTool.cs プロジェクト: rluethy/ToolBelt
        private void WriteResourceMethod(ResourceItem item)
        {
            StringBuilder builder = new StringBuilder(item.Name);
            for (int i = 0; i < item.Name.Length; i++)
            {
                if (InvalidCharacters.IndexOf(builder[i]) != -1)
                {
                    builder[i] = '_';
                }
            }
            if (item.DataType == typeof(string))
            {
                string parametersWithTypes = string.Empty;
                string parameters = string.Empty;
                int paramCount = 0;
                try
                {
                    paramCount = this.GetNumberOfParametersForStringResource(item.ValueString);
                }
                catch (ApplicationException exception)
                {
                    WriteError("Resource has been skipped: {0}", exception.Message);
                }
                for (int j = 0; j < paramCount; j++)
                {
                    string str3 = string.Empty;
                    if (j > 0)
                    {
                        str3 = ", ";
                    }
                    parametersWithTypes = parametersWithTypes + str3 + "object param" + j.ToString(CultureInfo.InvariantCulture);
                    parameters = parameters + str3 + "param" + j.ToString(CultureInfo.InvariantCulture);
                }

                if ((item.ValueString != null) && (item.ValueString.Length != 0))
                {
                    writer.Write(
            @"
            /// <summary>"
                        );
                    foreach (string str4 in item.ValueString.Replace("\r", string.Empty).Split("\n".ToCharArray()))
                    {
                        writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            /// {0}"
                            , str4));
                    }
                    writer.Write(
            @"
            /// </summary>"
                        );
                }

                if ((string.Equals(WrapperClass, "String", StringComparison.OrdinalIgnoreCase) ||
                    string.Equals(WrapperClass, "System.String", StringComparison.Ordinal)))
                {
                    WriteStringMethodBody(item, Path.GetFileNameWithoutExtension(CsFileName),
                        builder.ToString(), paramCount, parameters, parametersWithTypes);
                }
                else
                {
                    WriteMessageMethodBody(item, Path.GetFileNameWithoutExtension(CsFileName),
                        builder.ToString(), paramCount, parameters, parametersWithTypes);
                }
            }
            else
            {
                writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            public static {0} {1}
            {{
            get
            {{
            return ({0})ResourceManager.GetObject(""{2}"");
            }}
            }}"
                    , item.DataType, builder, item.Name ));
            }
        }
コード例 #33
0
ファイル: BuckleTool.cs プロジェクト: rluethy/ToolBelt
        private void WriteMessageMethodBody(
			ResourceItem item, 
			string resourceClassName, 
			string methodName, 
			int paramCount, 
			string parameters, 
			string parametersWithTypes)
        {
            if (paramCount == 0)
            {
                writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            public static {0} {1}
            {{
            get
            {{
            return new {0}(""{2}"", typeof({3}), ResourceManager, null);
            }}
            }}
            "
                    , WrapperClass, methodName, item.Name, resourceClassName ));
            }
            else
            {
                writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            public static {0} {1}({2})
            {{
            Object[] o = {{ {4} }};
            return new {0}(""{3}"", typeof({5}), ResourceManager, o);
            }}
            "
                    , WrapperClass, methodName, parametersWithTypes, item.Name, parameters, resourceClassName ));
            }
        }
コード例 #34
0
        private void ReadResXResources()
        {
            XmlDocument document = new XmlDocument();

            document.Load(this.InputFileName);

            Dictionary<string, string> assemblyDict = new Dictionary<string, string>();

            foreach (XmlElement element in document.DocumentElement.SelectNodes("assembly"))
            {
                assemblyDict.Add(element.GetAttribute("alias"), element.GetAttribute("name"));
            }

            resources.Clear();

            foreach (XmlElement element in document.DocumentElement.SelectNodes("data"))
            {
                string name = element.GetAttribute("name");

                // This can happen...
                if ((name == null) || (name.Length == 0))
                {
                    WriteWarning("Resource skipped. Empty name attribute: {0}", element.OuterXml);
                    continue;
                }

                CheckNameCharacters(name);

                Type dataType = null;
                string typeName = element.GetAttribute("type");

                if ((typeName != null) && (typeName.Length != 0))
                {
                    string[] parts = typeName.Split(',');

                    // Replace assembly alias with full name
                    typeName = parts[0] + ", " + assemblyDict[parts[1].Trim()];

                    try
                    {
                        dataType = Type.GetType(typeName, true);
                    }
                    catch (Exception exception)
                    {
                        WriteWarning("Resource skipped. Could not load type {0}: {1}", typeName, exception.Message);
                        continue;
                    }
                }

                ResourceItem item = null;

                // String resources typically have no type name
                if ((dataType == null) || (dataType == typeof(string)))
                {
                    string stringResourceValue = null;
                    XmlNode node = element.SelectSingleNode("value");
                    if (node != null)
                    {
                        stringResourceValue = node.InnerXml;
                    }
                    if (stringResourceValue == null)
                    {
                        WriteWarning("Resource skipped.  Empty value attribute: {0}", element.OuterXml);
                        continue;
                    }
                    item = new ResourceItem(name, stringResourceValue);
                }
                else
                {
                    if (dataType == typeof(Icon) || dataType == typeof(Bitmap))
                        haveDrawingResources = true;

                    item = new ResourceItem(name, dataType);
                }
                this.resources.Add(item);
            }
        }
コード例 #35
0
        private Revision GetRevision(string alias, FileSystemInfo fileInfo = null, Stream packageStream = null)
        {
            var r = new Revision();
            r.Name = alias;
            if (fileInfo != null)
                r.LastModified = fileInfo.LastWriteTime;

            using (var archive = fileInfo == null ? Package.Open(packageStream) : Package.Open(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                foreach (var packagePart in archive.GetParts().Where(e => e.Uri.ToString().TrimStart('/').StartsWith(Umbraco.Courier.Core.Settings.RevisionFolderName.Trim())))
                {
                    var path = Uri.UnescapeDataString(packagePart.Uri.ToString()).Replace("/","\\").TrimStart('\\');
                    var item = new RevisionItem { FilePath = path };
                    var bytes = GetBytes(packagePart);

                    ItemIdentifier id = null;
                    var name = "";

                    Core.Serialization.Serializer.GetIdentifier(bytes, ref id, ref name);

                    item.Name = name;
                    item.ItemId = id;
                    item.FileContent = bytes;
                    item.InternalFile = false;

                    r.RevisionCollection.Add(path, item);
                }

                foreach (var packagePart in archive.GetParts().Where(e => e.Uri.ToString().TrimStart('/').StartsWith(Umbraco.Courier.Core.Settings.ResourcesFolderName.Trim())))
                {
                    var path = Uri.UnescapeDataString(packagePart.Uri.ToString()).Replace("/", "\\").TrimStart('\\');
                    var item = new ResourceItem { FilePath = path };
                    item.FileContent = GetBytes(packagePart);
                    item.Name = path;
                    r.ResourceCollection.Add(item.Name, item);
                }

                foreach (var packagePart in archive.GetParts().Where(e => e.Uri.ToString().TrimStart('/').StartsWith(Umbraco.Courier.Core.Settings.VirtualResourcesFolderName.Trim())))
                {
                    var path = Uri.UnescapeDataString(packagePart.Uri.ToString()).Replace("/", "\\").TrimStart('\\');
                    var item = new ResourceItem { FilePath = path };
                    item.FileContent = GetBytes(packagePart);
                    item.Virtual = true;
                    item.Name = path;
                    r.ResourceCollection.Add(item.Name, item);
                }
            }

            return r;
        }
コード例 #36
0
        public bool UploadResource()
        {
            if (Request.Files.Count < 1)
                return false;

            var file = Request.Files[0];
            var resourceId = Request.Form["ResourceId"];
            var resourceSet = Request.Form["ResourceSet"];
            var localeId = Request.Form["LocaleId"];

            if (string.IsNullOrEmpty(resourceId) || string.IsNullOrEmpty(resourceSet))
                throw new ApplicationException("Resourceset or ResourceId are not provided for upload.");

            var item = Manager.GetResourceItem(resourceId, resourceSet, localeId);
            if (item == null)
            {
                item = new ResourceItem()
                {
                    ResourceId = resourceId,
                    ResourceSet = resourceSet,
                    LocaleId = localeId,
                    ValueType = (int)ValueTypes.Binary
                };
            }

            using (var ms = new MemoryStream())
            {
                file.InputStream.CopyTo(ms);
                file.InputStream.Close();
                ms.Flush();

                if (DbResourceDataManager.SetFileDataOnResourceItem(item, ms.ToArray(), file.FileName) == null)
                    return false;

                int res = Manager.UpdateOrAddResource(item);
            }

            return true;
        }
コード例 #37
0
        public bool UpdateResourceString(dynamic parm)
        {
            string value = parm.value;
            string resourceId = parm.resourceId;
            string resourceSet = parm.resourceSet;
            string localeId = parm.localeId;
            string comment = parm.comment;

            var item = Manager.GetResourceItem(resourceId, resourceSet, localeId);
            if (item == null)
            {
                item = new ResourceItem()
                {
                    ResourceId = resourceId,
                    LocaleId = localeId,
                    ResourceSet = resourceSet,                    
                    Comment = comment
                };
            }

            if (string.IsNullOrEmpty(value))
                return Manager.DeleteResource(resourceId, resourceSet: resourceSet, cultureName: localeId);

            item.Value = value;
            item.Type = null;
            item.FileName = null;
            item.BinFile = null;
            item.TextFile = null;

            if (Manager.UpdateOrAddResource(item) < 0)
                return false;

            return true;
        }
コード例 #38
0
 string ResourceItemKey(ResourceItem arg)
 {
     if (arg is DataTemplateResourceItem) return ((DataTemplateResourceItem) arg).Key;
     if (arg is StyleResourceItem) return ((StyleResourceItem) arg).Key;
     if (arg is ControlTemplateResourceItem) return ((ControlTemplateResourceItem) arg).Key;
     if (arg is ItemsPanelTemplateResourceItem) return ((ItemsPanelTemplateResourceItem)arg).Key;
     
     return String.Empty;
 }
コード例 #39
0
ファイル: PlanetRepository.cs プロジェクト: fathurxzz/aleqx
 private void RecalculateResource(ref PlanetResource resource, ResourceItem item, DateTime currDate)
 {
     double delta;
     if (resource.IsUpdating)
     {
         if (resource.UpdateFinish < currDate)
         {
             var diff1 = resource.UpdateFinish - resource.LastUpdate;
             delta = GetResourceDelta(item, resource.MineLevel, diff1.TotalMilliseconds);
             resource.MineLevel++;
             resource.IsUpdating = false;
             var diff2 = currDate - resource.UpdateFinish;
             delta += GetResourceDelta(item, resource.MineLevel, diff2.TotalMilliseconds);
             resource.LastUpdate = currDate;
             resource.Amount += delta;
         }
     }
     else
     {
         var totalTimeDifference = currDate - resource.LastUpdate;
         delta = GetResourceDelta(item, resource.MineLevel, totalTimeDifference.TotalMilliseconds);
         resource.LastUpdate = currDate;
         resource.Amount += delta;
     }
 }
コード例 #40
0
ファイル: LoadResources.cs プロジェクト: zs9024/Jungle
        //开始异步加载Resources类型的资源,用来模拟AssetBundle异步加载流程
        private static IEnumerator BeginResourceLoadAsync(ResourceItem item)
        {
            var request = Resources.LoadAsync(item.Path);
            yield return request;

            var asset = request.asset;
            if (asset == null)
            {
                var assets = Resources.LoadAll(item.Path);
                if (assets == null || assets.Length == 0)
                {
                    Debug.LogError("资源不存在:\n路径:" + item.Path);
                    item.LaunchCallBack();
                    yield break;
                }
                else
                    item.SetAssets(assets);
            }
            else
                item.SetMainAsset(asset);
            //Debug.LogError("load: "+asset);
            //if (item.NeedCRC)
            //{
            //    item.CRC = FirstUtil.CRC32String(File.ReadAllBytes(string.Concat( Application.dataPath, "/Resources/", item.Path, ".prefab")));
            //}

            item.SetLoadState(EResItemLoadState.Completed);

            //按需清除ResourceItem缓存
            if (item.IsClearAfterLoaded && m_resourceItemDic.ContainsKey(item.Path))
                m_resourceItemDic.Remove(item.Path);

            item.LaunchCallBack();
        }
コード例 #41
0
ファイル: Moon.xaml.cs プロジェクト: bleastrind/Moon
        private void resourceAddedCallBack(ResrcAddedResponseEArgs e)
        {
            Boolean isExist=false;
            if (e.resource != null)
            {
                foreach (ResourceItem resc in resources)
                {
                    if (resc.Resource.ResourceName==e.resource.ResourceName)
                    {
                        isExist = true;
                    }
                }
                if (isExist == false)
                {
                    ResourceItem tmpResc = new ResourceItem();
                    tmpResc.Resource = e.resource;
                    resources.Add(tmpResc);
                }
                else
                {
                    isExist = false;
                }
            }
            else
            {

            }
        }
コード例 #42
0
ファイル: webservice.cs プロジェクト: jayvin/Courier
 /// <remarks/>
 public void CommitResourceitemAsync(string revision, ResourceItem resourceItem, string username, string password, object userState)
 {
     if ((this.CommitResourceitemOperationCompleted == null))
     {
         this.CommitResourceitemOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCommitResourceitemOperationCompleted);
     }
     this.InvokeAsync("CommitResourceitem", new object[] {
             revision,
             resourceItem,
             username,
             password}, this.CommitResourceitemOperationCompleted, userState);
 }
コード例 #43
0
ファイル: webservice.cs プロジェクト: jayvin/Courier
 /// <remarks/>
 public void CommitResourceitemAsync(string revision, ResourceItem resourceItem, string username, string password)
 {
     this.CommitResourceitemAsync(revision, resourceItem, username, password, null);
 }
コード例 #44
0
ファイル: webservice.cs プロジェクト: jayvin/Courier
 public string CommitResourceitem(string revision, ResourceItem resourceItem, string username, string password)
 {
     object[] results = this.Invoke("CommitResourceitem", new object[] {
             revision,
             resourceItem,
             username,
             password});
     return ((string)(results[0]));
 }
コード例 #45
0
ファイル: BuckleTool.cs プロジェクト: rluethy/ToolBelt
        private void WriteStringMethodBody(
			ResourceItem item, 
			string resourceClassName, 
			string methodName, 
			int paramCount, 
			string parameters, 
			string parametersWithTypes)
        {
            string str = "temp";
            if (parameters.Length > 0)
            {
                str = "string.Format(CultureInfo.CurrentCulture, temp, " + parameters + ")";
            }
            if (paramCount == 0)
            {
                writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            public static {0} {1}
            {{
            get
            {{
            string temp = ResourceManager.GetString(""{2}"", CultureInfo.CurrentUICulture);
            return {3};
            }}
            }}
            "
                    , WrapperClass, methodName, item.Name, str ));
            }
            else
            {
                writer.Write(string.Format(CultureInfo.InvariantCulture,
            @"
            public static {0} {1}({2})
            {{
            string temp = ResourceManager.GetString(""{3}"", CultureInfo.CurrentUICulture);
            return {4};
            }}
            "
                    , WrapperClass, methodName, parametersWithTypes, item.Name, str ));
            }
        }
コード例 #46
0
ファイル: PlanetRepository.cs プロジェクト: fathurxzz/aleqx
        private double GetResourceDelta(ResourceItem resourceItem, int mineLevel, double totalMilliseconds)
        {
            int gameSpeed = 2;
            int coef = 0;
            switch (resourceItem)
            {
                case ResourceItem.Metal:
                    coef = 30;
                    break;
                case ResourceItem.Crystal:
                    coef = 20;
                    break;
                case ResourceItem.Deiterium:
                    coef = 10;
                    break;
            }


            var result = ((double)gameSpeed * (double)coef * (double)mineLevel * Math.Pow(1.1, mineLevel)) / 3600000 * totalMilliseconds;

            if (resourceItem == ResourceItem.Deiterium)
                return result;
            return result + (double)50 / (double)3600000 * totalMilliseconds;
        }
コード例 #47
0
ファイル: UserRepository.cs プロジェクト: fathurxzz/aleqx
 private PlanetResource InitializePlanetResource(double amount, ResourceItem resourceItem)
 {
     return new PlanetResource
     {
         Amount = amount,
         ResourceId = (int)resourceItem,
         LastUpdate = _currentDateTime,
         MineLevel = 0,
         PlanetId = _planetId
     };
 }
コード例 #48
0
ファイル: Inventory.cs プロジェクト: Gardern/Imagine_Cup_code
 /*
  * Creates a new inventory with the specified things in the inventory
  * */
 public Inventory(ResourceItem resources)
 {
     this.resources = resources;
 }
コード例 #49
0
ファイル: PoResourceWriter.cs プロジェクト: austhomp/resgenEx
        public virtual void AddResource(ResourceItem item) 
        {        
            if (!headerWritten) {
                headerWritten = true;
                WriteHeader();
            }


            if (options.Comments != CommentOptions.writeNoComments) {

                if (item is PoItem) {
                    // We can preserve the comments exactly as they were
                    s.Write(((PoItem)item).Metadata_PoRawComments);

                } else {
                    // if FullComments is set, then store the original message in a rawComments
                    // so the file could be converted into a .pot file (.po template file)
                    // without losing information.
                    string originalMessage = item.Metadata_OriginalValue;
                    string sourceReference = item.Metadata_OriginalSource;

                    if (options.Comments == CommentOptions.writeFullComments) {
                        if (String.IsNullOrEmpty(originalMessage)) originalMessage = item.Value;
                        if (String.IsNullOrEmpty(sourceReference)) sourceReference = SourceFile;

                        if (item.Metadata_OriginalSourceLine > 0) {
                            if (!String.IsNullOrEmpty(sourceReference)) sourceReference += ", ";
                            sourceReference += "line " + item.Metadata_OriginalSourceLine;
                        }
                    } else {
                        // Don't include automatically generated comments such as file reference
                        sourceReference = null;
                    }

                    if (!String.IsNullOrEmpty(item.Metadata_Comment)) {
                        // "#." in a .po file indicates an extracted rawComments
                        s.WriteLine("#. {0}", EscapeComment(item.Metadata_Comment, '.'));
                        if (!String.IsNullOrEmpty(originalMessage)) s.WriteLine("#. "); // leave an empty line between this rawComments and when we list the originalMessage
                    }

                    if (!String.IsNullOrEmpty(originalMessage)) {
                        // "#." in a .po file indicates an extracted rawComments
                        if (originalMessage.Contains("\n")) {
                            // Start multi-line messages indented on a new line, and have each new line in the message indented
                            s.WriteLine(ResGen.cOriginalMessageComment_Prefix + "\n#.    " + EscapeComment(originalMessage, '.', 4));
                        } else {
                            s.WriteLine(ResGen.cOriginalMessageComment_Prefix + EscapeComment(originalMessage, '.', 4));
                        }
                    }

                    if (!String.IsNullOrEmpty(sourceReference)) {
                        // "#:" in a .po file indicates a code reference rawComments, such as the line of source code the 
                        // string is used in, currently PoResourceWriter just inserts the source file name though.
                        s.WriteLine("#: {0}", EscapeComment(sourceReference, '.'));
                    }

                    if (options.FormatFlags && (item.Metadata_Flags & TranslationFlags.csharpFormatString) != 0) {
                        s.WriteLine("#, csharp-format");                        
                    }
                }
            }

            string value = WriteValuesAsBlank() ? String.Empty : Escape(item.Value);

            s.WriteLine("msgid \"{0}\"", Escape(item.Name));
            s.WriteLine("msgstr \"{0}\"", value);
            s.WriteLine("");
        }
コード例 #50
0
        private List<ResourceItem> ReadResources(string resxFileName)
        {
            List<ResourceItem> resources = new List<ResourceItem>();
            XmlDocument document = new XmlDocument();

            document.Load(resxFileName);

            Dictionary<string, string> assemblyDict = new Dictionary<string, string>();

            foreach (XmlElement element in document.DocumentElement.SelectNodes("assembly"))
            {
                assemblyDict.Add(element.GetAttribute("alias"), element.GetAttribute("name"));
            }

            foreach (XmlElement element in document.DocumentElement.SelectNodes("data"))
            {
                string attribute = element.GetAttribute("name");
                if ((attribute == null) || (attribute.Length == 0))
                {
                    this.Context.WriteWarning("Resource skipped. Empty name attribute: {0}".CultureFormat(element.OuterXml));
                    continue;
                }

                Type dataType = null;
                string typeName = element.GetAttribute("type");

                if ((typeName != null) && (typeName.Length != 0))
                {
                    string[] parts = typeName.Split(',');

                    // Replace assembly alias with full name
                    typeName = parts[0] + ", " + assemblyDict[parts[1].Trim()];

                    try
                    {
                        dataType = Type.GetType(typeName, true);
                    }
                    catch (Exception exception)
                    {
                        this.Context.WriteWarning("Resource skipped. Could not load type {0}: {1}".CultureFormat(typeName, exception.Message));
                        continue;
                    }
                }

                ResourceItem item = null;

                // String resources typically have no type name
                if ((dataType == null) || (dataType == typeof(string)))
                {
                    string stringResourceValue = null;
                    XmlNode node = element.SelectSingleNode("value");
                    if (node != null)
                    {
                        stringResourceValue = node.InnerXml;
                    }
                    if (stringResourceValue == null)
                    {
                        this.Context.WriteWarning("Resource skipped.  Empty value attribute: {0}".CultureFormat(element.OuterXml));
                        continue;
                    }
                    item = new ResourceItem(attribute, stringResourceValue);
                }
                else
                {
                    item = new ResourceItem(attribute, dataType);
                }

                resources.Add(item);
            }

            return resources;
        }
コード例 #51
0
        public bool UpdateResource(ResourceItem resource)
        {
            if (resource == null)
                throw new ArgumentException("NoResourcePassedToAddOrUpdate");

            if (resource.Value == null)
            {
                return Manager.DeleteResource(resource.ResourceId, resourceSet: resource.ResourceSet,
                    cultureName: resource.LocaleId);
            }

            int result = Manager.UpdateOrAddResource(resource);
            if (result == -1)
                throw new InvalidOperationException(Manager.ErrorMessage);

            return true;
        }
コード例 #52
0
ファイル: Moon.xaml.cs プロジェクト: bleastrind/Moon
        private void SearchResponseCallBack(SearchResponseArgs e)
        {
            //更换逻辑,区分直接的和间接的。
            int tmp = 0;
            bool obj_attribute = false;
            if (e.Result != null)
            {
                tags.Clear();
                resources.Clear();
                foreach (IRequestObject obj in e.Result)
                {
                    obj_attribute = e.Result_Attribute[tmp];
                    if (obj is Tag)
                    {
                        TagItem item = TagItem.CreateTagItem(obj as Tag);

                        if (item.Tag.TagID == null)
                        {
                            item.State = TagItemState.FreeNew;
                            //说明为直接获得。
                        }
                        else
                        {
                            item.State = TagItemState.FreeImmediate;
                            //说明为间接获得。
                        }
                        tags.Add(item);
                    }
                    else if (obj is Resource)
                    {
                        ResourceItem item = new ResourceItem(obj as Resource);

                        if (obj_attribute)
                        {
                            //说明为直接获得。
                        }
                        else
                        {
                            //说明为间接获得。
                        }
                        resources.Add(item);
                    }
                    else
                        throw new Exception("New IRequestObject imported!");
                    tmp++;
                }
            }
            else
            {

            }
        }
コード例 #53
0
 public ResourceItemEx(ResourceItem item)
 {
     ResourceId = item.ResourceId;
     LocaleId = item.LocaleId;
     Value = item.Value;
     ResourceSet = item.ResourceSet;
     Type = item.Type;
     FileName = item.FileName;
     TextFile = item.TextFile;
     BinFile = item.BinFile;
     Comment = item.Comment;
     ValueType = item.ValueType;
 }
コード例 #54
0
ファイル: LoadResources.cs プロジェクト: zs9024/Jungle
        private static void LoadMultiCore(ResourceItem[] items, int index, Action<ResourceItem> eachCallBack, Action completeCallBack)
        {
            var multiLoadItem = new MultiLoadItem();
            for (int i = 0; i < items.Length; i++)
            {
                var dependList = AssetBundleManifestObject.GetAllDependencies(items[i].Path.ToLower());
                if (dependList != null && dependList.Length > 0)
                {
                    for (int j = 0; j < dependList.Length; j++)
                    {
                        if (m_resourceItemDic.ContainsKey(dependList[j]))
                        {
                            Debug.LogError("-------has got file: " + dependList[j]);
                        }
                        else
                        {
                            var item = new ResourceItem(dependList[j], true);
                            multiLoadItem.items.Enqueue(item);
                        }
                    }
                }
                multiLoadItem.items.Enqueue(items[i]);
            }
            multiLoadItem.eachCallBack = eachCallBack;
            multiLoadItem.completeCallBack = completeCallBack;

            m_multiLoad.Enqueue(multiLoadItem);

            OnUpdate();
        }
コード例 #55
0
ファイル: LoadResources.cs プロジェクト: zs9024/Jungle
        /// <summary>
        /// WWW加载图片
        /// </summary>
        /// <param name="callback"></param>
        /// <returns></returns>
        private static IEnumerator BeginImageLoadAsync(ResourceItem item, string savePath)
        {
            item.SetLoadState(EResItemLoadState.Loading);
            string path = item.Path;
            var www = new WWW(path);
            yield return www;

            //Debug.LogError("LoadImage save good: " + savePath);

            if (string.IsNullOrEmpty(www.error))
            {
                var texture2d = www.texture;
                texture2d.Compress(true);
                item.SetLoadState(EResItemLoadState.Completed);
                item.SetMainAsset(texture2d);
                item.LaunchCallBack();

                try
                {
                    File.WriteAllBytes(savePath, www.bytes);
                }
                catch (Exception e)
                {
                    Debug.LogError("LoadImage save error: " + e.ToString());
                }

                www.Dispose();
            }
            else
            {
                //Debug.LogError("pp: " + path);
                item.SetLoadState(EResItemLoadState.Error);
                Debug.LogError(string.Format("加载资源失败:{0}\n{1}", www.url, www.error));
                item.LaunchCallBack();
            }

            //按需清除ResourceItem缓存
            if (item.IsClearAfterLoaded)
            {
                Clear(item.Path);
                GarbageCollect();
            }
        }
コード例 #56
0
ファイル: LoadResources.cs プロジェクト: zs9024/Jungle
 private static void beginLoadItem(ResourceItem item)
 {
     GlobalDelegate.Instance.View.StartCoroutine(BeginAssetBundleLoadAsync(item));
 }
コード例 #57
0
ファイル: HelperResource.cs プロジェクト: Veivan/GanttDll
 /// <summary>
 /// Функция ищет в справочнике объект ПЛМ по соответствующему объекту ДГ
 /// </summary>
 /// <param name="key">Объект ДГ, по которому происходит поиск</param>
 private InfoObject GetIObyGT(ResourceItem key)
 {
     InfoObject result = null;
     for (int i = 0; i < this.dictResource.Count; i++)
     {
         var element = (stResource)dictResource[i];
         if (element.Res == key)
         {
             result = element.objResurce;
             break;
         }
     }
     return result;
 }
コード例 #58
0
        void AddData(string msgid, string msgstr, string comment, int sourceLineNumber)
        {
            if (String.IsNullOrEmpty(msgid)) {
                Console.WriteLine("Error: Found empty msgid - will skip it. Line: " + sourceLineNumber);
            } else {
                ResourceItem item = new ResourceItem(msgid, msgstr, comment);
                item.Metadata_OriginalSourceLine = sourceLineNumber;

                if (data.ContainsKey(msgid)) {
                    Console.WriteLine(String.Format("Error: Found duplicate msgid {0} at line {1} - will overwrite the value from earlier instances.", msgid, sourceLineNumber));
                }
                data[msgid] = item;
            }
        }
コード例 #59
0
ファイル: webservice.cs プロジェクト: jayvin/Courier
 /// <remarks/>
 public System.IAsyncResult BeginCommitResourceitem(string revision, ResourceItem resourceItem, string username, string password, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("CommitResourceitem", new object[] {
             revision,
             resourceItem,
             username,
             password}, callback, asyncState);
 }
コード例 #60
0
 private void WriteMethodBody(
     ResourceItem item, 
     string resourceClassName, 
     string methodName, 
     int paramCount, 
     string parameters, 
     string parametersWithTypes)
 {
     if (paramCount == 0)
     {
         writer.Write(string.Format(CultureInfo.InvariantCulture,
             @"
     public static string {0}
     {{
     get
     {{
     return ResourceManager.GetString(""{1}"", CultureInfo.CurrentUICulture);
     }}
     }}
     "
            , methodName, item.Name));
     }
     else
     {
         writer.Write(string.Format(CultureInfo.InvariantCulture,
             @"
     public static string {0}({1})
     {{
     string format = ResourceManager.GetString(""{2}"", CultureInfo.CurrentUICulture);
     return string.Format(CultureInfo.CurrentCulture, format, {3});
     }}
     "
            , methodName, parametersWithTypes, item.Name, parameters));
     }
 }