Track data (#605)
* Add TrackData as a seperate file * Add additional flag for unused item * Fix minor formatting issue and copy issue * Switch to arrays to further enforce limits * Add xcode braces
This commit is contained in:
parent
22725c1a04
commit
a7463ff3f4
|
@ -0,0 +1,306 @@
|
|||
#include "TrackData.h"
|
||||
#include <array>
|
||||
#include <cassert>
|
||||
|
||||
namespace openloco::map::TrackData
|
||||
{
|
||||
const std::vector<PreviewTrack> trackPiece0 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece1 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 9, 0 },
|
||||
PreviewTrack{ 1, 0, 32, 0, 0, 4, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 1, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 3, -32, 32, 0, 0, 6, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece2 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 7, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece3 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 11, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece4 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 7, 0 },
|
||||
PreviewTrack{ 1, 0, -32, 0, 0, 8, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 2, 0 },
|
||||
PreviewTrack{ 3, -32, -32, 0, 0, 7, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece5 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 1, 0, 32, 0, 0, 4, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 1, 0 },
|
||||
PreviewTrack{ 3, -32, 32, 0, 0, 11, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece6 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 7, 0 },
|
||||
PreviewTrack{ 2, -32, -32, 0, 0, 13, 0 },
|
||||
PreviewTrack{ 3, -64, -32, 0, 0, 7, 0 },
|
||||
PreviewTrack{ 4, -64, -64, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece7 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 2, -32, 32, 0, 0, 14, 0 },
|
||||
PreviewTrack{ 3, -64, 32, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 4, -64, 64, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece8 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 7, 0 },
|
||||
PreviewTrack{ 2, -32, -32, 0, 0, 8, 0 },
|
||||
PreviewTrack{ 3, -64, 0, 0, 0, 2, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 4, -64, -32, 0, 0, 3, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece9 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 2, -32, 32, 0, 0, 4, 0 },
|
||||
PreviewTrack{ 3, -64, 0, 0, 0, 1, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 4, -64, 32, 0, 0, 6, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece10 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 9, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 1, 0 },
|
||||
PreviewTrack{ 2, 0, 32, 0, 0, 4, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 3, -32, 32, 0, 0, 14, 0 },
|
||||
PreviewTrack{ 4, -64, 32, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece11 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 9, 0 },
|
||||
PreviewTrack{ 1, 0, 32, 0, 0, 4, 0 },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 1, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 3, -32, 32, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 4, -32, 64, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece12 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 6, 0 },
|
||||
PreviewTrack{ 2, -32, -32, 0, 0, 9, 0 },
|
||||
PreviewTrack{ 3, -64, -32, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece13 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 0, 9, 0 },
|
||||
PreviewTrack{ 2, -32, 32, 0, 0, 6, 0 },
|
||||
PreviewTrack{ 3, -64, 32, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece14 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 15, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 16, 207, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece15 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 63, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, -32, 0, -16, 16, 15, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece16 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 207, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece17 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 63, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece18 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 7, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, 0, -32, 0, 16, 8, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, 0, 16, 2, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, -32, 0, 16, 103, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece19 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 11, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, 0, 32, 0, 16, 4, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, 0, 16, 1, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, 32, 0, 16, 155, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece20 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 55, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, 0, -32, -16, 16, 8, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, -16, 16, 2, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, -32, -16, 16, 7, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece21 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 59, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, 0, 32, -16, 16, 4, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, -16, 16, 1, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, 32, -16, 16, 11, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece22 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 71, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
PreviewTrack{ 1, 0, -32, 16, 0, 8, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, 16, 0, 2, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, -32, 16, 16, 103, PreviewTrackFlags::unk2 | PreviewTrackFlags::unk1 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece23 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 139, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
PreviewTrack{ 1, 0, 32, 16, 0, 4, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, 16, 0, 1, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, 32, 16, 16, 155, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece24 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 55, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
PreviewTrack{ 1, 0, -32, -16, 0, 8, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, -16, 0, 2, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, -32, -32, 16, 23, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece25 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 59, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
PreviewTrack{ 1, 0, 32, -16, 0, 4, PreviewTrackFlags::diagonal | PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 2, -32, 0, -16, 0, 1, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 3, -32, 32, -32, 16, 43, PreviewTrackFlags::unk2 | PreviewTrackFlags::unk1 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece26 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 6, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece27 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 9, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece28 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 2, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece29 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece30 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece31 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 1, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece32 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece33 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece34 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 198, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece35 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 201, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece36 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 54, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece37 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 57, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece38 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece39 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece40 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece41 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece42 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 3, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> trackPiece43 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 3, 0 },
|
||||
};
|
||||
|
||||
// 0x004F73D8
|
||||
const std::array<std::vector<PreviewTrack>, 44> trackPieces = { {
|
||||
trackPiece0,
|
||||
trackPiece1,
|
||||
trackPiece2,
|
||||
trackPiece3,
|
||||
trackPiece4,
|
||||
trackPiece5,
|
||||
trackPiece6,
|
||||
trackPiece7,
|
||||
trackPiece8,
|
||||
trackPiece9,
|
||||
trackPiece10,
|
||||
trackPiece11,
|
||||
trackPiece12,
|
||||
trackPiece13,
|
||||
trackPiece14,
|
||||
trackPiece15,
|
||||
trackPiece16,
|
||||
trackPiece17,
|
||||
trackPiece18,
|
||||
trackPiece19,
|
||||
trackPiece20,
|
||||
trackPiece21,
|
||||
trackPiece22,
|
||||
trackPiece23,
|
||||
trackPiece24,
|
||||
trackPiece25,
|
||||
trackPiece26,
|
||||
trackPiece27,
|
||||
trackPiece28,
|
||||
trackPiece29,
|
||||
trackPiece30,
|
||||
trackPiece31,
|
||||
trackPiece32,
|
||||
trackPiece33,
|
||||
trackPiece34,
|
||||
trackPiece35,
|
||||
trackPiece36,
|
||||
trackPiece37,
|
||||
trackPiece38,
|
||||
trackPiece39,
|
||||
trackPiece40,
|
||||
trackPiece41,
|
||||
trackPiece42,
|
||||
trackPiece43,
|
||||
} };
|
||||
|
||||
const std::vector<PreviewTrack> roadPiece0 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece1 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece2 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 15, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece3 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 7, 0 },
|
||||
PreviewTrack{ 1, 0, -32, 0, 0, 8, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 2, 0 },
|
||||
PreviewTrack{ 3, -32, -32, 0, 0, 7, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece4 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 11, 0 },
|
||||
PreviewTrack{ 1, 0, 32, 0, 0, 4, PreviewTrackFlags::diagonal },
|
||||
PreviewTrack{ 2, -32, 0, 0, 0, 1, 0 },
|
||||
PreviewTrack{ 3, -32, 32, 0, 0, 11, 0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece5 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 15, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, -32, 0, 0, 16, 207, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece6 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 63, PreviewTrackFlags::unk4 },
|
||||
PreviewTrack{ 1, -32, 0, -16, 16, 15, PreviewTrackFlags::unk4 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece7 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 16, 207, PreviewTrackFlags::unk3 | PreviewTrackFlags::unk2 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece8 = {
|
||||
PreviewTrack{ 0, 0, 0, -16, 16, 63, PreviewTrackFlags::unk1 | PreviewTrackFlags::unk0 },
|
||||
};
|
||||
const std::vector<PreviewTrack> roadPiece9 = {
|
||||
PreviewTrack{ 0, 0, 0, 0, 0, 3, 0 },
|
||||
};
|
||||
|
||||
// 0x004F6D1C
|
||||
const std::array<std::vector<PreviewTrack>, 10> roadPieces = { { roadPiece0, roadPiece1, roadPiece2, roadPiece3, roadPiece4, roadPiece5, roadPiece6, roadPiece7, roadPiece8, roadPiece9 } };
|
||||
|
||||
const std::vector<PreviewTrack>& getTrackPiece(size_t trackId)
|
||||
{
|
||||
assert(trackId < trackPieces.size());
|
||||
return trackPieces[trackId];
|
||||
}
|
||||
|
||||
const std::vector<PreviewTrack>& getRoadPiece(size_t trackId)
|
||||
{
|
||||
assert(trackId < roadPieces.size());
|
||||
return roadPieces[trackId];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
#pragma once
|
||||
|
||||
#include "types.hpp"
|
||||
#include <vector>
|
||||
|
||||
namespace openloco::map::TrackData
|
||||
{
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct PreviewTrack
|
||||
{
|
||||
uint8_t index; // 0x00
|
||||
int16_t x; // 0x01
|
||||
int16_t y; // 0x03
|
||||
int16_t z; // 0x05
|
||||
uint8_t var_07;
|
||||
uint8_t var_08;
|
||||
uint8_t flags; // 0x09
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
namespace PreviewTrackFlags
|
||||
{
|
||||
constexpr uint8_t unk0 = 1 << 0;
|
||||
constexpr uint8_t unk1 = 1 << 1;
|
||||
constexpr uint8_t unk2 = 1 << 2;
|
||||
constexpr uint8_t unk3 = 1 << 3;
|
||||
constexpr uint8_t unk4 = 1 << 4;
|
||||
constexpr uint8_t unused = 1 << 6; // Not set on any track piece
|
||||
constexpr uint8_t diagonal = 1 << 7;
|
||||
}
|
||||
|
||||
const std::vector<PreviewTrack>& getTrackPiece(size_t trackId);
|
||||
const std::vector<PreviewTrack>& getRoadPiece(size_t trackId);
|
||||
}
|
|
@ -69,6 +69,7 @@
|
|||
<ClCompile Include="Title.cpp" />
|
||||
<ClCompile Include="town.cpp" />
|
||||
<ClCompile Include="townmgr.cpp" />
|
||||
<ClCompile Include="TrackData.cpp" />
|
||||
<ClCompile Include="tutorial.cpp" />
|
||||
<ClCompile Include="ui.cpp" />
|
||||
<ClCompile Include="ui\dropdown.cpp" />
|
||||
|
@ -222,6 +223,7 @@
|
|||
<ClInclude Include="Title.h" />
|
||||
<ClInclude Include="town.h" />
|
||||
<ClInclude Include="townmgr.h" />
|
||||
<ClInclude Include="TrackData.h" />
|
||||
<ClInclude Include="tutorial.h" />
|
||||
<ClInclude Include="types.hpp" />
|
||||
<ClInclude Include="ui.h" />
|
||||
|
@ -286,4 +288,4 @@
|
|||
<_NuGetTargetFallbackMoniker>$(_NuGetTargetFallbackMoniker);native,Version=v0.0</_NuGetTargetFallbackMoniker>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
</Project>
|
||||
</Project>
|
|
@ -11,24 +11,6 @@ using namespace openloco::map::tilemgr;
|
|||
|
||||
namespace openloco::ui::windows::construction
|
||||
{
|
||||
#pragma pack(push, 1)
|
||||
struct previewTrack
|
||||
{
|
||||
uint8_t index; // 0x00
|
||||
int16_t x; // 0x01
|
||||
int16_t y; // 0x03
|
||||
int16_t z; // 0x05
|
||||
uint8_t var_07;
|
||||
uint8_t var_08;
|
||||
uint8_t flags; // 0x09
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
enum previewTrackFlags
|
||||
{
|
||||
diagonal = 1 << 7,
|
||||
};
|
||||
|
||||
static loco_global<uint8_t[31], 0x005045FA> _byte_5045FA;
|
||||
static loco_global<uint8_t, 0x00522095> _byte_522095;
|
||||
static loco_global<uint8_t, 0x00522096> _byte_522096;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include "../../TrackData.h"
|
||||
#include "../../audio/audio.h"
|
||||
#include "../../companymgr.h"
|
||||
#include "../../graphics/image_ids.h"
|
||||
|
@ -28,124 +29,6 @@ namespace openloco::ui::windows::construction::construction
|
|||
|
||||
static loco_global<int32_t, 0x00E3F0B8> gCurrentRotation;
|
||||
|
||||
static loco_global<previewTrack[1], 0x004F6D44> _unk_4F6D44;
|
||||
static loco_global<previewTrack[1], 0x004F6D4F> _unk_4F6D4F;
|
||||
static loco_global<previewTrack[1], 0x004F6D5A> _unk_4F6D5A;
|
||||
static loco_global<previewTrack[4], 0x004F6D65> _unk_4F6D65;
|
||||
static loco_global<previewTrack[4], 0x004F6D8E> _unk_4F6D8E;
|
||||
static loco_global<previewTrack[2], 0x004F6DB7> _unk_4F6DB7;
|
||||
static loco_global<previewTrack[2], 0x004F6DCC> _unk_4F6DCC;
|
||||
static loco_global<previewTrack[1], 0x004F6DE1> _unk_4F6DE1;
|
||||
static loco_global<previewTrack[1], 0x004F6DEC> _unk_4F6DEC;
|
||||
static loco_global<previewTrack[1], 0x004F6DF7> _unk_4F6DF7;
|
||||
|
||||
// 0x004F6D1C
|
||||
const previewTrack* roadPieces[] = {
|
||||
_unk_4F6D44,
|
||||
_unk_4F6D4F,
|
||||
_unk_4F6D5A,
|
||||
_unk_4F6D65,
|
||||
_unk_4F6D8E,
|
||||
_unk_4F6DB7,
|
||||
_unk_4F6DCC,
|
||||
_unk_4F6DE1,
|
||||
_unk_4F6DEC,
|
||||
_unk_4F6DF7,
|
||||
};
|
||||
|
||||
static loco_global<previewTrack[1], 0x004F7488> _unk_4F7488;
|
||||
static loco_global<previewTrack[4], 0x004F7493> _unk_4F7493;
|
||||
static loco_global<previewTrack[1], 0x004F74BC> _unk_4F74BC;
|
||||
static loco_global<previewTrack[1], 0x004F74C7> _unk_4F74C7;
|
||||
static loco_global<previewTrack[4], 0x004F74D2> _unk_4F74D2;
|
||||
static loco_global<previewTrack[4], 0x004F74FB> _unk_4F74FB;
|
||||
static loco_global<previewTrack[5], 0x004F7524> _unk_4F7524;
|
||||
static loco_global<previewTrack[5], 0x004F7557> _unk_4F7557;
|
||||
static loco_global<previewTrack[5], 0x004F758A> _unk_4F758A;
|
||||
static loco_global<previewTrack[5], 0x004F75BD> _unk_4F75BD;
|
||||
static loco_global<previewTrack[5], 0x004F75F0> _unk_4F75F0;
|
||||
static loco_global<previewTrack[5], 0x004F7623> _unk_4F7623;
|
||||
static loco_global<previewTrack[4], 0x004F7656> _unk_4F7656;
|
||||
static loco_global<previewTrack[4], 0x004F767F> _unk_4F767F;
|
||||
static loco_global<previewTrack[2], 0x004F76A8> _unk_4F76A8;
|
||||
static loco_global<previewTrack[2], 0x004F76BD> _unk_4F76BD;
|
||||
static loco_global<previewTrack[1], 0x004F76D2> _unk_4F76D2;
|
||||
static loco_global<previewTrack[1], 0x004F76DD> _unk_4F76DD;
|
||||
static loco_global<previewTrack[4], 0x004F76E8> _unk_4F76E8;
|
||||
static loco_global<previewTrack[4], 0x004F7711> _unk_4F7711;
|
||||
static loco_global<previewTrack[4], 0x004F773A> _unk_4F773A;
|
||||
static loco_global<previewTrack[4], 0x004F7763> _unk_4F7763;
|
||||
static loco_global<previewTrack[4], 0x004F778C> _unk_4F778C;
|
||||
static loco_global<previewTrack[4], 0x004F77B5> _unk_4F77B5;
|
||||
static loco_global<previewTrack[4], 0x004F77DE> _unk_4F77DE;
|
||||
static loco_global<previewTrack[4], 0x004F7807> _unk_4F7807;
|
||||
static loco_global<previewTrack[1], 0x004F7830> _unk_4F7830;
|
||||
static loco_global<previewTrack[1], 0x004F783B> _unk_4F783B;
|
||||
static loco_global<previewTrack[1], 0x004F7846> _unk_4F7846;
|
||||
static loco_global<previewTrack[1], 0x004F7851> _unk_4F7851;
|
||||
static loco_global<previewTrack[1], 0x004F785C> _unk_4F785C;
|
||||
static loco_global<previewTrack[1], 0x004F7867> _unk_4F7867;
|
||||
static loco_global<previewTrack[1], 0x004F7872> _unk_4F7872;
|
||||
static loco_global<previewTrack[1], 0x004F787D> _unk_4F787D;
|
||||
static loco_global<previewTrack[1], 0x004F7888> _unk_4F7888;
|
||||
static loco_global<previewTrack[1], 0x004F7893> _unk_4F7893;
|
||||
static loco_global<previewTrack[1], 0x004F789E> _unk_4F789E;
|
||||
static loco_global<previewTrack[1], 0x004F78A9> _unk_4F78A9;
|
||||
static loco_global<previewTrack[1], 0x004F78B4> _unk_4F78B4;
|
||||
static loco_global<previewTrack[1], 0x004F78BF> _unk_4F78BF;
|
||||
static loco_global<previewTrack[1], 0x004F78CA> _unk_4F78CA;
|
||||
static loco_global<previewTrack[1], 0x004F78D5> _unk_4F78D5;
|
||||
static loco_global<previewTrack[1], 0x004F78E0> _unk_4F78E0;
|
||||
static loco_global<previewTrack[1], 0x004F78EB> _unk_4F78EB;
|
||||
|
||||
// 0x004F73D8
|
||||
const previewTrack* trackPieces[] = {
|
||||
_unk_4F7488,
|
||||
_unk_4F7493,
|
||||
_unk_4F74BC,
|
||||
_unk_4F74C7,
|
||||
_unk_4F74D2,
|
||||
_unk_4F74FB,
|
||||
_unk_4F7524,
|
||||
_unk_4F7557,
|
||||
_unk_4F758A,
|
||||
_unk_4F75BD,
|
||||
_unk_4F75F0,
|
||||
_unk_4F7623,
|
||||
_unk_4F7656,
|
||||
_unk_4F767F,
|
||||
_unk_4F76A8,
|
||||
_unk_4F76BD,
|
||||
_unk_4F76D2,
|
||||
_unk_4F76DD,
|
||||
_unk_4F76E8,
|
||||
_unk_4F7711,
|
||||
_unk_4F773A,
|
||||
_unk_4F7763,
|
||||
_unk_4F778C,
|
||||
_unk_4F77B5,
|
||||
_unk_4F77DE,
|
||||
_unk_4F7807,
|
||||
_unk_4F7830,
|
||||
_unk_4F783B,
|
||||
_unk_4F7846,
|
||||
_unk_4F7851,
|
||||
_unk_4F785C,
|
||||
_unk_4F7867,
|
||||
_unk_4F7872,
|
||||
_unk_4F787D,
|
||||
_unk_4F7888,
|
||||
_unk_4F7893,
|
||||
_unk_4F789E,
|
||||
_unk_4F78A9,
|
||||
_unk_4F78B4,
|
||||
_unk_4F78BF,
|
||||
_unk_4F78CA,
|
||||
_unk_4F78D5,
|
||||
_unk_4F78E0,
|
||||
_unk_4F78EB,
|
||||
};
|
||||
|
||||
namespace TrackPiece
|
||||
{
|
||||
enum
|
||||
|
@ -410,20 +293,18 @@ namespace openloco::ui::windows::construction::construction
|
|||
roadId = road->id;
|
||||
}
|
||||
|
||||
auto roadPiece = roadPieces[roadId];
|
||||
auto i = 0;
|
||||
const auto& roadPiece = openloco::map::TrackData::getRoadPiece(roadId);
|
||||
auto posId = 0;
|
||||
rotation &= 3;
|
||||
|
||||
while (roadPiece[i].index != 0xFF)
|
||||
for (const auto& roadPart : roadPiece)
|
||||
{
|
||||
if (roadPiece[i].flags & previewTrackFlags::diagonal)
|
||||
if (roadPart.flags & openloco::map::TrackData::PreviewTrackFlags::diagonal)
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
map_pos pos = { roadPiece[i].x, roadPiece[i].y };
|
||||
map_pos pos = { roadPart.x, roadPart.y };
|
||||
|
||||
pos = rotate2dCoordinate(pos, rotation);
|
||||
|
||||
|
@ -431,7 +312,6 @@ namespace openloco::ui::windows::construction::construction
|
|||
pos.y += y;
|
||||
_mapSelectedTiles[posId] = pos;
|
||||
posId++;
|
||||
i++;
|
||||
}
|
||||
|
||||
_mapSelectedTiles[posId].x = -1;
|
||||
|
@ -607,19 +487,17 @@ namespace openloco::ui::windows::construction::construction
|
|||
trackId = track->id;
|
||||
}
|
||||
|
||||
auto trackPiece = trackPieces[trackId];
|
||||
auto i = 0;
|
||||
const auto& trackPiece = openloco::map::TrackData::getTrackPiece(trackId);
|
||||
auto posId = 0;
|
||||
rotation &= 3;
|
||||
|
||||
while (trackPiece[i].index != 0xFF)
|
||||
for (const auto& trackPart : trackPiece)
|
||||
{
|
||||
if (trackPiece[i].flags & previewTrackFlags::diagonal)
|
||||
if (trackPart.flags & openloco::map::TrackData::PreviewTrackFlags::diagonal)
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
map_pos pos = { trackPiece[i].x, trackPiece[i].y };
|
||||
map_pos pos = { trackPart.x, trackPart.y };
|
||||
|
||||
pos = rotate2dCoordinate(pos, rotation);
|
||||
|
||||
|
@ -627,7 +505,6 @@ namespace openloco::ui::windows::construction::construction
|
|||
pos.y += y;
|
||||
_mapSelectedTiles[posId] = pos;
|
||||
posId++;
|
||||
i++;
|
||||
}
|
||||
|
||||
_mapSelectedTiles[posId].x = -1;
|
||||
|
@ -1820,15 +1697,13 @@ namespace openloco::ui::windows::construction::construction
|
|||
auto maxRetries = 0;
|
||||
if (input::hasKeyModifier(input::key_modifier::shift) || _byte_113605D != 1)
|
||||
{
|
||||
auto roadPiece = roadPieces[_byte_1136065];
|
||||
i = 0;
|
||||
const auto& roadPiece = openloco::map::TrackData::getRoadPiece(_byte_1136065);
|
||||
auto maxRoadPieceHeight = 0;
|
||||
|
||||
while (roadPiece[i].index != 0xFF)
|
||||
for (const auto& roadPart : roadPiece)
|
||||
{
|
||||
if (maxRoadPieceHeight > roadPiece[i].z)
|
||||
maxRoadPieceHeight = roadPiece[i].z;
|
||||
i++;
|
||||
if (maxRoadPieceHeight > roadPart.z)
|
||||
maxRoadPieceHeight = roadPart.z;
|
||||
}
|
||||
|
||||
roadHeight -= maxRoadPieceHeight;
|
||||
|
@ -1925,15 +1800,13 @@ namespace openloco::ui::windows::construction::construction
|
|||
auto maxRetries = 0;
|
||||
if (input::hasKeyModifier(input::key_modifier::shift) || _byte_113605D != 1)
|
||||
{
|
||||
auto trackPiece = trackPieces[_byte_1136065];
|
||||
i = 0;
|
||||
const auto& trackPiece = openloco::map::TrackData::getTrackPiece(_byte_1136065);
|
||||
auto maxTrackPieceHeight = 0;
|
||||
|
||||
while (trackPiece[i].index != 0xFF)
|
||||
for (const auto& trackPart : trackPiece)
|
||||
{
|
||||
if (maxTrackPieceHeight > trackPiece[i].z)
|
||||
maxTrackPieceHeight = trackPiece[i].z;
|
||||
i++;
|
||||
if (maxTrackPieceHeight > trackPart.z)
|
||||
maxTrackPieceHeight = trackPart.z;
|
||||
}
|
||||
|
||||
trackHeight -= maxTrackPieceHeight;
|
||||
|
@ -2139,17 +2012,12 @@ namespace openloco::ui::windows::construction::construction
|
|||
|
||||
if (gfx::clipDrawpixelinfo(&clipped, dpi, x, y, width, height))
|
||||
{
|
||||
auto roadPiece = roadPieces[_lastSelectedTrackPieceId];
|
||||
auto i = 0;
|
||||
const auto& roadPiece = openloco::map::TrackData::getRoadPiece(_lastSelectedTrackPieceId);
|
||||
const auto& lastRoadPart = roadPiece.back();
|
||||
|
||||
while (roadPiece[i + 1].index != 0xFF)
|
||||
{
|
||||
i++;
|
||||
}
|
||||
map_pos3 pos3D = { lastRoadPart.x, lastRoadPart.y, lastRoadPart.z };
|
||||
|
||||
map_pos3 pos3D = { roadPiece[i].x, roadPiece[i].y, roadPiece[i].z };
|
||||
|
||||
if (roadPiece[i].flags & (1 << 6))
|
||||
if (lastRoadPart.flags & openloco::map::TrackData::PreviewTrackFlags::unused)
|
||||
{
|
||||
pos3D.x = 0;
|
||||
pos3D.y = 0;
|
||||
|
@ -2194,17 +2062,12 @@ namespace openloco::ui::windows::construction::construction
|
|||
|
||||
if (gfx::clipDrawpixelinfo(&clipped, dpi, x, y, width, height))
|
||||
{
|
||||
auto trackPiece = trackPieces[_lastSelectedTrackPieceId];
|
||||
auto i = 0;
|
||||
const auto& trackPiece = openloco::map::TrackData::getTrackPiece(_lastSelectedTrackPieceId);
|
||||
const auto& lastTrackPart = trackPiece.back();
|
||||
|
||||
while (trackPiece[i + 1].index != 0xFF)
|
||||
{
|
||||
i++;
|
||||
}
|
||||
map_pos3 pos3D = { lastTrackPart.x, lastTrackPart.y, lastTrackPart.z };
|
||||
|
||||
map_pos3 pos3D = { trackPiece[i].x, trackPiece[i].y, trackPiece[i].z };
|
||||
|
||||
if (trackPiece[i].flags & (1 << 6))
|
||||
if (lastTrackPart.flags & openloco::map::TrackData::PreviewTrackFlags::unused)
|
||||
{
|
||||
pos3D.x = 0;
|
||||
pos3D.y = 0;
|
||||
|
|
Loading…
Reference in New Issue