forked from mirror/OpenTTD
(svn r2650) Convert many explicit shifts+ands to extract bits to invocations of GB - should be a bit nicer to read
This commit is contained in:
36
order_cmd.c
36
order_cmd.c
@@ -40,9 +40,9 @@ MemoryPool _order_pool = { "Orders", ORDER_POOL_MAX_BLOCKS, ORDER_POOL_BLOCK_SIZ
|
||||
Order UnpackOldOrder(uint16 packed)
|
||||
{
|
||||
Order order;
|
||||
order.type = (packed & 0x000F);
|
||||
order.flags = (packed & 0x00F0) >> 4;
|
||||
order.station = (packed & 0xFF00) >> 8;
|
||||
order.type = GB(packed, 0, 4);
|
||||
order.flags = GB(packed, 4, 4);
|
||||
order.station = GB(packed, 8, 8);
|
||||
order.next = NULL;
|
||||
|
||||
// Sanity check
|
||||
@@ -63,9 +63,9 @@ Order UnpackOldOrder(uint16 packed)
|
||||
Order UnpackVersion4Order(uint16 packed)
|
||||
{
|
||||
Order order;
|
||||
order.type = (packed & 0x000F);
|
||||
order.flags = (packed & 0x00F0) >> 4;
|
||||
order.station = (packed & 0xFF00) >> 8;
|
||||
order.type = GB(packed, 0, 4);
|
||||
order.flags = GB(packed, 4, 4);
|
||||
order.station = GB(packed, 8, 8);
|
||||
order.next = NULL;
|
||||
order.index = 0; // avoid compiler warning
|
||||
return order;
|
||||
@@ -144,17 +144,17 @@ void AssignOrder(Order *order, Order data)
|
||||
/** Add an order to the orderlist of a vehicle.
|
||||
* @param x,y unused
|
||||
* @param p1 various bitstuffed elements
|
||||
* - p1 = (bit 0 - 15) - ID of the vehicle (p1 & 0xFFFF)
|
||||
* - 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 (p1 & 0xFFFF0000)>>16
|
||||
* only the first 8 bytes used currently (bit 16 - 23) (max 255)
|
||||
* the order will be inserted before that one
|
||||
* only the first 8 bits used currently (bit 16 - 23) (max 255)
|
||||
* @param p2 packed order to insert
|
||||
*/
|
||||
int32 CmdInsertOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *v;
|
||||
VehicleID veh = p1 & 0xFFFF;
|
||||
OrderID sel_ord = p1 >> 16;
|
||||
VehicleID veh = GB(p1, 0, 16);
|
||||
OrderID sel_ord = GB(p1, 16, 16);
|
||||
Order new_order = UnpackOrder(p2);
|
||||
|
||||
if (!IsVehicleIndex(veh)) return CMD_ERROR;
|
||||
@@ -509,18 +509,18 @@ int32 CmdSkipOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
/** Modify an order in the orderlist of a vehicle.
|
||||
* @param x,y unused
|
||||
* @param p1 various bitstuffed elements
|
||||
* - p1 = (bit 0 - 15) - ID of the vehicle (p1 & 0xFFFF)
|
||||
* - 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 (p1 & 0xFFFF0000)>>16
|
||||
* only the first 8 bytes used currently (bit 16 - 23) (max 255)
|
||||
* the order will be inserted before that one
|
||||
* only the first 8 bits used currently (bit 16 - 23) (max 255)
|
||||
* @param p2 mode to change the order to (always set)
|
||||
*/
|
||||
int32 CmdModifyOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *v;
|
||||
Order *order;
|
||||
OrderID sel_ord = p1 >> 16; // XXX - automatically truncated to 8 bits.
|
||||
VehicleID veh = p1 & 0xFFFF;
|
||||
OrderID sel_ord = GB(p1, 16, 16); // XXX - automatically truncated to 8 bits.
|
||||
VehicleID veh = GB(p1, 0, 16);
|
||||
|
||||
if (!IsVehicleIndex(veh)) return CMD_ERROR;
|
||||
if (p2 != OFB_FULL_LOAD && p2 != OFB_UNLOAD && p2 != OFB_NON_STOP && p2 != OFB_TRANSFER) return CMD_ERROR;
|
||||
@@ -583,8 +583,8 @@ int32 CmdModifyOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
int32 CmdCloneOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *dst;
|
||||
VehicleID veh_src = (p1 >> 16) & 0xFFFF;
|
||||
VehicleID veh_dst = p1 & 0xFFFF;
|
||||
VehicleID veh_src = GB(p1, 16, 16);
|
||||
VehicleID veh_dst = GB(p1, 0, 16);
|
||||
|
||||
if (!IsVehicleIndex(veh_dst)) return CMD_ERROR;
|
||||
|
||||
|
Reference in New Issue
Block a user