19-10-2009, Monday-10:50:50
Hier ist ein Fix für den Bug:
Es werden noch 2 weitere Bugs gefixt:
- Die Grafik der Leitung am Brückenende wird nach dem Löschen einer Brücke korrekt angezeigt.
- Man kann keine Leitungen auf Leitungsbrücken direkt löschen.
Code:
Index: simwerkz.cc
===================================================================
--- simwerkz.cc (revision 2795)
+++ simwerkz.cc (working copy)
@@ -407,7 +407,7 @@
msg = brueckenbauer_t::remove(welt, sp, gr->get_pos(), powerline_wt );
return msg == NULL;
}
- else {
+ else if( !gr->ist_bruecke() ){
lt->entferne(sp);
delete lt;
return true;
Index: bauer/brueckenbauer.cc
===================================================================
--- bauer/brueckenbauer.cc (revision 2795)
+++ bauer/brueckenbauer.cc (working copy)
@@ -612,8 +612,10 @@
// search neighbors
for(int r = 0; r < 4; r++) {
if( (zv == koord::invalid || zv == koord::nsow[r]) && from->get_neighbour(to, delete_wegtyp, koord::nsow[r]) && !marker.ist_markiert(to) && to->ist_bruecke() ) {
- tmp_list.insert(to->get_pos());
- marker.markiere(to);
+ if( wegtyp != powerline_wt || to->find<bruecke_t>()->get_besch()->get_waytype() == powerline_wt ) {
+ tmp_list.insert(to->get_pos());
+ marker.markiere(to);
+ }
}
}
} while (!tmp_list.empty());
@@ -657,7 +659,6 @@
grund_t *gr = welt->lookup(pos);
if(wegtyp==powerline_wt) {
- gr->get_leitung()->calc_bild();
ding_t *br;
while ((br = gr->find<bruecke_t>()) != 0) {
br->entferne(sp);
@@ -700,6 +701,10 @@
grund_t *gr_new = new boden_t(welt, pos, gr->get_grund_hang());
gr_new->take_obj_from( gr );
welt->access(pos.get_2d())->kartenboden_setzen(gr_new );
+
+ if( wegtyp == powerline_wt ) {
+ gr_new->get_leitung()->calc_neighbourhood(); // Recalc the image. calc_bild() doesn't do the right job...
+ }
}
welt->set_dirty();
Es werden noch 2 weitere Bugs gefixt:
- Die Grafik der Leitung am Brückenende wird nach dem Löschen einer Brücke korrekt angezeigt.
- Man kann keine Leitungen auf Leitungsbrücken direkt löschen.