(svn r2306) - CodeChange: Check the last commands; refits. This needed an extensive rewrite and global/local-cargo ID juggling and bitmasking. However with this done it looks better as well and is compatible with newgrf handling. Big thanks to HackyKid for doing most of the work. This also closes patch "[ 1199277 ] Command checks"

This commit is contained in:
Darkvater
2005-05-14 12:36:16 +00:00
parent 5c8d40bb05
commit 7470322a3d
17 changed files with 291 additions and 344 deletions

View File

@@ -501,6 +501,28 @@ bool CanFillVehicle(Vehicle *v)
return false;
}
/** Check if a given vehicle (type) can be refitted to a given cargo
* @param *v vehicle to check
* @param cid_to check refit to this cargo-type
* @return true if it is possible, false otherwise
*/
bool CanRefitTo(const Vehicle *v, CargoID cid_to)
{
CargoID cid = _global_cargo_id[_opt_ptr->landscape][cid_to];
if (cid == GC_INVALID) return false;
if (_engine_refit_masks[v->engine_type]) {
if (!HASBIT(_engine_refit_masks[v->engine_type], cid)) return false;
} else {
/* If we are talking about normal vehicles (no newgrf), you can only refit engines */
if (v->type == VEH_Train && (RailVehInfo(v->engine_type)->flags & RVI_WAGON)) return false;
if (!HASBIT(_default_refitmasks[v->type - VEH_Train], cid)) return false;
}
return true;
}
static void DoDrawVehicle(Vehicle *v)
{
uint32 image = v->cur_image;