mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-16 22:16:53 +07:00
dummy asset dependencies classes
This commit is contained in:
@@ -53,6 +53,13 @@ namespace e2d
|
||||
class asset_cache;
|
||||
class asset_cache_base;
|
||||
|
||||
template < typename Asset >
|
||||
class asset_dependency;
|
||||
class asset_dependency_base;
|
||||
|
||||
class asset_factory;
|
||||
class asset_dependencies;
|
||||
|
||||
class library;
|
||||
|
||||
class atlas;
|
||||
|
||||
@@ -142,6 +142,49 @@ namespace e2d
|
||||
std::mutex mutex_;
|
||||
hash_map<str_hash, asset_creator> creators_;
|
||||
};
|
||||
|
||||
//
|
||||
// asset_dependency_base
|
||||
//
|
||||
|
||||
class asset_dependency_base;
|
||||
using asset_dependency_base_iptr = intrusive_ptr<asset_dependency_base>;
|
||||
|
||||
class asset_dependency_base
|
||||
: private noncopyable
|
||||
, public ref_counter<asset_dependency_base> {
|
||||
public:
|
||||
asset_dependency_base(str_view address);
|
||||
virtual ~asset_dependency_base() noexcept;
|
||||
private:
|
||||
str address_;
|
||||
};
|
||||
|
||||
//
|
||||
// asset_dependency
|
||||
//
|
||||
|
||||
template < typename Asset >
|
||||
class asset_dependency : public asset_dependency_base {
|
||||
public:
|
||||
asset_dependency(str_view address);
|
||||
~asset_dependency() noexcept override;
|
||||
};
|
||||
|
||||
//
|
||||
// asset_dependencies
|
||||
//
|
||||
|
||||
class asset_dependencies final {
|
||||
public:
|
||||
asset_dependencies() = default;
|
||||
~asset_dependencies() noexcept = default;
|
||||
|
||||
template < typename Asset >
|
||||
asset_dependencies& dependency(str_view address);
|
||||
private:
|
||||
vector<asset_dependency_base_iptr> dependencies_;
|
||||
};
|
||||
}
|
||||
|
||||
#include "asset.inl"
|
||||
|
||||
@@ -145,6 +145,23 @@ namespace e2d
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
//
|
||||
// asset_dependency
|
||||
//
|
||||
|
||||
template < typename Asset >
|
||||
asset_dependency<Asset>::asset_dependency(str_view address)
|
||||
: asset_dependency_base(address) {}
|
||||
|
||||
template < typename Asset >
|
||||
asset_dependency<Asset>::~asset_dependency() noexcept = default;
|
||||
|
||||
template < typename Asset >
|
||||
asset_dependencies& asset_dependencies::dependency(str_view address) {
|
||||
dependencies_.push_back(new asset_dependency<Asset>(address));
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -46,4 +46,13 @@ namespace e2d
|
||||
|
||||
asset_factory::asset_factory() = default;
|
||||
asset_factory::~asset_factory() noexcept = default;
|
||||
|
||||
//
|
||||
// asset_dependency_base
|
||||
//
|
||||
|
||||
asset_dependency_base::asset_dependency_base(str_view address)
|
||||
: address_(address) {}
|
||||
|
||||
asset_dependency_base::~asset_dependency_base() noexcept = default;
|
||||
}
|
||||
|
||||
@@ -44,36 +44,45 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
TEST_CASE("asset"){
|
||||
TEST_CASE("asset") {
|
||||
safe_starter_initializer initializer;
|
||||
library& l = the<library>();
|
||||
{
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset>("none"));
|
||||
SECTION("nested_assets") {
|
||||
{
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset>("none"));
|
||||
|
||||
auto fa = l.load_asset<fake_asset>("42");
|
||||
REQUIRE(fa);
|
||||
REQUIRE(fa->content() == 42);
|
||||
auto fa = l.load_asset<fake_asset>("42");
|
||||
REQUIRE(fa);
|
||||
REQUIRE(fa->content() == 42);
|
||||
|
||||
REQUIRE_FALSE(fa->find_nested_asset("none"));
|
||||
REQUIRE(fa->find_nested_asset("21"));
|
||||
REQUIRE_FALSE(fa->find_nested_asset<binary_asset>("21"));
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("21"));
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("21")->content() == 21);
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("84")->content() == 84);
|
||||
REQUIRE_FALSE(fa->find_nested_asset("none"));
|
||||
REQUIRE(fa->find_nested_asset("21"));
|
||||
REQUIRE_FALSE(fa->find_nested_asset<binary_asset>("21"));
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("21"));
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("21")->content() == 21);
|
||||
REQUIRE(fa->find_nested_asset<fake_nested_asset>("84")->content() == 84);
|
||||
}
|
||||
{
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21"));
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21")->content() == 21);
|
||||
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, binary_asset>("42:/21"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/none"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/none:/21"));
|
||||
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/2"));
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/2")->content() == 2);
|
||||
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, binary_asset>("42:/21:/2"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/none"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/none:/2"));
|
||||
}
|
||||
}
|
||||
{
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21"));
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21")->content() == 21);
|
||||
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, binary_asset>("42:/21"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/none"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/none:/21"));
|
||||
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/2"));
|
||||
REQUIRE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/2")->content() == 2);
|
||||
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, binary_asset>("42:/21:/2"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/none"));
|
||||
REQUIRE_FALSE(l.load_asset<fake_asset, fake_nested_asset>("42:/21:/none:/2"));
|
||||
SECTION("asset_dependencies") {
|
||||
{
|
||||
const auto ad = asset_dependencies()
|
||||
.dependency<text_asset>("text_asset.txt")
|
||||
.dependency<binary_asset>("binary_asset.bin");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user