summaryrefslogtreecommitdiff
path: root/src/sliceitoff/field/field.py
diff options
context:
space:
mode:
authorViljami Ilola <+@hix.fi>2024-03-16 20:30:32 +0200
committerViljami Ilola <+@hix.fi>2024-03-16 20:30:32 +0200
commit3959cfd0c0cab47f863ea5672350ad280b4b7773 (patch)
tree1aff8e0cad45be393802774b4c011468c8cfc161 /src/sliceitoff/field/field.py
parent6a9f8ab2b47ab9dd19b7ae0e507c16bb919de975 (diff)
field remove
Diffstat (limited to 'src/sliceitoff/field/field.py')
-rw-r--r--src/sliceitoff/field/field.py68
1 files changed, 38 insertions, 30 deletions
diff --git a/src/sliceitoff/field/field.py b/src/sliceitoff/field/field.py
index 13b5c6a..c0c482d 100644
--- a/src/sliceitoff/field/field.py
+++ b/src/sliceitoff/field/field.py
@@ -2,18 +2,24 @@ import pygame
from display import Scaling
class FieldSprite(pygame.sprite.Sprite):
- def __init__(self, rect: pygame.Rect):
+ def __init__(self, area: tuple ):
super().__init__()
- self.rect = rect
+ self.area = area
+ self.update()
+
+ def update(self):
+ self.rect = Scaling.area_to_rect(self.area)
self.image = pygame.Surface(self.rect.size)
self.image.fill("green")
+
class Field():
def __init__(self):
self.sprites = pygame.sprite.Group()
- self.updated = True
- self.areas = [(0,0,40_000,28_000)]
+# self.updated = True
+ self.sprites.add(FieldSprite( (0, 0, 40_000, 28_000) ))
+# self.areas = [(0,0,40_000,28_000)]
def coordinates_inside_area(self, area, x, y) -> bool:
if x < area[0]:
@@ -26,21 +32,23 @@ class Field():
return False
return True
- def slice(self, pos: tuple, direction: bool, thickness: int) -> bool:
+ def slice(self, pos: tuple, direction: bool, thickness: int) -> pygame.Rect:
""" Slice one area into two areas """
# Find the overlapping area
- for area in self.areas:
- if self.coordinates_inside_area(area, pos[0], pos[1]):
+ for field in self.sprites:
+ if self.coordinates_inside_area(field.area, pos[0], pos[1]):
break
else:
- return False
+ return None
# remove current area
- self.areas.remove(area)
- ax, ay, aw, ah = area
+ ax, ay, aw, ah = field.area
+ field.remove(self.sprites)
# create new areas if there is any space
+# self.updated = True
+
if direction:
x1 = ax
x2 = pos[0] - thickness
@@ -48,31 +56,31 @@ class Field():
x4 = ax + aw
if x2 > x1:
- self.areas.append( (x1, ay, x2-x1, ah) )
+ self.sprites.add(FieldSprite( (x1, ay, x2-x1, ah) ))
if x4 > x3:
- self.areas.append( (x3, ay, x4-x3, ah) )
- else:
- y1 = ay
- y2 = pos[1] - thickness
- y3 = pos[1] + thickness
- y4 = ay + ah
-
- if y2 > y1:
- self.areas.append( (ax, y1, aw, y2-y1) )
- if y4 > y3:
- self.areas.append( (ax, y3, aw, y4-y3) )
- self.updated = True
- return True
+ self.sprites.add(FieldSprite( (x3, ay, x4-x3, ah) ))
+ return Scaling.area_to_rect((x2, ay, x3-x2, ah))
+ y1 = ay
+ y2 = pos[1] - thickness
+ y3 = pos[1] + thickness
+ y4 = ay + ah
+
+ if y2 > y1:
+ self.sprites.add(FieldSprite( (ax, y1, aw, y2-y1) ))
+ if y4 > y3:
+ self.sprites.add(FieldSprite( (ax, y3, aw, y4-y3) ))
+ return Scaling.area_to_rect((ax, y2, aw, y3-y2))
def __update_sprites(self):
- self.sprites.empty()
- for area in self.areas:
- self.sprites.add(FieldSprite(Scaling.area_to_rect(area)))
- self.updated = False
+ """"""
+# self.sprites.empty()
+# for area in self.areas:
+# self.sprites.add(FieldSprite(Scaling.area_to_rect(area)))
+# self.updated = False
def get_sprites(self) -> pygame.sprite.Group:
- if self.updated:
- self.__update_sprites()
+# if self.updated:
+# self.__update_sprites()
return self.sprites
def __del__(self):