From 4ad8b95dccc6aca8bc10477bce25dd7e676d9a55 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 10 Apr 2008 17:23:51 +0000 Subject: (svn r12652) -Codechange: rework the order GUI a little more to make it a little more clear that 'transfer' is just an unload type. --- src/order_cmd.cpp | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'src/order_cmd.cpp') diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index f9a3b0618..a1c5f76f7 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -174,6 +174,11 @@ void Order::ConvertFromOldSavegame() uint t = ((this->flags & 1) == 0) ? OUF_UNLOAD_IF_POSSIBLE : OUFB_TRANSFER; if ((this->flags & 2) != 0) t |= OUFB_UNLOAD; this->SetUnloadType((OrderUnloadFlags)t); + + if ((this->GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) == (OUFB_UNLOAD | OUFB_TRANSFER)) { + this->SetUnloadType(OUFB_TRANSFER); + this->SetLoadType(OLFB_NO_LOAD); + } } else { uint t = ((this->flags & 6) == 6) ? ODTFB_SERVICE : ODTF_MANUAL; if ((this->flags & 2) != 0) t |= ODTFB_PART_OF_ORDERS; @@ -820,32 +825,16 @@ CommandCost CmdModifyOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) case MOF_UNLOAD: order->SetUnloadType((OrderUnloadFlags)data); - /* Full loading gets disabled when un loading! */ - if ((data & OUFB_UNLOAD) != 0) { - order->SetLoadType((OrderLoadFlags)(order->GetLoadType() & ~(OLFB_FULL_LOAD | OLF_FULL_LOAD_ANY))); - } - if ((data & (OUFB_NO_UNLOAD | OUFB_TRANSFER)) != 0) { - if ((order->GetLoadType() & OLFB_NO_LOAD) != 0 && (data & OUFB_TRANSFER) != 0) { - order->SetUnloadType((OrderUnloadFlags)(data | OUFB_UNLOAD)); - } + if ((data & OUFB_NO_UNLOAD) != 0 && (order->GetLoadType() & OLFB_NO_LOAD) != 0) { order->SetLoadType((OrderLoadFlags)(order->GetLoadType() & ~OLFB_NO_LOAD)); } break; case MOF_LOAD: order->SetLoadType((OrderLoadFlags)data); - /* Unloading gets disabled when full loading! */ - if ((data & OLFB_FULL_LOAD) != 0) { - order->SetUnloadType((OrderUnloadFlags)(order->GetUnloadType() & ~OUFB_UNLOAD)); - } - if ((data & OLFB_NO_LOAD) != 0) { - if ((order->GetUnloadType() & OUFB_TRANSFER) != 0) { - /* No load + transfer == unload + transfer */ - order->SetUnloadType((OrderUnloadFlags)(order->GetUnloadType() | OUFB_UNLOAD)); - order->SetLoadType((OrderLoadFlags)(data & ~OLFB_NO_LOAD)); - } else { - order->SetUnloadType((OrderUnloadFlags)(order->GetUnloadType() & ~OUFB_NO_UNLOAD)); - } + if ((data & OLFB_NO_LOAD) != 0 && (order->GetUnloadType() & OUFB_NO_UNLOAD) != 0) { + /* No load + no unload isn't compatible */ + order->SetUnloadType((OrderUnloadFlags)(order->GetUnloadType() & ~OUFB_NO_UNLOAD)); } break; -- cgit v1.2.3-54-g00ecf