• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Return-To-The-Roots / s25client / 20097065606

10 Dec 2025 11:28AM UTC coverage: 50.062%. First build
20097065606

Pull #1720

github

web-flow
Merge f9c3c4566 into a8dc3da9a
Pull Request #1720: Add leather addon

307 of 1130 new or added lines in 68 files covered. (27.17%)

22778 of 45500 relevant lines covered (50.06%)

35695.28 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

6.06
/libs/s25main/LeatherLoader.cpp
1
// Copyright (C) 2024 Settlers Freaks (sf-team at siedler25.org)
2
//
3
// SPDX-License-Identifier: GPL-2.0-or-later
4

5
///////////////////////////////////////////////////////////////////////////////
6

7
#include "LeatherLoader.h"
8
#include "GlobalGameSettings.h"
9
#include "Loader.h"
10
#include "addons/const_addons.h"
11
#include "ogl/glArchivItem_Bitmap.h"
12
#include "ogl/glTexturePacker.h"
13
#include "world/GameWorldBase.h"
14

15
namespace leatheraddon {
16

17
helpers::EnumArray<unsigned, BobType> bobIndex = {0,   21,  69,  117, 125, 173, 221, 244, 292, 340, 388, 436,
18
                                                  484, 532, 580, 628, 629, 630, 630, 631, 631, 632, 633, 634,
19
                                                  635, 636, 637, 637, 638, 639, 640, 641, 642, 643};
20

NEW
21
ITexture* GetWareTex(const GoodType good)
×
22
{
NEW
23
    switch(good)
×
24
    {
NEW
25
        case GoodType::Skins: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::SkinsWareIcon]);
×
NEW
26
        case GoodType::Leather: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::LeatherWareIcon]);
×
NEW
27
        case GoodType::Armor: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::ArmorWareIcon]);
×
NEW
28
        default: return nullptr;
×
29
    }
30
}
31

NEW
32
ITexture* GetWareStackTex(const GoodType good)
×
33
{
NEW
34
    switch(good)
×
35
    {
NEW
36
        case GoodType::Skins: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::SkinsWareOnGroundOfFlag]);
×
NEW
37
        case GoodType::Leather: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::LeatherWareOnGroundOfFlag]);
×
NEW
38
        case GoodType::Armor: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::ArmorWareOnGroundOfFlag]);
×
NEW
39
        default: return nullptr;
×
40
    }
41
}
42

NEW
43
ITexture* GetWareDonkeyTex(const GoodType good)
×
44
{
NEW
45
    switch(good)
×
46
    {
NEW
47
        case GoodType::Skins: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::DonkeyBoatCarryingSkinsWare]);
×
NEW
48
        case GoodType::Leather:
×
NEW
49
            return LOADER.GetImageN("leather_bobs", bobIndex[BobType::DonkeyBoatCarryingLeatherWare]);
×
NEW
50
        case GoodType::Armor: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::DonkeyBoatCarryingArmorWare]);
×
NEW
51
        default: return nullptr;
×
52
    }
53
}
54

NEW
55
ITexture* GetJobTex(Job job)
×
56
{
NEW
57
    switch(job)
×
58
    {
NEW
59
        case Job::Skinner: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::SkinnerJobIcon]);
×
NEW
60
        case Job::Tanner: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::TannerJobIcon]);
×
NEW
61
        case Job::LeatherWorker: return LOADER.GetImageN("leather_bobs", bobIndex[BobType::LeatherworkerJobIcon]);
×
NEW
62
        default: return nullptr;
×
63
    }
64
}
65

66
bool isAddonActive(const GameWorldBase& gwb)
316✔
67
{
68
    return gwb.GetGGS().isEnabled(AddonId::LEATHER);
316✔
69
}
70

NEW
71
BobType wareToCarrierBobIndex(const GoodType good, const bool fat)
×
72
{
NEW
73
    switch(good)
×
74
    {
NEW
75
        case GoodType::Skins: return fat ? BobType::FatCarrierCarryingSkins : BobType::ThinCarrierCarryingSkins;
×
NEW
76
        case GoodType::Leather: return fat ? BobType::FatCarrierCarryingLeather : BobType::ThinCarrierCarryingLeather;
×
NEW
77
        case GoodType::Armor: return fat ? BobType::FatCarrierCarryingArmor : BobType::ThinCarrierCarryingArmor;
×
NEW
78
        default: throw std::logic_error("Unsupported good type");
×
79
    }
80
}
81

82
} // namespace leatheraddon
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc