Ejemplo n.º 1
0
    public void Init(string newTitle, int rows, int columns, string[] newTabularData)
    {
        ClearTable();

        title.text      = newTitle;
        pageNumber.text = $"{ currentPage + 1 }";
        tabularData     = newTabularData;

        if (newTabularData != null && newTabularData.Length > 0)
        {
            currentRows    = rows;
            currentColumns = columns;
            maxPages       = Mathf.CeilToInt((float)currentRows / MAXROWSPAGE);
        }
        else
        {
            Toasts.AddToast(5, "File is corrupt");
            return;
        }

        SetButtonStates();
        PopulateTable();
        SetRowNumbers();

        tabularDataWrapper.GetComponent <GridLayoutGroup>().constraintCount = currentColumns;
        float cellSizeX = Mathf.Max(tabularDataWrapper.rect.width / currentColumns, MIN_GRID_SIZE_X);
        float cellSizeY = Mathf.Max(tabularDataWrapper.rect.height / currentRows, MIN_GRID_SIZE_Y);

        tabularDataWrapper.GetComponent <GridLayoutGroup>().cellSize = new Vector2(cellSizeX, cellSizeY);
    }
Ejemplo n.º 2
0
    void OnExportInit()
    {
        if (UnsavedChangesTracker.Instance.unsavedChanges)
        {
            if (!Editor.Instance.SaveProject())
            {
                Toasts.AddToast(5, "File save failed, try again.");
            }
        }

        explorerPanel = Instantiate(UIPanels.Instance.explorerPanel, Canvass.main.transform, false).GetComponent <ExplorerPanel>();
        explorerPanel.InitSaveAs("", ".zip", "*.zip", "Enter a file name");

        exportButton.interactable = false;
    }
Ejemplo n.º 3
0
    public void Login()
    {
        var username = loginUsername.text;
        var password = loginPassword.text;

        loginError.color = errorColor;
        if (String.IsNullOrEmpty(username))
        {
            loginError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            loginError.text = "Please fill in a password";
            return;
        }

        if (loginRemember.isOn)
        {
            using (var file = File.CreateText(loginDataPath))
            {
                file.WriteLine(username);
                file.WriteLine(password);
            }
        }
        else
        {
            File.Delete(loginDataPath);
        }

        var response = SendLoginRequest(username, password);

        if (response.Item1 == 401)
        {
            loginError.text = "Username does not exist, or password is wrong";
            return;
        }
        if (response.Item1 != 200)
        {
            loginError.text = "An error happened in the server. Please try again later";
            return;
        }

        answered    = true;
        answerToken = response.Item2;

        Toasts.AddToast(5, "Logged in");
    }
Ejemplo n.º 4
0
    public void Init(string newTitle, string fullPath)
    {
        if (Player.hittables != null)
        {
            GetComponentInChildren <Hittable>().enabled = true;
        }

        if (!File.Exists(fullPath))
        {
            Toasts.AddToast(5, "Corrupted audio, ABORT ABORT ABORT");
            return;
        }

        this.fullPath = fullPath;
        title.text    = newTitle;
        dirty         = true;
    }
Ejemplo n.º 5
0
    public void Login()
    {
        var email    = loginEmail.text;
        var password = loginPassword.text;

        loginError.color = errorColor;
        if (String.IsNullOrEmpty(email))
        {
            loginError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            loginError.text = "Please fill in a password";
            return;
        }

        if (loginRemember.isOn)
        {
            using (var file = File.CreateText(loginDataPath))
            {
                file.WriteLine(email);
                file.WriteLine(password);
            }
        }
        else
        {
            File.Delete(loginDataPath);
        }

        var(success, response) = SendLoginRequest(email, password);

        if (!success)
        {
            loginError.text = response;
            return;
        }

        answered = true;

        Toasts.AddToast(5, "Logged in");
    }
Ejemplo n.º 6
0
    public void NewStop(string title)
    {
        isNew = false;
        SetIndex(files.Count - 1);

        var projectFolder = Path.Combine(Application.persistentDataPath, files[selectedIndex].guid);

        if (!Directory.Exists(projectFolder))
        {
            try
            {
                Directory.CreateDirectory(projectFolder);
                File.Create(Path.Combine(projectFolder, SaveFile.editableFilename)).Close();
                Directory.CreateDirectory(Path.Combine(projectFolder, SaveFile.extraPath));
                Directory.CreateDirectory(Path.Combine(projectFolder, SaveFile.miniaturesPath));
            }
            catch (Exception e)
            {
                Toasts.AddToast(5, "Something went wrong while creating a new project");
                Debug.LogError(e.StackTrace);
            }

            var data = new SaveFileData
            {
                meta = new Metadata
                {
                    version     = SaveFile.VERSION,
                    title       = files[selectedIndex].title,
                    description = "",
                    guid        = new Guid(files[selectedIndex].guid),
                }
            };

            SaveFile.WriteFile(projectFolder, data);
        }
        else
        {
            Debug.LogError("Guid collision");
        }
    }
Ejemplo n.º 7
0
    //NOTE(Simon): First unpack to random destination. Then read savefile, and copy to correct folder (or overwrite if existing)
    public void UnpackFile(string zipPath)
    {
        unpacking = true;
        long bytesUnpacked = 0;
        long bytesToUnpack = 0;
        long bytesCopied   = 0;
        long bytesToCopy   = 0;

        string tempDestFolder = Path.Combine(persistentDataPath, Guid.NewGuid().ToString());

        bool corrupt          = false;
        bool fullImport       = false;
        bool isCurrentProject = false;

        using (var source = new ZipArchive(File.OpenRead(zipPath), ZipArchiveMode.Read))
        {
            var filenames = new List <string>();
            foreach (var entry in source.Entries)
            {
                filenames.Add(entry.Name);
            }

            if (!filenames.Contains(SaveFile.metaFilename))
            {
                corrupt = true;
            }
            if (filenames.Contains(SaveFile.videoFilename))
            {
                fullImport = true;
            }
            if (fullImport && !filenames.Contains(SaveFile.thumbFilename))
            {
                corrupt = true;
            }

            if (!corrupt)
            {
                foreach (var entry in source.Entries)
                {
                    bytesToUnpack += entry.Length;
                }

                foreach (var entry in source.Entries)
                {
                    string destDir  = Path.Combine(tempDestFolder, Path.GetDirectoryName(entry.FullName));
                    string destFile = Path.Combine(tempDestFolder, entry.FullName);

                    bool isFile = !String.IsNullOrEmpty(entry.Name);
                    Directory.CreateDirectory(destDir);

                    if (isFile)
                    {
                        using (var writer = File.Create(destFile))
                            using (var entryStream = entry.Open())
                            {
                                //NOTE(Simon): 80kB is the buffer size used in .NET's CopyTo()
                                var buffer = new byte[80 * 1024];
                                int read;
                                do
                                {
                                    read = entryStream.Read(buffer, 0, buffer.Length);
                                    writer.Write(buffer, 0, read);
                                    bytesUnpacked += read;
                                    progress       = (float)(bytesUnpacked) / bytesToUnpack / 2;
                                } while (read > 0);
                            }
                    }
                }
            }
        }

        if (!corrupt)
        {
            var savefileData   = SaveFile.OpenFile(tempDestFolder);
            var realGuid       = savefileData.meta.guid;
            var realDestFolder = Path.Combine(persistentDataPath, realGuid.ToString());

            if (Editor.Instance != null && realGuid == Editor.Instance.currentProjectGuid)
            {
                isCurrentProject = true;
            }

            if (!isCurrentProject)
            {
                bytesToCopy += FileHelpers.DirectorySize(new DirectoryInfo(tempDestFolder));

                if (!Directory.Exists(realDestFolder))
                {
                    Directory.Move(tempDestFolder, realDestFolder);
                }
                else
                {
                    var files = Directory.GetFiles(tempDestFolder);
                    foreach (var file in files)
                    {
                        var filename       = Path.GetFileName(file);
                        var fileInRealDest = Path.Combine(realDestFolder, filename);
                        var fileInTempDest = Path.Combine(tempDestFolder, filename);

                        //NOTE(Simon): If file already exists in real destination, first delete. So Move() is safe.
                        File.Delete(fileInRealDest);
                        File.Move(fileInTempDest, fileInRealDest);

                        bytesCopied += new FileInfo(fileInRealDest).Length;
                        progress     = (float)(bytesUnpacked + bytesCopied) / (bytesToUnpack + bytesToCopy);
                    }

                    var dirs = Directory.GetDirectories(tempDestFolder);
                    foreach (var dir in dirs)
                    {
                        var dirname = new DirectoryInfo(dir).Name;
                        //NOTE(Simon): Make sure directory exists
                        Directory.CreateDirectory(Path.Combine(realDestFolder, dirname));

                        var dirFiles = Directory.GetFiles(Path.Combine(tempDestFolder, dir));
                        foreach (var file in dirFiles)
                        {
                            var filename       = Path.GetFileName(file);
                            var fileInRealDest = Path.Combine(realDestFolder, dirname, filename);
                            var fileInTempDest = Path.Combine(tempDestFolder, dirname, filename);

                            File.Delete(fileInRealDest);
                            File.Move(fileInTempDest, fileInRealDest);

                            bytesCopied += new FileInfo(fileInRealDest).Length;
                            progress     = (float)(bytesUnpacked + bytesCopied) / (bytesToUnpack + bytesToCopy);
                        }
                    }
                }
            }

            if (Directory.Exists(tempDestFolder))
            {
                Directory.Delete(tempDestFolder, true);
            }
        }

        if (corrupt)
        {
            Toasts.AddToast(10.0f, "Import failed. File is corrupt");
        }
        else if (isCurrentProject)
        {
            Toasts.AddToast(10.0f, "Import failed. Same as currently opened project.");
        }

        progress  = 1f;
        unpacking = false;
        answered  = true;
    }
Ejemplo n.º 8
0
    public void Register()
    {
        var username       = registerUsername.text;
        var password       = registerPassword.text;
        var repeatPassword = registerRepeatPassword.text;

        registerError.color = errorColor;
        if (String.IsNullOrEmpty(username))
        {
            registerError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            registerError.text = "Please fill in a password";
            return;
        }
        if (String.IsNullOrEmpty(repeatPassword))
        {
            registerError.text = "Please repeat your password";
            return;
        }
        if (password != repeatPassword)
        {
            registerError.text = "These passwords are not the same";
            return;
        }

        var form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);

        using (var www = UnityWebRequest.Post(Web.registerUrl, form))
        {
            www.SendWebRequest();
            //TODO(Simon): Async??
            while (!www.isDone)
            {
            }

            var status = www.responseCode;
            if (status == 409)
            {
                registerError.text = "This username is already taken.";
                return;
            }
            if (status != 200)
            {
                registerError.text = "An error happened in the server. Please try again later";
                return;
            }
            if (www.isNetworkError || www.isHttpError)
            {
                registerError.text = www.error;
                return;
            }

            answered    = true;
            answerToken = www.downloadHandler.text;

            Toasts.AddToast(5, "Registered succesfully");
            Toasts.AddToast(5, "Logged in");
        }
    }
Ejemplo n.º 9
0
    public void Register()
    {
        var username       = registerUsername.text;
        var password       = registerPassword.text;
        var repeatPassword = registerRepeatPassword.text;

        registerError.color = errorColor;
        if (String.IsNullOrEmpty(username))
        {
            registerError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            registerError.text = "Please fill in a password";
            return;
        }
        if (String.IsNullOrEmpty(repeatPassword))
        {
            registerError.text = "Please repeat your password";
            return;
        }
        if (password != repeatPassword)
        {
            registerError.text = "These passwords are not the same";
            return;
        }

        var form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);

        using (var www = new WWW(Web.registerUrl, form))
        {
            while (!www.isDone)
            {
            }

            var status = www.StatusCode();
            if (status == 409)
            {
                registerError.text = "This username is already taken.";
                return;
            }
            if (status != 200)
            {
                registerError.text = "An error happened in the server. Please try again later";
                return;
            }
            if (!String.IsNullOrEmpty(www.error))
            {
                registerError.text = www.error;
                return;
            }

            answered    = true;
            answerToken = www.text;

            Toasts.AddToast(5, "Registered succesfully");
            Toasts.AddToast(5, "Logged in");
        }
    }
Ejemplo n.º 10
0
    public void Register()
    {
        var username             = registerUsername.text;
        var email                = registerEmail.text;
        var password             = registerPassword.text;
        var passwordConfirmation = registerPasswordConfirmation.text;

        registerError.color = errorColor;
        if (String.IsNullOrEmpty(username))
        {
            registerError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(email))
        {
            registerError.text = "Please fill in an email";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            registerError.text = "Please fill in a password";
            return;
        }
        if (password.Length < Web.minPassLength)
        {
            registerError.text = $"Password should be at least {Web.minPassLength} characters long";
            return;
        }
        if (String.IsNullOrEmpty(passwordConfirmation))
        {
            registerError.text = "Please repeat your password";
            return;
        }
        if (password != passwordConfirmation)
        {
            registerError.text = "These passwords are not the same";
            return;
        }

        var form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);
        form.AddField("password-confirmation", passwordConfirmation);
        form.AddField("email", email);

        using (var www = UnityWebRequest.Post(Web.registerUrl, form))
        {
            www.SendWebRequest();
            //TODO(Simon): Async??
            while (!www.isDone)
            {
            }

            if (www.responseCode != 200)
            {
                registerError.text = www.downloadHandler.text;
                return;
            }
            if (www.isNetworkError || www.isHttpError)
            {
                registerError.text = www.error;
                return;
            }

            answered = true;
            var response = JsonUtility.FromJson <LoginResponse>(www.downloadHandler.text);
            Web.sessionCookie = response.session;

            Toasts.AddToast(5, "Registered succesfully");
            Toasts.AddToast(5, "Logged in");
        }
    }
Ejemplo n.º 11
0
    public void Login()
    {
        var username = loginUsername.text;
        var password = loginPassword.text;

        loginError.color = errorColor;
        if (String.IsNullOrEmpty(username))
        {
            loginError.text = "Please fill in a username";
            return;
        }
        if (String.IsNullOrEmpty(password))
        {
            loginError.text = "Please fill in a password";
            return;
        }

        if (loginRemember.isOn)
        {
            using (var file = File.CreateText(loginDataPath))
            {
                file.WriteLine(username);
                file.WriteLine(password);
            }
        }
        else
        {
            File.Delete(loginDataPath);
        }

        var form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);
        //form.headers.Add("Content-Type", "application/x-www-form-urlencoded");

        using (var www = new WWW("http://localhost/login", form))
        {
            while (!www.isDone)
            {
            }

            var status = www.StatusCode();
            if (status == 401)
            {
                loginError.text = "Username does not exist, or password is wrong";
                return;
            }
            if (status != 200)
            {
                loginError.text = "An error happened in the server. Please try again later";
                return;
            }
            if (!String.IsNullOrEmpty(www.error))
            {
                loginError.text = www.error;
                return;
            }

            answered    = true;
            answerToken = www.text;

            Toasts.AddToast(5, "Logged in");
        }
    }