Răsfoiți Sursa

More smooth motion, reduced flashing in case of multiple assets

tBKwtWS 1 lună în urmă
părinte
comite
c284bb47ce
1 a modificat fișierele cu 7 adăugiri și 6 ștergeri
  1. 7 6
      karel_asset.py

+ 7 - 6
karel_asset.py

@@ -94,11 +94,11 @@ def relative_move_asset(asset, x:int=0, y:int=0):
     asset[1][2] += y
     asset[1][2] += y
 
 
     # Replace asset
     # Replace asset
-    erase_asset(asset)
     match asset[2]:
     match asset[2]:
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
-
+    erase_asset(asset)
+    
     logger.debug(f"Moved {asset[2]} by {x} horizontally, {y} vertically: {new_asset}")
     logger.debug(f"Moved {asset[2]} by {x} horizontally, {y} vertically: {new_asset}")
     return new_asset
     return new_asset
 
 
@@ -146,10 +146,10 @@ def orientation_move_asset(asset, direction:str, amount:int):
             asset[1][2] -= amount
             asset[1][2] -= amount
 
 
     # Replace asset
     # Replace asset
-    erase_asset(asset)
     match asset[2]:
     match asset[2]:
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
+    erase_asset(asset)
 
 
     logger.debug(f"Moved: {asset[2]} {direction} by {amount}: {new_asset}")
     logger.debug(f"Moved: {asset[2]} {direction} by {amount}: {new_asset}")
     return new_asset
     return new_asset
@@ -161,10 +161,10 @@ def absolute_move_asset(asset, x:int, y:int):
     asset[1][2] = y
     asset[1][2] = y
 
 
     # Replace asset
     # Replace asset
-    erase_asset(asset)
     match asset[2]:
     match asset[2]:
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
+    erase_asset(asset)
 
 
     logger.debug(f"Moved: {asset[2]} by {x} horizontally, {y} vertically: {new_asset}")
     logger.debug(f"Moved: {asset[2]} by {x} horizontally, {y} vertically: {new_asset}")
     return new_asset
     return new_asset
@@ -226,10 +226,11 @@ def rotate_asset(asset, direction):
         logger.error(f"Invalid rotation direction: {direction}")
         logger.error(f"Invalid rotation direction: {direction}")
 
 
     # Repalce asset
     # Repalce asset
-    erase_asset(asset)
+    
     match asset[2]:
     match asset[2]:
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
+    erase_asset(asset)
 
 
     logger.debug(f"Rotated {asset[2]} by {direction} as {asset[1][4]}: {new_asset}")
     logger.debug(f"Rotated {asset[2]} by {direction} as {asset[1][4]}: {new_asset}")
     return new_asset
     return new_asset
@@ -266,10 +267,10 @@ def recolour_asset(asset, colour:str="black", background:str="white"):
     asset[1][6] = background
     asset[1][6] = background
 
 
     # Replace asset
     # Replace asset
-    erase_asset(asset)
     match asset[2]:
     match asset[2]:
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "karel": new_asset = draw_karel(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
         case "beeper": new_asset = draw_beeper(asset[1][0], asset[1][1], asset[1][2], asset[1][3], asset[1][4], asset[1][5], asset[1][6], asset[1][7])
+    erase_asset(asset)
 
 
     logger.debug(f"Re-coloured Karel {asset[2]} with {colour} and {background}: {new_asset}")
     logger.debug(f"Re-coloured Karel {asset[2]} with {colour} and {background}: {new_asset}")
     return new_asset
     return new_asset