Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paint surface #2459

Merged
merged 34 commits into from
May 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e4cc68f
Start paint surface
duncanspumpkin Apr 22, 2024
095473f
Further work
duncanspumpkin Apr 23, 2024
779fd58
Finish main image drawing
duncanspumpkin Apr 24, 2024
4a29396
Further work
duncanspumpkin Apr 24, 2024
cfc92a2
Handle water selection
duncanspumpkin Apr 27, 2024
6832ad9
Handle map selection and catchment
duncanspumpkin Apr 27, 2024
591d7ae
Implement snow coverage and gridlines
duncanspumpkin Apr 29, 2024
69f3760
Smoothing
duncanspumpkin Apr 29, 2024
4265d5c
Handle underground view
duncanspumpkin Apr 30, 2024
f80832d
Make compilers happy
duncanspumpkin May 1, 2024
525895d
Further work
duncanspumpkin May 1, 2024
25b23ca
Further work
duncanspumpkin May 7, 2024
7159539
Rework to make work
duncanspumpkin May 8, 2024
8747386
Make work for another edge
duncanspumpkin May 8, 2024
b6fac69
Add all edges
duncanspumpkin May 9, 2024
36945cc
Add tunnels
duncanspumpkin May 9, 2024
48830ba
Fix tunnels
duncanspumpkin May 10, 2024
a0d797d
Add water
duncanspumpkin May 10, 2024
10acd11
Get waves drawing
duncanspumpkin May 10, 2024
b0d4bc2
Add water cliff edges
duncanspumpkin May 10, 2024
854d17b
Fix tiny offset mistake
duncanspumpkin May 10, 2024
aa5c748
Add the segment support height code
duncanspumpkin May 10, 2024
04a7256
Keep clang happy
duncanspumpkin May 10, 2024
5217bee
Deduplicate edge code
duncanspumpkin May 10, 2024
dcc8e86
Deduplciate paint edge
duncanspumpkin May 10, 2024
c445c31
Try fix smoothing
duncanspumpkin May 10, 2024
0a0bab2
Fix smoothing code
duncanspumpkin May 11, 2024
85c00cc
Fix mistake in numbers
duncanspumpkin May 11, 2024
4c52aad
Rename things to make edge heights clearer
duncanspumpkin May 11, 2024
23379de
More renames
duncanspumpkin May 11, 2024
7798ec2
Fix water images
duncanspumpkin May 14, 2024
b946dd2
Fix shadows on land
duncanspumpkin May 14, 2024
815b858
Fix incorrect neighbour offset
duncanspumpkin May 16, 2024
2b6a6cc
Unscramble the neighbourOffsets a bit
duncanspumpkin May 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/OpenLoco/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ set(OLOCO_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintIndustry.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintSignal.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintStation.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintSurface.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTile.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTileDecorations.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTrack.cpp"
Expand Down Expand Up @@ -589,6 +590,7 @@ set(OLOCO_HEADERS
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintIndustry.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintSignal.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintStation.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintSurface.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTile.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTileDecorations.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Paint/PaintTrack.h"
Expand Down
2 changes: 1 addition & 1 deletion src/OpenLoco/src/Graphics/Colour.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ namespace OpenLoco::Colours
};

static constexpr std::array<ExtColour, 31> _shadowColourMap = {
ExtColour::null,
ExtColour::water,
ExtColour::unk21,
ExtColour::unk22,
ExtColour::unk23,
Expand Down
2 changes: 1 addition & 1 deletion src/OpenLoco/src/Graphics/Colour.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ namespace OpenLoco
mutedRed = 30,
// First 30 are inherited from Colour
clear = 31, // No colour
null = 32, // Does not represent any palette
water = 32, // Water palette map dynamically loaded from water object
unk21,
unk22,
unk23,
Expand Down
9 changes: 9 additions & 0 deletions src/OpenLoco/src/Graphics/ImageId.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,15 @@ namespace OpenLoco
result._index |= kFlagBlend;
return result;
}

[[nodiscard]] constexpr ImageId withBlend(ExtColour colour) const
{
ImageId result = *this;
result._index &= ~(kMaskPrimary | kMaskSecondary | kFlagSecondary);
result._index |= enumValue(colour) << kShiftRemap;
result._index |= kFlagBlend | kFlagPrimary;
return result;
}
};
static_assert(sizeof(ImageId) == 4);
}
269 changes: 269 additions & 0 deletions src/OpenLoco/src/Graphics/ImageIds.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,102 @@ namespace OpenLoco::ImageIds

constexpr uint32_t default_palette = 304;

constexpr uint32_t constructionSelectionCornersSlope0 = 322;
constexpr uint32_t constructionSelectionCornersSlope1 = 323;
constexpr uint32_t constructionSelectionCornersSlope2 = 324;
constexpr uint32_t constructionSelectionCornersSlope3 = 325;
constexpr uint32_t constructionSelectionCornersSlope4 = 326;
constexpr uint32_t constructionSelectionCornersSlope5 = 327;
constexpr uint32_t constructionSelectionCornersSlope6 = 328;
constexpr uint32_t constructionSelectionCornersSlope7 = 329;
constexpr uint32_t constructionSelectionCornersSlope8 = 330;
constexpr uint32_t constructionSelectionCornersSlope9 = 331;
constexpr uint32_t constructionSelectionCornersSlope10 = 332;
constexpr uint32_t constructionSelectionCornersSlope11 = 333;
constexpr uint32_t constructionSelectionCornersSlope12 = 334;
constexpr uint32_t constructionSelectionCornersSlope13 = 335;
constexpr uint32_t constructionSelectionCornersSlope14 = 336;
constexpr uint32_t constructionSelectionCornersSlope15 = 337;
constexpr uint32_t constructionSelectionCornersSlope16 = 338;
constexpr uint32_t constructionSelectionCornersSlope17 = 339;
constexpr uint32_t constructionSelectionCornersSlope18 = 340;
constexpr uint32_t constructionCatchmentSlope0 = 341;
constexpr uint32_t constructionCatchmentSlope1 = 342;
constexpr uint32_t constructionCatchmentSlope2 = 343;
constexpr uint32_t constructionCatchmentSlope3 = 344;
constexpr uint32_t constructionCatchmentSlope4 = 345;
constexpr uint32_t constructionCatchmentSlope5 = 346;
constexpr uint32_t constructionCatchmentSlope6 = 347;
constexpr uint32_t constructionCatchmentSlope7 = 348;
constexpr uint32_t constructionCatchmentSlope8 = 349;
constexpr uint32_t constructionCatchmentSlope9 = 350;
constexpr uint32_t constructionCatchmentSlope10 = 351;
constexpr uint32_t constructionCatchmentSlope11 = 352;
constexpr uint32_t constructionCatchmentSlope12 = 353;
constexpr uint32_t constructionCatchmentSlope13 = 354;
constexpr uint32_t constructionCatchmentSlope14 = 355;
constexpr uint32_t constructionCatchmentSlope15 = 356;
constexpr uint32_t constructionCatchmentSlope16 = 357;
constexpr uint32_t constructionCatchmentSlope17 = 358;
constexpr uint32_t constructionCatchmentSlope18 = 359;
constexpr uint32_t constructionSelectionEdgesSlope0 = 360;
constexpr uint32_t constructionSelectionEdgesSlope1 = 361;
constexpr uint32_t constructionSelectionEdgesSlope2 = 362;
constexpr uint32_t constructionSelectionEdgesSlope3 = 363;
constexpr uint32_t constructionSelectionEdgesSlope4 = 364;
constexpr uint32_t constructionSelectionEdgesSlope5 = 365;
constexpr uint32_t constructionSelectionEdgesSlope6 = 366;
constexpr uint32_t constructionSelectionEdgesSlope7 = 367;
constexpr uint32_t constructionSelectionEdgesSlope8 = 368;
constexpr uint32_t constructionSelectionEdgesSlope9 = 369;
constexpr uint32_t constructionSelectionEdgesSlope10 = 370;
constexpr uint32_t constructionSelectionEdgesSlope11 = 371;
constexpr uint32_t constructionSelectionEdgesSlope12 = 372;
constexpr uint32_t constructionSelectionEdgesSlope13 = 373;
constexpr uint32_t constructionSelectionEdgesSlope14 = 374;
constexpr uint32_t constructionSelectionEdgesSlope15 = 375;
constexpr uint32_t constructionSelectionEdgesSlope16 = 376;
constexpr uint32_t constructionSelectionEdgesSlope17 = 377;
constexpr uint32_t constructionSelectionEdgesSlope18 = 378;
constexpr uint32_t gridlinesSlope0 = 379;
constexpr uint32_t gridlinesSlope1 = 380;
constexpr uint32_t gridlinesSlope2 = 381;
constexpr uint32_t gridlinesSlope3 = 382;
constexpr uint32_t gridlinesSlope4 = 383;
constexpr uint32_t gridlinesSlope5 = 384;
constexpr uint32_t gridlinesSlope6 = 385;
constexpr uint32_t gridlinesSlope7 = 386;
constexpr uint32_t gridlinesSlope8 = 387;
constexpr uint32_t gridlinesSlope9 = 388;
constexpr uint32_t gridlinesSlope10 = 389;
constexpr uint32_t gridlinesSlope11 = 390;
constexpr uint32_t gridlinesSlope12 = 391;
constexpr uint32_t gridlinesSlope13 = 392;
constexpr uint32_t gridlinesSlope14 = 393;
constexpr uint32_t gridlinesSlope15 = 394;
constexpr uint32_t gridlinesSlope16 = 395;
constexpr uint32_t gridlinesSlope17 = 396;
constexpr uint32_t gridlinesSlope18 = 397;
constexpr uint32_t constructionSelectionQuadsSlope0 = 398;
constexpr uint32_t constructionSelectionQuadsSlope1 = 399;
constexpr uint32_t constructionSelectionQuadsSlope2 = 400;
constexpr uint32_t constructionSelectionQuadsSlope3 = 401;
constexpr uint32_t constructionSelectionQuadsSlope4 = 402;
constexpr uint32_t constructionSelectionQuadsSlope5 = 403;
constexpr uint32_t constructionSelectionQuadsSlope6 = 404;
constexpr uint32_t constructionSelectionQuadsSlope7 = 405;
constexpr uint32_t constructionSelectionQuadsSlope8 = 406;
constexpr uint32_t constructionSelectionQuadsSlope9 = 407;
constexpr uint32_t constructionSelectionQuadsSlope10 = 408;
constexpr uint32_t constructionSelectionQuadsSlope11 = 409;
constexpr uint32_t constructionSelectionQuadsSlope12 = 410;
constexpr uint32_t constructionSelectionQuadsSlope13 = 411;
constexpr uint32_t constructionSelectionQuadsSlope14 = 412;
constexpr uint32_t constructionSelectionQuadsSlope15 = 413;
constexpr uint32_t constructionSelectionQuadsSlope16 = 414;
constexpr uint32_t constructionSelectionQuadsSlope17 = 415;
constexpr uint32_t constructionSelectionQuadsSlope18 = 416;

constexpr uint32_t construction_arrow_north = 428;
constexpr uint32_t construction_arrow_east = 429;
constexpr uint32_t construction_arrow_south = 430;
Expand Down Expand Up @@ -2217,6 +2313,179 @@ namespace OpenLoco::ImageIds
constexpr uint32_t scenario_completed_tick = 3629;
constexpr uint32_t owner_jailed = 3630;

constexpr uint32_t cliffEdge0MaskSlope0 = 3726;
constexpr uint32_t cliffEdge0MaskSlope1 = 3727;
constexpr uint32_t cliffEdge0MaskSlope2 = 3728;
constexpr uint32_t cliffEdge0MaskSlope3 = 3729;
constexpr uint32_t cliffEdge0MaskSlope4 = 3730;
constexpr uint32_t cliffEdge1MaskSlope0 = 3731;
constexpr uint32_t cliffEdge1MaskSlope1 = 3732;
constexpr uint32_t cliffEdge1MaskSlope2 = 3733;
constexpr uint32_t cliffEdge1MaskSlope3 = 3734;
constexpr uint32_t cliffEdge1MaskSlope4 = 3735;
constexpr uint32_t cliffEdge0UndergroundMaskSlope0 = 3736;
constexpr uint32_t cliffEdge0UndergroundMaskSlope1 = 3737;
constexpr uint32_t cliffEdge0UndergroundMaskSlope2 = 3738;
constexpr uint32_t cliffEdge0UndergroundMaskSlope3 = 3739;
constexpr uint32_t cliffEdge0UndergroundMaskSlope4 = 3740;
constexpr uint32_t cliffEdge1UndergroundMaskSlope0 = 3741;
constexpr uint32_t cliffEdge1UndergroundMaskSlope1 = 3742;
constexpr uint32_t cliffEdge1UndergroundMaskSlope2 = 3743;
constexpr uint32_t cliffEdge1UndergroundMaskSlope3 = 3744;
constexpr uint32_t cliffEdge1UndergroundMaskSlope4 = 3745;
constexpr uint32_t surfaceSmooth3Slope0 = 3746;
constexpr uint32_t surfaceSmooth3Slope1 = 3747;
constexpr uint32_t surfaceSmooth3Slope2 = 3748;
constexpr uint32_t surfaceSmooth3Slope3 = 3749;
constexpr uint32_t surfaceSmooth3Slope4 = 3750;
constexpr uint32_t surfaceSmooth3Slope5 = 3751;
constexpr uint32_t surfaceSmooth3Slope6 = 3752;
constexpr uint32_t surfaceSmooth3Slope7 = 3753;
constexpr uint32_t surfaceSmooth3Slope8 = 3754;
constexpr uint32_t surfaceSmooth3Slope9 = 3755;
constexpr uint32_t surfaceSmooth3Slope10 = 3756;
constexpr uint32_t surfaceSmooth3Slope11 = 3757;
constexpr uint32_t surfaceSmooth3Slope12 = 3758;
constexpr uint32_t surfaceSmooth3Slope13 = 3759;
constexpr uint32_t surfaceSmooth3Slope14 = 3760;
constexpr uint32_t surfaceSmooth3Slope15 = 3761;
constexpr uint32_t surfaceSmooth3Slope16 = 3762;
constexpr uint32_t surfaceSmooth3Slope17 = 3763;
constexpr uint32_t surfaceSmooth3Slope18 = 3764;
constexpr uint32_t surfaceSmooth1Slope0 = 3765;
constexpr uint32_t surfaceSmooth1Slope1 = 3766;
constexpr uint32_t surfaceSmooth1Slope2 = 3767;
constexpr uint32_t surfaceSmooth1Slope3 = 3768;
constexpr uint32_t surfaceSmooth1Slope4 = 3769;
constexpr uint32_t surfaceSmooth1Slope5 = 3770;
constexpr uint32_t surfaceSmooth1Slope6 = 3771;
constexpr uint32_t surfaceSmooth1Slope7 = 3772;
constexpr uint32_t surfaceSmooth1Slope8 = 3773;
constexpr uint32_t surfaceSmooth1Slope9 = 3774;
constexpr uint32_t surfaceSmooth1Slope10 = 3775;
constexpr uint32_t surfaceSmooth1Slope11 = 3776;
constexpr uint32_t surfaceSmooth1Slope12 = 3777;
constexpr uint32_t surfaceSmooth1Slope13 = 3778;
constexpr uint32_t surfaceSmooth1Slope14 = 3779;
constexpr uint32_t surfaceSmooth1Slope15 = 3780;
constexpr uint32_t surfaceSmooth1Slope16 = 3781;
constexpr uint32_t surfaceSmooth1Slope17 = 3782;
constexpr uint32_t surfaceSmooth1Slope18 = 3783;
constexpr uint32_t surfaceSmooth0Slope0 = 3784;
constexpr uint32_t surfaceSmooth0Slope1 = 3785;
constexpr uint32_t surfaceSmooth0Slope2 = 3786;
constexpr uint32_t surfaceSmooth0Slope3 = 3787;
constexpr uint32_t surfaceSmooth0Slope4 = 3788;
constexpr uint32_t surfaceSmooth0Slope5 = 3789;
constexpr uint32_t surfaceSmooth0Slope6 = 3790;
constexpr uint32_t surfaceSmooth0Slope7 = 3791;
constexpr uint32_t surfaceSmooth0Slope8 = 3792;
constexpr uint32_t surfaceSmooth0Slope9 = 3793;
constexpr uint32_t surfaceSmooth0Slope10 = 3794;
constexpr uint32_t surfaceSmooth0Slope11 = 3795;
constexpr uint32_t surfaceSmooth0Slope12 = 3796;
constexpr uint32_t surfaceSmooth0Slope13 = 3797;
constexpr uint32_t surfaceSmooth0Slope14 = 3798;
constexpr uint32_t surfaceSmooth0Slope15 = 3799;
constexpr uint32_t surfaceSmooth0Slope16 = 3800;
constexpr uint32_t surfaceSmooth0Slope17 = 3801;
constexpr uint32_t surfaceSmooth0Slope18 = 3802;
constexpr uint32_t surfaceSmooth2Slope0 = 3803;
constexpr uint32_t surfaceSmooth2Slope1 = 3804;
constexpr uint32_t surfaceSmooth2Slope2 = 3805;
constexpr uint32_t surfaceSmooth2Slope3 = 3806;
constexpr uint32_t surfaceSmooth2Slope4 = 3807;
constexpr uint32_t surfaceSmooth2Slope5 = 3808;
constexpr uint32_t surfaceSmooth2Slope6 = 3809;
constexpr uint32_t surfaceSmooth2Slope7 = 3810;
constexpr uint32_t surfaceSmooth2Slope8 = 3811;
constexpr uint32_t surfaceSmooth2Slope9 = 3812;
constexpr uint32_t surfaceSmooth2Slope10 = 3813;
constexpr uint32_t surfaceSmooth2Slope11 = 3814;
constexpr uint32_t surfaceSmooth2Slope12 = 3815;
constexpr uint32_t surfaceSmooth2Slope13 = 3816;
constexpr uint32_t surfaceSmooth2Slope14 = 3817;
constexpr uint32_t surfaceSmooth2Slope15 = 3818;
constexpr uint32_t surfaceSmooth2Slope16 = 3819;
constexpr uint32_t surfaceSmooth2Slope17 = 3820;
constexpr uint32_t surfaceSmooth2Slope18 = 3821;
constexpr uint32_t snowMaskCoverage1Slope0 = 3822;
constexpr uint32_t snowMaskCoverage1Slope1 = 3823;
constexpr uint32_t snowMaskCoverage1Slope2 = 3824;
constexpr uint32_t snowMaskCoverage1Slope3 = 3825;
constexpr uint32_t snowMaskCoverage1Slope4 = 3826;
constexpr uint32_t snowMaskCoverage1Slope5 = 3827;
constexpr uint32_t snowMaskCoverage1Slope6 = 3828;
constexpr uint32_t snowMaskCoverage1Slope7 = 3829;
constexpr uint32_t snowMaskCoverage1Slope8 = 3830;
constexpr uint32_t snowMaskCoverage1Slope9 = 3831;
constexpr uint32_t snowMaskCoverage1Slope10 = 3832;
constexpr uint32_t snowMaskCoverage1Slope11 = 3833;
constexpr uint32_t snowMaskCoverage1Slope12 = 3834;
constexpr uint32_t snowMaskCoverage1Slope13 = 3835;
constexpr uint32_t snowMaskCoverage1Slope14 = 3836;
constexpr uint32_t snowMaskCoverage1Slope15 = 3837;
constexpr uint32_t snowMaskCoverage1Slope16 = 3838;
constexpr uint32_t snowMaskCoverage1Slope17 = 3839;
constexpr uint32_t snowMaskCoverage1Slope18 = 3840;
constexpr uint32_t snowMaskCoverage2Slope0 = 3841;
constexpr uint32_t snowMaskCoverage2Slope1 = 3842;
constexpr uint32_t snowMaskCoverage2Slope2 = 3843;
constexpr uint32_t snowMaskCoverage2Slope3 = 3844;
constexpr uint32_t snowMaskCoverage2Slope4 = 3845;
constexpr uint32_t snowMaskCoverage2Slope5 = 3846;
constexpr uint32_t snowMaskCoverage2Slope6 = 3847;
constexpr uint32_t snowMaskCoverage2Slope7 = 3848;
constexpr uint32_t snowMaskCoverage2Slope8 = 3849;
constexpr uint32_t snowMaskCoverage2Slope9 = 3850;
constexpr uint32_t snowMaskCoverage2Slope10 = 3851;
constexpr uint32_t snowMaskCoverage2Slope11 = 3852;
constexpr uint32_t snowMaskCoverage2Slope12 = 3853;
constexpr uint32_t snowMaskCoverage2Slope13 = 3854;
constexpr uint32_t snowMaskCoverage2Slope14 = 3855;
constexpr uint32_t snowMaskCoverage2Slope15 = 3856;
constexpr uint32_t snowMaskCoverage2Slope16 = 3857;
constexpr uint32_t snowMaskCoverage2Slope17 = 3858;
constexpr uint32_t snowMaskCoverage2Slope18 = 3859;
constexpr uint32_t snowMaskCoverage3Slope0 = 3860;
constexpr uint32_t snowMaskCoverage3Slope1 = 3861;
constexpr uint32_t snowMaskCoverage3Slope2 = 3862;
constexpr uint32_t snowMaskCoverage3Slope3 = 3863;
constexpr uint32_t snowMaskCoverage3Slope4 = 3864;
constexpr uint32_t snowMaskCoverage3Slope5 = 3865;
constexpr uint32_t snowMaskCoverage3Slope6 = 3866;
constexpr uint32_t snowMaskCoverage3Slope7 = 3867;
constexpr uint32_t snowMaskCoverage3Slope8 = 3868;
constexpr uint32_t snowMaskCoverage3Slope9 = 3869;
constexpr uint32_t snowMaskCoverage3Slope10 = 3870;
constexpr uint32_t snowMaskCoverage3Slope11 = 3871;
constexpr uint32_t snowMaskCoverage3Slope12 = 3872;
constexpr uint32_t snowMaskCoverage3Slope13 = 3873;
constexpr uint32_t snowMaskCoverage3Slope14 = 3874;
constexpr uint32_t snowMaskCoverage3Slope15 = 3875;
constexpr uint32_t snowMaskCoverage3Slope16 = 3876;
constexpr uint32_t snowMaskCoverage3Slope17 = 3877;
constexpr uint32_t snowMaskCoverage3Slope18 = 3878;
constexpr uint32_t snowMaskCoverage4Slope0 = 3879;
constexpr uint32_t snowMaskCoverage4Slope1 = 3880;
constexpr uint32_t snowMaskCoverage4Slope2 = 3881;
constexpr uint32_t snowMaskCoverage4Slope3 = 3882;
constexpr uint32_t snowMaskCoverage4Slope4 = 3883;
constexpr uint32_t snowMaskCoverage4Slope5 = 3884;
constexpr uint32_t snowMaskCoverage4Slope6 = 3885;
constexpr uint32_t snowMaskCoverage4Slope7 = 3886;
constexpr uint32_t snowMaskCoverage4Slope8 = 3887;
constexpr uint32_t snowMaskCoverage4Slope9 = 3888;
constexpr uint32_t snowMaskCoverage4Slope10 = 3889;
constexpr uint32_t snowMaskCoverage4Slope11 = 3890;
constexpr uint32_t snowMaskCoverage4Slope12 = 3891;
constexpr uint32_t snowMaskCoverage4Slope13 = 3892;
constexpr uint32_t snowMaskCoverage4Slope14 = 3893;
constexpr uint32_t snowMaskCoverage4Slope15 = 3894;
constexpr uint32_t snowMaskCoverage4Slope16 = 3895;
constexpr uint32_t snowMaskCoverage4Slope17 = 3896;
constexpr uint32_t snowMaskCoverage4Slope18 = 3897;

constexpr uint32_t getNumberCircle(uint8_t num)
{
constexpr std::array numbers = {
Expand Down
20 changes: 20 additions & 0 deletions src/OpenLoco/src/Map/MapSelection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,26 @@ namespace OpenLoco::World
}
}

bool isWithinMapSelectionTiles(const Pos2 pos)
{
if (!World::hasMapSelectionFlag(World::MapSelectionFlags::enableConstruct))
return false;

for (uint16_t index = 0; index < kMapSelectedTilesSize; ++index)
{
auto& position = _mapSelectedTiles[index];
if (position.x == -1)
{
return false;
}
if (position == pos)
{
return true;
}
}
return false;
}

void setMapSelectionArea(const Pos2& locA, const Pos2& locB)
{
_mapSelectionAX = locA.x;
Expand Down
1 change: 1 addition & 0 deletions src/OpenLoco/src/Map/MapSelection.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ namespace OpenLoco::World
uint16_t setMapSelectionSingleTile(const Pos2& loc, bool setQuadrant = false);
void mapInvalidateSelectionRect();
void mapInvalidateMapSelectionTiles();
bool isWithinMapSelectionTiles(const Pos2 pos);

void setMapSelectionArea(const Pos2& locA, const Pos2& locB);
std::pair<Pos2, Pos2> getMapSelectionArea();
Expand Down
5 changes: 5 additions & 0 deletions src/OpenLoco/src/Map/WaveManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ namespace OpenLoco::World::WaveManager
ViewportManager::invalidate(pos, surface.waterHeight(), surface.waterHeight(), ZoomLevel::full);
}

const Wave& getWave(const uint8_t waveIndex)
{
return rawWaves()[waveIndex];
}

// 0x004C56F6
void update()
{
Expand Down
7 changes: 7 additions & 0 deletions src/OpenLoco/src/Map/WaveManager.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
#pragma once
#include "Tile.h"

namespace OpenLoco::World
{
struct Wave;
}

namespace OpenLoco::World::WaveManager
{
void update();
Expand All @@ -11,4 +16,6 @@ namespace OpenLoco::World::WaveManager
{
return (pos.x & 0x7) | ((pos.y & 0x7) << 3);
}

const Wave& getWave(const uint8_t waveIndex);
}
Loading