Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
LegacyShadow.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4
5#include <array>
6#include <algorithm>
7#include <cstdint>
8
9namespace monopoly::data
10{
11 // Source/monopoly/Dat_Mon/dat_3d.h: HMD_ashadow..HMD_kshadow.
12 inline constexpr DataTag LegacyShadowFirstMeshTag = 0x00B4;
13 inline constexpr DataTag LegacyShadowLastMeshTag = 0x00BE;
14
15 [[nodiscard]] constexpr bool isLegacyShadowMesh(DataId id) noexcept
16 {
20 }
21
22 // UDUTILS_ConvertToShadow, palettized path. The retail texture stores
23 // transmissivity in alpha: white is fully transparent, darker pixels
24 // darken the destination. The +15% lightening is preserved exactly.
25 [[nodiscard]] constexpr std::uint8_t legacyShadowAlpha(
26 std::uint8_t red, std::uint8_t green, std::uint8_t blue) noexcept
27 {
28 const unsigned sum = static_cast<unsigned>(red) +
29 static_cast<unsigned>(green) + static_cast<unsigned>(blue);
30 return static_cast<std::uint8_t>(
31 std::min(255U, sum / 3U + 38U));
32 }
33
34 [[nodiscard]] constexpr std::array<std::uint8_t, 4> legacyShadowPixel(
35 std::uint8_t red, std::uint8_t green, std::uint8_t blue) noexcept
36 {
37 return {0U, 0U, 0U, legacyShadowAlpha(red, green, blue)};
38 }
39}
unsigned index
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataTag dataTag(DataId id) noexcept
Definition DataBanks.hpp:64
std::uint16_t DataTag
Definition DataBanks.hpp:11
constexpr std::uint16_t legacyGroupValue(LegacyGroupId group) noexcept
Definition DataBanks.hpp:30
constexpr DataTag LegacyShadowFirstMeshTag
constexpr std::uint8_t legacyShadowAlpha(std::uint8_t red, std::uint8_t green, std::uint8_t blue) noexcept
constexpr std::array< std::uint8_t, 4 > legacyShadowPixel(std::uint8_t red, std::uint8_t green, std::uint8_t blue) noexcept
constexpr bool isLegacyShadowMesh(DataId id) noexcept
constexpr DataTag LegacyShadowLastMeshTag
constexpr std::uint16_t dataGroup(DataId id) noexcept
Definition DataBanks.hpp:57