207
207
/*/// liefert das aktuelle (komplette) inventar.
208
208
void GetInventory(unsigned int *wares, unsigned int *figures);*/
210
template <class ParamType>
211
struct IsWarehouseGood
213
typedef bool (*Check)(nobBaseWarehouse*,typename const ParamType*);
216
210
/// Sucht ein nächstgelegenes Warenhaus für den Punkt 'start', das die Bedingung der Ãbergebenen Funktion
217
211
/// IsWarehouseGood erfüllt, als letzen Parameter erhält jene Funktion param
218
212
/// - forbidden ist ein optionales StraÃenstück, das nicht betreten werden darf,
219
213
/// - to_wh muss auf true gesetzt werden, wenn es zum Lagerhaus geht, ansonsten auf false, in length wird die Wegeslänge zurückgegeben
220
template< typename ParamType, typename Check >
221
nobBaseWarehouse * FindWarehouse(const noRoadNode * const start,Check isWarehouseGood,const RoadSegment * const forbidden,const bool to_wh,const ParamType ¶m,const bool use_boat_roads,unsigned * const length = NULL)
223
nobBaseWarehouse * best = 0;
225
// unsigned char path = 0xFF, tpath = 0xFF;
226
unsigned tlength = 0xFFFFFFFF,best_length = 0xFFFFFFFF;
228
for(std::list<nobBaseWarehouse*>::iterator w = warehouses.begin(); w!=warehouses.end(); ++w)
230
// Lagerhaus geeignet?
231
if(isWarehouseGood(*w,param))
233
// Bei der erlaubten Benutzung von BootsstraÃen Waren-Pathfinding benutzen
234
if(gwg->FindPathOnRoads(to_wh ? start : *w, to_wh ? *w : start,use_boat_roads,&tlength,NULL, NULL,forbidden))
236
if(tlength < best_length || !best)
239
best_length = tlength;
247
*length = best_length;
214
nobBaseWarehouse * FindWarehouse(const noRoadNode * const start,bool (*IsWarehouseGood)(nobBaseWarehouse*,const void*),const RoadSegment * const forbidden,const bool to_wh,const void * param,const bool use_boat_roads,unsigned * const length = 0);
251
215
/// Gibt dem Spieler bekannt, das eine neue StraÃe gebaut wurde
252
216
void NewRoad(RoadSegment * const rs);
253
217
/// Neue StraÃe hinzufügen