Daniele Bartolini před 10 roky
rodič
revize
f9bf144c60

+ 4 - 7
src/resource/level_resource.cpp

@@ -45,25 +45,22 @@ namespace level_resource
 		}
 
 		UnitCompiler uc(opts);
-		Array<char> unit_buffer(default_allocator());
-		{
-			uc.compile_multiple_units(object["units"]);
-			unit_buffer = uc.get();
-		}
+		uc.compile_multiple_units(object["units"]);
+		Buffer unit_blob = uc.blob();
 
 		// Write
 		LevelResource lr;
 		lr.version       = RESOURCE_VERSION_LEVEL;
 		lr.num_sounds    = array::size(sounds);
 		lr.units_offset  = sizeof(LevelResource);
-		lr.sounds_offset = lr.units_offset + array::size(unit_buffer);
+		lr.sounds_offset = lr.units_offset + array::size(unit_blob);
 
 		opts.write(lr.version);
 		opts.write(lr.units_offset);
 		opts.write(lr.num_sounds);
 		opts.write(lr.sounds_offset);
 
-		opts.write(unit_buffer);
+		opts.write(unit_blob);
 
 		for (u32 i = 0; i < array::size(sounds); ++i)
 		{

+ 3 - 3
src/resource/unit_compiler.cpp

@@ -259,7 +259,7 @@ void UnitCompiler::compile_multiple_units(const char* json)
 	}
 }
 
-Buffer UnitCompiler::get()
+Buffer UnitCompiler::blob()
 {
 	UnitResource ur;
 	ur.version = RESOURCE_VERSION_UNIT;
@@ -274,8 +274,8 @@ Buffer UnitCompiler::get()
 
 	while (begin != end)
 	{
-		const StringId32 type             = (end-1)->pair.first;
-		const Buffer& data                = (end-1)->pair.second._data;
+		const StringId32 type        = (end-1)->pair.first;
+		const Buffer& data           = (end-1)->pair.second._data;
 		const Array<u32>& unit_index = (end-1)->pair.second._unit_index;
 		const u32 num                = (end-1)->pair.second._num;
 

+ 23 - 26
src/resource/unit_compiler.h

@@ -14,39 +14,22 @@ class UnitCompiler
 {
 	typedef Buffer (*CompileFunction)(const char* json, CompileOptions& opts);
 
-public:
-
-	UnitCompiler(CompileOptions& opts);
-
-	void compile_unit(const char* path);
-	void compile_unit_from_json(const char* json);
-	void compile_multiple_units(const char* json);
-
-	Buffer get();
-
-private:
+	struct ComponentTypeData
+	{
+		ALLOCATOR_AWARE;
 
-	void register_component_compiler(const char* type, CompileFunction fn, f32 spawn_order);
-	Buffer compile_component(StringId32 type, const char* json);
-	void add_component_data(StringId32 type, const Buffer& data, u32 unit_index);
+		CompileFunction _compiler;
 
-private:
+		u32 _num;
+		Array<u32> _unit_index;
+		Buffer _data;
 
-	struct ComponentTypeData
-	{
 		ComponentTypeData(Allocator& a)
-			: _data(a)
+			: _num(0)
 			, _unit_index(a)
-			, _num(0)
+			, _data(a)
 		{
 		}
-
-		Buffer _data;
-		Array<u32> _unit_index;
-		CompileFunction _compiler;
-		u32 _num;
-
-		ALLOCATOR_AWARE;
 	};
 
 	typedef SortMap<StringId32, ComponentTypeData> ComponentTypeMap;
@@ -54,6 +37,20 @@ private:
 	CompileOptions& _opts;
 	u32 _num_units;
 	ComponentTypeMap _component_data;
+
+	void register_component_compiler(const char* type, CompileFunction fn, f32 spawn_order);
+	Buffer compile_component(StringId32 type, const char* json);
+	void add_component_data(StringId32 type, const Buffer& data, u32 unit_index);
+
+public:
+
+	UnitCompiler(CompileOptions& opts);
+
+	void compile_unit(const char* path);
+	void compile_unit_from_json(const char* json);
+	void compile_multiple_units(const char* json);
+
+	Buffer blob();
 };
 
 } // namespace crown

+ 1 - 2
src/resource/unit_resource.cpp

@@ -19,9 +19,8 @@ namespace unit_resource
 
 		UnitCompiler uc(opts);
 		uc.compile_unit(path);
-		unit_data = uc.get();
 
-		opts.write(unit_data);
+		opts.write(uc.blob());
 	}
 
 	void* load(File& file, Allocator& a)