Skip to content

Commit

Permalink
Configurable Ufopaedia facilities preview 2
Browse files Browse the repository at this point in the history
  • Loading branch information
MeridianOXC committed Feb 17, 2024
1 parent 221aa7d commit 376e136
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
15 changes: 15 additions & 0 deletions src/Mod/Mod.cpp
Expand Up @@ -186,6 +186,7 @@ int Mod::DIFFICULTY_COEFFICIENT[5];
int Mod::SELL_PRICE_COEFFICIENT[5];
int Mod::DIFFICULTY_BASED_RETAL_DELAY[5];
int Mod::UNIT_RESPONSE_SOUNDS_FREQUENCY[4];
int Mod::PEDIA_FACILITY_RENDER_PARAMETERS[4];
bool Mod::EXTENDED_ITEM_RELOAD_COST;
bool Mod::EXTENDED_INVENTORY_SLOT_SORTING;
bool Mod::EXTENDED_RUNNING_COST;
Expand Down Expand Up @@ -285,6 +286,11 @@ void Mod::resetGlobalStatics()
UNIT_RESPONSE_SOUNDS_FREQUENCY[2] = 100; // select weapon
UNIT_RESPONSE_SOUNDS_FREQUENCY[3] = 20; // annoyed

PEDIA_FACILITY_RENDER_PARAMETERS[0] = 2; // oxcePediaFacilityMaxWidth
PEDIA_FACILITY_RENDER_PARAMETERS[1] = 2; // oxcePediaFacilityMaxHeight
PEDIA_FACILITY_RENDER_PARAMETERS[2] = 0; // oxcePediaFacilityOffsetX
PEDIA_FACILITY_RENDER_PARAMETERS[3] = 0; // oxcePediaFacilityOffsetY

EXTENDED_ITEM_RELOAD_COST = false;
EXTENDED_INVENTORY_SLOT_SORTING = false;
EXTENDED_RUNNING_COST = false;
Expand Down Expand Up @@ -2627,6 +2633,15 @@ void Mod::loadConstants(const YAML::Node &node)
}
DEBRIEF_MUSIC_GOOD = node["goodDebriefingMusic"].as<std::string>(DEBRIEF_MUSIC_GOOD);
DEBRIEF_MUSIC_BAD = node["badDebriefingMusic"].as<std::string>(DEBRIEF_MUSIC_BAD);
if (node["extendedPediaFacilityParams"])
{
int k = 0;
for (YAML::const_iterator j = node["extendedPediaFacilityParams"].begin(); j != node["extendedPediaFacilityParams"].end() && k < 4; ++j)
{
PEDIA_FACILITY_RENDER_PARAMETERS[k] = (*j).as<int>(PEDIA_FACILITY_RENDER_PARAMETERS[k]);
++k;
}
}
EXTENDED_ITEM_RELOAD_COST = node["extendedItemReloadCost"].as<bool>(EXTENDED_ITEM_RELOAD_COST);
EXTENDED_INVENTORY_SLOT_SORTING = node["extendedInventorySlotSorting"].as<bool>(EXTENDED_INVENTORY_SLOT_SORTING);
EXTENDED_RUNNING_COST = node["extendedRunningCost"].as<bool>(EXTENDED_RUNNING_COST);
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Mod.h
Expand Up @@ -421,6 +421,7 @@ class Mod
static int SELL_PRICE_COEFFICIENT[5];
static int DIFFICULTY_BASED_RETAL_DELAY[5];
static int UNIT_RESPONSE_SOUNDS_FREQUENCY[4];
static int PEDIA_FACILITY_RENDER_PARAMETERS[4];
static bool EXTENDED_ITEM_RELOAD_COST;
static bool EXTENDED_INVENTORY_SLOT_SORTING;
static bool EXTENDED_RUNNING_COST;
Expand Down
12 changes: 9 additions & 3 deletions src/Ufopaedia/ArticleStateBaseFacility.cpp
Expand Up @@ -64,7 +64,11 @@ namespace OpenXcom

// build preview image
int tile_size = 32;
_image = new Surface(tile_size*2, tile_size*2, 232, 16);
_image = new Surface(
tile_size * std::max(1, Mod::PEDIA_FACILITY_RENDER_PARAMETERS[0]),
tile_size * std::max(1, Mod::PEDIA_FACILITY_RENDER_PARAMETERS[1]),
232 + Mod::PEDIA_FACILITY_RENDER_PARAMETERS[2],
16 + Mod::PEDIA_FACILITY_RENDER_PARAMETERS[3]);
add(_image);

SurfaceSet *graphic = _game->getMod()->getSurfaceSet("BASEBITS.PCK");
Expand All @@ -73,9 +77,11 @@ namespace OpenXcom
int x_pos, y_pos;
int num;

x_offset = facility->getSizeX() == 1 ? tile_size / 2 : 0;
y_offset = facility->getSizeY() == 1 ? tile_size / 2 : 0;
// calculate preview offset
x_offset = (tile_size * std::max(0, Mod::PEDIA_FACILITY_RENDER_PARAMETERS[0] - facility->getSizeX())) / 2;
y_offset = (tile_size * std::max(0, Mod::PEDIA_FACILITY_RENDER_PARAMETERS[1] - facility->getSizeY())) / 2;

// render build preview
num = 0;
y_pos = y_offset;
for (int y = 0; y < facility->getSizeY(); ++y)
Expand Down

0 comments on commit 376e136

Please sign in to comment.