mirror of
https://github.com/tonytins/CozyPixelStudio.git
synced 2025-06-25 13:44:42 -04:00
Move pixel perfect and mirror code to drawers class (#255)
This commit is contained in:
parent
7371cd79e4
commit
30f8891f21
4 changed files with 61 additions and 64 deletions
|
@ -1,21 +1,11 @@
|
|||
class Drawer:
|
||||
func reset() -> void:
|
||||
pass
|
||||
|
||||
func set_pixel(_sprite: Image, _pos: Vector2, _new_color: Color) -> void:
|
||||
pass
|
||||
|
||||
|
||||
class SimpleDrawer extends Drawer:
|
||||
func reset() -> void:
|
||||
pass
|
||||
|
||||
class_name Drawer
|
||||
|
||||
class SimpleDrawer:
|
||||
func set_pixel(_sprite: Image, _pos: Vector2, _new_color: Color) -> void:
|
||||
_sprite.set_pixel(_pos.x, _pos.y, _new_color)
|
||||
|
||||
|
||||
class PixelPerfectDrawer extends Drawer:
|
||||
class PixelPerfectDrawer:
|
||||
const neighbours = [Vector2(0, 1), Vector2(1, 0), Vector2(-1, 0), Vector2(0, -1)]
|
||||
const corners = [Vector2(1, 1), Vector2(-1, -1), Vector2(-1, 1), Vector2(1, -1)]
|
||||
var last_pixels = [null, null]
|
||||
|
@ -38,3 +28,38 @@ class PixelPerfectDrawer extends Drawer:
|
|||
if _pos - corner[0] in corners and _pos - neighbour[0] in neighbours:
|
||||
_sprite.set_pixel(neighbour[0].x, neighbour[0].y, neighbour[1])
|
||||
last_pixels[0] = corner
|
||||
|
||||
|
||||
var pixel_perfect := false setget set_pixel_perfect
|
||||
var h_mirror := false
|
||||
var v_mirror := false
|
||||
|
||||
var simple_drawer := SimpleDrawer.new()
|
||||
var pixel_perfect_drawers = [PixelPerfectDrawer.new(), PixelPerfectDrawer.new(), PixelPerfectDrawer.new(), PixelPerfectDrawer.new()]
|
||||
var drawers = [simple_drawer, simple_drawer, simple_drawer, simple_drawer]
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
for drawer in pixel_perfect_drawers:
|
||||
drawer.reset()
|
||||
|
||||
|
||||
func set_pixel_perfect(value: bool) -> void:
|
||||
pixel_perfect = value
|
||||
if pixel_perfect:
|
||||
drawers = pixel_perfect_drawers.duplicate()
|
||||
else:
|
||||
drawers = [simple_drawer, simple_drawer, simple_drawer, simple_drawer]
|
||||
|
||||
|
||||
func set_pixel(_sprite: Image, _pos: Vector2, _new_color: Color) -> void:
|
||||
var mirror_x = Global.canvas.east_limit + Global.canvas.west_limit - _pos.x - 1
|
||||
var mirror_y = Global.canvas.south_limit + Global.canvas.north_limit - _pos.y - 1
|
||||
|
||||
drawers[0].set_pixel(_sprite, _pos, _new_color)
|
||||
if h_mirror:
|
||||
drawers[1].set_pixel(_sprite, Vector2(mirror_x, _pos.y), _new_color)
|
||||
if v_mirror:
|
||||
drawers[2].set_pixel(_sprite, Vector2(mirror_x, mirror_y), _new_color)
|
||||
if v_mirror:
|
||||
drawers[3].set_pixel(_sprite, Vector2(_pos.x, mirror_y), _new_color)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue