Ticket #3292: serializationChange.patch

File serializationChange.patch, 3.9 KB (added by wraitii, 8 years ago)

Hack simulation2.cpp to test

  • binaries/data/mods/public/gui/session

  • source/simulation2/Simulation2.cpp

    Property changes on: binaries/data/mods/public/gui/session
    ___________________________________________________________________
    Deleted: svn:mergeinfo
    ## -0,0 +0,0 ##
     
    4545
    4646#include <iomanip>
    4747
     48int hashStart = 124;
     49
    4850#if MSC_VERSION
    4951#include <process.h>
    5052#define getpid _getpid // use the non-deprecated function name
     
    6567    CSimulation2Impl(CUnitManager* unitManager, shared_ptr<ScriptRuntime> rt, CTerrain* terrain) :
    6668        m_SimContext(), m_ComponentManager(m_SimContext, rt),
    6769        m_EnableOOSLog(false), m_EnableSerializationTest(false),
    68         m_MapSettings(rt->m_rt), m_InitAttributes(rt->m_rt)
     70        m_MapSettings(rt->m_rt), m_InitAttributes(rt->m_rt), secondaryComponentManager(secondaryContext, rt)
    6971    {
    7072        m_SimContext.m_UnitManager = unitManager;
    7173        m_SimContext.m_Terrain = terrain;
     
    7981            CFG_GET_VAL("ooslog", m_EnableOOSLog);
    8082            CFG_GET_VAL("serializationtest", m_EnableSerializationTest);
    8183        }
     84       
     85        // Initialise the secondary simulation
     86        secondaryContext.m_Terrain = &secondaryTerrain;
     87        secondaryComponentManager.LoadComponentTypes();
    8288    }
    8389
    8490    ~CSimulation2Impl()
     
    134140    bool m_EnableOOSLog;
    135141
    136142
     143    // Initialise the secondary simulation
     144    CTerrain secondaryTerrain;
     145    CSimContext secondaryContext;
     146    CComponentManager secondaryComponentManager;
     147   
     148    std::set<VfsPath> secondaryLoadedScripts;
     149
     150
    137151    // Functions and data for the serialization test mode: (see Update() for relevant comments)
    138152
    139153    bool m_EnableSerializationTest;
     
    346360    SerializationTestState primaryStateBefore;
    347361    ScriptInterface& scriptInterface = m_ComponentManager.GetScriptInterface();
    348362
    349     if (m_EnableSerializationTest)
     363    if (m_EnableSerializationTest && m_TurnNumber == hashStart)
    350364    {
     365        ENSURE(LoadDefaultScripts(secondaryComponentManager, &secondaryLoadedScripts));
     366    }
     367
     368    if (m_TurnNumber >= hashStart)
     369    {
    351370        ENSURE(m_ComponentManager.SerializeState(primaryStateBefore.state));
    352371        if (serializationTestDebugDump)
    353372            ENSURE(m_ComponentManager.DumpDebugState(primaryStateBefore.debug, false));
     
    360379
    361380    if (m_EnableSerializationTest)
    362381    {
    363         // Initialise the secondary simulation
    364         CTerrain secondaryTerrain;
    365         CSimContext secondaryContext;
    366         secondaryContext.m_Terrain = &secondaryTerrain;
    367         CComponentManager secondaryComponentManager(secondaryContext, scriptInterface.GetRuntime());
    368         secondaryComponentManager.LoadComponentTypes();
    369         std::set<VfsPath> secondaryLoadedScripts;
    370         ENSURE(LoadDefaultScripts(secondaryComponentManager, &secondaryLoadedScripts));
     382        if (m_TurnNumber == hashStart)
     383        {
    371384        ResetComponentState(secondaryComponentManager, false, false);
    372385
    373386        // Load the trigger scripts after we have loaded the simulation.
     
    405418
    406419        LDR_EndRegistering();
    407420        ENSURE(LDR_NonprogressiveLoad() == INFO::OK);
    408 
    409421        ENSURE(secondaryComponentManager.DeserializeState(primaryStateBefore.state));
    410 
     422        }
     423        if (m_TurnNumber >= hashStart)
     424        {
    411425        SerializationTestState secondaryStateBefore;
    412426        ENSURE(secondaryComponentManager.SerializeState(secondaryStateBefore.state));
    413427        if (serializationTestDebugDump)
     
    443457            ReportSerializationFailure(&primaryStateBefore, &primaryStateAfter, &secondaryStateBefore, &secondaryStateAfter);
    444458        }
    445459    }
     460    }
    446461
    447462//  if (m_TurnNumber == 0)
    448463//      m_ComponentManager.GetScriptInterface().DumpHeap();
     
    462477    else
    463478        scriptInterface.GetRuntime()->MaybeIncrementalGC(0.0f);
    464479
    465     if (m_EnableOOSLog)
     480    if (m_EnableOOSLog && m_TurnNumber >= hashStart)
    466481        DumpState();
    467482
    468483    // Start computing AI for the next turn