コード例 #1
0
            protected void RemoveLockedItem(string filePath)
            {
                try
                {
                    LockedItemMutex.Wait();

                    try
                    {
                        for (int i = 0; i < LockedItems.Count; i++)
                        {
                            Item lockedItem = LockedItems[i];

                            if (String.Equals(lockedItem.FilePath, filePath, StringComparison.CurrentCultureIgnoreCase))
                            {
                                LockedItems.RemoveAt(i);

                                break;
                            }
                        }
                    }
                    finally
                    {
                        LockedItemMutex.Release();
                    }
                }
                catch (Exception exception)
                {
                    Log.Error(exception, false);
                }
            }
コード例 #2
0
        private Character GetCharacter(int x, int y, RoomEditorState state)
        {
            foreach (Character character in _game.RootCharacterFolder.AllItemsFlat)
            {
                if (_room.Number != character.StartingRoom)
                {
                    continue;
                }

                if (!VisibleItems.Contains(character.ScriptName) || LockedItems.Contains(character.ScriptName))
                {
                    continue;
                }

                AgsView view = _game.FindViewByID(character.NormalView);

                if (view != null && view.Loops.Count > 0)
                {
                    if (HitTest(x, y, character, view))
                    {
                        return(character);
                    }
                }
            }
            return(null);
        }
コード例 #3
0
            protected void ProcessLockedItems()
            {
                try
                {
                    System.Threading.Thread.Sleep(1000);

                    while (LockedItems.Count > 0)
                    {
                        LockedItemMutex.Wait();

                        bool enabled = Enabled;

                        if (!enabled)
                        {
                            break;
                        }

                        try
                        {
                            for (int i = 0; i < LockedItems.Count; i++)
                            {
                                Item lockedItem = LockedItems[i];

                                if (CanOpenFile(lockedItem.FilePath, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite, 1))
                                {
                                    DateTime lastWriteTime = GetFileLastWriteTime(lockedItem.FilePath);

                                    if (lastWriteTime > lockedItem.LastWriteTime)
                                    {
                                        if (ProcessFile(lockedItem.FilePath, false))
                                        {
                                            LockedItems.RemoveAt(i);

                                            i--;

                                            break;
                                        }
                                    }
                                }

                                System.Threading.Thread.Sleep(100);
                            }
                        }
                        finally
                        {
                            LockedItemMutex.Release();
                        }

                        System.Threading.Thread.Sleep(1000);
                    }
                }
                catch (Exception exception)
                {
                    Log.Error(exception, false);
                }
                finally
                {
                    LockedItemThread = null;
                }
            }
コード例 #4
0
ファイル: EdgesEditorFilter.cs プロジェクト: writeescape/ags
 private bool IsMoveable(SelectedEdge edge)
 {
     if (!VisibleItems.Contains(edge.ToString()) || LockedItems.Contains(edge.ToString()))
     {
         return(false);
     }
     return(true);
 }
コード例 #5
0
 public void checkItems()
 {
     foreach (Relationship r in DataHandler.Relationships)
     {
         for (int i = 0; i < r.Level; i++)
         {
             LockedItems locked = Locked.Find((x) => x.ItemStat == r.Unlock[i].stat && x.LevelToUnlock == r.Unlock[i].LevelToUnlock);
             if (locked != null)
             {
                 locked.Item.SetActive(true);
                 Locked.Remove(locked);
             }
         }
     }
 }
コード例 #6
0
            protected void AddLockedItem(string filePath)
            {
                try
                {
                    LockedItemMutex.Wait();

                    try
                    {
                        int lockedItemIndex = -1;

                        for (int i = 0; i < LockedItems.Count; i++)
                        {
                            lockedItemIndex++;

                            Item lockedItem = LockedItems[i];

                            if (String.Equals(lockedItem.FilePath, filePath, StringComparison.CurrentCultureIgnoreCase))
                            {
                                break;
                            }
                        }

                        if (lockedItemIndex == -1)
                        {
                            var lockedItem = new Item(this);

                            lockedItem.FilePath = filePath;

                            LockedItems.Add(lockedItem);
                        }

                        if (LockedItemThread == null)
                        {
                            LockedItemThread = new System.Threading.Thread(ProcessLockedItems);

                            LockedItemThread.Start();
                        }
                    }
                    finally
                    {
                        LockedItemMutex.Release();
                    }
                }
                catch (Exception exception)
                {
                    Log.Error(exception, false);
                }
            }
コード例 #7
0
 private RoomObject GetObject(int x, int y)
 {
     for (int i = _objectBaselines.Count - 1; i >= 0; i--)
     {
         RoomObject obj  = _objectBaselines[i];
         string     name = GetUniqueName(obj);
         if (!VisibleItems.Contains(name) || LockedItems.Contains(name))
         {
             continue;
         }
         if (HitTest(obj, x, y))
         {
             return(obj);
         }
     }
     return(null);
 }
コード例 #8
0
        private bool IsLocked(int area)
        {
            string areaName = GetItemName(area);

            return(LockedItems.Contains(areaName));
        }