From aa62c3f03f94af0e5289e45182af6714e0132e50 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 2 Jul 2016 12:29:13 +0100 Subject: [PATCH] add drawing of other object previews --- src/object/BannerObject.cpp | 10 ++++++++++ src/object/BannerObject.h | 2 ++ src/object/EntranceObject.cpp | 11 +++++++++++ src/object/EntranceObject.h | 2 ++ src/object/FootpathItemObject.cpp | 7 +++++++ src/object/FootpathItemObject.h | 2 ++ src/object/FootpathObject.cpp | 8 ++++++++ src/object/FootpathObject.h | 2 ++ src/object/LargeSceneryObject.cpp | 9 +++++++++ src/object/LargeSceneryObject.h | 2 ++ src/object/RideObject.h | 2 +- src/object/SceneryGroupObject.cpp | 9 +++++++++ src/object/SceneryGroupObject.h | 2 ++ src/object/SmallSceneryObject.h | 2 +- src/object/StexObject.cpp | 8 ++++++++ src/object/StexObject.h | 2 ++ src/object/WallObject.cpp | 28 ++++++++++++++++++++++++++++ src/object/WallObject.h | 2 ++ src/object/WaterObject.cpp | 1 - 19 files changed, 108 insertions(+), 3 deletions(-) diff --git a/src/object/BannerObject.cpp b/src/object/BannerObject.cpp index 9f3860f079..9dfd40a799 100644 --- a/src/object/BannerObject.cpp +++ b/src/object/BannerObject.cpp @@ -68,6 +68,16 @@ void BannerObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void BannerObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + + uint32 imageId = 0x20D00000 | _legacyType.image; + gfx_draw_sprite(dpi, imageId + 0, x - 12, y + 8, 0); + gfx_draw_sprite(dpi, imageId + 1, x - 12, y + 8, 0); +} + const utf8 * BannerObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/BannerObject.h b/src/object/BannerObject.h index ef4d417543..933816c3b9 100644 --- a/src/object/BannerObject.h +++ b/src/object/BannerObject.h @@ -38,5 +38,7 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; }; diff --git a/src/object/EntranceObject.cpp b/src/object/EntranceObject.cpp index 00a41ea9fa..b302d1fb82 100644 --- a/src/object/EntranceObject.cpp +++ b/src/object/EntranceObject.cpp @@ -51,6 +51,17 @@ void EntranceObject::Unload() gfx_object_free_images(_legacyType.image_id, GetImageTable()->GetCount()); } +void EntranceObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + + uint32 imageId = _legacyType.image_id; + gfx_draw_sprite(dpi, imageId + 1, x - 32, y + 14, 0); + gfx_draw_sprite(dpi, imageId + 0, x + 0, y + 28, 0); + gfx_draw_sprite(dpi, imageId + 2, x + 32, y + 44, 0); +} + const utf8 * EntranceObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/EntranceObject.h b/src/object/EntranceObject.h index bda8e873a8..be843883b8 100644 --- a/src/object/EntranceObject.h +++ b/src/object/EntranceObject.h @@ -37,5 +37,7 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; }; diff --git a/src/object/FootpathItemObject.cpp b/src/object/FootpathItemObject.cpp index f8d5a8c352..3895133b2c 100644 --- a/src/object/FootpathItemObject.cpp +++ b/src/object/FootpathItemObject.cpp @@ -67,6 +67,13 @@ void FootpathItemObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void FootpathItemObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + gfx_draw_sprite(dpi, _legacyType.image, x - 22, y - 24, 0); +} + const utf8 * FootpathItemObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/FootpathItemObject.h b/src/object/FootpathItemObject.h index 7da2cc9acb..5fe3956359 100644 --- a/src/object/FootpathItemObject.h +++ b/src/object/FootpathItemObject.h @@ -38,5 +38,7 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; }; diff --git a/src/object/FootpathObject.cpp b/src/object/FootpathObject.cpp index f5657dd46b..9d255830a5 100644 --- a/src/object/FootpathObject.cpp +++ b/src/object/FootpathObject.cpp @@ -56,6 +56,14 @@ void FootpathObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void FootpathObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + gfx_draw_sprite(dpi, _legacyType.image + 71, x - 49, y - 17, 0); + gfx_draw_sprite(dpi, _legacyType.image + 72, x + 4, y - 17, 0); +} + const utf8 * FootpathObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/FootpathObject.h b/src/object/FootpathObject.h index d0f9144ad2..ef4d3638a0 100644 --- a/src/object/FootpathObject.h +++ b/src/object/FootpathObject.h @@ -37,5 +37,7 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; }; diff --git a/src/object/LargeSceneryObject.cpp b/src/object/LargeSceneryObject.cpp index 48353256f3..2e16535fec 100644 --- a/src/object/LargeSceneryObject.cpp +++ b/src/object/LargeSceneryObject.cpp @@ -102,6 +102,15 @@ void LargeSceneryObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void LargeSceneryObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = (dpi->height / 2) - 39; + + uint32 imageId = 0xB2D00000 | _legacyType.image; + gfx_draw_sprite(dpi, imageId, x, y, 0); +} + const utf8 * LargeSceneryObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/LargeSceneryObject.h b/src/object/LargeSceneryObject.h index 70b75d3b21..708b9f09c4 100644 --- a/src/object/LargeSceneryObject.h +++ b/src/object/LargeSceneryObject.h @@ -41,6 +41,8 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; private: diff --git a/src/object/RideObject.h b/src/object/RideObject.h index d3f7383229..d53b9901df 100644 --- a/src/object/RideObject.h +++ b/src/object/RideObject.h @@ -40,7 +40,7 @@ public: void Load() override; void Unload() override; - void DrawPreview(rct_drawpixelinfo * dpi) const; + void DrawPreview(rct_drawpixelinfo * dpi) const override; const utf8 * GetName() const override; const utf8 * GetDescription() const; diff --git a/src/object/SceneryGroupObject.cpp b/src/object/SceneryGroupObject.cpp index db06ad2c75..800516be23 100644 --- a/src/object/SceneryGroupObject.cpp +++ b/src/object/SceneryGroupObject.cpp @@ -85,6 +85,15 @@ void SceneryGroupObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void SceneryGroupObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + + uint32 imageId = _legacyType.image + 0x20600001; + gfx_draw_sprite(dpi, imageId, x - 15, y - 14, 0); +} + const utf8 * SceneryGroupObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/SceneryGroupObject.h b/src/object/SceneryGroupObject.h index 230cc632e4..29a60c8ee4 100644 --- a/src/object/SceneryGroupObject.h +++ b/src/object/SceneryGroupObject.h @@ -40,6 +40,8 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; private: diff --git a/src/object/SmallSceneryObject.h b/src/object/SmallSceneryObject.h index a21a447756..9e87b3a2f9 100644 --- a/src/object/SmallSceneryObject.h +++ b/src/object/SmallSceneryObject.h @@ -40,7 +40,7 @@ public: void Load() override; void Unload() override; - void DrawPreview(rct_drawpixelinfo * dpi) const; + void DrawPreview(rct_drawpixelinfo * dpi) const override; const utf8 * GetName() const override; diff --git a/src/object/StexObject.cpp b/src/object/StexObject.cpp index a535317fb2..8023b25b46 100644 --- a/src/object/StexObject.cpp +++ b/src/object/StexObject.cpp @@ -56,6 +56,14 @@ void StexObject::Unload() language_free_object_string(_legacyType.details); } +void StexObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + // Write (no image) + int x = dpi->width / 2; + int y = dpi->height / 2; + gfx_draw_string_centred(dpi, 3326, x, y, 0, nullptr); +} + const utf8 * StexObject::GetName() const { return GetScenarioName(); diff --git a/src/object/StexObject.h b/src/object/StexObject.h index 51e6f638f5..6032ef5de7 100644 --- a/src/object/StexObject.h +++ b/src/object/StexObject.h @@ -37,6 +37,8 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; const utf8 * GetScenarioName() const; diff --git a/src/object/WallObject.cpp b/src/object/WallObject.cpp index a88299dab2..352af8d84c 100644 --- a/src/object/WallObject.cpp +++ b/src/object/WallObject.cpp @@ -71,6 +71,34 @@ void WallObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } +void WallObject::DrawPreview(rct_drawpixelinfo * dpi) const +{ + int x = dpi->width / 2; + int y = dpi->height / 2; + + x += 14; + y += (_legacyType.wall.height * 2) + 16; + + uint32 imageId = 0x20D00000 | _legacyType.image; + if (_legacyType.wall.flags & WALL_SCENERY_HAS_SECONDARY_COLOUR) + { + imageId |= 0x92000000; + } + + gfx_draw_sprite(dpi, imageId, x, y, 0); + + if (_legacyType.wall.flags & WALL_SCENERY_FLAG2) + { + imageId = _legacyType.image + 0x44500006; + gfx_draw_sprite(dpi, imageId, x, y, 0); + } + else if (_legacyType.wall.flags & WALL_SCENERY_IS_DOOR) + { + imageId++; + gfx_draw_sprite(dpi, imageId, x, y, 0); + } +} + const utf8 * WallObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); diff --git a/src/object/WallObject.h b/src/object/WallObject.h index 6b5e9820fc..51aed22c32 100644 --- a/src/object/WallObject.h +++ b/src/object/WallObject.h @@ -38,5 +38,7 @@ public: void Load() override; void Unload() override; + void DrawPreview(rct_drawpixelinfo * dpi) const override; + const utf8 * GetName() const override; }; diff --git a/src/object/WaterObject.cpp b/src/object/WaterObject.cpp index 461bba8129..cbe669a985 100644 --- a/src/object/WaterObject.cpp +++ b/src/object/WaterObject.cpp @@ -67,7 +67,6 @@ void WaterObject::DrawPreview(rct_drawpixelinfo * dpi) const gfx_draw_string_centred(dpi, 3326, x, y, 0, nullptr); } - const utf8 * WaterObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);