]> git.lizzy.rs Git - nothing.git/commitdiff
Refactor IDLE state dispatching
authorrexim <reximkut@gmail.com>
Sat, 13 Jul 2019 17:34:58 +0000 (00:34 +0700)
committerrexim <reximkut@gmail.com>
Sat, 13 Jul 2019 17:34:58 +0000 (00:34 +0700)
src/game/level/level_editor/rect_layer.c

index a577db0e1fa38bfeb77dd24af8eb8f3edf014b0e..867b13d3deaff8acbae05578be8a49ba82cef112 100644 (file)
@@ -336,34 +336,27 @@ int rect_layer_event(RectLayer *layer, const SDL_Event *event, const Camera *cam
                     camera,
                     event->button.x,
                     event->button.y);
-
-                if (layer->selection >= 0) {
-                    if (rect_contains_point(
-                            rect_layer_resize_anchor(
-                                layer,
-                                (size_t)layer->selection),
-                            position)) {
-                        layer->state = RECT_LAYER_RESIZE;
-                    } else if (layer->selection == rect_layer_rect_at(layer, position)) {
-                        Rect *rects = dynarray_data(layer->rects);
-                        layer->state = RECT_LAYER_MOVE;
-                        layer->move_anchor =
-                            vec_sub(
-                                position,
-                                vec(
-                                    rects[layer->selection].x,
-                                    rects[layer->selection].y));
-                    } else {
-                        layer->selection = rect_layer_rect_at(layer, position);
-
-                        if (layer->selection < 0) {
-                            layer->state = RECT_LAYER_PROTO;
-                            layer->proto_begin = position;
-                            layer->proto_end = position;
-                        }
-                    }
+                int rect_at_position =
+                    rect_layer_rect_at(layer, position);
+
+                if (rect_at_position >= 0) {
+                    Rect *rects = dynarray_data(layer->rects);
+                    layer->selection = rect_at_position;
+                    layer->state = RECT_LAYER_MOVE;
+                    layer->move_anchor =
+                        vec_sub(
+                            position,
+                            vec(
+                                rects[layer->selection].x,
+                                rects[layer->selection].y));
+                } else if (layer->selection >= 0 && rect_contains_point(
+                               rect_layer_resize_anchor(
+                                   layer,
+                                   (size_t)layer->selection),
+                               position)) {
+                    layer->state = RECT_LAYER_RESIZE;
                 } else {
-                    layer->selection = rect_layer_rect_at(layer, position);
+                    layer->selection = rect_at_position;
 
                     if (layer->selection < 0) {
                         layer->state = RECT_LAYER_PROTO;