From dee9e14ea7a8ac6c0e68e82079367a549512a973 Mon Sep 17 00:00:00 2001
From: johns <>
Date: Mon, 12 Mar 2001 21:27:04 +0000
Subject: [PATCH] Fixed bug: Upgrade to didn't work with new orders.

---
 src/action/action_upgradeto.cpp |  2 +-
 src/action/command.cpp          |  2 +-
 src/include/unit.h              |  1 -
 src/ui/mainscr.cpp              | 18 ++++++++----------
 4 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/action/action_upgradeto.cpp b/src/action/action_upgradeto.cpp
index f9a2c9701..d0b062d6c 100644
--- a/src/action/action_upgradeto.cpp
+++ b/src/action/action_upgradeto.cpp
@@ -54,7 +54,7 @@ global void HandleActionUpgradeTo(Unit* unit)
 	unit->Data.UpgradeTo.Ticks=0;
 	unit->SubAction=1;
     }
-    type=unit->Data.UpgradeTo.What;
+    type=unit->Orders[0].Type;
     stats=&type->Stats[player->Player];
 
     // FIXME: Should count down here
diff --git a/src/action/command.cpp b/src/action/command.cpp
index 630950ef8..b7a7ba9fc 100644
--- a/src/action/command.cpp
+++ b/src/action/command.cpp
@@ -1531,7 +1531,7 @@ global void CommandCancelUpgradeTo(Unit* unit)
     if( unit->Orders[0].Action == UnitActionUpgradeTo ) {
 
 	PlayerAddCostsFactor(unit->Player,
-		unit->Data.UpgradeTo.What->Stats->Costs,
+		unit->Orders[0].Type->Stats->Costs,
 		CancelUpgradeCostsFactor);
 
 	unit->Orders[0].Action=UnitActionStill;
diff --git a/src/include/unit.h b/src/include/unit.h
index 82c71d341..816e9e97c 100644
--- a/src/include/unit.h
+++ b/src/include/unit.h
@@ -314,7 +314,6 @@ struct _unit_ {
     }		Research;		/// Research action
     struct _order_upgradeto_ {
 	unsigned	Ticks;		/// Ticks to complete
-	UnitType*	What;		/// Unit upgraded to
     } UpgradeTo;			/// Upgrade to action
     struct _order_train_ {
 	unsigned	Ticks;		/// Ticks to complete
diff --git a/src/ui/mainscr.cpp b/src/ui/mainscr.cpp
index 8be4cec71..abf1b2070 100644
--- a/src/ui/mainscr.cpp
+++ b/src/ui/mainscr.cpp
@@ -232,7 +232,7 @@ global void DrawUnitInfo(const Unit* unit)
 
 		DrawCompleted(
 			unit->Data.Train.What[0]
-			    ->Stats[ThisPlayer->Player].Costs[TimeCost]
+			    ->Stats[unit->Player->Player].Costs[TimeCost]
 			,unit->Data.Train.Ticks);
 	    } else {
 		DrawTextCentered(x+114,y+8+29,GameFont,"Training...");
@@ -247,7 +247,7 @@ global void DrawUnitInfo(const Unit* unit)
 
 		DrawCompleted(
 			unit->Data.Train.What[0]
-			    ->Stats[ThisPlayer->Player].Costs[TimeCost]
+			    ->Stats[unit->Player->Player].Costs[TimeCost]
 			,unit->Data.Train.Ticks);
 	    }
 	    return;
@@ -258,13 +258,11 @@ global void DrawUnitInfo(const Unit* unit)
 	//
 	if( unit->Orders[0].Action==UnitActionUpgradeTo ) {
 	    DrawText(x+29,y+8+78,GameFont,"Upgrading:");
-	    DrawUnitIcon(unit->Player
-		    ,unit->Data.UpgradeTo.What->Icon.Icon
+	    DrawUnitIcon(unit->Player,unit->Orders[0].Type->Icon.Icon
 		    ,0,x+107,y+8+70);
 
-	    DrawCompleted(
-		    unit->Data.UpgradeTo.What
-			->Stats[ThisPlayer->Player].Costs[TimeCost]
+	    DrawCompleted(unit->Orders[0].Type
+			->Stats[unit->Player->Player].Costs[TimeCost]
 		    ,unit->Data.UpgradeTo.Ticks);
 	    return;
 	}
@@ -300,7 +298,7 @@ global void DrawUnitInfo(const Unit* unit)
 
 		DrawCompleted(
 			unit->Command.Data.Train.What[0]
-			    ->Stats[ThisPlayer->Player].Costs[TimeCost]
+			    ->Stats[unit->Player->Player].Costs[TimeCost]
 			,unit->Command.Data.Train.Ticks);
 	    } else {
 		DrawTextCentered(x+114,y+8+29,GameFont,"Training...");
@@ -315,7 +313,7 @@ global void DrawUnitInfo(const Unit* unit)
 
 		DrawCompleted(
 			unit->Command.Data.Train.What[0]
-			    ->Stats[ThisPlayer->Player].Costs[TimeCost]
+			    ->Stats[unit->Player->Player].Costs[TimeCost]
 			,unit->Command.Data.Train.Ticks);
 	    }
 	    return;
@@ -328,7 +326,7 @@ global void DrawUnitInfo(const Unit* unit)
 
 	    DrawCompleted(
 		    unit->Command.Data.UpgradeTo.What
-			->Stats[ThisPlayer->Player].Costs[TimeCost]
+			->Stats[unit->Player->Player].Costs[TimeCost]
 		    ,unit->Command.Data.UpgradeTo.Ticks);
 	    return;
 	}