예제 #1
0
    public static void SaveUnsavedFile(DrawingFile file)
    {
        DebugConsole.Log("Save Unsaved " + file.Index);

        PlayerPrefs.SetString(UnsavedFileStringKey, DrawingFile.Serialize(file));
//		PlayerPrefs.Flush();
    }
예제 #2
0
    public Drawing(Short2 size, CanvasController canvasUi, Selection selection)
    {
        this.file      = new DrawingFile();
        this.size      = size;
        this.canvasUi  = canvasUi;
        this.selection = selection;

        RenderDrawing();
    }
예제 #3
0
    public static DrawingFile LoadFile(int index)
    {
        DebugConsole.Log("Load File " + index);
        if (!HasFile(index))
        {
            return(null);
        }

        return(DrawingFile.Deserialize(PlayerPrefs.GetString(DrawingFileStringKeyPrefix + index)));
    }
예제 #4
0
    public static DrawingFile LoadUnsavedFile()
    {
        DebugConsole.Log("Load Unsaved File");

        if (!HasUnsavedFile())
        {
            return(null);
        }

        return(DrawingFile.Deserialize(PlayerPrefs.GetString(UnsavedFileStringKey)));
    }
예제 #5
0
    public static void SaveFile(DrawingFile file)
    {
        DebugConsole.Log("Save File " + file.Index);
        PlayerPrefs.SetString(DrawingFileStringKeyPrefix + file.Index, DrawingFile.Serialize(file));

        if (file.Index >= GetFileCount())
        {
            PlayerPrefs.SetInt(DrawingFileCountIntKey, file.Index + 1);
        }

//		PlayerPrefs.Flush();
    }
예제 #6
0
    DrawingController AddDrawing(DrawingFile file)
    {
        var drawing = Instantiate(DrawingPrototype);

        drawing.transform.SetParent(DrawingContainer, false);
        var drawingController = drawing.GetComponent <DrawingController>();

        drawings.Add(drawingController);
        drawingController.Init(file);
        drawingController.OnClickedEvent += OnDrawingClicked;

        return(drawingController);
    }
예제 #7
0
    public void OnNewButtonClicked()
    {
        var newDrawing = new DrawingFile();

        newDrawing.Index       = DataLayer.GetFileCount();
        newDrawing.DateCreated = System.DateTime.Now.ToLongDateString();
        newDrawing.Size        = new Short2(8, 8);
        newDrawing.Layers      = new LayerFile[0];

        DataLayer.SaveUnsavedFile(newDrawing);

        App.CurrentDrawingFile = newDrawing;
        StopAllCoroutines();
        StartCoroutine(SceneTransitionHandler());
    }
예제 #8
0
    public Drawing(DrawingFile file, CanvasController canvasUi, Selection selection)
    {
        this.file      = file;
        size           = file.Size;
        this.canvasUi  = canvasUi;
        this.selection = selection;

        var layerUis = LayerTabController.Instance.AddLayers(file.Layers.Length);

        foreach (var layer in file.Layers)
        {
            layers.Add(new Layer(layer, size, layerUis[layer.Index]));
        }

        RenderDrawing();
    }
예제 #9
0
 public DrawingFileFoundMessage(DrawingFile foundFile)
 {
     FoundFile = foundFile;
 }
예제 #10
0
 public static string Serialize(DrawingFile file)
 {
     return(JSON.ToNiceJSON(file, JSON.Parameters));
 }
예제 #11
0
        public async Task FindDrawingFilesAsync(string drawingNumber)
        {
            if (_searchInProgress)
            {
                return;
            }

            _searchInProgress = true;

            // do a full search if the same drawing number is searched twice in a row
            if (drawingNumber == _lastSearch && _searchCache.ContainsKey(drawingNumber))
            {
                _searchCache.Remove(drawingNumber);
            }

            _lastSearch = drawingNumber;

            if (_searchCache.ContainsKey(drawingNumber))
            {
                foreach (var result in _searchCache[drawingNumber])
                {
                    Messenger.Default.Send(new DrawingFileFoundMessage(result));
                }
            }
            else
            {
                await Task.Factory.StartNew(() =>
                {
                    var rootFolder    = Settings.Default.DrawingFileFolderName;
                    var searchPattern = "*" + drawingNumber + "*";

                    var results = new List <DrawingFile>();

                    var pending = new Queue <string>();
                    pending.Enqueue(rootFolder);
                    while (pending.Count > 0)
                    {
                        rootFolder = pending.Dequeue();

                        var tmp = Directory.GetFiles(rootFolder, searchPattern);

                        for (var i = 0; i < tmp.Length; i++)
                        {
                            var ext = Path.GetExtension(tmp[i]).ToLower();

                            if (_validFileExtensions.All(validExt => ext != validExt))
                            {
                                continue;
                            }

                            BitmapSource icon = null;

                            Application.Current.Dispatcher.Invoke(() => icon = GetIcon(tmp[i]));

                            var file       = new DrawingFile();
                            file.FileName  = Path.GetFileNameWithoutExtension(tmp[i]);
                            file.FullPath  = tmp[i];
                            file.CreatedAt = File.GetLastWriteTime(tmp[i]);
                            file.Icon      = icon;
                            results.Add(file);

                            Messenger.Default.Send(new DrawingFileFoundMessage(file));
                        }

                        tmp = Directory.GetDirectories(rootFolder);

                        for (var i = 0; i < tmp.Length; i++)
                        {
                            pending.Enqueue(tmp[i]);
                        }
                    }

                    if (results.Count > 0)
                    {
                        _searchCache.Add(drawingNumber, results);
                    }
                });
            }

            _searchInProgress = false;
        }
예제 #12
0
    public void Init(DrawingFile file)
    {
        DrawingFile = file;

        RenderDrawing();
    }