From 662a3abea60168b367170ab485c7505471ee230c Mon Sep 17 00:00:00 2001
From: Tim Felgentreff <timfelgentreff@gmail.com>
Date: Sat, 19 Feb 2022 12:49:09 +0100
Subject: [PATCH] improve UnitDump logging

---
 src/action/actions.cpp | 35 +++++++++++++++++++++++++++++++----
 1 file changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/action/actions.cpp b/src/action/actions.cpp
index 6881e62c0..56576e500 100644
--- a/src/action/actions.cpp
+++ b/src/action/actions.cpp
@@ -483,11 +483,38 @@ static void DumpUnitInfo(CUnit &unit)
 	}
 
 	fprintf(logf, "%lu: ", GameCycle);
-	fprintf(logf, "%d %s %d P%d Refs %d: %X %d,%d %d,%d\n",
+
+	const char *currentAction;
+	switch (!unit.Orders.empty() ? unit.CurrentAction() : -1) {
+		case -1: currentAction = "No Orders"; break;
+		case UnitActionNone: currentAction = "None"; break;
+		case UnitActionStill: currentAction = "Still"; break;      
+		case UnitActionStandGround: currentAction = "StandGround"; break;
+		case UnitActionFollow: currentAction = "Follow"; break;     
+		case UnitActionDefend: currentAction = "Defend"; break;     
+		case UnitActionMove: currentAction = "Move"; break;       
+		case UnitActionAttack: currentAction = "Attack"; break;     
+		case UnitActionAttackGround: currentAction = "AttackGround"; break;
+		case UnitActionDie: currentAction = "Die"; break;        
+		case UnitActionSpellCast: currentAction = "SpellCast"; break;  
+		case UnitActionTrain: currentAction = "Train"; break;      
+		case UnitActionUpgradeTo: currentAction = "UpgradeTo"; break;  
+		case UnitActionResearch: currentAction = "Research"; break;   
+		case UnitActionBuilt: currentAction = "Built"; break;      
+		case UnitActionBoard: currentAction = "Board"; break;      
+		case UnitActionUnload: currentAction = "Unload"; break;     
+		case UnitActionPatrol: currentAction = "Patrol"; break;     
+		case UnitActionBuild: currentAction = "Build"; break;      
+		case UnitActionExplore: currentAction = "Explore"; break;    
+		case UnitActionRepair: currentAction = "Repair"; break;     
+		case UnitActionResource: currentAction = "Resource"; break;
+		case UnitActionTransformInto: currentAction = "TransformInto"; break;
+	}
+
+	fprintf(logf, "%d %s %s P%d Refs %d: Seed %X Hash %X %d@%d %d@%d\n",
 			UnitNumber(unit), unit.Type ? unit.Type->Ident.c_str() : "unit-killed",
-			!unit.Orders.empty() ? unit.CurrentAction() : -1,
-			unit.Player ? unit.Player->Index : -1, unit.Refs, SyncRandSeed,
-			unit.tilePos.x, unit.tilePos.y, unit.IX, unit.IY);
+			currentAction, unit.Player ? unit.Player->Index : -1, unit.Refs,
+			SyncRandSeed, SyncHash, unit.tilePos.x, unit.tilePos.y, unit.IX, unit.IY);
 #if 0
 	SaveUnit(unit, logf);
 #endif