]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/cistern.cpp
ahora hay que arreglar muchos bugs, pero hay circuitos simples que andan
[z.facultad/75.42/plaqui.git] / Constructor / cistern.cpp
index 88eae2de4e82aaa32b97502637bdd159ce99fcce..fd49a6eb4d0c88b9c71b5603f0c4bab01ef3cf26 100644 (file)
@@ -15,6 +15,13 @@ Cistern::Cistern()
        cistern_pty_wnd->cistern = this;
        cistern_pty_wnd->set_title("Propiedades del Tanque");   
        name = "tanque";
        cistern_pty_wnd->cistern = this;
        cistern_pty_wnd->set_title("Propiedades del Tanque");   
        name = "tanque";
+       
+       Connector temp;
+       temp.id_dest = -1;
+       temp.type = IN;
+       connect_vec.push_back(temp); // entrada arriba
+       temp.type = OUT;
+       connect_vec.push_back(temp); // salida abajo
 }
 
 Cistern::~Cistern()
 }
 
 Cistern::~Cistern()
@@ -134,28 +141,39 @@ void Cistern::save(FILE *archivo)
 
 bool Cistern::check_connection()
 {
 
 bool Cistern::check_connection()
 {
+       ConnectorType temp0, temp1;
        switch (get_img_actual()) {
                case 0:
        switch (get_img_actual()) {
                case 0:
-                       if ( is_other_connection_area( get_position_x()+get_image()->get_width() + 5 , get_position_y()+get_image()->get_height() -16) &&
-                                is_other_connection_area( get_position_x() + 16, get_position_y() - 5) ) 
-                               return true;                            
+                       temp0 = is_other_connection_area( get_position_x()+get_image()->get_width() + 5 , get_position_y()+get_image()->get_height() -16);
+                       temp1 = is_other_connection_area( get_position_x() + 16, get_position_y() - 5);
+                       break;
                case 1:
                case 1:
-                       if ( is_other_connection_area( get_position_x() -5, get_position_y()+get_image()->get_height()-16) &&
-                                is_other_connection_area( get_position_x()+get_image()->get_width() - 16, get_position_y() - 5) )
-                               return true;
+                       temp0 = is_other_connection_area( get_position_x() -5, get_position_y()+get_image()->get_height()-16);
+                       temp1 = is_other_connection_area( get_position_x()+get_image()->get_width() - 16, get_position_y() - 5);
        }
        }
-       return false;
+       if (temp0 == OUT && temp1 == IN)
+               return (is_connected = true);
+       return is_connected;
 }
 
 }
 
-bool Cistern::is_connection_area(int _a, int _b)
+ConnectorType Cistern::get_connector_type(int _a, int _b)
 {
        switch (imgActual) {
 {
        switch (imgActual) {
-               case 0: if ( ( (_a <= x+22)&&(_a>=x+10)&&(_b<=y+10)&&(_b > y) ) ||
-                                                ( (_a <= x+image->get_width()-1)&&(_a >=x+image->get_width()-10)&&(_b<=y+image->get_height()-10)&&(_b >=y+image->get_height()-22) ) )
-                                               return true;
-               case 1: if ( ( (_a <= x+image->get_width()-10)&&(_a>=x+image->get_width()-22)&&(_b<=y+10)&&(_b > y) ) ||
-                                                ( (_a <= x +10)&&(_a > x)&&(_b<=y+image->get_height()-10)&&(_b >=y+image->get_height()-22) ) )
-                                               return true;
+               case 0: if ( (_a <= x+22)&&(_a>=x+10)&&(_b<=y+10)&&(_b > y) )
+                                               return connect_vec[0].type;
+                                       if ( (_a <= x+image->get_width()-1)&&(_a >=x+image->get_width()-10)&&(_b<=y+image->get_height()-10)&&(_b >=y+image->get_height()-22) )
+                                               return connect_vec[1].type;
+                                       break;
+               case 1: if ( (_a <= x+image->get_width()-10)&&(_a>=x+image->get_width()-22)&&(_b<=y+10)&&(_b > y) )
+                                               return connect_vec[0].type;
+                                       if ( (_a <= x +10)&&(_a > x)&&(_b<=y+image->get_height()-10)&&(_b >=y+image->get_height()-22) )
+                                               return connect_vec[1].type;
        }
        }
-       return false;
+       return UNDEF;
+}
+
+void Cistern::set_default_connector()
+{
+       connect_vec[0].type = IN;
+       connect_vec[1].type = OUT;
 }
 }