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); }
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; }
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"); }
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; }
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"); }
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"); } }
//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; }
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"); } }
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"); } }
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"); } }
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"); } }