Emmanuel BENOîT
ae3958f785
+ Curves, script and shaders are loaded from the path of the project. + Main tool can be passed a parameter to specify the project's root.
44 lines
1,009 B
C++
44 lines
1,009 B
C++
#pragma once
|
|
#ifndef REAL_BUILD
|
|
# include "externals.hh"
|
|
#endif
|
|
|
|
#include <ebcl/Sets.hh>
|
|
|
|
struct T_Project;
|
|
|
|
class A_ProjectPathListener
|
|
{
|
|
friend struct T_Project;
|
|
public:
|
|
virtual ~A_ProjectPathListener( ) = 0;
|
|
protected:
|
|
virtual void projectPathChanged( ) noexcept = 0;
|
|
};
|
|
|
|
struct T_Project
|
|
{
|
|
explicit T_Project( T_String const& path ) noexcept
|
|
{ setBasePath( path ); }
|
|
|
|
void setBasePath( T_String const& path ) noexcept;
|
|
|
|
T_String const& basePath( ) const noexcept
|
|
{ return basePath_; }
|
|
|
|
T_String pathOf( T_String const& file ) const noexcept;
|
|
T_String pathOf( char const* file ) const noexcept;
|
|
|
|
void addListener( A_ProjectPathListener* listener ) noexcept
|
|
{ listeners_.add( listener ); }
|
|
void removeListener( A_ProjectPathListener* listener ) noexcept
|
|
{ listeners_.remove( listener ); }
|
|
|
|
private:
|
|
T_String basePath_;
|
|
ebcl::T_Set< A_ProjectPathListener* > listeners_{
|
|
ebcl::UseTag< ebcl::ArrayBacked< 16 > >( )
|
|
};
|
|
|
|
void setBasePathInternal( T_String path ) noexcept;
|
|
};
|