forked from aburch/simutrans
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpillar.cc
95 lines (73 loc) · 1.89 KB
/
pillar.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
* Brueckenteile (sichtbar)
*
* Hj. Malthaner
*/
#include <string.h>
#include "../simworld.h"
#include "../simdings.h"
#include "../simmem.h"
#include "../simimg.h"
#include "../bauer/brueckenbauer.h"
#include "../boden/grund.h"
#include "../gui/thing_info.h"
#include "../dataobj/loadsave.h"
#include "../dings/pillar.h"
#include "../dings/bruecke.h"
pillar_t::pillar_t(karte_t *welt, loadsave_t *file) : ding_t(welt)
{
besch = NULL;
rdwr(file);
}
pillar_t::pillar_t(karte_t *welt, koord3d pos, spieler_t *sp, const bruecke_besch_t *besch, bruecke_besch_t::img_t img, int hoehe) : ding_t(welt, pos)
{
this->besch = besch;
this->dir = (uint8)img;
setze_yoff(-hoehe);
setze_besitzer( sp );
}
/**
* @return Einen Beschreibungsstring für das Objekt, der z.B. in einem
* Beobachtungsfenster angezeigt wird.
* @author Hj. Malthaner
*/
void pillar_t::zeige_info()
{
planquadrat_t *plan=welt->access(gib_pos().gib_2d());
for(unsigned i=0; i<plan->gib_boden_count(); i++ ) {
grund_t *bd=plan->gib_boden_bei(i);
if(bd->ist_bruecke()) {
bruecke_t* br = bd->find<bruecke_t>();
if(br && br->gib_besch()==besch) {
br->zeige_info();
}
}
}
}
void pillar_t::rdwr(loadsave_t *file)
{
ding_t::rdwr(file);
const char *s = NULL;
if(file->is_saving()) {
s = besch->gib_name();
}
file->rdwr_str(s, "");
file->rdwr_byte(dir,"\n");
if(file->is_loading()) {
besch = brueckenbauer_t::gib_besch(s);
if(besch==0) {
if(strstr(s,"ail")) {
besch = brueckenbauer_t::gib_besch("ClassicRail");
dbg->warning("pillar_t::rdwr()","Unknown bridge %s replaced by ClassicRail",s);
}
else if(strstr(s,"oad")) {
besch = brueckenbauer_t::gib_besch("ClassicRoad");
dbg->warning("pillar_t::rdwr()","Unknown bridge %s replaced by ClassicRoad",s);
}
else {
dbg->fatal("pillar_t::rdwr()","Unknown bridge %s",s);
}
}
guarded_free(const_cast<char *>(s));
}
}