diff --git a/Mods/vcmi/Content/Sprites/cprsmall.json b/Mods/vcmi/Content/Sprites/cprsmall.json new file mode 100644 index 000000000..3eec15da7 --- /dev/null +++ b/Mods/vcmi/Content/Sprites/cprsmall.json @@ -0,0 +1,8 @@ +{ + "images" : + [ + // Fix for swapped in H3 icons of Wight and Wraith + { "frame" : 62, "defFile" : "cprsmall.def", "defFrame" : 63}, + { "frame" : 63, "defFile" : "cprsmall.def", "defFrame" : 62} + ] +} diff --git a/Mods/vcmi/Content/Sprites/spells.json b/Mods/vcmi/Content/Sprites/spells.json new file mode 100644 index 000000000..4c13e5c79 --- /dev/null +++ b/Mods/vcmi/Content/Sprites/spells.json @@ -0,0 +1,8 @@ +{ + "images" : + [ + // Fix for swapped in H3 icons of View Earth and View Air + { "frame" : 3, "defFile" : "spells.def", "defFrame" : 5}, + { "frame" : 5, "defFile" : "spells.def", "defFrame" : 3} + ] +} diff --git a/client/render/ImageLocator.cpp b/client/render/ImageLocator.cpp index aefbc6d30..515e767a0 100644 --- a/client/render/ImageLocator.cpp +++ b/client/render/ImageLocator.cpp @@ -15,15 +15,17 @@ #include "../../lib/json/JsonNode.h" - ImageLocator::ImageLocator(const JsonNode & config) - : image(ImagePath::fromJson(config["file"])) - , defFile(AnimationPath::fromJson(config["defFile"])) - , defFrame(config["defFrame"].Integer()) + : defFrame(config["defFrame"].Integer()) , defGroup(config["defGroup"].Integer()) , verticalFlip(config["verticalFlip"].Bool()) , horizontalFlip(config["horizontalFlip"].Bool()) { + if(!config["file"].isNull()) + image = ImagePath::fromJson(config["file"]); + + if(!config["defFile"].isNull()) + defFile = AnimationPath::fromJson(config["defFile"]); } ImageLocator::ImageLocator(const ImagePath & path) diff --git a/client/renderSDL/RenderHandler.cpp b/client/renderSDL/RenderHandler.cpp index c76af1242..0447c9786 100644 --- a/client/renderSDL/RenderHandler.cpp +++ b/client/renderSDL/RenderHandler.cpp @@ -142,7 +142,13 @@ void RenderHandler::initFromJson(AnimationLayoutMap & source, const JsonNode & c JsonNode toAdd = node; JsonUtils::inherit(toAdd, base); - toAdd["file"].String() = basepath + node["file"].String(); + + if (toAdd.Struct().count("file")) + toAdd["file"].String() = basepath + node["file"].String(); + + if (toAdd.Struct().count("defFile")) + toAdd["defFile"].String() = basepath + node["defFile"].String(); + source[group][frame] = ImageLocator(toAdd); } }