Browse Source

image support

Laserlicht 1 month ago
parent
commit
f250e6103c

+ 22 - 0
config/schemas/resources.json

@@ -14,6 +14,28 @@
 			"type" : "string",
 			"description" : "Localizable name of this resource"
 		},
+		"images" : {
+			"type" : "object",
+			"description" : "Resource icons of varying size",
+			"required" : [ "small", "medium", "large"],
+			"properties" : {
+				"small" : {
+					"type" : "string",
+					"description" : "20x18 resource icon",
+					"format" : "imageFile"
+				},
+				"medium" : {
+					"type" : "string",
+					"description" : "32x32 resource icon",
+					"format" : "imageFile"
+				},
+				"large" : {
+					"type" : "string",
+					"description" : "82x93 resource icon",
+					"format" : "imageFile"
+				}
+			}
+		},
 		"price" : {
 			"type" : "number",
 			"description" : "Price of resource in gold"

+ 20 - 0
docs/modders/Entities_Format/Resource_Format.md

@@ -0,0 +1,20 @@
+# Resource Format
+
+```json
+	// Internal field for H3 resources. Do not use for mods
+	"index" : "",
+
+	// displayed name of the resource
+	"name" : "",
+	
+	// Resource icons of varying size
+	"images" : {
+		// 20x18 resource icon
+		"small" : "",
+		// 32x32 resource icon
+		"medium" : "",
+		// 82x93 resource icon
+		"large" : ""
+	}
+
+```

+ 10 - 0
lib/entities/ResourceTypeHandler.cpp

@@ -28,6 +28,13 @@ std::string resources::ResourceType::getNameTranslated() const
 	return LIBRARY->generaltexth->translate(getNameTextID());
 }
 
+void resources::ResourceType::registerIcons(const IconRegistar & cb) const
+{
+	cb(getIconIndex(), 0, "SMALRES", iconSmall);
+	cb(getIconIndex(), 0, "RESOURCE", iconMedium);
+	cb(getIconIndex(), 0, "RESOUR82", iconLarge);
+}
+
 std::vector<JsonNode> ResourceTypeHandler::loadLegacyData()
 {
 	objects.resize(8);
@@ -44,6 +51,9 @@ std::shared_ptr<resources::ResourceType> ResourceTypeHandler::loadObjectImpl(std
 	ret->identifier = name;
 
 	ret->price = data["price"].Integer();
+	ret->iconSmall = data["images"]["small"].String();
+	ret->iconMedium = data["images"]["medium"].String();
+	ret->iconLarge = data["images"]["large"].String();
 
 	LIBRARY->generaltexth->registerString(scope, ret->getNameTextID(), data["name"]);
 

+ 4 - 1
lib/entities/ResourceTypeHandler.h

@@ -30,6 +30,9 @@ class DLL_LINKAGE ResourceType : public EntityT<GameResID>
 	GameResID id; //backlink
 
 	int price;
+	std::string iconSmall;
+	std::string iconMedium;
+	std::string iconLarge;
 
 	std::string identifier;
 	std::string modScope;
@@ -45,7 +48,7 @@ public:
 	GameResID getId() const override { return id;}
 	int32_t getIconIndex() const override { return 0; }
 	std::string getModScope() const override { return modScope; };
-	void registerIcons(const IconRegistar & cb) const override {};
+	void registerIcons(const IconRegistar & cb) const override;
 	std::string getNameTextID() const override;
 	std::string getNameTranslated() const override;
 };