wiki:CSimluation2

Version 4 (modified by chlin, 3 years ago) (diff)

--

simulation2/Simulation2.h

class CSimulation2
{
public:
        CSimulation2(CUnitManager*, CTerrain*);
...
private:
        CSimulation2Impl* m;
...
};

simulation2/Simulation2.cpp

class CSimulation2Impl
{
public:
        CSimulation2Impl(CUnitManager* unitManager, CTerrain* terrain) :
                m_SimContext(), m_ComponentManager(m_SimContext), m_EnableOOSLog(false)
        {
                m_SimContext.m_UnitManager = unitManager;
                m_SimContext.m_Terrain = terrain;
                m_ComponentManager.LoadComponentTypes();

                RegisterFileReloadFunc(ReloadChangedFileCB, this);
        }
...

};
...

CSimulation2::CSimulation2(CUnitManager* unitManager, CTerrain* terrain) :
        m(new CSimulation2Impl(unitManager, terrain))
{
}

...
bool CSimulation2::LoadDefaultScripts()
{
        return (
                m->LoadScripts(L"simulation/components/interfaces/") &&
                m->LoadScripts(L"simulation/helpers/") &&
                m->LoadScripts(L"simulation/components/")
        );
}

...

bool CSimulation2Impl::LoadScripts(const VfsPath& path)
{
        VfsPaths pathnames;
        if (fs_util::GetPathnames(g_VFS, path, L"*.js", pathnames) < 0)
                return false;

        bool ok = true;
        for (VfsPaths::iterator it = pathnames.begin(); it != pathnames.end(); ++it)
        {
                std::wstring filename = it->string();
                m_LoadedScripts.insert(filename);
                LOGMESSAGE(L"Loading simulation script '%ls'", filename.c_str());
                if (! m_ComponentManager.LoadScript(filename))
                        ok = false;
        }
        return ok;
}