From 59036706eae53bb531ad091267e26a9522f60541 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Fri, 9 Feb 2024 17:49:03 +0000 Subject: [PATCH] If overridden, don't keep asking, file exists warning on new canvas screen --- canvas.go | 42 +++++++++++++++++++++--------------------- main.go | 33 +++++++++++++++++++++++---------- 2 files changed, 44 insertions(+), 31 deletions(-) diff --git a/canvas.go b/canvas.go index c122f24..e05052d 100644 --- a/canvas.go +++ b/canvas.go @@ -23,6 +23,7 @@ type Canvas struct { UndoneStrokes []raylib.Texture2D UnsavedChanges bool + EditingFile bool Refresh bool } @@ -110,30 +111,28 @@ func (c *Canvas) Save(force bool) { addToast("Please enter a file name!") return } - // check if file already exists, sorry for lazy - if _, err := os.Stat(filepath.Join(dirUserData, c.Name+".png")); errors.Is(err, os.ErrNotExist) { - image := raylib.LoadImageFromTexture(c.Target.Texture) - - raylib.ImageRotate(image, 180) - raylib.ImageFlipHorizontal(image) - - raylib.ExportImage(*image, filepath.Join(dirUserData, c.Name+".png")) - - addToast("Drawing saved as " + c.Name + ".png") - } else if force { - image := raylib.LoadImageFromTexture(c.Target.Texture) - - raylib.ImageRotate(image, 180) - raylib.ImageFlipHorizontal(image) - - raylib.ExportImage(*image, filepath.Join(dirUserData, c.Name+".png")) - - addToast("Drawing saved as " + c.Name + ".png") - } else { - applicationState = StateFileExists + // check if file already exists + if !c.EditingFile { + _, err := os.Stat(filepath.Join(dirUserData, c.Name+".png")) + if !errors.Is(err, os.ErrNotExist) { + if !force { + applicationState = StateFileExists + return + } + } } + image := raylib.LoadImageFromTexture(c.Target.Texture) + + raylib.ImageRotate(image, 180) + raylib.ImageFlipHorizontal(image) + + raylib.ExportImage(*image, filepath.Join(dirUserData, c.Name+".png")) + + addToast("Drawing saved as " + c.Name + ".png") + c.UnsavedChanges = false + c.EditingFile = true } func NewCanvas(name string, size, offset raylib.Vector2, background raylib.Texture2D) *Canvas { @@ -146,6 +145,7 @@ func NewCanvas(name string, size, offset raylib.Vector2, background raylib.Textu Strokes: []raylib.Texture2D{}, UndoneStrokes: []raylib.Texture2D{}, UnsavedChanges: false, + EditingFile: false, Refresh: true, } } diff --git a/main.go b/main.go index b0814df..b9e3b41 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "os" "path/filepath" @@ -13,12 +14,13 @@ import ( func main() { // Initialize raylib - raylib.SetConfigFlags(raylib.FlagWindowResizable | raylib.FlagMsaa4xHint) // raylib.FlagWindowHighdpi + raylib.SetConfigFlags(raylib.FlagWindowResizable) // | raylib.FlagWindowHighdpi | raylib.FlagMsaa4xHint) raylib.InitWindow(applicationWindowWidth, applicationWindowHeight, applicationTitle) - raylib.SetWindowMinSize(int(applicationMinWindowWidth), int(applicationMinWindowHeight)) // Set a minimum window size - raylib.SetTargetFPS(int32(raylib.GetMonitorRefreshRate(raylib.GetCurrentMonitor()))) // Match monitor refresh rate - raylib.SetExitKey(raylib.KeyNull) // disable exit key - raylib.HideCursor() // Hide cursor + raylib.SetWindowMinSize(int(applicationMinWindowWidth), int(applicationMinWindowHeight)) + //raylib.SetTargetFPS(int32(raylib.GetMonitorRefreshRate(raylib.GetCurrentMonitor()))) + raylib.SetTargetFPS(60) + raylib.SetExitKey(raylib.KeyNull) + raylib.HideCursor() // Make sure both assets and userData directories exist if _, err := os.Stat(dirAssets); os.IsNotExist(err) { @@ -205,7 +207,7 @@ func main() { applicationState = StateHelp } - raylib.DrawLine(toolBarOffset, 0, toolBarOffset, applicationWindowHeight, raylib.Black) + raylib.DrawLine(toolBarOffset+1, 0, toolBarOffset+1, applicationWindowHeight, raylib.Black) } raylib.EndScissorMode() @@ -231,14 +233,15 @@ func main() { toolPanelColourPicker = gui.ColorPicker(raylib.NewRectangle(float32(toolPanelOffset+10), 45, float32(toolPanelWidth-45), toolPanelColourPickerHeight), "Color", toolPanelColourPicker) - gui.Label(raylib.NewRectangle(float32(toolPanelOffset+10), 55+toolPanelColourPickerHeight, 60, 20), "Brush Size") - toolPanelBrushSize = gui.Slider(raylib.NewRectangle(float32(toolPanelOffset+80), 55+toolPanelColourPickerHeight, float32(toolPanelWidth-90), 20), "", "", toolPanelBrushSize, 1, 100) + gui.Label(raylib.NewRectangle(float32(toolPanelOffset+10), 50+toolPanelColourPickerHeight, 60, 20), "Brush Size") + gui.Label(raylib.NewRectangle(float32(toolPanelOffset+10), 60+toolPanelColourPickerHeight, 60, 20), fmt.Sprintf("%d", int(toolPanelBrushSize))) + toolPanelBrushSize = gui.Slider(raylib.NewRectangle(float32(toolPanelOffset+80), 55+toolPanelColourPickerHeight, float32(toolPanelWidth-90), 20), "", "", toolPanelBrushSize, 1, 150) gui.Label(raylib.NewRectangle(float32(toolPanelOffset+10), 115+toolPanelColourPickerHeight, 60, 20), "File Name") if gui.TextBox(raylib.NewRectangle(float32(toolPanelOffset+80), 115+toolPanelColourPickerHeight, float32(toolPanelWidth-90), 20), &canvas.Name, 40, isEditingCanvasName) { isEditingCanvasName = !isEditingCanvasName } - raylib.DrawLine(toolPanelOffset, 0, toolPanelOffset, applicationWindowHeight, raylib.Black) + raylib.DrawLine(toolPanelOffset+1, 0, toolPanelOffset+1, applicationWindowHeight, raylib.Black) } raylib.EndScissorMode() } @@ -262,7 +265,7 @@ func main() { case StateFileMenu: gui.Unlock() raylib.DrawRectangle(0, 0, applicationWindowWidth, applicationWindowHeight, raylib.Fade(raylib.Black, 0.5)) - windowPos := raylib.NewRectangle(float32((applicationWindowWidth/2)-200), float32((applicationWindowHeight/2)-200), 400, 400) + windowPos := raylib.NewRectangle(float32((applicationWindowWidth/2)-200), float32((applicationWindowHeight/2)-225), 450, 400) if gui.WindowBox(windowPos, "Open or New File") { applicationState = StateNormal } @@ -316,6 +319,12 @@ func main() { } } + if _, err := os.Stat(filepath.Join(dirUserData, newCanvasName+".png")); !errors.Is(err, os.ErrNotExist) { + warnText := fmt.Sprintf("%s already exists", newCanvasName+".png") + raylib.DrawRectangle(int32(windowPos.X+21), int32(windowPos.Y+204), raylib.MeasureText(warnText, 10)+20, 20, raylib.Fade(raylib.Red, 0.2)) + raylib.DrawText(warnText, int32(windowPos.X+31), int32(windowPos.Y+204+5), 10, raylib.Red) + } + if gui.Button(raylib.NewRectangle(windowPos.X+windowPos.Width-140, windowPos.Y+204, 120, 20), "Create") { applicationState = StateNewCanvas } @@ -425,6 +434,10 @@ func main() { ) case toolPen: raylib.DrawCircleLines(int32(raylib.GetMousePosition().X), int32(raylib.GetMousePosition().Y), toolPanelBrushSize/2, raylib.Black) + if toolPanelBrushSize > 20 { + raylib.DrawCircle(int32(raylib.GetMousePosition().X), int32(raylib.GetMousePosition().Y), 1, raylib.White) + raylib.DrawCircleLines(int32(raylib.GetMousePosition().X), int32(raylib.GetMousePosition().Y), 2, raylib.Black) + } } }