This commit is contained in:
2025-10-28 02:22:59 +01:00
parent bfd653c136
commit f6fe381551
17 changed files with 647 additions and 157 deletions

View File

@@ -8,14 +8,23 @@ var drawing: bool = false
var erasing: bool = false
var undo_stack: Array[Image] = []
var bgimage: Image
var save_path: String = "user://pumpkin_carving.png"
func _ready() -> void:
image = Image.create_empty(32, 32, false, Image.FORMAT_RGBA8)
dtexture = $DrawTexture
bgtexture = $Background
bgimage = bgtexture.texture.get_image()
load_image()
update_texture()
func load_image() -> void:
if FileAccess.file_exists(save_path):
var loaded: Image = Image.load_from_file(save_path)
if loaded:
image = loaded
return
image = Image.create_empty(32, 32, false, Image.FORMAT_RGBA8)
func update_texture() -> void:
var texture: ImageTexture = ImageTexture.create_from_image(image)
dtexture.texture = texture
@@ -40,14 +49,15 @@ func draw_at_mouse() -> void:
var color: Color = Color.BLACK if not erasing else Color(0, 0, 0, 0)
pixel(pixel_pos, color)
update_texture()
save_image()
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.is_echo():
if event.keycode == KEY_Z and Input.is_key_pressed(KEY_CTRL):
undo()
return
if event is InputEventMouseButton and not event.is_echo():
if event is InputEventMouseButton and !event.is_echo():
var mouse_pos = get_global_mouse_position()
var drect = dtexture.get_global_rect()
if not drect.has_point(mouse_pos):
return
if event.button_index == MOUSE_BUTTON_LEFT:
if event.pressed:
push_undo_state()
@@ -72,3 +82,10 @@ func undo() -> void:
if undo_stack.size() > 0:
image = undo_stack.pop_back()
update_texture()
save_image()
func save_image() -> void:
image.save_png(save_path)
func _on_undo_button_pressed() -> void:
undo()