Compare commits
	
		
			4 Commits
		
	
	
		
			a7cf267385
			...
			945a55f94a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 945a55f94a | |||
| 2173b12c67 | |||
| aa970b1fc0 | |||
| 6ad79b305c | 
							
								
								
									
										4
									
								
								deps/ox/src/ox/mc/test/tests.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								deps/ox/src/ox/mc/test/tests.cpp
									
									
									
									
										vendored
									
									
								
							| @@ -316,7 +316,7 @@ std::map<ox::StringView, ox::Error(*)()> tests = { | |||||||
| 				testIn.Union.Int = 93; | 				testIn.Union.Int = 93; | ||||||
| 				oxAssert(ox::writeMC(dataBuff.data(), dataBuff.size(), testIn), "Data generation failed"); | 				oxAssert(ox::writeMC(dataBuff.data(), dataBuff.size(), testIn), "Data generation failed"); | ||||||
| 				ox::TypeStore typeStore; | 				ox::TypeStore typeStore; | ||||||
| 				const auto [type, typeErr] = ox::buildTypeDef(&typeStore, &testIn); | 				const auto [type, typeErr] = ox::buildTypeDef(typeStore, testIn); | ||||||
| 				oxAssert(typeErr, "Descriptor write failed"); | 				oxAssert(typeErr, "Descriptor write failed"); | ||||||
| 				ox::ModelObject testOut; | 				ox::ModelObject testOut; | ||||||
| 				oxReturnError(testOut.setType(type)); | 				oxReturnError(testOut.setType(type)); | ||||||
| @@ -368,7 +368,7 @@ std::map<ox::StringView, ox::Error(*)()> tests = { | |||||||
| 				 testIn.Struct.IString = "Test String 2"; | 				 testIn.Struct.IString = "Test String 2"; | ||||||
| 				 oxAssert(ox::writeMC(dataBuff, dataBuffLen, testIn), "Data generation failed"); | 				 oxAssert(ox::writeMC(dataBuff, dataBuffLen, testIn), "Data generation failed"); | ||||||
| 				 ox::TypeStore typeStore; | 				 ox::TypeStore typeStore; | ||||||
| 				 const auto [type, typeErr] = ox::buildTypeDef(&typeStore, &testIn); | 				 const auto [type, typeErr] = ox::buildTypeDef(typeStore, testIn); | ||||||
| 				 oxAssert(typeErr, "Descriptor write failed"); | 				 oxAssert(typeErr, "Descriptor write failed"); | ||||||
| 				 ox::BufferReader br({dataBuff, dataBuffLen}); | 				 ox::BufferReader br({dataBuff, dataBuffLen}); | ||||||
| 				 oxReturnError(ox::walkModel<ox::MetalClawReader>(type, br, | 				 oxReturnError(ox::walkModel<ox::MetalClawReader>(type, br, | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								deps/ox/src/ox/model/descwrite.hpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								deps/ox/src/ox/model/descwrite.hpp
									
									
									
									
										vendored
									
									
								
							| @@ -357,8 +357,8 @@ constexpr const DescriptorType *TypeDescWriter::getType(StringViewCR tn, int typ | |||||||
| } | } | ||||||
|  |  | ||||||
| template<typename T> | template<typename T> | ||||||
| constexpr Result<DescriptorType*> buildTypeDef(TypeStore *typeStore) noexcept { | constexpr Result<DescriptorType*> buildTypeDef(TypeStore &typeStore) noexcept { | ||||||
| 	TypeDescWriter writer(typeStore); | 	TypeDescWriter writer(&typeStore); | ||||||
| 	ModelHandlerInterface<TypeDescWriter, ox::OpType::Reflect> handler(&writer); | 	ModelHandlerInterface<TypeDescWriter, ox::OpType::Reflect> handler(&writer); | ||||||
| 	if (std::is_constant_evaluated()) { | 	if (std::is_constant_evaluated()) { | ||||||
| 		std::allocator<T> a; | 		std::allocator<T> a; | ||||||
| @@ -373,10 +373,10 @@ constexpr Result<DescriptorType*> buildTypeDef(TypeStore *typeStore) noexcept { | |||||||
| } | } | ||||||
|  |  | ||||||
| template<typename T> | template<typename T> | ||||||
| constexpr Result<DescriptorType*> buildTypeDef(TypeStore *typeStore, T *val) noexcept { | constexpr Result<DescriptorType*> buildTypeDef(TypeStore &typeStore, T &val) noexcept { | ||||||
| 	TypeDescWriter writer(typeStore); | 	TypeDescWriter writer(&typeStore); | ||||||
| 	ModelHandlerInterface<TypeDescWriter, ox::OpType::Reflect> handler(&writer); | 	ModelHandlerInterface<TypeDescWriter, ox::OpType::Reflect> handler(&writer); | ||||||
| 	oxReturnError(model(&handler, val)); | 	oxReturnError(model(&handler, &val)); | ||||||
| 	return writer.definition(); | 	return writer.definition(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								deps/ox/src/ox/oc/test/tests.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								deps/ox/src/ox/oc/test/tests.cpp
									
									
									
									
										vendored
									
									
								
							| @@ -207,7 +207,7 @@ const std::map<ox::StringView, ox::Error(*)()> tests = { | |||||||
| 		   testIn.Union.Int = 93; | 		   testIn.Union.Int = 93; | ||||||
| 		   oxAssert(ox::writeOC(testIn).moveTo(dataBuff), "Data generation failed"); | 		   oxAssert(ox::writeOC(testIn).moveTo(dataBuff), "Data generation failed"); | ||||||
| 		   ox::TypeStore typeStore; | 		   ox::TypeStore typeStore; | ||||||
| 		   auto type = ox::buildTypeDef(&typeStore, &testIn); | 		   auto type = ox::buildTypeDef(typeStore, testIn); | ||||||
| 		   oxAssert(type.error, "Descriptor write failed"); | 		   oxAssert(type.error, "Descriptor write failed"); | ||||||
| 		   ox::ModelObject testOut; | 		   ox::ModelObject testOut; | ||||||
| 		   oxReturnError(testOut.setType(type.value)); | 		   oxReturnError(testOut.setType(type.value)); | ||||||
| @@ -257,7 +257,7 @@ const std::map<ox::StringView, ox::Error(*)()> tests = { | |||||||
| 				auto [oc, ocErr] = ox::writeOC(testIn); | 				auto [oc, ocErr] = ox::writeOC(testIn); | ||||||
| 				oxAssert(ocErr, "Data generation failed"); | 				oxAssert(ocErr, "Data generation failed"); | ||||||
| 				ox::TypeStore typeStore; | 				ox::TypeStore typeStore; | ||||||
| 				auto type = ox::buildTypeDef(&typeStore, &testIn); | 				auto type = ox::buildTypeDef(typeStore, testIn); | ||||||
| 				oxAssert(type.error, "Descriptor write failed"); | 				oxAssert(type.error, "Descriptor write failed"); | ||||||
| 				oxReturnError(ox::walkModel<ox::OrganicClawReader>(type.value, oc.data(), oc.size(), | 				oxReturnError(ox::walkModel<ox::OrganicClawReader>(type.value, oc.data(), oc.size(), | ||||||
| 					[](const ox::Vector<ox::FieldName>&, const ox::Vector<ox::String>&, const ox::DescriptorField &f, | 					[](const ox::Vector<ox::FieldName>&, const ox::Vector<ox::String>&, const ox::DescriptorField &f, | ||||||
|   | |||||||
| @@ -239,9 +239,13 @@ void PaletteEditorImGui::drawColorEditor() noexcept { | |||||||
| 	name = currentName; | 	name = currentName; | ||||||
| 	ImGui::InputText("Name", name.data(), name.cap() + 1); | 	ImGui::InputText("Name", name.data(), name.cap() + 1); | ||||||
| 	ImGui::Separator(); | 	ImGui::Separator(); | ||||||
|  | 	bool inputFocused = false; | ||||||
| 	ImGui::InputInt("Red", &r, 1, 5); | 	ImGui::InputInt("Red", &r, 1, 5); | ||||||
|  | 	inputFocused |= ImGui::IsItemFocused(); | ||||||
| 	ImGui::InputInt("Green", &g, 1, 5); | 	ImGui::InputInt("Green", &g, 1, 5); | ||||||
|  | 	inputFocused |= ImGui::IsItemFocused(); | ||||||
| 	ImGui::InputInt("Blue", &b, 1, 5); | 	ImGui::InputInt("Blue", &b, 1, 5); | ||||||
|  | 	inputFocused |= ImGui::IsItemFocused(); | ||||||
| 	if (ig::PushButton("Apply to all pages", {-1, ig::BtnSz.y})) { | 	if (ig::PushButton("Apply to all pages", {-1, ig::BtnSz.y})) { | ||||||
| 		std::ignore = pushCommand<ApplyColorAllPagesCommand>( | 		std::ignore = pushCommand<ApplyColorAllPagesCommand>( | ||||||
| 				m_pal, m_page, m_selectedColorRow); | 				m_pal, m_page, m_selectedColorRow); | ||||||
| @@ -249,6 +253,17 @@ void PaletteEditorImGui::drawColorEditor() noexcept { | |||||||
| 	r = ox::max(r, 0); | 	r = ox::max(r, 0); | ||||||
| 	g = ox::max(g, 0); | 	g = ox::max(g, 0); | ||||||
| 	b = ox::max(b, 0); | 	b = ox::max(b, 0); | ||||||
|  | 	if (!inputFocused) { | ||||||
|  | 		for (auto i = 0u; i < ox::min<size_t>(10, largestPage(m_pal)); ++i) { | ||||||
|  | 			auto const key = static_cast<ImGuiKey>(ImGuiKey_1 + i); | ||||||
|  | 			if (ImGui::IsKeyPressed(key, false)) { | ||||||
|  | 				m_selectedColorRow = i; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		if (ImGui::GetIO().KeysDown[ImGuiKey_0]) { | ||||||
|  | 			m_selectedColorRow = ox::min<size_t>(9, largestPage(m_pal)); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	auto const newColor = color16(r, g, b, a); | 	auto const newColor = color16(r, g, b, a); | ||||||
| 	if (c != newColor) { | 	if (c != newColor) { | ||||||
| 		std::ignore = pushCommand<UpdateColorCommand>(m_pal, m_page, m_selectedColorRow, newColor); | 		std::ignore = pushCommand<UpdateColorCommand>(m_pal, m_page, m_selectedColorRow, newColor); | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ using TypeDescGenerator = ox::Error(*)(ox::TypeStore&); | |||||||
|  |  | ||||||
| template<typename T> | template<typename T> | ||||||
| ox::Error generateTypeDesc(ox::TypeStore &ts) noexcept { | ox::Error generateTypeDesc(ox::TypeStore &ts) noexcept { | ||||||
| 	return ox::buildTypeDef<T>(&ts).error; | 	return ox::buildTypeDef<T>(ts).error; | ||||||
| } | } | ||||||
|  |  | ||||||
| class Module { | class Module { | ||||||
|   | |||||||
| @@ -131,12 +131,15 @@ class Project { | |||||||
| template<typename T> | template<typename T> | ||||||
| ox::Error Project::writeObj(ox::StringViewCR path, T const&obj, ox::ClawFormat fmt) noexcept { | ox::Error Project::writeObj(ox::StringViewCR path, T const&obj, ox::ClawFormat fmt) noexcept { | ||||||
| 	oxRequireM(buff, ox::writeClaw(obj, fmt)); | 	oxRequireM(buff, ox::writeClaw(obj, fmt)); | ||||||
|  | 	if (fmt == ox::ClawFormat::Organic) { | ||||||
|  | 		buff.pop_back(); | ||||||
|  | 	} | ||||||
| 	// write to FS | 	// write to FS | ||||||
| 	oxReturnError(mkdir(parentDir(path))); | 	oxReturnError(mkdir(parentDir(path))); | ||||||
| 	oxReturnError(writeBuff(path, ox::BufferView{buff} + (fmt == ox::ClawFormat::Organic))); | 	oxReturnError(writeBuff(path, buff)); | ||||||
| 	// write type descriptor | 	// write type descriptor | ||||||
| 	if (m_typeStore.get<T>().error) { | 	if (m_typeStore.get<T>().error) { | ||||||
| 		oxReturnError(ox::buildTypeDef(&m_typeStore, &obj)); | 		oxReturnError(ox::buildTypeDef(m_typeStore, obj)); | ||||||
| 	} | 	} | ||||||
| 	oxRequire(desc, m_typeStore.get<T>()); | 	oxRequire(desc, m_typeStore.get<T>()); | ||||||
| 	auto const descPath = ox::sfmt("{}/{}", m_typeDescPath, buildTypeId(*desc)); | 	auto const descPath = ox::sfmt("{}/{}", m_typeDescPath, buildTypeId(*desc)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user