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*);
211
216
/// Sucht ein nächstgelegenes Warenhaus für den Punkt 'start', das die Bedingung der Ãbergebenen Funktion
212
217
/// IsWarehouseGood erfüllt, als letzen Parameter erhält jene Funktion param
213
218
/// - forbidden ist ein optionales StraÃenstück, das nicht betreten werden darf,
214
219
/// - to_wh muss auf true gesetzt werden, wenn es zum Lagerhaus geht, ansonsten auf false, in length wird die Wegeslänge zurückgegeben
215
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);
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;
216
251
/// Gibt dem Spieler bekannt, das eine neue StraÃe gebaut wurde
217
252
void NewRoad(RoadSegment * const rs);
218
253
/// Neue StraÃe hinzufügen