]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/src/workplace.cpp
* Se mejora la deteccion de conexiones en el constructor
[z.facultad/75.42/plaqui.git] / Constructor / src / workplace.cpp
index f8893521a43bb0db96b2a93be34e0fa3eb91c350..37b0aa49ca018b23b892ac64ad138fb536756ee9 100644 (file)
@@ -1,5 +1,7 @@
 #include "workplace.h"
 #include "item.h"
 #include "workplace.h"
 #include "item.h"
+#include "pump.h"
+#include "exclusa.h"
 
 int WorkPlace::pointed = -1;
 
 
 int WorkPlace::pointed = -1;
 
@@ -54,12 +56,23 @@ bool WorkPlace::on_expose_event(GdkEventExpose *event)
        }
        
        int a, b, w, z, x_offset, y_offset, img;
        }
        
        int a, b, w, z, x_offset, y_offset, img;
+       int item_x_offset, item_y_offset;
        std::list<t_line>::iterator i = lista_lineas_in.begin();
        while ( i != lista_lineas_in.end() ) {
                t_line temp = *i;
                if ( get_item(temp.store_id) != NULL && get_logic_item(temp.logic_id) != NULL ) {
                        img = get_logic_item(temp.logic_id)->get_img_actual();
        std::list<t_line>::iterator i = lista_lineas_in.begin();
        while ( i != lista_lineas_in.end() ) {
                t_line temp = *i;
                if ( get_item(temp.store_id) != NULL && get_logic_item(temp.logic_id) != NULL ) {
                        img = get_logic_item(temp.logic_id)->get_img_actual();
+                       item_y_offset = item_x_offset = 0;
                        x_offset = y_offset = 0;
                        x_offset = y_offset = 0;
+                       if (dynamic_cast<Pump *>(get_item(temp.store_id))) {
+                               item_y_offset = -15;
+                       } else if (dynamic_cast<Exclusa *>(get_item(temp.store_id))) {
+                               if (get_item(temp.store_id)->get_img_actual()==0) {
+                                       item_y_offset = -15;
+                               } else {
+                                       item_x_offset = 15;
+                               }
+                       }
                        switch (img) {
                                case 0:
                                        x_offset = 15;
                        switch (img) {
                                case 0:
                                        x_offset = 15;
@@ -75,8 +88,9 @@ bool WorkPlace::on_expose_event(GdkEventExpose *event)
                        }
                        get_logic_item(temp.logic_id)->get_out_logic_connect_position(a, b);
                        get_item(temp.store_id)->get_in_logic_connect_position(w,z);
                        }
                        get_logic_item(temp.logic_id)->get_out_logic_connect_position(a, b);
                        get_item(temp.store_id)->get_in_logic_connect_position(w,z);
-                       draw_line(a+x_offset, b+y_offset, w,z, color_in);
+                       draw_line(a+x_offset, b+y_offset, w+item_x_offset, z+item_y_offset, color_in);
                        get_window()->draw_line(gc, a, b, a+x_offset, b+y_offset);
                        get_window()->draw_line(gc, a, b, a+x_offset, b+y_offset);
+                       get_window()->draw_line(gc, w, z, w+item_x_offset, z+item_y_offset);
                }
                i++;
        }
                }
                i++;
        }
@@ -85,24 +99,24 @@ bool WorkPlace::on_expose_event(GdkEventExpose *event)
                t_line temp = *i;
                if ( get_item(temp.store_id) != NULL && get_logic_item(temp.logic_id) != NULL ) {
                        img = get_logic_item(temp.logic_id)->get_img_actual();
                t_line temp = *i;
                if ( get_item(temp.store_id) != NULL && get_logic_item(temp.logic_id) != NULL ) {
                        img = get_logic_item(temp.logic_id)->get_img_actual();
+                       item_y_offset = item_x_offset = 0;
                        x_offset = y_offset = 0;
                        switch (img) {
                                case 0:
                        x_offset = y_offset = 0;
                        switch (img) {
                                case 0:
-                                       x_offset = 15;
+                                       x_offset = -15;
                                break;
                                case 1:
                                break;
                                case 1:
-                                       y_offset = 15;
+                                       y_offset = -15;
                                break;
                                case 2:
                                break;
                                case 2:
-                                       x_offset = -15;
+                                       x_offset = 15;
                                break;
                                case 3:
                                break;
                                case 3:
-                                       y_offset = -15;
+                                       y_offset = 15;
                        }
                        get_item(temp.store_id)->get_out_logic_connect_position(w,z);
                        get_logic_item(temp.logic_id)->get_in_logic_connect_position(a, b);
                        }
                        get_item(temp.store_id)->get_out_logic_connect_position(w,z);
                        get_logic_item(temp.logic_id)->get_in_logic_connect_position(a, b);
-//                     draw_line(w, z, a, b, color_out);
-                       draw_line(w, z, a+x_offset, b+y_offset,color_out);
+                       draw_line(w+item_y_offset, z+item_y_offset, a+x_offset, b+y_offset,color_out);
                        get_window()->draw_line(gc, a, b, a+x_offset, b+y_offset);
                }
                i++;
                        get_window()->draw_line(gc, a, b, a+x_offset, b+y_offset);
                }
                i++;