equal
deleted
inserted
replaced
356 * @note Called in CmdSellRailWagon and DeleteLasWagon, |
356 * @note Called in CmdSellRailWagon and DeleteLasWagon, |
357 * @param v FrontEngine of the train we want to remove. |
357 * @param v FrontEngine of the train we want to remove. |
358 */ |
358 */ |
359 void RemoveVehicleFromGroup(const Vehicle *v) |
359 void RemoveVehicleFromGroup(const Vehicle *v) |
360 { |
360 { |
361 if (!IsValidVehicle(v) || !(v->HasFront() && v->IsPrimaryVehicle())) return; |
361 if (!v->IsValid() || !(v->HasFront() && v->IsPrimaryVehicle())) return; |
362 |
362 |
363 if (!IsDefaultGroupID(v->group_id)) DecreaseGroupNumVehicle(v->group_id); |
363 if (!IsDefaultGroupID(v->group_id)) DecreaseGroupNumVehicle(v->group_id); |
364 } |
364 } |
365 |
365 |
366 |
366 |
372 */ |
372 */ |
373 void SetTrainGroupID(Vehicle *v, GroupID new_g) |
373 void SetTrainGroupID(Vehicle *v, GroupID new_g) |
374 { |
374 { |
375 if (!IsValidGroupID(new_g) && !IsDefaultGroupID(new_g)) return; |
375 if (!IsValidGroupID(new_g) && !IsDefaultGroupID(new_g)) return; |
376 |
376 |
377 assert(IsValidVehicle(v) && v->type == VEH_TRAIN && IsFrontEngine(v)); |
377 assert(v->IsValid() && v->type == VEH_TRAIN && IsFrontEngine(v)); |
378 |
378 |
379 for (Vehicle *u = v; u != NULL; u = u->next) { |
379 for (Vehicle *u = v; u != NULL; u = u->next) { |
380 if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g); |
380 if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g); |
381 |
381 |
382 u->group_id = new_g; |
382 u->group_id = new_g; |
394 * @note Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon |
394 * @note Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon |
395 * @param v First vehicle of the chain. |
395 * @param v First vehicle of the chain. |
396 */ |
396 */ |
397 void UpdateTrainGroupID(Vehicle *v) |
397 void UpdateTrainGroupID(Vehicle *v) |
398 { |
398 { |
399 assert(IsValidVehicle(v) && v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))); |
399 assert(v->IsValid() && v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))); |
400 |
400 |
401 GroupID new_g = IsFrontEngine(v) ? v->group_id : (GroupID)DEFAULT_GROUP; |
401 GroupID new_g = IsFrontEngine(v) ? v->group_id : (GroupID)DEFAULT_GROUP; |
402 for (Vehicle *u = v; u != NULL; u = u->next) { |
402 for (Vehicle *u = v; u != NULL; u = u->next) { |
403 if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g); |
403 if (IsEngineCountable(u)) UpdateNumEngineGroup(u->engine_type, u->group_id, new_g); |
404 |
404 |