1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-26 00:04:43 +01:00

Add defines for scenery IDs

This commit is contained in:
Christian F. Coors
2017-06-14 15:21:05 +02:00
committed by Michael Steenbeek
parent 4059d9e8a7
commit c506c4be2d
2 changed files with 28 additions and 17 deletions

View File

@@ -259,7 +259,7 @@ void init_scenery()
}
// small scenery
for (uint16 sceneryId = 0; sceneryId < 0xFC; sceneryId++) {
for (uint16 sceneryId = SCENERY_SMALL_SCENERY_ID_MIN; sceneryId < SCENERY_SMALL_SCENERY_ID_MAX; sceneryId++) {
if (get_small_scenery_entry(sceneryId) == (rct_scenery_entry *)-1)
continue;
@@ -268,8 +268,8 @@ void init_scenery()
}
// large scenery
for (sint32 sceneryId = 0x300; sceneryId < 0x380; sceneryId++) {
sint32 largeSceneryIndex = sceneryId - 0x300;
for (sint32 sceneryId = SCENERY_LARGE_SCENERY_ID_MIN; sceneryId < SCENERY_LARGE_SCENERY_ID_MAX; sceneryId++) {
sint32 largeSceneryIndex = sceneryId - SCENERY_LARGE_SCENERY_ID_MIN;
if (get_large_scenery_entry(largeSceneryIndex) == (rct_scenery_entry *)-1)
continue;
@@ -279,8 +279,8 @@ void init_scenery()
}
// walls
for (sint32 sceneryId = 0x200; sceneryId < 0x280; sceneryId++) {
sint32 wallSceneryIndex = sceneryId - 0x200;
for (sint32 sceneryId = SCENERY_WALLS_ID_MIN; sceneryId < SCENERY_WALLS_ID_MAX; sceneryId++) {
sint32 wallSceneryIndex = sceneryId - SCENERY_WALLS_ID_MIN;
if (get_wall_entry(wallSceneryIndex) == (rct_scenery_entry *)-1)
continue;
@@ -290,8 +290,8 @@ void init_scenery()
}
// banners
for (sint32 sceneryId = 0x400; sceneryId < 0x420; sceneryId++) {
sint32 bannerIndex = sceneryId - 0x400;
for (sint32 sceneryId = SCENERY_BANNERS_ID_MIN; sceneryId < SCENERY_BANNERS_ID_MAX; sceneryId++) {
sint32 bannerIndex = sceneryId - SCENERY_BANNERS_ID_MIN;
if (get_banner_entry(bannerIndex) == (rct_scenery_entry *)-1)
continue;
@@ -301,8 +301,8 @@ void init_scenery()
}
// path bits
for (sint32 sceneryId = 0x100; sceneryId < 0x10F; sceneryId++) {
sint32 pathBitIndex = sceneryId - 0x100;
for (sint32 sceneryId = SCENERY_PATH_SCENERY_ID_MIN; sceneryId < SCENERY_PATH_SCENERY_ID_MAX; sceneryId++) {
sint32 pathBitIndex = sceneryId - SCENERY_PATH_SCENERY_ID_MIN;
if (get_footpath_item_entry(pathBitIndex) == (rct_scenery_entry *)-1)
continue;
@@ -1134,24 +1134,24 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, sint32 sc
rct_scenery_entry* sceneryEntry;
rct_drawpixelinfo clipdpi;
if (clip_drawpixelinfo(&clipdpi, dpi, left + 1, top + 1, SCENERY_BUTTON_WIDTH - 2, SCENERY_BUTTON_HEIGHT - 2)) {
if (currentSceneryGlobalId >= 0x400) {
sceneryEntry = get_banner_entry(currentSceneryGlobalId - 0x400);
if (currentSceneryGlobalId >= SCENERY_BANNERS_ID_MIN) {
sceneryEntry = get_banner_entry(currentSceneryGlobalId - SCENERY_BANNERS_ID_MIN);
uint32 imageId = sceneryEntry->image + gWindowSceneryRotation * 2;
imageId |= (gWindowSceneryPrimaryColour << 19) | 0x20000000;
gfx_draw_sprite(&clipdpi, imageId, 0x21, 0x28, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId + 1, 0x21, 0x28, w->colours[1]);
}
else if (currentSceneryGlobalId >= 0x300) {
sceneryEntry = get_large_scenery_entry(currentSceneryGlobalId - 0x300);
else if (currentSceneryGlobalId >= SCENERY_LARGE_SCENERY_ID_MIN) {
sceneryEntry = get_large_scenery_entry(currentSceneryGlobalId - SCENERY_LARGE_SCENERY_ID_MIN);
uint32 imageId = sceneryEntry->image + gWindowSceneryRotation;
imageId |= (gWindowSceneryPrimaryColour << 19) | 0x20000000;
imageId |= (gWindowScenerySecondaryColour << 24) | 0x80000000;
gfx_draw_sprite(&clipdpi, imageId, 0x21, 0, w->colours[1]);
}
else if (currentSceneryGlobalId >= 0x200) {
sceneryEntry = get_wall_entry(currentSceneryGlobalId - 0x200);
else if (currentSceneryGlobalId >= SCENERY_WALLS_ID_MIN) {
sceneryEntry = get_wall_entry(currentSceneryGlobalId - SCENERY_WALLS_ID_MIN);
uint32 imageId = sceneryEntry->image;
uint8 tertiaryColour = w->colours[1];
uint16 spriteTop = (sceneryEntry->wall.height * 2) + 0x32;
@@ -1185,8 +1185,8 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, sint32 sc
}
}
}
else if (currentSceneryGlobalId >= 0x100) {
sceneryEntry = get_footpath_item_entry(currentSceneryGlobalId - 0x100);
else if (currentSceneryGlobalId >= SCENERY_PATH_SCENERY_ID_MIN) {
sceneryEntry = get_footpath_item_entry(currentSceneryGlobalId - SCENERY_PATH_SCENERY_ID_MIN);
uint32 imageId = sceneryEntry->image;
gfx_draw_sprite(&clipdpi, imageId, 0x0B, 0x10, w->colours[1]);

View File

@@ -21,6 +21,17 @@
#include "../object.h"
#include "../world/map.h"
#define SCENERY_SMALL_SCENERY_ID_MIN 0x0
#define SCENERY_SMALL_SCENERY_ID_MAX 0xFC
#define SCENERY_LARGE_SCENERY_ID_MIN 0x300
#define SCENERY_LARGE_SCENERY_ID_MAX 0x380
#define SCENERY_WALLS_ID_MIN 0x200
#define SCENERY_WALLS_ID_MAX 0x280
#define SCENERY_BANNERS_ID_MIN 0x400
#define SCENERY_BANNERS_ID_MAX 0x420
#define SCENERY_PATH_SCENERY_ID_MIN 0x100
#define SCENERY_PATH_SCENERY_ID_MAX 0x10F
#pragma pack(push, 1)
typedef struct rct_small_scenery_entry {
uint32 flags; // 0x06