order_cmd.cpp File Reference

#include "stdafx.h"
#include "openttd.h"
#include "order.h"
#include "airport.h"
#include "depot.h"
#include "waypoint.h"
#include "command_func.h"
#include "station.h"
#include "player_func.h"
#include "news.h"
#include "saveload.h"
#include "vehicle_gui.h"
#include "cargotype.h"
#include "aircraft.h"
#include "strings_func.h"
#include "core/alloc_func.hpp"
#include "functions.h"
#include "window_func.h"
#include "settings_type.h"
#include "string_func.h"
#include "table/strings.h"

Go to the source code of this file.

Functions

Order UnpackOldOrder (uint16 packed)
 Unpacks a order from savegames made with TTD(Patch).
static Order UnpackVersion4Order (uint16 packed)
 Unpacks a order from savegames with version 4 and lower.
void InvalidateVehicleOrder (const Vehicle *v)
 Updates the widgets of a vehicle which contains the order-data.
static void SwapOrders (Order *order1, Order *order2)
 Swap two orders.
void AssignOrder (Order *order, Order data)
 Assign data to an order (from an other order) This function makes sure that the index is maintained correctly.
static void DeleteOrderWarnings (const Vehicle *v)
 Delete all news items regarding defective orders about a vehicle This could kill still valid warnings (for example about void order when just another order gets added), but assume the player will notice the problems, when (s)he's changing the orders.
static TileIndex GetOrderLocation (const Order &o)
CommandCost CmdInsertOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Add an order to the orderlist of a vehicle.
static CommandCost DecloneOrder (Vehicle *dst, uint32 flags)
 Declone an order-list.
static void RemoveSharedOrderVehicleList (Vehicle *v)
 Remove the VehicleList that shows all the vehicles with the same shared orders.
CommandCost CmdDeleteOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Delete an order from the orderlist of a vehicle.
CommandCost CmdSkipToOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Goto order of order-list.
CommandCost CmdMoveOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Move an order inside the orderlist.
CommandCost CmdModifyOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Modify an order in the orderlist of a vehicle.
CommandCost CmdCloneOrder (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Clone/share/copy an order-list of an other vehicle.
CommandCost CmdOrderRefit (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Add/remove refit orders from an order.
void BackupVehicleOrders (const Vehicle *v, BackuppedOrders *bak)
 Backup a vehicle order-list, so you can replace a vehicle without loosing the order-list.
void RestoreVehicleOrders (const Vehicle *v, const BackuppedOrders *bak)
 Restore vehicle orders that are backupped via BackupVehicleOrders.
CommandCost CmdRestoreOrderIndex (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Restore the current order-index of a vehicle and sets service-interval.
static TileIndex GetStationTileForVehicle (const Vehicle *v, const Station *st)
void CheckOrders (const Vehicle *v)
 Check the orders of a vehicle, to see if there are invalid orders and stuff.
void RemoveOrderFromAllVehicles (OrderType type, DestinationID destination)
 Removes an order from all vehicles.
bool VehicleHasDepotOrders (const Vehicle *v)
 Checks if a vehicle has a GOTO_DEPOT in his order list.
void DeleteVehicleOrders (Vehicle *v)
 Delete all orders from a vehicle.
Date GetServiceIntervalClamped (uint index)
 Get the service interval domain.
bool CheckForValidOrders (const Vehicle *v)
 Check if a vehicle has any valid orders.
void InitializeOrders ()
static void Save_ORDR ()
static void Load_ORDR ()

Variables

TileIndex _backup_orders_tile
BackuppedOrders _backup_orders_data
static const SaveLoad _order_desc []
const ChunkHandler _order_chunk_handlers []


Detailed Description

Definition in file order_cmd.cpp.


Function Documentation

void AssignOrder ( Order *  order,
Order  data 
)

Assign data to an order (from an other order) This function makes sure that the index is maintained correctly.

Definition at line 116 of file order_cmd.cpp.

Referenced by CmdCloneOrder(), CmdInsertOrder(), and SwapOrders().

void BackupVehicleOrders ( const Vehicle *  v,
BackuppedOrders *  bak 
)

Backup a vehicle order-list, so you can replace a vehicle without loosing the order-list.

Definition at line 926 of file order_cmd.cpp.

bool CheckForValidOrders ( const Vehicle *  v  ) 

Check if a vehicle has any valid orders.

Returns:
false if there are no valid orders

Definition at line 1282 of file order_cmd.cpp.

void CheckOrders ( const Vehicle *  v  ) 

Check the orders of a vehicle, to see if there are invalid orders and stuff.

Definition at line 1075 of file order_cmd.cpp.

References AddNewsItem(), GetLastVehicleOrder(), NEWS_FLAGS, NF_VEHICLE, NF_VIEWPORT, NM_SMALL, and NT_ADVICE.

CommandCost CmdCloneOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Clone/share/copy an order-list of an other vehicle.

Parameters:
tile unused
flags operation to perform
p1 various bitstuffed elements
  • p1 = (bit 0-15) - destination vehicle to clone orders to (p1 & 0xFFFF)
  • p1 = (bit 16-31) - source vehicle to clone orders from, if any (none for CO_UNSHARE)
p2 mode of cloning: CO_SHARE, CO_COPY, or CO_UNSHARE

Definition at line 746 of file order_cmd.cpp.

References AssignOrder(), CC_PASSENGERS, CMD_ERROR, DC_EXEC, DecloneOrder(), DeleteVehicleOrders(), GB(), GetFirstVehicleFromSharedList(), INVALID_TILE, InvalidateVehicleOrder(), IsValidVehicleID(), and return_cmd_error.

CommandCost CmdDeleteOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Delete an order from the orderlist of a vehicle.

Parameters:
tile unused
flags operation to perform
p1 the ID of the vehicle
p2 the order to delete (max 255)

Definition at line 455 of file order_cmd.cpp.

References CMD_ERROR, DC_EXEC, DecloneOrder(), DeleteOrderWarnings(), GetFirstVehicleFromSharedList(), HasBit(), InvalidateVehicleOrder(), IsValidVehicleID(), RemoveSharedOrderVehicleList(), and SwapOrders().

CommandCost CmdInsertOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Add an order to the orderlist of a vehicle.

Parameters:
tile unused
flags operation to perform
p1 various bitstuffed elements
  • p1 = (bit 0 - 15) - ID of the vehicle
  • p1 = (bit 16 - 31) - the selected order (if any). If the last order is given, the order will be inserted before that one only the first 8 bits used currently (bit 16 - 23) (max 255)
p2 packed order to insert

Definition at line 165 of file order_cmd.cpp.

References AssignOrder(), CanAircraftUseStation(), CC_PASSENGERS, CMD_ERROR, DC_EXEC, DeleteOrderWarnings(), DistanceManhattan(), GB(), GetFirstVehicleFromSharedList(), GetLastVehicleOrder(), GetTileOwner(), InvalidateVehicleOrder(), IsTileDepotType(), IsValidVehicleID(), OFB_FULL_LOAD, OFB_HALT_IN_DEPOT, OFB_NON_STOP, OFB_PART_OF_ORDERS, OFB_TRANSFER, OFB_UNLOAD, OWNER_NONE, return_cmd_error, SwapOrders(), and VPF_NPF.

CommandCost CmdModifyOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Modify an order in the orderlist of a vehicle.

Parameters:
tile unused
flags operation to perform
p1 various bitstuffed elements
  • p1 = (bit 0 - 15) - ID of the vehicle
  • p1 = (bit 16 - 31) - the selected order (if any). If the last order is given, the order will be inserted before that one only the first 8 bits used currently (bit 16 - 23) (max 255)
p2 mode to change the order to (always set)

Definition at line 666 of file order_cmd.cpp.

References ClrBit(), CMD_ERROR, DC_EXEC, DeleteOrderWarnings(), GB(), GetFirstVehicleFromSharedList(), HasBit(), InvalidateVehicleOrder(), IsValidVehicleID(), and ToggleBit().

CommandCost CmdMoveOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Move an order inside the orderlist.

Parameters:
tile unused
p1 the ID of the vehicle
p2 order to move and target bit 0-15 : the order to move bit 16-31 : the target order
Note:
The target order will move one place down in the orderlist if you move the order upwards else it'll move it one place down

Definition at line 580 of file order_cmd.cpp.

References CMD_ERROR, DC_EXEC, DeleteOrderWarnings(), GB(), GetFirstVehicleFromSharedList(), InvalidateVehicleOrder(), IsValidVehicleID(), and SwapOrders().

CommandCost CmdOrderRefit ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Add/remove refit orders from an order.

Parameters:
tile Not used
flags operation to perform
p1 VehicleIndex of the vehicle having the order
p2 bitmask
  • bit 0-7 CargoID
  • bit 8-15 Cargo subtype
  • bit 16-23 number of order to modify

Definition at line 880 of file order_cmd.cpp.

References CMD_ERROR, DC_EXEC, GB(), GetFirstVehicleFromSharedList(), HasBit(), InvalidateVehicleOrder(), and IsValidVehicleID().

CommandCost CmdRestoreOrderIndex ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Restore the current order-index of a vehicle and sets service-interval.

Parameters:
tile unused
flags operation to perform
p1 the ID of the vehicle
p2 various bistuffed elements
  • p2 = (bit 0-15) - current order-index (p2 & 0xFFFF)
  • p2 = (bit 16-31) - service interval (p2 >> 16)
Todo:
Unfortunately you cannot safely restore the unitnumber or the old vehicle as far as I can see. We can store it in BackuppedOrders, and restore it, but but we have no way of seeing it has been tampered with or not, as we have no legit way of knowing what that ID was.
If we do want to backup/restore it, just add UnitID uid to BackuppedOrders, and restore it as parameter 'y' (ugly hack I know) for example. "v->unitnumber = y;"

Definition at line 1030 of file order_cmd.cpp.

References CMD_ERROR, DC_EXEC, GB(), GetServiceIntervalClamped(), and IsValidVehicleID().

CommandCost CmdSkipToOrder ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Goto order of order-list.

Parameters:
tile unused
flags operation to perform
p1 The ID of the vehicle which order is skipped
p2 the selected order to which we want to skip

Definition at line 535 of file order_cmd.cpp.

References CMD_ERROR, DC_EXEC, HasBit(), InvalidateVehicleOrder(), and IsValidVehicleID().

static CommandCost DecloneOrder ( Vehicle *  dst,
uint32  flags 
) [static]

Declone an order-list.

Parameters:
*dst delete the orders of this vehicle
flags execution flags

Definition at line 420 of file order_cmd.cpp.

References DC_EXEC, DeleteVehicleOrders(), and InvalidateVehicleOrder().

Referenced by CmdCloneOrder(), and CmdDeleteOrder().

void DeleteVehicleOrders ( Vehicle *  v  ) 

Delete all orders from a vehicle.

Definition at line 1220 of file order_cmd.cpp.

References DeleteOrderWarnings(), InvalidateVehicleOrder(), and RemoveSharedOrderVehicleList().

Referenced by CmdCloneOrder(), CmdMoveRailVehicle(), and DecloneOrder().

Date GetServiceIntervalClamped ( uint  index  ) 

Get the service interval domain.

Get the new proposed service interval for the vehicle is indeed, clamped within the given bounds.

See also:
MIN_SERVINT_PERCENT ,etc.
Parameters:
index proposed service interval
Returns:
service interval

Definition at line 1269 of file order_cmd.cpp.

References Clamp().

Referenced by CmdChangeServiceInt(), CmdRestoreOrderIndex(), and VehicleDetailsWndProc().

void InvalidateVehicleOrder ( const Vehicle *  v  ) 

void RemoveOrderFromAllVehicles ( OrderType  type,
DestinationID  destination 
)

Removes an order from all vehicles.

Triggers when, say, a station is removed.

Parameters:
type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]).
destination The destination. Can be a StationID, DepotID or WaypointID.

Definition at line 1150 of file order_cmd.cpp.

References GetFirstVehicleFromSharedList(), and InvalidateVehicleOrder().

void RestoreVehicleOrders ( const Vehicle *  v,
const BackuppedOrders *  bak 
)

Restore vehicle orders that are backupped via BackupVehicleOrders.

Definition at line 977 of file order_cmd.cpp.

References _cmd_text, CMD_ADD_VEHICLE_GROUP, CMD_CHANGE_TIMETABLE, CMD_CLONE_ORDER, CMD_INSERT_ORDER, CMD_NAME_VEHICLE, CMD_NO_TEST_IF_IN_NETWORK, CMD_RESTORE_ORDER_INDEX, and DoCommandP().

Referenced by CcBuildAircraft().

static void SwapOrders ( Order *  order1,
Order *  order2 
) [static]

Swap two orders.

Definition at line 99 of file order_cmd.cpp.

References AssignOrder().

Referenced by CmdDeleteOrder(), CmdInsertOrder(), and CmdMoveOrder().

Order UnpackOldOrder ( uint16  packed  ) 

Unpacks a order from savegames made with TTD(Patch).

Definition at line 38 of file order_cmd.cpp.

References GB().

static Order UnpackVersion4Order ( uint16  packed  )  [static]

Unpacks a order from savegames with version 4 and lower.

Definition at line 67 of file order_cmd.cpp.

References GB().

bool VehicleHasDepotOrders ( const Vehicle *  v  ) 

Checks if a vehicle has a GOTO_DEPOT in his order list.

Returns:
True if this is true (lol ;))

Definition at line 1203 of file order_cmd.cpp.

Referenced by CheckSendAircraftToHangarForReplacement().


Variable Documentation

const ChunkHandler _order_chunk_handlers[]

Initial value:

 {
  { 'ORDR', Save_ORDR, Load_ORDR, CH_ARRAY | CH_LAST},
}

const SaveLoad _order_desc[] [static]

Initial value:

 {
  SLE_VAR(Order, type,  SLE_UINT8),
  SLE_VAR(Order, flags, SLE_UINT8),
  SLE_VAR(Order, dest,  SLE_UINT16),
  SLE_REF(Order, next,  REF_ORDER),
  SLE_CONDVAR(Order, refit_cargo,    SLE_UINT8,  36, SL_MAX_VERSION),
  SLE_CONDVAR(Order, refit_subtype,  SLE_UINT8,  36, SL_MAX_VERSION),
  SLE_CONDVAR(Order, wait_time,      SLE_UINT16, 67, SL_MAX_VERSION),
  SLE_CONDVAR(Order, travel_time,    SLE_UINT16, 67, SL_MAX_VERSION),

  
  SLE_CONDNULL(10, 5, 35),

}

Definition at line 1299 of file order_cmd.cpp.


Generated on Mon Sep 22 20:34:24 2008 for openttd by  doxygen 1.5.6