]> git.lizzy.rs Git - nothing.git/commitdiff
(#1253) Let subtract tool cut out a window inside of a platform
authorrexim <reximkut@gmail.com>
Sat, 8 Feb 2020 18:53:15 +0000 (01:53 +0700)
committerrexim <reximkut@gmail.com>
Sat, 8 Feb 2020 18:53:15 +0000 (01:53 +0700)
src/game/level/level_editor/rect_layer.c

index 20f21ee8ea891fad43ea4a5b436a6aab56490cf7..5cee90efaaf635f8263f3d5f08beb4542df65503 100644 (file)
@@ -354,11 +354,15 @@ static int rect_layer_event_idle(RectLayer *layer,
 
             Color *colors = (Color*)layer->colors.data;
 
-            if (layer->selection >= 0 &&
-                layer->selection == rect_at_position &&
-                (layer->resize_mask = calc_resize_mask(
-                    vec((float) event->button.x, (float)event->button.y),
-                    camera_rect(camera, rects[layer->selection])))) {
+            if (layer->subtract_enabled) {
+                layer->state = RECT_LAYER_SUBTRACT;
+                layer->create_begin = position;
+                layer->create_end = position;
+            } else if (layer->selection >= 0 &&
+                       layer->selection == rect_at_position &&
+                       (layer->resize_mask = calc_resize_mask(
+                           vec((float) event->button.x, (float)event->button.y),
+                           camera_rect(camera, rects[layer->selection])))) {
                 layer->state = RECT_LAYER_RESIZE;
                 dynarray_copy_to(&layer->rects, &layer->inter_rect, (size_t) layer->selection);
             } else if (rect_at_position >= 0) {
@@ -376,9 +380,7 @@ static int rect_layer_event_idle(RectLayer *layer,
                 layer->selection = rect_at_position;
 
                 if (layer->selection < 0) {
-                    layer->state = layer->subtract_enabled
-                        ? RECT_LAYER_SUBTRACT
-                        : RECT_LAYER_CREATE;
+                    layer->state = RECT_LAYER_CREATE;
                     layer->create_begin = position;
                     layer->create_end = position;
                 }