diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb0b2e1171..87f66a0859 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ env: OPENRCT2_BUILD_SERVER: GitHub OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }} BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }} - OPENRCT2_VERSION: 0.4.17 + OPENRCT2_VERSION: 0.4.18 # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value concurrency: @@ -111,21 +111,21 @@ jobs: echo "certificate=$certificate" echo "sign=$sign" >> $GITHUB_OUTPUT echo "certificate=$certificate" >> $GITHUB_OUTPUT - lint-commit: - name: Lint Commit Message - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Lint Commit Messages - uses: wagoid/commitlint-github-action@v5 - with: - configFile: .commitlint.json + # lint-commit: + # name: Lint Commit Message + # if: github.event_name == 'pull_request' + # runs-on: ubuntu-latest + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + # with: + # fetch-depth: 0 + # - name: Lint Commit Messages + # uses: wagoid/commitlint-github-action@v5 + # with: + # configFile: .commitlint.json check-code-formatting: name: Check code formatting runs-on: ubuntu-latest @@ -518,16 +518,18 @@ jobs: linux-docker: name: Ubuntu Linux (Docker) needs: [check-code-formatting, build_variables] - if: github.repository == 'OpenRCT2/OpenRCT2' && github.ref == 'refs/heads/develop' runs-on: ubuntu-latest steps: - name: Checkout image + if: github.repository == 'OpenRCT2/OpenRCT2' && github.ref == 'refs/heads/develop' uses: actions/checkout@v4 with: repository: OpenRCT2/openrct2-docker - name: Build image + if: github.repository == 'OpenRCT2/OpenRCT2' && github.ref == 'refs/heads/develop' run: docker build -t openrct2/openrct2-cli:develop develop/cli - name: Push image + if: github.repository == 'OpenRCT2/OpenRCT2' && github.ref == 'refs/heads/develop' env: OPENRCT2_DOCKER_USER: ${{ secrets.OPENRCT2_DOCKER_USER }} OPENRCT2_DOCKER_PASS: ${{ secrets.OPENRCT2_DOCKER_PASS }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 09cb5d3852..38a7072f10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,9 +69,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.14") set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip") set(TITLE_SEQUENCE_SHA1 "6c04781b959b468e1f65ec2d2f21f5aaa5e5724d") -set(OBJECTS_VERSION "1.4.11") +set(OBJECTS_VERSION "1.5.0") set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip") -set(OBJECTS_SHA1 "da04330679de2eff53a94a6505802512bfec6403") +set(OBJECTS_SHA1 "90c26f416ddaeb0c35490b7af89f4c6f9d6351f3") set(OPENSFX_VERSION "1.0.5") set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip") @@ -81,9 +81,9 @@ set(OPENMSX_VERSION "1.6") set(OPENMSX_URL "https://github.com/OpenRCT2/OpenMusic/releases/download/v${OPENMSX_VERSION}/openmusic.zip") set(OPENMSX_SHA1 "ba170fa6d777b309c15420f4b6eb3fa25082a9d1") -set(REPLAYS_VERSION "0.0.84") +set(REPLAYS_VERSION "0.0.85") set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v${REPLAYS_VERSION}/replays.zip") -set(REPLAYS_SHA1 "90B848AB344E29A2CF1E3E48539F06F5845772C3") +set(REPLAYS_SHA1 "2B0939953A41D2CE82809CB7C21FC3883578383F") option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.") option(WITH_TESTS "Build tests") diff --git a/contributors.md b/contributors.md index 416169021f..a7dfe0ed66 100644 --- a/contributors.md +++ b/contributors.md @@ -293,7 +293,7 @@ Appreciation for contributors who have provided substantial work, but are no lon * Norwegian - Hugo Wallenburg (Goddesen) * Polish - Adrian Wielgosik (adrian17), (lopezloo), Michał Janiszewski (janisozaur) * Portuguese (BR) - (kaudy), (renansimoes), Tulio Paschoalin Leao (tupaschoal) -* Russian - (Soosisya) +* Russian - (Soosisya), (andOlga) * Spanish - Josué Acevedo (Wirlie), Diego Mateos (dimateos), (frenchiveruti), (mdtrooper), Daniel Trujillo Viedma (gDanix); small fixes: (teapartycthulu) * Swedish - (Jinxit), (mharrys), (Slimeyo), Matte Andersson (Nubbie) * Ukrainian - (CsyeCokTheSolly), (Veydzher), (Saba4ara) diff --git a/data/language/ar-EG.txt b/data/language/ar-EG.txt index b280c760da..5f11f02f35 100644 --- a/data/language/ar-EG.txt +++ b/data/language/ar-EG.txt @@ -1159,17 +1159,6 @@ STR_1773 :Only one on-ride photo section allowed per ride STR_1774 :Only one cable lift hill allowed per ride STR_1777 :موسيقي الرحلة STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda costume -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiger costume -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elephant costume -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Roman costume -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla costume -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snowman costume -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Knight costume -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaut costume -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandit costume -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriff costume -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirate costume STR_1790 :Select uniform colour for this type of staff STR_1791 :{WINDOW_COLOUR_2}Uniform colour: STR_1792 :Responding to {STRINGID} breakdown call diff --git a/data/language/ca-ES.txt b/data/language/ca-ES.txt index 085c541dae..c145721435 100644 --- a/data/language/ca-ES.txt +++ b/data/language/ca-ES.txt @@ -1165,17 +1165,6 @@ STR_1773 :Només es permet una secció de fotos de record per atracció. STR_1774 :Només es permet un cable d’elevació per atracció. STR_1777 :Música de l’atracció STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Disfressa de panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Disfressa de tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Disfressa d’elefant -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Disfressa de romà -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Disfressa de goril·la -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Disfressa de ninot de neu -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Disfressa de cavaller -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Disfressa d’astronauta -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Disfressa de bandit -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Disfressa de xèrif -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Disfressa de pirata STR_1790 :Seleccioneu el color de l’uniforme d’aquest tipus d’empleats. STR_1791 :{WINDOW_COLOUR_2}Color de l’uniforme: STR_1792 :Responent la trucada d’avaria de {STRINGID}. diff --git a/data/language/cs-CZ.txt b/data/language/cs-CZ.txt index ab04e6905e..74dda35372 100644 --- a/data/language/cs-CZ.txt +++ b/data/language/cs-CZ.txt @@ -1161,17 +1161,6 @@ STR_1773 :Je povolena jen jedna fotobuňka na atrakci STR_1774 :Je povolen pouze jeden výtah na atrakci STR_1777 :Hudba atrakcí STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tygr -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Slon -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Říman -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorila -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Sněhulák -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Rytíř -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Skafandr -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandita -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Šerif -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirát STR_1790 :Vybrat barvu uniformy těchto zaměstnanců STR_1791 :{WINDOW_COLOUR_2}Barva uniformy: STR_1792 :Reaguje na poruchu {STRINGID} diff --git a/data/language/da-DK.txt b/data/language/da-DK.txt index 7e6c94baf3..a274e017fc 100644 --- a/data/language/da-DK.txt +++ b/data/language/da-DK.txt @@ -1162,17 +1162,6 @@ STR_1773 :Kun en on-ride foto sektion, tilladt per forlystelse STR_1774 :Kun et trækspil er tilladt per forlystelse. STR_1777 :Forlystelses musik STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda kostume -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiger kostume -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefant kostume -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Gladiator kostume -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla kostume -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snemands kostume -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Ridder kostume -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaut kostume -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandit kostume -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriff kostume -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirat kostume STR_1790 :vælg uniforms farve for denne type personale STR_1791 :{WINDOW_COLOUR_2}Uniforms farve: STR_1792 :Reagerer på et kald til {STRINGID} på grund af nedbrud diff --git a/data/language/de-DE.txt b/data/language/de-DE.txt index a7a99efc9d..a7e2b19e7e 100644 --- a/data/language/de-DE.txt +++ b/data/language/de-DE.txt @@ -1161,17 +1161,6 @@ STR_1773 :Nur ein Fahrtfoto-Bereich pro Bahn erlaubt STR_1774 :Nur ein Kabellifthügel pro Bahn erlaubt STR_1777 :Attraktionsmusik STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandakostüm -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tigerkostüm -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefantenkostüm -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Römerkostüm -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorillakostüm -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Schneemannkostüm -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Ritterkostüm -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronautenkostüm -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Banditenkostüm -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriffkostüm -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Piratenkostüm STR_1790 :Uniformfarbe für diesen{NEWLINE}Mitarbeiter auswählen STR_1791 :{WINDOW_COLOUR_2}Uniformfarbe: STR_1792 :Unterwegs zur Reparatur von {STRINGID} diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index c5acd146ab..af3b4df569 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -1164,17 +1164,6 @@ STR_1773 :Only one on-ride photo section allowed per ride STR_1774 :Only one cable lift hill allowed per ride STR_1777 :Ride music STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda costume -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiger costume -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elephant costume -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Roman costume -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla costume -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snowman costume -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Knight costume -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaut costume -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandit costume -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriff costume -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirate costume STR_1790 :Select uniform colour for this type of staff STR_1791 :{WINDOW_COLOUR_2}Uniform colour: STR_1792 :Responding to {STRINGID} breakdown call @@ -2212,7 +2201,7 @@ STR_3188 :Path Signs STR_3189 :Legacy footpaths STR_3190 :Path Extras STR_3191 :Scenery Groups -STR_3192 :Park Entrance +STR_3192 :Park Entrances STR_3193 :Water STR_3195 :Invention List STR_3196 :{WINDOW_COLOUR_2}Research Group: {BLACK}{STRINGID} @@ -2617,7 +2606,7 @@ STR_5368 :Reset crash status STR_5371 :Object selection STR_5372 :Invert right mouse dragging STR_5373 :Name {STRINGID} -STR_5374 :Date {STRINGID} +STR_5374 :Date modified {STRINGID} STR_5375 :▲ STR_5376 :▼ STR_5404 :Name already exists @@ -3787,5 +3776,19 @@ STR_6709 :Enter Smooth Strength between {COMMA16} and {COMMA16} STR_6710 :Stable sort STR_6711 :Filename: STR_6712 :Save -STR_6713 :Export emscripten data -STR_6714 :Import emscripten data +STR_6713 :{COMMA32} {STRINGID} +STR_6714 :Filename +STR_6715 :Date modified +STR_6716 :File size +STR_6717 :File size {STRINGID} +STR_6718 :Peep Animations +STR_6719 :At least one guest peep animations object must be selected +STR_6720 :At least one handyman peep animations object must be selected +STR_6721 :At least one mechanic peep animations object must be selected +STR_6722 :At least one security peep animations object must be selected +STR_6723 :At least one entertainer peep animations object must be selected +STR_6724 :Scenario Texts +STR_6725 :X: +STR_6726 :Y: +STR_6727 :Export emscripten data +STR_6728 :Import emscripten data diff --git a/data/language/eo-ZZ.txt b/data/language/eo-ZZ.txt index afb04b8417..c60b5efd1f 100644 --- a/data/language/eo-ZZ.txt +++ b/data/language/eo-ZZ.txt @@ -1164,17 +1164,6 @@ STR_1773 :Nur unu sur-atrakcia fotoparto estas permesita po atrakcio STR_1774 :Nur unu kablolifta monteto estas permesita po atrakcio STR_1777 :Muziko de atrakcio STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandokostumo -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tigrokostumo -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefantokostumo -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Romianokostumo -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilokostumo -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Neĝhomokostumo -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Kavalirokostumo -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaŭtokostumo -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Banditokostumo -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Ŝerifokostumo -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Piratokostumo STR_1790 :Elekti uniformkoloron de tiaj dungitoj STR_1791 :{WINDOW_COLOUR_2}Uniformkoloro: STR_1792 :Reagas al paneovoko de {STRINGID} @@ -3783,3 +3772,5 @@ STR_6707 :(neniu elektita) STR_6708 :Glata forteco STR_6709 :Entajpu glatan fortecon inter {COMMA16} kaj {COMMA16} STR_6710 :Stabila ordigo +STR_6711 :Dosiernomo: +STR_6712 :Konservi diff --git a/data/language/es-ES.txt b/data/language/es-ES.txt index 5774693e4f..5f9b162266 100644 --- a/data/language/es-ES.txt +++ b/data/language/es-ES.txt @@ -1161,17 +1161,6 @@ STR_1773 :Sólo se permite una sección de fotos por atracción. STR_1774 :Sólo un cable de elevación por atracción. STR_1777 :Música de atracción STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Disfraz de panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Disfraz de tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Disfraz de elefante -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Disfraz de romano -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Disfraz de gorila -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Disfraz de muñeco de nieve -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Disfraz de caballero -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Disfraz de astronauta -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Disfraz de bandido -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Disfraz de sheriff -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Disfraz de pirata STR_1790 :Selecciona el color del uniforme para este tipo de empleados STR_1791 :{WINDOW_COLOUR_2}Color del uniforme: STR_1792 :Dirigiéndose a {STRINGID} diff --git a/data/language/fi-FI.txt b/data/language/fi-FI.txt index 9314d9385c..72765c10fa 100644 --- a/data/language/fi-FI.txt +++ b/data/language/fi-FI.txt @@ -1164,17 +1164,6 @@ STR_1773 :Vain yksi valokuvaosio sallittu per laite STR_1774 :Vain yksi nostomäki sallittu per laite STR_1777 :{WINDOW_COLOUR_2}Musiikki STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandapuku -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiikeripuku -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Norsupuku -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Roomalaispuku -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorillapuku -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Lumimiespuku -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Ritaripuku -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronauttipuku -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Rosvopuku -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Seriffipuku -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Merirosvopuku STR_1790 :Valitse virka-asun väri tälle henkilöstötyypille STR_1791 :{WINDOW_COLOUR_2}Virka-asun väri: STR_1792 :Matkalla korjaamaan laitetta {STRINGID} diff --git a/data/language/fr-FR.txt b/data/language/fr-FR.txt index 7819a321a0..f4d97ac4c5 100644 --- a/data/language/fr-FR.txt +++ b/data/language/fr-FR.txt @@ -1169,17 +1169,6 @@ STR_1773 :Une seule section photo sur le vif autorisée par attraction STR_1774 :Une seule remontée à chaîne autorisée par attraction STR_1777 :Musique de l’attraction STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Costume de panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Costume de tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Costume d’éléphant -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Costume romain -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Costume de gorille -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Costume de bonhomme de neige -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Costume de chevalier -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Costume d’astronaute -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Costume de bandit -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Costume de shérif -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Costume de pirate STR_1790 :Sélectionnez la couleur de l’uniforme pour ce type d’employé STR_1791 :{WINDOW_COLOUR_2}Couleur d’uniforme : STR_1792 :Va réparer {STRINGID} diff --git a/data/language/gl-ES.txt b/data/language/gl-ES.txt index a66770ec53..9772a4a24c 100644 --- a/data/language/gl-ES.txt +++ b/data/language/gl-ES.txt @@ -1164,17 +1164,6 @@ STR_1773 :Só se permite unha sección de fotos por atracción. STR_1774 :Só un cable de elevación por atracción. STR_1777 :Música de atracción STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Traxe de panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Traxe de tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Traxe de elefante -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Traxe romano -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Traxe de gorila -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Traxe de boneco de neve -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Traxe de cabaleiro -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Traxe de astronauta -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Traxe de bandido -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Traxe de shériff -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Traxe de pirata STR_1790 :Seleccione a cor do uniforme para este tipo de empregados STR_1791 :{WINDOW_COLOUR_2}Cor uniforme: STR_1792 :enderezo {STRINGID} diff --git a/data/language/hu-HU.txt b/data/language/hu-HU.txt index 94f9869862..8dbab5b75e 100644 --- a/data/language/hu-HU.txt +++ b/data/language/hu-HU.txt @@ -1160,17 +1160,6 @@ STR_1773 :Csak egy élményfotó-szakasz engedélyezett játékonként STR_1774 :Csak egy kábeles felvonószakasz engedélyezett játékonként STR_1777 :Játékok zenéje STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda jelmez -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tigris jelmez -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefánt jelmez -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Római jelmez -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla jelmez -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Hóember jelmez -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Lovag jelmez -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Űrhajós jelmez -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandita jelmez -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Seriff jelmez -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Kalóz jelmez STR_1790 :A választott típusú alkalmazottak által viselt egyenruha színének kiválasztása STR_1791 :{WINDOW_COLOUR_2}Egyenruha színe: STR_1792 :{STRINGID} segélykérésére válaszol diff --git a/data/language/it-IT.txt b/data/language/it-IT.txt index f435208bb7..4e23cfff5f 100644 --- a/data/language/it-IT.txt +++ b/data/language/it-IT.txt @@ -1163,17 +1163,6 @@ STR_1773 :Può esserci soltanto una sezione di foto-in-corsa per attrazione STR_1774 :Può esserci soltanto una salita per il traino con cavo per attrazione STR_1777 :Musica attrazioni STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Costume da panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Costume da tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Costume da elefante -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Costume da antico romano -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Costume da gorilla -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Costume da pupazzo di neve -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Costume da cavaliere -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Costume da astronauta -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Costume da bandito -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Costume da sceriffo -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Costume da pirata STR_1790 :Scegli il colore dell’uniforme per questo tipo di dipendente STR_1791 :{WINDOW_COLOUR_2}Colore dell’uniforme: STR_1792 :Sta accorrendo al guasto di {STRINGID} diff --git a/data/language/ja-JP.txt b/data/language/ja-JP.txt index 3b3ca8f451..2c775ca02c 100644 --- a/data/language/ja-JP.txt +++ b/data/language/ja-JP.txt @@ -1160,17 +1160,6 @@ STR_1773 :乗物からの写真の場所は、各乗物につき一箇所だ STR_1774 :ケーブルリフトヒルは、各乗物につき一箇所だけです STR_1777 :音楽 STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} パンダのコスチューム -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} トラのコスチューム -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} 象のコスチューム -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} ローマのコスチューム -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} ゴリラのコスチューム -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} 雪だるまのコスチューム -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} ナイトのコスチューム -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} 宇宙飛行士のコスチューム -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} 泥棒のコスチューム -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} シェリフのコスチューム -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} 海賊のコスチューム STR_1790 :このスタッフのタイプの制服の色を選択: STR_1791 :{WINDOW_COLOUR_2}制服の色: STR_1792 :{STRINGID}の故障の電話を返事中 diff --git a/data/language/ko-KR.txt b/data/language/ko-KR.txt index 2ab5820fcc..8407e0017f 100644 --- a/data/language/ko-KR.txt +++ b/data/language/ko-KR.txt @@ -1166,17 +1166,6 @@ STR_1773 :한 놀이기구에는 하나의 탑승 사진 섹션만 만들 수 STR_1774 :한 놀이기구에는 하나의 케이블 리프트만 만들 수 있습니다 STR_1777 :놀이기구 음악 STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} 판다 복장 -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} 호랑이 복장 -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} 코끼리 복장 -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} 로마 전사 복장 -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} 고릴라 복장 -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} 눈사람 복장 -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} 기사 복장 -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} 우주비행사 복장 -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} 산적 복장 -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} 보안관 복장 -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} 해적 복장 STR_1790 :이 직종의 유니폼 색상을 선택하세요 STR_1791 :{WINDOW_COLOUR_2}유니폼 색상: STR_1792 :{STRINGID} 고장 연락을 받음 diff --git a/data/language/nb-NO.txt b/data/language/nb-NO.txt index 4351df4a82..758c851d5f 100644 --- a/data/language/nb-NO.txt +++ b/data/language/nb-NO.txt @@ -1158,17 +1158,6 @@ STR_1773 :Kun én fotoseksjon tillatt per bane STR_1774 :Kun ett kabeltrekk tillatt per bane STR_1777 :Attraksjonsmusikk STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda-kostyme -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiger-kostyme -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefant-kostyme -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Romer-kostyme -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla-kostyme -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snømann-kostyme -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Ridder-kostyme -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaut-kostyme -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Banditt-kostyme -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriff-kostyme -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirat-kostyme STR_1790 :Velg uniform-farge for denne typen personale STR_1791 :{WINDOW_COLOUR_2}Uniform-farge: STR_1792 :Svarer på {STRINGID} beskjed om sammenbrudd diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index 443dd83e64..a653cdeb36 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -1163,17 +1163,6 @@ STR_1773 :Een attractie mag maar één actiefotogedeelte hebben STR_1774 :Een attractie mag maar één kabellift hebben STR_1777 :Attractiemuziek STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandapak -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tijgerpak -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Olifantenpak -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Romeins kostuum -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorillapak -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Sneeuwpoppak -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Ridderkostuum -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronautenpak -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandietenkostuum -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriffkostuum -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Piratenkostuum STR_1790 :Selecteer de uniformkleur voor dit type werknemer STR_1791 :{WINDOW_COLOUR_2}Uniformkleur: STR_1792 :Gaat {STRINGID} repareren @@ -3781,3 +3770,6 @@ STR_6706 :{WINDOW_COLOUR_2}Geselecteerd bestand: {BLACK}{STRING} STR_6707 :(n.v.t.) STR_6708 :Afrondsterkte STR_6709 :Voer een afrondsterkte in tussen {COMMA16} en {COMMA16} +STR_6710 :Stabiel sorteren +STR_6711 :Bestandsnaam: +STR_6712 :Opslaan diff --git a/data/language/pl-PL.txt b/data/language/pl-PL.txt index 1b693e185e..aec3b5cae6 100644 --- a/data/language/pl-PL.txt +++ b/data/language/pl-PL.txt @@ -1164,17 +1164,6 @@ STR_1773 :Tylko jedna sekcja fotograficzna dostępna na atrakcję STR_1774 :Tylko jedna wyciągarka dostępna na atrakcję STR_1777 :{WINDOW_COLOUR_2}Muzyka atrakcji STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Kostium pandy -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Kostium tygrysa -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Kostium słonia -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Kostium rzymianina -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Kostium goryla -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Kostium bałwana -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Kostium rycerza -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Kostium astronauty -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Kostium bandyty -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Kostium szeryfa -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Kostium pirata STR_1790 :Wybierz kolor uniformu dla tego typu pracownika STR_1791 :{WINDOW_COLOUR_2}Kolor uniformu: STR_1792 :Zmierza naprawić {STRINGID} @@ -2617,7 +2606,7 @@ STR_5368 :Zresetuj wypadki STR_5371 :Wybór obiektów STR_5372 :Odwróć przeciąganie prawym przyciskiem myszy STR_5373 :Nazwa {STRINGID} -STR_5374 :Data {STRINGID} +STR_5374 :Data modyfikacji {STRINGID} STR_5375 :▲ STR_5376 :▼ STR_5404 :Nazwa już istnieje @@ -3782,4 +3771,11 @@ STR_6706 :{WINDOW_COLOUR_2}Bieżący plik obrazu: {BLACK}{STRING} STR_6707 :(brak) STR_6708 :Siła wygładzania STR_6709 :Wprowadź siłę wygładzania pomiędzy {COMMA16} a {COMMA16}: -STR_6710 :Włącz stabilne sortowanie \ No newline at end of file +STR_6710 :Włącz stabilne sortowanie +STR_6711 :Nazwa pliku: +STR_6712 :Zapisz +STR_6713 :{COMMA32} {STRINGID} +STR_6714 :Nazwa pliku +STR_6715 :Data modyfikacji +STR_6716 :Rozmiar pliku +STR_6717 :Rozmiar {STRINGID} diff --git a/data/language/pt-BR.txt b/data/language/pt-BR.txt index f691f6eaac..f5dddab6c8 100644 --- a/data/language/pt-BR.txt +++ b/data/language/pt-BR.txt @@ -1164,17 +1164,6 @@ STR_1773 :Somente uma seção de fotos é permitida por atração STR_1774 :Somente uma subida com cabo de elevação é permitida por atração STR_1777 :Música da atração STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Fantasia de panda -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Fantasia de tigre -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Fantasia de elefante -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Fantasia de romano -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Fantasia de gorila -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Fantasia de boneco de neve -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Fantasia de cavaleiro -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Fantasia de astronauta -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Fantasia de bandido -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Fantasia de xerife -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Fantasia de pirata STR_1790 :Selecione a cor do uniforme para este tipo de funcionário STR_1791 :{WINDOW_COLOUR_2}Cor do uniforme: STR_1792 :Respondendo a chamada de quebra da {STRINGID} @@ -2617,7 +2606,7 @@ STR_5368 :Redefinir status de acidente STR_5371 :Seleção de Objetos STR_5372 :Inverter seleção do botão direito do mouse STR_5373 :Nome {STRINGID} -STR_5374 :Data {STRINGID} +STR_5374 :Data de modificação {STRINGID} STR_5375 :▲ STR_5376 :▼ STR_5404 :Este nome já existe @@ -3783,3 +3772,16 @@ STR_6707 :(nenhum selecionado) STR_6708 :Intensidade da Suavização STR_6709 :Digite a intensidade da suavização entre {COMMA16} e {COMMA16} STR_6710 :Ordenação estável +STR_6711 :Nome do arquivo: +STR_6712 :Salvar +STR_6713 :{COMMA32} {STRINGID} +STR_6714 :Nome do arquivo +STR_6715 :Data de modificação +STR_6716 :Tamanho do arquivo +STR_6717 :Tamanho do arquivo {STRINGID} +STR_6718 :Animações das Pessoinhas +STR_6719 :Ao menos um objeto de animação de pessoinha de visitante deve ser selecionado +STR_6720 :Ao menos um objeto de animação de pessoinha de faxineiro deve ser selecionado +STR_6721 :Ao menos um objeto de animação de pessoinha de mecânico deve ser selecionado +STR_6722 :Ao menos um objeto de animação de pessoinha de segurança deve ser selecionado +STR_6723 :Ao menos um objeto de animação de pessoinha de animador deve ser selecionado diff --git a/data/language/ru-RU.txt b/data/language/ru-RU.txt index e5fe376a8a..d6b62380b7 100644 --- a/data/language/ru-RU.txt +++ b/data/language/ru-RU.txt @@ -244,8 +244,8 @@ STR_0831 :Отдалить STR_0832 :Вращать на 90° по часовой стрелке STR_0833 :Пауза STR_0834 :Настройки -STR_0839 :{UINT16} x {UINT16} -STR_0840 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{UINT16} x {UINT16} +STR_0839 :{UINT16} × {UINT16} +STR_0840 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{UINT16} × {UINT16} STR_0847 :Про ‘OpenRCT2’ STR_0850 :{WINDOW_COLOUR_2}Copyright © 2002 Sawyer, все права принадлежат STR_0851 :{WINDOW_COLOUR_2}Chris Sawyer @@ -254,7 +254,7 @@ STR_0853 :{WINDOW_COLOUR_2}Звук и музыка: Allister Brimble STR_0854 :{WINDOW_COLOUR_2}Запись дополнительных звуков: David Ellis STR_0855 :{WINDOW_COLOUR_2}Представительство: Jacqui Lyons из Marjacq Ltd. STR_0856 :{WINDOW_COLOUR_2}Благодарность: -STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, and John Wardley +STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, и John Wardley STR_0865 :{STRINGID} STR_0866 :{POP16}{STRINGID} STR_0867 :{POP16}{POP16}{STRINGID} @@ -360,7 +360,7 @@ STR_0969 :+405° STR_0970 :+450° STR_0971 :+495° STR_0972 :Отмена -STR_0973 :OK +STR_0973 :ОК STR_0974 :Аттракционы STR_0975 :Магазины и лотки STR_0976 :Служебные здания @@ -559,7 +559,7 @@ STR_1168 :Опции STR_1169 :(Нет) STR_1170 :{STRING} STR_1171 :{RED}Закрыто - - -STR_1172 :{YELLOW}{STRINGID} - - +STR_1172 :{YELLOW}{STRINGID} STR_1173 :Построить дорожки и заграждения STR_1174 :На пути баннер STR_1175 :Нельзя это строить на наклонной дорожке @@ -605,8 +605,8 @@ STR_1214 :Выберите макс. время ожидания перед STR_1215 :{WINDOW_COLOUR_2}Синхронизировать со смежными станциями STR_1216 :Выберите, синхронизировать ли отправление со смежными станциями (для ‘гонок’) STR_1217 :{COMMA16} секунд -STR_1218 :{BLACK}➕ -STR_1219 :{BLACK}➖ +STR_1218 :{BLACK}+ +STR_1219 :{BLACK}- STR_1220 :Только выход STR_1221 :Нет входа STR_1222 :Нет выхода @@ -1125,7 +1125,7 @@ STR_1736 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM STR_1738 :Нельзя изменить число кругов… STR_1739 :Гонку выиграл гость {INT32} STR_1740 :Гонку выиграл {STRINGID} -STR_1741 :Еще не построено ! +STR_1741 :Ещё не построено ! STR_1742 :{WINDOW_COLOUR_2}Макс. людей на аттракционе: STR_1743 :Максимум людей, находящихся на аттракционе STR_1744 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16} @@ -1156,19 +1156,8 @@ STR_1770 :Число полных качений STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16} STR_1773 :Допускается только одна фото секция STR_1774 :Допускается только один кабельный лифт -STR_1777 :{WINDOW_COLOUR_2}Музыка: +STR_1777 :{WINDOW_COLOUR_2}Музыка STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Костюм панды -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Костюм тигра -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Костюм слона -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Roman costume -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Костюм гориллы -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Костюм снеговика -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Костюм рыцаря -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Костюм космонавта -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Костюм бандита -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Костюм шерифа -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Костюм пирата STR_1790 :Выберите цвет униформы для этого типа работников STR_1791 :{WINDOW_COLOUR_2}Цвет формы: STR_1792 :Отвечает на вызов по {STRINGID} @@ -1252,7 +1241,6 @@ STR_1870 :Число полных оборотов STR_1871 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16} STR_1873 :{WINDOW_COLOUR_2}Доход: {BLACK}{CURRENCY} в час STR_1874 :{WINDOW_COLOUR_2}Прибыль: {BLACK}{CURRENCY} в час -STR_1875 :{BLACK} {SPRITE}{BLACK} {STRINGID} STR_1876 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{251}{19}{00}{00}Проверять аттракционы STR_1877 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{252}{19}{00}{00}Чинить аттракционы STR_1878 :{WINDOW_COLOUR_2}Наблюдение: @@ -1575,7 +1563,7 @@ STR_2213 :Показать список артистов STR_2214 :Нельзя строить во время паузы! STR_2215 :{STRINGID}{NEWLINE}({STRINGID}) STR_2216 :{WINDOW_COLOUR_2}{COMMA16}°C -STR_2217 :{WINDOW_COLOUR_2}{COMMA16}F +STR_2217 :{WINDOW_COLOUR_2}{COMMA16}°F STR_2218 :{RED}{STRINGID} на аттр. {STRINGID} не возвращается к {STRINGID}!{NEWLINE}Нужна помощь. STR_2219 :{RED}{COMMA16} людей погибло на {STRINGID} STR_2220 :{WINDOW_COLOUR_2}Рейтинг парка: {BLACK}{COMMA16} @@ -1709,8 +1697,8 @@ STR_2353 :{WINDOW_COLOUR_2}Мусора вымел: {BLACK}{COMMA32} STR_2354 :{WINDOW_COLOUR_2}Урн вынес: {BLACK}{COMMA32} STR_2355 :{WINDOW_COLOUR_2}Аттр. починил: {BLACK}{COMMA32} STR_2356 :{WINDOW_COLOUR_2}Аттр. осмотрел: {BLACK}{COMMA32} -STR_2358 :ед. -STR_2359 :в метрах +STR_2358 :игровые единицы +STR_2359 :выбранные единиицы STR_2360 :{WINDOW_COLOUR_2}Разрешение: STR_2361 :Сглаживание STR_2362 :Включает сглаживание местности на краях @@ -1926,7 +1914,7 @@ STR_2703 :Каждые 1 минут STR_2704 :Каждые 30 минут STR_2705 :Каждый час STR_2706 :Никогда -STR_2707 :Использовать системное диалоговое окно +STR_2707 :Использовать системный диалог STR_2708 :{WINDOW_COLOUR_1}Вы уверены, что хотите перезаписать {STRINGID}? STR_2709 :Перезаписать STR_2710 :Укажите имя файла. @@ -1950,7 +1938,7 @@ STR_2734 :{COMMA16}миль/час STR_2735 :{COMMA16}км/ч STR_2736 :{MONTH}, год {COMMA16} STR_2737 :{STRINGID} {MONTH}, год {COMMA16} -STR_2738 :Музыка на главном экране: +STR_2738 :Музыка главного меню: STR_2739 :Нет STR_2740 :RollerCoaster Tycoon 1 STR_2741 :RollerCoaster Tycoon 2 @@ -1961,17 +1949,17 @@ STR_2751 :Все элементы вниз STR_2752 :Очистить траву STR_2753 :Подстричь траву STR_2754 :Полить растения -STR_2755 :Исправить вандализм +STR_2755 :Исправ. вандализм STR_2756 :Убрать мусор STR_2763 :??? STR_2765 :Группа гостей STR_2766 :Выиграть сценарий -STR_2767 :Заблок. климат +STR_2767 :Заблокировать климат STR_2769 :Открыть парк STR_2770 :Закрыть парк STR_2773 :Оконный режим STR_2774 :Полный экран -STR_2775 :Полный экран (окно без рамок) +STR_2775 :Окно без рамок STR_2776 :Язык: STR_2777 :{MOVE_X}{10}{STRING} STR_2778 :»{MOVE_X}{10}{STRING} @@ -2045,7 +2033,7 @@ STR_2844 :{TOPAZ}Ваш парк получил награду как ‘Па STR_2845 :{TOPAZ}Ваш парк получил награду как ‘Парк с самыми удивительными цветовыми схемами’! STR_2846 :{TOPAZ}Ваш парк получил награду как ‘Парк с самой неудобной схемой’! STR_2847 :{TOPAZ}Ваш парк получил награду как ‘Парк с самыми лучшими спокойными аттракционами’! -STR_2848 :{WINDOW_COLOUR_2}Давно нет наград +STR_2848 :{WINDOW_COLOUR_2}У вашего парка нет наград STR_2849 :Новый сценарий успешно установлен STR_2850 :Новый дизайн треков успешно установлен STR_2851 :Сценарий уже установлен @@ -2251,8 +2239,8 @@ STR_3234 :Опции - Парк STR_3235 :Параметры финансов STR_3236 :Параметры гостей STR_3237 :Параметры парка -STR_3238 :Нет Денег -STR_3239 :Делает этот парк без денег и без финансовых ограничений +STR_3238 :Отключить деньги +STR_3239 :Отключает все финансовые ограничения для парка STR_3240 :{WINDOW_COLOUR_2}Нач. средства: STR_3241 :{WINDOW_COLOUR_2}Начальный заем: STR_3242 :{WINDOW_COLOUR_2}Максимальн. заем: @@ -2352,7 +2340,7 @@ STR_3339 :{BLACK}{COMMA16} доступно или собственный д STR_3340 :{BLACK}{COMMA16} доступно или собственный дизайн STR_3341 :Инструменты STR_3342 :Редактор сценариев -STR_3343 :Конвертировать игру в сценарий +STR_3343 :Конвертировать сохр. игру в сценарий STR_3344 :Редактор треков STR_3345 :Менеджер треков STR_3346 :Невозможно сохранить дизайн трека… @@ -2404,19 +2392,19 @@ STR_3446 :Отменить участок STR_5120 :Финансы STR_5121 :Исследования STR_5122 :Выбирать аттракцион по типу трека (как в RCT1) -STR_5123 :Обновить аттракционы -STR_5125 :Всё уничтожаемое +STR_5123 :Обнов. аттр. +STR_5125 :Разрешить уничтожение всего STR_5126 :Случайная заглавная музыка STR_5127 :Окрас ландшафта перетаскиванием, вместо изменения высоты STR_5128 :Размер выделения STR_5129 :Введите размер выделения в диапазоне от {COMMA16} до {COMMA16} STR_5130 :Размер карты STR_5131 :Введите размер карты в диапазоне от {COMMA16} до {COMMA16} -STR_5132 :Отремонтировать все аттракционы +STR_5132 :Отрем. все аттр. STR_5133 :Изменить малую площадь прав на землю STR_5134 :Изменить большую площадь прав на землю STR_5135 :Купить права на землю и строительство -STR_5136 :Права собственности на землю +STR_5136 :Земля STR_5137 :Отключить операционные ограничения STR_5138 :{WINDOW_COLOUR_2}{STRINGID} STR_5139 :{WHITE}{STRINGID} @@ -2524,7 +2512,7 @@ STR_5256 :Создать новую тему для внесения изме STR_5257 :Создать новую тему на основании текущей STR_5258 :Удалить текущую тему STR_5259 :Переименовать текущую тему -STR_5260 :Гигантский скриншот +STR_5260 :Огромный скриншот STR_5261 :Фильтр STR_5262 :Wacky Worlds STR_5263 :Time Twister @@ -2564,7 +2552,7 @@ STR_5299 :{LIGHTPINK}{STRINGID} STR_5300 :Быстрое увольнение работников STR_5301 :Сбросить ваш заём STR_5302 :Сбросить заём -STR_5303 :Разрешить строительсво в режиме паузы +STR_5303 :Разрешить строительсво при паузе STR_5304 :Заставка главного экрана: STR_5305 :RollerCoaster Tycoon 1 STR_5306 :RollerCoaster Tycoon 1 (AA) @@ -2596,28 +2584,28 @@ STR_5353 :{BLACK}Энергия: STR_5354 :{BLACK}Голод: STR_5355 :{BLACK}Жажда: STR_5356 :{BLACK}Тошнота: -STR_5357 :{BLACK}Толерантность к тошноте: +STR_5357 :{BLACK}Тошн. выносливость: STR_5358 :{BLACK}Туалет: STR_5359 :Удалить гостей STR_5360 :Убирать с карты всех гостей STR_5361 :Раздать всем гостям: -STR_5362 :{BLACK}Устанавливает всем гостям предпочитаемый уровень интенсивности аттракционов: +STR_5362 :{BLACK}Уст. предпоч. уровень интенсивности: STR_5363 :Более 1 STR_5364 :Менее 15 STR_5365 :{BLACK}Скорость работников: STR_5366 :Нормальная STR_5367 :Быстрая -STR_5368 :Сбросить историю аварий +STR_5368 :Сброс. ист. аварий STR_5371 :Выбор объекта -STR_5372 :Инвертировать направление перетаскивания правой кнопкой мыши +STR_5372 :Инвертировать перетаскивание правой кнопкой мыши STR_5373 :Имя {STRINGID} -STR_5374 :Дата {STRINGID} +STR_5374 :Дата изменения {STRINGID} STR_5375 :▲ STR_5376 :▼ STR_5404 :Такое имя уже существует STR_5440 :Сворачивать окно при потере фокуса -STR_5442 :Принудительно установить рейтинг парка: +STR_5442 :Фикс. рейтинг парка: STR_5447 :Тип {STRINGID} STR_5448 :Аттракцион / траспорт {STRINGID} STR_5449 :Уменьшить скорость игры @@ -2634,7 +2622,7 @@ STR_5459 :Повернуть против часовой стрелке STR_5460 :Повернуть вид против часовой стрелке STR_5461 :Установить параметры гостя STR_5462 :{CURRENCY} -STR_5463 :Goal: Веселитесь! +STR_5463 :Цель: Веселитесь! STR_5464 :Общие STR_5465 :Погода STR_5466 :Персонал @@ -2664,6 +2652,1124 @@ STR_6034 :{BLACK}{STRING} STR_6062 :{OUTLINE}{GREEN}+ {CURRENCY2DP} STR_6063 :{OUTLINE}{RED}- {CURRENCY2DP} STR_6164 :{WHITE}❌ - -# This language is unmaintained. All untranslated strings have been removed. -# If you intend to become the maintainer, please copy the missing strings from en-GB.txt and translate them. +STR_0097 :Классические стоячие горки +STR_0098 :Горки с запуском ЛСМ +STR_0099 :Классический деревянный твистер +STR_0607 :Интенсивный аттракцион старого стиля с петлями, предназначенный для стоячей езды +STR_0608 :Поезда этого аттракциона ускоряются линейно-синхронными моторами и несутся через петли и кручения на высокой скорости +STR_0609 :Старый деревянный аттракцион с быстрой и резкой ездой, с сочленёнными поездами, большим количеством времени в воздухе, и кручённым треком +STR_5487 :Показать недавные сообщения +STR_5489 :Показать только отслеживаемых гостей +STR_5490 :Отключить звук при потере фокуса +STR_5491 :Список изобретений +STR_5492 :Опции сценария +STR_5493 :Отправить сообщение +STR_5495 :Список игроков +STR_5496 :Игрок +STR_5497 :Пинг +STR_5498 :Список серверов +STR_5499 :Имя игрока: +STR_5500 :Добавить сервер +STR_5501 :Запустить сервер +STR_5502 :Онлайн +STR_5503 :Введите доменное имя или IP-адрес: +STR_5504 :Показать статус онлайн-игры +STR_5505 :Не удалось подключиться к серверу +STR_5506 :Гостям все равно на интенсивность +STR_5510 :Устройство звука по умолчанию +STR_5511 :(НЕИЗВЕСТНО) +STR_5512 :Сохранить игру как… +STR_5513 :(Быстрое) сохранение игры +STR_5514 :Отключить вандализм +STR_5515 :Ности не будут разрушать ваш парк, когда они злятся. +STR_5516 :Чёрный +STR_5517 :Серый +STR_5518 :Белый +STR_5519 :Тёмно-фиолетовый +STR_5520 :Светло-фиолетовый +STR_5521 :Ярко-фиолетовый +STR_5522 :Тёмно-синий +STR_5523 :Светло-синий +STR_5524 :Ледяной +STR_5525 :Тёмно-водный +STR_5526 :Светло-водный +STR_5527 :Насыщено-зеленый +STR_5528 :Тёмно-зеленый +STR_5529 :Мох +STR_5530 :Ярко-зелёный +STR_5531 :Маслина +STR_5532 :Тёмная маслина +STR_5533 :Ярко-жёлтый +STR_5534 :Жёлтый +STR_5535 :Тёмно-желтый +STR_5536 :Светло-оранжевый +STR_5537 :Тёмно-оранжевый +STR_5538 :Светло-коричневый +STR_5539 :Насыщено-коричневый +STR_5540 :Тёмно-коричневый +STR_5541 :Лосось +STR_5542 :Бордовый +STR_5543 :Насыщено-красный +STR_5544 :Ярко-красный +STR_5545 :Тёмно-розовый +STR_5546 :Ярко-розовый +STR_5547 :Светло-розовый +STR_5548 :Показать все операционные режимы +STR_5549 :Год/месяц/день +STR_5550 :{POP16}{POP16}Год {COMMA16}, {PUSH16}{PUSH16}{MONTH} {PUSH16}{PUSH16}{STRINGID} +STR_5551 :Год/день/месяц +STR_5552 :{POP16}{POP16}Год {COMMA16}, {PUSH16}{PUSH16}{PUSH16}{STRINGID} {MONTH} +STR_5553 :Пауза при открытии Steam Overlay +STR_5554 :Включить интсрумент "гора" +STR_5555 :Показ машин с других типов трека +STR_5556 :Выбросить игрока +STR_5557 :Не рвать подключение при рассинхроне (онлайн) +STR_5558 :Эта настройка вступит в силу при следующем запуске OpenRCT2 +STR_5559 :10 мин. инспекции +STR_5560 :Устанавливает время инспекций на 10 мин для всех аттракицонов +STR_5561 :Не удалось загрузить язык +STR_5562 :ВНИМАНИЕ! +STR_5563 :Эта опция нестабильна, будьте осторожны +STR_5566 :Пароль: +STR_5567 :Рекламироввать +STR_5568 :Требуется пароль +STR_5569 :Этот сервер требует ввод пароля +STR_5570 :Запр. список серв. +STR_5571 :Войти в игру +STR_5572 :Добавить в закладки +STR_5573 :Убрать из закладок +STR_5574 :Имя сервера: +STR_5575 :Макс. игроков: +STR_5576 :Порт: +STR_5577 :Корейские воны (W) +STR_5578 :Российские рубли (₽) +STR_5579 :Масштаб окна: +STR_5580 :Чешские коруны (Kč) +STR_5581 :Показать FPS +STR_5582 :Захватить курсор мыши в окне +STR_5583 :{COMMA1DP16} м/с +STR_5584 :SI +STR_5585 :Разблокирует операционные лимиты аттракционов, разрешая, например, подъёмы со скростью {VELOCITY} +STR_5586 :Автоматически открывать магазины +STR_5587 :Магазины будут автоматически переключаться в "открытое" состояние после их постройки +STR_5588 :Играйте с другими игроками +STR_5589 :Настройки уведомлений +STR_5590 :Награды парка +STR_5591 :Маркетинговая кампания завершена +STR_5592 :Предупреждения о парке +STR_5593 :Предупреждения о рейтигне +STR_5594 :Аттр. сломался +STR_5595 :На аттр. произошла авария +STR_5596 :Предупреждения о аттр. +STR_5597 :Аттр. / пейзаж исследован +STR_5598 :Предупреждения о гостях +STR_5600 :Гость ушёл из парка +STR_5601 :Гость в очереди на аттр. +STR_5602 :Гость на аттр. +STR_5603 :Гость ушёл с аттр. +STR_5604 :Гость купил объект +STR_5605 :Гость использовал служебное помещение +STR_5606 :Гость умер +STR_5607 :Насильно удаляет элемент с карты +STR_5608 :БВ +STR_5609 :ВР +STR_5610 :Удаляет текущий элемент с карты насильным образом. Вы не получите за это денег, будьте осторожны. +STR_5611 :Пр +STR_5612 :Флаг призрачности +STR_5613 :Сл +STR_5614 :Флаг сломанности +STR_5615 :Пс +STR_5616 :Последний элемент для флага плитки +STR_5617 :Передвинуть выбранный элемент вверх. +STR_5618 :Передвинуть выбранный элемент вниз. +STR_5619 :RollerCoaster Tycoon +STR_5620 :Added Attractions +STR_5621 :Loopy Landscapes +STR_5622 :RollerCoaster Tycoon 2 +STR_5623 :Wacky Worlds +STR_5624 :Time Twister +STR_5625 :"Реальные" парки +STR_5626 :Другие парки +STR_5627 :Группировка списка по: +STR_5628 :Оригинальной игре +STR_5629 :Уровню сложности +STR_5630 :Отключить "слишком сложные" сценарии +STR_5631 :Оригинальные DLC +STR_5632 :Постройте свой… +STR_5634 :OPTION + +STR_5635 :{WINDOW_COLOUR_2}Потрачено денег: {BLACK}{CURRENCY2DP} +STR_5636 :{WINDOW_COLOUR_2}Запущено комманд: {BLACK}{COMMA16} +STR_5637 :Не могу сделать это… +STR_5638 :Нет прав +STR_5639 :Показать список игроков +STR_5640 :Управление группами +STR_5641 :Умолч. группа: +STR_5642 :Группа +STR_5643 :Добавить группу +STR_5644 :Убрать группу +STR_5645 :Чат +STR_5646 :Терраформинг +STR_5647 :Вкл/выкл. паузы +STR_5648 :Установить уровень воды +STR_5649 :Создать аттр. +STR_5650 :Убрать аттр. +STR_5651 :Построить аттр. +STR_5652 :Свойства аттр. +STR_5653 :Пейзаж +STR_5654 :Тропа +STR_5655 :Гость +STR_5656 :Сотрудник +STR_5657 :Свойства парка +STR_5658 :Финансирование парка +STR_5659 :Выкинуть игрока +STR_5660 :Изменить группы +STR_5661 :Установить группу игрока +STR_5662 :Нет +STR_5663 :Очистить ландшафт +STR_5664 :Чит +STR_5665 :Вкл/выкл. пейзажного кластера +STR_5666 :Вход без пароля +STR_5701 :{WINDOW_COLOUR_2}Последние действие: {BLACK}{STRINGID} +STR_5702 :Найти последнее действие игрока +STR_5703 :Не могу выкинуть хоста +STR_5704 :Последнее действие +STR_5705 :Не могу установить на эту группу +STR_5706 :Не могу убрать группу, в которой есть игроки +STR_5707 :Эту группу нельзя изменять +STR_5708 :Не могу изменить группу, которой принадлежит хост +STR_5709 :Переименовать группу +STR_5710 :Имя группы +STR_5711 :Введите новое имя для этой группы: +STR_5712 :Не могу изменить права, которых у вас нет +STR_5713 :Выкинуть игрока +STR_5714 :Показать окно настроек +STR_5715 :Новая игра +STR_5716 :Запрещено в онлайн-режиме +STR_5717 :Сетевая версия: {STRING} +STR_5718 :Сетевая версия: {STRING} +STR_5719 :Солнечно +STR_5720 :Част. облачность +STR_5721 :Облачно +STR_5722 :Дождь +STR_5723 :Ливень +STR_5724 :Гроза +STR_5725 :{BLACK}Изменить погоду: +STR_5726 :Устанавливает текущую погоду в парке +STR_5734 :Отрисовка +STR_5735 :Онлайн статус +STR_5736 :Игрок +STR_5737 :Закрыто, {COMMA16} гость ещё на аттр. +STR_5738 :Закрыто, {COMMA16} гостей ещё на аттр. +STR_5739 :{WINDOW_COLOUR_2}Гостей на аттр.: {BLACK}{COMMA16} +STR_5740 :Бесконечные маркетинговые кампании +STR_5741 :Маркетинговые компании никогда не заканчиваются +STR_5742 :Аутентификация… +STR_5743 :Подключение… +STR_5744 :Разрешение… +STR_5745 :Обнаружен сетевой рассинхрон +STR_5746 :Отключено +STR_5747 :Отключено: {STRING} +STR_5748 :Выброшено +STR_5749 :Прочь с сервера! +STR_5750 :Подключение закрыто +STR_5751 :Данных нет +STR_5752 :{OUTLINE}{RED}{STRING} отключился +STR_5753 :{OUTLINE}{RED}{STRING} отключился ({STRING}) +STR_5754 :Плохое имя игрока +STR_5755 :Неверная версия игры (у сервера {STRING}) +STR_5756 :Плохой пароль +STR_5757 :Сервер переполнен +STR_5758 :{OUTLINE}{GREEN}{STRING} подключился к игре +STR_5759 :Скачивание карты… +STR_5760 :Доллары Гонг-Конгы (HK$) +STR_5761 :Тайванские доллары (NT$) +STR_5762 :Китайские Юани (CN¥) +STR_5763 :Все файлы +STR_5764 :Неверный тип аттр. +STR_5765 :Нельзя редактировать аттракционы неверного типа +STR_5766 :Венгерские форинты (Ft) +STR_5767 :Доход +STR_5768 :Всего гостей +STR_5769 :Всего доход +STR_5770 :Гостей в час +STR_5771 :Цена работы +STR_5772 :Возраст +STR_5773 :Всего гостей: {COMMA32} +STR_5774 :Всего доход: {CURRENCY2DP} +STR_5775 :Гостей: {COMMA32} в час +STR_5776 :Построен в этом году +STR_5777 :Построен в прошлом году +STR_5778 :Построен {COMMA16} лет назад +STR_5779 :Доход: {CURRENCY2DP} в час +STR_5780 :Цена работы: {CURRENCY2DP} в час +STR_5781 :Цена работы: неизвестно +STR_5782 :Вы подключены. Нажмите ‘{STRING}’, чтобы использовать чат. +STR_5783 :{WINDOW_COLOUR_2}Сценарий заблокирован. +STR_5784 :{BLACK}Пройдите сценарии выше по списку чтобы открыть его. +STR_5785 :Не могу переименовать группу… +STR_5786 :Неверное имя группы +STR_5787 :{COMMA32} игроков в сети +STR_5788 :Интервал инспекций: +STR_5789 :Отключить эффект молнии +STR_5790 :Включает цены в стиле RCT1{NEWLINE}(платный вход + платные аттракционы) +STR_5791 :Сбрасывает надежность всех аттракционов до 100%{NEWLINE}и делает их построенными "в этом году" +STR_5792 :Чинит все сломанные аттракционы +STR_5793 :Сбрасывает историю аварий.{NEWLINE}Гости не будут жаловаться на небезопасные поездки. +STR_5794 :Некоторые сценарии запрещают редактирование существующих аттракционов.{NEWLINE}Этот чит снимет ограничение. +STR_5795 :Гости могут ездить на любых аттракционах в вашем парке,{NEWLINE}даже тех, у которых очень высокая интенсивность. +STR_5796 :Насильно открывает/закрывает парк +STR_5797 :Запрещает изменение погоды с текущего состояния +STR_5798 :Разрешает строительство в режиме паузы +STR_5799 :Запрещает поломки аттракционов из-за проблем с тормозами +STR_5800 :Запрещает поломки аттракицонов +STR_5801 :Отключить мусор +STR_5802 :Гости не будут разбрасывать по вашему парку мусор и рвоту. +STR_5803 :Повернуть выбранный элемент карты +STR_5804 :Отключить звук +STR_5805 :Добавит ваш севрер в общий список для упрощения поиска +STR_5806 :Переключить оконный режим +STR_5807 :{WINDOW_COLOUR_2}Число аттракционов: {BLACK}{COMMA16} +STR_5808 :{WINDOW_COLOUR_2}Число магазинов: {BLACK}{COMMA16} +STR_5809 :{WINDOW_COLOUR_2}Число служебных зданий: {BLACK}{COMMA16} +STR_5810 :Снять ограничения на количество машин +STR_5811 :Если включено, можно строить до{NEWLINE}255 машин на поезд и{NEWLINE}31 поездов на аттракцион. +STR_5812 :Показать онлайн-окно +STR_5813 :“{STRING}” +STR_5814 :{WINDOW_COLOUR_1}“{STRING}” +STR_5815 :Показывать счетчик FPS в игре +STR_5816 :Масштабирует игровой интерфейс.{NEWLINE}Помогает при игре на экранах с высоким разрешением. +STR_5819 :[Требует аппаратное отображание]{NEWLINE}Поставить игру на паузу при открытии Steam Overlay +STR_5820 :Сворачивает игру{NEWLINE}при потере фокуса в полноэкранном режиме +STR_5822 :Цикл день-ночь в зависимости от времени игры.{NEWLINE}Полный цикл занимает один игровой месяц. +STR_5823 :Показывает весь текст на баннерах большими буквами (как в RCT1) +STR_5824 :Выключает визуальный эффект молнии во время гроз. +STR_5825 :Не позволять курсору покидать окно +STR_5826 :Инверсия перетаскивания игрового поля правой кнопкой мыши +STR_5827 :Изменить цвета графического интерфейса +STR_5828 :Изменить единицу измерения для расстояний и скорости +STR_5829 :Изменить валюту, используемую в игре.{NEWLINE}Курсы обмена не являются точными. +STR_5830 :Изменить язык игры +STR_5831 :Изменить формат отображения температуры +STR_5832 :Показывать высоту в игровых "единицах" вместо{NEWLINE}формата, выбранного в пункте "расстояние и скорость" +STR_5833 :Изменить формать даты +STR_5834 :Выберите аудио-устройство для OpenRCT2. +STR_5835 :Выключить звук при потере игрового фокуса. +STR_5836 :Выберите музыку для главного меню.{NEWLINE}Треки из RCT1 требуют установки RCT1 на вкладке "Дополнительно". +STR_5837 :Создавать и управлять темами интерфейса +STR_5838 :Показывает отдельную кнопку для окна финансов на панели инструментов +STR_5839 :Показывает отдельную кнопку для окна исследований на панели инструментов +STR_5840 :Показывает отдельную кнопку для окна с чит-кодами на панели инструментов +STR_5841 :Показывает отдельную кнопку для окна новостей на панели инструментов +STR_5842 :Сортирует сценарии по их сложности (как в RCT2) или по игре, откуда они импортированы (как в RCT1). +STR_5843 :Не позволяет выбирать сценарии с высокой сложностью, если сценарии с более низкой ещё не пройдены. +STR_5844 :Оставляет подключение к онлайн-серверу,{NEWLINE}даже если произошёл рассинхрон или иная ошибка. +STR_5845 :Добавляет кнопку для инструментов отладки на панель инструментов.{NEWLINE}Включает горячую клавишу для консоли. +STR_5846 :Установить частоту автосохранений. +STR_5847 :Выбрать заставку на главном меню.{NEWLINE}Заставки из RCT1 требуют установки RCT1 на вкладке "Дополнительно". +STR_5849 :Автоматически задает местоположение только-что-нанятных сотрудников. +STR_5851 :Интервал инспецкий для ново-построенных аттракционов. +STR_5853 :Включить/выключить звуковые эффекты +STR_5854 :Включить/выключить музыку от аттракционов +STR_5855 :Установить полный экран (с рамками или без) или оконный режим +STR_5856 :Установить разрешение для полноэкранного режима +STR_5857 :Опции игры +STR_5858 :Использовать ваш GPU для отображения игры. Улучшает совместимость с программами захвата экрана. Может уменьшить производительность. +STR_5859 :Включает генерацию кадров для более визуально-гладкого геймплея.{NEWLINE}Если выключено, игра будет работать на 40 FPS. +STR_5860 :Использовать оригинальное/декомпилирование рисование треков +STR_5861 :Ошибка верификации ключа. +STR_5862 :Блокировать неизвестных игроков. +STR_5863 :Блокировать игроков с неизвестными ключами. +STR_5864 :Этот севрер использует "белый список" для подключения игроков. +STR_5865 :Логировать чаты. +STR_5866 :Логирует всю историю чата в файл в вашей пользовательской папке. +STR_5867 :{WINDOW_COLOUR_2}Имя провайдера: {BLACK}{STRING} +STR_5868 :{WINDOW_COLOUR_2}Почта провайдера: {BLACK}{STRING} +STR_5869 :{WINDOW_COLOUR_2}Сайт провайдера: {BLACK}{STRING} +STR_5870 :Показать информацию о сервере +STR_5871 :Отключить увядание растений +STR_5872 :Растения не будут увядать со временем. +STR_5873 :Цепной подъем на всех частях трека +STR_5874 :Любая часть трека может быть использованя для цепного подъема +STR_5875 :Графический драйвер: +STR_5876 :Драйвер, используемый для отображения игровой графики +STR_5877 :Программный +STR_5878 :Прог. + аппаратное отображение +STR_5879 :OpenGL (эксп.) +STR_5880 :Только выбранные +STR_5881 :Только не-выбранные +STR_5882 :Настраиваемвая валюта +STR_5883 :Конфигурация настраиваемой валюты +STR_5884 :{WINDOW_COLOUR_2}Курс обмена: +STR_5885 :{WINDOW_COLOUR_2}= {COMMA32} фунтов Стерлинга (£) +STR_5886 :{WINDOW_COLOUR_2}Символ валюты: +STR_5887 :Префикс +STR_5888 :Суффикс +STR_5889 :Символ настраиваемой валюты +STR_5890 :Введите отображаемый символ для своей валюты +STR_5891 :Умолч. +STR_5892 :Перейти в папку по умолчанию +STR_5893 :Курс обмена +STR_5894 :Введите курс обмена +STR_5895 :Сохранить трек +STR_5896 :Не удалось сохранить трек! +STR_5898 :{BLACK}Не могу загрузить трек. {NEWLINE}Возможно, файл повреждён или удалён. +STR_5899 :Вкл/выкл. окна отладки отрисовки +STR_5900 :Использовать оригинальный код отрисовки +STR_5901 :Показать высоты сегментов +STR_5902 :Показать ограничительные рамки +STR_5903 :Показать окно отладки отрисовки +STR_5904 :Сбросить дату +STR_5905 :Инструмент, автоматически генерирующий ландшафт для карты +STR_5906 :Масштаб на позицию курсора +STR_5907 :Если включено, масштабирование будет приближаться к позиции курсора, а не к центру окна +STR_5908 :Изменение типа аттракциона +STR_5909 :Разрешает изменять тип аттракциона.{NEWLINE}Может привести к сбоям игры. +STR_5910 :Применить +STR_5911 :Прозрачные тропы +STR_5912 :Вкл/выкл. прозрачные тропы +STR_5913 :Чат +STR_5914 :Неизв. аттракцион +STR_5915 :Игрок +STR_5916 :{COMMA16} игрок +STR_5917 :{COMMA16} игроков +STR_5920 :Погодные эффекты +STR_5921 :Дождь и темнота будут отображаться при плохой погоде. +STR_5922 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}Макс. {STRINGID} +STR_5923 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}Макс. {COMMA16} {STRINGID} на поезд +STR_5924 :Свойства поверхности +STR_5925 :Свойства тропы +STR_5926 :Свойства трека +STR_5927 :Свойства пейзажа +STR_5928 :Свойства входа +STR_5929 :Свойства стены +STR_5930 :Свойства большого пейзажа +STR_5931 :Свойства баннера +STR_5932 :Свойства повреждённого элемента +STR_5933 :Свойства +STR_5934 :Текстура почвы: {BLACK}{STRINGID} +STR_5935 :Край почвы: {BLACK}{STRINGID} +STR_5936 :Владение землёй: {BLACK}{STRINGID} +STR_5937 :Нет владения и прав на покупку +STR_5938 :Уровень воды: {BLACK}{COMMA16} +STR_5939 :Убрать заборы парка +STR_5940 :Вернуть заборы парка +STR_5941 :Базовая высота: +STR_5942 :Имя тропы: {BLACK}{STRINGID} +STR_5943 :Добавки: {BLACK}{STRINGID} +STR_5944 :Добавки: {BLACK}Никаких +STR_5945 :Связанные грани: +STR_5946 :Тип аттр.: {BLACK}{STRINGID} +STR_5947 :ID аттр.: {BLACK}{COMMA16} +STR_5948 :Имя аттр.: {BLACK}{STRINGID} +STR_5949 :Цепной подъём +STR_5950 :Применить изменение ко всей части трека +STR_5951 :ID части трека: {BLACK}{COMMA16} +STR_5952 :Номер последовательности: {BLACK}{COMMA16} +STR_5953 :Отсортировать элементы на текущей плитке по высоте. +STR_5954 :Возраст пейзажа: {BLACK}{COMMA16} +STR_5955 :Квадрант размещения: {BLACK}{STRINGID} +STR_5956 :Юго-запад +STR_5957 :Северо-запад +STR_5958 :Северо-восток +STR_5959 :Юго-восток +STR_5960 :Квадрант размещения: +STR_5961 :Индекс записи: {BLACK}{COMMA16} +STR_5962 :Обнаружение коллизий: +STR_5963 :Поднятые углы: +STR_5964 :Диагональ +STR_5965 :Тип входа: {BLACK}{STRINGID} +STR_5966 :Часть входа в парк: {BLACK}{STRINGID} +STR_5967 :Средний +STR_5968 :Левый +STR_5969 :Правый +STR_5970 :ID входа: {BLACK}{COMMA16} +STR_5971 :ID выхода: {BLACK}{COMMA16} +STR_5972 :ID аттр.: {BLACK}{COMMA16} +STR_5973 :Приравнять к следующей +STR_5974 :Изменяет высоту таким образом, чтобы она совпадала со следующим элементом на текущей плитке. Это упростит строительство на плитке. +STR_5975 :Наклон: +STR_5976 :Плоский +STR_5977 :Правая сторона сверху +STR_5978 :Левая сторона сверху +STR_5979 :Тип стены: {BLACK}{COMMA16} +STR_5980 :Текст баннера: {BLACK}{STRINGID} +STR_5981 :Не баннер +STR_5982 :Тип большого пейзажа: {BLACK}{COMMA16} +STR_5983 :ID части большого пейзажа: {BLACK}{COMMA16} +STR_5984 :Заблокированные тропы: +STR_5985 :Новая папкв +STR_5986 :Введите имя новой папки. +STR_5987 :Невозможно создать папку +STR_5988 :Нет продаваемых прав на землю +STR_5989 :Нет продаваемых прав на строительсво +STR_5990 :Нет продаваемых прав на землю/строительство +STR_5991 :Не могу вставить элемент… +STR_5992 :Достигнут лимит на элементы на карте +STR_5993 :Копировать элемент +STR_5994 :Вставить элемент +STR_5995 :Ускоритель +STR_5996 :Скорость ускорителя +STR_5997 :Добавить/установить деньги +STR_5998 :Доб. деньги +STR_5999 :Уст. деньги +STR_6000 :Введите новое значение +STR_6001 :Эффекты освещения (экспериментально) +STR_6002 :Лампы и аттракционы загораются ночью.{NEWLINE}Требует аппаратного отображения. +STR_6003 :Вид "в разрезе" +STR_6004 :Вид "в разрезе" +STR_6005 :Включить вид "в разрезе" +STR_6006 :Вид "в разрезе" п оказыват элементы только ниже заданной высоты и внутри выбранной области. +STR_6007 :Высота +STR_6008 :Переключить значение в игровых<->выбранных еденицах +STR_6009 :Выбрать высоту разреза +STR_6010 :{COMMA2DP32}м +STR_6011 :{COMMA1DP16} футов +STR_6013 :Гости будут платить за вход в парк и обслуживание.{NEWLINE}Поездки бесплатны. +STR_6014 :Гости будут платить за обслуживание и поездки.{NEWLINE}Вход в парк бесплатный. +STR_6015 :Наклон +STR_6016 :Изменить плитку +STR_6017 :Пожалуйста, помедленее +STR_6018 :Строительство - Левый поворот +STR_6019 :Строительство - Правый поворот +STR_6020 :Строительство - Исп. умолч. трек +STR_6021 :Строительство - Наклон вниз +STR_6022 :Строительство - Наклон вверх +STR_6023 :Строительство - Вкл/выкл. цепной подъём +STR_6024 :Строительство - Крен налево +STR_6025 :Строительство - Крен направо +STR_6026 :Строительство - Прошлый трек +STR_6027 :Строительство - Следующий трек +STR_6028 :Строительство - Построить текущий +STR_6029 :Строительство - Снести текущий +STR_6030 :Пейзажная пипетка. Нажмите на любой элемент пейзажа на карте, чтобы построить такой же. +STR_6031 :Описание сервера: +STR_6032 :Приветствие сервера: +STR_6033 :Путь к инсталляции RCT1: +STR_6035 :Пожалуйста, выберите вашу папку RCT1 +STR_6036 :Очистить +STR_6037 :Эта папка не содержит инсталляции RCT1. +STR_6038 :Если у вас есть копия RCT1, вы можете импортировать её сценарии, музыку, итд. +STR_6039 :Быстрый снос аттр. +STR_6040 :Править настройки сценария +STR_6041 :{BLACK}Не нанято ни одного механика! +STR_6042 :Загрузить heightmap +STR_6043 :Выбрать heightmap +STR_6044 :Сгладить heightmap +STR_6045 :Сила: +STR_6046 :Нормализовать heightmap +STR_6047 :Сгладить края плиток +STR_6048 :Ошибка heightmap +STR_6049 :Ошибка чтения PNG +STR_6050 :Ошибка чтения bitmap +STR_6052 :Heightmap слишком большой и будет обрезан +STR_6053 :Heightmap не может быть нормализован +STR_6054 :Поддеживается только 24-bit bitmap +STR_6055 :Файл Heightmap для OpenRCT2 +STR_6056 :Выключить звук +STR_6057 :Показывать отдельную кнопку для отключения звука в панели инструментов +STR_6058 :Звук +STR_6060 :Показывать анимацию при покупках +STR_6061 :Анимированный эффект с суммой{NEWLINE}при покупках от гостей. +STR_6064 :Овл. всей землёй +STR_6065 :Лог действ. пользов. +STR_6066 :Логирует действия всех пользователей в файл в вашей пользовательской папке. +STR_6067 :Сервер запущен. +STR_6068 :Сервер выключен. +STR_6069 :{STRING} был выброшен с сервера пользователем {STRING}. +STR_6070 :{STRING} был добавлен в группу ‘{STRING}’ пользователем {STRING}. +STR_6071 :{STRING} создал новую группу игроков ‘{STRING}’. +STR_6072 :{STRING} удалил группу игроков ‘{STRING}’. +STR_6073 :{STRING} изменил права группы игроков ‘{STRING}’. +STR_6074 :{STRING} изменил имя группы игроков ‘{STRING}’ на ‘{STRING}’. +STR_6075 :{STRING} изменил умолч. группу игроков на ‘{STRING}’. +STR_6076 :{STRING} использовал чит ‘{STRING}’. +STR_6077 :Добавить деньги +STR_6078 :{STRING} создал аттр. ‘{STRING}’. +STR_6079 :{STRING} снёс аттр. ‘{STRING}’. +STR_6080 :{STRING} изменил внешний вид аттр. ‘{STRING}’. +STR_6081 :{STRING} изменил статус аттр. ‘{STRING}’ на закрытый. +STR_6082 :{STRING} изменил статус аттр. ‘{STRING}’ на открытый. +STR_6083 :{STRING} изменил статус аттр. ‘{STRING}’ на режим тестирования. +STR_6084 :{STRING} изменил настройки машин на аттр. ‘{STRING}’. +STR_6085 :{STRING} настройки аттр. ‘{STRING}’. +STR_6086 :{STRING} переименовал аттр. ‘{STRING}’ в ‘{STRING}’. +STR_6087 :{STRING} изменил цену поездки на аттр. ‘{STRING}’ на {STRING} +STR_6088 :{STRING} изменил вторичную цену поездки на аттр. ‘{STRING}’ на {STRING} +STR_6089 :{STRING} переименовал парк ‘{STRING}’ в ‘{STRING}’. +STR_6090 :{STRING} открыл парк. +STR_6091 :{STRING} закрыл парк. +STR_6092 :{STRING} изменил цену на вход в парк на {STRING} +STR_6093 :{STRING} добавил новый пейзаж. +STR_6094 :{STRING} убрал пейзаж. +STR_6095 :{STRING} изменил пейзаж. +STR_6096 :{STRING} установил имя знака ‘{STRING}’. +STR_6097 :{STRING} создал трек для аттр. ‘{STRING}’. +STR_6098 :{STRING} удалил трек для аттр. +STR_6099 :Вы подключились к серверу. +STR_6100 :Вы отключились от сервера. +STR_6101 :Предпочитаемая цена аттр. не снижается +STR_6102 :Гости не будут считать старые аттракционы слишком дорогими. +STR_6103 :Эта опция не доступна в онлайн-играх. +STR_6105 :Гипер-горки +STR_6107 :Монстро-машины +STR_6109 :Гипер-твистер +STR_6111 :Классические мини-горки +STR_6113 :Высокий аттракцион без переворотов, но с большими падениями, высокой скоростью и комфортабельными поездами, имеющими только ограничения безопасности для ног +STR_6115 :Гигантские электрические грузовики размером 4 × 4, которые могут подниматься на большие наклоны +STR_6116 :Широкие поезда скользят по плавной стали этого аттракциона, проходя через несколько переворотов +STR_6119 :Дешёвый аттракцион, который просто строить. Однако, есть ограничение высоты. +STR_6120 :{BABYBLUE}Новая машина доступна для {STRINGID}:{NEWLINE}{STRINGID} +STR_6121 :Расширяет права на землю парка до краёв карты +STR_6122 :В этом сценарии слишком мало аттракционов! +STR_6123 :Ошибка загрузки объектов парка +STR_6124 :Имя объекта +STR_6125 :Тип объекта +STR_6126 :Неизв. тип +STR_6127 :Файл: {STRING} +STR_6128 :Этот файл не мог быть загружен, т.к. некоторые из его объектов остутствуют или повреждены. Список таких объектов предоставлен ниже. +STR_6129 :Копировать +STR_6130 :Копировать все +STR_6131 :Источник объекта +STR_6132 :Игнорировать статус исследования +STR_6133 :Открывает доступ к аттаркционам, которые ещё не изобретены. +STR_6134 :Очистить пейзаж +STR_6135 :Клиент отправил неверный запрос +STR_6136 :Сервер отправил неверный запрос +STR_6137 :OpenRCT2, бесплатная open-source реимлпементация и дополнение к Roller Coaster Tycoon 2. +STR_6138 :OpenRCT2 является работой многих авторов, и полный список можно найти по кнопке "Участники". Для дополнительной информации, посетите http://github.com/OpenRCT2/OpenRCT2 +STR_6139 :Все имена товаров и компаний принадлежат их обладателям. Их использование не подразумевает поддержку этих правообладателей или наличие каких-либо связей с ними. +STR_6140 :Changelog… +STR_6141 :Нижняя панель инструментов RCT1 +STR_6142 :{WINDOW_COLOUR_2}Имя трека: {BLACK}{STRING} +STR_6143 :{WINDOW_COLOUR_2}Тип аттр.: {BLACK}{STRINGID} +STR_6144 :Показывать грязную графику +STR_6145 :Установить ограничение скорости для ускорителей +STR_6146 :Разрешить все части трека +STR_6147 :Разрешает использовать любую часть трека при строительстве, даже если используемая машина её не поддерживает. +STR_6148 :Подключение к главному серверу… +STR_6149 :Не удалось подключится к главному серверу +STR_6150 :Неверный ответ от главного сервера (no JSON number) +STR_6151 :Главный сервер не вернул список серверов +STR_6152 :Неверный ответ от главного сервера (no JSON array) +STR_6153 :Оплата за вход в парк/за поездку +STR_6154 :По причинам безопасности, запуск OpenRCT2 от имени администратора не рекомендуется. +STR_6155 :Не найдено KDialog или Zenity. Установите хотя бы один из них, или настройте OpenRCT2 через терминал. +STR_6156 :Имя зарезервировано. +STR_6157 :Консоль +STR_6160 :{WINDOW_COLOUR_2}Доступные машины: {BLACK}{STRING} +STR_6161 :Переключатель отображения сетки +STR_6162 :Вращающаяся мышка +STR_6163 :Машины в форме мышей проходят острые углы и небольшие подения на высокой скорости, мягко вращаясь, чтобы дизориентировать гостей. +STR_6165 :Использовать V-Sync +STR_6166 :Синхронизует отображение кадров со скоростью монитора.{NEWLINE}Помогает избежать горизонтальных полос во время игры. +STR_6167 :Дополнительно +STR_6168 :Заставка на основном экране +STR_6169 :Выбор сценария +STR_6170 :Модификации интерфейса +STR_6171 :Поиск +STR_6172 :Поиск +STR_6173 :Введите имя для поиска: +STR_6188 :Рвота +STR_6189 :Утка +STR_6191 :Поверхность +STR_6192 :Стена +STR_6193 :{COMMA16} гость +STR_6194 :{INLINE_SPRITE}{11}{20}{00}{00}{COMMA16} гость +STR_6195 :{INLINE_SPRITE}{10}{20}{00}{00}{COMMA16} гость +STR_6196 :{BLACK}Год: +STR_6197 :{BLACK}Месяц: +STR_6198 :{BLACK}День: +STR_6199 :Установить дату +STR_6200 :Сбросить дату +STR_6202 :Стиль виртуального пола: +STR_6203 :Если включено, виртуальный "пол" будет отображаться при зажатии Ctrl или Shift для упрощения вертикального размещения элементов. +STR_6215 :Строительство +STR_6216 :Использование +STR_6217 :Доступность аттракционов/треков +STR_6218 :Оффициально от OpenRCT2 +STR_6219 :Показать проблемы с тропами +STR_6220 :Активировать +STR_6221 :Установит положение входа/выхода на аттр. на текущую плитку. Только один вход/выход может быть активным на станции. +STR_6222 :Не могу разместить точку входа гостей здесь… +STR_6223 :Должно быть за пределами парка! +STR_6224 :{STRING} разместил точку входа гостей. +STR_6225 :Не поддерживается с граф. драйвером OpenGL +STR_6226 :Разрешить раннее завершение сценария +STR_6227 :Завершает сценарий если все цели выполнены даже до даты завершения +STR_6228 :Опции сценариев +STR_6232 :Заморожено +STR_6233 :Вид "в разрезе" +STR_6234 :Показать проблемы с тропами +STR_6235 :Информация о сервере +STR_6236 :Игроки +STR_6237 :Группы +STR_6238 :Опции онлайн-игры +STR_6239 :Верт. ограничение +STR_6240 :Гориз. ограничение +STR_6241 :Выбрать область +STR_6242 :Сбросить выбор +STR_6243 :Обновляет аттр.,{NEWLINE}возвращая его надежность в изначальное состояние +STR_6244 :Не могу обновить аттр… +STR_6245 :Аттр. не нуждается в обновлении. +STR_6246 :Обновить +STR_6247 :Обновить аттр. +STR_6248 :{WINDOW_COLOUR_1}Вы хотите обновить {STRINGID} за {CURRENCY}? +STR_6249 :{WINDOW_COLOUR_1}Вы хотите обновить {STRINGID}? +STR_6250 :{WINDOW_COLOUR_1}Вы точно хотите снести {STRINGID} и получить {CURRENCY}? +STR_6251 :Аттр. еще не пуст +STR_6255 :URL недействителен +STR_6256 :Эффекты отрисовки +STR_6257 :Стеклянный (полупрозрачный) +STR_6258 :Прозрачный +STR_6259 :Отключить +STR_6260 :Показать заблокированные плитки +STR_6261 :Показать широкие тропы +STR_6262 :Основная громкость +STR_6263 :Включить/выключить все звуки +STR_6264 :Использовать системный файловый диалог +STR_6265 :Если включено, мы будем использовать файловый диалог вашей ОС вместо того, что встроен в OpenRCT2. +STR_6266 :Открыть папку пользовательского контента +STR_6267 :Открыть инспектор плиток +STR_6268 :Перейти на следующий tick +STR_6269 :Неверное ID климата +STR_6270 :Поверхности почвы +STR_6271 :Края почвы +STR_6272 :Станции +STR_6273 :Музыка +STR_6274 :Не могу установить цветовую тему… +STR_6275 :{WINDOW_COLOUR_2}Стиль станций: +STR_6276 :{RED}Гости застревают на {STRINGID}, возможно, из-за неверного типа аттр. или режима работы. +STR_6277 :Индекс станции: {BLACK}{STRINGID} +STR_6278 :Кол-во автосохранений: +STR_6279 :Максимальное количество автосохранений (старые удаляются) +STR_6280 :Чат +STR_6281 :Показывать кнопку чата в панели инструментов +STR_6282 :Чат +STR_6283 :Chat not available at this time. Are you connected to a server? +STR_6293 :Б +STR_6294 :КБ +STR_6295 :МБ +STR_6296 :ГБ +STR_6297 :ТБ +STR_6298 :{STRING}/с +STR_6299 :Скачать все +STR_6300 :Скачать все недостающие объекты, если они доступны по сети. +STR_6301 :Скопировать имя выбранного объекта в буфер. +STR_6302 :Скопировать весь список недостающих объектов в буфер. +STR_6303 :Скачивание объекта ({COMMA16} из {COMMA16}): [{STRING}] +STR_6304 :Открыть выбор пейзажа +STR_6305 :Многопоточность +STR_6306 :Экспериментальная опция для многопоточного отображения графики.{NEWLINE}Может вызвать нестабильность. +STR_6307 :Цветовая схема: {BLACK}{STRINGID} +STR_6308 :{TOPAZ}“{STRINGID}{OUTLINE}{TOPAZ}”{NEWLINE}{STRINGID} +STR_6309 :Переподключиться +STR_6310 :{WINDOW_COLOUR_2}Позиция: {BLACK}{INT32} {INT32} {INT32} +STR_6311 :{WINDOW_COLOUR_2}Следующая: {BLACK}{INT32} {INT32} {INT32} +STR_6312 :(поверхность) +STR_6313 :(наклон {INT32}) +STR_6314 :{WINDOW_COLOUR_2}Назначение: {BLACK}{INT32}, {INT32} tolerance {INT32} +STR_6315 :{WINDOW_COLOUR_2}Цель поиска пути: {BLACK}{INT32}, {INT32}, {INT32} dir {INT32} +STR_6316 :{WINDOW_COLOUR_2}История поиска пути: +STR_6317 :{BLACK}{INT32}, {INT32}, {INT32} dir {INT32} +STR_6318 :Обнаружен сетевой рассинхрон.{NEWLINE}Лог-файл: {STRING} +STR_6319 :Блочный тормоз закрыт +STR_6320 :Неразрушимый +STR_6321 :Добавка сломана +STR_6322 :{WINDOW_COLOUR_2}ID сущности: {BLACK}{INT32} +STR_6323 :Симуляция +STR_6324 :Симулировать +STR_6325 :Симулировать аттр. +STR_6326 :Не могу симулировать {STRINGID}… +STR_6327 :Прозрачный фон для огромных скриншотов +STR_6328 :Если эта опция включена, у огромных скриншотов фон будет прозрачным, а не чёрным. +STR_6330 :Скачивание [{STRING}] из {STRING} ({COMMA16} из {COMMA16}) +STR_6331 :Создать уток +STR_6332 :Убрать уток +STR_6333 :Увеличить масштаб +STR_6334 :Уменьшить масштаб +STR_6336 :Испектор плиток: Копировать элемент +STR_6337 :Испектор плиток: Вставить элемент +STR_6338 :Испектор плиток: Удалить элемент +STR_6339 :Испектор плиток: Передвинуть элемент вверх +STR_6340 :Испектор плиток: Передвинуть элемент вниз +STR_6341 :Испектор плиток: Увеличить X координату +STR_6342 :Испектор плиток: Уменьшить X координату +STR_6343 :Испектор плиток: Увеличить Y координату +STR_6344 :Испектор плиток: Уменьшить Y координату +STR_6345 :Испектор плиток: Увеличить высоту элемента +STR_6346 :Испектор плиток: Уменьшить высоту элемента +STR_6347 :Добавки к путям не должны находиться на плоских перекрёстках! +STR_6348 :Удалите плоский перекрёсток! +STR_6349 :Случайная заставка +STR_6350 :Разброс +STR_6351 :Инструмент разброса пейзажа +STR_6352 :Плотность +STR_6353 :Низкая плотность +STR_6354 :Средняя плотность +STR_6355 :Высокая плотность +STR_6356 :Вызывает уток, если в парке есть вода +STR_6357 :Убирает всех уток с карты +STR_6358 :Страница {UINT16} +STR_6359 :{POP16}{POP16}Страница {UINT16} +STR_6361 :Эффекты освещения на аттракционах (эксп.) +STR_6362 :Если включено, машины аттракционов будут освещаться ночью. +STR_6363 :Текст скопирован в буфер +STR_6364 :{RED}{COMMA16} человек умерло в аварии на {STRINGID} +STR_6365 :Смерти на аттр. +STR_6366 :Застрявшие машины +STR_6367 :Кадр анимации: +STR_6368 :Для лучшей совместимости, мы не рекомендуем запускать OpenRCT2 через Wine. У нас есть нативная поддержка для macOS, Linux, FreeBSD и OpenBSD. +STR_6369 :Строительство треков на любой высоте +STR_6370 :Разрешает размещать части трека на любых высотных интервалах. +STR_6371 :Этот путь содержит инсталляцию RCT1, но в нём нет файла “csg1i.dat”. Скопируйте этот файл с диска Loopy Landscapes или RCT Deluxe в папку “Data” вашей инсталляции RCT1. +STR_6372 :Этот путь содержит инсталляцию RCT1, но эта версия не поддерживается. OpenRCT2 необходима инсталляция версии "Loopy Landscapes" или "Deluxe" для правильной работы. +STR_6373 :Вкл/выкл. проверки разрешений +STR_6374 :C +STR_6375 :Неизвестный аттр. +STR_6376 :{WINDOW_COLOUR_2}Машина аттр.:{NEWLINE}{BLACK}{STRINGID} для {STRINGID} +STR_6377 :{WINDOW_COLOUR_2}Тип: {BLACK}{STRINGID} для {STRINGID} +STR_6378 :Получение списка объектов… +STR_6379 :Получены неверные данные +STR_6380 :Доступно обновление! +STR_6381 :Подключайтесь к серверу OpenRCT2 в Discord! +STR_6382 :Доступен новый релиз OpenRCT2: {STRING}! +STR_6383 :Открыть страницу скачивания +STR_6384 :Снег +STR_6385 :Метель +STR_6386 :Буран +STR_6387 :Не могу опустить элемент… +STR_6388 :Не могу поднять элемент… +STR_6389 :Неверные разрешения +STR_6390 :OpenRCT2 нужны файлы из оригинального RollerCoaster Tycoon 2 или RollerCoaster Tycoon Classic. Пожалуйста, выберите папку куда вы установили RCT2 или RCT Classic. +STR_6391 :Выберите папку RCT2 или RCTC +STR_6392 :{STRING} не найдено по этому пути. +STR_6393 :Выбор цели +STR_6394 :Цель +STR_6395 :Чистка парка +STR_6396 :Отключить энергосберегающие функции +STR_6397 :Отключает screensaver, затемнение экрана и прочие энергосберегающие опции во время работы OpenRCT2. +STR_6398 :Файл содержит неподдерживаемые типы аттр. Пожалуйста, обновитесь до последней версии OpenRCT2. +STR_6399 :OpenRCT2 нужны файлы из оригинального RollerCoaster Tycoon 2 или RollerCoaster Tycoon Classic. Пожалуйста, установите переменную “game_path” в файле config.ini на путь установки RTC2 или RTC Classic, и перезапустите игру. +STR_6400 :У меня есть офлайн-установщик GOG для RollerCoaster Tycoon 2, но он ещё не установлен +STR_6401 :У меня есть установленная копия RollerCoaster Tycoon 2 или RollerCoaster Tycoon Classic +STR_6402 :Настройки данных OpenRCT2 +STR_6403 :Выберите ваш вариант +STR_6404 :Выберите установщик GOG для RollerCoaster Tycoon 2. +STR_6405 :Выберите установщик GOG +STR_6406 :Установщик GOG для RollerCoaster Tycoon 2 +STR_6407 :Это может занять несколько минут. +STR_6408 :Пожалуйста, установите “innoextract” и перезапустите OpenRCT2, чтобы воспользоваться установщиком GOG. +STR_6409 :Этот файл не являтеся офлайн-установщиком GOG для RCT2. Возможно, вы скачали установщик GOG Galaxy, или выбрали не тот файл. +STR_6410 :Масштаб +STR_6411 :Показать кнопки уменьшения/увеличения масштаба на панели инструментов +STR_6412 :NumPad Enter +STR_6413 :Shift +STR_6414 :L Shift +STR_6415 :R Shift +STR_6416 :Ctrl +STR_6417 :L Ctrl +STR_6418 :R Ctrl +STR_6419 :Alt +STR_6420 :L Alt +STR_6421 :R Alt +STR_6422 :Cmd +STR_6423 :L Cmd +STR_6424 :R Cmd +STR_6425 :Joy Left +STR_6426 :Joy Right +STR_6427 :Joy Up +STR_6428 :Joy Down +STR_6429 :Joy {INT32} +STR_6430 :LMB +STR_6431 :RMB +STR_6432 :Mouse {INT32} +STR_6433 :Удалить +STR_6434 :Удалить все клавишы для этого действия. +STR_6435 :{WINDOW_COLOUR_2}Вандалов остановлено: {BLACK}{COMMA32} +STR_6436 :Вкл/выкл. невидимость +STR_6437 :Видимо +STR_6438 :{MOVE_X}{2}👁 +STR_6439 :Инспектор плиток: Вкл/выкл. невидимость +STR_6440 :Прозрачная вода +STR_6441 :Должен быть выбран хотя бы один поверхностный объект, не являющийся тропой очереди. +STR_6442 :Должен быть выбран хотя бы один поверхностный объект, являющийся тропой очереди. +STR_6443 :Должен быть выбран хотя бы один поверхностный объект, являющийся тропой с рельсами. +STR_6444 :Поверхности троп +STR_6445 :Рельсы троп +STR_6446 :{WINDOW_COLOUR_2}Имя поверхности: {BLACK}{STRINGID} +STR_6447 :{WINDOW_COLOUR_2}Имя рельса: {BLACK}{STRINGID} +STR_6448 :Неподдерживаемыый формат объекта +STR_6449 :{WINDOW_COLOUR_2}Треки: +STR_6450 :{BLACK}“{STRING}” +STR_6451 :{BLACK}“{STRING}” - {STRING} +STR_6452 :{WINDOW_COLOUR_2}Продает: {BLACK}{STRING} +STR_6453 :Скопировать информацию о версии +STR_6454 :Не могу переименовать баннер… +STR_6455 :Не могу переименовать знак… +STR_6456 :Огромный скриншот +STR_6457 :Сообщить о неполадке (через GitHub) +STR_6458 :Следовать за этим на главном экране +STR_6460 :D +STR_6461 :Направление +STR_6462 :Энергичность +STR_6463 :Энергичность: {COMMA2DP32} +STR_6464 :Интенсивность +STR_6465 :Интенсивность: {COMMA2DP32} +STR_6466 :Тошнотворность +STR_6467 :Тошнотворность: {COMMA2DP32} +STR_6468 :Пока неизвестно +STR_6469 :Уменьшить область патрулирования +STR_6470 :Увеличить область патрулирования +STR_6471 :Прозрачные растения +STR_6472 :Прозрачные машины +STR_6473 :Прозрачные столбы +STR_6474 :Невидимые гости +STR_6475 :Невидимые сотрудники +STR_6476 :Невидимые растения +STR_6477 :Невидимый пейзаж +STR_6478 :Невидимые тропы +STR_6479 :Невидимые аттракционы +STR_6480 :Невидимые машины +STR_6481 :Опции прозрачности +STR_6482 :Опции прозрачности +STR_6483 :Открыть опции прозрачности +STR_6484 :Переключатель прозрачности растений +STR_6485 :Переключатель прозрачности машин +STR_6486 :Переключатель видимости гостей +STR_6487 :Переключатель видимости сотрудников +STR_6488 :{RED}Гости жалуются на длину ваших очередей.{NEWLINE}Попробуйте уменьшить длину проблематичных очередей, или построить аттракционы с большим количеством пассажиров. +STR_6489 :Ошибка: несовместимая версия парка +STR_6490 :Предупреждение: частично-совместимая версия парка +STR_6491 :Этот парк был создан в более новой версии OpenRCT2. Парк был создан в v{INT32}, и для его загрузки нужна хотя бы v{INT32}. Ваша версия: v{INT32}. +STR_6492 :Этот парк был создан в более старой версии OpenRCT2, и не может быть открыт в этой версии. Версия парка: v{INT32}. +STR_6493 :Этот парк был создан в более новой версии OpenRCT2, и некоторые данные могут быть утеряны. Версия парка: v{INT32}. Ваша версия: v{INT32}. +STR_6494 :Группировка по типу +STR_6495 :Группирует все аттракционы по их типу, вместо отдельного отображения. +STR_6496 :{WINDOW_COLOUR_2}{STRINGID} +STR_6497 :Щёлкните на плитку, чтобы показать её элементы.{NEWLINE}Ctrl + щелчок для выбора. +STR_6498 :Включите это, чтобы сделать карту квадратной. +STR_6499 :Тип машины не поддерживается форматом дизайна трека +STR_6500 :Элементы трека не поддерживаются форматом дизайна трека +STR_6501 :Случайный цвет +STR_6502 :Введите значение между {COMMA16} и {COMMA16} +STR_6503 :Должна быть выбрана хотя бы одна станция +STR_6504 :Должна быть выбрана хотя бы одна поверхность почвы +STR_6505 :Должен быть выбран хотя бы один край почвы +STR_6506 :Большой полуштопор (левый) +STR_6507 :Большой полуштопор (правый) +STR_6508 :Средняя полупетля (левая) +STR_6509 :Средня полпуетля (правая) +STR_6510 :Поворот Zero-G (левый) +STR_6511 :Поворот Zero-G (правый) +STR_6512 :Большой поворот Zero-G (левый) +STR_6513 :Большой поворот Zero-G (правый) +STR_6514 :Неверная высота! +STR_6515 :{BLACK}RollerCoaster Tycoon 1 не установлен - изображения будут заменены. +STR_6516 :Некоторые выбранные объекты требуют установки RollerCoaster Tycoon 1 для правильного отображения.{NEWLINE}Некоторые изображения будут заменены. +STR_6517 :Некоторые объекты в этом парке требуют установки RollerCoaster Tycoon 1 для правильного отображения.{NEWLINE}Некоторые изображения будут заменены. +STR_6518 :{BLACK}Наведите мышь на сценарий, чтобы посмотреть его описание и цели.{NEWLINE}Щелкните, чтобы играть. +STR_6519 :Экстра +STR_6520 :Пакеты контента +STR_6521 :Низкий приоритет +STR_6522 :Высокий приоритет +STR_6523 :Уменьшить приоритет выбранного пакета +STR_6524 :Увеличить приоритет выбранного пакета +STR_6525 :Перезагрузить весь игровой контент с выбранными пакетами +STR_6526 :(графика, музыка, звуковые эффекты) +STR_6527 :Соревнования +STR_6528 :Неверные параметры трека! +STR_6529 :Неверные параметры цветовой схемы! +STR_6530 :Пользовательские дополнения +STR_6531 :The Time Machine +STR_6532 :Katy’s Dreamworld +STR_6533 :{WINDOW_COLOUR_2}Фактор энергетичности: {BLACK}-{COMMA16}% +STR_6534 :{WINDOW_COLOUR_2}Фактор интенсивности: {BLACK}-{COMMA16}% +STR_6535 :{WINDOW_COLOUR_2}Фактор тошнотворности: {BLACK}-{COMMA16}% +STR_6536 :Этот парк был сохранён в более новой версии OpenRCT2. Парк был сохранен в v{INT32}. Ваша версия: v{INT32}. +STR_6537 :Обычные тропы как очереди +STR_6538 :Показывает стандартные тропинки в списке очередей при строительстве. +STR_6539 :Тормоз закрыт +STR_6540 :{WINDOW_COLOUR_2}Особая благодарность следующим компаниям за то, что позволили нам воспользоваться их дизайнами: +STR_6541 :{WINDOW_COLOUR_2}Rocky Mountain Construction Group, Josef Wiegand GmbH & Co. KG, Intamin Amusement Rides Int. Corp. Est. +STR_6542 :Участники +STR_6543 :Участники… +STR_6544 :Заём не может быть отрицательным! +STR_6545 :Использовать формулу RCT1 для займов +STR_6546 :Использует формулу для вычисления процента по займу из RCT1: фиксированный процент 1.33%. +STR_6547 :Весь пейзаж +STR_6548 :Показывать рельсы на перекрёстках +STR_6549 :Объекты совместимости не могут быть выбраны! +STR_6550 :Эта сущность включена лишь для обратной совместимости со старыми/повреждёнными объектами. Её нельзя выбрать, но выбор можно снять. +STR_6551 :Армейски-зелёный +STR_6552 :Медовой +STR_6553 :Загар +STR_6554 :Каштан +STR_6555 :Розовый корал +STR_6556 :Лесно-зелёный +STR_6557 :Шартрез +STR_6558 :Охотничье-зелёный +STR_6559 :Морская волна +STR_6560 :Лайм +STR_6561 :Сепия +STR_6562 :Персик +STR_6563 :Барвинок +STR_6564 :Виридиан +STR_6565 :Зелёная морская пена +STR_6566 :Лиловый +STR_6567 :Лаванда +STR_6568 :Оранжевый пастель +STR_6569 :Глубокая вода +STR_6570 :Розовый пастель +STR_6571 :Умбра +STR_6572 :Бежевый +STR_6573 :Невидимый +STR_6574 :Пустота +STR_6575 :Особые цвета +STR_6576 :Добавляет особые цвета для аттракционов +STR_6577 :Скорость блочных тормозов +STR_6578 :Устанавливает лимит скорости для блочных тормозов. В режиме блок-секций, близлежащие тормоза с более низкой скоростью будут связаны с блочным тормозом. +STR_6579 :Блочные тормоза будут установлены на скорость по умолчанию при сохранении дизайна. +STR_6580 :Сброс +STR_6581 :Вы хотите сбросить все горячие клавиши на этой вкладке? +STR_6582 :Открыть окно горячих клавиш +STR_6583 :{WINDOW_COLOUR_2}Обратное направление поездов +STR_6584 :Выберите, чтобы запускать поезда в обратном направлении. +STR_6585 :Не могу внести изменения… +STR_6586 :OpenRCT2 +STR_6587 :Музыка из главного меню OpenRCT2 является работой Allister Brimble,{NEWLINE}под лицензией CC BY-SA 4.0. +STR_6588 :Благодарим Herman Riddering за права на запись музыки от 35er Voigt. +STR_6589 :Показывать кнопки окна слева +STR_6590 :Показывать кнопки окна (например, "закрыть"), с левой стороны вместо правой. +STR_6591 :Сотрудник чинит аттр., его нельзя уволить. +STR_6592 :Сотрудник занят инспекцией аттр., его нельзя уволить. +STR_6593 :Убрать заборы +STR_6594 :Инспектор плиток: Вкл/выкл. наклон стены +STR_6595 :{WINDOW_COLOUR_2}Автор: {BLACK}{STRING} +STR_6596 :{WINDOW_COLOUR_2}Авторы: {BLACK}{STRING} +STR_6597 :Неверный параметр +STR_6598 :Значение за допустимыми пределами +STR_6599 :Призрачный элемент не найден +STR_6600 :Шарик не найден +STR_6601 :Сотрудник не найден +STR_6602 :Аттр. не найден +STR_6603 :Вход в объект аттр. не найден +STR_6604 :Игрок не найден +STR_6605 :Элемент входа не найден +STR_6606 :Элемент поверхности не найден +STR_6607 :Элемент плитки не найден +STR_6608 :Элемент трека не найден +STR_6609 :Блок трека не найден +STR_6610 :Элемент тропы не найден +STR_6611 :Элемент стены не найден +STR_6612 :Элемент баннера не найден +STR_6613 :Перезагрузить объект +STR_6614 :Не могу изменить цену на вход в парк +STR_6615 :Треку на этой плитке нужна вода +STR_6616 :Действие недоступно для этого сотрудника +STR_6617 :Не могу поменять элемент плитки с самим собой +STR_6618 :Не могу добавить/убрать ограничение на объект… +STR_6619 :Объект не может быть ограничен! +STR_6620 :Объект не найден! +STR_6621 :Ограничить +STR_6622 :Сделать объект доступным только в редакторе сценариев и в режиме Sandbox. +STR_6623 :Введите ‘help’ для списка комманд. Введите ‘hide’, чтобы скрыть консоль. +STR_6624 :Инспектор плиток: Отсортировать элементы +STR_6625 :Неверный цвет +STR_6626 :Анмация задом-наперед +STR_6627 :Скорость трека слишком высока! +STR_6628 :Можно размещать только на краях троп! +STR_6629 :Выровнять кнопки панели инструментов по центру +STR_6630 :Эта настройка выровняет кнопки на игровой панели инструментов по центру, вместо того чтобы распологать их слева/справа +STR_6631 :Загрузка… +STR_6632 :Проверка файлов объектов… +STR_6633 :Проверка файлов сценария… +STR_6634 :Проверка файлов дизайна треков… +STR_6635 :Проверка пакетов контента… +STR_6636 :Проверка заставок… +STR_6637 :Загружается главное меню… +STR_6638 :Увеличить интерфейс +STR_6639 :Модифицирует интерфейс, чтобы его было удобнее использовать на тачскринах +STR_6640 :Пакеты контента… +STR_6641 :Окно загрузки/прогресса +STR_6642 :{STRING} ({COMMA32} из {COMMA32}) +STR_6643 :{STRING} ({COMMA32} из {COMMA32} КБ) +STR_6644 :Режим тачскрина +STR_6645 :Увеличивает размер некоторых элементов пользовательского интерфейса{NEWLINE}для упрощения их нажатия. +STR_6646 :Автор: {STRING} +STR_6647 :Авторы: {STRING} +STR_6648 :Загрузка движка плагинов… +STR_6649 :Загрузка сценария… +STR_6650 :Загрузка сохр. игры… +STR_6651 :{STRING} ({COMMA32}%) +STR_6652 :Окно ошибки +STR_6653 :Показаны все источники +STR_6654 :Показано {POP16}{UINT16} источников +STR_6655 :Только ‘{POP16}{STRINGID}’ +STR_6656 :Убрать все заборы из парка +STR_6657 :Неовл. землёй +STR_6658 :Установить землю, которой парк не владеет и не имеет прав на её покупку +STR_6659 :Гостям все равно на цены +STR_6660 :Гости будут игнорировать цены аттракционов и магазинов. +STR_6661 :Все случайно +STR_6662 :Назначает цвета для каждой машины случайным образом. +STR_6663 :Читы дат +STR_6664 :Показать читы дат +STR_6665 :Климатические читы +STR_6666 :Показать климатические читы +STR_6667 :Фауна +STR_6668 :Читы сотрудников +STR_6669 :Показать читы сотрудников +STR_6670 :Поведение гостей +STR_6671 :Показать "реальные" имена сотрудников +STR_6672 :Показать "реальные" имена сотрудников вместо их номеров +STR_6673 :Прозрачно +STR_6674 :{MONTH}, год {COMMA16} +STR_6675 :Имена людей +STR_6676 :Нужно выбрать хотя бы один объект типа "имена людей" +STR_6677 :Добавлять пляжи вокруг воды +STR_6678 :Источник heightmap: +STR_6679 :Плоскость +STR_6680 :Шум Simplex +STR_6681 :Файл Heightmap +STR_6682 :Генератор карт - Генератор +STR_6683 :Генератор карт - Почва +STR_6684 :Генератор карт - Воды +STR_6685 :Генератор карт - Леса +STR_6686 :Пропорция деревьев к земле: +STR_6687 :Мин. высота дерева: +STR_6688 :Макс. высота дерева: +STR_6689 :{UINT16}% +STR_6690 :Минимальная высота земли +STR_6691 :Введите мин. высоту земли между {COMMA16} и {COMMA16} +STR_6692 :Максимальная высота земли +STR_6693 :Введите макс. высоту земли между {COMMA16} и {COMMA16} +STR_6694 :Минимальная высота деревьев +STR_6695 :Введите мин. высоту деревьев между {COMMA16} и {COMMA16} +STR_6696 :Максимальная высота деревьев +STR_6697 :Введите макс. высоту деревьев между {COMMA16} и {COMMA16} +STR_6698 :Пропорция деревьев к земле +STR_6699 :Введите пропорцию деревьев к земле между {COMMA16} и {COMMA16} +STR_6700 :Базовая частота Simplex +STR_6701 :Введите базовую частоту между {COMMA2DP32} и {COMMA2DP32} +STR_6702 :Октавы Simplex +STR_6703 :Введите октавы между {COMMA16} и {COMMA16} +STR_6704 :{COMMA2DP32} +STR_6705 :Обзор… +STR_6706 :{WINDOW_COLOUR_2}Текущий файл изобр.: {BLACK}{STRING} +STR_6707 :(не выбрано) +STR_6708 :Сила сглаживания +STR_6709 :Введите силу сглаживания между {COMMA16} и {COMMA16} +STR_6710 :Стабильная сортировка +STR_6711 :Имя файла: +STR_6712 :Сохранить +STR_6713 :{COMMA32} {STRINGID} +STR_6714 :Имя файла +STR_6715 :Дата изменения +STR_6716 :Размер +STR_6717 :Размер {STRINGID} +STR_6718 :Анимации людей +STR_6719 :Нужно выбрать хотя бы один объект анимации людей +STR_6720 :Нужно выбрать хотя бы один объект анимации дворников +STR_6721 :Нужно выбрать хотя бы один объект анимации механиков +STR_6722 :Нужно выбрать хотя бы один объект анимации охранников +STR_6723 :Нужно выбрать хотя бы один объект анимации развлекателей diff --git a/data/language/sv-SE.txt b/data/language/sv-SE.txt index cae9f1ba39..d7dab089a3 100644 --- a/data/language/sv-SE.txt +++ b/data/language/sv-SE.txt @@ -1161,17 +1161,6 @@ STR_1773 :Bara en fotosektion tillåten per åktur STR_1774 :Bara en uppskjutskulle tillåten per åktur STR_1777 :Musik för åkturer STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandadräkt -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tigerdräkt -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefantdräkt -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Romersk dräkt -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilladräkt -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snögubbedräkt -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Riddardräkt -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronautdräkt -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Banditdräkt -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriffdräkt -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Piratdräkt STR_1790 :Välj uniformfärg för den här sortens personal STR_1791 :{WINDOW_COLOUR_2}Uniformfärg: STR_1792 :Svarar på radioanrop om {STRINGID} diff --git a/data/language/tr-TR.txt b/data/language/tr-TR.txt index 130adc7edc..c4379c64e0 100644 --- a/data/language/tr-TR.txt +++ b/data/language/tr-TR.txt @@ -1151,17 +1151,6 @@ STR_1773 :Alet başı bir tane fotoğraf alanı inşa edilebilir STR_1774 :Alet başı bir tane asansörlü tırmanma zinciri inşa edilebilir STR_1777 :{WINDOW_COLOUR_2}Alet müziği STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda kıyafeti -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Kaplan kıyafeti -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Fil kıyafeti -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Romalı kıyafeti -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Goril kıyafeti -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Kardan adam kıyafeti -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Şövalye kıyafeti -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronot kıyafeti -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Eşkıya kıyafeti -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Şerif kıyafeti -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Korsan kıyafeti STR_1790 :Bu işçinin üniforma{NEWLINE}rengini seçiniz STR_1791 :{WINDOW_COLOUR_2}Üniforma rengi: STR_1792 :{STRINGID} aletinin tamirine gidiyor diff --git a/data/language/uk-UA.txt b/data/language/uk-UA.txt index f312567fa7..aeccc88a49 100644 --- a/data/language/uk-UA.txt +++ b/data/language/uk-UA.txt @@ -1158,17 +1158,6 @@ STR_1773 :Only one on-ride photo section allowed per ride STR_1774 :Only one cable lift hill allowed per ride STR_1777 :Музика в атракціонах STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Костюм панди -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Костюм тигра -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Костюм слона -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Римський костюм -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Костюм горили -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Костюм сніговика -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Костюм лицаря -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Костюм астронавта -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Костюм бандита -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Костюм шерифа -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Костюм пірата STR_1790 :Вибрати колір уніформи для цього типу працівників STR_1791 :{WINDOW_COLOUR_2}Колір уніформи: STR_1792 :Відповідає на {STRINGING} виклик про поломку diff --git a/data/language/vi-VN.txt b/data/language/vi-VN.txt index 7428862479..45ff9916b0 100644 --- a/data/language/vi-VN.txt +++ b/data/language/vi-VN.txt @@ -1154,17 +1154,6 @@ STR_1773 :Only one on-ride photo section allowed per ride STR_1774 :Only one cable lift hill allowed per ride STR_1777 :Ride music STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda costume -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tiger costume -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elephant costume -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} Roman costume -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} Gorilla costume -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} Snowman costume -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} Knight costume -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} Astronaut costume -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} Bandit costume -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriff costume -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Pirate costume STR_1790 :Select uniform colour for this type of staff STR_1791 :{WINDOW_COLOUR_2}Uniform colour: STR_1792 :Đang trả lời cuộc gọi vì {STRINGID} bị hỏng diff --git a/data/language/zh-CN.txt b/data/language/zh-CN.txt index c41afadb8b..a1d3e1fb13 100644 --- a/data/language/zh-CN.txt +++ b/data/language/zh-CN.txt @@ -1160,17 +1160,6 @@ STR_1773 :每个游乐设施只能建造一个照相区域 STR_1774 :每个游乐设施只能建造一个牵引轨道 STR_1777 :设施音乐 STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00}熊猫服装 -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00}老虎服装 -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00}大象服装 -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00}罗马服装 -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00}大猩猩服装 -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00}雪人服装 -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00}骑士服装 -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00}宇航员服装 -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00}土匪服装 -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00}警长服装 -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00}海盗服装 STR_1790 :选择这种员工的制服颜色 STR_1791 :{WINDOW_COLOUR_2}制服的颜色: STR_1792 :正在回应{STRINGID}的故障呼叫 diff --git a/data/language/zh-TW.txt b/data/language/zh-TW.txt index 45f3bc32e3..bb63431abd 100644 --- a/data/language/zh-TW.txt +++ b/data/language/zh-TW.txt @@ -1160,17 +1160,6 @@ STR_1773 :每個遊樂設施只可建造一個即時照相區域 STR_1774 :每個遊樂設施只可建造一個纜索坡道 STR_1777 :音樂 STR_1778 :{STRINGID} - - -STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} 熊貓服裝 -STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} 老虎服裝 -STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} 大象服裝 -STR_1782 :{INLINE_SPRITE}{01}{20}{00}{00} 羅馬服裝 -STR_1783 :{INLINE_SPRITE}{02}{20}{00}{00} 哥斯拉服裝 -STR_1784 :{INLINE_SPRITE}{03}{20}{00}{00} 雪人服裝 -STR_1785 :{INLINE_SPRITE}{04}{20}{00}{00} 騎士服裝 -STR_1786 :{INLINE_SPRITE}{05}{20}{00}{00} 太空人服裝 -STR_1787 :{INLINE_SPRITE}{06}{20}{00}{00} 土匪服裝 -STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} 警長服裝 -STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} 海盜服裝 STR_1790 :選擇這種員工的制服顏色 STR_1791 :{WINDOW_COLOUR_2}制服的顏色: STR_1792 :回應{STRINGID}的故障呼叫中 diff --git a/debian/changelog b/debian/changelog index d4d794ee09..bc3a0a46bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,28 @@ +openrct2 (0.4.18-develop-1) unstable; urgency=medium + + * Improved: [#23200] Add banked sloped turns and many other pieces to the Stand-Up and Classic Stand-Up Roller Coaster. + * Improved: [#23260] Add diagonal (block) brakes to LSM Launched Roller Coaster. + * Improved: [#23350] Increased the maximum width of the ride graph window. + * Improved: [#23404] Folders are now paired with an icon in the load/save window. + * Improved: [#23405] Filenames can now be input directly into the file browser (load/save) window. + * Improved: [#23431] Opaque water and Corkscrew Roller Coaster boosters now show up if RCT1 isn’t linked. + * Improved: [objects#369] Updated Russian translation. + * Change: [#23413] The max number of park entrance objects has been raised to 255. + * Fix: [#1122] Trains spawned on a cable lift hill will fall down and crash (original bug). + * Fix: [#19780] Guest screams loop on long drops. + * Fix: [#22742, #22793] In game console does not handle format tokens properly. + * Fix: [#23135] Map generator tree placement has noticable patterns. + * Fix: [#23286] Currency formatted incorrectly in the in game console. + * Fix: [#23348] Console set commands don't print output properly. + * Fix: [#23376] Peeps with balloons, hats and umbrellas may leave artifacts on screen. + * Fix: [#23486] Object selection minimum requirements can be bypassed with close window hotkey. + * Fix: [#23496] Newly spawned vehicles are invisible when spawned while the game is paused. + * Fix: [#23509] Map generator window reverts to flatland after selecting a heightmap image. + * Fix: [objects#359] Fix water colours in Hover Cars preview image. + * Fix: [objects#361] Fix water colours in River Styx boats preview image. + * Fix: [objects#362] Fix water colours in Neptune Ride preview image. + * Fix: [objects#363] Fix water colours in Harpies Trains preview image. + openrct2 (0.4.17-develop-1) unstable; urgency=medium * Feature: [#23166] Add Galician translation. diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 638cd4d137..bf3503ffd9 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,19 +1,37 @@ -0.4.18 (in development) +0.4.19 (in development) +------------------------------------------------------------------------ +- Feature: [#23328] Introducing peep animation objects, enabling custom entertainer costumes. +- Improved: [#23328] The costume list in the staff window is now ordered alphabetically. +- Improved: [#23540] The file browser now optionally shows a file size column. +- Change: [#23328] All RCT2 entertainer costumes are now available in legacy parks. +- Fix: [#21794] Lay-down coaster cars reverse on first frames of downwards corkscrew. +- Fix: [#23508] Simultaneous virtual floors shown for ride and footpath. +- Fix: [#23581] [Plugin] Food/drink items given to guests have no consumption duration set. +- Fix: [#23591] “Install new track” button in Track Designs Manager is misaligned. + +0.4.18 (2025-01-08) ------------------------------------------------------------------------ - Improved: [#23200] Add banked sloped turns and many other pieces to the Stand-Up and Classic Stand-Up Roller Coaster. - Improved: [#23260] Add diagonal (block) brakes to LSM Launched Roller Coaster. - Improved: [#23350] Increased the maximum width of the ride graph window. - Improved: [#23404] Folders are now paired with an icon in the load/save window. - Improved: [#23405] Filenames can now be input directly into the file browser (load/save) window. -- Improved: [#23431] Opaque water and Corkscrew Roller Coaster boosters now show up if RCT1 isn’t linked. +- Improved: [#23431] Opaque water and Corkscrew Roller Coaster boosters now show up if RCT1 isn’t linked. +- Improved: [objects#369] Updated Russian translation. - Change: [#23413] The max number of park entrance objects has been raised to 255. - Fix: [#1122] Trains spawned on a cable lift hill will fall down and crash (original bug). +- Fix: [#19780] Guest screams loop on long drops. - Fix: [#22742, #22793] In game console does not handle format tokens properly. +- Fix: [#23135] Map generator tree placement has noticable patterns. - Fix: [#23286] Currency formatted incorrectly in the in game console. - Fix: [#23348] Console set commands don't print output properly. - Fix: [#23376] Peeps with balloons, hats and umbrellas may leave artifacts on screen. -- Fix: [#23486] Object selection minimum requirements can be bypassed with close window hotkey. - Fix: [#23496] Newly spawned vehicles are invisible when spawned while the game is paused. +- Fix: [#23509] Map generator window reverts to flatland after selecting a heightmap image. +- Fix: [objects#359] Fix water colours in Hover Cars preview image. +- Fix: [objects#361] Fix water colours in River Styx boats preview image. +- Fix: [objects#362] Fix water colours in Neptune Ride preview image. +- Fix: [objects#363] Fix water colours in Harpies Trains preview image. 0.4.17 (2024-12-08) ------------------------------------------------------------------------ diff --git a/distribution/linux/openrct2.appdata.xml b/distribution/linux/openrct2.appdata.xml index 5ab163fcb1..cc482770dd 100644 --- a/distribution/linux/openrct2.appdata.xml +++ b/distribution/linux/openrct2.appdata.xml @@ -298,6 +298,9 @@ none + + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.18 + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.17 diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist index decd14dcc3..a6cecad33c 100644 --- a/distribution/macos/Info.plist +++ b/distribution/macos/Info.plist @@ -13,7 +13,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.17 + 0.4.18 CFBundleSignature ORCT LSMinimumSystemVersion diff --git a/distribution/openrct2.d.ts b/distribution/openrct2.d.ts index e9cf212c4d..24b36a1244 100644 --- a/distribution/openrct2.d.ts +++ b/distribution/openrct2.d.ts @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/openrct2.proj b/openrct2.proj index a25d37c4f0..4ec99e95d6 100644 --- a/openrct2.proj +++ b/openrct2.proj @@ -45,14 +45,14 @@ 9984c1e317dcfb3aaf8e17f1db2ebb0f771e2373 https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.14/title-sequences.zip 6c04781b959b468e1f65ec2d2f21f5aaa5e5724d - https://github.com/OpenRCT2/objects/releases/download/v1.4.11/objects.zip - da04330679de2eff53a94a6505802512bfec6403 + https://github.com/OpenRCT2/objects/releases/download/v1.5.0/objects.zip + 90c26f416ddaeb0c35490b7af89f4c6f9d6351f3 https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.5/opensound.zip b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb https://github.com/OpenRCT2/OpenMusic/releases/download/v1.6/openmusic.zip ba170fa6d777b309c15420f4b6eb3fa25082a9d1 - https://github.com/OpenRCT2/replays/releases/download/v0.0.84/replays.zip - 90B848AB344E29A2CF1E3E48539F06F5845772C3 + https://github.com/OpenRCT2/replays/releases/download/v0.0.85/replays.zip + 2B0939953A41D2CE82809CB7C21FC3883578383F diff --git a/readme.md b/readme.md index b5e92e3517..c592acc44f 100644 --- a/readme.md +++ b/readme.md @@ -19,7 +19,7 @@ ### Download | Latest release | Latest development build | |-----------------------------------------------------------------------------------------------------------------------|--------------------------| -| [![OpenRCT2.org](https://img.shields.io/badge/master-v0.4.17-green.svg)](https://openrct2.org/downloads/master/latest) | [![OpenRCT2.org](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.org/downloads/develop/latest) | +| [![OpenRCT2.org](https://img.shields.io/badge/master-v0.4.18-green.svg)](https://openrct2.org/downloads/master/latest) | [![OpenRCT2.org](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.org/downloads/develop/latest) | --- @@ -243,7 +243,7 @@ You can translate the game into other languages by editing the language files in You can help create new graphics for the game by visiting the [OpenGraphics project](https://github.com/OpenRCT2/OpenGraphics). 3D modellers needed! ## 4.5 Audio -You can help create the music and sound effects for the game. Check out the OpenMusic repository and drop by our [#open-sound-and-music channel on Discord](https://discord.gg/9y8WbcX) to find out more. +You can help create the music and sound effects for the game. Check out the [OpenMusic](https://github.com/OpenRCT2/OpenMusic) repository and drop by our [#open-sound-and-music channel on Discord](https://discord.gg/9y8WbcX) to find out more. ## 4.6 Scenarios We would also like to distribute additional scenarios with the game, when the time comes. For that, we need talented scenario makers! Check out the [OpenScenarios repository](https://github.com/PFCKrutonium/OpenRCT2-OpenScenarios). diff --git a/resources/OpenRCT2.rc b/resources/OpenRCT2.rc index dc4f0e62e1..7fdc3bc14d 100644 --- a/resources/OpenRCT2.rc +++ b/resources/OpenRCT2.rc @@ -45,7 +45,7 @@ BEGIN VALUE "CompanyName", "OpenRCT2 Team" VALUE "FileDescription", "Main executable for OpenRCT2" VALUE "FileVersion", OPENRCT2_PRODUCT_VERSION - VALUE "LegalCopyright", "Copyright (c) 2014-2024 OpenRCT2 developers" + VALUE "LegalCopyright", "Copyright (c) 2014-2025 OpenRCT2 developers" VALUE "ProductName", "OpenRCT2" VALUE "ProductVersion", OPENRCT2_PRODUCT_VERSION END diff --git a/resources/g2/icons/peep_animations.png b/resources/g2/icons/peep_animations.png new file mode 100644 index 0000000000..f1c334ba8d Binary files /dev/null and b/resources/g2/icons/peep_animations.png differ diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index fe4e95939f..4137a78b68 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -327,6 +327,11 @@ { "path": "icons/folder.png" }, + { + "path": "icons/peep_animations.png", + "x": 2, + "y": 1 + }, { "path": "loader/loader_hybrid_supports.png", "y": 10 diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle index 7b8cca29de..cc570d7918 100644 --- a/src/openrct2-android/app/build.gradle +++ b/src/openrct2-android/app/build.gradle @@ -10,8 +10,8 @@ android { minSdkVersion 24 targetSdkVersion 28 - versionCode 5 - versionName '0.4.17' + versionCode 6 + versionName '0.4.18' externalNativeBuild { cmake { arguments '-DANDROID_STL=c++_shared' diff --git a/src/openrct2-cli/Cli.cpp b/src/openrct2-cli/Cli.cpp index 8904198ff8..e034d80718 100644 --- a/src/openrct2-cli/Cli.cpp +++ b/src/openrct2-cli/Cli.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorData.cpp b/src/openrct2-ui/CursorData.cpp index bfdee34053..425061a91a 100644 --- a/src/openrct2-ui/CursorData.cpp +++ b/src/openrct2-ui/CursorData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorData.h b/src/openrct2-ui/CursorData.h index f0a4dc60c8..9d22ffba1e 100644 --- a/src/openrct2-ui/CursorData.h +++ b/src/openrct2-ui/CursorData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorRepository.cpp b/src/openrct2-ui/CursorRepository.cpp index 39067e3808..ce6a895fd5 100644 --- a/src/openrct2-ui/CursorRepository.cpp +++ b/src/openrct2-ui/CursorRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorRepository.h b/src/openrct2-ui/CursorRepository.h index e28bb117a4..4540c8c7ea 100644 --- a/src/openrct2-ui/CursorRepository.h +++ b/src/openrct2-ui/CursorRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ProvisionalElements.cpp b/src/openrct2-ui/ProvisionalElements.cpp index ba97bc285f..3fa1161dd0 100644 --- a/src/openrct2-ui/ProvisionalElements.cpp +++ b/src/openrct2-ui/ProvisionalElements.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -10,11 +10,14 @@ #include "ProvisionalElements.h" #include +#include #include #include #include #include #include +#include +#include #include using namespace OpenRCT2::Ui::Windows; @@ -27,14 +30,15 @@ namespace OpenRCT2::Ui FootpathRemoveProvisionalTemporarily(); - if (WindowFindByClass(WindowClass::RideConstruction) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::RideConstruction) != nullptr) { RideRemoveProvisionalTrackPiece(); RideEntranceExitRemoveGhost(); } // This is in non performant so only make network games suffer for it // non networked games do not need this as its to prevent desyncs. - if ((NetworkGetMode() != NETWORK_MODE_NONE) && WindowFindByClass(WindowClass::TrackDesignPlace) != nullptr) + if ((NetworkGetMode() != NETWORK_MODE_NONE) && windowMgr->FindByClass(WindowClass::TrackDesignPlace) != nullptr) { TrackPlaceClearProvisionalTemporarily(); } @@ -46,14 +50,15 @@ namespace OpenRCT2::Ui FootpathRestoreProvisional(); - if (WindowFindByClass(WindowClass::RideConstruction) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::RideConstruction) != nullptr) { RideRestoreProvisionalTrackPiece(); RideEntranceExitPlaceProvisionalGhost(); } // This is in non performant so only make network games suffer for it // non networked games do not need this as its to prevent desyncs. - if ((NetworkGetMode() != NETWORK_MODE_NONE) && WindowFindByClass(WindowClass::TrackDesignPlace) != nullptr) + if ((NetworkGetMode() != NETWORK_MODE_NONE) && windowMgr->FindByClass(WindowClass::TrackDesignPlace) != nullptr) { TrackPlaceRestoreProvisional(); } diff --git a/src/openrct2-ui/ProvisionalElements.h b/src/openrct2-ui/ProvisionalElements.h index e591f664b5..008b467954 100644 --- a/src/openrct2-ui/ProvisionalElements.h +++ b/src/openrct2-ui/ProvisionalElements.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/SDLException.cpp b/src/openrct2-ui/SDLException.cpp index 7623981ffc..934256a775 100644 --- a/src/openrct2-ui/SDLException.cpp +++ b/src/openrct2-ui/SDLException.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/SDLException.h b/src/openrct2-ui/SDLException.h index 06f01d78cf..d3e6ce6053 100644 --- a/src/openrct2-ui/SDLException.h +++ b/src/openrct2-ui/SDLException.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/TextComposition.cpp b/src/openrct2-ui/TextComposition.cpp index 1d17e8abf4..c4f7a1cb9a 100644 --- a/src/openrct2-ui/TextComposition.cpp +++ b/src/openrct2-ui/TextComposition.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/TextComposition.h b/src/openrct2-ui/TextComposition.h index 895e5e38ce..ef4e37db87 100644 --- a/src/openrct2-ui/TextComposition.h +++ b/src/openrct2-ui/TextComposition.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/Ui.cpp b/src/openrct2-ui/Ui.cpp index 02aaa23969..214fbe15f6 100644 --- a/src/openrct2-ui/Ui.cpp +++ b/src/openrct2-ui/Ui.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/Ui.h b/src/openrct2-ui/Ui.h index 9c3ddfb936..8d962defe5 100644 --- a/src/openrct2-ui/Ui.h +++ b/src/openrct2-ui/Ui.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Android.cpp b/src/openrct2-ui/UiContext.Android.cpp index 7ba0237ace..2c50ac247a 100644 --- a/src/openrct2-ui/UiContext.Android.cpp +++ b/src/openrct2-ui/UiContext.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp index 595311a107..5bae0b072b 100644 --- a/src/openrct2-ui/UiContext.Linux.cpp +++ b/src/openrct2-ui/UiContext.Linux.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Win32.cpp b/src/openrct2-ui/UiContext.Win32.cpp index 333efe95eb..45d2cf881c 100644 --- a/src/openrct2-ui/UiContext.Win32.cpp +++ b/src/openrct2-ui/UiContext.Win32.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index 799ce2cae0..cbe43ffd50 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/UiContext.h b/src/openrct2-ui/UiContext.h index 530c84717d..d05913b144 100644 --- a/src/openrct2-ui/UiContext.h +++ b/src/openrct2-ui/UiContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.macOS.mm b/src/openrct2-ui/UiContext.macOS.mm index f3c5f42181..d0101d7344 100644 --- a/src/openrct2-ui/UiContext.macOS.mm +++ b/src/openrct2-ui/UiContext.macOS.mm @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiStringIds.h b/src/openrct2-ui/UiStringIds.h index 641d35a73a..8e2c15c7db 100644 --- a/src/openrct2-ui/UiStringIds.h +++ b/src/openrct2-ui/UiStringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -509,24 +509,8 @@ namespace OpenRCT2 STR_OBJECT_SELECTION_ALL_SOURCES_SHOWN = 6653, STR_OBJECT_SELECTION_COMPAT_OBJECT_DESCRIPTION = 6550, STR_OBJECT_SELECTION_FALLBACK_IMAGES_WARNING = 6516, - STR_OBJECT_SELECTION_FOOTPATHS = 3189, - STR_OBJECT_SELECTION_FOOTPATH_RAILINGS = 6445, - STR_OBJECT_SELECTION_FOOTPATH_SURFACES = 6444, - STR_OBJECT_SELECTION_LARGE_SCENERY = 3186, - STR_OBJECT_SELECTION_MUSIC = 6273, STR_OBJECT_SELECTION_ONLY_STRINGID = 6655, - STR_OBJECT_SELECTION_PATH_EXTRAS = 3190, - STR_OBJECT_SELECTION_PATH_SIGNS = 3188, - STR_OBJECT_SELECTION_PEEP_NAMES = 6675, - STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS = 3184, - STR_OBJECT_SELECTION_SCENERY_GROUPS = 3191, STR_OBJECT_SELECTION_SELECTION_SIZE = 3164, - STR_OBJECT_SELECTION_SMALL_SCENERY = 3185, - STR_OBJECT_SELECTION_STATIONS = 6272, - STR_OBJECT_SELECTION_TERRAIN_EDGES = 6271, - STR_OBJECT_SELECTION_TERRAIN_SURFACES = 6270, - STR_OBJECT_SELECTION_WALLS_FENCES = 3187, - STR_OBJECT_SELECTION_WATER = 3193, STR_OBJECT_SELECTION_SHOWING_N_SOURCES = 6654, STR_OBJECT_USES_FALLBACK_IMAGES = 6515, STR_RELOAD_OBJECT_TIP = 6613, @@ -845,17 +829,22 @@ namespace OpenRCT2 STR_SET_LAND_TO_BE_OWNED_TIP = 3221, // Window: LoadSave - STR_DATE = 5374, + STR_DATE_COLUMN = 5374, STR_FILEBROWSER_ACTION_NEW_FILE = 2719, STR_FILEBROWSER_ACTION_NEW_FOLDER = 5985, STR_FILEBROWSER_ACTION_UP = 2718, + STR_FILEBROWSER_CUSTOMISE_DATE = 6715, + STR_FILEBROWSER_CUSTOMISE_FILENAME = 6714, + STR_FILEBROWSER_CUSTOMISE_SIZE = 6716, STR_FILEBROWSER_FILE_NAME_PROMPT = 2710, + STR_FILEBROWSER_FILE_SIZE_VALUE = 6713, STR_FILEBROWSER_FOLDER_NAME_PROMPT = 5986, STR_FILEBROWSER_OVERWRITE_PROMPT = 2708, STR_FILEBROWSER_OVERWRITE_TITLE = 2709, STR_FILEBROWSER_SAVE_BUTTON = 6712, + STR_FILEBROWSER_SIZE_COLUMN = 6717, STR_FILEBROWSER_USE_SYSTEM_WINDOW = 2707, - STR_FILENAME = 6711, + STR_FILENAME_LABEL = 6711, STR_FILE_DIALOG_TITLE_INSTALL_NEW_TRACK_DESIGN = 1039, STR_FILE_DIALOG_TITLE_LOAD_GAME = 1036, STR_FILE_DIALOG_TITLE_LOAD_HEIGHTMAP = 6042, @@ -867,7 +856,7 @@ namespace OpenRCT2 STR_LANDSCAPE_SAVE_FAILED = 1049, STR_LOADSAVE_DEFAULT = 5891, STR_LOADSAVE_DEFAULT_TIP = 5892, - STR_NAME = 5373, + STR_NAME_COLUMN = 5373, STR_OPENRCT2_HEIGHTMAP_FILE = 6055, STR_OPENRCT2_LANDSCAPE_FILE = 1045, STR_OPENRCT2_SAVED_GAME = 1043, @@ -1069,7 +1058,6 @@ namespace OpenRCT2 STR_OBJECT_ERROR_WINDOW_FILE = 6127, STR_OBJECT_LOAD_ERROR_TITLE = 6123, STR_OBJECT_NAME = 6124, - STR_OBJECT_SELECTION_PARK_ENTRANCE = 3192, STR_OBJECT_SOURCE = 6131, STR_OBJECT_TYPE = 6125, @@ -1115,8 +1103,8 @@ namespace OpenRCT2 STR_DRAWING_ENGINE_TIP = 5876, STR_EARLY_COMPLETION_TIP = 6227, STR_EDIT_ASSET_PACKS_BUTTON = 6640, - STR_EXPORT_EMSCRIPTEN = 6713, - STR_IMPORT_EMSCRIPTEN = 6714, + STR_EXPORT_EMSCRIPTEN = 6727, + STR_IMPORT_EMSCRIPTEN = 6728, STR_EDIT_THEMES_BUTTON = 5153, STR_EDIT_THEMES_BUTTON_TIP = 5837, STR_EFFECTS_GROUP = 6256, @@ -2116,6 +2104,8 @@ namespace OpenRCT2 STR_TILE_INSPECTOR_WALL_SLOPED_LEFT = 5977, STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT = 5978, STR_TILE_INSPECTOR_WALL_TYPE = 5979, + STR_TILE_INSPECTOR_X_LABEL = 6725, + STR_TILE_INSPECTOR_Y_LABEL = 6726, // Window: TitleExit STR_EXIT = 1924, diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index dfdf3684dd..7db0f6aede 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -403,7 +403,7 @@ public: case INTENT_ACTION_REFRESH_RIDE_LIST: { - auto window = WindowFindByClass(WindowClass::RideList); + auto window = FindByClass(WindowClass::RideList); if (window != nullptr) { WindowRideListRefreshList(window); @@ -419,7 +419,7 @@ public: case INTENT_ACTION_RIDE_CONSTRUCTION_FOCUS: { auto rideIndex = intent.GetUIntExtra(INTENT_EXTRA_RIDE_ID); - auto w = WindowFindByClass(WindowClass::RideConstruction); + auto w = FindByClass(WindowClass::RideConstruction); if (w == nullptr || w->number != rideIndex) { WindowCloseConstructionWindows(); @@ -519,7 +519,7 @@ public: { rct_windownumber bannerIndex = static_cast(intent.GetUIntExtra(INTENT_EXTRA_BANNER_INDEX)); - WindowBase* w = WindowFindByNumber(WindowClass::Banner, bannerIndex); + WindowBase* w = FindByNumber(WindowClass::Banner, bannerIndex); if (w != nullptr) { w->Invalidate(); @@ -646,6 +646,126 @@ public: } return nullptr; } + + /** + * Finds the first window with the specified window class. + * rct2: 0x006EA8A0 + * @param WindowClass enum + * @returns the window or nullptr if no window was found. + */ + WindowBase* FindByClass(WindowClass cls) override + { + for (auto& w : g_window_list) + { + if (w->flags & WF_DEAD) + continue; + if (w->classification == cls) + { + return w.get(); + } + } + return nullptr; + } + + /** + * Finds the first window with the specified window class and number. + * rct2: 0x006EA8A0 + * @param WindowClass enum + * @param window number + * @returns the window or nullptr if no window was found. + */ + WindowBase* FindByNumber(WindowClass cls, rct_windownumber number) override + { + for (auto& w : g_window_list) + { + if (w->flags & WF_DEAD) + continue; + if (w->classification == cls && w->number == number) + { + return w.get(); + } + } + return nullptr; + } + + // TODO: Use variant for this once the window framework is done. + WindowBase* FindByNumber(WindowClass cls, EntityId id) override + { + return FindByNumber(cls, static_cast(id.ToUnderlying())); + } + + /** + * + * rct2: 0x006EA845 + */ + WindowBase* FindFromPoint(const ScreenCoordsXY& screenCoords) override + { + for (auto it = g_window_list.rbegin(); it != g_window_list.rend(); it++) + { + auto& w = *it; + if (w->flags & WF_DEAD) + continue; + + if (screenCoords.x < w->windowPos.x || screenCoords.x >= w->windowPos.x + w->width + || screenCoords.y < w->windowPos.y || screenCoords.y >= w->windowPos.y + w->height) + continue; + + if (w->flags & WF_NO_BACKGROUND) + { + auto widgetIndex = FindWidgetFromPoint(*w.get(), screenCoords); + if (widgetIndex == -1) + continue; + } + + return w.get(); + } + + return nullptr; + } + + /** + * + * rct2: 0x006EA594 + * x (ax) + * y (bx) + * returns widget_index if found, -1 otherwise + */ + WidgetIndex FindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) override + { + // Invalidate the window + w.OnPrepareDraw(); + + // Find the widget at point x, y + WidgetIndex widget_index = -1; + for (int32_t i = 0;; i++) + { + const auto& widget = w.widgets[i]; + if (widget.type == WindowWidgetType::Last) + { + break; + } + + if (widget.type != WindowWidgetType::Empty && widget.IsVisible()) + { + if (screenCoords.x >= w.windowPos.x + widget.left && screenCoords.x <= w.windowPos.x + widget.right + && screenCoords.y >= w.windowPos.y + widget.top && screenCoords.y <= w.windowPos.y + widget.bottom) + { + widget_index = i; + } + } + } + + // Return next widget if a dropdown + if (widget_index != -1) + { + const auto& widget = w.widgets[widget_index]; + if (widget.type == WindowWidgetType::DropdownMenu) + widget_index++; + } + + // Return the widget index + return widget_index; + } }; std::unique_ptr OpenRCT2::Ui::CreateWindowManager() diff --git a/src/openrct2-ui/WindowManager.h b/src/openrct2-ui/WindowManager.h index b0b2f4c6ad..7c10dc3dea 100644 --- a/src/openrct2-ui/WindowManager.h +++ b/src/openrct2-ui/WindowManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioChannel.cpp b/src/openrct2-ui/audio/AudioChannel.cpp index 12eba42d64..c033a0e700 100644 --- a/src/openrct2-ui/audio/AudioChannel.cpp +++ b/src/openrct2-ui/audio/AudioChannel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioContext.cpp b/src/openrct2-ui/audio/AudioContext.cpp index d436ae672e..17ad6e709f 100644 --- a/src/openrct2-ui/audio/AudioContext.cpp +++ b/src/openrct2-ui/audio/AudioContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioContext.h b/src/openrct2-ui/audio/AudioContext.h index 2febf3d346..8cb6e09206 100644 --- a/src/openrct2-ui/audio/AudioContext.h +++ b/src/openrct2-ui/audio/AudioContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioFormat.h b/src/openrct2-ui/audio/AudioFormat.h index 64868fe573..f96faea521 100644 --- a/src/openrct2-ui/audio/AudioFormat.h +++ b/src/openrct2-ui/audio/AudioFormat.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index 6606f10616..a9a99b7665 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioMixer.h b/src/openrct2-ui/audio/AudioMixer.h index 92dd2535a0..f89657a094 100644 --- a/src/openrct2-ui/audio/AudioMixer.h +++ b/src/openrct2-ui/audio/AudioMixer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/FlacAudioSource.cpp b/src/openrct2-ui/audio/FlacAudioSource.cpp index 757e9487ad..17a5665659 100644 --- a/src/openrct2-ui/audio/FlacAudioSource.cpp +++ b/src/openrct2-ui/audio/FlacAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/MemoryAudioSource.cpp b/src/openrct2-ui/audio/MemoryAudioSource.cpp index f6082b4708..696bd4293f 100644 --- a/src/openrct2-ui/audio/MemoryAudioSource.cpp +++ b/src/openrct2-ui/audio/MemoryAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/OggAudioSource.cpp b/src/openrct2-ui/audio/OggAudioSource.cpp index 803253fc2c..99f07f046f 100644 --- a/src/openrct2-ui/audio/OggAudioSource.cpp +++ b/src/openrct2-ui/audio/OggAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/SDLAudioSource.cpp b/src/openrct2-ui/audio/SDLAudioSource.cpp index 3a3cc1d0b6..340566d9a5 100644 --- a/src/openrct2-ui/audio/SDLAudioSource.cpp +++ b/src/openrct2-ui/audio/SDLAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/SDLAudioSource.h b/src/openrct2-ui/audio/SDLAudioSource.h index 37afb7d377..a5d966827a 100644 --- a/src/openrct2-ui/audio/SDLAudioSource.h +++ b/src/openrct2-ui/audio/SDLAudioSource.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/WavAudioSource.cpp b/src/openrct2-ui/audio/WavAudioSource.cpp index 8f7bae3ffc..a3ada6322f 100644 --- a/src/openrct2-ui/audio/WavAudioSource.cpp +++ b/src/openrct2-ui/audio/WavAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/BitmapReader.cpp b/src/openrct2-ui/drawing/BitmapReader.cpp index e3379f355c..6389a0d39f 100644 --- a/src/openrct2-ui/drawing/BitmapReader.cpp +++ b/src/openrct2-ui/drawing/BitmapReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/BitmapReader.h b/src/openrct2-ui/drawing/BitmapReader.h index 75ba243ad8..a161f9303d 100644 --- a/src/openrct2-ui/drawing/BitmapReader.h +++ b/src/openrct2-ui/drawing/BitmapReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp b/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp index 918785bbc0..a5fc205d79 100644 --- a/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp +++ b/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp index ad912b1331..6b0d7f4d8d 100644 --- a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/SoftwareDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/SoftwareDrawingEngine.cpp index 3776d8d9ca..385063c942 100644 --- a/src/openrct2-ui/drawing/engines/SoftwareDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/SoftwareDrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp index 5fa541f612..4663357757 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h index a05aea4219..4dd92dc049 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp index 0f35d335a8..14b9032439 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h index 430ed3903c..543abd2df5 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h b/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h index 14f280cf2e..be094f3fbe 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp index 06ebe29e16..07f2aa8ba5 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h index 0150b1ad7a..8074d322c5 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp index f473806d53..4de36de760 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h index bf4dd07668..aedfb14ede 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h b/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h index 6635185b3c..8fa8911a5f 100644 --- a/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h +++ b/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp index 31347ad169..3425675330 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h index 4c0302d555..7b3753d453 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h index b912855a5f..80a228904e 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index b1ef7ea3bd..4cebef18f1 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp index 0a4c6751ee..445c0613a1 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h index 11eac77ef8..d5d6813a71 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp index f30420086f..74a5db8141 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h index e03e56a117..167bcb75f5 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp index e143365714..86ebfbe548 100644 --- a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h index 7f3c150554..3bc3ae2248 100644 --- a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index 53dfab65f0..64a3b55ea7 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h index 608418b91a..9e3772a1fc 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp index a703f57961..57ac757506 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h index d43add764e..fdcac55476 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h +++ b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/InputManager.cpp b/src/openrct2-ui/input/InputManager.cpp index cf72683e55..c76d9ed364 100644 --- a/src/openrct2-ui/input/InputManager.cpp +++ b/src/openrct2-ui/input/InputManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -24,6 +24,7 @@ #include #include #include +#include using namespace OpenRCT2::Ui; @@ -209,8 +210,10 @@ void InputManager::Process(const InputEvent& e) if (e.DeviceKind == InputDeviceKind::Keyboard) { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // TODO: replace with event - auto w = WindowFindByClass(WindowClass::Textinput); + auto w = windowMgr->FindByClass(WindowClass::Textinput); if (w != nullptr) { if (e.State == InputEventState::Release) @@ -221,7 +224,7 @@ void InputManager::Process(const InputEvent& e) } // TODO: replace with event - w = WindowFindByClass(WindowClass::LoadsaveOverwritePrompt); + w = windowMgr->FindByClass(WindowClass::LoadsaveOverwritePrompt); if (w != nullptr) { if (e.State == InputEventState::Release) @@ -232,7 +235,7 @@ void InputManager::Process(const InputEvent& e) } // TODO: replace with event - w = WindowFindByClass(WindowClass::Loadsave); + w = windowMgr->FindByClass(WindowClass::Loadsave); if (w != nullptr) { if (e.State == InputEventState::Release) @@ -421,7 +424,8 @@ bool InputManager::HasTextInputFocus() const if (OpenRCT2::Ui::Windows::IsUsingWidgetTextBox() || gChatOpen) return true; - auto w = WindowFindByClass(WindowClass::Textinput); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::Textinput); if (w != nullptr) return true; diff --git a/src/openrct2-ui/input/InputManager.h b/src/openrct2-ui/input/InputManager.h index 4cd8fef1eb..93d23c3e82 100644 --- a/src/openrct2-ui/input/InputManager.h +++ b/src/openrct2-ui/input/InputManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index f4e4235bd4..c7c06bd2e1 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -30,11 +30,12 @@ #include #include #include -#include #include #include #include #include +#include +#include #include #include #include @@ -244,7 +245,8 @@ static void InputScrollDragContinue(const ScreenCoordsXY& screenCoords, WindowBa */ static void InputScrollRight(const ScreenCoordsXY& screenCoords, MouseState state) { - WindowBase* w = WindowFindByNumber(_dragWidget.window_classification, _dragWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(_dragWidget.window_classification, _dragWidget.window_number); if (w == nullptr) { ContextShowCursor(); @@ -283,9 +285,11 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState Widget* widget; WidgetIndex widgetIndex; + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // Get window and widget under cursor position - w = WindowFindFromPoint(screenCoords); - widgetIndex = w == nullptr ? -1 : WindowFindWidgetFromPoint(*w, screenCoords); + w = windowMgr->FindFromPoint(screenCoords); + widgetIndex = w == nullptr ? -1 : windowMgr->FindWidgetFromPoint(*w, screenCoords); widget = widgetIndex == -1 ? nullptr : &w->widgets[widgetIndex]; switch (_inputState) @@ -338,7 +342,7 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState InputStateWidgetPressed(screenCoords, state, widgetIndex, w, widget); break; case InputState::PositioningWindow: - w = WindowFindByNumber(_dragWidget.window_classification, _dragWidget.window_number); + w = windowMgr->FindByNumber(_dragWidget.window_classification, _dragWidget.window_number); if (w == nullptr) { _inputState = InputState::Reset; @@ -371,7 +375,7 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState InputStateWidgetPressed(screenCoords, state, widgetIndex, w, widget); break; case InputState::ViewportLeft: - w = WindowFindByNumber(_dragWidget.window_classification, _dragWidget.window_number); + w = windowMgr->FindByNumber(_dragWidget.window_classification, _dragWidget.window_number); if (w == nullptr) { _inputState = InputState::Reset; @@ -396,7 +400,7 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState break; } - w = WindowFindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); + w = windowMgr->FindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w == nullptr) { break; @@ -410,7 +414,8 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState { if ((_inputFlags & INPUT_FLAG_TOOL_ACTIVE)) { - w = WindowFindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); + w = windowMgr->FindByNumber( + gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w != nullptr) { w->OnToolUp(gCurrentToolWidget.widget_index, screenCoords); @@ -446,7 +451,7 @@ static void GameHandleInputMouse(const ScreenCoordsXY& screenCoords, MouseState } break; case InputState::Resizing: - w = WindowFindByNumber(_dragWidget.window_classification, _dragWidget.window_number); + w = windowMgr->FindByNumber(_dragWidget.window_classification, _dragWidget.window_number); if (w == nullptr) { _inputState = InputState::Reset; @@ -560,7 +565,8 @@ static void InputViewportDragContinue() if (differentialCoords.x == 0 && differentialCoords.y == 0) return; - w = WindowFindByNumber(_dragWidget.window_classification, _dragWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByNumber(_dragWidget.window_classification, _dragWidget.window_number); // #3294: Window can be closed during a drag session, so just finish // the session if the window no longer exists @@ -772,7 +778,8 @@ static void InputScrollPartUpdateHThumb(WindowBase& w, WidgetIndex widgetIndex, const auto& widget = w.widgets[widgetIndex]; auto& scroll = w.scrolls[scroll_id]; - if (WindowFindByNumber(w.classification, w.number) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { int32_t newLeft; newLeft = scroll.contentWidth; @@ -811,7 +818,8 @@ static void InputScrollPartUpdateVThumb(WindowBase& w, WidgetIndex widgetIndex, const auto& widget = w.widgets[widgetIndex]; auto& scroll = w.scrolls[scroll_id]; - if (WindowFindByNumber(w.classification, w.number) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { int32_t newTop; newTop = scroll.contentHeight; @@ -847,7 +855,8 @@ static void InputScrollPartUpdateVThumb(WindowBase& w, WidgetIndex widgetIndex, */ static void InputScrollPartUpdateHLeft(WindowBase& w, WidgetIndex widgetIndex, int32_t scroll_id) { - if (WindowFindByNumber(w.classification, w.number) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { auto& scroll = w.scrolls[scroll_id]; scroll.flags |= HSCROLLBAR_LEFT_PRESSED; @@ -865,7 +874,9 @@ static void InputScrollPartUpdateHLeft(WindowBase& w, WidgetIndex widgetIndex, i static void InputScrollPartUpdateHRight(WindowBase& w, WidgetIndex widgetIndex, int32_t scroll_id) { const auto& widget = w.widgets[widgetIndex]; - if (WindowFindByNumber(w.classification, w.number) != nullptr) + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { auto& scroll = w.scrolls[scroll_id]; scroll.flags |= HSCROLLBAR_RIGHT_PRESSED; @@ -890,7 +901,8 @@ static void InputScrollPartUpdateHRight(WindowBase& w, WidgetIndex widgetIndex, */ static void InputScrollPartUpdateVTop(WindowBase& w, WidgetIndex widgetIndex, int32_t scroll_id) { - if (WindowFindByNumber(w.classification, w.number) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { auto& scroll = w.scrolls[scroll_id]; scroll.flags |= VSCROLLBAR_UP_PRESSED; @@ -908,7 +920,9 @@ static void InputScrollPartUpdateVTop(WindowBase& w, WidgetIndex widgetIndex, in static void InputScrollPartUpdateVBottom(WindowBase& w, WidgetIndex widgetIndex, int32_t scroll_id) { const auto& widget = w.widgets[widgetIndex]; - if (WindowFindByNumber(w.classification, w.number) != nullptr) + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(w.classification, w.number) != nullptr) { auto& scroll = w.scrolls[scroll_id]; scroll.flags |= VSCROLLBAR_DOWN_PRESSED; @@ -1004,7 +1018,8 @@ static void InputWidgetOverChangeCheck(WindowClass windowClass, rct_windownumber */ static void InputWidgetOverFlatbuttonInvalidate() { - WindowBase* w = WindowFindByNumber(gHoverWidget.window_classification, gHoverWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(gHoverWidget.window_classification, gHoverWidget.window_number); if (w != nullptr) { w->OnPrepareDraw(); @@ -1034,7 +1049,8 @@ static void InputWidgetLeft(const ScreenCoordsXY& screenCoords, WindowBase* w, W WindowCloseByClass(WindowClass::Tooltip); // Window might have changed position in the list, therefore find it again - w = WindowFindByNumber(windowClass, windowNumber); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByNumber(windowClass, windowNumber); if (w == nullptr) return; @@ -1065,7 +1081,7 @@ static void InputWidgetLeft(const ScreenCoordsXY& screenCoords, WindowBase* w, W _dragWidget.window_number = windowNumber; if (_inputFlags & INPUT_FLAG_TOOL_ACTIVE) { - w = WindowFindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); + w = windowMgr->FindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w != nullptr) { InputSetFlag(INPUT_FLAG_4, true); @@ -1126,17 +1142,17 @@ static void InputWidgetLeft(const ScreenCoordsXY& screenCoords, WindowBase* w, W */ void ProcessMouseOver(const ScreenCoordsXY& screenCoords) { - WindowBase* window; - CursorID cursorId = CursorID::Arrow; auto ft = Formatter(); ft.Add(STR_NONE); SetMapTooltip(ft); - window = WindowFindFromPoint(screenCoords); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); if (window != nullptr) { - WidgetIndex widgetId = WindowFindWidgetFromPoint(*window, screenCoords); + WidgetIndex widgetId = windowMgr->FindWidgetFromPoint(*window, screenCoords); if (widgetId != -1) { switch (window->widgets[widgetId].type) @@ -1209,7 +1225,8 @@ void ProcessMouseTool(const ScreenCoordsXY& screenCoords) { if (_inputFlags & INPUT_FLAG_TOOL_ACTIVE) { - WindowBase* w = WindowFindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w == nullptr) ToolCancel(); @@ -1290,7 +1307,8 @@ void InputStateWidgetPressed( cursor_w_number = gPressedWidget.window_number; WidgetIndex cursor_widgetIndex = gPressedWidget.widget_index; - WindowBase* cursor_w = WindowFindByNumber(cursor_w_class, cursor_w_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* cursor_w = windowMgr->FindByNumber(cursor_w_class, cursor_w_number); if (cursor_w == nullptr) { _inputState = InputState::Reset; @@ -1411,11 +1429,11 @@ void InputStateWidgetPressed( if (dropdownCleanup) { // Update w as it will be invalid after closing the dropdown window - w = WindowFindByNumber(wClass, wNumber); + w = windowMgr->FindByNumber(wClass, wNumber); } else { - cursor_w = WindowFindByNumber(cursor_w_class, cursor_w_number); + cursor_w = windowMgr->FindByNumber(cursor_w_class, cursor_w_number); if (_inputFlags & INPUT_FLAG_WIDGET_PRESSED) { _inputFlags &= ~INPUT_FLAG_WIDGET_PRESSED; @@ -1595,7 +1613,8 @@ void SetCursor(CursorID cursor_id) */ void InvalidateScroll() { - WindowBase* w = WindowFindByNumber(gPressedWidget.window_classification, gPressedWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(gPressedWidget.window_classification, gPressedWidget.window_number); if (w != nullptr) { // Reset to basic scroll diff --git a/src/openrct2-ui/input/MouseInput.h b/src/openrct2-ui/input/MouseInput.h index 9747f262d6..14bfda2f66 100644 --- a/src/openrct2-ui/input/MouseInput.h +++ b/src/openrct2-ui/input/MouseInput.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutIds.h b/src/openrct2-ui/input/ShortcutIds.h index a8e5dad0a6..f81169e644 100644 --- a/src/openrct2-ui/input/ShortcutIds.h +++ b/src/openrct2-ui/input/ShortcutIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutInput.cpp b/src/openrct2-ui/input/ShortcutInput.cpp index d61e6c4720..21b8906aff 100644 --- a/src/openrct2-ui/input/ShortcutInput.cpp +++ b/src/openrct2-ui/input/ShortcutInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutManager.cpp b/src/openrct2-ui/input/ShortcutManager.cpp index a24f6853ca..99562b707c 100644 --- a/src/openrct2-ui/input/ShortcutManager.cpp +++ b/src/openrct2-ui/input/ShortcutManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutManager.h b/src/openrct2-ui/input/ShortcutManager.h index b2c4d73a9f..52066f4c96 100644 --- a/src/openrct2-ui/input/ShortcutManager.h +++ b/src/openrct2-ui/input/ShortcutManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/Shortcuts.cpp b/src/openrct2-ui/input/Shortcuts.cpp index 557ab55545..136e2dac9a 100644 --- a/src/openrct2-ui/input/Shortcuts.cpp +++ b/src/openrct2-ui/input/Shortcuts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include #include #include @@ -87,8 +89,10 @@ static void ShortcutRotateConstructionObject() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // Rotate scenery - WindowBase* w = WindowFindByClass(WindowClass::Scenery); + WindowBase* w = windowMgr->FindByClass(WindowClass::Scenery); if (w != nullptr && !WidgetIsDisabled(*w, WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON) && w->widgets[WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON].type != WindowWidgetType::Empty) { @@ -97,7 +101,7 @@ static void ShortcutRotateConstructionObject() } // Rotate construction track piece - w = WindowFindByClass(WindowClass::RideConstruction); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && !WidgetIsDisabled(*w, WC_RIDE_CONSTRUCTION__WIDX_ROTATE) && w->widgets[WC_RIDE_CONSTRUCTION__WIDX_ROTATE].type != WindowWidgetType::Empty) { @@ -110,7 +114,7 @@ static void ShortcutRotateConstructionObject() } // Rotate track design preview - w = WindowFindByClass(WindowClass::TrackDesignList); + w = windowMgr->FindByClass(WindowClass::TrackDesignList); if (w != nullptr && !WidgetIsDisabled(*w, WC_TRACK_DESIGN_LIST__WIDX_ROTATE) && w->widgets[WC_TRACK_DESIGN_LIST__WIDX_ROTATE].type != WindowWidgetType::Empty) { @@ -119,7 +123,7 @@ static void ShortcutRotateConstructionObject() } // Rotate track design placement - w = WindowFindByClass(WindowClass::TrackDesignPlace); + w = windowMgr->FindByClass(WindowClass::TrackDesignPlace); if (w != nullptr && !WidgetIsDisabled(*w, WC_TRACK_DESIGN_PLACE__WIDX_ROTATE) && w->widgets[WC_TRACK_DESIGN_PLACE__WIDX_ROTATE].type != WindowWidgetType::Empty) { @@ -128,7 +132,7 @@ static void ShortcutRotateConstructionObject() } // Rotate park entrance - w = WindowFindByClass(WindowClass::EditorParkEntrance); + w = windowMgr->FindByClass(WindowClass::EditorParkEntrance); if (w != nullptr && !WidgetIsDisabled(*w, WC_EDITOR_PARK_ENTRANCE__WIDX_ROTATE_ENTRANCE_BUTTON) && w->widgets[WC_EDITOR_PARK_ENTRANCE__WIDX_ROTATE_ENTRANCE_BUTTON].type != WindowWidgetType::Empty) { @@ -137,7 +141,7 @@ static void ShortcutRotateConstructionObject() } // Rotate selected element in tile inspector - w = WindowFindByClass(WindowClass::TileInspector); + w = windowMgr->FindByClass(WindowClass::TileInspector); if (w != nullptr && !WidgetIsDisabled(*w, WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE) && w->widgets[WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE].type != WindowWidgetType::Empty) { @@ -148,9 +152,11 @@ static void ShortcutRotateConstructionObject() static void ShortcutRemoveTopBottomToolbarToggle() { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) { - if (WindowFindByClass(WindowClass::TitleLogo) != nullptr) + if (windowMgr->FindByClass(WindowClass::TitleLogo) != nullptr) { WindowCloseByClass(WindowClass::TitleLogo); WindowCloseByClass(WindowClass::TitleOptions); @@ -165,7 +171,7 @@ static void ShortcutRemoveTopBottomToolbarToggle() } else { - if (WindowFindByClass(WindowClass::TopToolbar) != nullptr) + if (windowMgr->FindByClass(WindowClass::TopToolbar) != nullptr) { WindowCloseByClass(WindowClass::Dropdown); WindowCloseByClass(WindowClass::TopToolbar); @@ -366,7 +372,8 @@ static void ShortcutOpenCheatWindow() return; // Check if window is already open - WindowBase* window = WindowFindByClass(WindowClass::Cheats); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Cheats); if (window != nullptr) { WindowClose(*window); @@ -434,11 +441,12 @@ static void ShortcutOpenSceneryPicker() || (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR && GetGameState().EditorStep != EditorStep::LandscapeEditor)) return; - WindowBase* window_scenery = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window_scenery = windowMgr->FindByClass(WindowClass::Scenery); if (window_scenery == nullptr) ToggleSceneryWindow(); - window_scenery = WindowFindByClass(WindowClass::Scenery); + window_scenery = windowMgr->FindByClass(WindowClass::Scenery); if (window_scenery != nullptr && !WidgetIsDisabled(*window_scenery, WC_SCENERY__WIDX_SCENERY_EYEDROPPER_BUTTON) && !gWindowSceneryEyedropperEnabled) { @@ -469,7 +477,8 @@ static void ShortcutScaleDown() // Tile inspector shortcuts static void TileInspectorMouseUp(WidgetIndex widgetIndex) { - auto w = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::TileInspector); if (w != nullptr && !WidgetIsDisabled(*w, widgetIndex) && w->widgets[widgetIndex].type != WindowWidgetType::Empty) { w->OnMouseUp(widgetIndex); @@ -478,7 +487,8 @@ static void TileInspectorMouseUp(WidgetIndex widgetIndex) static void TileInspectorMouseDown(WidgetIndex widgetIndex) { - auto w = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::TileInspector); if (w != nullptr && !WidgetIsDisabled(*w, widgetIndex) && w->widgets[widgetIndex].type != WindowWidgetType::Empty) { w->OnMouseDown(widgetIndex); @@ -487,7 +497,8 @@ static void TileInspectorMouseDown(WidgetIndex widgetIndex) static void ShortcutToggleWallSlope() { - WindowBase* window = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::TileInspector); if (window == nullptr) { return; @@ -518,7 +529,8 @@ static void ShortcutToggleWallSlope() static void ShortcutIncreaseElementHeight() { - WindowBase* w = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::TileInspector); if (w != nullptr) { int action = -1; @@ -557,7 +569,8 @@ static void ShortcutIncreaseElementHeight() static void ShortcutDecreaseElementHeight() { - WindowBase* w = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::TileInspector); if (w != nullptr) { int action = -1; @@ -620,7 +633,8 @@ static void ShortcutConstructionTurnLeft() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutTurnLeft(); @@ -635,7 +649,9 @@ static void ShortcutConstructionTurnRight() { if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutTurnRight(); @@ -651,7 +667,8 @@ static void ShortcutConstructionSlopeUp() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutSlopeUp(); @@ -667,7 +684,8 @@ static void ShortcutConstructionBuildCurrent() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutBuildCurrent(); @@ -683,7 +701,8 @@ static void ShortcutConstructionSlopeDown() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutSlopeDown(); @@ -699,7 +718,8 @@ static void ShortcutConstructionDemolishCurrent() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return; - WindowBase* window = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindByClass(WindowClass::Footpath); if (window != nullptr) { WindowFootpathKeyboardShortcutDemolishCurrent(); @@ -743,7 +763,8 @@ void ShortcutManager::RegisterDefaultShortcuts() RegisterShortcut(ShortcutId::kInterfaceCancelConstruction, STR_SHORTCUT_CANCEL_CONSTRUCTION_MODE, "ESCAPE", []() { if (!(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)) { - auto window = WindowFindByClass(WindowClass::Error); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = windowMgr->FindByClass(WindowClass::Error); if (window != nullptr) { WindowClose(*window); @@ -879,7 +900,8 @@ void ShortcutManager::RegisterDefaultShortcuts() RegisterShortcut(ShortcutId::kDebugTogglePaintDebugWindow, STR_SHORTCUT_DEBUG_PAINT_TOGGLE, []() { if (!(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)) { - auto window = WindowFindByClass(WindowClass::DebugPaint); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = windowMgr->FindByClass(WindowClass::DebugPaint); if (window != nullptr) { WindowClose(*window); diff --git a/src/openrct2-ui/interface/Dropdown.h b/src/openrct2-ui/interface/Dropdown.h index 334b094d2a..d80f3f7c16 100644 --- a/src/openrct2-ui/interface/Dropdown.h +++ b/src/openrct2-ui/interface/Dropdown.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Graph.cpp b/src/openrct2-ui/interface/Graph.cpp index cc9bccd768..bce4f7000d 100644 --- a/src/openrct2-ui/interface/Graph.cpp +++ b/src/openrct2-ui/interface/Graph.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Graph.h b/src/openrct2-ui/interface/Graph.h index 8a41ba7817..35c09cda7d 100644 --- a/src/openrct2-ui/interface/Graph.h +++ b/src/openrct2-ui/interface/Graph.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/InGameConsole.cpp b/src/openrct2-ui/interface/InGameConsole.cpp index bcfa4a50ed..470bf79a27 100644 --- a/src/openrct2-ui/interface/InGameConsole.cpp +++ b/src/openrct2-ui/interface/InGameConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/InGameConsole.h b/src/openrct2-ui/interface/InGameConsole.h index 1a89fd4f05..31497b9a6c 100644 --- a/src/openrct2-ui/interface/InGameConsole.h +++ b/src/openrct2-ui/interface/InGameConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/LandTool.cpp b/src/openrct2-ui/interface/LandTool.cpp index aceeedf02d..661168ebbb 100644 --- a/src/openrct2-ui/interface/LandTool.cpp +++ b/src/openrct2-ui/interface/LandTool.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/LandTool.h b/src/openrct2-ui/interface/LandTool.h index 552e3cb28c..936667197b 100644 --- a/src/openrct2-ui/interface/LandTool.h +++ b/src/openrct2-ui/interface/LandTool.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Objective.cpp b/src/openrct2-ui/interface/Objective.cpp index 7850707fe0..702fea5992 100644 --- a/src/openrct2-ui/interface/Objective.cpp +++ b/src/openrct2-ui/interface/Objective.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Objective.h b/src/openrct2-ui/interface/Objective.h index 495d36f3ca..f22663d8ce 100644 --- a/src/openrct2-ui/interface/Objective.h +++ b/src/openrct2-ui/interface/Objective.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Theme.cpp b/src/openrct2-ui/interface/Theme.cpp index 72fc8950c5..28dd7d7328 100644 --- a/src/openrct2-ui/interface/Theme.cpp +++ b/src/openrct2-ui/interface/Theme.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Theme.h b/src/openrct2-ui/interface/Theme.h index 45fb6da141..e504e71412 100644 --- a/src/openrct2-ui/interface/Theme.h +++ b/src/openrct2-ui/interface/Theme.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Viewport.h b/src/openrct2-ui/interface/Viewport.h index ee14b7bff8..fe5029b0fe 100644 --- a/src/openrct2-ui/interface/Viewport.h +++ b/src/openrct2-ui/interface/Viewport.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index 54015cd4b3..d8475d5f79 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -45,6 +45,8 @@ #include #include #include +#include +#include #include #include #include @@ -467,8 +469,9 @@ namespace OpenRCT2::Ui if (!(InputTestFlag(INPUT_FLAG_6)) || !(InputTestFlag(INPUT_FLAG_TOOL_ACTIVE))) { - if (WindowFindByClass(WindowClass::RideConstruction) == nullptr - && WindowFindByClass(WindowClass::Footpath) == nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::RideConstruction) == nullptr + && windowMgr->FindByClass(WindowClass::Footpath) == nullptr) { info.interactionType = ViewportInteractionItem::None; return info; @@ -634,7 +637,8 @@ namespace OpenRCT2::Ui */ static void ViewportInteractionRemoveFootpath(const PathElement& pathElement, const CoordsXY& mapCoords) { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) FootpathUpdateProvisional(); @@ -761,7 +765,8 @@ namespace OpenRCT2::Ui static Peep* ViewportInteractionGetClosestPeep(ScreenCoordsXY screenCoords, int32_t maxDistance) { - auto* w = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindFromPoint(screenCoords); if (w == nullptr) return nullptr; @@ -785,7 +790,8 @@ namespace OpenRCT2::Ui */ CoordsXY ViewportInteractionGetTileStartAtCursor(const ScreenCoordsXY& screenCoords) { - WindowBase* window = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); if (window == nullptr || window->viewport == nullptr) { CoordsXY ret{}; diff --git a/src/openrct2-ui/interface/ViewportInteraction.h b/src/openrct2-ui/interface/ViewportInteraction.h index 755da6706a..c060011a61 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.h +++ b/src/openrct2-ui/interface/ViewportInteraction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportQuery.cpp b/src/openrct2-ui/interface/ViewportQuery.cpp index 679b569c85..3b485c43df 100644 --- a/src/openrct2-ui/interface/ViewportQuery.cpp +++ b/src/openrct2-ui/interface/ViewportQuery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,7 +12,10 @@ #include "Window.h" #include +#include #include +#include +#include #include #include #include @@ -36,7 +39,8 @@ namespace OpenRCT2::Ui */ CoordsXY FootpathGetCoordinatesFromPos(const ScreenCoordsXY& screenCoords, int32_t* direction, TileElement** tileElement) { - WindowBase* window = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); if (window == nullptr || window->viewport == nullptr) { CoordsXY position{}; @@ -134,7 +138,8 @@ namespace OpenRCT2::Ui CoordsXY FootpathBridgeGetInfoFromPos(const ScreenCoordsXY& screenCoords, int32_t* direction, TileElement** tileElement) { // First check if we point at an entrance or exit. In that case, we would want the path coming from the entrance/exit. - WindowBase* window = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); if (window == nullptr || window->viewport == nullptr) { CoordsXY ret{}; diff --git a/src/openrct2-ui/interface/ViewportQuery.h b/src/openrct2-ui/interface/ViewportQuery.h index cba9eb2d61..8559cbb9d8 100644 --- a/src/openrct2-ui/interface/ViewportQuery.h +++ b/src/openrct2-ui/interface/ViewportQuery.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 7d195a37e8..240b482fd6 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Widget.h b/src/openrct2-ui/interface/Widget.h index 8f1d82ab9e..8a085ffae5 100644 --- a/src/openrct2-ui/interface/Widget.h +++ b/src/openrct2-ui/interface/Widget.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index 35ce40407a..51a81ae9f6 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -29,6 +29,7 @@ #include #include #include +#include #include using namespace OpenRCT2; @@ -436,7 +437,8 @@ void WindowAllWheelInput() // Check window cursor is over if (!(InputTestFlag(INPUT_FLAG_5))) { - WindowBase* w = WindowFindFromPoint(cursorState->position); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindFromPoint(cursorState->position); if (w != nullptr) { // Check if main window @@ -447,7 +449,7 @@ void WindowAllWheelInput() } // Check scroll view, cursor is over - WidgetIndex widgetIndex = WindowFindWidgetFromPoint(*w, cursorState->position); + WidgetIndex widgetIndex = windowMgr->FindWidgetFromPoint(*w, cursorState->position); if (widgetIndex != -1) { const auto& widget = w->widgets[widgetIndex]; @@ -867,7 +869,8 @@ namespace OpenRCT2::Ui::Windows { if (_usingWidgetTextBox) { - WindowBase* w = WindowFindByNumber(_currentTextBox.window.classification, _currentTextBox.window.number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(_currentTextBox.window.classification, _currentTextBox.window.number); _currentTextBox.window.classification = WindowClass::Null; _currentTextBox.window.number = 0; ContextStopTextInput(); @@ -892,7 +895,8 @@ namespace OpenRCT2::Ui::Windows if (_usingWidgetTextBox) { _textBoxFrameNo = 0; - WindowBase* w = WindowFindByNumber(_currentTextBox.window.classification, _currentTextBox.window.number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(_currentTextBox.window.classification, _currentTextBox.window.number); WidgetInvalidate(*w, _currentTextBox.widget_index); w->OnTextInput(_currentTextBox.widget_index, _textBoxInput); } diff --git a/src/openrct2-ui/interface/Window.h b/src/openrct2-ui/interface/Window.h index 47124a7409..6b2000da8c 100644 --- a/src/openrct2-ui/interface/Window.h +++ b/src/openrct2-ui/interface/Window.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index 35d3417c4a..caf313fa01 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ride/Construction.h b/src/openrct2-ui/ride/Construction.h index 753189588d..14a732369c 100644 --- a/src/openrct2-ui/ride/Construction.h +++ b/src/openrct2-ui/ride/Construction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ride/VehicleSounds.cpp b/src/openrct2-ui/ride/VehicleSounds.cpp index 477e7e0a62..6e5ec4a89a 100644 --- a/src/openrct2-ui/ride/VehicleSounds.cpp +++ b/src/openrct2-ui/ride/VehicleSounds.cpp @@ -469,7 +469,7 @@ namespace OpenRCT2::Audio volume = volume / 8; volume = std::max(volume - 0x1FFF, -10000); - if (sound.Channel != nullptr && sound.Channel->IsDone()) + if (sound.Channel != nullptr && sound.Channel->IsDone() && IsLoopingSound(sound.Id)) { sound.Id = SoundId::Null; sound.Channel = nullptr; diff --git a/src/openrct2-ui/scripting/CustomImages.cpp b/src/openrct2-ui/scripting/CustomImages.cpp index 3e06b01f1c..d66456854f 100644 --- a/src/openrct2-ui/scripting/CustomImages.cpp +++ b/src/openrct2-ui/scripting/CustomImages.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomImages.h b/src/openrct2-ui/scripting/CustomImages.h index 1e9ed79cc6..a2cb2a5ca3 100644 --- a/src/openrct2-ui/scripting/CustomImages.h +++ b/src/openrct2-ui/scripting/CustomImages.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index 99839ff38f..1e66098e52 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomListView.h b/src/openrct2-ui/scripting/CustomListView.h index 8eca117a46..b28a7fa13f 100644 --- a/src/openrct2-ui/scripting/CustomListView.h +++ b/src/openrct2-ui/scripting/CustomListView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomMenu.cpp b/src/openrct2-ui/scripting/CustomMenu.cpp index ad73c492d5..cb2756ebc1 100644 --- a/src/openrct2-ui/scripting/CustomMenu.cpp +++ b/src/openrct2-ui/scripting/CustomMenu.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,6 +16,8 @@ #include #include #include + #include + #include #include using namespace OpenRCT2; @@ -266,7 +268,8 @@ namespace OpenRCT2::Scripting customTool.onUp = dukValue["onUp"]; customTool.onFinish = dukValue["onFinish"]; - auto toolbarWindow = WindowFindByClass(WindowClass::TopToolbar); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto toolbarWindow = windowMgr->FindByClass(WindowClass::TopToolbar); if (toolbarWindow != nullptr) { // Use a widget that does not exist on top toolbar but also make sure it isn't -1 as that diff --git a/src/openrct2-ui/scripting/CustomMenu.h b/src/openrct2-ui/scripting/CustomMenu.h index 6ac95b55f2..4263fc2e37 100644 --- a/src/openrct2-ui/scripting/CustomMenu.h +++ b/src/openrct2-ui/scripting/CustomMenu.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index e116e54661..c61a1ba233 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -1097,7 +1097,8 @@ namespace OpenRCT2::Ui::Windows static rct_windownumber GetNewWindowNumber() { auto result = _nextWindowNumber++; - while (WindowFindByNumber(WindowClass::Custom, result) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + while (windowMgr->FindByNumber(WindowClass::Custom, result) != nullptr) { result++; } diff --git a/src/openrct2-ui/scripting/CustomWindow.h b/src/openrct2-ui/scripting/CustomWindow.h index 17fe8de3f7..ce755e7191 100644 --- a/src/openrct2-ui/scripting/CustomWindow.h +++ b/src/openrct2-ui/scripting/CustomWindow.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index 98ba930e22..9759ef396a 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScImageManager.hpp b/src/openrct2-ui/scripting/ScImageManager.hpp index c6cdf9e75f..2ab3c10909 100644 --- a/src/openrct2-ui/scripting/ScImageManager.hpp +++ b/src/openrct2-ui/scripting/ScImageManager.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScTileSelection.hpp b/src/openrct2-ui/scripting/ScTileSelection.hpp index e19920979f..47d89f2419 100644 --- a/src/openrct2-ui/scripting/ScTileSelection.hpp +++ b/src/openrct2-ui/scripting/ScTileSelection.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScTitleSequence.hpp b/src/openrct2-ui/scripting/ScTitleSequence.hpp index f6cdf9715d..ec250d9691 100644 --- a/src/openrct2-ui/scripting/ScTitleSequence.hpp +++ b/src/openrct2-ui/scripting/ScTitleSequence.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScUi.hpp b/src/openrct2-ui/scripting/ScUi.hpp index 140a5ca658..1b9503021e 100644 --- a/src/openrct2-ui/scripting/ScUi.hpp +++ b/src/openrct2-ui/scripting/ScUi.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScViewport.hpp b/src/openrct2-ui/scripting/ScViewport.hpp index 49410bcc9d..0f81cccc01 100644 --- a/src/openrct2-ui/scripting/ScViewport.hpp +++ b/src/openrct2-ui/scripting/ScViewport.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -18,6 +18,8 @@ #include #include #include + #include + #include #include namespace OpenRCT2::Scripting @@ -251,7 +253,8 @@ namespace OpenRCT2::Scripting if (_class == WindowClass::MainWindow) return WindowGetMain(); - return WindowFindByNumber(_class, _number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + return windowMgr->FindByNumber(_class, _number); } Viewport* GetViewport() const diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index 7324a435b1..4f9ec52734 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -22,6 +22,8 @@ #include #include #include + #include + #include namespace OpenRCT2::Scripting { @@ -393,7 +395,8 @@ namespace OpenRCT2::Scripting if (_class == WindowClass::MainWindow) return WindowGetMain(); - return WindowFindByNumber(_class, _number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + return windowMgr->FindByNumber(_class, _number); } Widget* GetWidget() const diff --git a/src/openrct2-ui/scripting/ScWindow.hpp b/src/openrct2-ui/scripting/ScWindow.hpp index b07da7d872..fee0966ba1 100644 --- a/src/openrct2-ui/scripting/ScWindow.hpp +++ b/src/openrct2-ui/scripting/ScWindow.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -362,7 +362,8 @@ namespace OpenRCT2::Scripting private: WindowBase* GetWindow() const { - return WindowFindByNumber(_class, _number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + return windowMgr->FindByNumber(_class, _number); } }; } // namespace OpenRCT2::Scripting diff --git a/src/openrct2-ui/scripting/UiExtensions.cpp b/src/openrct2-ui/scripting/UiExtensions.cpp index eb8a963f6c..ff2210ce8e 100644 --- a/src/openrct2-ui/scripting/UiExtensions.cpp +++ b/src/openrct2-ui/scripting/UiExtensions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/UiExtensions.h b/src/openrct2-ui/scripting/UiExtensions.h index e7a294b710..fca8c95b93 100644 --- a/src/openrct2-ui/scripting/UiExtensions.h +++ b/src/openrct2-ui/scripting/UiExtensions.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index c04507486d..9ffe187727 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/title/TitleSequencePlayer.h b/src/openrct2-ui/title/TitleSequencePlayer.h index 9fd78f70e8..d751a899ab 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.h +++ b/src/openrct2-ui/title/TitleSequencePlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/About.cpp b/src/openrct2-ui/windows/About.cpp index 51be677fa2..94996f277c 100644 --- a/src/openrct2-ui/windows/About.cpp +++ b/src/openrct2-ui/windows/About.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/AssetPacks.cpp b/src/openrct2-ui/windows/AssetPacks.cpp index 01029985c8..622a80f3f3 100644 --- a/src/openrct2-ui/windows/AssetPacks.cpp +++ b/src/openrct2-ui/windows/AssetPacks.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 7a5d104a00..e94402770e 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index 0ae5909930..7de4e4703e 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index c12d6af564..91773863e4 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 785957fca0..07340aa792 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include @@ -341,13 +343,16 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_BACKGROUND: - if (WindowFindByClass(WindowClass::Error) == nullptr && (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) + { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::Error) == nullptr && (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) { auto action = GetClearAction(); GameActions::Execute(&action); gCurrentToolId = Tool::Bulldozer; } break; + } } } diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 5744f37775..8392d986fc 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/DebugPaint.cpp b/src/openrct2-ui/windows/DebugPaint.cpp index 92b64dac6a..50bdd1a302 100644 --- a/src/openrct2-ui/windows/DebugPaint.cpp +++ b/src/openrct2-ui/windows/DebugPaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/DemolishRidePrompt.cpp b/src/openrct2-ui/windows/DemolishRidePrompt.cpp index 406504cbd0..2a5691fe19 100644 --- a/src/openrct2-ui/windows/DemolishRidePrompt.cpp +++ b/src/openrct2-ui/windows/DemolishRidePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -15,6 +15,8 @@ #include #include #include +#include +#include #include #include @@ -105,7 +107,8 @@ namespace OpenRCT2::Ui::Windows WindowBase* w; DemolishRidePromptWindow* newWindow; - w = WindowFindByClass(WindowClass::DemolishRidePrompt); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByClass(WindowClass::DemolishRidePrompt); if (w != nullptr) { auto windowPos = w->windowPos; diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index a84039951d..34a87d4819 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index c157a50e8d..3d66604bf8 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index c466fc1fc3..ca76110308 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,8 @@ #include #include #include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -489,7 +492,9 @@ namespace OpenRCT2::Ui::Windows if (windowPos.x <= screenCoords.x && windowPos.y < screenCoords.y && windowPos.x + width > screenCoords.x && windowPos.y + height > screenCoords.y) { - WidgetIndex widgetIndex = WindowFindWidgetFromPoint(*this, screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WidgetIndex widgetIndex = windowMgr->FindWidgetFromPoint(*this, screenCoords); + auto& widget = widgets[widgetIndex]; if (widgetIndex == WIDX_PRE_RESEARCHED_SCROLL || widgetIndex == WIDX_RESEARCH_ORDER_SCROLL) { @@ -612,7 +617,9 @@ namespace OpenRCT2::Ui::Windows CursorID OnCursor(const WidgetIndex widx, const ScreenCoordsXY& screenCoords, const CursorID defaultCursor) override { - auto* inventionListWindow = static_cast(WindowFindByClass(WindowClass::EditorInventionList)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* inventionListWindow = static_cast( + windowMgr->FindByClass(WindowClass::EditorInventionList)); if (inventionListWindow != nullptr) { auto res = inventionListWindow->GetResearchItemAt(screenCoords); @@ -629,7 +636,9 @@ namespace OpenRCT2::Ui::Windows void OnMoved(const ScreenCoordsXY& screenCoords) override { - auto* inventionListWindow = static_cast(WindowFindByClass(WindowClass::EditorInventionList)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* inventionListWindow = static_cast( + windowMgr->FindByClass(WindowClass::EditorInventionList)); if (inventionListWindow == nullptr) { Close(); @@ -695,7 +704,8 @@ namespace OpenRCT2::Ui::Windows static const ResearchItem* WindowEditorInventionsListDragGetItem() { - auto* wnd = static_cast(WindowFindByClass(WindowClass::EditorInventionListDrag)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* wnd = static_cast(windowMgr->FindByClass(WindowClass::EditorInventionListDrag)); if (wnd == nullptr) { return nullptr; diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index c6f70a5047..4c19602a2f 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -38,6 +39,8 @@ #include #include #include +#include +#include #include #include #include @@ -176,6 +179,11 @@ namespace OpenRCT2::Ui::Windows { STR_OBJECT_SELECTION_WATER, ObjectType::Water, FILTER_NONE, SPR_TAB_WATER, 1, 1 }, }; + static ObjectSubTab kPeepObjectSubTabs[] = { + { STR_OBJECT_SELECTION_PEEP_ANIMATIONS, ObjectType::PeepAnimations, FILTER_NONE, SPR_G2_PEEP_ANIMATIONS, 1, 1 }, + { STR_OBJECT_SELECTION_PEEP_NAMES, ObjectType::PeepNames, FILTER_NONE, SPR_TAB_GUESTS_0, 1, 1 }, + }; + static constexpr ObjectPageDesc ObjectSelectionPages[] = { { STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, ObjectType::Ride, SPR_TAB_RIDE_16, kRideObjectSubTabs }, { STR_OBJECT_SELECTION_SCENERY_GROUPS, ObjectType::SceneryGroup, SPR_TAB_SCENERY_STATUES, kSceneryObjectSubTabs }, @@ -183,7 +191,7 @@ namespace OpenRCT2::Ui::Windows { STR_OBJECT_SELECTION_PARK_ENTRANCE, ObjectType::ParkEntrance, SPR_TAB_PARK, kEntrancesObjectSubTabs }, { STR_OBJECT_SELECTION_TERRAIN_SURFACES, ObjectType::TerrainSurface, SPR_G2_TAB_LAND, kTerrainObjectSubTabs }, { STR_OBJECT_SELECTION_MUSIC, ObjectType::Music, SPR_TAB_MUSIC_0, {} }, - { STR_OBJECT_SELECTION_PEEP_NAMES, ObjectType::PeepNames, SPR_TAB_GUESTS_0, {} }, + { STR_OBJECT_SELECTION_PEEP_NAMES, ObjectType::PeepNames, SPR_TAB_GUESTS_0, kPeepObjectSubTabs }, }; // clang-format on @@ -226,7 +234,7 @@ namespace OpenRCT2::Ui::Windows MakeWidget ({ 0, 43}, {WW, 357}, WindowWidgetType::Resize, WindowColour::Secondary ), MakeWidget ({ 4, 60}, {288, 277}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_VERTICAL ), MakeWidget ({391, 45}, {114, 114}, WindowWidgetType::FlatBtn, WindowColour::Secondary ), - MakeWidget ({350, 22}, {122, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_INSTALL_NEW_TRACK_DESIGN, STR_INSTALL_NEW_TRACK_DESIGN_TIP ), + MakeWidget ({340, 22}, {122, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_INSTALL_NEW_TRACK_DESIGN, STR_INSTALL_NEW_TRACK_DESIGN_TIP ), MakeDropdownWidgets({470, 22}, {114, 14}, WindowWidgetType::DropdownMenu, WindowColour::Primary, STR_OBJECT_FILTER, STR_OBJECT_FILTER_TIP ), MakeWidget ({ 4, 45}, {211, 14}, WindowWidgetType::TextBox, WindowColour::Secondary ), MakeWidget ({218, 45}, { 70, 14}, WindowWidgetType::Button, WindowColour::Secondary, STR_OBJECT_SEARCH_CLEAR ), @@ -850,19 +858,20 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_LIST].bottom = height - 14; widgets[WIDX_PREVIEW].left = width - 209; widgets[WIDX_PREVIEW].right = width - 96; - ResizeDropdown(WIDX_FILTER_DROPDOWN, { width - kFilterWidth - 10, 22 }, { kFilterWidth, 14 }); - widgets[WIDX_INSTALL_TRACK].left = width - 250; - widgets[WIDX_INSTALL_TRACK].right = width - 137; widgets[WIDX_RELOAD_OBJECT].left = width - 9 - 24; widgets[WIDX_RELOAD_OBJECT].right = width - 9; + auto& dropdownWidget = widgets[WIDX_FILTER_DROPDOWN]; + ResizeDropdown(WIDX_FILTER_DROPDOWN, { width - kFilterWidth - 10, dropdownWidget.top }, { kFilterWidth, 14 }); + auto& installTrackWidget = widgets[WIDX_INSTALL_TRACK]; + installTrackWidget.moveToX(dropdownWidget.left - installTrackWidget.width() - 10); + // Set pressed widgets pressed_widgets |= 1uLL << WIDX_PREVIEW; SetPressedTab(); // Set window title and buttons auto& titleWidget = widgets[WIDX_TITLE]; - auto& installTrackWidget = widgets[WIDX_INSTALL_TRACK]; if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { titleWidget.text = STR_TRACK_DESIGNS_MANAGER_SELECT_RIDE_TYPE; @@ -1327,6 +1336,24 @@ namespace OpenRCT2::Ui::Windows } } + StringId GetAnimationPeepTypeStringId(AnimationPeepType type) + { + switch (type) + { + case AnimationPeepType::Handyman: + return STR_HANDYMAN_PLURAL; + case AnimationPeepType::Mechanic: + return STR_MECHANIC_PLURAL; + case AnimationPeepType::Security: + return STR_SECURITY_GUARD_PLURAL; + case AnimationPeepType::Entertainer: + return STR_ENTERTAINER_PLURAL; + case AnimationPeepType::Guest: + default: + return STR_GUESTS; + } + } + void DrawDebugData(DrawPixelInfo& dpi) { ObjectListItem* listItem = &_listItems[selected_list_item]; @@ -1346,6 +1373,14 @@ namespace OpenRCT2::Ui::Windows DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); } + // Draw peep animation object type + if (GetSelectedObjectType() == ObjectType::PeepAnimations) + { + auto* animObj = reinterpret_cast(_loadedObject.get()); + auto stringId = GetAnimationPeepTypeStringId(animObj->GetPeepType()); + DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); + } + screenPos.y += kListRowHeight; // Draw object source @@ -1706,8 +1741,6 @@ namespace OpenRCT2::Ui::Windows bool EditorObjectSelectionWindowCheck() { - WindowBase* w; - auto [missingObjectType, errorString] = Editor::CheckObjectSelection(); if (missingObjectType == ObjectType::None) { @@ -1716,7 +1749,9 @@ namespace OpenRCT2::Ui::Windows } ContextShowError(STR_INVALID_SELECTION_OF_OBJECTS, errorString, {}); - w = WindowFindByClass(WindowClass::EditorObjectSelection); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::EditorObjectSelection); if (w != nullptr) { // Click tab with missing object diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index f6e965ca1f..050ff211fb 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 9531fa6ffd..b316daccf9 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index d32e28dc58..b999ca04ef 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Error.cpp b/src/openrct2-ui/windows/Error.cpp index 29382e2eb6..4bc26497ac 100644 --- a/src/openrct2-ui/windows/Error.cpp +++ b/src/openrct2-ui/windows/Error.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 91fec09000..2e4eb431f6 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index a9266e5983..1161868fd8 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -36,6 +36,8 @@ #include #include #include +#include +#include #include #include #include @@ -1238,7 +1240,8 @@ namespace OpenRCT2::Ui::Windows Audio::Play3D(OpenRCT2::Audio::SoundId::PlaceItem, result->Position); } - auto* self = static_cast(WindowFindByClass(WindowClass::Footpath)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* self = static_cast(windowMgr->FindByClass(WindowClass::Footpath)); if (self == nullptr) { return; @@ -1638,7 +1641,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutTurnLeft() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1651,7 +1655,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutTurnRight() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1664,7 +1669,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutSlopeDown() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1677,7 +1683,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutSlopeUp() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1690,7 +1697,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutDemolishCurrent() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1703,7 +1711,8 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathKeyboardShortcutBuildCurrent() { - WindowBase* w = WindowFindByClass(WindowClass::Footpath); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::Footpath); if (w != nullptr) { auto* footpathWindow = static_cast(w); @@ -1720,7 +1729,8 @@ namespace OpenRCT2::Ui::Windows */ void ToggleFootpathWindow() { - if (WindowFindByClass(WindowClass::Footpath) == nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::Footpath) == nullptr) { ContextOpenWindow(WindowClass::Footpath); } diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 0f31d5418e..495ad09782 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -25,7 +25,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -285,7 +286,10 @@ namespace OpenRCT2::Ui::Windows clipCoords.y += 3; } - uint32_t image_id_base = GetPeepAnimation(peep->AnimationGroup).base_image; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + uint32_t image_id_base = animObj->GetPeepAnimation(peep->AnimationGroup).base_image; image_id_base += frame_no & 0xFFFFFFFC; image_id_base++; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 85615c8aa0..6630332beb 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -30,13 +30,16 @@ #include #include #include -#include +#include +#include #include #include #include #include #include #include +#include +#include #include #include #include @@ -558,8 +561,10 @@ namespace OpenRCT2::Ui::Windows return; } - int32_t animationFrame = GetPeepAnimation(peep->AnimationGroup).base_image + 1; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + int32_t animationFrame = animObj->GetPeepAnimation(peep->AnimationGroup).base_image + 1; int32_t animationFrameOffset = 0; if (page == WINDOW_GUEST_OVERVIEW) @@ -573,27 +578,31 @@ namespace OpenRCT2::Ui::Windows GfxDrawSprite(clipDpi, spriteId, screenCoords); auto* guest = peep->As(); - if (guest != nullptr) + if (guest == nullptr) + return; + + // There are only 6 walking frames available for each item. + auto itemFrame = (_guestAnimationFrame / 4) % 6; + + if (guest->AnimationGroup == PeepAnimationGroup::Hat) { - // If holding a balloon - if (animationFrame >= kPeepSpriteBalloonStateWatchRideId - && animationFrame < kPeepSpriteBalloonStateSittingIdleId + 4) - { - GfxDrawSprite(clipDpi, ImageId(animationFrame + 32, guest->BalloonColour), screenCoords); - } + auto itemOffset = kPeepSpriteHatItemStart + 1; + auto imageId = ImageId(itemOffset + itemFrame * 4, guest->HatColour); + GfxDrawSprite(clipDpi, imageId, screenCoords); + } - // If holding umbrella - if (animationFrame >= kPeepSpriteUmbrellaStateWalkingId - && animationFrame < kPeepSpriteUmbrellaStateSittingIdleId + 4) - { - GfxDrawSprite(clipDpi, ImageId(animationFrame + 32, guest->UmbrellaColour), screenCoords); - } + if (guest->AnimationGroup == PeepAnimationGroup::Balloon) + { + auto itemOffset = kPeepSpriteBalloonItemStart + 1; + auto imageId = ImageId(itemOffset + itemFrame * 4, guest->BalloonColour); + GfxDrawSprite(clipDpi, imageId, screenCoords); + } - // If wearing hat - if (animationFrame >= kPeepSpriteHatStateWatchRideId && animationFrame < kPeepSpriteHatStateSittingIdleId + 4) - { - GfxDrawSprite(clipDpi, ImageId(animationFrame + 32, guest->HatColour), screenCoords); - } + if (guest->AnimationGroup == PeepAnimationGroup::Umbrella) + { + auto itemOffset = kPeepSpriteUmbrellaItemStart + 1; + auto imageId = ImageId(itemOffset + itemFrame * 4, guest->UmbrellaColour); + GfxDrawSprite(clipDpi, imageId, screenCoords); } } @@ -643,7 +652,8 @@ namespace OpenRCT2::Ui::Windows pickupAction.SetCallback([peepnum = number](const GameAction* ga, const GameActions::Result* result) { if (result->Error != GameActions::Status::Ok) return; - WindowBase* wind = WindowFindByNumber(WindowClass::Peep, peepnum); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* wind = windowMgr->FindByNumber(WindowClass::Peep, peepnum); if (wind != nullptr) { ToolSet(*wind, WC_PEEP__WIDX_PICKUP, Tool::Picker); @@ -869,21 +879,30 @@ namespace OpenRCT2::Ui::Windows void OnUpdateOverview() { - _guestAnimationFrame++; - _guestAnimationFrame %= 24; - - // Update pickup animation, can only happen in this tab. - picked_peep_frame++; - picked_peep_frame %= 48; - - WidgetInvalidate(*this, WIDX_TAB_1); - WidgetInvalidate(*this, WIDX_TAB_2); - const auto peep = GetGuest(); if (peep == nullptr) { return; } + + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + // Overview tab animation offset + _guestAnimationFrame++; + _guestAnimationFrame %= 24; + + // Get pickup animation length + const auto& pickAnim = animObj->GetPeepAnimation(peep->AnimationGroup, PeepAnimationType::Hanging); + const auto pickAnimLength = pickAnim.frame_offsets.size(); + + // Update pickup animation, can only happen in this tab. + picked_peep_frame++; + picked_peep_frame %= pickAnimLength * 4; + + WidgetInvalidate(*this, WIDX_TAB_1); + WidgetInvalidate(*this, WIDX_TAB_2); + if (peep->WindowInvalidateFlags & PEEP_INVALIDATE_PEEP_ACTION) { peep->WindowInvalidateFlags &= ~PEEP_INVALIDATE_PEEP_ACTION; @@ -958,7 +977,10 @@ namespace OpenRCT2::Ui::Windows return; } - auto baseImageId = GetPeepAnimation(peep->AnimationGroup, PeepAnimationType::Hanging).base_image; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + auto baseImageId = animObj->GetPeepAnimation(peep->AnimationGroup, PeepAnimationType::Hanging).base_image; baseImageId += picked_peep_frame >> 2; gPickupPeepImage = ImageId(baseImageId, peep->TshirtColour, peep->TrousersColour); } diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 5eb9cc4274..3fc9fe28dd 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -21,11 +21,13 @@ #include #include #include -#include +#include #include #include #include #include +#include +#include #include #include @@ -651,7 +653,8 @@ namespace OpenRCT2::Ui::Windows { // Tab 1 image auto i = (_selectedTab == TabId::Individual ? _tabAnimationIndex & ~3 : 0); - i += GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1; + auto* animObj = findPeepAnimationsObjectForType(AnimationPeepType::Guest); + i += animObj->GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1; GfxDrawSprite( dpi, ImageId(i, COLOUR_GREY, COLOUR_DARK_OLIVE_GREEN), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_1].midX(), widgets[WIDX_TAB_1].bottom - 6 }); @@ -992,7 +995,8 @@ namespace OpenRCT2::Ui::Windows void WindowGuestListRefreshList() { - auto* w = WindowFindByClass(WindowClass::GuestList); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::GuestList); if (w != nullptr) { static_cast(w)->RefreshList(); diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 453617d46f..982a3f8533 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index b1c3de41f9..c45cb33206 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -399,15 +401,19 @@ namespace OpenRCT2::Ui::Windows */ void LandToolDrag(const ScreenCoordsXY& screenPos) { - auto* window = WindowFindFromPoint(screenPos); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindFromPoint(screenPos); if (window == nullptr) return; - WidgetIndex widget_index = WindowFindWidgetFromPoint(*window, screenPos); + + WidgetIndex widget_index = windowMgr->FindWidgetFromPoint(*window, screenPos); if (widget_index == -1) return; + const auto& widget = window->widgets[widget_index]; if (widget.type != WindowWidgetType::Viewport) return; + const auto* selectedViewport = window->viewport; if (selectedViewport == nullptr) return; diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index e509ee5cf1..a7ef2463ba 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 5fab1fbb31..f096cea754 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -46,11 +47,14 @@ namespace OpenRCT2::Ui::Windows { #pragma region Widgets - static constexpr StringId WINDOW_TITLE = STR_NONE; - static constexpr int32_t WW = 350; - static constexpr int32_t WH = 400; + static constexpr ScreenSize kWindowSizeInit = { 400, 350 }; + static constexpr ScreenSize kWindowSizeMin = kWindowSizeInit / 2; + static constexpr ScreenSize kWindowSizeMax = kWindowSizeInit * 2; - static constexpr uint16_t DATE_TIME_GAP = 2; + static constexpr int kKibiByte = 1024; + static constexpr int kMebiByte = kKibiByte * 1024; + + static constexpr uint16_t kDateTimeGap = 2; enum { @@ -63,28 +67,35 @@ namespace OpenRCT2::Ui::Windows WIDX_NEW_FOLDER, WIDX_NEW_FILE, WIDX_SORT_NAME, + WIDX_SORT_SIZE, WIDX_SORT_DATE, + WIDX_SORT_CUSTOMISE, WIDX_SCROLL, WIDX_FILENAME_TEXTBOX, WIDX_SAVE, WIDX_BROWSE, }; + static constexpr int16_t WW = kWindowSizeInit.width; + static constexpr int16_t WH = kWindowSizeInit.height; + // clang-format off static Widget window_loadsave_widgets[] = { - WINDOW_SHIM(WINDOW_TITLE, WW, WH), - MakeWidget({ 0, WH - 1}, { WW, 1 }, WindowWidgetType::Resize, WindowColour::Secondary ), // WIDX_RESIZE - MakeWidget({ 4, 36}, { 84, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_LOADSAVE_DEFAULT, STR_LOADSAVE_DEFAULT_TIP), // WIDX_DEFAULT - MakeWidget({ 88, 36}, { 84, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_UP ), // WIDX_UP - MakeWidget({ 172, 36}, { 87, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_NEW_FOLDER ), // WIDX_NEW_FOLDER - MakeWidget({ 259, 36}, { 87, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_NEW_FILE ), // WIDX_NEW_FILE - MakeWidget({ 4, 55}, { 170, 14 }, WindowWidgetType::TableHeader, WindowColour::Primary ), // WIDX_SORT_NAME - MakeWidget({(WW - 5) / 2 + 1, 55}, { 170, 14 }, WindowWidgetType::TableHeader, WindowColour::Primary ), // WIDX_SORT_DATE - MakeWidget({ 4, 68}, { 342, 303 }, WindowWidgetType::Scroll, WindowColour::Primary, SCROLL_VERTICAL ), // WIDX_SCROLL - MakeWidget({ 64, WH - 50}, { WW - 133, 14 }, WindowWidgetType::TextBox, WindowColour::Secondary ), // WIDX_FILENAME_TEXTBOX - MakeWidget({ WW - 65, WH - 50}, { 60, 14 }, WindowWidgetType::Button, WindowColour::Secondary, STR_FILEBROWSER_SAVE_BUTTON ), // WIDX_SAVE - MakeWidget({ 4, WH - 24}, { 197, 19 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_USE_SYSTEM_WINDOW ), // WIDX_BROWSE + WINDOW_SHIM(STR_NONE, WW, WH), + MakeWidget({ 0, 15 }, { WW, WH - 15 }, WindowWidgetType::Resize, WindowColour::Secondary ), // WIDX_RESIZE + MakeWidget({ 4, 36 }, { 84, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_LOADSAVE_DEFAULT, STR_LOADSAVE_DEFAULT_TIP), // WIDX_DEFAULT + MakeWidget({ 88, 36 }, { 84, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_UP ), // WIDX_UP + MakeWidget({ 172, 36 }, { 87, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_NEW_FOLDER ), // WIDX_NEW_FOLDER + MakeWidget({ 259, 36 }, { 87, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_ACTION_NEW_FILE ), // WIDX_NEW_FILE + MakeWidget({ 4, 55 }, { 160, 14 }, WindowWidgetType::TableHeader, WindowColour::Primary ), // WIDX_SORT_NAME + MakeWidget({ (WW - 5) / 3 + 1, 55 }, { 160, 14 }, WindowWidgetType::TableHeader, WindowColour::Primary ), // WIDX_SORT_SIZE + MakeWidget({ (WW - 5) / 3 + 1, 55 }, { 160, 14 }, WindowWidgetType::TableHeader, WindowColour::Primary ), // WIDX_SORT_DATE + MakeWidget({ (WW - 19), 55 }, { 14, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_DROPDOWN_GLYPH ), // WIDX_SORT_CUSTOMISE + MakeWidget({ 4, 68 }, { 342, 303 }, WindowWidgetType::Scroll, WindowColour::Primary, SCROLL_VERTICAL ), // WIDX_SCROLL + MakeWidget({ 64, WH - 50 }, { WW - 133, 14 }, WindowWidgetType::TextBox, WindowColour::Secondary ), // WIDX_FILENAME_TEXTBOX + MakeWidget({ WW - 65, WH - 50 }, { 60, 14 }, WindowWidgetType::Button, WindowColour::Secondary, STR_FILEBROWSER_SAVE_BUTTON ), // WIDX_SAVE + MakeWidget({ 4, WH - 24 }, { 197, 19 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_USE_SYSTEM_WINDOW ), // WIDX_BROWSE kWidgetsEnd, }; // clang-format on @@ -106,6 +117,9 @@ namespace OpenRCT2::Ui::Windows time_t date_modified{ 0 }; std::string date_formatted{}; std::string time_formatted{}; + uint64_t fileSizeBytes; + uint64_t fileSizeFormatted; + StringId fileSizeUnit; FileType type{}; bool loaded{ false }; }; @@ -128,14 +142,18 @@ namespace OpenRCT2::Ui::Windows switch (Config::Get().general.LoadSaveSort) { - case Sort::NameAscending: + case FileBrowserSort::NameAscending: return String::logicalCmp(a.name.c_str(), b.name.c_str()) < 0; - case Sort::NameDescending: + case FileBrowserSort::NameDescending: return -String::logicalCmp(a.name.c_str(), b.name.c_str()) < 0; - case Sort::DateDescending: + case FileBrowserSort::DateDescending: return -difftime(a.date_modified, b.date_modified) < 0; - case Sort::DateAscending: + case FileBrowserSort::DateAscending: return difftime(a.date_modified, b.date_modified) < 0; + case FileBrowserSort::SizeDescending: + return a.fileSizeBytes - b.fileSizeBytes; + case FileBrowserSort::SizeAscending: + return b.fileSizeBytes - a.fileSizeBytes; } return String::logicalCmp(a.name.c_str(), b.name.c_str()) < 0; } @@ -516,8 +534,8 @@ namespace OpenRCT2::Ui::Windows _listItems.clear(); // Show "new" buttons when saving - window_loadsave_widgets[WIDX_NEW_FILE].type = includeNewItem ? WindowWidgetType::Button : WindowWidgetType::Empty; - window_loadsave_widgets[WIDX_NEW_FOLDER].type = includeNewItem ? WindowWidgetType::Button : WindowWidgetType::Empty; + widgets[WIDX_NEW_FILE].type = includeNewItem ? WindowWidgetType::Button : WindowWidgetType::Empty; + widgets[WIDX_NEW_FOLDER].type = includeNewItem ? WindowWidgetType::Button : WindowWidgetType::Empty; int32_t drives = Platform::GetDrives(); if (directory.empty() && drives) @@ -608,6 +626,24 @@ namespace OpenRCT2::Ui::Windows newListItem.date_formatted = Platform::FormatShortDate(newListItem.date_modified); newListItem.time_formatted = Platform::FormatTime(newListItem.date_modified); + // File size + newListItem.fileSizeBytes = Platform::GetFileSize(newListItem.path.c_str()); + if (newListItem.fileSizeBytes > kMebiByte) + { + newListItem.fileSizeFormatted = newListItem.fileSizeBytes / kMebiByte; + newListItem.fileSizeUnit = STR_SIZE_MEGABYTE; + } + else if (newListItem.fileSizeBytes > kKibiByte) + { + newListItem.fileSizeFormatted = newListItem.fileSizeBytes / kKibiByte; + newListItem.fileSizeUnit = STR_SIZE_KILOBYTE; + } + else + { + newListItem.fileSizeFormatted = newListItem.fileSizeBytes; + newListItem.fileSizeUnit = STR_SIZE_BYTE; + } + // Mark if file is the currently loaded game newListItem.loaded = newListItem.path.compare(gCurrentLoadedPath) == 0; @@ -651,7 +687,7 @@ namespace OpenRCT2::Ui::Windows // Check how this date is represented (e.g. 2000-02-20, or 00/02/20) std::string date = Platform::FormatShortDate(long_time); - maxDateWidth = GfxGetStringWidth(date.c_str(), FontStyle::Medium) + DATE_TIME_GAP; + maxDateWidth = GfxGetStringWidth(date.c_str(), FontStyle::Medium) + kDateTimeGap; // Some locales do not use leading zeros for months and days, so let's try October, too. tm.tm_mon = 10; @@ -660,12 +696,12 @@ namespace OpenRCT2::Ui::Windows // Again, check how this date is represented (e.g. 2000-10-20, or 00/10/20) date = Platform::FormatShortDate(long_time); - maxDateWidth = std::max(maxDateWidth, GfxGetStringWidth(date.c_str(), FontStyle::Medium) + DATE_TIME_GAP); + maxDateWidth = std::max(maxDateWidth, GfxGetStringWidth(date.c_str(), FontStyle::Medium) + kDateTimeGap); // Time appears to be universally represented with two digits for minutes, so 12:00 or 00:00 should be // representable. std::string time = Platform::FormatTime(long_time); - maxTimeWidth = GfxGetStringWidth(time.c_str(), FontStyle::Medium) + DATE_TIME_GAP; + maxTimeWidth = GfxGetStringWidth(time.c_str(), FontStyle::Medium) + kDateTimeGap; } void SortList() @@ -683,7 +719,7 @@ namespace OpenRCT2::Ui::Windows if (!uiContext->HasFilePicker()) { disabled_widgets |= (1uLL << WIDX_BROWSE); - window_loadsave_widgets[WIDX_BROWSE].type = WindowWidgetType::Empty; + widgets[WIDX_BROWSE].type = WindowWidgetType::Empty; } // TODO: Split LOADSAVETYPE_* into two proper enum classes (one for load/save, the other for the type) @@ -724,16 +760,18 @@ namespace OpenRCT2::Ui::Windows // Reset window dimensions InitScrollWidgets(); ComputeMaxDateWidth(); - min_width = WW; - min_height = WH / 2; - max_width = WW * 2; - max_height = WH * 2; + + min_width = kWindowSizeMin.width; + min_height = kWindowSizeMin.height; + max_width = kWindowSizeMax.width; + max_height = kWindowSizeMax.height; } void OnClose() override { _listItems.clear(); WindowCloseByClass(WindowClass::LoadsaveOverwritePrompt); + Config::Save(); // Unpause the game if not on title scene, nor in network play. if (!(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) && NetworkGetMode() == NETWORK_MODE_NONE) @@ -745,16 +783,11 @@ namespace OpenRCT2::Ui::Windows void OnResize() override { - if (width < min_width) - { - Invalidate(); - width = min_width; - } - if (height < min_height) - { - Invalidate(); - height = min_height; - } + WindowSetResize(*this, kWindowSizeMin.width, kWindowSizeMin.height, kWindowSizeMax.width, kWindowSizeMax.height); + + auto& config = Config::Get().general; + config.FileBrowserWidth = width; + config.FileBrowserHeight = height; } void OnUpdate() override @@ -770,98 +803,158 @@ namespace OpenRCT2::Ui::Windows { ResizeFrameWithPage(); - Widget* date_widget = &window_loadsave_widgets[WIDX_SORT_DATE]; - date_widget->right = width - 5; - date_widget->left = date_widget->right - - (maxDateWidth + maxTimeWidth + (4 * DATE_TIME_GAP) + (kScrollBarWidth + 1)); + Widget& customiseWidget = widgets[WIDX_SORT_CUSTOMISE]; + customiseWidget.right = width - 5; + customiseWidget.left = customiseWidget.right - 14; - window_loadsave_widgets[WIDX_SORT_NAME].left = 4; - window_loadsave_widgets[WIDX_SORT_NAME].right = window_loadsave_widgets[WIDX_SORT_DATE].left - 1; + auto& config = Config::Get().general; + if (config.FileBrowserShowDateColumn) + { + // Date column on the right + Widget& dateWidget = widgets[WIDX_SORT_DATE]; + dateWidget.type = WindowWidgetType::TableHeader; + dateWidget.right = customiseWidget.left - 1; + dateWidget.left = dateWidget.right - (maxDateWidth + maxTimeWidth + (4 * kDateTimeGap) + (kScrollBarWidth + 1)); - window_loadsave_widgets[WIDX_SCROLL].right = width - 5; - window_loadsave_widgets[WIDX_SCROLL].bottom = height - 30; + if (config.FileBrowserShowSizeColumn) + { + // File size column in the middle + Widget& sizeWidget = widgets[WIDX_SORT_SIZE]; + sizeWidget.type = WindowWidgetType::TableHeader; + sizeWidget.right = dateWidget.left - 1; + sizeWidget.left = sizeWidget.right - 65; + + // Name column is next to size column + widgets[WIDX_SORT_NAME].right = sizeWidget.left - 1; + } + else + { + // Hide file size header + Widget& sizeWidget = widgets[WIDX_SORT_SIZE]; + sizeWidget.type = WindowWidgetType::Empty; + + // Name column is next to date column + widgets[WIDX_SORT_NAME].right = dateWidget.left - 1; + } + } + else if (config.FileBrowserShowSizeColumn) + { + // Hide date header + Widget& dateWidget = widgets[WIDX_SORT_DATE]; + dateWidget.type = WindowWidgetType::Empty; + + // File size column on the right + Widget& sizeWidget = widgets[WIDX_SORT_SIZE]; + sizeWidget.type = WindowWidgetType::TableHeader; + sizeWidget.right = customiseWidget.left - 1; + sizeWidget.left = sizeWidget.right - 65; + + // Name column is next to size column + widgets[WIDX_SORT_NAME].right = sizeWidget.left - 1; + } + else + { + // Name is the only column + widgets[WIDX_SORT_NAME].right = customiseWidget.left - 1; + + // Hide other columns + widgets[WIDX_SORT_SIZE].type = WindowWidgetType::Empty; + widgets[WIDX_SORT_DATE].type = WindowWidgetType::Empty; + } + + widgets[WIDX_SCROLL].right = width - 5; + widgets[WIDX_SCROLL].bottom = height - 30; if (_type & LOADSAVETYPE_SAVE) { - window_loadsave_widgets[WIDX_SCROLL].bottom -= 18; + widgets[WIDX_SCROLL].bottom -= 18; // Get 'Save' button string width auto saveLabel = LanguageGetString(STR_FILEBROWSER_SAVE_BUTTON); auto saveLabelWidth = GfxGetStringWidth(saveLabel, FontStyle::Medium) + 16; - window_loadsave_widgets[WIDX_SAVE].top = height - 42; - window_loadsave_widgets[WIDX_SAVE].bottom = height - 30; - window_loadsave_widgets[WIDX_SAVE].left = width - saveLabelWidth - 5; - window_loadsave_widgets[WIDX_SAVE].right = width - 5; + widgets[WIDX_SAVE].type = WindowWidgetType::Button; + widgets[WIDX_SAVE].top = height - 42; + widgets[WIDX_SAVE].bottom = height - 30; + widgets[WIDX_SAVE].left = width - saveLabelWidth - 5; + widgets[WIDX_SAVE].right = width - 5; // Get 'Filename:' string width - auto filenameLabel = LanguageGetString(STR_FILENAME); + auto filenameLabel = LanguageGetString(STR_FILENAME_LABEL); auto filenameLabelWidth = GfxGetStringWidth(filenameLabel, FontStyle::Medium); - window_loadsave_widgets[WIDX_FILENAME_TEXTBOX].top = height - 42; - window_loadsave_widgets[WIDX_FILENAME_TEXTBOX].bottom = height - 30; - window_loadsave_widgets[WIDX_FILENAME_TEXTBOX].left = 4 + filenameLabelWidth + 6; - window_loadsave_widgets[WIDX_FILENAME_TEXTBOX].right = window_loadsave_widgets[WIDX_SAVE].left - 5; + widgets[WIDX_FILENAME_TEXTBOX].type = WindowWidgetType::TextBox; + widgets[WIDX_FILENAME_TEXTBOX].top = height - 42; + widgets[WIDX_FILENAME_TEXTBOX].bottom = height - 30; + widgets[WIDX_FILENAME_TEXTBOX].left = 4 + filenameLabelWidth + 6; + widgets[WIDX_FILENAME_TEXTBOX].right = widgets[WIDX_SAVE].left - 5; + } + else + { + widgets[WIDX_SAVE].type = WindowWidgetType::Empty; + widgets[WIDX_FILENAME_TEXTBOX].type = WindowWidgetType::Empty; } // 'Use system file browser' - window_loadsave_widgets[WIDX_BROWSE].top = height - 24; - window_loadsave_widgets[WIDX_BROWSE].bottom = height - 6; + widgets[WIDX_BROWSE].top = height - 24; + widgets[WIDX_BROWSE].bottom = height - 6; } void OnDraw(DrawPixelInfo& dpi) override { DrawWidgets(dpi); - const auto shortPath = ShortenPath(_directory, width - 8, FontStyle::Medium); + { + const auto shortPath = ShortenPath(_directory, width - 8, FontStyle::Medium); - // Format text - std::string buffer; - buffer.assign("{BLACK}"); - buffer += shortPath; + // Format text + std::string buffer; + buffer.assign("{BLACK}"); + buffer += shortPath; - // Draw path text - const auto normalisedPath = Platform::StrDecompToPrecomp(buffer.data()); - const auto* normalisedPathC = normalisedPath.c_str(); - auto ft = Formatter(); - ft.Add(normalisedPathC); - DrawTextEllipsised(dpi, windowPos + ScreenCoordsXY{ 4, 20 }, width - 8, STR_STRING, ft); + // Draw path text + const auto normalisedPath = Platform::StrDecompToPrecomp(buffer.data()); + const auto* normalisedPathC = normalisedPath.c_str(); - // Name button text - StringId id = STR_NONE; - if (Config::Get().general.LoadSaveSort == Sort::NameAscending) - id = STR_UP; - else if (Config::Get().general.LoadSaveSort == Sort::NameDescending) - id = STR_DOWN; + auto ft = Formatter(); + ft.Add(normalisedPathC); + DrawTextEllipsised(dpi, windowPos + ScreenCoordsXY{ 4, 20 }, width - 8, STR_STRING, ft); + } - // Draw name button indicator. - auto& sort_name_widget = widgets[WIDX_SORT_NAME]; - ft = Formatter(); - ft.Add(id); - DrawTextBasic( - dpi, windowPos + ScreenCoordsXY{ sort_name_widget.left + 11, sort_name_widget.top + 1 }, STR_NAME, ft, - { COLOUR_GREY }); + const auto drawButtonCaption = [dpi, this]( + Widget& widget, StringId strId, FileBrowserSort ascSort, + FileBrowserSort descSort) { + StringId indicatorId = STR_NONE; + if (Config::Get().general.LoadSaveSort == ascSort) + indicatorId = STR_UP; + else if (Config::Get().general.LoadSaveSort == descSort) + indicatorId = STR_DOWN; - // Date button text - if (Config::Get().general.LoadSaveSort == Sort::DateAscending) - id = STR_UP; - else if (Config::Get().general.LoadSaveSort == Sort::DateDescending) - id = STR_DOWN; - else - id = STR_NONE; + auto ft = Formatter(); + ft.Add(indicatorId); - auto& sort_date_widget = widgets[WIDX_SORT_DATE]; - ft = Formatter(); - ft.Add(id); - DrawTextBasic( - dpi, windowPos + ScreenCoordsXY{ sort_date_widget.left + 5, sort_date_widget.top + 1 }, STR_DATE, ft, - { COLOUR_GREY }); + auto cdpi = const_cast(dpi); + DrawTextBasic(cdpi, windowPos + ScreenCoordsXY{ widget.left + 5, widget.top + 1 }, strId, ft, { COLOUR_GREY }); + }; + + auto& config = Config::Get().general; + drawButtonCaption( + widgets[WIDX_SORT_NAME], STR_NAME_COLUMN, FileBrowserSort::NameAscending, FileBrowserSort::NameDescending); + + if (config.FileBrowserShowSizeColumn) + drawButtonCaption( + widgets[WIDX_SORT_SIZE], STR_FILEBROWSER_SIZE_COLUMN, FileBrowserSort::SizeAscending, + FileBrowserSort::SizeDescending); + + if (config.FileBrowserShowDateColumn) + drawButtonCaption( + widgets[WIDX_SORT_DATE], STR_DATE_COLUMN, FileBrowserSort::DateAscending, FileBrowserSort::DateDescending); // 'Filename:' label if (_type & LOADSAVETYPE_SAVE) { auto& widget = widgets[WIDX_FILENAME_TEXTBOX]; - DrawTextBasic(dpi, windowPos + ScreenCoordsXY{ 5, widget.top + 2 }, STR_FILENAME, ft, { COLOUR_GREY }); + DrawTextBasic(dpi, windowPos + ScreenCoordsXY{ 5, widget.top + 2 }, STR_FILENAME_LABEL, {}, { COLOUR_GREY }); } } @@ -908,13 +1001,27 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_SORT_NAME: - if (Config::Get().general.LoadSaveSort == Sort::NameAscending) + if (Config::Get().general.LoadSaveSort == FileBrowserSort::NameAscending) { - Config::Get().general.LoadSaveSort = Sort::NameDescending; + Config::Get().general.LoadSaveSort = FileBrowserSort::NameDescending; } else { - Config::Get().general.LoadSaveSort = Sort::NameAscending; + Config::Get().general.LoadSaveSort = FileBrowserSort::NameAscending; + } + Config::Save(); + SortList(); + Invalidate(); + break; + + case WIDX_SORT_SIZE: + if (Config::Get().general.LoadSaveSort == FileBrowserSort::SizeDescending) + { + Config::Get().general.LoadSaveSort = FileBrowserSort::SizeAscending; + } + else + { + Config::Get().general.LoadSaveSort = FileBrowserSort::SizeDescending; } Config::Save(); SortList(); @@ -922,13 +1029,13 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_SORT_DATE: - if (Config::Get().general.LoadSaveSort == Sort::DateDescending) + if (Config::Get().general.LoadSaveSort == FileBrowserSort::DateDescending) { - Config::Get().general.LoadSaveSort = Sort::DateAscending; + Config::Get().general.LoadSaveSort = FileBrowserSort::DateAscending; } else { - Config::Get().general.LoadSaveSort = Sort::DateDescending; + Config::Get().general.LoadSaveSort = FileBrowserSort::DateDescending; } Config::Save(); SortList(); @@ -958,6 +1065,56 @@ namespace OpenRCT2::Ui::Windows } } + void OnMouseDown(WidgetIndex widgetIndex) override + { + if (widgetIndex != WIDX_SORT_CUSTOMISE) + return; + + gDropdownItems[0].Format = STR_TOGGLE_OPTION; + gDropdownItems[1].Format = STR_TOGGLE_OPTION; + gDropdownItems[2].Format = STR_TOGGLE_OPTION; + gDropdownItems[0].Args = STR_FILEBROWSER_CUSTOMISE_FILENAME; + gDropdownItems[1].Args = STR_FILEBROWSER_CUSTOMISE_SIZE; + gDropdownItems[2].Args = STR_FILEBROWSER_CUSTOMISE_DATE; + + Widget* widget = &widgets[WIDX_SORT_CUSTOMISE]; + + WindowDropdownShowTextCustomWidth( + { windowPos.x + widget->left - 70, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + Dropdown::Flag::StayOpen, 3, 90); + + auto& config = Config::Get().general; + + Dropdown::SetChecked(0, true); + Dropdown::SetChecked(1, config.FileBrowserShowSizeColumn); + Dropdown::SetChecked(2, config.FileBrowserShowDateColumn); + } + + void OnDropdown(WidgetIndex widgetIndex, int32_t selectedIndex) override + { + if (widgetIndex != WIDX_SORT_CUSTOMISE) + return; + + auto& config = Config::Get().general; + bool changed = false; + if (selectedIndex == 1) + { + config.FileBrowserShowSizeColumn ^= true; + changed = true; + } + else if (selectedIndex == 2) + { + config.FileBrowserShowDateColumn ^= true; + changed = true; + } + + if (changed) + { + Config::Save(); + Invalidate(); + } + } + void OnTextInput(WidgetIndex widgetIndex, std::string_view text) override { if (text.empty()) @@ -1076,8 +1233,13 @@ namespace OpenRCT2::Ui::Windows GfxFillRect( dpi, { { dpi.x, dpi.y }, { dpi.x + dpi.width - 1, dpi.y + dpi.height - 1 } }, ColourMapA[colours[1].colour].mid_light); + const int32_t listWidth = widgets[WIDX_SCROLL].width(); - const int32_t dateAnchor = widgets[WIDX_SORT_DATE].left + maxDateWidth + DATE_TIME_GAP; + const auto sizeColumnLeft = widgets[WIDX_SORT_SIZE].left; + const auto dateColumnLeft = widgets[WIDX_SORT_DATE].left; + const int32_t dateAnchor = dateColumnLeft + maxDateWidth + kDateTimeGap; + + auto& config = Config::Get().general; for (int32_t i = 0; i < no_list_items; i++) { @@ -1118,18 +1280,30 @@ namespace OpenRCT2::Ui::Windows DrawTextEllipsised(dpi, { 15, y }, max_file_width, stringId, ft); // Print formatted modified date, if this is a file - if (_listItems[i].type == FileType::file) + if (_listItems[i].type != FileType::file) + continue; + + if (config.FileBrowserShowSizeColumn) + { + ft = Formatter(); + ft.Add(STR_FILEBROWSER_FILE_SIZE_VALUE); + ft.Add(_listItems[i].fileSizeFormatted); + ft.Add(_listItems[i].fileSizeUnit); + DrawTextEllipsised(dpi, { sizeColumnLeft + 2, y }, maxDateWidth + maxTimeWidth, stringId, ft); + } + + if (config.FileBrowserShowDateColumn) { ft = Formatter(); ft.Add(STR_STRING); ft.Add(_listItems[i].date_formatted.c_str()); DrawTextEllipsised( - dpi, { dateAnchor - DATE_TIME_GAP, y }, maxDateWidth, stringId, ft, { TextAlignment::RIGHT }); + dpi, { dateAnchor - kDateTimeGap, y }, maxDateWidth, stringId, ft, { TextAlignment::RIGHT }); ft = Formatter(); ft.Add(STR_STRING); ft.Add(_listItems[i].time_formatted.c_str()); - DrawTextEllipsised(dpi, { dateAnchor + DATE_TIME_GAP, y }, maxTimeWidth, stringId, ft); + DrawTextEllipsised(dpi, { dateAnchor + kDateTimeGap, y }, maxTimeWidth, stringId, ft); } } } @@ -1145,11 +1319,12 @@ namespace OpenRCT2::Ui::Windows _type = type; _defaultPath = defaultPath; + auto& config = Config::Get().general; bool isSave = (type & 0x01) == LOADSAVETYPE_SAVE; // Bypass the lot? auto hasFilePicker = OpenRCT2::GetContext()->GetUiContext()->HasFilePicker(); - if (Config::Get().general.UseNativeBrowseDialog && hasFilePicker) + if (config.UseNativeBrowseDialog && hasFilePicker) { const u8string path = OpenSystemFileBrowser(isSave); if (!path.empty()) @@ -1164,8 +1339,20 @@ namespace OpenRCT2::Ui::Windows auto* w = static_cast(WindowBringToFrontByClass(WindowClass::Loadsave)); if (w == nullptr) { + if (config.FileBrowserWidth < kWindowSizeMin.width || config.FileBrowserHeight < kWindowSizeMin.height + || config.FileBrowserWidth > kWindowSizeMax.width || config.FileBrowserHeight > kWindowSizeMax.height) + { + config.FileBrowserWidth = kWindowSizeInit.width; + config.FileBrowserHeight = kWindowSizeInit.height; + Config::Save(); + } + + auto width = config.FileBrowserWidth; + auto height = config.FileBrowserHeight; + w = WindowCreate( - WindowClass::Loadsave, WW, WH, WF_STICK_TO_FRONT | WF_RESIZABLE | WF_AUTO_POSITION | WF_CENTRE_SCREEN, type); + WindowClass::Loadsave, width, height, WF_STICK_TO_FRONT | WF_RESIZABLE | WF_AUTO_POSITION | WF_CENTRE_SCREEN, + type); } switch (type & 0x0E) @@ -1234,13 +1421,14 @@ namespace OpenRCT2::Ui::Windows WIDX_OVERWRITE_CANCEL }; + // clang-format off static Widget window_overwrite_prompt_widgets[] = { WINDOW_SHIM_WHITE(STR_FILEBROWSER_OVERWRITE_TITLE, OVERWRITE_WW, OVERWRITE_WH), - { WindowWidgetType::Button, 0, 10, 94, OVERWRITE_WH - 20, OVERWRITE_WH - 9, STR_FILEBROWSER_OVERWRITE_TITLE, STR_NONE }, - { WindowWidgetType::Button, 0, OVERWRITE_WW - 95, OVERWRITE_WW - 11, OVERWRITE_WH - 20, OVERWRITE_WH - 9, - STR_SAVE_PROMPT_CANCEL, STR_NONE }, + MakeWidget({ 10, OVERWRITE_WH - 20 }, { 84, 11 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_OVERWRITE_TITLE), + MakeWidget({ OVERWRITE_WW - 95, OVERWRITE_WH - 20 }, { 85, 11 }, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_CANCEL), kWidgetsEnd, }; + // clang-format on class OverwritePromptWindow final : public Window { diff --git a/src/openrct2-ui/windows/Main.cpp b/src/openrct2-ui/windows/Main.cpp index 9a95880621..1e12faaf49 100644 --- a/src/openrct2-ui/windows/Main.cpp +++ b/src/openrct2-ui/windows/Main.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 7cf558b873..4e7302d156 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include #include @@ -275,6 +277,7 @@ namespace OpenRCT2::Ui::Windows void OnMouseUp(WidgetIndex widgetIndex) override { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); switch (widgetIndex) { case WIDX_CLOSE: @@ -282,7 +285,7 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_SET_LAND_RIGHTS: { - if (!WindowFindByClass(WindowClass::LandRights)) + if (!windowMgr->FindByClass(WindowClass::LandRights)) ContextOpenWindow(WindowClass::LandRights); else WindowCloseByClass(WindowClass::LandRights); @@ -290,7 +293,7 @@ namespace OpenRCT2::Ui::Windows } case WIDX_BUILD_PARK_ENTRANCE: { - if (!WindowFindByClass(WindowClass::EditorParkEntrance)) + if (!windowMgr->FindByClass(WindowClass::EditorParkEntrance)) ContextOpenWindow(WindowClass::EditorParkEntrance); else WindowCloseByClass(WindowClass::EditorParkEntrance); @@ -354,6 +357,8 @@ namespace OpenRCT2::Ui::Windows void OnUpdate() override { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // the flickering frequency is reduced by 4, compared to the original // it was done due to inability to reproduce original frequency // and decision that the original one looks too fast @@ -362,12 +367,12 @@ namespace OpenRCT2::Ui::Windows // Handle guest map flashing _flashingFlags &= ~MapFlashingFlags::FlashGuests; - if (WindowFindByClass(WindowClass::GuestList) != nullptr) + if (windowMgr->FindByClass(WindowClass::GuestList) != nullptr) _flashingFlags |= MapFlashingFlags::FlashGuests; // Handle staff map flashing _flashingFlags &= ~MapFlashingFlags::FlashStaff; - if (WindowFindByClass(WindowClass::StaffList) != nullptr) + if (windowMgr->FindByClass(WindowClass::StaffList) != nullptr) _flashingFlags |= MapFlashingFlags::FlashStaff; if (GetCurrentRotation() != _rotation) @@ -596,18 +601,20 @@ namespace OpenRCT2::Ui::Windows void OnPrepareDraw() override { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // Set the pressed widgets pressed_widgets = 0; SetWidgetPressed(WIDX_MAP_SIZE_LINK, _mapWidthAndHeightLinked); pressed_widgets |= (1uLL << (WIDX_PEOPLE_TAB + selected_tab)); - if (WindowFindByClass(WindowClass::EditorParkEntrance)) + if (windowMgr->FindByClass(WindowClass::EditorParkEntrance)) pressed_widgets |= (1uLL << WIDX_BUILD_PARK_ENTRANCE); - if (WindowFindByClass(WindowClass::LandRights)) + if (windowMgr->FindByClass(WindowClass::LandRights)) pressed_widgets |= (1uLL << WIDX_SET_LAND_RIGHTS); - if (WindowFindByClass(WindowClass::Mapgen)) + if (windowMgr->FindByClass(WindowClass::Mapgen)) pressed_widgets |= (1uLL << WIDX_MAP_GENERATOR); // Set disabled widgets diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 5f9160fe1d..e8f41533e1 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -25,7 +25,10 @@ #include #include #include -#include +#include +#include + +using namespace OpenRCT2::World; namespace OpenRCT2::Ui::Windows { @@ -267,7 +270,7 @@ namespace OpenRCT2::Ui::Windows private: ResizeDirection _resizeDirection{ ResizeDirection::Both }; bool _mapWidthAndHeightLinked{ true }; - MapGenSettings _settings{}; + MapGenerator::Settings _settings{}; bool _randomTerrain = true; bool _heightmapLoaded = false; std::string _heightmapFilename{}; @@ -371,17 +374,17 @@ namespace OpenRCT2::Ui::Windows void GenerateMap() { - if (_settings.algorithm == MapGenAlgorithm::heightmapImage && !_heightmapLoaded) + if (_settings.algorithm == MapGenerator::Algorithm::heightmapImage && !_heightmapLoaded) return; - MapGenSettings mapgenSettings = _settings; + MapGenerator::Settings mapgenSettings = _settings; if (_randomTerrain) { mapgenSettings.landTexture = -1; mapgenSettings.edgeTexture = -1; } - MapGenGenerate(&mapgenSettings); + MapGenerator::generate(&mapgenSettings); GfxInvalidateScreen(); } @@ -391,9 +394,9 @@ namespace OpenRCT2::Ui::Windows { SharedMouseUp(widgetIndex); - if (_settings.algorithm == MapGenAlgorithm::simplexNoise) + if (_settings.algorithm == MapGenerator::Algorithm::simplexNoise) SimplexMouseUp(widgetIndex); - else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) + else if (_settings.algorithm == MapGenerator::Algorithm::heightmapImage) HeightmapMouseUp(widgetIndex); switch (widgetIndex) @@ -414,10 +417,10 @@ namespace OpenRCT2::Ui::Windows void BaseMouseDown(WidgetIndex widgetIndex, Widget* widget) { - if (_settings.algorithm == MapGenAlgorithm::simplexNoise) + if (_settings.algorithm == MapGenerator::Algorithm::simplexNoise) SimplexMouseDown(widgetIndex, widget); - else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) + else if (_settings.algorithm == MapGenerator::Algorithm::heightmapImage) HeightmapMouseDown(widgetIndex, widget); switch (widgetIndex) @@ -481,7 +484,7 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_HEIGHTMAP_SOURCE_DROPDOWN: - _settings.algorithm = MapGenAlgorithm(dropdownIndex); + _settings.algorithm = MapGenerator::Algorithm(dropdownIndex); Invalidate(); break; } @@ -489,9 +492,9 @@ namespace OpenRCT2::Ui::Windows void BaseTextInput(WidgetIndex widgetIndex, int32_t value) { - if (_settings.algorithm == MapGenAlgorithm::simplexNoise) + if (_settings.algorithm == MapGenerator::Algorithm::simplexNoise) SimplexTextInput(widgetIndex, value); - else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) + else if (_settings.algorithm == MapGenerator::Algorithm::heightmapImage) HeightmapTextInput(widgetIndex, value); switch (widgetIndex) @@ -522,7 +525,7 @@ namespace OpenRCT2::Ui::Windows SetWidgetPressed(WIDX_MAP_SIZE_LINK, _mapWidthAndHeightLinked); SetWidgetDisabled(WIDX_MAP_SIZE_LINK, _settings.mapSize.x != _settings.mapSize.y); - bool isHeightMapImage = _settings.algorithm == MapGenAlgorithm::heightmapImage; + bool isHeightMapImage = _settings.algorithm == MapGenerator::Algorithm::heightmapImage; SetWidgetDisabled(WIDX_MAP_SIZE_Y, isHeightMapImage); SetWidgetDisabled(WIDX_MAP_SIZE_Y_UP, isHeightMapImage); SetWidgetDisabled(WIDX_MAP_SIZE_Y_DOWN, isHeightMapImage); @@ -551,19 +554,19 @@ namespace OpenRCT2::Ui::Windows auto& sourceWidget = widgets[WIDX_HEIGHTMAP_SOURCE]; switch (_settings.algorithm) { - case MapGenAlgorithm::blank: + case MapGenerator::Algorithm::blank: sourceWidget.text = STR_HEIGHTMAP_FLATLAND; ToggleSimplexWidgets(false); ToggleHeightmapWidgets(false); break; - case MapGenAlgorithm::simplexNoise: + case MapGenerator::Algorithm::simplexNoise: sourceWidget.text = STR_HEIGHTMAP_SIMPLEX_NOISE; ToggleSimplexWidgets(true); ToggleHeightmapWidgets(false); break; - case MapGenAlgorithm::heightmapImage: + case MapGenerator::Algorithm::heightmapImage: sourceWidget.text = STR_HEIGHTMAP_FILE; ToggleSimplexWidgets(false); ToggleHeightmapWidgets(true); @@ -603,10 +606,10 @@ namespace OpenRCT2::Ui::Windows DrawWidgets(dpi); DrawTabImages(dpi); - if (_settings.algorithm == MapGenAlgorithm::simplexNoise) + if (_settings.algorithm == MapGenerator::Algorithm::simplexNoise) SimplexDraw(dpi); - else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) + else if (_settings.algorithm == MapGenerator::Algorithm::heightmapImage) HeightmapDraw(dpi); const auto enabledColour = colours[1]; @@ -753,7 +756,7 @@ namespace OpenRCT2::Ui::Windows SetPressedTab(); - const bool isFlatland = _settings.algorithm == MapGenAlgorithm::blank; + const bool isFlatland = _settings.algorithm == MapGenerator::Algorithm::blank; SetWidgetDisabled(WIDX_TREE_LAND_RATIO, !_settings.trees); SetWidgetDisabled(WIDX_TREE_LAND_RATIO_UP, !_settings.trees); @@ -801,7 +804,7 @@ namespace OpenRCT2::Ui::Windows STR_RIDE_LENGTH_ENTRY, ft, { textColour }); // Maximum tree altitude, label and value - const bool isFlatland = _settings.algorithm == MapGenAlgorithm::blank; + const bool isFlatland = _settings.algorithm == MapGenerator::Algorithm::blank; const auto maxTreeTextColour = _settings.trees && !isFlatland ? enabledColour : disabledColour; DrawTextBasic( @@ -1232,10 +1235,10 @@ namespace OpenRCT2::Ui::Windows SetWidgetEnabled(WIDX_WALL_TEXTURE, !_randomTerrain); // Max land height option is irrelevant for flatland - SetWidgetEnabled(WIDX_HEIGHTMAP_HIGH, _settings.algorithm != MapGenAlgorithm::blank); + SetWidgetEnabled(WIDX_HEIGHTMAP_HIGH, _settings.algorithm != MapGenerator::Algorithm::blank); // Only offer terrain edge smoothing if we don't use flatland terrain - SetWidgetEnabled(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.algorithm != MapGenAlgorithm::blank); + SetWidgetEnabled(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.algorithm != MapGenerator::Algorithm::blank); SetPressedTab(); } @@ -1395,7 +1398,7 @@ namespace OpenRCT2::Ui::Windows void OnClose() override { - MapGenUnloadHeightmapImage(); + MapGenerator::UnloadHeightmapImage(); } void OnMouseUp(WidgetIndex widgetIndex) override @@ -1454,7 +1457,7 @@ namespace OpenRCT2::Ui::Windows void OnPrepareDraw() override { - bool isHeightMapImage = _settings.algorithm == MapGenAlgorithm::heightmapImage; + bool isHeightMapImage = _settings.algorithm == MapGenerator::Algorithm::heightmapImage; SetWidgetDisabled(WIDX_MAP_GENERATE, isHeightMapImage && !_heightmapLoaded); switch (page) @@ -1534,7 +1537,7 @@ namespace OpenRCT2::Ui::Windows { if (result == MODAL_RESULT_OK) { - if (!MapGenLoadHeightmapImage(path)) + if (!MapGenerator::LoadHeightmapImage(path)) { // TODO: Display error popup return; @@ -1543,6 +1546,7 @@ namespace OpenRCT2::Ui::Windows // The window needs to be open while using the map _heightmapLoaded = true; _heightmapFilename = fs::u8path(path).filename().string(); + _settings.algorithm = MapGenerator::Algorithm::heightmapImage; SetPage(WINDOW_MAPGEN_PAGE_BASE); } } diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index de87936311..71ee35120f 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -96,8 +98,9 @@ namespace OpenRCT2::Ui::Windows std::memcpy(&stringId, _mapTooltipArgs.Data(), sizeof(StringId)); auto& im = GetInputManager(); + auto* wm = GetContext()->GetUiContext()->GetWindowManager(); if (_cursorHoldDuration < 25 || stringId == STR_NONE || im.IsModifierKeyPressed(ModifierKey::ctrl) - || im.IsModifierKeyPressed(ModifierKey::shift) || WindowFindByClass(WindowClass::Error) != nullptr) + || im.IsModifierKeyPressed(ModifierKey::shift) || wm->FindByClass(WindowClass::Error) != nullptr) { WindowCloseByClass(WindowClass::MapTooltip); } @@ -114,7 +117,8 @@ namespace OpenRCT2::Ui::Windows const CursorState* state = ContextGetCursorState(); auto pos = state->position + ScreenCoordsXY{ -width / 2, 15 }; - if (auto w = WindowFindByClass(WindowClass::MapTooltip)) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (auto w = windowMgr->FindByClass(WindowClass::MapTooltip)) { w->Invalidate(); w->windowPos = pos; diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index e7bc851276..16ec9830af 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include #include @@ -442,9 +444,8 @@ namespace OpenRCT2::Ui::Windows void WindowMazeConstructionUpdatePressedWidgets() { - WindowBase* w; - - w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr) return; diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 002593272c..07fd363ab3 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/NetworkStatus.cpp b/src/openrct2-ui/windows/NetworkStatus.cpp index 35d68f0142..db730f4a0f 100644 --- a/src/openrct2-ui/windows/NetworkStatus.cpp +++ b/src/openrct2-ui/windows/NetworkStatus.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,6 +12,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -135,8 +137,10 @@ namespace OpenRCT2::Ui::Windows { ContextForceCloseWindowByClass(WindowClass::ProgressWindow); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + NetworkStatusWindow* window; - if ((window = static_cast(WindowFindByClass(WindowClass::NetworkStatus))) != nullptr) + if ((window = static_cast(windowMgr->FindByClass(WindowClass::NetworkStatus))) != nullptr) { WindowBringToFront(*window); } @@ -154,7 +158,8 @@ namespace OpenRCT2::Ui::Windows // force close void WindowNetworkStatusClose() { - auto window = WindowFindByClass(WindowClass::NetworkStatus); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = windowMgr->FindByClass(WindowClass::NetworkStatus); if (window == nullptr) { return; diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 221bd64465..e000ad9c2d 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -421,7 +424,8 @@ namespace OpenRCT2::Ui::Windows void WindowCampaignRefreshRides() { - auto w = static_cast(WindowFindByClass(WindowClass::NewCampaign)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = static_cast(windowMgr->FindByClass(WindowClass::NewCampaign)); if (w != nullptr) { w->RefreshRides(); diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 2284c06610..0837982e8e 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include #include @@ -1098,7 +1100,8 @@ namespace OpenRCT2::Ui::Windows */ void WindowNewRideFocus(RideSelection rideItem) { - auto w = static_cast(WindowFindByClass(WindowClass::ConstructRide)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = static_cast(windowMgr->FindByClass(WindowClass::ConstructRide)); if (!w) { return; diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index e07083b641..dcfa354f2f 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -19,7 +19,8 @@ #include #include #include -#include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -262,7 +263,10 @@ namespace OpenRCT2::Ui::Windows } } - ImageIndex imageId = GetPeepAnimation(spriteType).base_image + 1; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + ImageIndex imageId = animObj->GetPeepAnimation(spriteType).base_image + 1; auto image = ImageId(imageId, peep->TshirtColour, peep->TrousersColour); GfxDrawSprite(cliped_dpi, image, clipCoords); break; diff --git a/src/openrct2-ui/windows/NewsOptions.cpp b/src/openrct2-ui/windows/NewsOptions.cpp index 1dffb1ea75..c3f952412e 100644 --- a/src/openrct2-ui/windows/NewsOptions.cpp +++ b/src/openrct2-ui/windows/NewsOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index b37ad293b0..bfa6916dcb 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 8ab2fc2198..b40f50d85a 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index d238b16a40..123efe5141 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -1289,7 +1289,9 @@ namespace OpenRCT2::Ui::Windows spriteIdx = spriteIdx.WithIndexOffset((frame_no / 8) % 8); GfxDrawSprite(dpi, spriteIdx, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_3].left, widgets[WIDX_TAB_3].top }); - ImageId peepImage(GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1, COLOUR_BRIGHT_RED, COLOUR_TEAL); + auto* animObj = findPeepAnimationsObjectForType(AnimationPeepType::Guest); + ImageId peepImage( + animObj->GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1, COLOUR_BRIGHT_RED, COLOUR_TEAL); if (page == WINDOW_PARK_PAGE_GUESTS) peepImage = peepImage.WithIndexOffset(_peepAnimationFrame & 0xFFFFFFFC); diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index 676523c743..ad9eef35ab 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -274,7 +276,8 @@ namespace OpenRCT2::Ui::Windows bool IsStaffWindowOpen() { // If staff window for this patrol area was closed, tool is no longer active - auto staffWindow = WindowFindByNumber(WindowClass::Peep, _staffId); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto staffWindow = windowMgr->FindByNumber(WindowClass::Peep, _staffId); return staffWindow != nullptr; } @@ -303,7 +306,8 @@ namespace OpenRCT2::Ui::Windows EntityId WindowPatrolAreaGetCurrentStaffId() { - auto current = reinterpret_cast(WindowFindByClass(WindowClass::PatrolArea)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto current = reinterpret_cast(windowMgr->FindByClass(WindowClass::PatrolArea)); return current != nullptr ? current->GetStaffId() : EntityId::GetNull(); } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 00ffeb493a..6583dda356 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ProgressWindow.cpp b/src/openrct2-ui/windows/ProgressWindow.cpp index 2866eddc16..e9e87dd6f9 100644 --- a/src/openrct2-ui/windows/ProgressWindow.cpp +++ b/src/openrct2-ui/windows/ProgressWindow.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,6 +16,8 @@ #include #include #include +#include +#include #include #include @@ -235,8 +237,10 @@ namespace OpenRCT2::Ui::Windows { ContextForceCloseWindowByClass(WindowClass::NetworkStatus); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + ProgressWindow* window; - if ((window = static_cast(WindowFindByClass(WindowClass::ProgressWindow))) != nullptr) + if ((window = static_cast(windowMgr->FindByClass(WindowClass::ProgressWindow))) != nullptr) { WindowBringToFront(*window); } @@ -254,7 +258,8 @@ namespace OpenRCT2::Ui::Windows void ProgressWindowSet(uint32_t currentProgress, uint32_t totalCount, StringId format) { - auto window = WindowFindByClass(WindowClass::ProgressWindow); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = windowMgr->FindByClass(WindowClass::ProgressWindow); if (window == nullptr) { return; @@ -266,7 +271,8 @@ namespace OpenRCT2::Ui::Windows // Closes the window, deliberately *without* executing the callback. void ProgressWindowClose() { - auto window = WindowFindByClass(WindowClass::ProgressWindow); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = windowMgr->FindByClass(WindowClass::ProgressWindow); if (window == nullptr) { return; diff --git a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp index 13cc692feb..c0a8284928 100644 --- a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp +++ b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include #include @@ -101,10 +103,10 @@ namespace OpenRCT2::Ui::Windows WindowBase* RideRefurbishPromptOpen(const Ride& ride) { - WindowBase* w; RefurbishRidePromptWindow* newWindow; - w = WindowFindByClass(WindowClass::DemolishRidePrompt); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::DemolishRidePrompt); if (w != nullptr) { auto windowPos = w->windowPos; diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 41d22fe7b3..f1aff77a4f 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 857491f3a2..fdb04dc8c4 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -50,8 +50,8 @@ #include #include #include +#include #include -#include #include #include #include @@ -64,6 +64,8 @@ #include #include #include +#include +#include #include #include #include @@ -1146,7 +1148,8 @@ namespace OpenRCT2::Ui::Windows if (newPage == WINDOW_RIDE_PAGE_VEHICLE) { - auto constructionWindow = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto constructionWindow = windowMgr->FindByClass(WindowClass::RideConstruction); if (constructionWindow != nullptr && constructionWindow->number == number) { WindowCloseByClass(WindowClass::RideConstruction); @@ -1330,7 +1333,8 @@ namespace OpenRCT2::Ui::Windows if (page == WINDOW_RIDE_PAGE_CUSTOMER) spriteIndex = picked_peep_frame & ~3; - spriteIndex += GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1; + auto* animObj = findPeepAnimationsObjectForType(AnimationPeepType::Guest); + spriteIndex += animObj->GetPeepAnimation(PeepAnimationGroup::Normal).base_image + 1; GfxDrawSprite( dpi, ImageId(spriteIndex, COLOUR_BRIGHT_RED, COLOUR_TEAL), @@ -1640,7 +1644,8 @@ namespace OpenRCT2::Ui::Windows if (ride != nullptr) { RideConstructionStart(*ride); - if (WindowFindByNumber(WindowClass::RideConstruction, ride->id.ToUnderlying()) != nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByNumber(WindowClass::RideConstruction, ride->id.ToUnderlying()) != nullptr) { Close(); return; @@ -7156,7 +7161,8 @@ namespace OpenRCT2::Ui::Windows view++; } - auto* w = static_cast(WindowFindByNumber(WindowClass::Ride, ride->id.ToUnderlying())); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = static_cast(windowMgr->FindByNumber(WindowClass::Ride, ride->id.ToUnderlying())); if (w != nullptr) { w->Invalidate(); @@ -7177,7 +7183,8 @@ namespace OpenRCT2::Ui::Windows continue; numPeepsLeft--; - WindowBase* w2 = WindowFindByNumber(WindowClass::Peep, vehicle->peep[i]); + + WindowBase* w2 = windowMgr->FindByNumber(WindowClass::Peep, vehicle->peep[i]); if (w2 == nullptr) { auto intent = Intent(WindowClass::Peep); @@ -7191,7 +7198,7 @@ namespace OpenRCT2::Ui::Windows } w = static_cast( - openedPeepWindow ? WindowFindByNumber(WindowClass::Ride, ride->id.ToUnderlying()) + openedPeepWindow ? windowMgr->FindByNumber(WindowClass::Ride, ride->id.ToUnderlying()) : WindowBringToFrontByNumber(WindowClass::Ride, ride->id.ToUnderlying())); } @@ -7208,7 +7215,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideInvalidateVehicle(const Vehicle& vehicle) { - auto* w = static_cast(WindowFindByNumber(WindowClass::Ride, vehicle.ride.ToUnderlying())); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = static_cast(windowMgr->FindByNumber(WindowClass::Ride, vehicle.ride.ToUnderlying())); if (w == nullptr) return; @@ -7225,7 +7233,8 @@ namespace OpenRCT2::Ui::Windows void WindowRidePaintResetVehicle(RideId rideIndex) { - auto w = static_cast(WindowFindByNumber(WindowClass::Ride, rideIndex.ToUnderlying())); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = static_cast(windowMgr->FindByNumber(WindowClass::Ride, rideIndex.ToUnderlying())); if (w != nullptr) { if (w->page == 4) // WINDOW_RIDE_PAGE_COLOUR diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 9b2209612a..4e77ccb561 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -46,9 +46,12 @@ #include #include #include +#include +#include #include #include #include +#include #include #include #include @@ -210,7 +213,8 @@ namespace OpenRCT2::Ui::Windows /* move to ride.c */ static void CloseRideWindowForConstruction(RideId rideId) { - WindowBase* w = WindowFindByNumber(WindowClass::Ride, rideId.ToUnderlying()); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(WindowClass::Ride, rideId.ToUnderlying()); if (w != nullptr && w->page == 1) WindowClose(*w); } @@ -1048,13 +1052,13 @@ namespace OpenRCT2::Ui::Windows case WIDX_NEXT_SECTION: VirtualFloorInvalidate(); RideSelectNextSection(); - if (!isToolActive(WindowClass::Scenery)) + if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) VirtualFloorSetHeight(_currentTrackBegin.z); break; case WIDX_PREVIOUS_SECTION: VirtualFloorInvalidate(); RideSelectPreviousSection(); - if (!isToolActive(WindowClass::Scenery)) + if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) VirtualFloorSetHeight(_currentTrackBegin.z); break; case WIDX_LEFT_CURVE: @@ -2812,7 +2816,8 @@ namespace OpenRCT2::Ui::Windows { if (_rideConstructionState == RideConstructionState::State0) { - auto w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr) { if (RideAreAllPossibleEntrancesAndExitsBuilt(ride).Successful) @@ -2829,7 +2834,8 @@ namespace OpenRCT2::Ui::Windows static void WindowRideConstructionDoEntranceExitCheck() { - auto w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::RideConstruction); auto ride = GetRide(_currentRideIndex); if (w == nullptr || ride == nullptr) { @@ -2838,7 +2844,7 @@ namespace OpenRCT2::Ui::Windows if (_rideConstructionState == RideConstructionState::State0) { - w = WindowFindByClass(WindowClass::RideConstruction); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr) { if (!RideAreAllPossibleEntrancesAndExitsBuilt(*ride).Successful) @@ -3064,8 +3070,8 @@ namespace OpenRCT2::Ui::Windows { return; } - - auto window = static_cast(WindowFindByClass(WindowClass::RideConstruction)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = static_cast(windowMgr->FindByClass(WindowClass::RideConstruction)); if (!window) { return; @@ -3158,7 +3164,7 @@ namespace OpenRCT2::Ui::Windows // Invalidate previous track piece (we may not be changing height!) VirtualFloorInvalidate(); - if (!isToolActive(WindowClass::Scenery)) + if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) { // Set height to where the next track piece would begin VirtualFloorSetHeight(_currentTrackBegin.z); @@ -3296,7 +3302,8 @@ namespace OpenRCT2::Ui::Windows const auto& rtd = ride->GetRideTypeDescriptor(); if (rtd.specialType != RtdSpecialType::maze) { - auto window = static_cast(WindowFindByClass(WindowClass::RideConstruction)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto window = static_cast(windowMgr->FindByClass(WindowClass::RideConstruction)); if (!window) { return; @@ -3598,7 +3605,9 @@ namespace OpenRCT2::Ui::Windows _currentTrackSelectionFlags = 0; auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION); ContextBroadcastIntent(&intent); - w = WindowFindByClass(WindowClass::RideConstruction); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr) break; @@ -3630,8 +3639,8 @@ namespace OpenRCT2::Ui::Windows || errorText == STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND || errorText == STR_TOO_HIGH_FOR_SUPPORTS || zAttempts == (numAttempts - 1) || z < 0) { - OpenRCT2::Audio::Play(OpenRCT2::Audio::SoundId::Error, 0, state->position.x); - w = WindowFindByClass(WindowClass::RideConstruction); + Audio::Play(OpenRCT2::Audio::SoundId::Error, 0, state->position.x); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr) { ToolSet(*w, WIDX_CONSTRUCT, Tool::Crosshair); @@ -3663,7 +3672,9 @@ namespace OpenRCT2::Ui::Windows _currentTrackBegin.z = z; _currentTrackSelectionFlags = 0; WindowRideConstructionUpdateActiveElements(); - w = WindowFindByClass(WindowClass::RideConstruction); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr) break; @@ -3716,7 +3727,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutTurnLeft() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_STRAIGHT) || w->widgets[WIDX_STRAIGHT].type == WindowWidgetType::Empty) { return; @@ -3966,7 +3978,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutTurnRight() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_STRAIGHT) || w->widgets[WIDX_STRAIGHT].type == WindowWidgetType::Empty) { return; @@ -4219,7 +4232,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutUseTrackDefault() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_STRAIGHT) || w->widgets[WIDX_STRAIGHT].type == WindowWidgetType::Empty) { return; @@ -4249,7 +4263,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutSlopeDown() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_STRAIGHT) || w->widgets[WIDX_STRAIGHT].type == WindowWidgetType::Empty) { return; @@ -4359,7 +4374,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutSlopeUp() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_STRAIGHT) || w->widgets[WIDX_STRAIGHT].type == WindowWidgetType::Empty) { return; @@ -4469,7 +4485,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutChainLiftToggle() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_CHAIN_LIFT) || w->widgets[WIDX_CHAIN_LIFT].type == WindowWidgetType::Empty) { @@ -4481,7 +4498,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutBankLeft() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_BANK_STRAIGHT) || w->widgets[WIDX_BANK_STRAIGHT].type == WindowWidgetType::Empty) { @@ -4517,7 +4535,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutBankRight() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_BANK_STRAIGHT) || w->widgets[WIDX_BANK_STRAIGHT].type == WindowWidgetType::Empty) { @@ -4553,7 +4572,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutPreviousTrack() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_PREVIOUS_SECTION) || w->widgets[WIDX_PREVIOUS_SECTION].type == WindowWidgetType::Empty) { @@ -4565,7 +4585,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutNextTrack() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_NEXT_SECTION) || w->widgets[WIDX_NEXT_SECTION].type == WindowWidgetType::Empty) { @@ -4577,7 +4598,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutBuildCurrent() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_CONSTRUCT) || w->widgets[WIDX_CONSTRUCT].type == WindowWidgetType::Empty) { return; @@ -4588,7 +4610,8 @@ namespace OpenRCT2::Ui::Windows void WindowRideConstructionKeyboardShortcutDemolishCurrent() { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w == nullptr || WidgetIsDisabled(*w, WIDX_DEMOLISH) || w->widgets[WIDX_DEMOLISH].type == WindowWidgetType::Empty) { return; @@ -4744,7 +4767,7 @@ namespace OpenRCT2::Ui::Windows // Invalidate previous track piece (we may not be changing height!) VirtualFloorInvalidate(); - if (!isToolActive(WindowClass::Scenery)) + if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)) { // Set height to where the next track piece would begin VirtualFloorSetHeight(trackPos.z - zBegin + zEnd); diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index fc8f0245bf..cc185d1615 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/SavePrompt.cpp b/src/openrct2-ui/windows/SavePrompt.cpp index c268854c97..d1e14b00ae 100644 --- a/src/openrct2-ui/windows/SavePrompt.cpp +++ b/src/openrct2-ui/windows/SavePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index bb38c6067d..1fb8d17359 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index e1d94ad0de..ab34c1244a 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -49,6 +49,8 @@ #include #include #include +#include +#include #include #include #include @@ -421,7 +423,9 @@ namespace OpenRCT2::Ui::Windows { // Find out what scenery the cursor is over const CursorState* state = ContextGetCursorState(); - WidgetIndex widgetIndex = WindowFindWidgetFromPoint(*this, state->position); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WidgetIndex widgetIndex = windowMgr->FindWidgetFromPoint(*this, state->position); if (widgetIndex == WIDX_SCENERY_LIST) { ScreenCoordsXY scrollPos = {}; @@ -448,14 +452,16 @@ namespace OpenRCT2::Ui::Windows void OnUpdate() override { const CursorState* state = ContextGetCursorState(); - WindowBase* other = WindowFindFromPoint(state->position); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* other = windowMgr->FindFromPoint(state->position); if (other == this) { ScreenCoordsXY window = state->position - ScreenCoordsXY{ windowPos.x - 26, windowPos.y }; if (window.y < 44 || window.x <= width) { - WidgetIndex widgetIndex = WindowFindWidgetFromPoint(*this, state->position); + WidgetIndex widgetIndex = windowMgr->FindWidgetFromPoint(*this, state->position); if (widgetIndex >= WIDX_SCENERY_TAB_CONTENT_PANEL) { _hoverCounter++; @@ -2443,7 +2449,8 @@ namespace OpenRCT2::Ui::Windows const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, uint8_t* outQuadrant, Direction* outRotation) { - auto* w = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::Scenery); if (w == nullptr) { @@ -2640,7 +2647,8 @@ namespace OpenRCT2::Ui::Windows void Sub6E1F34PathItem( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, int32_t* outZ) { - auto* w = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::Scenery); if (w == nullptr) { @@ -2673,7 +2681,8 @@ namespace OpenRCT2::Ui::Windows void Sub6E1F34Wall( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, uint8_t* outEdges) { - auto* w = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::Scenery); if (w == nullptr) { @@ -2763,7 +2772,8 @@ namespace OpenRCT2::Ui::Windows void Sub6E1F34LargeScenery( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, Direction* outDirection) { - auto* w = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::Scenery); if (w == nullptr) { @@ -2864,7 +2874,8 @@ namespace OpenRCT2::Ui::Windows const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, int32_t* outZ, Direction* outDirection) { - auto* w = WindowFindByClass(WindowClass::Scenery); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = windowMgr->FindByClass(WindowClass::Scenery); if (w == nullptr) { @@ -3235,7 +3246,8 @@ namespace OpenRCT2::Ui::Windows void WindowScenerySetSelectedTab(const ObjectEntryIndex sceneryGroupIndex) { // Should this bring to front? - auto* w = static_cast(WindowFindByClass(WindowClass::Scenery)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = static_cast(windowMgr->FindByClass(WindowClass::Scenery)); if (w != nullptr) { return w->SetSelectedTab(sceneryGroupIndex); @@ -3261,7 +3273,8 @@ namespace OpenRCT2::Ui::Windows const ScenerySelection WindowSceneryGetTabSelection() { - auto* w = static_cast(WindowFindByClass(WindowClass::Scenery)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = static_cast(windowMgr->FindByClass(WindowClass::Scenery)); if (w != nullptr) { return w->GetTabSelection(); @@ -3274,7 +3287,8 @@ namespace OpenRCT2::Ui::Windows void WindowSceneryInit() { - auto* w = static_cast(WindowFindByClass(WindowClass::Scenery)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* w = static_cast(windowMgr->FindByClass(WindowClass::Scenery)); if (w != nullptr) { w->Init(); diff --git a/src/openrct2-ui/windows/SceneryScatter.cpp b/src/openrct2-ui/windows/SceneryScatter.cpp index f6fcfaeb72..8f4ce306ca 100644 --- a/src/openrct2-ui/windows/SceneryScatter.cpp +++ b/src/openrct2-ui/windows/SceneryScatter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -15,6 +15,8 @@ #include #include #include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -206,7 +208,8 @@ namespace OpenRCT2::Ui::Windows WindowBase* SceneryScatterOpen() { // Check if window is already open - auto* window = WindowFindByClass(WindowClass::SceneryScatter); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindByClass(WindowClass::SceneryScatter); if (window == nullptr) { window = WindowCreate(WindowClass::SceneryScatter, 86, 100, 0); diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 3af78923e0..8b5ca04d61 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index 0e344bca70..1f538b7c3f 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index 6c22e68c61..2cb9d2a6ee 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -17,6 +17,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -547,7 +549,8 @@ namespace OpenRCT2::Ui::Windows void ChangeShortcutWindow::NotifyShortcutKeysWindow() { - auto w = WindowFindByClass(WindowClass::KeyboardShortcutList); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::KeyboardShortcutList); if (w != nullptr) { static_cast(w)->RefreshBindings(); @@ -603,7 +606,8 @@ namespace OpenRCT2::Ui::Windows { case WIDX_RESET_PROMPT_RESET: { - auto w = WindowFindByClass(WindowClass::KeyboardShortcutList); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::KeyboardShortcutList); if (w != nullptr) { static_cast(w)->ResetAllOnActiveTab(); diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index 2dcfb75f73..6c51039545 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 6558fda86d..7a82fd97a8 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -29,8 +29,12 @@ #include #include #include -#include +#include +#include +#include #include +#include +#include #include #include #include @@ -129,7 +133,7 @@ namespace OpenRCT2::Ui::Windows class StaffWindow final : public Window { private: - EntertainerCostume _availableCostumes[EnumValue(EntertainerCostume::Count)]{}; + std::vector _availableCostumes; uint16_t _tabAnimationOffset = 0; int32_t _pickedPeepOldX = kLocationNull; @@ -137,6 +141,9 @@ namespace OpenRCT2::Ui::Windows void Initialise(EntityId entityId) { number = entityId.ToUnderlying(); + + if (GetStaff()->AssignedStaffType == StaffType::Entertainer) + _availableCostumes = getAvailableCostumeStrings(AnimationPeepType::Entertainer); } void OnOpen() override @@ -149,6 +156,12 @@ namespace OpenRCT2::Ui::Windows CancelTools(); } + void OnLanguageChange() override + { + if (GetStaff()->AssignedStaffType == StaffType::Entertainer) + _availableCostumes = getAvailableCostumeStrings(AnimationPeepType::Entertainer); + } + void OnMouseUp(WidgetIndex widgetIndex) override { if (widgetIndex <= WIDX_TAB_3) @@ -375,7 +388,9 @@ namespace OpenRCT2::Ui::Windows pickupAction.SetCallback([peepnum = number](const GameAction* ga, const GameActions::Result* result) { if (result->Error != GameActions::Status::Ok) return; - WindowBase* wind = WindowFindByNumber(WindowClass::Peep, peepnum); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* wind = windowMgr->FindByNumber(WindowClass::Peep, peepnum); if (wind != nullptr) { ToolSet(*wind, WC_STAFF__WIDX_PICKUP, Tool::Picker); @@ -576,17 +591,15 @@ namespace OpenRCT2::Ui::Windows if (staff->Is() && staff->AssignedStaffType == StaffType::Entertainer) screenCoords.y++; - int32_t imageIndex = GetPeepAnimation(staff->AnimationGroup).base_image + 1; - - int32_t offset = 0; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(staff->AnimationObjectIndex); + const auto& anim = animObj->GetPeepAnimation(staff->AnimationGroup); + int32_t animFrame = 0; if (page == WINDOW_STAFF_OVERVIEW) - { - offset = _tabAnimationOffset; - offset = floor2(offset, 4); - } - imageIndex += offset; + animFrame = _tabAnimationOffset / 4; + auto imageIndex = anim.base_image + 1 + anim.frame_offsets[animFrame] * 4; GfxDrawSprite(clip_dpi, ImageId(imageIndex, staff->TshirtColour, staff->TrousersColour), screenCoords); } @@ -636,12 +649,25 @@ namespace OpenRCT2::Ui::Windows void OverviewUpdate() { - _tabAnimationOffset++; - _tabAnimationOffset %= 24; + auto* staff = GetStaff(); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(staff->AnimationObjectIndex); - // Update pickup animation, can only happen in this tab. + // Get walking animation length + const auto& walkingAnim = animObj->GetPeepAnimation(staff->AnimationGroup, PeepAnimationType::Walking); + const auto walkingAnimLength = walkingAnim.frame_offsets.size(); + + // Overview tab animation offset + _tabAnimationOffset++; + _tabAnimationOffset %= walkingAnimLength * 4; + + // Get pickup animation length + const auto& pickAnim = animObj->GetPeepAnimation(staff->AnimationGroup, PeepAnimationType::Hanging); + const auto pickAnimLength = pickAnim.frame_offsets.size(); + + // Update pickup animation frame picked_peep_frame++; - picked_peep_frame %= 48; + picked_peep_frame %= pickAnimLength * 4; InvalidateWidget(WIDX_TAB_1); } @@ -680,8 +706,11 @@ namespace OpenRCT2::Ui::Windows return; } - auto baseImageId = GetPeepAnimation(staff->AnimationGroup, PeepAnimationType::Hanging).base_image; - baseImageId += picked_peep_frame >> 2; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(staff->AnimationObjectIndex); + + auto& pickupAnim = animObj->GetPeepAnimation(staff->AnimationGroup, PeepAnimationType::Hanging); + auto baseImageId = pickupAnim.base_image + pickupAnim.frame_offsets[picked_peep_frame >> 2]; gPickupPeepImage = ImageId(baseImageId, staff->TshirtColour, staff->TrousersColour); } @@ -768,19 +797,18 @@ namespace OpenRCT2::Ui::Windows } int32_t checkedIndex = -1; - // This will be moved below where Items Checked is when all - // of dropdown related functions are finished. This prevents - // the dropdown from not working on first click. - int32_t numCostumes = StaffGetAvailableEntertainerCostumeList(_availableCostumes); - for (int32_t i = 0; i < numCostumes; i++) + auto numCostumes = _availableCostumes.size(); + for (auto i = 0u; i < numCostumes; i++) { - EntertainerCostume costume = _availableCostumes[i]; - if (staff->AnimationGroup == EntertainerCostumeToSprite(costume)) - { + // TODO: rework interface to dropdown arguments so memcpy won't be needed + auto* nameStr = _availableCostumes[i].friendlyName.c_str(); + std::memcpy(&gDropdownItems[i].Args, &nameStr, sizeof(const char*)); + gDropdownItems[i].Format = STR_OPTIONS_DROPDOWN_ITEM; + + // Remember what item to check for the end of this event function + auto costumeIndex = _availableCostumes[i].index; + if (staff->AnimationObjectIndex == costumeIndex) checkedIndex = i; - } - gDropdownItems[i].Args = StaffCostumeNames[EnumValue(costume)]; - gDropdownItems[i].Format = STR_DROPDOWN_MENU_LABEL; } auto ddPos = ScreenCoordsXY{ ddWidget->left + windowPos.x, ddWidget->top + windowPos.y }; @@ -788,11 +816,9 @@ namespace OpenRCT2::Ui::Windows int32_t ddWidth = ddWidget->width() - 3; WindowDropdownShowTextCustomWidth(ddPos, ddHeight, colours[1], 0, Dropdown::Flag::StayOpen, numCostumes, ddWidth); - // See above note. + // Set selection if (checkedIndex != -1) - { Dropdown::SetChecked(checkedIndex, true); - } } void OptionsOnDropdown(WidgetIndex widgetIndex, int32_t dropdownIndex) @@ -805,7 +831,7 @@ namespace OpenRCT2::Ui::Windows if (dropdownIndex == -1) return; - EntertainerCostume costume = _availableCostumes[dropdownIndex]; + ObjectEntryIndex costume = _availableCostumes[dropdownIndex].index; auto staffSetCostumeAction = StaffSetCostumeAction(EntityId::FromUnderlying(number), costume); GameActions::Execute(&staffSetCostumeAction); } @@ -829,12 +855,23 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_COSTUME_BOX].type = WindowWidgetType::DropdownMenu; widgets[WIDX_COSTUME_BTN].type = WindowWidgetType::Button; - // TODO: retrieve string from object instead - auto costumeType = EnumValue(staff->AnimationGroup) - EnumValue(PeepAnimationGroup::EntertainerPanda); - if (costumeType >= 0) - widgets[WIDX_COSTUME_BOX].text = StaffCostumeNames[costumeType]; + auto pos = std::find_if(_availableCostumes.begin(), _availableCostumes.end(), [staff](auto costume) { + return costume.index == staff->AnimationObjectIndex; + }); + + if (pos != _availableCostumes.end()) + { + auto index = std::distance(_availableCostumes.begin(), pos); + auto name = _availableCostumes[index].friendlyName.c_str(); + widgets[WIDX_COSTUME_BOX].string = const_cast(name); + widgets[WIDX_COSTUME_BOX].flags |= WIDGET_FLAGS::TEXT_IS_STRING; + } else - widgets[WIDX_COSTUME_BOX].text = STR_UNKNOWN_OBJECT_TYPE; + { + widgets[WIDX_COSTUME_BOX].text = STR_EMPTY; + widgets[WIDX_COSTUME_BOX].flags &= ~WIDGET_FLAGS::TEXT_IS_STRING; + } + break; } case StaffType::Handyman: diff --git a/src/openrct2-ui/windows/StaffFirePrompt.cpp b/src/openrct2-ui/windows/StaffFirePrompt.cpp index 28c4528ee7..d903ca9111 100644 --- a/src/openrct2-ui/windows/StaffFirePrompt.cpp +++ b/src/openrct2-ui/windows/StaffFirePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index 21544a7a13..e1f8cd013d 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -33,8 +33,12 @@ #include #include #include -#include +#include +#include +#include #include +#include +#include #include #include #include @@ -145,12 +149,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_STAFF_LIST_HIRE_BUTTON: { auto staffType = GetSelectedStaffType(); - auto costume = EntertainerCostume::Count; - if (staffType == StaffType::Entertainer) - { - costume = GetRandomEntertainerCostume(); - } - HireNewMember(staffType, costume); + HireNewMember(staffType); break; } case WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON: @@ -190,25 +189,29 @@ namespace OpenRCT2::Ui::Windows void OnUpdate() override { - _tabAnimationIndex++; - if (_tabAnimationIndex >= 24) + auto animPeepType = AnimationPeepType(static_cast(_selectedTab) + 1); + auto* animObj = findPeepAnimationsObjectForType(animPeepType); + if (animObj != nullptr) { - _tabAnimationIndex = 0; - } - else - { - InvalidateWidget(WIDX_STAFF_LIST_HANDYMEN_TAB + _selectedTab); + auto& anim = animObj->GetPeepAnimation(PeepAnimationGroup::Normal); + _tabAnimationIndex++; - // Enable highlighting of these staff members in map window - if (WindowFindByClass(WindowClass::Map) != nullptr) + if (_tabAnimationIndex >= anim.frame_offsets.size() * 4) + _tabAnimationIndex = 0; + + InvalidateWidget(WIDX_STAFF_LIST_HANDYMEN_TAB + _selectedTab); + } + + // Enable highlighting of these staff members in map window + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::Map) != nullptr) + { + for (auto peep : EntityList()) { - for (auto peep : EntityList()) + EntitySetFlashing(peep, false); + if (peep->AssignedStaffType == GetSelectedStaffType()) { - EntitySetFlashing(peep, false); - if (peep->AssignedStaffType == GetSelectedStaffType()) - { - EntitySetFlashing(peep, true); - } + EntitySetFlashing(peep, true); } } } @@ -458,7 +461,7 @@ namespace OpenRCT2::Ui::Windows } else { - GfxDrawSprite(dpi, ImageId(GetEntertainerCostumeSprite(peep->AnimationGroup)), { staffOrderIcon_x, y }); + GfxDrawSprite(dpi, GetCostumeInlineSprite(peep->AnimationObjectIndex), { staffOrderIcon_x, y }); } } @@ -526,7 +529,7 @@ namespace OpenRCT2::Ui::Windows /** * Hires a new staff member of the given type. */ - void HireNewMember(StaffType staffType, EntertainerCostume entertainerType) + void HireNewMember(StaffType staffType) { bool autoPosition = Config::Get().general.AutoStaffPlacement; if (GetInputManager().IsModifierKeyPressed(ModifierKey::shift)) @@ -549,7 +552,14 @@ namespace OpenRCT2::Ui::Windows staffOrders = STAFF_ORDERS_INSPECT_RIDES | STAFF_ORDERS_FIX_RIDES; } - auto hireStaffAction = StaffHireNewAction(autoPosition, staffType, entertainerType, staffOrders); + auto animPeepType = AnimationPeepType(static_cast(staffType) + 1); + ObjectEntryIndex costume; + if (staffType == StaffType::Entertainer) + costume = findRandomPeepAnimationsIndexForType(animPeepType); + else + costume = findPeepAnimationsIndexForType(animPeepType); + + auto hireStaffAction = StaffHireNewAction(autoPosition, staffType, costume, staffOrders); hireStaffAction.SetCallback([=](const GameAction*, const GameActions::Result* res) -> void { if (res->Error != GameActions::Status::Ok) return; @@ -601,34 +611,48 @@ namespace OpenRCT2::Ui::Windows void DrawTabImages(DrawPixelInfo& dpi) const { const auto& gameState = GetGameState(); - DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_HANDYMEN, PeepAnimationGroup::Handyman, gameState.StaffHandymanColour); - DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_MECHANICS, PeepAnimationGroup::Mechanic, gameState.StaffMechanicColour); - DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_SECURITY, PeepAnimationGroup::Security, gameState.StaffSecurityColour); - DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_ENTERTAINERS, PeepAnimationGroup::EntertainerElephant); + DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_HANDYMEN, AnimationPeepType::Handyman, gameState.StaffHandymanColour); + DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_MECHANICS, AnimationPeepType::Mechanic, gameState.StaffMechanicColour); + DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_SECURITY, AnimationPeepType::Security, gameState.StaffSecurityColour); + DrawTabImage(dpi, WINDOW_STAFF_LIST_TAB_ENTERTAINERS, AnimationPeepType::Entertainer); } - void DrawTabImage(DrawPixelInfo& dpi, int32_t tabIndex, PeepAnimationGroup type, colour_t colour) const + void DrawTabImage(DrawPixelInfo& dpi, int32_t tabIndex, AnimationPeepType type, colour_t colour) const { + PeepAnimationsObject* animObj = findPeepAnimationsObjectForType(type); + if (animObj == nullptr) + return; + auto widgetIndex = WIDX_STAFF_LIST_HANDYMEN_TAB + tabIndex; const auto& widget = widgets[widgetIndex]; - auto imageId = (_selectedTab == tabIndex ? (_tabAnimationIndex & ~3) : 0); - imageId += GetPeepAnimation(type).base_image + 1; + + auto frame = _selectedTab == tabIndex ? _tabAnimationIndex / 4 : 0; + auto& anim = animObj->GetPeepAnimation(PeepAnimationGroup::Normal); + auto imageId = anim.base_image + 1 + anim.frame_offsets[frame] * 4; + GfxDrawSprite( dpi, ImageId(imageId, colour), windowPos + ScreenCoordsXY{ (widget.left + widget.right) / 2, widget.bottom - 6 }); } - void DrawTabImage(DrawPixelInfo& dpi, int32_t tabIndex, PeepAnimationGroup type) const + void DrawTabImage(DrawPixelInfo& dpi, int32_t tabIndex, AnimationPeepType type) const { + PeepAnimationsObject* animObj = findPeepAnimationsObjectForType(type); + if (animObj == nullptr) + return; + auto widgetIndex = WIDX_STAFF_LIST_HANDYMEN_TAB + tabIndex; const auto& widget = widgets[widgetIndex]; + DrawPixelInfo clippedDpi; if (ClipDrawPixelInfo( clippedDpi, dpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.right - widget.left - 1, widget.bottom - widget.top - 1)) { - auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0); - imageId += GetPeepAnimation(type).base_image + 1; + auto frame = _selectedTab == tabIndex ? _tabAnimationIndex / 4 : 0; + auto& anim = animObj->GetPeepAnimation(PeepAnimationGroup::Normal); + auto imageId = anim.base_image + 1 + anim.frame_offsets[frame] * 4; + GfxDrawSprite(clippedDpi, ImageId(imageId), { 15, 23 }); } } @@ -683,19 +707,6 @@ namespace OpenRCT2::Ui::Windows return closestPeep; } - static EntertainerCostume GetRandomEntertainerCostume() - { - auto result = EntertainerCostume::Panda; - EntertainerCostume costumeList[EnumValue(EntertainerCostume::Count)]; - int32_t numCostumes = StaffGetAvailableEntertainerCostumeList(costumeList); - if (numCostumes > 0) - { - int32_t index = UtilRand() % numCostumes; - result = costumeList[index]; - } - return result; - } - static constexpr StaffNamingConvention GetStaffNamingConvention(StaffType type) { switch (type) @@ -725,36 +736,11 @@ namespace OpenRCT2::Ui::Windows } } - static uint32_t GetEntertainerCostumeSprite(PeepAnimationGroup type) + static ImageId GetCostumeInlineSprite(ObjectEntryIndex index) { - switch (type) - { - case PeepAnimationGroup::EntertainerPanda: - return SPR_STAFF_COSTUME_PANDA; - case PeepAnimationGroup::EntertainerTiger: - return SPR_STAFF_COSTUME_TIGER; - case PeepAnimationGroup::EntertainerElephant: - return SPR_STAFF_COSTUME_ELEPHANT; - case PeepAnimationGroup::EntertainerRoman: - return SPR_STAFF_COSTUME_ROMAN; - case PeepAnimationGroup::EntertainerGorilla: - return SPR_STAFF_COSTUME_GORILLA; - case PeepAnimationGroup::EntertainerSnowman: - return SPR_STAFF_COSTUME_SNOWMAN; - case PeepAnimationGroup::EntertainerKnight: - return SPR_STAFF_COSTUME_KNIGHT; - case PeepAnimationGroup::EntertainerAstronaut: - return SPR_STAFF_COSTUME_ASTRONAUT; - case PeepAnimationGroup::EntertainerBandit: - return SPR_STAFF_COSTUME_BANDIT; - case PeepAnimationGroup::EntertainerSheriff: - return SPR_STAFF_COSTUME_SHERIFF; - case PeepAnimationGroup::EntertainerPirate: - return SPR_STAFF_COSTUME_PIRATE; - case PeepAnimationGroup::Normal: - default: - return SPR_PEEP_SMALL_FACE_HAPPY; - } + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(index); + return ImageId(animObj->GetInlineImageId()); } }; @@ -765,7 +751,8 @@ namespace OpenRCT2::Ui::Windows void WindowStaffListRefresh() { - auto* window = WindowFindByClass(WindowClass::StaffList); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindByClass(WindowClass::StaffList); if (window != nullptr) { static_cast(window)->RefreshList(); diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index 617546ac73..ec9521f3bb 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -18,6 +18,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -363,7 +365,8 @@ namespace OpenRCT2::Ui::Windows WindowBase* GetParentWindow() const { - return HasParentWindow() ? WindowFindByNumber(_parentWidget.window.classification, _parentWidget.window.number) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + return HasParentWindow() ? windowMgr->FindByNumber(_parentWidget.window.classification, _parentWidget.window.number) : nullptr; } }; @@ -422,7 +425,8 @@ namespace OpenRCT2::Ui::Windows } // The window can be potentially closed within a callback, we need to check if its still alive. - w = WindowFindByNumber(wndClass, wndNumber); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByNumber(wndClass, wndNumber); if (w != nullptr) w->Invalidate(); } diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index a2ede38080..7274d95db6 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -21,6 +21,8 @@ #include #include #include +#include +#include namespace OpenRCT2::Ui::Windows { @@ -386,7 +388,8 @@ namespace OpenRCT2::Ui::Windows pressed_widgets = pressedWidgets | (1 << widgetIndex); - if (WindowFindByClass(WindowClass::Dropdown) == nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::Dropdown) == nullptr) { _classIndex = -1; _buttonIndex = -1; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index c2a141947d..cb705a3800 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include #include @@ -77,9 +79,11 @@ namespace OpenRCT2::Ui::Windows WIDX_TITLE, WIDX_CLOSE, WIDX_LIST, + WIDX_SPINNER_X_LABEL, WIDX_SPINNER_X, WIDX_SPINNER_X_INCREASE, WIDX_SPINNER_X_DECREASE, + WIDX_SPINNER_Y_LABEL, WIDX_SPINNER_Y, WIDX_SPINNER_Y_INCREASE, WIDX_SPINNER_Y_DECREASE, @@ -260,8 +264,10 @@ namespace OpenRCT2::Ui::Windows #define MAIN_TILE_INSPECTOR_WIDGETS \ WINDOW_SHIM(WINDOW_TITLE, WW, WH), \ MakeWidget({3, 57}, {WW - 6, WH - PADDING_BOTTOM - 58}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_VERTICAL), /* Element list */ \ - /* X and Y spinners */ \ + /* X and Y spinners */ \ + MakeWidget ({ 4, 24}, {38, 14}, WindowWidgetType::Label, WindowColour::Secondary, STR_TILE_INSPECTOR_X_LABEL), \ MakeSpinnerWidgets({20, 23}, {51, 12}, WindowWidgetType::Spinner, WindowColour::Secondary), /* Spinner X (3 widgets) */ \ + MakeWidget ({74, 24}, {38, 14}, WindowWidgetType::Label, WindowColour::Secondary, STR_TILE_INSPECTOR_Y_LABEL), \ MakeSpinnerWidgets({90, 23}, {51, 12}, WindowWidgetType::Spinner, WindowColour::Secondary), /* Spinner Y (3 widgets) */ \ /* Top buttons */ \ MakeWidget(ToolbarButtonAnchor + ToolbarButtonOffsetX * 0, ToolbarButtonSize, WindowWidgetType::FlatBtn, WindowColour::Secondary, ImageId(SPR_DEMOLISH), STR_REMOVE_SELECTED_ELEMENT_TIP ), /* Remove button */ \ @@ -1044,25 +1050,25 @@ static uint64_t PageDisabledWidgets[] = { ScreenCoordsXY screenCoords(windowPos.x, windowPos.y); // Draw coordinates - DrawText(dpi, screenCoords + ScreenCoordsXY(5, 24), { colours[1] }, "X:"); - DrawText(dpi, screenCoords + ScreenCoordsXY(74, 24), { colours[1] }, "Y:"); + auto yOffset = widgets[WIDX_SPINNER_X_LABEL].top; if (_tileSelected) { auto tileCoords = TileCoordsXY{ _toolMap }; auto ft = Formatter(); ft.Add(tileCoords.x); DrawTextBasic( - dpi, screenCoords + ScreenCoordsXY{ 43, 24 }, STR_FORMAT_INTEGER, ft, { colours[1], TextAlignment::RIGHT }); + dpi, screenCoords + ScreenCoordsXY{ 43, yOffset }, STR_FORMAT_INTEGER, ft, + { colours[1], TextAlignment::RIGHT }); ft = Formatter(); ft.Add(tileCoords.y); DrawTextBasic( - dpi, screenCoords + ScreenCoordsXY{ 113, 24 }, STR_FORMAT_INTEGER, ft, + dpi, screenCoords + ScreenCoordsXY{ 113, yOffset }, STR_FORMAT_INTEGER, ft, { colours[1], TextAlignment::RIGHT }); } else { - DrawText(dpi, screenCoords + ScreenCoordsXY(43 - 7, 24), { colours[1] }, "-"); - DrawText(dpi, screenCoords + ScreenCoordsXY(113 - 7, 24), { colours[1] }, "-"); + DrawText(dpi, screenCoords + ScreenCoordsXY(43 - 7, yOffset), { colours[1] }, "-"); + DrawText(dpi, screenCoords + ScreenCoordsXY(113 - 7, yOffset), { colours[1] }, "-"); } if (windowTileInspectorSelectedIndex != -1) @@ -2436,14 +2442,16 @@ static uint64_t PageDisabledWidgets[] = { void WindowTileInspectorClearClipboard() { - auto* window = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindByClass(WindowClass::TileInspector); if (window != nullptr) static_cast(window)->ClearClipboard(); } void WindowTileInspectorKeyboardShortcutToggleInvisibility() { - auto* window = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindByClass(WindowClass::TileInspector); if (window != nullptr) static_cast(window)->ToggleInvisibility(); } diff --git a/src/openrct2-ui/windows/TitleExit.cpp b/src/openrct2-ui/windows/TitleExit.cpp index 4e605461b0..0fd2a4efd7 100644 --- a/src/openrct2-ui/windows/TitleExit.cpp +++ b/src/openrct2-ui/windows/TitleExit.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleLogo.cpp b/src/openrct2-ui/windows/TitleLogo.cpp index 7a2ed18d65..fa5b23b83c 100644 --- a/src/openrct2-ui/windows/TitleLogo.cpp +++ b/src/openrct2-ui/windows/TitleLogo.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleMenu.cpp b/src/openrct2-ui/windows/TitleMenu.cpp index 26ed1c84ed..26605532f6 100644 --- a/src/openrct2-ui/windows/TitleMenu.cpp +++ b/src/openrct2-ui/windows/TitleMenu.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -20,6 +20,7 @@ #include #include #include +#include namespace OpenRCT2::Ui::Windows { @@ -121,10 +122,12 @@ namespace OpenRCT2::Ui::Windows { WindowBase* windowToOpen = nullptr; + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + switch (widgetIndex) { case WIDX_START_NEW_GAME: - windowToOpen = WindowFindByClass(WindowClass::ScenarioSelect); + windowToOpen = windowMgr->FindByClass(WindowClass::ScenarioSelect); if (windowToOpen != nullptr) { WindowBringToFront(*windowToOpen); @@ -137,7 +140,7 @@ namespace OpenRCT2::Ui::Windows } break; case WIDX_CONTINUE_SAVED_GAME: - windowToOpen = WindowFindByClass(WindowClass::Loadsave); + windowToOpen = windowMgr->FindByClass(WindowClass::Loadsave); if (windowToOpen != nullptr) { WindowBringToFront(*windowToOpen); @@ -151,7 +154,7 @@ namespace OpenRCT2::Ui::Windows } break; case WIDX_MULTIPLAYER: - windowToOpen = WindowFindByClass(WindowClass::ServerList); + windowToOpen = windowMgr->FindByClass(WindowClass::ServerList); if (windowToOpen != nullptr) { WindowBringToFront(*windowToOpen); diff --git a/src/openrct2-ui/windows/TitleOptions.cpp b/src/openrct2-ui/windows/TitleOptions.cpp index 2ad6426cd9..2ab8dcc91d 100644 --- a/src/openrct2-ui/windows/TitleOptions.cpp +++ b/src/openrct2-ui/windows/TitleOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleVersion.cpp b/src/openrct2-ui/windows/TitleVersion.cpp index 32e5191044..4f1e59e7b0 100644 --- a/src/openrct2-ui/windows/TitleVersion.cpp +++ b/src/openrct2-ui/windows/TitleVersion.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Tooltip.cpp b/src/openrct2-ui/windows/Tooltip.cpp index b38363637b..89b9e0b527 100644 --- a/src/openrct2-ui/windows/Tooltip.cpp +++ b/src/openrct2-ui/windows/Tooltip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 2bfef9311e..5c9ae87777 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -37,13 +37,13 @@ #include #include #include -#include #include #include #include #include #include #include +#include #include #include #include @@ -778,7 +778,8 @@ namespace OpenRCT2::Ui::Windows void ApplyFootpathPressed() { // Footpath button pressed down - if (WindowFindByClass(WindowClass::Footpath) == nullptr) + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::Footpath) == nullptr) pressed_widgets &= ~(1uLL << WIDX_PATH); else pressed_widgets |= (1uLL << WIDX_PATH); @@ -1139,7 +1140,9 @@ namespace OpenRCT2::Ui::Windows w->viewport->flags ^= VIEWPORT_FLAG_PATH_HEIGHTS; break; case DDIDX_VIEW_CLIPPING: - if (WindowFindByClass(WindowClass::ViewClipping) == nullptr) + { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::ViewClipping) == nullptr) { ContextOpenWindow(WindowClass::ViewClipping); } @@ -1149,6 +1152,7 @@ namespace OpenRCT2::Ui::Windows w->viewport->flags ^= VIEWPORT_FLAG_CLIP_VIEW; } break; + } case DDIDX_HIGHLIGHT_PATH_ISSUES: w->viewport->flags ^= VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES; break; @@ -1506,7 +1510,8 @@ namespace OpenRCT2::Ui::Windows { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, TOP_TOOLBAR_DEBUG_COUNT); - Dropdown::SetChecked(DDIDX_DEBUG_PAINT, WindowFindByClass(WindowClass::DebugPaint) != nullptr); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + Dropdown::SetChecked(DDIDX_DEBUG_PAINT, windowMgr->FindByClass(WindowClass::DebugPaint) != nullptr); } void TopToolbar::DebugMenuDropdown(int16_t dropdownIndex) @@ -1523,7 +1528,9 @@ namespace OpenRCT2::Ui::Windows break; } case DDIDX_DEBUG_PAINT: - if (WindowFindByClass(WindowClass::DebugPaint) == nullptr) + { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + if (windowMgr->FindByClass(WindowClass::DebugPaint) == nullptr) { ContextOpenWindow(WindowClass::DebugPaint); } @@ -1532,6 +1539,7 @@ namespace OpenRCT2::Ui::Windows WindowCloseByClass(WindowClass::DebugPaint); } break; + } } } } diff --git a/src/openrct2-ui/windows/TrackDesignManage.cpp b/src/openrct2-ui/windows/TrackDesignManage.cpp index c4fc268775..1ace39ea5b 100644 --- a/src/openrct2-ui/windows/TrackDesignManage.cpp +++ b/src/openrct2-ui/windows/TrackDesignManage.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 02db21bcf3..7a6e4cde7f 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -301,18 +301,20 @@ namespace OpenRCT2::Ui::Windows Audio::Play3D(Audio::SoundId::PlaceItem, trackLoc); _currentRideIndex = rideId; + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); if (TrackDesignAreEntranceAndExitPlaced()) { auto intent = Intent(WindowClass::Ride); intent.PutExtra(INTENT_EXTRA_RIDE_ID, rideId.ToUnderlying()); ContextOpenIntent(&intent); - auto wnd = WindowFindByClass(WindowClass::TrackDesignPlace); + auto* wnd = windowMgr->FindByClass(WindowClass::TrackDesignPlace); WindowClose(*wnd); } else { RideInitialiseConstructionWindow(*getRide); - auto wnd = WindowFindByClass(WindowClass::RideConstruction); + auto* wnd = windowMgr->FindByClass(WindowClass::RideConstruction); wnd->OnMouseUp(WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE); } } @@ -746,7 +748,8 @@ namespace OpenRCT2::Ui::Windows void TrackPlaceClearProvisionalTemporarily() { - auto* trackPlaceWnd = static_cast(WindowFindByClass(WindowClass::TrackDesignPlace)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* trackPlaceWnd = static_cast(windowMgr->FindByClass(WindowClass::TrackDesignPlace)); if (trackPlaceWnd != nullptr) { trackPlaceWnd->ClearProvisionalTemporarily(); @@ -755,7 +758,8 @@ namespace OpenRCT2::Ui::Windows void TrackPlaceRestoreProvisional() { - auto* trackPlaceWnd = static_cast(WindowFindByClass(WindowClass::TrackDesignPlace)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* trackPlaceWnd = static_cast(windowMgr->FindByClass(WindowClass::TrackDesignPlace)); if (trackPlaceWnd != nullptr) { trackPlaceWnd->RestoreProvisional(); diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 658a4a9772..84d6a055c9 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -774,7 +776,8 @@ namespace OpenRCT2::Ui::Windows void WindowTrackDesignListReloadTracks() { - auto* trackListWindow = static_cast(WindowFindByClass(WindowClass::TrackDesignList)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* trackListWindow = static_cast(windowMgr->FindByClass(WindowClass::TrackDesignList)); if (trackListWindow != nullptr) { trackListWindow->ReloadTrackDesigns(); @@ -783,7 +786,8 @@ namespace OpenRCT2::Ui::Windows void WindowTrackDesignListSetBeingUpdated(const bool beingUpdated) { - auto* trackListWindow = static_cast(WindowFindByClass(WindowClass::TrackDesignList)); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* trackListWindow = static_cast(windowMgr->FindByClass(WindowClass::TrackDesignList)); if (trackListWindow != nullptr) { trackListWindow->SetIsBeingUpdated(beingUpdated); diff --git a/src/openrct2-ui/windows/Transparency.cpp b/src/openrct2-ui/windows/Transparency.cpp index c3ca76bdfd..5d658ee9be 100644 --- a/src/openrct2-ui/windows/Transparency.cpp +++ b/src/openrct2-ui/windows/Transparency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 3d4950a793..4fc6b75675 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index 11a463541d..e99e01cf95 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index 93fe35e0f5..fecda78373 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include namespace OpenRCT2::Ui::Windows @@ -252,7 +254,8 @@ namespace OpenRCT2::Ui::Windows */ void WaterToolDrag(const ScreenCoordsXY& screenPos) { - auto* window = WindowFindFromPoint(screenPos); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindFromPoint(screenPos); if (window == nullptr || window->viewport == nullptr) return; diff --git a/src/openrct2-ui/windows/Window.h b/src/openrct2-ui/windows/Window.h index 492324d9fe..ddc0faaf7d 100644 --- a/src/openrct2-ui/windows/Window.h +++ b/src/openrct2-ui/windows/Window.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-win/openrct2-win.cpp b/src/openrct2-win/openrct2-win.cpp index 2593510a31..d640e46f9a 100644 --- a/src/openrct2-win/openrct2-win.cpp +++ b/src/openrct2-win/openrct2-win.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPack.cpp b/src/openrct2/AssetPack.cpp index 051b6b0b1a..c0a696fc6f 100644 --- a/src/openrct2/AssetPack.cpp +++ b/src/openrct2/AssetPack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPack.h b/src/openrct2/AssetPack.h index 64e00dead8..a6a1a5d65a 100644 --- a/src/openrct2/AssetPack.h +++ b/src/openrct2/AssetPack.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPackManager.cpp b/src/openrct2/AssetPackManager.cpp index c5baf32cea..0145dc6b25 100644 --- a/src/openrct2/AssetPackManager.cpp +++ b/src/openrct2/AssetPackManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPackManager.h b/src/openrct2/AssetPackManager.h index eab3fdd531..1470f609b0 100644 --- a/src/openrct2/AssetPackManager.h +++ b/src/openrct2/AssetPackManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Cheats.cpp b/src/openrct2/Cheats.cpp index 7427f8931f..9abbdacbb4 100644 --- a/src/openrct2/Cheats.cpp +++ b/src/openrct2/Cheats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Cheats.h b/src/openrct2/Cheats.h index bf1539fb30..aade5041e4 100644 --- a/src/openrct2/Cheats.h +++ b/src/openrct2/Cheats.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/CommandLineSprite.cpp b/src/openrct2/CommandLineSprite.cpp index d65583e0ef..12346ae9b3 100644 --- a/src/openrct2/CommandLineSprite.cpp +++ b/src/openrct2/CommandLineSprite.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/CommandLineSprite.h b/src/openrct2/CommandLineSprite.h index a56967fdf8..73aff68bcf 100644 --- a/src/openrct2/CommandLineSprite.h +++ b/src/openrct2/CommandLineSprite.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 7d3ff955f5..045db7434f 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -44,7 +44,6 @@ #include "entity/EntityRegistry.h" #include "entity/EntityTweener.h" #include "interface/Chat.h" -#include "interface/InteractiveConsole.h" #include "interface/StdInOutConsole.h" #include "interface/Viewport.h" #include "localisation/Formatter.h" @@ -57,7 +56,6 @@ #include "object/ObjectRepository.h" #include "paint/Painter.h" #include "park/ParkFile.h" -#include "peep/PeepAnimationData.h" #include "platform/Crash.h" #include "platform/Platform.h" #include "profiling/Profiling.h" @@ -1017,7 +1015,6 @@ namespace OpenRCT2 GfxLoadG2(); GfxLoadCsg(); FontSpriteInitialiseCharacters(); - inferMaxPeepSpriteDimensions(); return true; } diff --git a/src/openrct2/Context.h b/src/openrct2/Context.h index 31e4110bd8..290dce7602 100644 --- a/src/openrct2/Context.h +++ b/src/openrct2/Context.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Date.cpp b/src/openrct2/Date.cpp index e0af8445a4..f0e893d419 100644 --- a/src/openrct2/Date.cpp +++ b/src/openrct2/Date.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Date.h b/src/openrct2/Date.h index 724815336c..74cda83ac7 100644 --- a/src/openrct2/Date.h +++ b/src/openrct2/Date.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Diagnostic.cpp b/src/openrct2/Diagnostic.cpp index ee966e58cb..7cb528387a 100644 --- a/src/openrct2/Diagnostic.cpp +++ b/src/openrct2/Diagnostic.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Diagnostic.h b/src/openrct2/Diagnostic.h index 734085874f..61bec06474 100644 --- a/src/openrct2/Diagnostic.h +++ b/src/openrct2/Diagnostic.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index ff87250ceb..7bef462b2f 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -36,6 +36,7 @@ #include "object/DefaultObjects.h" #include "object/ObjectManager.h" #include "object/ObjectRepository.h" +#include "peep/PeepAnimations.h" #include "rct1/RCT1.h" #include "scenario/Scenario.h" #include "ui/UiContext.h" @@ -324,15 +325,17 @@ namespace OpenRCT2::Editor return; } + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + switch (GetGameState().EditorStep) { case EditorStep::ObjectSelection: - if (WindowFindByClass(WindowClass::EditorObjectSelection) != nullptr) + if (windowMgr->FindByClass(WindowClass::EditorObjectSelection) != nullptr) { return; } - if (WindowFindByClass(WindowClass::InstallTrack) != nullptr) + if (windowMgr->FindByClass(WindowClass::InstallTrack) != nullptr) { return; } @@ -345,7 +348,7 @@ namespace OpenRCT2::Editor ContextOpenWindow(WindowClass::EditorObjectSelection); break; case EditorStep::InventionsListSetUp: - if (WindowFindByClass(WindowClass::EditorInventionList) != nullptr) + if (windowMgr->FindByClass(WindowClass::EditorInventionList) != nullptr) { return; } @@ -353,7 +356,7 @@ namespace OpenRCT2::Editor ContextOpenWindow(WindowClass::EditorInventionList); break; case EditorStep::OptionsSelection: - if (WindowFindByClass(WindowClass::EditorScenarioOptions) != nullptr) + if (windowMgr->FindByClass(WindowClass::EditorScenarioOptions) != nullptr) { return; } @@ -361,7 +364,7 @@ namespace OpenRCT2::Editor ContextOpenWindow(WindowClass::EditorScenarioOptions); break; case EditorStep::ObjectiveSelection: - if (WindowFindByClass(WindowClass::EditorObjectiveOptions) != nullptr) + if (windowMgr->FindByClass(WindowClass::EditorObjectiveOptions) != nullptr) { return; } @@ -445,6 +448,23 @@ namespace OpenRCT2::Editor } } + using OpenRCT2::AnimationPeepType; + constexpr std::pair kPeepCheckPairs[] = { + { AnimationPeepType::Guest, STR_AT_LEAST_ONE_GUEST_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED }, + { AnimationPeepType::Handyman, STR_AT_LEAST_ONE_HANDYMAN_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED }, + { AnimationPeepType::Mechanic, STR_AT_LEAST_ONE_MECHANIC_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED }, + { AnimationPeepType::Security, STR_AT_LEAST_ONE_SECURITY_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED }, + { AnimationPeepType::Entertainer, STR_AT_LEAST_ONE_ENTERTAINER_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED }, + }; + + for (auto& pair : kPeepCheckPairs) + { + if (!EditorCheckObjectGroupAtLeastOneOfPeepTypeSelected(EnumValue(pair.first))) + { + return { ObjectType::PeepAnimations, pair.second }; + } + } + return { ObjectType::None, STR_NONE }; } diff --git a/src/openrct2/Editor.h b/src/openrct2/Editor.h index a1c200f953..61751b9121 100644 --- a/src/openrct2/Editor.h +++ b/src/openrct2/Editor.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index bf348a9317..4ffb6f6f71 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,6 +16,8 @@ #include "GameState.h" #include "OpenRCT2.h" #include "drawing/Drawing.h" +#include "entity/Guest.h" +#include "entity/Staff.h" #include "localisation/Formatter.h" #include "management/Research.h" #include "object/DefaultObjects.h" @@ -248,6 +250,24 @@ void SetupInUseSelectionFlags() Editor::SetSelectedObject(ObjectType::Music, ride.music, ObjectSelectionFlags::InUse); } + ObjectEntryIndex lastIndex = OBJECT_ENTRY_INDEX_NULL; + for (auto* peep : EntityList()) + { + if (peep->AnimationObjectIndex == lastIndex) + continue; + + lastIndex = peep->AnimationObjectIndex; + Editor::SetSelectedObject(ObjectType::PeepAnimations, lastIndex, ObjectSelectionFlags::InUse); + } + for (auto* peep : EntityList()) + { + if (peep->AnimationObjectIndex == lastIndex) + continue; + + lastIndex = peep->AnimationObjectIndex; + Editor::SetSelectedObject(ObjectType::PeepAnimations, lastIndex, ObjectSelectionFlags::InUse); + } + // Apply selected object status for hacked vehicles that may not have an associated ride for (auto* vehicle : TrainManager::View()) { @@ -666,6 +686,23 @@ bool EditorCheckObjectGroupAtLeastOneSelected(ObjectType checkObjectType) return false; } +bool EditorCheckObjectGroupAtLeastOneOfPeepTypeSelected(uint8_t peepType) +{ + auto numObjects = std::min(ObjectRepositoryGetItemsCount(), _objectSelectionFlags.size()); + const ObjectRepositoryItem* items = ObjectRepositoryGetItems(); + + for (size_t i = 0; i < numObjects; i++) + { + const auto isAnimObjectType = items[i].Type == ObjectType::PeepAnimations; + const bool isSelected = _objectSelectionFlags[i] & ObjectSelectionFlags::Selected; + if (isAnimObjectType && isSelected && items[i].PeepAnimationsInfo.PeepType == peepType) + { + return true; + } + } + return false; +} + bool EditorCheckObjectGroupAtLeastOneSurfaceSelected(bool queue) { auto numObjects = std::min(ObjectRepositoryGetItemsCount(), _objectSelectionFlags.size()); @@ -712,6 +749,10 @@ int32_t EditorRemoveUnusedObjects() if (objectType == ObjectType::PeepNames) continue; + // Avoid deleting peep animation objects, as it ensures we don't delete the last ones for a kind of peep. + if (objectType == ObjectType::PeepAnimations) + continue; + // It’s hard to determine exactly if a scenery group is used, so do not remove these automatically. if (objectType == ObjectType::SceneryGroup) continue; diff --git a/src/openrct2/EditorObjectSelectionSession.h b/src/openrct2/EditorObjectSelectionSession.h index 8d445d3d14..73300148fd 100644 --- a/src/openrct2/EditorObjectSelectionSession.h +++ b/src/openrct2/EditorObjectSelectionSession.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -29,6 +29,7 @@ extern std::vector _objectSelectionFlags; extern uint32_t _numSelectedObjectsForType[EnumValue(ObjectType::Count)]; bool EditorCheckObjectGroupAtLeastOneSelected(ObjectType checkObjectType); +bool EditorCheckObjectGroupAtLeastOneOfPeepTypeSelected(uint8_t peepType); bool EditorCheckObjectGroupAtLeastOneSurfaceSelected(bool queue); void EditorObjectFlagsFree(); void UnloadUnselectedObjects(); diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp index 8bece1bd5d..a435f21a81 100644 --- a/src/openrct2/FileClassifier.cpp +++ b/src/openrct2/FileClassifier.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/FileClassifier.h b/src/openrct2/FileClassifier.h index a2c751ac05..1220e82842 100644 --- a/src/openrct2/FileClassifier.h +++ b/src/openrct2/FileClassifier.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index b641024f3a..9ca7527c5d 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 60f88c6de6..9b4908e1b1 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameState.cpp b/src/openrct2/GameState.cpp index f3ffeeaa79..bf9a968679 100644 --- a/src/openrct2/GameState.cpp +++ b/src/openrct2/GameState.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 3f4f2f634c..8e0f694a21 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameStateSnapshots.cpp b/src/openrct2/GameStateSnapshots.cpp index 51df1036f4..3dc5039e34 100644 --- a/src/openrct2/GameStateSnapshots.cpp +++ b/src/openrct2/GameStateSnapshots.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameStateSnapshots.h b/src/openrct2/GameStateSnapshots.h index aca9b92ec5..87d892b9ab 100644 --- a/src/openrct2/GameStateSnapshots.h +++ b/src/openrct2/GameStateSnapshots.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Identifiers.h b/src/openrct2/Identifiers.h index 423605851a..96d8949f6c 100644 --- a/src/openrct2/Identifiers.h +++ b/src/openrct2/Identifiers.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Input.cpp b/src/openrct2/Input.cpp index 4e26a5972b..c25e902ed1 100644 --- a/src/openrct2/Input.cpp +++ b/src/openrct2/Input.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Input.h b/src/openrct2/Input.h index 453abb8ef9..bf38db927c 100644 --- a/src/openrct2/Input.h +++ b/src/openrct2/Input.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Limits.h b/src/openrct2/Limits.h index 10d5a3d6a1..b2fcefa742 100644 --- a/src/openrct2/Limits.h +++ b/src/openrct2/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/OpenRCT2.cpp b/src/openrct2/OpenRCT2.cpp index e96f4917f9..bb624c7d1c 100644 --- a/src/openrct2/OpenRCT2.cpp +++ b/src/openrct2/OpenRCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/OpenRCT2.h b/src/openrct2/OpenRCT2.h index 1f8729f611..e81b6c7032 100644 --- a/src/openrct2/OpenRCT2.h +++ b/src/openrct2/OpenRCT2.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ParkImporter.cpp b/src/openrct2/ParkImporter.cpp index f52ee30124..01d127a0c9 100644 --- a/src/openrct2/ParkImporter.cpp +++ b/src/openrct2/ParkImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ParkImporter.h b/src/openrct2/ParkImporter.h index ef7fa97080..27597a6011 100644 --- a/src/openrct2/ParkImporter.h +++ b/src/openrct2/ParkImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/PlatformEnvironment.cpp b/src/openrct2/PlatformEnvironment.cpp index 2c0c83c5a0..1ff63ab9a1 100644 --- a/src/openrct2/PlatformEnvironment.cpp +++ b/src/openrct2/PlatformEnvironment.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/PlatformEnvironment.h b/src/openrct2/PlatformEnvironment.h index 96a84c80b8..120970ac67 100644 --- a/src/openrct2/PlatformEnvironment.h +++ b/src/openrct2/PlatformEnvironment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 97b6c685de..f400172e43 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ReplayManager.h b/src/openrct2/ReplayManager.h index ee5d8844d0..8b54f0404f 100644 --- a/src/openrct2/ReplayManager.h +++ b/src/openrct2/ReplayManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/System.hpp b/src/openrct2/System.hpp index 636562cf75..510097d740 100644 --- a/src/openrct2/System.hpp +++ b/src/openrct2/System.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/TrackImporter.cpp b/src/openrct2/TrackImporter.cpp index 64e9bb3f87..fb77f38e5a 100644 --- a/src/openrct2/TrackImporter.cpp +++ b/src/openrct2/TrackImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/TrackImporter.h b/src/openrct2/TrackImporter.h index 7385742305..6c2afa0cc3 100644 --- a/src/openrct2/TrackImporter.h +++ b/src/openrct2/TrackImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Version.cpp b/src/openrct2/Version.cpp index 9a0dd0e0c7..cbd7f630c0 100644 --- a/src/openrct2/Version.cpp +++ b/src/openrct2/Version.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h index afd8128967..55148c33ec 100644 --- a/src/openrct2/Version.h +++ b/src/openrct2/Version.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,7 +12,7 @@ #include #define OPENRCT2_NAME "OpenRCT2" -#define OPENRCT2_VERSION "0.4.17" +#define OPENRCT2_VERSION "0.4.18" #if defined(__amd64__) || defined(_M_AMD64) #define OPENRCT2_ARCHITECTURE "x86-64" @@ -34,6 +34,8 @@ #define OPENRCT2_ARCHITECTURE "mips" #elif defined(__riscv) #define OPENRCT2_ARCHITECTURE "RISC-V" +#elif defined(__loongarch__) + #define OPENRCT2_ARCHITECTURE "LoongArch" #endif #ifdef __wasm32__ #define OPENRCT2_ARCHITECTURE "wasm32" diff --git a/src/openrct2/actions/BalloonPressAction.cpp b/src/openrct2/actions/BalloonPressAction.cpp index 1f6ed0b8ea..331be6ab82 100644 --- a/src/openrct2/actions/BalloonPressAction.cpp +++ b/src/openrct2/actions/BalloonPressAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BalloonPressAction.h b/src/openrct2/actions/BalloonPressAction.h index 6fd8eacf1f..6520ae1cfe 100644 --- a/src/openrct2/actions/BalloonPressAction.h +++ b/src/openrct2/actions/BalloonPressAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 4b19e4032c..3ec38bc619 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerPlaceAction.h b/src/openrct2/actions/BannerPlaceAction.h index e543e99006..38bff312a1 100644 --- a/src/openrct2/actions/BannerPlaceAction.h +++ b/src/openrct2/actions/BannerPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index 9c40d69152..ab12b88c4a 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerRemoveAction.h b/src/openrct2/actions/BannerRemoveAction.h index b28ea2b7dc..a8b3c218af 100644 --- a/src/openrct2/actions/BannerRemoveAction.h +++ b/src/openrct2/actions/BannerRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetColourAction.cpp b/src/openrct2/actions/BannerSetColourAction.cpp index e7e2625752..669b7cce45 100644 --- a/src/openrct2/actions/BannerSetColourAction.cpp +++ b/src/openrct2/actions/BannerSetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetColourAction.h b/src/openrct2/actions/BannerSetColourAction.h index 5b22269dc3..5a1a663476 100644 --- a/src/openrct2/actions/BannerSetColourAction.h +++ b/src/openrct2/actions/BannerSetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index 639a0ff446..9192894f45 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetNameAction.h b/src/openrct2/actions/BannerSetNameAction.h index 41922a6bf0..01e09fd8dc 100644 --- a/src/openrct2/actions/BannerSetNameAction.h +++ b/src/openrct2/actions/BannerSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index 5d23331a76..8251910049 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetStyleAction.h b/src/openrct2/actions/BannerSetStyleAction.h index bc4b16bdb8..20de773ba6 100644 --- a/src/openrct2/actions/BannerSetStyleAction.h +++ b/src/openrct2/actions/BannerSetStyleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 8d1776cc68..c9ace81682 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CheatSetAction.h b/src/openrct2/actions/CheatSetAction.h index b0ff9c1084..fe387771b6 100644 --- a/src/openrct2/actions/CheatSetAction.h +++ b/src/openrct2/actions/CheatSetAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index 2119c98da7..63c256e90d 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClearAction.h b/src/openrct2/actions/ClearAction.h index 1619269521..1e57d81dc6 100644 --- a/src/openrct2/actions/ClearAction.h +++ b/src/openrct2/actions/ClearAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClimateSetAction.cpp b/src/openrct2/actions/ClimateSetAction.cpp index 4dabe11b0e..926b7a6448 100644 --- a/src/openrct2/actions/ClimateSetAction.cpp +++ b/src/openrct2/actions/ClimateSetAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClimateSetAction.h b/src/openrct2/actions/ClimateSetAction.h index 39f5664407..049746b612 100644 --- a/src/openrct2/actions/ClimateSetAction.h +++ b/src/openrct2/actions/ClimateSetAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CustomAction.cpp b/src/openrct2/actions/CustomAction.cpp index d6eaaea72b..a474abce63 100644 --- a/src/openrct2/actions/CustomAction.cpp +++ b/src/openrct2/actions/CustomAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CustomAction.h b/src/openrct2/actions/CustomAction.h index 8011b1d333..9e8253f36a 100644 --- a/src/openrct2/actions/CustomAction.h +++ b/src/openrct2/actions/CustomAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 8f47b12509..7188613a20 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.h b/src/openrct2/actions/FootpathAdditionPlaceAction.h index 1edcfd3005..2c53154c70 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.h +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 61c73ab5f9..1c044de47a 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.h b/src/openrct2/actions/FootpathAdditionRemoveAction.h index ce660ec543..761ebe03d5 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.h +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 010dd2e406..fe26a9f25a 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.h b/src/openrct2/actions/FootpathLayoutPlaceAction.h index 63fd99851e..8efecce6ef 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.h +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 8f93f4b9e7..406d1c28d7 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathPlaceAction.h b/src/openrct2/actions/FootpathPlaceAction.h index 6d3e72cf1c..e5192a20cd 100644 --- a/src/openrct2/actions/FootpathPlaceAction.h +++ b/src/openrct2/actions/FootpathPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 4454052ea7..603eb97755 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathRemoveAction.h b/src/openrct2/actions/FootpathRemoveAction.h index 8fba1e7185..b3c199f922 100644 --- a/src/openrct2/actions/FootpathRemoveAction.h +++ b/src/openrct2/actions/FootpathRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index db9abbe56d..ffb6c1eaf5 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index 4e827c2e42..d70cdb7666 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameActionRegistry.cpp b/src/openrct2/actions/GameActionRegistry.cpp index 8c778be043..04b9d6bb7e 100644 --- a/src/openrct2/actions/GameActionRegistry.cpp +++ b/src/openrct2/actions/GameActionRegistry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameActionResult.h b/src/openrct2/actions/GameActionResult.h index 07c9455383..137729e0f6 100644 --- a/src/openrct2/actions/GameActionResult.h +++ b/src/openrct2/actions/GameActionResult.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameSetSpeedAction.cpp b/src/openrct2/actions/GameSetSpeedAction.cpp index 569189acdb..6d4ee092d2 100644 --- a/src/openrct2/actions/GameSetSpeedAction.cpp +++ b/src/openrct2/actions/GameSetSpeedAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameSetSpeedAction.h b/src/openrct2/actions/GameSetSpeedAction.h index 2b1fe31bcb..132b4c7718 100644 --- a/src/openrct2/actions/GameSetSpeedAction.h +++ b/src/openrct2/actions/GameSetSpeedAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetFlagsAction.cpp b/src/openrct2/actions/GuestSetFlagsAction.cpp index 4ca03ab9b7..8620da0af2 100644 --- a/src/openrct2/actions/GuestSetFlagsAction.cpp +++ b/src/openrct2/actions/GuestSetFlagsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetFlagsAction.h b/src/openrct2/actions/GuestSetFlagsAction.h index a4a4f48a45..c048f89a02 100644 --- a/src/openrct2/actions/GuestSetFlagsAction.h +++ b/src/openrct2/actions/GuestSetFlagsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index a47ff275f0..73d055cee5 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetNameAction.h b/src/openrct2/actions/GuestSetNameAction.h index 837b89a222..a1266f0c7b 100644 --- a/src/openrct2/actions/GuestSetNameAction.h +++ b/src/openrct2/actions/GuestSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index f28286ec6d..a894325740 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandBuyRightsAction.h b/src/openrct2/actions/LandBuyRightsAction.h index e7c2efa68d..d0df59ae0f 100644 --- a/src/openrct2/actions/LandBuyRightsAction.h +++ b/src/openrct2/actions/LandBuyRightsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index 4439be05c7..6d7797b92c 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandLowerAction.h b/src/openrct2/actions/LandLowerAction.h index 2d7d48b3aa..98a0e8688d 100644 --- a/src/openrct2/actions/LandLowerAction.h +++ b/src/openrct2/actions/LandLowerAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 99156a1381..161b4ce732 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandRaiseAction.h b/src/openrct2/actions/LandRaiseAction.h index a70ac9e55c..8542824039 100644 --- a/src/openrct2/actions/LandRaiseAction.h +++ b/src/openrct2/actions/LandRaiseAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index a3bcd97382..a5b83dbc38 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetHeightAction.h b/src/openrct2/actions/LandSetHeightAction.h index 2d1f851e46..d3b6ca05bc 100644 --- a/src/openrct2/actions/LandSetHeightAction.h +++ b/src/openrct2/actions/LandSetHeightAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index 5a2a82e6f6..4c7edd8ef7 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetRightsAction.h b/src/openrct2/actions/LandSetRightsAction.h index ffc5289992..63fc9ebb49 100644 --- a/src/openrct2/actions/LandSetRightsAction.h +++ b/src/openrct2/actions/LandSetRightsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSmoothAction.cpp b/src/openrct2/actions/LandSmoothAction.cpp index 23929488fc..2404959504 100644 --- a/src/openrct2/actions/LandSmoothAction.cpp +++ b/src/openrct2/actions/LandSmoothAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSmoothAction.h b/src/openrct2/actions/LandSmoothAction.h index 67f8e128f4..efefffb5b3 100644 --- a/src/openrct2/actions/LandSmoothAction.h +++ b/src/openrct2/actions/LandSmoothAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 91aa584d8e..597d8f7304 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.h b/src/openrct2/actions/LargeSceneryPlaceAction.h index 4667da4d5b..06f0f30d21 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.h +++ b/src/openrct2/actions/LargeSceneryPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index 496920d969..2d2a0bdb33 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.h b/src/openrct2/actions/LargeSceneryRemoveAction.h index b49a8a819a..3978406fbf 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.h +++ b/src/openrct2/actions/LargeSceneryRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index c4dee96c2e..ef33766932 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeScenerySetColourAction.h b/src/openrct2/actions/LargeScenerySetColourAction.h index c2a8290cb6..2889f2cf48 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.h +++ b/src/openrct2/actions/LargeScenerySetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LoadOrQuitAction.cpp b/src/openrct2/actions/LoadOrQuitAction.cpp index 71efb52f0a..a6234e0273 100644 --- a/src/openrct2/actions/LoadOrQuitAction.cpp +++ b/src/openrct2/actions/LoadOrQuitAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LoadOrQuitAction.h b/src/openrct2/actions/LoadOrQuitAction.h index 39e5344a9b..ce74be7885 100644 --- a/src/openrct2/actions/LoadOrQuitAction.h +++ b/src/openrct2/actions/LoadOrQuitAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MapChangeSizeAction.cpp b/src/openrct2/actions/MapChangeSizeAction.cpp index de08e2a421..ba6a95bd7c 100644 --- a/src/openrct2/actions/MapChangeSizeAction.cpp +++ b/src/openrct2/actions/MapChangeSizeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MapChangeSizeAction.h b/src/openrct2/actions/MapChangeSizeAction.h index 2af093562e..8c8d6a9944 100644 --- a/src/openrct2/actions/MapChangeSizeAction.h +++ b/src/openrct2/actions/MapChangeSizeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 36fc6235a1..76d0f7bd76 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazePlaceTrackAction.h b/src/openrct2/actions/MazePlaceTrackAction.h index ea7ac093af..0efbc3e634 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.h +++ b/src/openrct2/actions/MazePlaceTrackAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index a1bfc21537..ad61274616 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazeSetTrackAction.h b/src/openrct2/actions/MazeSetTrackAction.h index f6e97658a2..ad2619323a 100644 --- a/src/openrct2/actions/MazeSetTrackAction.h +++ b/src/openrct2/actions/MazeSetTrackAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/NetworkModifyGroupAction.cpp b/src/openrct2/actions/NetworkModifyGroupAction.cpp index b959e440b8..ccd4e331da 100644 --- a/src/openrct2/actions/NetworkModifyGroupAction.cpp +++ b/src/openrct2/actions/NetworkModifyGroupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/NetworkModifyGroupAction.h b/src/openrct2/actions/NetworkModifyGroupAction.h index 6da7b851f5..ddd92af0f9 100644 --- a/src/openrct2/actions/NetworkModifyGroupAction.h +++ b/src/openrct2/actions/NetworkModifyGroupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index a583d4de80..9867ab78a9 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.h b/src/openrct2/actions/ParkEntrancePlaceAction.h index 137357f6e0..3ecd562592 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.h +++ b/src/openrct2/actions/ParkEntrancePlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.cpp b/src/openrct2/actions/ParkEntranceRemoveAction.cpp index cff3e7a14a..49a8f687ff 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.cpp +++ b/src/openrct2/actions/ParkEntranceRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.h b/src/openrct2/actions/ParkEntranceRemoveAction.h index 937cf88217..a9e6e3b621 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.h +++ b/src/openrct2/actions/ParkEntranceRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index 9d64090eca..0868583de1 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkMarketingAction.h b/src/openrct2/actions/ParkMarketingAction.h index ac3cf7e9df..6947270afb 100644 --- a/src/openrct2/actions/ParkMarketingAction.h +++ b/src/openrct2/actions/ParkMarketingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetDateAction.cpp b/src/openrct2/actions/ParkSetDateAction.cpp index 1c50b5f51c..4a68e64675 100644 --- a/src/openrct2/actions/ParkSetDateAction.cpp +++ b/src/openrct2/actions/ParkSetDateAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetDateAction.h b/src/openrct2/actions/ParkSetDateAction.h index 7bf710bb5b..3475d5f594 100644 --- a/src/openrct2/actions/ParkSetDateAction.h +++ b/src/openrct2/actions/ParkSetDateAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index f34de62098..d10a5764bb 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.h b/src/openrct2/actions/ParkSetEntranceFeeAction.h index a4b403f3b8..fde3aa3ab1 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.h +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index 9e2671001c..38d92fd65f 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetLoanAction.h b/src/openrct2/actions/ParkSetLoanAction.h index 0bd48eb165..bb8ffdf8ac 100644 --- a/src/openrct2/actions/ParkSetLoanAction.h +++ b/src/openrct2/actions/ParkSetLoanAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index a1e2acfe94..94596aef3d 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetNameAction.h b/src/openrct2/actions/ParkSetNameAction.h index cb7ab47352..cd2faf7948 100644 --- a/src/openrct2/actions/ParkSetNameAction.h +++ b/src/openrct2/actions/ParkSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index 28dfa0565c..ccc1efc2b6 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetParameterAction.h b/src/openrct2/actions/ParkSetParameterAction.h index 1fea683d83..7a4f598c1f 100644 --- a/src/openrct2/actions/ParkSetParameterAction.h +++ b/src/openrct2/actions/ParkSetParameterAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.cpp b/src/openrct2/actions/ParkSetResearchFundingAction.cpp index a4fdd06ce1..f170d5139b 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.cpp +++ b/src/openrct2/actions/ParkSetResearchFundingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.h b/src/openrct2/actions/ParkSetResearchFundingAction.h index 2044e7f8c7..9489e98f9a 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.h +++ b/src/openrct2/actions/ParkSetResearchFundingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PauseToggleAction.cpp b/src/openrct2/actions/PauseToggleAction.cpp index b1a27caf0c..4847f823e2 100644 --- a/src/openrct2/actions/PauseToggleAction.cpp +++ b/src/openrct2/actions/PauseToggleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PauseToggleAction.h b/src/openrct2/actions/PauseToggleAction.h index 9d0d13f123..6113a2c41d 100644 --- a/src/openrct2/actions/PauseToggleAction.h +++ b/src/openrct2/actions/PauseToggleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepPickupAction.cpp b/src/openrct2/actions/PeepPickupAction.cpp index b4ca9e897e..c5ad69606f 100644 --- a/src/openrct2/actions/PeepPickupAction.cpp +++ b/src/openrct2/actions/PeepPickupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepPickupAction.h b/src/openrct2/actions/PeepPickupAction.h index a6e4b29d78..82c7b94c7f 100644 --- a/src/openrct2/actions/PeepPickupAction.h +++ b/src/openrct2/actions/PeepPickupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.cpp b/src/openrct2/actions/PeepSpawnPlaceAction.cpp index 62a211955a..fd66c785da 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.cpp +++ b/src/openrct2/actions/PeepSpawnPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.h b/src/openrct2/actions/PeepSpawnPlaceAction.h index 5dab93a935..ab14f39305 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.h +++ b/src/openrct2/actions/PeepSpawnPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerKickAction.cpp b/src/openrct2/actions/PlayerKickAction.cpp index a47555002b..bdad5937c6 100644 --- a/src/openrct2/actions/PlayerKickAction.cpp +++ b/src/openrct2/actions/PlayerKickAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerKickAction.h b/src/openrct2/actions/PlayerKickAction.h index 1085c28286..55242ab539 100644 --- a/src/openrct2/actions/PlayerKickAction.h +++ b/src/openrct2/actions/PlayerKickAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerSetGroupAction.cpp b/src/openrct2/actions/PlayerSetGroupAction.cpp index 78802b4201..46c706f29a 100644 --- a/src/openrct2/actions/PlayerSetGroupAction.cpp +++ b/src/openrct2/actions/PlayerSetGroupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerSetGroupAction.h b/src/openrct2/actions/PlayerSetGroupAction.h index ab2fb005cc..75eb9dc0f3 100644 --- a/src/openrct2/actions/PlayerSetGroupAction.h +++ b/src/openrct2/actions/PlayerSetGroupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ResultWithMessage.h b/src/openrct2/actions/ResultWithMessage.h index e2c23c498c..fda9921ed2 100644 --- a/src/openrct2/actions/ResultWithMessage.h +++ b/src/openrct2/actions/ResultWithMessage.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index 9808ec86c0..be4d39e8c6 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideCreateAction.h b/src/openrct2/actions/RideCreateAction.h index acd57a1263..b581e8ad58 100644 --- a/src/openrct2/actions/RideCreateAction.h +++ b/src/openrct2/actions/RideCreateAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index f97ba1268d..51d45621ed 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideDemolishAction.h b/src/openrct2/actions/RideDemolishAction.h index ca0302aba8..90fd781a4b 100644 --- a/src/openrct2/actions/RideDemolishAction.h +++ b/src/openrct2/actions/RideDemolishAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index bf97fd04b4..249f8ac026 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.h b/src/openrct2/actions/RideEntranceExitPlaceAction.h index 0944ba1d19..39fcc7dd24 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.h +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp index 4155301ec4..b2f8655391 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.h b/src/openrct2/actions/RideEntranceExitRemoveAction.h index e9cde696b2..662bb1d1a6 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.h +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideFreezeRatingAction.cpp b/src/openrct2/actions/RideFreezeRatingAction.cpp index 5832ae5d0e..d714e078ee 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.cpp +++ b/src/openrct2/actions/RideFreezeRatingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideFreezeRatingAction.h b/src/openrct2/actions/RideFreezeRatingAction.h index e0a95f462a..337bddd890 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.h +++ b/src/openrct2/actions/RideFreezeRatingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index 95ff32c0c0..dcda4637fd 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetAppearanceAction.h b/src/openrct2/actions/RideSetAppearanceAction.h index 0ae64d344f..cb32528ac8 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.h +++ b/src/openrct2/actions/RideSetAppearanceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetColourSchemeAction.cpp b/src/openrct2/actions/RideSetColourSchemeAction.cpp index 561b3ff833..4f8bdb478f 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.cpp +++ b/src/openrct2/actions/RideSetColourSchemeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetColourSchemeAction.h b/src/openrct2/actions/RideSetColourSchemeAction.h index 5d75dd964c..770321ffa2 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.h +++ b/src/openrct2/actions/RideSetColourSchemeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index 228baf1ac0..f03851e16f 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetNameAction.h b/src/openrct2/actions/RideSetNameAction.h index b4c33f2387..6bf681b57f 100644 --- a/src/openrct2/actions/RideSetNameAction.h +++ b/src/openrct2/actions/RideSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetPriceAction.cpp b/src/openrct2/actions/RideSetPriceAction.cpp index 6857509e39..b4e1eb9af4 100644 --- a/src/openrct2/actions/RideSetPriceAction.cpp +++ b/src/openrct2/actions/RideSetPriceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetPriceAction.h b/src/openrct2/actions/RideSetPriceAction.h index edbbaeeb56..6825946b7a 100644 --- a/src/openrct2/actions/RideSetPriceAction.h +++ b/src/openrct2/actions/RideSetPriceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index 437d94bfd5..aba738295f 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetSettingAction.h b/src/openrct2/actions/RideSetSettingAction.h index a11bf03b0a..d13e55f9de 100644 --- a/src/openrct2/actions/RideSetSettingAction.h +++ b/src/openrct2/actions/RideSetSettingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index df5862aa6e..fb347cb3fb 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -202,7 +202,8 @@ GameActions::Result RideSetStatusAction::Execute() const // Fix #3183: Make sure we close the construction window so the ride finishes any editing code before opening // otherwise vehicles get added to the ride incorrectly (such as to a ghost station) - WindowBase* constructionWindow = WindowFindByNumber(WindowClass::RideConstruction, _rideIndex.ToUnderlying()); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* constructionWindow = windowMgr->FindByNumber(WindowClass::RideConstruction, _rideIndex.ToUnderlying()); if (constructionWindow != nullptr) { WindowClose(*constructionWindow); diff --git a/src/openrct2/actions/RideSetStatusAction.h b/src/openrct2/actions/RideSetStatusAction.h index 9802fb6b7e..96f937ac46 100644 --- a/src/openrct2/actions/RideSetStatusAction.h +++ b/src/openrct2/actions/RideSetStatusAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index af684dbcad..eae246e1e3 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetVehicleAction.h b/src/openrct2/actions/RideSetVehicleAction.h index 5862d9b140..3c69452988 100644 --- a/src/openrct2/actions/RideSetVehicleAction.h +++ b/src/openrct2/actions/RideSetVehicleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index a1dd6f7479..545e82c157 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenarioSetSettingAction.h b/src/openrct2/actions/ScenarioSetSettingAction.h index 92e01ad860..c591a77f1e 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.h +++ b/src/openrct2/actions/ScenarioSetSettingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenerySetRestrictedAction.cpp b/src/openrct2/actions/ScenerySetRestrictedAction.cpp index 136386a18a..18c4af81b6 100644 --- a/src/openrct2/actions/ScenerySetRestrictedAction.cpp +++ b/src/openrct2/actions/ScenerySetRestrictedAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenerySetRestrictedAction.h b/src/openrct2/actions/ScenerySetRestrictedAction.h index 76dcea708d..2a088eb60b 100644 --- a/src/openrct2/actions/ScenerySetRestrictedAction.h +++ b/src/openrct2/actions/ScenerySetRestrictedAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetNameAction.cpp b/src/openrct2/actions/SignSetNameAction.cpp index 8519a86de3..fa55743634 100644 --- a/src/openrct2/actions/SignSetNameAction.cpp +++ b/src/openrct2/actions/SignSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetNameAction.h b/src/openrct2/actions/SignSetNameAction.h index 0dcd2241ee..73cbfccc9e 100644 --- a/src/openrct2/actions/SignSetNameAction.h +++ b/src/openrct2/actions/SignSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetStyleAction.cpp b/src/openrct2/actions/SignSetStyleAction.cpp index 382fcdf53e..94535f2339 100644 --- a/src/openrct2/actions/SignSetStyleAction.cpp +++ b/src/openrct2/actions/SignSetStyleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetStyleAction.h b/src/openrct2/actions/SignSetStyleAction.h index df18d657c1..ccc5bceaf9 100644 --- a/src/openrct2/actions/SignSetStyleAction.h +++ b/src/openrct2/actions/SignSetStyleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 176d054fb7..cf8d053837 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.h b/src/openrct2/actions/SmallSceneryPlaceAction.h index b93fa2a72d..7a167a5529 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.h +++ b/src/openrct2/actions/SmallSceneryPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index dea1d928b2..c04fb70ee5 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.h b/src/openrct2/actions/SmallSceneryRemoveAction.h index ba064e94a2..bc4ac17042 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.h +++ b/src/openrct2/actions/SmallSceneryRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index 7dae014d62..4e32022422 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallScenerySetColourAction.h b/src/openrct2/actions/SmallScenerySetColourAction.h index ea2b11252c..9830ac3120 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.h +++ b/src/openrct2/actions/SmallScenerySetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index 2d90269c63..6846b722cb 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffFireAction.h b/src/openrct2/actions/StaffFireAction.h index e6ecdc386d..276a4e0793 100644 --- a/src/openrct2/actions/StaffFireAction.h +++ b/src/openrct2/actions/StaffFireAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index e29db45b1b..8045c36c9e 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -20,7 +20,8 @@ #include "../interface/Window.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" -#include "../peep/PeepAnimationData.h" +#include "../object/ObjectManager.h" +#include "../object/PeepAnimationsObject.h" #include "../ride/Ride.h" #include "../scenario/Scenario.h" #include "../ui/UiContext.h" @@ -32,19 +33,11 @@ using namespace OpenRCT2; -/* rct2: 0x009929FC */ -static constexpr PeepAnimationGroup spriteTypes[] = { - PeepAnimationGroup::Handyman, - PeepAnimationGroup::Mechanic, - PeepAnimationGroup::Security, - PeepAnimationGroup::EntertainerPanda, -}; - StaffHireNewAction::StaffHireNewAction( - bool autoPosition, StaffType staffType, EntertainerCostume entertainerType, uint32_t staffOrders) + bool autoPosition, StaffType staffType, ObjectEntryIndex costumeIndex, uint32_t staffOrders) : _autoPosition(autoPosition) , _staffType(static_cast(staffType)) - , _entertainerType(entertainerType) + , _costumeIndex(costumeIndex) , _staffOrders(staffOrders) { } @@ -53,7 +46,7 @@ void StaffHireNewAction::AcceptParameters(GameActionParameterVisitor& visitor) { visitor.Visit("autoPosition", _autoPosition); visitor.Visit("staffType", _staffType); - visitor.Visit("entertainerType", _entertainerType); + visitor.Visit("costumeIndex", _costumeIndex); visitor.Visit("staffOrders", _staffOrders); } @@ -66,7 +59,7 @@ void StaffHireNewAction::Serialise(DataSerialiser& stream) { GameAction::Serialise(stream); - stream << DS_TAG(_autoPosition) << DS_TAG(_staffType) << DS_TAG(_entertainerType) << DS_TAG(_staffOrders); + stream << DS_TAG(_autoPosition) << DS_TAG(_staffType) << DS_TAG(_costumeIndex) << DS_TAG(_staffOrders); } GameActions::Result StaffHireNewAction::Query() const @@ -97,17 +90,10 @@ GameActions::Result StaffHireNewAction::QueryExecute(bool execute) const if (_staffType == static_cast(StaffType::Entertainer)) { - if (static_cast(_entertainerType) >= static_cast(EntertainerCostume::Count)) + auto costumes = findAllPeepAnimationsIndexesForType(AnimationPeepType::Entertainer); + if (std::find(costumes.begin(), costumes.end(), _costumeIndex) == costumes.end()) { - LOG_ERROR("Invalid entertainer type %u", static_cast(_entertainerType)); - return GameActions::Result( - GameActions::Status::InvalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); - } - - uint32_t availableCostumes = StaffGetAvailableEntertainerCostumes(); - if (!(availableCostumes & (1 << static_cast(_entertainerType)))) - { - LOG_ERROR("Unavailable entertainer costume %u", static_cast(_entertainerType)); + LOG_ERROR("Unavailable entertainer costume %u", static_cast(_costumeIndex)); return GameActions::Result( GameActions::Status::InvalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); } @@ -163,18 +149,26 @@ GameActions::Result StaffHireNewAction::QueryExecute(bool execute) const newPeep->PeepId = newStaffId; newPeep->AssignedStaffType = static_cast(_staffType); - PeepAnimationGroup spriteType = spriteTypes[_staffType]; - if (_staffType == static_cast(StaffType::Entertainer)) - { - spriteType = EntertainerCostumeToSprite(_entertainerType); - } - newPeep->Name = nullptr; - newPeep->AnimationGroup = spriteType; + auto animPeepType = AnimationPeepType(static_cast(_staffType) + 1); + ObjectEntryIndex animObjectIndex = _costumeIndex; + if (animPeepType != AnimationPeepType::Entertainer) + animObjectIndex = findPeepAnimationsIndexForType(animPeepType); - const SpriteBounds* spriteBounds = &GetSpriteBounds(spriteType); - newPeep->SpriteData.Width = spriteBounds->sprite_width; - newPeep->SpriteData.HeightMin = spriteBounds->sprite_height_negative; - newPeep->SpriteData.HeightMax = spriteBounds->sprite_height_positive; + newPeep->Name = nullptr; + newPeep->AnimationObjectIndex = animObjectIndex; + newPeep->AnimationGroup = PeepAnimationGroup::Normal; + + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(animObjectIndex); + + newPeep->PeepFlags &= ~PEEP_FLAGS_SLOW_WALK; + if (animObj->IsSlowWalking(PeepAnimationGroup::Normal)) + newPeep->PeepFlags |= PEEP_FLAGS_SLOW_WALK; + + const auto& spriteBounds = animObj->GetSpriteBounds(newPeep->AnimationGroup); + newPeep->SpriteData.Width = spriteBounds.sprite_width; + newPeep->SpriteData.HeightMin = spriteBounds.sprite_height_negative; + newPeep->SpriteData.HeightMax = spriteBounds.sprite_height_positive; if (_autoPosition) { diff --git a/src/openrct2/actions/StaffHireNewAction.h b/src/openrct2/actions/StaffHireNewAction.h index 9dffc5aa42..26279e33e6 100644 --- a/src/openrct2/actions/StaffHireNewAction.h +++ b/src/openrct2/actions/StaffHireNewAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -22,12 +22,12 @@ class StaffHireNewAction final : public GameActionBase std::size(peep_slow_walking_types)) + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(_costume); + + auto animPeepType = AnimationPeepType(static_cast(staff->AssignedStaffType) + 1); + if (animObj->GetPeepType() != animPeepType) { LOG_ERROR("Invalid entertainer costume %u", _costume); return GameActions::Result( @@ -97,13 +82,16 @@ GameActions::Result StaffSetCostumeAction::Execute() const return GameActions::Result(GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } - auto spriteType = EntertainerCostumeToSprite(_costume); - staff->AnimationGroup = spriteType; + staff->AnimationObjectIndex = _costume; + staff->AnimationGroup = PeepAnimationGroup::Normal; + + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(_costume); + staff->PeepFlags &= ~PEEP_FLAGS_SLOW_WALK; - if (peep_slow_walking_types[EnumValue(spriteType)]) - { + if (animObj->IsSlowWalking(PeepAnimationGroup::Normal)) staff->PeepFlags |= PEEP_FLAGS_SLOW_WALK; - } + staff->AnimationFrameNum = 0; staff->UpdateCurrentAnimationType(); staff->Invalidate(); diff --git a/src/openrct2/actions/StaffSetCostumeAction.h b/src/openrct2/actions/StaffSetCostumeAction.h index f5a8a33ee2..0912663bb1 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.h +++ b/src/openrct2/actions/StaffSetCostumeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,11 +16,11 @@ class StaffSetCostumeAction final : public GameActionBase("FAHRENHEIT", TemperatureUnit::Fahrenheit), }); - static const auto Enum_Sort = ConfigEnum({ - ConfigEnumEntry("NAME_ASCENDING", Sort::NameAscending), - ConfigEnumEntry("NAME_DESCENDING", Sort::NameDescending), - ConfigEnumEntry("DATE_ASCENDING", Sort::DateAscending), - ConfigEnumEntry("DATE_DESCENDING", Sort::DateDescending), + static const auto Enum_FileBrowserSort = ConfigEnum({ + ConfigEnumEntry("NAME_ASCENDING", FileBrowserSort::NameAscending), + ConfigEnumEntry("NAME_DESCENDING", FileBrowserSort::NameDescending), + ConfigEnumEntry("DATE_ASCENDING", FileBrowserSort::DateAscending), + ConfigEnumEntry("DATE_DESCENDING", FileBrowserSort::DateDescending), }); static const auto Enum_VirtualFloorStyle = ConfigEnum({ @@ -200,7 +200,8 @@ namespace OpenRCT2::Config model->DefaultInspectionInterval = reader->GetInt32("default_inspection_interval", 2); model->LastRunVersion = reader->GetString("last_run_version", ""); model->InvertViewportDrag = reader->GetBoolean("invert_viewport_drag", false); - model->LoadSaveSort = reader->GetEnum("load_save_sort", Sort::NameAscending, Enum_Sort); + model->LoadSaveSort = reader->GetEnum( + "load_save_sort", FileBrowserSort::NameAscending, Enum_FileBrowserSort); model->MinimizeFullscreenFocusLoss = reader->GetBoolean("minimize_fullscreen_focus_loss", true); model->DisableScreensaver = reader->GetBoolean("disable_screensaver", true); @@ -252,6 +253,11 @@ namespace OpenRCT2::Config model->InvisibleSupports = reader->GetBoolean("invisible_supports", true); model->LastVersionCheckTime = reader->GetInt64("last_version_check_time", 0); + + model->FileBrowserWidth = reader->GetInt32("file_browser_width", 0); + model->FileBrowserHeight = reader->GetInt32("file_browser_height", 0); + model->FileBrowserShowSizeColumn = reader->GetBoolean("file_browser_show_size_column", true); + model->FileBrowserShowDateColumn = reader->GetBoolean("file_browser_show_date_column", true); } } @@ -295,7 +301,7 @@ namespace OpenRCT2::Config writer->WriteInt32("default_inspection_interval", model->DefaultInspectionInterval); writer->WriteString("last_run_version", model->LastRunVersion); writer->WriteBoolean("invert_viewport_drag", model->InvertViewportDrag); - writer->WriteEnum("load_save_sort", model->LoadSaveSort, Enum_Sort); + writer->WriteEnum("load_save_sort", model->LoadSaveSort, Enum_FileBrowserSort); writer->WriteBoolean("minimize_fullscreen_focus_loss", model->MinimizeFullscreenFocusLoss); writer->WriteBoolean("disable_screensaver", model->DisableScreensaver); writer->WriteBoolean("day_night_cycle", model->DayNightCycle); @@ -338,6 +344,10 @@ namespace OpenRCT2::Config writer->WriteBoolean("invisible_paths", model->InvisiblePaths); writer->WriteBoolean("invisible_supports", model->InvisibleSupports); writer->WriteInt64("last_version_check_time", model->LastVersionCheckTime); + writer->WriteInt32("file_browser_width", model->FileBrowserWidth); + writer->WriteInt32("file_browser_height", model->FileBrowserHeight); + writer->WriteBoolean("file_browser_show_size_column", model->FileBrowserShowSizeColumn); + writer->WriteBoolean("file_browser_show_date_column", model->FileBrowserShowDateColumn); } static void ReadInterface(IIniReader* reader) diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index cd73947db1..ad9c1eda9f 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -109,7 +109,7 @@ namespace OpenRCT2::Config // Loading and saving bool ConfirmationPrompt; - Sort LoadSaveSort; + FileBrowserSort LoadSaveSort; u8string LastSaveGameDirectory; u8string LastSaveLandscapeDirectory; u8string LastSaveScenarioDirectory; @@ -117,6 +117,10 @@ namespace OpenRCT2::Config u8string LastRunVersion; bool UseNativeBrowseDialog; int64_t LastVersionCheckTime; + int16_t FileBrowserWidth; + int16_t FileBrowserHeight; + bool FileBrowserShowSizeColumn; + bool FileBrowserShowDateColumn; }; struct Interface diff --git a/src/openrct2/config/ConfigEnum.hpp b/src/openrct2/config/ConfigEnum.hpp index 4056fa9502..22a2b6d342 100644 --- a/src/openrct2/config/ConfigEnum.hpp +++ b/src/openrct2/config/ConfigEnum.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/ConfigTypes.h b/src/openrct2/config/ConfigTypes.h index 2d8f4fd8f3..0419ec4fee 100644 --- a/src/openrct2/config/ConfigTypes.h +++ b/src/openrct2/config/ConfigTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -15,15 +15,16 @@ enum class MeasurementFormat : int32_t; enum class TemperatureUnit : int32_t; enum class CurrencyType : uint8_t; enum class ScaleQuality : int32_t; -enum class Sort : int32_t; enum class VirtualFloorStyles : int32_t; enum class DrawingEngine : int32_t; enum class TitleMusicKind : int32_t; -enum class Sort : int32_t +enum class FileBrowserSort : int32_t { NameAscending, NameDescending, + SizeAscending, + SizeDescending, DateAscending, DateDescending, }; diff --git a/src/openrct2/config/IniReader.cpp b/src/openrct2/config/IniReader.cpp index 66e0e49dca..55c4956209 100644 --- a/src/openrct2/config/IniReader.cpp +++ b/src/openrct2/config/IniReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniReader.hpp b/src/openrct2/config/IniReader.hpp index a65a75e216..3fe2e4b72b 100644 --- a/src/openrct2/config/IniReader.hpp +++ b/src/openrct2/config/IniReader.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniWriter.cpp b/src/openrct2/config/IniWriter.cpp index c6f529aac8..5a527757fd 100644 --- a/src/openrct2/config/IniWriter.cpp +++ b/src/openrct2/config/IniWriter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniWriter.hpp b/src/openrct2/config/IniWriter.hpp index 88277b134d..c78bc20eca 100644 --- a/src/openrct2/config/IniWriter.hpp +++ b/src/openrct2/config/IniWriter.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Algorithm.hpp b/src/openrct2/core/Algorithm.hpp index a245a345b6..46422fef5a 100644 --- a/src/openrct2/core/Algorithm.hpp +++ b/src/openrct2/core/Algorithm.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/BitSet.hpp b/src/openrct2/core/BitSet.hpp index 22bd03c450..8872860d5d 100644 --- a/src/openrct2/core/BitSet.hpp +++ b/src/openrct2/core/BitSet.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CallingConventions.h b/src/openrct2/core/CallingConventions.h index 65247d5f7e..1a1a978ebd 100644 --- a/src/openrct2/core/CallingConventions.h +++ b/src/openrct2/core/CallingConventions.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ChecksumStream.cpp b/src/openrct2/core/ChecksumStream.cpp index 5944b6b019..d79dc10d34 100644 --- a/src/openrct2/core/ChecksumStream.cpp +++ b/src/openrct2/core/ChecksumStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ChecksumStream.h b/src/openrct2/core/ChecksumStream.h index 4b63f53880..6d3174510d 100644 --- a/src/openrct2/core/ChecksumStream.h +++ b/src/openrct2/core/ChecksumStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CircularBuffer.h b/src/openrct2/core/CircularBuffer.h index ffe1c57b11..432a20f8ef 100644 --- a/src/openrct2/core/CircularBuffer.h +++ b/src/openrct2/core/CircularBuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CodepointView.hpp b/src/openrct2/core/CodepointView.hpp index 18e8f7b445..2e37752110 100644 --- a/src/openrct2/core/CodepointView.hpp +++ b/src/openrct2/core/CodepointView.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Collections.hpp b/src/openrct2/core/Collections.hpp index 1702e7f232..dee800ef6f 100644 --- a/src/openrct2/core/Collections.hpp +++ b/src/openrct2/core/Collections.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Compression.cpp b/src/openrct2/core/Compression.cpp index 23c5885a3e..d902ab60d4 100644 --- a/src/openrct2/core/Compression.cpp +++ b/src/openrct2/core/Compression.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Compression.h b/src/openrct2/core/Compression.h index 999d05db9b..d66946f4e1 100644 --- a/src/openrct2/core/Compression.h +++ b/src/openrct2/core/Compression.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Console.cpp b/src/openrct2/core/Console.cpp index f33537b942..c73c42a60b 100644 --- a/src/openrct2/core/Console.cpp +++ b/src/openrct2/core/Console.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Console.hpp b/src/openrct2/core/Console.hpp index 3e2f9e45bb..23eb496430 100644 --- a/src/openrct2/core/Console.hpp +++ b/src/openrct2/core/Console.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.CNG.cpp b/src/openrct2/core/Crypt.CNG.cpp index e874476889..891a775506 100644 --- a/src/openrct2/core/Crypt.CNG.cpp +++ b/src/openrct2/core/Crypt.CNG.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.OpenRCT2.cpp b/src/openrct2/core/Crypt.OpenRCT2.cpp index 1246d61594..d771a53d64 100644 --- a/src/openrct2/core/Crypt.OpenRCT2.cpp +++ b/src/openrct2/core/Crypt.OpenRCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.OpenSSL.cpp b/src/openrct2/core/Crypt.OpenSSL.cpp index 12834a889e..4169d72195 100644 --- a/src/openrct2/core/Crypt.OpenSSL.cpp +++ b/src/openrct2/core/Crypt.OpenSSL.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.h b/src/openrct2/core/Crypt.h index ba142fdb65..8694683c3e 100644 --- a/src/openrct2/core/Crypt.h +++ b/src/openrct2/core/Crypt.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiser.h b/src/openrct2/core/DataSerialiser.h index fab23d87c4..59d9a3aae8 100644 --- a/src/openrct2/core/DataSerialiser.h +++ b/src/openrct2/core/DataSerialiser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiserTag.h b/src/openrct2/core/DataSerialiserTag.h index 2210d4a25f..55de42cd71 100644 --- a/src/openrct2/core/DataSerialiserTag.h +++ b/src/openrct2/core/DataSerialiserTag.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiserTraits.h b/src/openrct2/core/DataSerialiserTraits.h index 26fa5c735b..8c0a74cfe0 100644 --- a/src/openrct2/core/DataSerialiserTraits.h +++ b/src/openrct2/core/DataSerialiserTraits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DateTime.h b/src/openrct2/core/DateTime.h index a5ff640a79..e340c57708 100644 --- a/src/openrct2/core/DateTime.h +++ b/src/openrct2/core/DateTime.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Diagnostics.cpp b/src/openrct2/core/Diagnostics.cpp index 74691744b7..a8840a9089 100644 --- a/src/openrct2/core/Diagnostics.cpp +++ b/src/openrct2/core/Diagnostics.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Diagnostics.hpp b/src/openrct2/core/Diagnostics.hpp index 575d759f9e..0950302a31 100644 --- a/src/openrct2/core/Diagnostics.hpp +++ b/src/openrct2/core/Diagnostics.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Endianness.h b/src/openrct2/core/Endianness.h index 76d01b052f..cebb5de099 100644 --- a/src/openrct2/core/Endianness.h +++ b/src/openrct2/core/Endianness.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/EnumMap.hpp b/src/openrct2/core/EnumMap.hpp index 9b8828d4a2..abaa7a887e 100644 --- a/src/openrct2/core/EnumMap.hpp +++ b/src/openrct2/core/EnumMap.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/EnumUtils.hpp b/src/openrct2/core/EnumUtils.hpp index a017f576ac..eead9b76a2 100644 --- a/src/openrct2/core/EnumUtils.hpp +++ b/src/openrct2/core/EnumUtils.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/File.cpp b/src/openrct2/core/File.cpp index c68f0b72ea..c5fcc0b02e 100644 --- a/src/openrct2/core/File.cpp +++ b/src/openrct2/core/File.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/File.h b/src/openrct2/core/File.h index 673c28499c..bac10253b5 100644 --- a/src/openrct2/core/File.h +++ b/src/openrct2/core/File.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileIndex.hpp b/src/openrct2/core/FileIndex.hpp index 548df7c6c4..5541453ea0 100644 --- a/src/openrct2/core/FileIndex.hpp +++ b/src/openrct2/core/FileIndex.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileScanner.cpp b/src/openrct2/core/FileScanner.cpp index 183ecbb6d8..8eab4c1808 100644 --- a/src/openrct2/core/FileScanner.cpp +++ b/src/openrct2/core/FileScanner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileScanner.h b/src/openrct2/core/FileScanner.h index 4f2432a210..ba102aec1c 100644 --- a/src/openrct2/core/FileScanner.h +++ b/src/openrct2/core/FileScanner.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileStream.cpp b/src/openrct2/core/FileStream.cpp index 05989c814f..2be57e3ef7 100644 --- a/src/openrct2/core/FileStream.cpp +++ b/src/openrct2/core/FileStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileStream.h b/src/openrct2/core/FileStream.h index e4a8981faf..7430566636 100644 --- a/src/openrct2/core/FileStream.h +++ b/src/openrct2/core/FileStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileSystem.hpp b/src/openrct2/core/FileSystem.hpp index 2e1bd7571f..c5b9d0f3d5 100644 --- a/src/openrct2/core/FileSystem.hpp +++ b/src/openrct2/core/FileSystem.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileWatcher.cpp b/src/openrct2/core/FileWatcher.cpp index 025c7c0058..c75dbee056 100644 --- a/src/openrct2/core/FileWatcher.cpp +++ b/src/openrct2/core/FileWatcher.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileWatcher.h b/src/openrct2/core/FileWatcher.h index 9c5848211e..4fd673a924 100644 --- a/src/openrct2/core/FileWatcher.h +++ b/src/openrct2/core/FileWatcher.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FixedPoint.hpp b/src/openrct2/core/FixedPoint.hpp index b6bdaa849f..ba18e227ef 100644 --- a/src/openrct2/core/FixedPoint.hpp +++ b/src/openrct2/core/FixedPoint.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FlagHolder.hpp b/src/openrct2/core/FlagHolder.hpp index 9e3c35c5f3..5e2fee481d 100644 --- a/src/openrct2/core/FlagHolder.hpp +++ b/src/openrct2/core/FlagHolder.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/GroupVector.hpp b/src/openrct2/core/GroupVector.hpp index 7fb6fe51a4..cb5a03f7a7 100644 --- a/src/openrct2/core/GroupVector.hpp +++ b/src/openrct2/core/GroupVector.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Guard.cpp b/src/openrct2/core/Guard.cpp index 7eea25b550..4dbab00e9e 100644 --- a/src/openrct2/core/Guard.cpp +++ b/src/openrct2/core/Guard.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Guard.hpp b/src/openrct2/core/Guard.hpp index 495db209db..bcb0b8d254 100644 --- a/src/openrct2/core/Guard.hpp +++ b/src/openrct2/core/Guard.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.Android.cpp b/src/openrct2/core/Http.Android.cpp index 73277f64f7..9978bbca5e 100644 --- a/src/openrct2/core/Http.Android.cpp +++ b/src/openrct2/core/Http.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.WinHttp.cpp b/src/openrct2/core/Http.WinHttp.cpp index 40e7e6c666..1219ba03dc 100644 --- a/src/openrct2/core/Http.WinHttp.cpp +++ b/src/openrct2/core/Http.WinHttp.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.cURL.cpp b/src/openrct2/core/Http.cURL.cpp index 207edefce0..c1c953a614 100644 --- a/src/openrct2/core/Http.cURL.cpp +++ b/src/openrct2/core/Http.cURL.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.h b/src/openrct2/core/Http.h index c53987897e..cafd8e8de0 100644 --- a/src/openrct2/core/Http.h +++ b/src/openrct2/core/Http.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/IStream.cpp b/src/openrct2/core/IStream.cpp index eddac2e965..733f858433 100644 --- a/src/openrct2/core/IStream.cpp +++ b/src/openrct2/core/IStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/IStream.hpp b/src/openrct2/core/IStream.hpp index 263676f8ba..60a1034fa3 100644 --- a/src/openrct2/core/IStream.hpp +++ b/src/openrct2/core/IStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Identifier.hpp b/src/openrct2/core/Identifier.hpp index 873da6a8a8..0ec335f797 100644 --- a/src/openrct2/core/Identifier.hpp +++ b/src/openrct2/core/Identifier.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Imaging.cpp b/src/openrct2/core/Imaging.cpp index 8ddbffde81..e0c1748685 100644 --- a/src/openrct2/core/Imaging.cpp +++ b/src/openrct2/core/Imaging.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Imaging.h b/src/openrct2/core/Imaging.h index 6515bcda01..dba0a2f7a9 100644 --- a/src/openrct2/core/Imaging.h +++ b/src/openrct2/core/Imaging.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/JobPool.cpp b/src/openrct2/core/JobPool.cpp index ca757ca3fa..1b19137e92 100644 --- a/src/openrct2/core/JobPool.cpp +++ b/src/openrct2/core/JobPool.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,14 +12,14 @@ #include JobPool::TaskData::TaskData(std::function workFn, std::function completionFn) - : WorkFn(workFn) - , CompletionFn(completionFn) + : WorkFn(std::move(workFn)) + , CompletionFn(std::move(completionFn)) { } JobPool::JobPool(size_t maxThreads) { - maxThreads = std::min(maxThreads, std::thread::hardware_concurrency()); + maxThreads = std::min(maxThreads, std::max(1u, std::thread::hardware_concurrency())); for (size_t n = 0; n < maxThreads; n++) { _threads.emplace_back(&JobPool::ProcessQueue, this); @@ -31,8 +31,8 @@ JobPool::~JobPool() { unique_lock lock(_mutex); _shouldStop = true; - _condPending.notify_all(); } + _condPending.notify_all(); for (auto& th : _threads) { @@ -43,8 +43,10 @@ JobPool::~JobPool() void JobPool::AddTask(std::function workFn, std::function completionFn) { - unique_lock lock(_mutex); - _pending.emplace_back(workFn, completionFn); + { + unique_lock lock(_mutex); + _pending.emplace_back(workFn, completionFn); + } _condPending.notify_one(); } @@ -59,7 +61,7 @@ void JobPool::Join(std::function reportFn) // Dispatch all completion callbacks if there are any. while (!_completed.empty()) { - auto taskData = _completed.front(); + auto taskData = std::move(_completed.front()); _completed.pop_front(); if (taskData.CompletionFn) @@ -89,16 +91,10 @@ void JobPool::Join(std::function reportFn) } } -size_t JobPool::CountPending() +bool JobPool::IsBusy() { unique_lock lock(_mutex); - return _pending.size(); -} - -size_t JobPool::CountProcessing() -{ - unique_lock lock(_mutex); - return _processing; + return _processing != 0 || !_pending.empty(); } void JobPool::ProcessQueue() @@ -113,7 +109,7 @@ void JobPool::ProcessQueue() { _processing++; - auto taskData = _pending.front(); + auto taskData = std::move(_pending.front()); _pending.pop_front(); lock.unlock(); diff --git a/src/openrct2/core/JobPool.h b/src/openrct2/core/JobPool.h index bfd51ad71c..94f76b8044 100644 --- a/src/openrct2/core/JobPool.h +++ b/src/openrct2/core/JobPool.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -9,7 +9,6 @@ #pragma once -#include #include #include #include @@ -28,8 +27,8 @@ private: TaskData(std::function workFn, std::function completionFn); }; - std::atomic_bool _shouldStop = { false }; - std::atomic _processing = { 0 }; + bool _shouldStop = false; + size_t _processing = 0; std::vector _threads; std::deque _pending; std::deque _completed; @@ -45,8 +44,7 @@ public: void AddTask(std::function workFn, std::function completionFn = nullptr); void Join(std::function reportFn = nullptr); - size_t CountPending(); - size_t CountProcessing(); + bool IsBusy(); private: void ProcessQueue(); diff --git a/src/openrct2/core/Json.cpp b/src/openrct2/core/Json.cpp index a95e208cd4..b346123249 100644 --- a/src/openrct2/core/Json.cpp +++ b/src/openrct2/core/Json.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Json.hpp b/src/openrct2/core/Json.hpp index 5d205ba980..bb24c37df6 100644 --- a/src/openrct2/core/Json.hpp +++ b/src/openrct2/core/Json.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/JsonFwd.hpp b/src/openrct2/core/JsonFwd.hpp index 2a99e258dc..f4f4c48745 100644 --- a/src/openrct2/core/JsonFwd.hpp +++ b/src/openrct2/core/JsonFwd.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Memory.hpp b/src/openrct2/core/Memory.hpp index 34a0e69982..5e5cfbf888 100644 --- a/src/openrct2/core/Memory.hpp +++ b/src/openrct2/core/Memory.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/MemoryStream.cpp b/src/openrct2/core/MemoryStream.cpp index 74f8b0e362..cda05e4aec 100644 --- a/src/openrct2/core/MemoryStream.cpp +++ b/src/openrct2/core/MemoryStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/MemoryStream.h b/src/openrct2/core/MemoryStream.h index c740cc7157..71e3e48315 100644 --- a/src/openrct2/core/MemoryStream.h +++ b/src/openrct2/core/MemoryStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Meta.hpp b/src/openrct2/core/Meta.hpp index 4076e65982..f0e653897f 100644 --- a/src/openrct2/core/Meta.hpp +++ b/src/openrct2/core/Meta.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Money.hpp b/src/openrct2/core/Money.hpp index 4a3223f239..2af65b4a05 100644 --- a/src/openrct2/core/Money.hpp +++ b/src/openrct2/core/Money.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Numerics.hpp b/src/openrct2/core/Numerics.hpp index 2064ca0b5e..d85e04d90a 100644 --- a/src/openrct2/core/Numerics.hpp +++ b/src/openrct2/core/Numerics.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/OrcaStream.hpp b/src/openrct2/core/OrcaStream.hpp index 2489e3724f..a4030e4c40 100644 --- a/src/openrct2/core/OrcaStream.hpp +++ b/src/openrct2/core/OrcaStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Path.cpp b/src/openrct2/core/Path.cpp index 1e5464c2c0..3a9d488b87 100644 --- a/src/openrct2/core/Path.cpp +++ b/src/openrct2/core/Path.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Path.hpp b/src/openrct2/core/Path.hpp index d1499c29e6..5bc2c034f2 100644 --- a/src/openrct2/core/Path.hpp +++ b/src/openrct2/core/Path.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.FriBidi.cpp b/src/openrct2/core/RTL.FriBidi.cpp index 614af97595..da98bb1a53 100644 --- a/src/openrct2/core/RTL.FriBidi.cpp +++ b/src/openrct2/core/RTL.FriBidi.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.ICU.cpp b/src/openrct2/core/RTL.ICU.cpp index 03e69519cf..7d76b896e5 100644 --- a/src/openrct2/core/RTL.ICU.cpp +++ b/src/openrct2/core/RTL.ICU.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.h b/src/openrct2/core/RTL.h index b0d916d240..2383a1d64e 100644 --- a/src/openrct2/core/RTL.h +++ b/src/openrct2/core/RTL.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Random.hpp b/src/openrct2/core/Random.hpp index fc0bee4a16..7ccf2f27e0 100644 --- a/src/openrct2/core/Random.hpp +++ b/src/openrct2/core/Random.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Range.hpp b/src/openrct2/core/Range.hpp index 27c57654f8..318ed81587 100644 --- a/src/openrct2/core/Range.hpp +++ b/src/openrct2/core/Range.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/SawyerCoding.cpp b/src/openrct2/core/SawyerCoding.cpp index 7d735c7bd3..03d7f1150c 100644 --- a/src/openrct2/core/SawyerCoding.cpp +++ b/src/openrct2/core/SawyerCoding.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/SawyerCoding.h b/src/openrct2/core/SawyerCoding.h index 16f357eb46..467041ba6d 100644 --- a/src/openrct2/core/SawyerCoding.h +++ b/src/openrct2/core/SawyerCoding.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Speed.hpp b/src/openrct2/core/Speed.hpp index 725710a338..f1a14cf5d3 100644 --- a/src/openrct2/core/Speed.hpp +++ b/src/openrct2/core/Speed.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/String.cpp b/src/openrct2/core/String.cpp index 1b37603367..fd1b1e10c9 100644 --- a/src/openrct2/core/String.cpp +++ b/src/openrct2/core/String.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/String.hpp b/src/openrct2/core/String.hpp index 608aed05b2..da52e289d3 100644 --- a/src/openrct2/core/String.hpp +++ b/src/openrct2/core/String.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringBuilder.cpp b/src/openrct2/core/StringBuilder.cpp index 3bb78cb597..4e65857166 100644 --- a/src/openrct2/core/StringBuilder.cpp +++ b/src/openrct2/core/StringBuilder.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringBuilder.h b/src/openrct2/core/StringBuilder.h index e30c429d63..9787bafe29 100644 --- a/src/openrct2/core/StringBuilder.h +++ b/src/openrct2/core/StringBuilder.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringReader.cpp b/src/openrct2/core/StringReader.cpp index 8a5c6a0b51..952f2b0bdb 100644 --- a/src/openrct2/core/StringReader.cpp +++ b/src/openrct2/core/StringReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringReader.h b/src/openrct2/core/StringReader.h index d91596914b..717c4154f5 100644 --- a/src/openrct2/core/StringReader.h +++ b/src/openrct2/core/StringReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringTypes.h b/src/openrct2/core/StringTypes.h index 0c4d33982c..a60a2d0dec 100644 --- a/src/openrct2/core/StringTypes.h +++ b/src/openrct2/core/StringTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Timer.hpp b/src/openrct2/core/Timer.hpp index cbad72264b..cc7559751e 100644 --- a/src/openrct2/core/Timer.hpp +++ b/src/openrct2/core/Timer.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UTF8.cpp b/src/openrct2/core/UTF8.cpp index 834d4569d3..713ed89f69 100644 --- a/src/openrct2/core/UTF8.cpp +++ b/src/openrct2/core/UTF8.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UTF8.h b/src/openrct2/core/UTF8.h index d93cc0bac3..f4bce12b36 100644 --- a/src/openrct2/core/UTF8.h +++ b/src/openrct2/core/UTF8.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnicodeChar.h b/src/openrct2/core/UnicodeChar.h index fcee85d382..270d8afe89 100644 --- a/src/openrct2/core/UnicodeChar.h +++ b/src/openrct2/core/UnicodeChar.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnitConversion.cpp b/src/openrct2/core/UnitConversion.cpp index 2dcaf979ec..c3cd36d14e 100644 --- a/src/openrct2/core/UnitConversion.cpp +++ b/src/openrct2/core/UnitConversion.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnitConversion.h b/src/openrct2/core/UnitConversion.h index 89614ff0a0..0c45c3f6c4 100644 --- a/src/openrct2/core/UnitConversion.h +++ b/src/openrct2/core/UnitConversion.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Zip.cpp b/src/openrct2/core/Zip.cpp index 3e00d342fc..96ae528b12 100644 --- a/src/openrct2/core/Zip.cpp +++ b/src/openrct2/core/Zip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Zip.h b/src/openrct2/core/Zip.h index e063936c2d..631b39145e 100644 --- a/src/openrct2/core/Zip.h +++ b/src/openrct2/core/Zip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ZipAndroid.cpp b/src/openrct2/core/ZipAndroid.cpp index 5d669f7dbf..b01c586e46 100644 --- a/src/openrct2/core/ZipAndroid.cpp +++ b/src/openrct2/core/ZipAndroid.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ZipStream.hpp b/src/openrct2/core/ZipStream.hpp index 7ad6e3552e..88bda263ad 100644 --- a/src/openrct2/core/ZipStream.hpp +++ b/src/openrct2/core/ZipStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/AVX2Drawing.cpp b/src/openrct2/drawing/AVX2Drawing.cpp index 70f7a6dd6f..4672cc1418 100644 --- a/src/openrct2/drawing/AVX2Drawing.cpp +++ b/src/openrct2/drawing/AVX2Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 0607ab46a5..c11544a3a6 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp index 8713cc5f8c..b1d175633d 100644 --- a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 27358fe3e8..78fac26d2b 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index fe3ec48bf7..148f3bc88b 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 3acefccdab..78d9f4c510 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 0598f3b854..0d01df3923 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/DrawingLock.hpp b/src/openrct2/drawing/DrawingLock.hpp index 2d0de20ae0..00fa292cf9 100644 --- a/src/openrct2/drawing/DrawingLock.hpp +++ b/src/openrct2/drawing/DrawingLock.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp index b961b9301c..da24d5e1d3 100644 --- a/src/openrct2/drawing/Font.cpp +++ b/src/openrct2/drawing/Font.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Font.h b/src/openrct2/drawing/Font.h index caec2dc716..df0d7c2402 100644 --- a/src/openrct2/drawing/Font.h +++ b/src/openrct2/drawing/Font.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index 0efe8df7df..5531eab066 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/IDrawingEngine.h b/src/openrct2/drawing/IDrawingEngine.h index 20d8d0d288..1c2c0e0e72 100644 --- a/src/openrct2/drawing/IDrawingEngine.h +++ b/src/openrct2/drawing/IDrawingEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Image.cpp b/src/openrct2/drawing/Image.cpp index 0044c0357f..1ac088264e 100644 --- a/src/openrct2/drawing/Image.cpp +++ b/src/openrct2/drawing/Image.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Image.h b/src/openrct2/drawing/Image.h index cb3de4f2f7..1529b1429e 100644 --- a/src/openrct2/drawing/Image.h +++ b/src/openrct2/drawing/Image.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageId.hpp b/src/openrct2/drawing/ImageId.hpp index 71486fa930..476beb6c78 100644 --- a/src/openrct2/drawing/ImageId.hpp +++ b/src/openrct2/drawing/ImageId.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageImporter.cpp b/src/openrct2/drawing/ImageImporter.cpp index a71fbeefa3..e8ee12011a 100644 --- a/src/openrct2/drawing/ImageImporter.cpp +++ b/src/openrct2/drawing/ImageImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageImporter.h b/src/openrct2/drawing/ImageImporter.h index 9c56c380b5..0a957e02aa 100644 --- a/src/openrct2/drawing/ImageImporter.h +++ b/src/openrct2/drawing/ImageImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageIndexType.h b/src/openrct2/drawing/ImageIndexType.h index 04161f2a5d..c88581561e 100644 --- a/src/openrct2/drawing/ImageIndexType.h +++ b/src/openrct2/drawing/ImageIndexType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/LightFX.cpp b/src/openrct2/drawing/LightFX.cpp index 5d345abee4..ac39ca0ca0 100644 --- a/src/openrct2/drawing/LightFX.cpp +++ b/src/openrct2/drawing/LightFX.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/LightFX.h b/src/openrct2/drawing/LightFX.h index 50df03f642..1217ee50e1 100644 --- a/src/openrct2/drawing/LightFX.h +++ b/src/openrct2/drawing/LightFX.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index def36a2ab5..fd5ae94fee 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index 9b2468e234..6e63c9b18b 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/NewDrawing.h b/src/openrct2/drawing/NewDrawing.h index 0e1c9dc760..16ff47ca81 100644 --- a/src/openrct2/drawing/NewDrawing.h +++ b/src/openrct2/drawing/NewDrawing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Rect.cpp b/src/openrct2/drawing/Rect.cpp index 57a191ffae..f789bbf7fe 100644 --- a/src/openrct2/drawing/Rect.cpp +++ b/src/openrct2/drawing/Rect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/SSE41Drawing.cpp b/src/openrct2/drawing/SSE41Drawing.cpp index 732506eb61..4f16db22f4 100644 --- a/src/openrct2/drawing/SSE41Drawing.cpp +++ b/src/openrct2/drawing/SSE41Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index 732f5cc070..79c2c742f6 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/TTF.cpp b/src/openrct2/drawing/TTF.cpp index 4d4b8c6870..3e1e5dd6b0 100644 --- a/src/openrct2/drawing/TTF.cpp +++ b/src/openrct2/drawing/TTF.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/TTF.h b/src/openrct2/drawing/TTF.h index 8c9cdce7e1..33507c66ed 100644 --- a/src/openrct2/drawing/TTF.h +++ b/src/openrct2/drawing/TTF.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 1242b6fb30..3b2e38f624 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index e0a45b460e..9734740538 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Weather.cpp b/src/openrct2/drawing/Weather.cpp index 649c69f022..c5f537b3f7 100644 --- a/src/openrct2/drawing/Weather.cpp +++ b/src/openrct2/drawing/Weather.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Weather.h b/src/openrct2/drawing/Weather.h index 72bf4fa478..7b30e49fdc 100644 --- a/src/openrct2/drawing/Weather.h +++ b/src/openrct2/drawing/Weather.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index d74f74e8d9..cd89bf052a 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index f8fb04d495..61fa380d83 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Balloon.cpp b/src/openrct2/entity/Balloon.cpp index 27145b92da..4b9d4e5d3f 100644 --- a/src/openrct2/entity/Balloon.cpp +++ b/src/openrct2/entity/Balloon.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Balloon.h b/src/openrct2/entity/Balloon.h index dfcbb27065..dd349c3792 100644 --- a/src/openrct2/entity/Balloon.h +++ b/src/openrct2/entity/Balloon.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Duck.cpp b/src/openrct2/entity/Duck.cpp index 7c291c9483..ab72c37fec 100644 --- a/src/openrct2/entity/Duck.cpp +++ b/src/openrct2/entity/Duck.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Duck.h b/src/openrct2/entity/Duck.h index 36767e33d9..580f8cd876 100644 --- a/src/openrct2/entity/Duck.h +++ b/src/openrct2/entity/Duck.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityBase.cpp b/src/openrct2/entity/EntityBase.cpp index 48322a8e62..230873f796 100644 --- a/src/openrct2/entity/EntityBase.cpp +++ b/src/openrct2/entity/EntityBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityList.h b/src/openrct2/entity/EntityList.h index a2ce3ae351..f8d52f85b7 100644 --- a/src/openrct2/entity/EntityList.h +++ b/src/openrct2/entity/EntityList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityRegistry.cpp b/src/openrct2/entity/EntityRegistry.cpp index 4d7e883689..de7e54a43d 100644 --- a/src/openrct2/entity/EntityRegistry.cpp +++ b/src/openrct2/entity/EntityRegistry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityRegistry.h b/src/openrct2/entity/EntityRegistry.h index e3330c4cc4..ebb1a27eae 100644 --- a/src/openrct2/entity/EntityRegistry.h +++ b/src/openrct2/entity/EntityRegistry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityTweener.cpp b/src/openrct2/entity/EntityTweener.cpp index acd5e38ccf..2020a1e218 100644 --- a/src/openrct2/entity/EntityTweener.cpp +++ b/src/openrct2/entity/EntityTweener.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityTweener.h b/src/openrct2/entity/EntityTweener.h index 8e8b6c405d..699b011477 100644 --- a/src/openrct2/entity/EntityTweener.h +++ b/src/openrct2/entity/EntityTweener.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index 78f8f06572..6ecde530dc 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Fountain.h b/src/openrct2/entity/Fountain.h index 39aa1e6cb6..4d123c4a55 100644 --- a/src/openrct2/entity/Fountain.h +++ b/src/openrct2/entity/Fountain.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 79e7902284..9b14e4b5cc 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -33,10 +33,12 @@ #include "../network/network.h" #include "../object/LargeSceneryEntry.h" #include "../object/MusicObject.h" +#include "../object/ObjectManager.h" #include "../object/PathAdditionEntry.h" +#include "../object/PeepAnimationsObject.h" #include "../object/WallSceneryEntry.h" #include "../peep/GuestPathfinding.h" -#include "../peep/PeepAnimationData.h" +#include "../peep/PeepAnimations.h" #include "../peep/PeepThoughts.h" #include "../peep/RideUseSystem.h" #include "../rct2/RCT2.h" @@ -51,6 +53,8 @@ #include "../scripting/HookEngine.h" #include "../scripting/ScriptEngine.h" #include "../sprites.h" +#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" #include "../world/Climate.h" @@ -1450,7 +1454,9 @@ void Guest::CheckCantFindRide() return; GuestHeadingToRideId = RideId::GetNull(); - WindowBase* w = WindowFindByNumber(WindowClass::Peep, Id); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(WindowClass::Peep, Id); if (w != nullptr) { @@ -1665,9 +1671,6 @@ bool Guest::DecideAndBuyItem(Ride& ride, const ShopItem shopItem, money64 price) if (shopItem == ShopItem::Map) ResetPathfindGoal(); - uint16_t consumptionTime = shopItemDescriptor.ConsumptionTime; - TimeToConsume = std::min((TimeToConsume + consumptionTime), 255); - if (shopItem == ShopItem::Photo) Photo1RideRef = ride.id; @@ -3142,7 +3145,8 @@ static void PeepLeavePark(Guest* peep) peep->InsertNewThought(PeepThoughtType::GoHome); - WindowBase* w = WindowFindByNumber(WindowClass::Peep, peep->Id); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(WindowClass::Peep, peep->Id); if (w != nullptr) w->OnPrepareDraw(); WindowInvalidateByNumber(WindowClass::Peep, peep->Id); @@ -5690,7 +5694,7 @@ void Guest::UpdateQueuing() case PeepAnimationGroup::Chicken: case PeepAnimationGroup::Lemonade: case PeepAnimationGroup::Pretzel: - case PeepAnimationGroup::SuJongkwa: + case PeepAnimationGroup::Sujeonggwa: case PeepAnimationGroup::Juice: case PeepAnimationGroup::FunnelCake: case PeepAnimationGroup::Noodles: @@ -6765,9 +6769,11 @@ void Guest::SetAnimationGroup(PeepAnimationGroup new_sprite_type) if (IsActionInterruptable()) Action = PeepActionType::Walking; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + PeepFlags &= ~PEEP_FLAGS_SLOW_WALK; - Guard::Assert(EnumValue(new_sprite_type) < std::size(gAnimationGroupToSlowWalkMap)); - if (gAnimationGroupToSlowWalkMap[EnumValue(new_sprite_type)]) + if (animObj->IsSlowWalking(new_sprite_type)) { PeepFlags |= PEEP_FLAGS_SLOW_WALK; } @@ -6821,8 +6827,8 @@ static ItemPref item_order_preference[] = { { ShopItem::WontonSoup, PeepAnimationGroup::Soup }, { ShopItem::MeatballSoup, PeepAnimationGroup::Soup }, { ShopItem::FruitJuice, PeepAnimationGroup::Juice }, - { ShopItem::SoybeanMilk, PeepAnimationGroup::SuJongkwa }, - { ShopItem::Sujeonggwa, PeepAnimationGroup::SuJongkwa }, + { ShopItem::SoybeanMilk, PeepAnimationGroup::Sujeonggwa }, + { ShopItem::Sujeonggwa, PeepAnimationGroup::Sujeonggwa }, { ShopItem::SubSandwich, PeepAnimationGroup::Sandwich }, { ShopItem::RoastSausage, PeepAnimationGroup::Sausage }, { ShopItem::Balloon, PeepAnimationGroup::Balloon }, @@ -7140,6 +7146,8 @@ Guest* Guest::Generate(const CoordsXYZ& coords) auto& gameState = GetGameState(); Guest* peep = CreateEntity(); + + peep->AnimationObjectIndex = findPeepAnimationsIndexForType(AnimationPeepType::Guest); peep->AnimationGroup = PeepAnimationGroup::Normal; peep->OutsideOfPark = true; peep->State = PeepState::Falling; @@ -7152,10 +7160,13 @@ Guest* Guest::Generate(const CoordsXYZ& coords) peep->FavouriteRide = RideId::GetNull(); peep->FavouriteRideRating = 0; - const SpriteBounds* spriteBounds = &GetSpriteBounds(peep->AnimationGroup, peep->AnimationType); - peep->SpriteData.Width = spriteBounds->sprite_width; - peep->SpriteData.HeightMin = spriteBounds->sprite_height_negative; - peep->SpriteData.HeightMax = spriteBounds->sprite_height_positive; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& spriteBounds = animObj->GetSpriteBounds(peep->AnimationGroup, peep->AnimationType); + peep->SpriteData.Width = spriteBounds.sprite_width; + peep->SpriteData.HeightMin = spriteBounds.sprite_height_negative; + peep->SpriteData.HeightMax = spriteBounds.sprite_height_positive; peep->Orientation = 0; peep->MoveTo(coords); @@ -7547,16 +7558,22 @@ void Guest::SetItemFlags(uint64_t itemFlags) void Guest::RemoveAllItems() { ItemFlags = 0; + TimeToConsume = 0; } void Guest::RemoveItem(ShopItem item) { ItemFlags &= ~EnumToFlag(item); + TimeToConsume = 0; } void Guest::GiveItem(ShopItem item) { ItemFlags |= EnumToFlag(item); + + const auto& shopItemDescriptor = GetShopItemDescriptor(item); + uint16_t consumptionTime = shopItemDescriptor.ConsumptionTime; + TimeToConsume = std::min((TimeToConsume + consumptionTime), 255); } bool Guest::HasItem(ShopItem peepItem) const diff --git a/src/openrct2/entity/Guest.h b/src/openrct2/entity/Guest.h index 3f85731f91..03598938c4 100644 --- a/src/openrct2/entity/Guest.h +++ b/src/openrct2/entity/Guest.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Litter.h b/src/openrct2/entity/Litter.h index 14ea02594b..62e888f058 100644 --- a/src/openrct2/entity/Litter.h +++ b/src/openrct2/entity/Litter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/MoneyEffect.cpp b/src/openrct2/entity/MoneyEffect.cpp index 54ad6635bd..cf4f9b9d58 100644 --- a/src/openrct2/entity/MoneyEffect.cpp +++ b/src/openrct2/entity/MoneyEffect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/MoneyEffect.h b/src/openrct2/entity/MoneyEffect.h index a083dbfd68..0512e277b8 100644 --- a/src/openrct2/entity/MoneyEffect.h +++ b/src/openrct2/entity/MoneyEffect.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Particle.cpp b/src/openrct2/entity/Particle.cpp index 8440539e64..540ff84989 100644 --- a/src/openrct2/entity/Particle.cpp +++ b/src/openrct2/entity/Particle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Particle.h b/src/openrct2/entity/Particle.h index 6510831fb7..b4c2141c4f 100644 --- a/src/openrct2/entity/Particle.h +++ b/src/openrct2/entity/Particle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/PatrolArea.cpp b/src/openrct2/entity/PatrolArea.cpp index 8230f1fc56..35208ae1b9 100644 --- a/src/openrct2/entity/PatrolArea.cpp +++ b/src/openrct2/entity/PatrolArea.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/PatrolArea.h b/src/openrct2/entity/PatrolArea.h index f90b3f70e1..f0c1793fd9 100644 --- a/src/openrct2/entity/PatrolArea.h +++ b/src/openrct2/entity/PatrolArea.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 790991b2d3..2c2e98ec92 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -36,9 +36,10 @@ #include "../management/Marketing.h" #include "../management/NewsItem.h" #include "../network/network.h" +#include "../object/ObjectManager.h" +#include "../object/PeepAnimationsObject.h" #include "../paint/Paint.h" #include "../peep/GuestPathfinding.h" -#include "../peep/PeepAnimationData.h" #include "../peep/PeepSpriteIds.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" @@ -48,6 +49,8 @@ #include "../ride/Track.h" #include "../scenario/Scenario.h" #include "../sprites.h" +#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../windows/Intent.h" #include "../world/Climate.h" #include "../world/ConstructionClearance.h" @@ -123,12 +126,6 @@ static PeepAnimationType PeepActionToAnimationGroupMap[] = { PeepAnimationType::WithdrawMoney, }; -const bool gAnimationGroupToSlowWalkMap[] = { - false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, true, - true, true, true, false, true, false, true, true, true, false, false, true, true, false, false, true, - true, true, true, true, true, true, false, true, false, true, true, true, true, true, true, true, -}; - template<> bool EntityBase::Is() const { @@ -357,10 +354,6 @@ PeepAnimationType Peep::GetAnimationType() */ void Peep::UpdateCurrentAnimationType() { - if (EnumValue(AnimationGroup) >= EnumValue(PeepAnimationGroup::Count)) - { - return; - } PeepAnimationType newAnimationType = GetAnimationType(); if (AnimationType == newAnimationType) { @@ -376,7 +369,10 @@ void Peep::UpdateCurrentAnimationType() void Peep::UpdateSpriteBoundingBox() { - const auto& spriteBounds = GetSpriteBounds(AnimationGroup, AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + + const auto& spriteBounds = animObj->GetSpriteBounds(AnimationGroup, AnimationType); SpriteData.Width = spriteBounds.sprite_width; SpriteData.HeightMin = spriteBounds.sprite_height_negative; SpriteData.HeightMax = spriteBounds.sprite_height_positive; @@ -469,7 +465,10 @@ std::optional Peep::UpdateAction(int16_t& xy_distance) bool Peep::UpdateActionAnimation() { - const PeepAnimation& peepAnimation = GetPeepAnimation(AnimationGroup, AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + + const PeepAnimation& peepAnimation = animObj->GetPeepAnimation(AnimationGroup, AnimationType); AnimationFrameNum++; // If last frame of action @@ -527,8 +526,11 @@ std::optional Peep::UpdateWalkingAction(const CoordsXY& differenceLoc, void Peep::UpdateWalkingAnimation() { + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + WalkingAnimationFrameNum++; - const PeepAnimation& peepAnimation = GetPeepAnimation(AnimationGroup, AnimationType); + const PeepAnimation& peepAnimation = animObj->GetPeepAnimation(AnimationGroup, AnimationType); if (WalkingAnimationFrameNum >= peepAnimation.frame_offsets.size()) { WalkingAnimationFrameNum = 0; @@ -589,7 +591,8 @@ void PeepDecrementNumRiders(Peep* peep) */ void PeepWindowStateUpdate(Peep* peep) { - WindowBase* w = WindowFindByNumber(WindowClass::Peep, peep->Id.ToUnderlying()); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(WindowClass::Peep, peep->Id.ToUnderlying()); if (w != nullptr) w->OnPrepareDraw(); @@ -1734,10 +1737,14 @@ void Peep::SwitchNextAnimationType() { Invalidate(); AnimationType = NextAnimationType; - const SpriteBounds* spriteBounds = &GetSpriteBounds(AnimationGroup, NextAnimationType); - SpriteData.Width = spriteBounds->sprite_width; - SpriteData.HeightMin = spriteBounds->sprite_height_negative; - SpriteData.HeightMax = spriteBounds->sprite_height_positive; + + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + + const auto& spriteBounds = animObj->GetSpriteBounds(AnimationGroup, NextAnimationType); + SpriteData.Width = spriteBounds.sprite_width; + SpriteData.HeightMin = spriteBounds.sprite_height_negative; + SpriteData.HeightMax = spriteBounds.sprite_height_positive; Invalidate(); } } @@ -2893,9 +2900,10 @@ void Peep::Paint(PaintSession& session, int32_t imageDirection) const imageOffset = 0; } - // In the following 4 calls to PaintAddImageAsParent/PaintAddImageAsChild, we add 5 (instead of 3) to the - // bound_box_offset_z to make sure peeps are drawn on top of railways - uint32_t baseImageId = GetPeepAnimation(AnimationGroup, actionAnimationGroup).base_image; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + + uint32_t baseImageId = animObj->GetPeepAnimation(AnimationGroup, actionAnimationGroup).base_image; // Offset frame onto the base image, using rotation except for the 'picked up' state if (actionAnimationGroup != PeepAnimationType::Hanging) @@ -2905,33 +2913,46 @@ void Peep::Paint(PaintSession& session, int32_t imageDirection) const auto imageId = ImageId(baseImageId, TshirtColour, TrousersColour); + // In the following 4 calls to PaintAddImageAsParent/PaintAddImageAsChild, we add 5 (instead of 3) to the + // bound_box_offset_z to make sure peeps are drawn on top of railways auto bb = BoundBoxXYZ{ { 0, 0, z + 5 }, { 1, 1, 11 } }; auto offset = CoordsXYZ{ 0, 0, z }; PaintAddImageAsParent(session, imageId, { 0, 0, z }, bb); auto* guest = As(); - if (guest != nullptr) + if (guest == nullptr) + return; + + // There are only 6 walking frames available for each item, + // as well as 1 sprite for sitting and 1 for standing still. + auto itemFrame = imageOffset % 6; + if (actionAnimationGroup == PeepAnimationType::WatchRide) + itemFrame = 6; + else if (actionAnimationGroup == PeepAnimationType::SittingIdle) + itemFrame = 7; + + if (AnimationGroup == PeepAnimationGroup::Hat) { - if (baseImageId >= kPeepSpriteHatStateWatchRideId && baseImageId < (kPeepSpriteHatStateSittingIdleId + 4)) - { - imageId = ImageId(baseImageId + 32, guest->HatColour); - PaintAddImageAsChild(session, imageId, offset, bb); - return; - } + auto itemOffset = kPeepSpriteHatItemStart; + imageId = ImageId(itemOffset + (imageDirection >> 3) + itemFrame * 4, guest->HatColour); + PaintAddImageAsChild(session, imageId, offset, bb); + return; + } - if (baseImageId >= kPeepSpriteBalloonStateWatchRideId && baseImageId < (kPeepSpriteBalloonStateSittingIdleId + 4)) - { - imageId = ImageId(baseImageId + 32, guest->BalloonColour); - PaintAddImageAsChild(session, imageId, offset, bb); - return; - } + if (AnimationGroup == PeepAnimationGroup::Balloon) + { + auto itemOffset = kPeepSpriteBalloonItemStart; + imageId = ImageId(itemOffset + (imageDirection >> 3) + itemFrame * 4, guest->BalloonColour); + PaintAddImageAsChild(session, imageId, offset, bb); + return; + } - if (baseImageId >= kPeepSpriteUmbrellaStateWalkingId && baseImageId < (kPeepSpriteUmbrellaStateSittingIdleId + 4)) - { - imageId = ImageId(baseImageId + 32, guest->UmbrellaColour); - PaintAddImageAsChild(session, imageId, offset, bb); - return; - } + if (AnimationGroup == PeepAnimationGroup::Umbrella) + { + auto itemOffset = kPeepSpriteUmbrellaItemStart; + imageId = ImageId(itemOffset + (imageDirection >> 3) + itemFrame * 4, guest->UmbrellaColour); + PaintAddImageAsChild(session, imageId, offset, bb); + return; } } diff --git a/src/openrct2/entity/Peep.h b/src/openrct2/entity/Peep.h index ec6fdeb6f6..f18a1dc478 100644 --- a/src/openrct2/entity/Peep.h +++ b/src/openrct2/entity/Peep.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -234,54 +234,43 @@ enum PeepNextFlags enum class PeepAnimationGroup : uint8_t { Normal = 0, - Handyman = 1, - Mechanic = 2, - Security = 3, - EntertainerPanda = 4, - EntertainerTiger = 5, - EntertainerElephant = 6, - EntertainerRoman = 7, - EntertainerGorilla = 8, - EntertainerSnowman = 9, - EntertainerKnight = 10, - EntertainerAstronaut = 11, - EntertainerBandit = 12, - EntertainerSheriff = 13, - EntertainerPirate = 14, - IceCream = 15, - Chips = 16, - Burger = 17, - Drink = 18, - Balloon = 19, - Candyfloss = 20, - Umbrella = 21, - Pizza = 22, - SecurityAlt = 23, - Popcorn = 24, - ArmsCrossed = 25, - HeadDown = 26, - Nauseous = 27, - VeryNauseous = 28, - RequireToilet = 29, - Hat = 30, - HotDog = 31, - Tentacle = 32, - ToffeeApple = 33, - Doughnut = 34, - Coffee = 35, - Chicken = 36, - Lemonade = 37, - Watching = 38, - Pretzel = 39, - Sunglasses = 40, - SuJongkwa = 41, - Juice = 42, - FunnelCake = 43, - Noodles = 44, - Sausage = 45, - Soup = 46, - Sandwich = 47, - Count = 48, + + // Security staff + Alternate = 1, + + // Guest variations + IceCream = 1, + Chips = 2, + Burger = 3, + Drink = 4, + Balloon = 5, + Candyfloss = 6, + Umbrella = 7, + Pizza = 8, + Popcorn = 9, + ArmsCrossed = 10, + HeadDown = 11, + Nauseous = 12, + VeryNauseous = 13, + RequireToilet = 14, + Hat = 15, + HotDog = 16, + Tentacle = 17, + ToffeeApple = 18, + Doughnut = 19, + Coffee = 20, + Chicken = 21, + Lemonade = 22, + Watching = 23, + Pretzel = 24, + Sunglasses = 25, + Sujeonggwa = 26, + Juice = 27, + FunnelCake = 28, + Noodles = 29, + Sausage = 30, + Soup = 31, + Sandwich = 32, Invalid = 255 }; @@ -313,6 +302,7 @@ struct Peep : EntityBase PeepRideSubState RideSubState; PeepUsingBinSubState UsingBinSubState; }; + ObjectEntryIndex AnimationObjectIndex; PeepAnimationGroup AnimationGroup; uint8_t TshirtColour; uint8_t TrousersColour; @@ -432,8 +422,6 @@ enum PATHING_RIDE_ENTRANCE = 1 << 3, }; -extern const bool gAnimationGroupToSlowWalkMap[48]; - int32_t PeepGetStaffCount(); void PeepUpdateAll(); void PeepUpdateAllBoundingBoxes(); diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index 83ea453ac1..0aec15ce01 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -29,6 +29,7 @@ #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/PathAdditionEntry.h" +#include "../object/PeepAnimationsObject.h" #include "../object/SceneryGroupEntry.h" #include "../object/SmallSceneryEntry.h" #include "../object/TerrainSurfaceObject.h" @@ -57,22 +58,6 @@ using namespace OpenRCT2; -// clang-format off -const StringId StaffCostumeNames[] = { - STR_STAFF_OPTION_COSTUME_PANDA, - STR_STAFF_OPTION_COSTUME_TIGER, - STR_STAFF_OPTION_COSTUME_ELEPHANT, - STR_STAFF_OPTION_COSTUME_ROMAN, - STR_STAFF_OPTION_COSTUME_GORILLA, - STR_STAFF_OPTION_COSTUME_SNOWMAN, - STR_STAFF_OPTION_COSTUME_KNIGHT, - STR_STAFF_OPTION_COSTUME_ASTRONAUT, - STR_STAFF_OPTION_COSTUME_BANDIT, - STR_STAFF_OPTION_COSTUME_SHERIFF, - STR_STAFF_OPTION_COSTUME_PIRATE, -}; -// clang-format on - // Maximum manhattan distance that litter can be for a handyman to seek to it const uint16_t MAX_LITTER_DISTANCE = 3 * kCoordsXYStep; @@ -963,14 +948,6 @@ int32_t Staff::GetHireDate() const return HireDate; } -PeepAnimationGroup EntertainerCostumeToSprite(EntertainerCostume entertainerType) -{ - uint8_t value = static_cast(entertainerType); - PeepAnimationGroup newAnimationGroup = static_cast( - value + EnumValue(PeepAnimationGroup::EntertainerPanda)); - return newAnimationGroup; -} - colour_t StaffGetColour(StaffType staffType) { const auto& gameState = GetGameState(); @@ -1011,42 +988,6 @@ GameActions::Result StaffSetColour(StaffType staffType, colour_t value) return GameActions::Result(); } -uint32_t StaffGetAvailableEntertainerCostumes() -{ - uint32_t entertainerCostumes = 0; - for (int32_t i = 0; i < kMaxSceneryGroupObjects; i++) - { - if (SceneryGroupIsInvented(i)) - { - const auto sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); - entertainerCostumes |= sgEntry->entertainer_costumes; - } - } - - // For some reason the flags are +4 from the actual costume IDs - entertainerCostumes >>= 4; - - // Fix #6593: force enable the default costumes, which normally get enabled through the default scenery groups. - entertainerCostumes |= (1 << static_cast(EntertainerCostume::Panda)) - | (1 << static_cast(EntertainerCostume::Tiger)) | (1 << static_cast(EntertainerCostume::Elephant)); - - return entertainerCostumes; -} - -int32_t StaffGetAvailableEntertainerCostumeList(EntertainerCostume* costumeList) -{ - uint32_t availableCostumes = StaffGetAvailableEntertainerCostumes(); - int32_t numCostumes = 0; - for (uint8_t i = 0; i < static_cast(EntertainerCostume::Count); i++) - { - if (availableCostumes & (1 << i)) - { - costumeList[numCostumes++] = static_cast(i); - } - } - return numCostumes; -} - /** rct2: 0x009929C8 */ static constexpr CoordsXY _MowingWaypoints[] = { { 28, 28 }, { 28, 4 }, { 20, 4 }, { 20, 28 }, { 12, 28 }, { 12, 4 }, { 4, 4 }, { 4, 28 }, @@ -1697,9 +1638,9 @@ void Staff::Tick128UpdateStaff() if (AssignedStaffType != StaffType::Security) return; - PeepAnimationGroup newAnimationGroup = PeepAnimationGroup::SecurityAlt; + PeepAnimationGroup newAnimationGroup = PeepAnimationGroup::Alternate; if (State != PeepState::Patrolling) - newAnimationGroup = PeepAnimationGroup::Security; + newAnimationGroup = PeepAnimationGroup::Normal; if (AnimationGroup == newAnimationGroup) return; @@ -1710,8 +1651,11 @@ void Staff::Tick128UpdateStaff() if (Action < PeepActionType::Idle) Action = PeepActionType::Walking; + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(AnimationObjectIndex); + PeepFlags &= ~PEEP_FLAGS_SLOW_WALK; - if (gAnimationGroupToSlowWalkMap[EnumValue(newAnimationGroup)]) + if (animObj->IsSlowWalking(newAnimationGroup)) { PeepFlags |= PEEP_FLAGS_SLOW_WALK; } diff --git a/src/openrct2/entity/Staff.h b/src/openrct2/entity/Staff.h index b609168a1a..bc1b7737bf 100644 --- a/src/openrct2/entity/Staff.h +++ b/src/openrct2/entity/Staff.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -155,12 +155,8 @@ enum class EntertainerCostume : uint8_t Count }; -extern const StringId StaffCostumeNames[EnumValue(EntertainerCostume::Count)]; - colour_t StaffGetColour(StaffType staffType); OpenRCT2::GameActions::Result StaffSetColour(StaffType staffType, colour_t value); -uint32_t StaffGetAvailableEntertainerCostumes(); -int32_t StaffGetAvailableEntertainerCostumeList(EntertainerCostume* costumeList); money64 GetStaffWage(StaffType type); PeepAnimationGroup EntertainerCostumeToSprite(EntertainerCostume entertainerType); diff --git a/src/openrct2/entity/Yaw.hpp b/src/openrct2/entity/Yaw.hpp index cfc63abdeb..df2f214b0d 100644 --- a/src/openrct2/entity/Yaw.hpp +++ b/src/openrct2/entity/Yaw.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Chat.cpp b/src/openrct2/interface/Chat.cpp index c9e144061f..fc546d5e13 100644 --- a/src/openrct2/interface/Chat.cpp +++ b/src/openrct2/interface/Chat.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Chat.h b/src/openrct2/interface/Chat.h index 0d6025a21d..8fa88ab6f9 100644 --- a/src/openrct2/interface/Chat.h +++ b/src/openrct2/interface/Chat.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index 292503f505..87c139f3e1 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index 8cc545fb69..3015d8585c 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Cursors.cpp b/src/openrct2/interface/Cursors.cpp index f155866928..c736b9479a 100644 --- a/src/openrct2/interface/Cursors.cpp +++ b/src/openrct2/interface/Cursors.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Cursors.h b/src/openrct2/interface/Cursors.h index b848810ec9..2d9195f93f 100644 --- a/src/openrct2/interface/Cursors.h +++ b/src/openrct2/interface/Cursors.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/FontFamilies.cpp b/src/openrct2/interface/FontFamilies.cpp index cc2dfc4a40..d236af163c 100644 --- a/src/openrct2/interface/FontFamilies.cpp +++ b/src/openrct2/interface/FontFamilies.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/FontFamilies.h b/src/openrct2/interface/FontFamilies.h index 3932f9999f..b725dbae71 100644 --- a/src/openrct2/interface/FontFamilies.h +++ b/src/openrct2/interface/FontFamilies.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Fonts.cpp b/src/openrct2/interface/Fonts.cpp index ca586fbfd5..396ff26596 100644 --- a/src/openrct2/interface/Fonts.cpp +++ b/src/openrct2/interface/Fonts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Fonts.h b/src/openrct2/interface/Fonts.h index 44fe19631f..022ab0ed8b 100644 --- a/src/openrct2/interface/Fonts.h +++ b/src/openrct2/interface/Fonts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index c2b6e28abc..148cb79e98 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -45,6 +45,7 @@ #include "../interface/Colour.h" #include "../interface/Window_internal.h" #include "../localisation/Formatting.h" +#include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../management/NewsItem.h" #include "../management/Research.h" @@ -53,6 +54,7 @@ #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" +#include "../object/PeepAnimationsObject.h" #include "../platform/Platform.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" @@ -476,14 +478,15 @@ static void ConsoleCommandStaff(InteractiveConsole& console, const arguments_t& { console.WriteFormatLine("staff set energy "); console.WriteFormatLine("staff set costume "); - for (int32_t i = 0; i < static_cast(EntertainerCostume::Count); i++) + + auto _availableCostumeIndexes = findAllPeepAnimationsIndexesForType(AnimationPeepType::Entertainer); + auto _availableCostumeObjects = findAllPeepAnimationsObjectForType(AnimationPeepType::Entertainer); + + for (auto i = 0u; i < _availableCostumeIndexes.size(); i++) { - char costume_name[128] = { 0 }; - StringId costume = StaffCostumeNames[i]; - OpenRCT2::FormatStringLegacy(costume_name, 128, STR_STRINGID, &costume); - // That's a terrible hack here. Costume names include inline sprites - // that don't work well with the console, so manually skip past them. - console.WriteFormatLine(" costume %i: %s", i, costume_name + 7); + auto index = _availableCostumeIndexes[i]; + auto name = _availableCostumeObjects[i]->GetCostumeName(); + console.WriteFormatLine(" costume %i: %s", index, name.c_str()); } return; } @@ -526,13 +529,14 @@ static void ConsoleCommandStaff(InteractiveConsole& console, const arguments_t& console.WriteLineError("Specified staff is not entertainer"); return; } - if (!int_valid[1] || int_val[1] < 0 || int_val[1] >= static_cast(EntertainerCostume::Count)) + auto& objManager = GetContext()->GetObjectManager(); + if (!int_valid[1] || int_val[1] < 0 || objManager.GetLoadedObject(int_val[1]) == nullptr) { console.WriteLineError("Invalid costume ID"); return; } - EntertainerCostume costume = static_cast(int_val[1]); + auto costume = static_cast(int_val[1]); auto staffSetCostumeAction = StaffSetCostumeAction(EntityId::FromUnderlying(int_val[0]), costume); GameActions::Execute(&staffSetCostumeAction); } @@ -1144,27 +1148,28 @@ static void ConsoleCommandLoadObject(InteractiveConsole& console, const argument } } -constexpr std::array _objectTypeNames = { - "Rides", - "Small Scenery", - "Large Scenery", - "Walls", - "Banners", - "Paths", - "Path Additions", - "Scenery groups", - "Park entrances", - "Water", - "Scenario Text", - "Terrain Surface", - "Terrain Edges", - "Stations", - "Music", - "Footpath Surface", - "Footpath Railings", - "Audio", - "Guest Names", -}; +constexpr auto _objectTypeNames = std::to_array({ + STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, + STR_OBJECT_SELECTION_SMALL_SCENERY, + STR_OBJECT_SELECTION_LARGE_SCENERY, + STR_OBJECT_SELECTION_WALLS_FENCES, + STR_OBJECT_SELECTION_PATH_SIGNS, + STR_OBJECT_SELECTION_FOOTPATHS, + STR_OBJECT_SELECTION_PATH_EXTRAS, + STR_OBJECT_SELECTION_SCENERY_GROUPS, + STR_OBJECT_SELECTION_PARK_ENTRANCE, + STR_OBJECT_SELECTION_WATER, + STR_OBJECT_SELECTION_SCENARIO_TEXTS, + STR_OBJECT_SELECTION_TERRAIN_SURFACES, + STR_OBJECT_SELECTION_TERRAIN_EDGES, + STR_OBJECT_SELECTION_STATIONS, + STR_OBJECT_SELECTION_MUSIC, + STR_OBJECT_SELECTION_FOOTPATH_SURFACES, + STR_OBJECT_SELECTION_FOOTPATH_RAILINGS, + STR_OBJECT_SELECTION_MUSIC, + STR_OBJECT_SELECTION_PEEP_NAMES, + STR_OBJECT_SELECTION_PEEP_ANIMATIONS, +}); static_assert(_objectTypeNames.size() == EnumValue(ObjectType::Count)); static void ConsoleCommandCountObjects(InteractiveConsole& console, [[maybe_unused]] const arguments_t& argv) @@ -1179,8 +1184,11 @@ static void ConsoleCommandCountObjects(InteractiveConsole& console, [[maybe_unus break; } } - console.WriteFormatLine( - "%s: %d/%d", _objectTypeNames[EnumValue(objectType)], entryGroupIndex, getObjectEntryGroupCount(objectType)); + + const auto objectStringId = _objectTypeNames[EnumValue(objectType)]; + const auto* objectString = LanguageGetString(objectStringId); + + console.WriteFormatLine("%s: %d/%d", objectString, entryGroupIndex, getObjectEntryGroupCount(objectType)); } } diff --git a/src/openrct2/interface/InteractiveConsole.h b/src/openrct2/interface/InteractiveConsole.h index 0e3245f383..3493283016 100644 --- a/src/openrct2/interface/InteractiveConsole.h +++ b/src/openrct2/interface/InteractiveConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index c5e7d4336e..b2f4942862 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Screenshot.h b/src/openrct2/interface/Screenshot.h index 5a287b0f2c..eebec992aa 100644 --- a/src/openrct2/interface/Screenshot.h +++ b/src/openrct2/interface/Screenshot.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ScrollArea.h b/src/openrct2/interface/ScrollArea.h index 94320d703c..d677085ef9 100644 --- a/src/openrct2/interface/ScrollArea.h +++ b/src/openrct2/interface/ScrollArea.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/StdInOutConsole.cpp b/src/openrct2/interface/StdInOutConsole.cpp index 5db10847d3..c02470d215 100644 --- a/src/openrct2/interface/StdInOutConsole.cpp +++ b/src/openrct2/interface/StdInOutConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/StdInOutConsole.h b/src/openrct2/interface/StdInOutConsole.h index 49926d71b4..14449f2253 100644 --- a/src/openrct2/interface/StdInOutConsole.h +++ b/src/openrct2/interface/StdInOutConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 2418dc884e..a250b66b40 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -1725,7 +1725,8 @@ InteractionInfo SetInteractionInfoFromPaintSession(PaintSession* session, uint32 */ InteractionInfo GetMapCoordinatesFromPos(const ScreenCoordsXY& screenCoords, int32_t flags) { - WindowBase* window = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); return GetMapCoordinatesFromPosWindow(window, screenCoords, flags); } @@ -1813,7 +1814,8 @@ void ViewportInvalidate(const Viewport* viewport, const ScreenRect& screenRect) static Viewport* ViewportFindFromPoint(const ScreenCoordsXY& screenCoords) { - WindowBase* w = WindowFindFromPoint(screenCoords); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindFromPoint(screenCoords); if (w == nullptr) return nullptr; @@ -1841,8 +1843,10 @@ static Viewport* ViewportFindFromPoint(const ScreenCoordsXY& screenCoords) */ std::optional ScreenGetMapXY(const ScreenCoordsXY& screenCoords, Viewport** viewport) { + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + // This will get the tile location but we will need the more accuracy - WindowBase* window = WindowFindFromPoint(screenCoords); + WindowBase* window = windowMgr->FindFromPoint(screenCoords); if (window == nullptr || window->viewport == nullptr) { return std::nullopt; diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 17e2e94c89..0d9c50c452 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index 74289e9c68..d4d5b2b106 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 300ac9a1db..ffc5fc09a2 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -285,53 +285,6 @@ void WindowCloseByNumber(WindowClass cls, EntityId number) WindowCloseByNumber(cls, static_cast(number.ToUnderlying())); } -/** - * Finds the first window with the specified window class. - * rct2: 0x006EA8A0 - * @param cls (cl) with bit 15 set - * @returns the window or NULL if no window was found. - */ -WindowBase* WindowFindByClass(WindowClass cls) -{ - for (auto& w : g_window_list) - { - if (w->flags & WF_DEAD) - continue; - if (w->classification == cls) - { - return w.get(); - } - } - return nullptr; -} - -/** - * Finds the first window with the specified window class and number. - * rct2: 0x006EA8A0 - * @param cls (cl) without bit 15 set - * @param number (dx) - * @returns the window or NULL if no window was found. - */ -WindowBase* WindowFindByNumber(WindowClass cls, rct_windownumber number) -{ - for (auto& w : g_window_list) - { - if (w->flags & WF_DEAD) - continue; - if (w->classification == cls && w->number == number) - { - return w.get(); - } - } - return nullptr; -} - -// TODO: Use variant for this once the window framework is done. -WindowBase* WindowFindByNumber(WindowClass cls, EntityId id) -{ - return WindowFindByNumber(cls, static_cast(id.ToUnderlying())); -} - /** * Closes the top-most window * @@ -391,80 +344,6 @@ void WindowCloseAllExceptNumberAndClass(rct_windownumber number, WindowClass cls }); } -/** - * - * rct2: 0x006EA845 - */ -WindowBase* WindowFindFromPoint(const ScreenCoordsXY& screenCoords) -{ - for (auto it = g_window_list.rbegin(); it != g_window_list.rend(); it++) - { - auto& w = *it; - if (w->flags & WF_DEAD) - continue; - - if (screenCoords.x < w->windowPos.x || screenCoords.x >= w->windowPos.x + w->width || screenCoords.y < w->windowPos.y - || screenCoords.y >= w->windowPos.y + w->height) - continue; - - if (w->flags & WF_NO_BACKGROUND) - { - auto widgetIndex = WindowFindWidgetFromPoint(*w.get(), screenCoords); - if (widgetIndex == -1) - continue; - } - - return w.get(); - } - - return nullptr; -} - -/** - * - * rct2: 0x006EA594 - * x (ax) - * y (bx) - * returns widget_index (edx) - * EDI NEEDS TO BE SET TO w->widgets[widget_index] AFTER - */ -WidgetIndex WindowFindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) -{ - // Invalidate the window - w.OnPrepareDraw(); - - // Find the widget at point x, y - WidgetIndex widget_index = -1; - for (int32_t i = 0;; i++) - { - const auto& widget = w.widgets[i]; - if (widget.type == WindowWidgetType::Last) - { - break; - } - - if (widget.type != WindowWidgetType::Empty && widget.IsVisible()) - { - if (screenCoords.x >= w.windowPos.x + widget.left && screenCoords.x <= w.windowPos.x + widget.right - && screenCoords.y >= w.windowPos.y + widget.top && screenCoords.y <= w.windowPos.y + widget.bottom) - { - widget_index = i; - } - } - } - - // Return next widget if a dropdown - if (widget_index != -1) - { - const auto& widget = w.widgets[widget_index]; - if (widget.type == WindowWidgetType::DropdownMenu) - widget_index++; - } - - // Return the widget index - return widget_index; -} - /** * Invalidates the specified window. * rct2: 0x006EB13A @@ -630,7 +509,8 @@ WindowBase* WindowBringToFront(WindowBase& w) WindowBase* WindowBringToFrontByClassWithFlags(WindowClass cls, uint16_t flags) { - WindowBase* w = WindowFindByClass(cls); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(cls); if (w != nullptr) { w->flags |= flags; @@ -654,9 +534,8 @@ WindowBase* WindowBringToFrontByClass(WindowClass cls) */ WindowBase* WindowBringToFrontByNumber(WindowClass cls, rct_windownumber number) { - WindowBase* w; - - w = WindowFindByNumber(cls, number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(cls, number); if (w != nullptr) { w->flags |= WF_WHITE_BORDER_MASK; @@ -1179,7 +1058,8 @@ void ToolCancel() gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number, gCurrentToolWidget.widget_index); // Abort tool event - WindowBase* w = WindowFindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByNumber(gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number); if (w != nullptr) w->OnToolAbort(gCurrentToolWidget.widget_index); } @@ -1195,32 +1075,33 @@ void WindowResizeGui(int32_t width, int32_t height) if (gScreenFlags & SCREEN_FLAGS_EDITOR) return; - WindowBase* titleWind = WindowFindByClass(WindowClass::TitleMenu); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* titleWind = windowMgr->FindByClass(WindowClass::TitleMenu); if (titleWind != nullptr) { titleWind->windowPos.x = (width - titleWind->width) / 2; titleWind->windowPos.y = height - 182; } - WindowBase* versionWind = WindowFindByClass(WindowClass::TitleVersion); + WindowBase* versionWind = windowMgr->FindByClass(WindowClass::TitleVersion); if (versionWind != nullptr) versionWind->windowPos.y = height - 30; - WindowBase* exitWind = WindowFindByClass(WindowClass::TitleExit); + WindowBase* exitWind = windowMgr->FindByClass(WindowClass::TitleExit); if (exitWind != nullptr) { exitWind->windowPos.x = width - 40; exitWind->windowPos.y = height - 64; } - WindowBase* optionsWind = WindowFindByClass(WindowClass::TitleOptions); + WindowBase* optionsWind = windowMgr->FindByClass(WindowClass::TitleOptions); if (optionsWind != nullptr) { optionsWind->windowPos.x = width - 80; } // Keep options window centred after a resize - WindowBase* optionsWindow = WindowFindByClass(WindowClass::Options); + WindowBase* optionsWindow = windowMgr->FindByClass(WindowClass::Options); if (optionsWindow != nullptr) { optionsWindow->windowPos.x = (ContextGetWidth() - optionsWindow->width) / 2; @@ -1228,7 +1109,7 @@ void WindowResizeGui(int32_t width, int32_t height) } // Keep progress bar window centred after a resize - WindowBase* ProgressWindow = WindowFindByClass(WindowClass::ProgressWindow); + WindowBase* ProgressWindow = windowMgr->FindByClass(WindowClass::ProgressWindow); if (ProgressWindow != nullptr) { ProgressWindow->windowPos.x = (ContextGetWidth() - ProgressWindow->width) / 2; @@ -1258,13 +1139,15 @@ void WindowResizeGuiScenarioEditor(int32_t width, int32_t height) } } - WindowBase* topWind = WindowFindByClass(WindowClass::TopToolbar); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + + WindowBase* topWind = windowMgr->FindByClass(WindowClass::TopToolbar); if (topWind != nullptr) { topWind->width = std::max(640, width); } - WindowBase* bottomWind = WindowFindByClass(WindowClass::BottomToolbar); + WindowBase* bottomWind = windowMgr->FindByClass(WindowClass::BottomToolbar); if (bottomWind != nullptr) { bottomWind->windowPos.y = height - 32; diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 1b2accbc04..72c8446e25 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -140,6 +140,16 @@ struct Widget moveDown(coords.y - top); } + void moveToX(int16_t x) + { + moveRight(x - left); + } + + void moveToY(int16_t y) + { + moveDown(y - top); + } + bool IsVisible() const { return !(flags & OpenRCT2::WIDGET_FLAGS::IS_HIDDEN); @@ -322,17 +332,17 @@ constexpr int32_t WC_TRACK_DESIGN_PLACE__WIDX_ROTATE = 3; constexpr int32_t WC_EDITOR_PARK_ENTRANCE__WIDX_ROTATE_ENTRANCE_BUTTON = 6; constexpr int32_t WC_EDITOR_OBJECT_SELECTION__WIDX_TAB_1 = 22; constexpr int32_t WC_STAFF__WIDX_PICKUP = 9; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE = 13; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_COPY = 16; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_PASTE = 15; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_SORT = 14; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_REMOVE = 10; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_UP = 11; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_DOWN = 12; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_INCREASE = 5; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_DECREASE = 6; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_INCREASE = 8; -constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_DECREASE = 9; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE = 15; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_COPY = 18; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_PASTE = 17; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_SORT = 16; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_REMOVE = 12; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_UP = 13; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_DOWN = 14; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_INCREASE = 6; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_DECREASE = 7; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_INCREASE = 10; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_DECREASE = 11; constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SURFACE = EnumValue(TileInspectorPage::Surface); constexpr int32_t WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_INCREASE = 27; constexpr int32_t WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_DECREASE = 28; @@ -483,11 +493,6 @@ void WindowCloseAll(); void WindowCloseAllExceptClass(WindowClass cls); void WindowCloseAllExceptFlags(uint16_t flags); void WindowCloseAllExceptNumberAndClass(rct_windownumber number, WindowClass cls); -WindowBase* WindowFindByClass(WindowClass cls); -WindowBase* WindowFindByNumber(WindowClass cls, rct_windownumber number); -WindowBase* WindowFindByNumber(WindowClass cls, EntityId id); -WindowBase* WindowFindFromPoint(const ScreenCoordsXY& screenCoords); -WidgetIndex WindowFindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords); void WindowInvalidateByClass(WindowClass cls); void WindowInvalidateByNumber(WindowClass cls, rct_windownumber number); void WindowInvalidateByNumber(WindowClass cls, EntityId id); diff --git a/src/openrct2/interface/WindowClasses.h b/src/openrct2/interface/WindowClasses.h index 8d2028cae5..2ef2f55ad0 100644 --- a/src/openrct2/interface/WindowClasses.h +++ b/src/openrct2/interface/WindowClasses.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Window_internal.h b/src/openrct2/interface/Window_internal.h index 49721c8663..83e4305012 100644 --- a/src/openrct2/interface/Window_internal.h +++ b/src/openrct2/interface/Window_internal.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ZoomLevel.cpp b/src/openrct2/interface/ZoomLevel.cpp index 1c52b517ea..e7f71acd66 100644 --- a/src/openrct2/interface/ZoomLevel.cpp +++ b/src/openrct2/interface/ZoomLevel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 44f08b3617..5b1c5d0b52 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -350,6 +350,7 @@ + @@ -392,7 +393,6 @@ - @@ -616,8 +616,6 @@ - - @@ -626,6 +624,13 @@ + + + + + + + @@ -882,6 +887,7 @@ + @@ -1009,7 +1015,6 @@ - @@ -1115,13 +1120,17 @@ - - + + + + + + diff --git a/src/openrct2/localisation/Currency.cpp b/src/openrct2/localisation/Currency.cpp index a782cb6088..5152c113eb 100644 --- a/src/openrct2/localisation/Currency.cpp +++ b/src/openrct2/localisation/Currency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Currency.h b/src/openrct2/localisation/Currency.h index 0ff71c4b33..8113b47f56 100644 --- a/src/openrct2/localisation/Currency.h +++ b/src/openrct2/localisation/Currency.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/CurrencyTypes.h b/src/openrct2/localisation/CurrencyTypes.h index 5c1a6ee976..00fdc1fada 100644 --- a/src/openrct2/localisation/CurrencyTypes.h +++ b/src/openrct2/localisation/CurrencyTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/FormatCodes.cpp b/src/openrct2/localisation/FormatCodes.cpp index 82f64d0614..762e941113 100644 --- a/src/openrct2/localisation/FormatCodes.cpp +++ b/src/openrct2/localisation/FormatCodes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/FormatCodes.h b/src/openrct2/localisation/FormatCodes.h index bb53efb2b7..479cb68aa6 100644 --- a/src/openrct2/localisation/FormatCodes.h +++ b/src/openrct2/localisation/FormatCodes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatter.cpp b/src/openrct2/localisation/Formatter.cpp index ce04feb39f..8642234525 100644 --- a/src/openrct2/localisation/Formatter.cpp +++ b/src/openrct2/localisation/Formatter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatter.h b/src/openrct2/localisation/Formatter.h index fb29af30cb..aa00e1529e 100644 --- a/src/openrct2/localisation/Formatter.h +++ b/src/openrct2/localisation/Formatter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatting.cpp b/src/openrct2/localisation/Formatting.cpp index 1766d48ba6..0df257b449 100644 --- a/src/openrct2/localisation/Formatting.cpp +++ b/src/openrct2/localisation/Formatting.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatting.h b/src/openrct2/localisation/Formatting.h index dad8215edb..c507bb8129 100644 --- a/src/openrct2/localisation/Formatting.h +++ b/src/openrct2/localisation/Formatting.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Language.cpp b/src/openrct2/localisation/Language.cpp index fcac545082..a7cf87d5c2 100644 --- a/src/openrct2/localisation/Language.cpp +++ b/src/openrct2/localisation/Language.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Language.h b/src/openrct2/localisation/Language.h index 7930999302..da71919c84 100644 --- a/src/openrct2/localisation/Language.h +++ b/src/openrct2/localisation/Language.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LanguagePack.cpp b/src/openrct2/localisation/LanguagePack.cpp index edbc61ce12..b5ea29252b 100644 --- a/src/openrct2/localisation/LanguagePack.cpp +++ b/src/openrct2/localisation/LanguagePack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LanguagePack.h b/src/openrct2/localisation/LanguagePack.h index bf1b1b2c14..92f638a5e2 100644 --- a/src/openrct2/localisation/LanguagePack.h +++ b/src/openrct2/localisation/LanguagePack.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Localisation.Date.cpp b/src/openrct2/localisation/Localisation.Date.cpp index 3d3f6737b0..cd57f10100 100644 --- a/src/openrct2/localisation/Localisation.Date.cpp +++ b/src/openrct2/localisation/Localisation.Date.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Localisation.Date.h b/src/openrct2/localisation/Localisation.Date.h index 25bb613dba..96f9a73c9b 100644 --- a/src/openrct2/localisation/Localisation.Date.h +++ b/src/openrct2/localisation/Localisation.Date.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LocalisationService.cpp b/src/openrct2/localisation/LocalisationService.cpp index 3ef816dd72..f96f68ea84 100644 --- a/src/openrct2/localisation/LocalisationService.cpp +++ b/src/openrct2/localisation/LocalisationService.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LocalisationService.h b/src/openrct2/localisation/LocalisationService.h index 87a781bc0a..db00419fb8 100644 --- a/src/openrct2/localisation/LocalisationService.h +++ b/src/openrct2/localisation/LocalisationService.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/StringIdType.h b/src/openrct2/localisation/StringIdType.h index 329e7b2da0..0513ce9fe4 100644 --- a/src/openrct2/localisation/StringIdType.h +++ b/src/openrct2/localisation/StringIdType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 807da1e1ba..181130dcad 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -602,17 +602,17 @@ enum : StringId // STR_OPTIONS_RIDE_MUSIC_OFF = 1775, // STR_OPTIONS_RIDE_MUSIC_ON = 1776, STR_SCROLLING_SIGN_TEXT = 1778, - STR_STAFF_OPTION_COSTUME_PANDA = 1779, - STR_STAFF_OPTION_COSTUME_TIGER = 1780, - STR_STAFF_OPTION_COSTUME_ELEPHANT = 1781, - STR_STAFF_OPTION_COSTUME_ROMAN = 1782, - STR_STAFF_OPTION_COSTUME_GORILLA = 1783, - STR_STAFF_OPTION_COSTUME_SNOWMAN = 1784, - STR_STAFF_OPTION_COSTUME_KNIGHT = 1785, - STR_STAFF_OPTION_COSTUME_ASTRONAUT = 1786, - STR_STAFF_OPTION_COSTUME_BANDIT = 1787, - STR_STAFF_OPTION_COSTUME_SHERIFF = 1788, - STR_STAFF_OPTION_COSTUME_PIRATE = 1789, + // STR_STAFF_OPTION_COSTUME_PANDA = 1779, + // STR_STAFF_OPTION_COSTUME_TIGER = 1780, + // STR_STAFF_OPTION_COSTUME_ELEPHANT = 1781, + // STR_STAFF_OPTION_COSTUME_ROMAN = 1782, + // STR_STAFF_OPTION_COSTUME_GORILLA = 1783, + // STR_STAFF_OPTION_COSTUME_SNOWMAN = 1784, + // STR_STAFF_OPTION_COSTUME_KNIGHT = 1785, + // STR_STAFF_OPTION_COSTUME_ASTRONAUT = 1786, + // STR_STAFF_OPTION_COSTUME_BANDIT = 1787, + // STR_STAFF_OPTION_COSTUME_SHERIFF = 1788, + // STR_STAFF_OPTION_COSTUME_PIRATE = 1789, STR_RESPONDING_TO_RIDE_BREAKDOWN_CALL = 1792, STR_HEADING_TO_RIDE_FOR_INSPECTION = 1793, STR_FIXING_RIDE = 1794, @@ -1205,6 +1205,16 @@ enum : StringId STR_INVALID_SELECTION_OF_OBJECTS = 3180, STR_PARK_ENTRANCE_TYPE_MUST_BE_SELECTED = 3182, STR_WATER_TYPE_MUST_BE_SELECTED = 3183, + STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS = 3184, + STR_OBJECT_SELECTION_SMALL_SCENERY = 3185, + STR_OBJECT_SELECTION_LARGE_SCENERY = 3186, + STR_OBJECT_SELECTION_WALLS_FENCES = 3187, + STR_OBJECT_SELECTION_PATH_SIGNS = 3188, + STR_OBJECT_SELECTION_FOOTPATHS = 3189, + STR_OBJECT_SELECTION_PATH_EXTRAS = 3190, + STR_OBJECT_SELECTION_SCENERY_GROUPS = 3191, + STR_OBJECT_SELECTION_PARK_ENTRANCE = 3192, + STR_OBJECT_SELECTION_WATER = 3193, STR_CANT_DECREASE_MAP_SIZE_ANY_FURTHER = 3213, STR_CANT_INCREASE_MAP_SIZE_ANY_FURTHER = 3214, @@ -1511,6 +1521,10 @@ enum : StringId STR_INVALID_CLIMATE_ID = 6269, + STR_OBJECT_SELECTION_TERRAIN_SURFACES = 6270, + STR_OBJECT_SELECTION_TERRAIN_EDGES = 6271, + STR_OBJECT_SELECTION_STATIONS = 6272, + STR_OBJECT_SELECTION_MUSIC = 6273, STR_CANT_SET_COLOUR_SCHEME = 6274, STR_GUESTS_GETTING_STUCK_ON_RIDE = 6276, @@ -1576,6 +1590,8 @@ enum : StringId STR_AT_LEAST_ONE_FOOTPATH_NON_QUEUE_SURFACE_OBJECT_MUST_BE_SELECTED = 6441, STR_AT_LEAST_ONE_FOOTPATH_QUEUE_SURFACE_OBJECT_MUST_BE_SELECTED = 6442, STR_AT_LEAST_ONE_FOOTPATH_RAILING_OBJECT_MUST_BE_SELECTED = 6443, + STR_OBJECT_SELECTION_FOOTPATH_SURFACES = 6444, + STR_OBJECT_SELECTION_FOOTPATH_RAILINGS = 6445, STR_UNSUPPORTED_OBJECT_FORMAT = 6448, @@ -1694,8 +1710,17 @@ enum : StringId STR_DATE_FORMAT_MY_SENTENCE = 6674, + STR_OBJECT_SELECTION_PEEP_NAMES = 6675, STR_AT_LEAST_ONE_PEEP_NAMES_OBJECT_MUST_BE_SELECTED = 6676, + STR_OBJECT_SELECTION_PEEP_ANIMATIONS = 6718, + STR_AT_LEAST_ONE_GUEST_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED = 6719, + STR_AT_LEAST_ONE_HANDYMAN_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED = 6720, + STR_AT_LEAST_ONE_MECHANIC_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED = 6721, + STR_AT_LEAST_ONE_SECURITY_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED = 6722, + STR_AT_LEAST_ONE_ENTERTAINER_PEEP_ANIMATIONS_OBJECT_MUST_BE_SELECTED = 6723, + STR_OBJECT_SELECTION_SCENARIO_TEXTS = 6724, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working /* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings }; diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index bed63c8370..74a6d8488c 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Award.h b/src/openrct2/management/Award.h index d0d5f9a74e..24467da0e3 100644 --- a/src/openrct2/management/Award.h +++ b/src/openrct2/management/Award.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index 327deacc0a..d054cbd6de 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Finance.h b/src/openrct2/management/Finance.h index 956377057e..3a3dbf3f89 100644 --- a/src/openrct2/management/Finance.h +++ b/src/openrct2/management/Finance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index 5da804fb8f..7ac72851bb 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Marketing.h b/src/openrct2/management/Marketing.h index 3392125761..c56cc83729 100644 --- a/src/openrct2/management/Marketing.h +++ b/src/openrct2/management/Marketing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/NewsItem.cpp b/src/openrct2/management/NewsItem.cpp index b0b58ef38b..640eca4ade 100644 --- a/src/openrct2/management/NewsItem.cpp +++ b/src/openrct2/management/NewsItem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/NewsItem.h b/src/openrct2/management/NewsItem.h index a5a381822d..8e850b2a89 100644 --- a/src/openrct2/management/NewsItem.h +++ b/src/openrct2/management/NewsItem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 5992b4315f..8e3e17b3a1 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Research.h b/src/openrct2/management/Research.h index df25b3df89..49fdf0aabd 100644 --- a/src/openrct2/management/Research.h +++ b/src/openrct2/management/Research.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/math/Trigonometry.hpp b/src/openrct2/math/Trigonometry.hpp index f5a617af56..088386de51 100644 --- a/src/openrct2/math/Trigonometry.hpp +++ b/src/openrct2/math/Trigonometry.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/DiscordService.cpp b/src/openrct2/network/DiscordService.cpp index 9699710362..fcb149ac4c 100644 --- a/src/openrct2/network/DiscordService.cpp +++ b/src/openrct2/network/DiscordService.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/DiscordService.h b/src/openrct2/network/DiscordService.h index 7ba3ab9e0d..2945814dd5 100644 --- a/src/openrct2/network/DiscordService.h +++ b/src/openrct2/network/DiscordService.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkAction.cpp b/src/openrct2/network/NetworkAction.cpp index 5d9c8f2093..ae7d2b1f3b 100644 --- a/src/openrct2/network/NetworkAction.cpp +++ b/src/openrct2/network/NetworkAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkAction.h b/src/openrct2/network/NetworkAction.h index 3fce08e4bc..aa54671486 100644 --- a/src/openrct2/network/NetworkAction.h +++ b/src/openrct2/network/NetworkAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 3ae81d98da..02bc11ad11 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -50,7 +50,7 @@ using namespace OpenRCT2; // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kNetworkStreamVersion = 4; +constexpr uint8_t kNetworkStreamVersion = 1; const std::string kNetworkStreamID = std::string(OPENRCT2_VERSION) + "-" + std::to_string(kNetworkStreamVersion); diff --git a/src/openrct2/network/NetworkConnection.cpp b/src/openrct2/network/NetworkConnection.cpp index 6cac60c46c..bfc53e2b53 100644 --- a/src/openrct2/network/NetworkConnection.cpp +++ b/src/openrct2/network/NetworkConnection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkConnection.h b/src/openrct2/network/NetworkConnection.h index fa927ddb3f..ad757accee 100644 --- a/src/openrct2/network/NetworkConnection.h +++ b/src/openrct2/network/NetworkConnection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkGroup.cpp b/src/openrct2/network/NetworkGroup.cpp index 3d579431f1..e83d93e6b7 100644 --- a/src/openrct2/network/NetworkGroup.cpp +++ b/src/openrct2/network/NetworkGroup.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkGroup.h b/src/openrct2/network/NetworkGroup.h index 241445dac8..ae7e284435 100644 --- a/src/openrct2/network/NetworkGroup.h +++ b/src/openrct2/network/NetworkGroup.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkKey.cpp b/src/openrct2/network/NetworkKey.cpp index ce83211dcc..112537a5d0 100644 --- a/src/openrct2/network/NetworkKey.cpp +++ b/src/openrct2/network/NetworkKey.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkKey.h b/src/openrct2/network/NetworkKey.h index f59d01fc52..8f893fde72 100644 --- a/src/openrct2/network/NetworkKey.h +++ b/src/openrct2/network/NetworkKey.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPacket.cpp b/src/openrct2/network/NetworkPacket.cpp index 45c901ffc0..b3010f4015 100644 --- a/src/openrct2/network/NetworkPacket.cpp +++ b/src/openrct2/network/NetworkPacket.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPacket.h b/src/openrct2/network/NetworkPacket.h index a262fc1761..b71e402255 100644 --- a/src/openrct2/network/NetworkPacket.h +++ b/src/openrct2/network/NetworkPacket.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPlayer.cpp b/src/openrct2/network/NetworkPlayer.cpp index 61ebe7e876..ab381be97c 100644 --- a/src/openrct2/network/NetworkPlayer.cpp +++ b/src/openrct2/network/NetworkPlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPlayer.h b/src/openrct2/network/NetworkPlayer.h index 9f9bea7b56..43a0af28bd 100644 --- a/src/openrct2/network/NetworkPlayer.h +++ b/src/openrct2/network/NetworkPlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkServerAdvertiser.cpp b/src/openrct2/network/NetworkServerAdvertiser.cpp index aa4f8b7f98..e5a8cbbb19 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.cpp +++ b/src/openrct2/network/NetworkServerAdvertiser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkServerAdvertiser.h b/src/openrct2/network/NetworkServerAdvertiser.h index e7b971ad19..864972ee7c 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.h +++ b/src/openrct2/network/NetworkServerAdvertiser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkTypes.h b/src/openrct2/network/NetworkTypes.h index 65cc1a4534..9288a86ab5 100644 --- a/src/openrct2/network/NetworkTypes.h +++ b/src/openrct2/network/NetworkTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkUser.cpp b/src/openrct2/network/NetworkUser.cpp index 83e5071761..089340c196 100644 --- a/src/openrct2/network/NetworkUser.cpp +++ b/src/openrct2/network/NetworkUser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkUser.h b/src/openrct2/network/NetworkUser.h index 248fc88221..f25a63e609 100644 --- a/src/openrct2/network/NetworkUser.h +++ b/src/openrct2/network/NetworkUser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/ServerList.cpp b/src/openrct2/network/ServerList.cpp index 3273cb10e1..166c6f63bd 100644 --- a/src/openrct2/network/ServerList.cpp +++ b/src/openrct2/network/ServerList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/ServerList.h b/src/openrct2/network/ServerList.h index 1d7af964bb..9368f313bd 100644 --- a/src/openrct2/network/ServerList.h +++ b/src/openrct2/network/ServerList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index b14a17c75a..f72386acbb 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/Socket.h b/src/openrct2/network/Socket.h index a0aa8b1341..d6e13b44bb 100644 --- a/src/openrct2/network/Socket.h +++ b/src/openrct2/network/Socket.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/network.h b/src/openrct2/network/network.h index 4826ed34b7..af6f7ed59f 100644 --- a/src/openrct2/network/network.h +++ b/src/openrct2/network/network.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioObject.cpp b/src/openrct2/object/AudioObject.cpp index ae9658cf04..c395d98bed 100644 --- a/src/openrct2/object/AudioObject.cpp +++ b/src/openrct2/object/AudioObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioObject.h b/src/openrct2/object/AudioObject.h index 0fdcadf545..8df6d840f5 100644 --- a/src/openrct2/object/AudioObject.h +++ b/src/openrct2/object/AudioObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioSampleTable.cpp b/src/openrct2/object/AudioSampleTable.cpp index 96d05e2cf6..7eaf53e3e9 100644 --- a/src/openrct2/object/AudioSampleTable.cpp +++ b/src/openrct2/object/AudioSampleTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioSampleTable.h b/src/openrct2/object/AudioSampleTable.h index 88f3378520..3cc3618858 100644 --- a/src/openrct2/object/AudioSampleTable.h +++ b/src/openrct2/object/AudioSampleTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerObject.cpp b/src/openrct2/object/BannerObject.cpp index 917ccc6c20..b11c8d683f 100644 --- a/src/openrct2/object/BannerObject.cpp +++ b/src/openrct2/object/BannerObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerObject.h b/src/openrct2/object/BannerObject.h index 177f2127a0..794defcfbc 100644 --- a/src/openrct2/object/BannerObject.h +++ b/src/openrct2/object/BannerObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerSceneryEntry.h b/src/openrct2/object/BannerSceneryEntry.h index 555bafce99..5889e27028 100644 --- a/src/openrct2/object/BannerSceneryEntry.h +++ b/src/openrct2/object/BannerSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/DefaultObjects.cpp b/src/openrct2/object/DefaultObjects.cpp index 4322e8b524..c91af29341 100644 --- a/src/openrct2/object/DefaultObjects.cpp +++ b/src/openrct2/object/DefaultObjects.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -147,6 +147,12 @@ const std::string_view DefaultSelectedObjects[] = { // Peep name objects "rct2.peep_names.original", + + // Peep animation objects + "rct2.peep_animations.guest", + "rct2.peep_animations.handyman", + "rct2.peep_animations.mechanic", + "rct2.peep_animations.security", }; const std::string_view DesignerSelectedObjects[] = { diff --git a/src/openrct2/object/DefaultObjects.h b/src/openrct2/object/DefaultObjects.h index 98c9c814e0..dc8c378179 100644 --- a/src/openrct2/object/DefaultObjects.h +++ b/src/openrct2/object/DefaultObjects.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,5 +12,5 @@ #include "Object.h" extern const std::string_view MinimumRequiredObjects[2]; -extern const std::string_view DefaultSelectedObjects[115]; +extern const std::string_view DefaultSelectedObjects[119]; extern const std::string_view DesignerSelectedObjects[39]; diff --git a/src/openrct2/object/EntranceEntry.h b/src/openrct2/object/EntranceEntry.h index 82a8499cbd..7c9a900a51 100644 --- a/src/openrct2/object/EntranceEntry.h +++ b/src/openrct2/object/EntranceEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index f1a9d1a4e0..e1a79de643 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/EntranceObject.h b/src/openrct2/object/EntranceObject.h index bdcd157338..afdd0cb7de 100644 --- a/src/openrct2/object/EntranceObject.h +++ b/src/openrct2/object/EntranceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathEntry.h b/src/openrct2/object/FootpathEntry.h index 8bfb92ca5d..8d329c7a55 100644 --- a/src/openrct2/object/FootpathEntry.h +++ b/src/openrct2/object/FootpathEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index b856ca4958..2c169ce584 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathObject.h b/src/openrct2/object/FootpathObject.h index 119391ef06..d8a41aaa24 100644 --- a/src/openrct2/object/FootpathObject.h +++ b/src/openrct2/object/FootpathObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index 50ee2b6d30..a143dff6ea 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathRailingsObject.h b/src/openrct2/object/FootpathRailingsObject.h index e1ec306ca8..0b609471b9 100644 --- a/src/openrct2/object/FootpathRailingsObject.h +++ b/src/openrct2/object/FootpathRailingsObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 6b855eec4c..79e1e183a1 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathSurfaceObject.h b/src/openrct2/object/FootpathSurfaceObject.h index 84a6aca363..db528027bf 100644 --- a/src/openrct2/object/FootpathSurfaceObject.h +++ b/src/openrct2/object/FootpathSurfaceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index 5f7267b7cc..9e37238f7c 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ImageTable.h b/src/openrct2/object/ImageTable.h index 0ad344072c..134c6191f5 100644 --- a/src/openrct2/object/ImageTable.h +++ b/src/openrct2/object/ImageTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryEntry.h b/src/openrct2/object/LargeSceneryEntry.h index 0e489ead61..71263ceff9 100644 --- a/src/openrct2/object/LargeSceneryEntry.h +++ b/src/openrct2/object/LargeSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index 8d5d5bb975..7b9b444c30 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryObject.h b/src/openrct2/object/LargeSceneryObject.h index ab0bc1baa9..c1b0443c7b 100644 --- a/src/openrct2/object/LargeSceneryObject.h +++ b/src/openrct2/object/LargeSceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index 7dcdd63119..97136822f4 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/MusicObject.h b/src/openrct2/object/MusicObject.h index 2495980f5f..cf78996fa5 100644 --- a/src/openrct2/object/MusicObject.h +++ b/src/openrct2/object/MusicObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index 6df357df38..9299a6c709 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 9049357407..5a2871710b 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectAsset.h b/src/openrct2/object/ObjectAsset.h index 8c23d62cca..600510469d 100644 --- a/src/openrct2/object/ObjectAsset.h +++ b/src/openrct2/object/ObjectAsset.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectEntryManager.h b/src/openrct2/object/ObjectEntryManager.h index 0cf2e733b2..42de1d4949 100644 --- a/src/openrct2/object/ObjectEntryManager.h +++ b/src/openrct2/object/ObjectEntryManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectFactory.cpp b/src/openrct2/object/ObjectFactory.cpp index 85acd6aeb1..b258272af5 100644 --- a/src/openrct2/object/ObjectFactory.cpp +++ b/src/openrct2/object/ObjectFactory.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -36,6 +36,7 @@ #include "ObjectLimits.h" #include "ObjectList.h" #include "PathAdditionObject.h" +#include "PeepAnimationsObject.h" #include "PeepNamesObject.h" #include "RideObject.h" #include "ScenarioTextObject.h" @@ -390,6 +391,9 @@ namespace OpenRCT2::ObjectFactory case ObjectType::PeepNames: result = std::make_unique(); break; + case ObjectType::PeepAnimations: + result = std::make_unique(); + break; default: throw std::runtime_error("Invalid object type"); } @@ -434,6 +438,8 @@ namespace OpenRCT2::ObjectFactory return ObjectType::Audio; if (s == "peep_names") return ObjectType::PeepNames; + if (s == "peep_animations") + return ObjectType::PeepAnimations; return ObjectType::None; } diff --git a/src/openrct2/object/ObjectFactory.h b/src/openrct2/object/ObjectFactory.h index ab7ea54de8..a87f4b7434 100644 --- a/src/openrct2/object/ObjectFactory.h +++ b/src/openrct2/object/ObjectFactory.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectLimits.h b/src/openrct2/object/ObjectLimits.h index 795d7d90b5..634a450de4 100644 --- a/src/openrct2/object/ObjectLimits.h +++ b/src/openrct2/object/ObjectLimits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -32,5 +32,6 @@ constexpr uint16_t kMaxFootpathSurfaceObjects = 255; constexpr uint16_t kMaxFootpathRailingsObjects = 255; constexpr uint16_t kMaxAudioObjects = 255; constexpr uint16_t kMaxPeepNamesObjects = 1; +constexpr uint16_t kMaxPeepAnimationsObjects = 255; constexpr uint8_t kDatNameLength = 8; diff --git a/src/openrct2/object/ObjectList.cpp b/src/openrct2/object/ObjectList.cpp index 74fd3ebb5e..be2c8be252 100644 --- a/src/openrct2/object/ObjectList.cpp +++ b/src/openrct2/object/ObjectList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -36,7 +36,7 @@ static constexpr std::array kObjectEntryG kMaxScenarioTextObjects, // scenario text kMaxTerrainSurfaceObjects, kMaxTerrainEdgeObjects, kMaxStationObjects, kMaxMusicObjects, kMaxFootpathSurfaceObjects, kMaxFootpathRailingsObjects, - kMaxAudioObjects, kMaxPeepNamesObjects, + kMaxAudioObjects, kMaxPeepNamesObjects, kMaxPeepAnimationsObjects, }; static_assert(std::size(kObjectEntryGroupCounts) == EnumValue(ObjectType::Count)); diff --git a/src/openrct2/object/ObjectList.h b/src/openrct2/object/ObjectList.h index 476c694e4e..6695420886 100644 --- a/src/openrct2/object/ObjectList.h +++ b/src/openrct2/object/ObjectList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index 266981cf2e..6ca2b10908 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectManager.h b/src/openrct2/object/ObjectManager.h index 43377730ee..2a8a0dbff5 100644 --- a/src/openrct2/object/ObjectManager.h +++ b/src/openrct2/object/ObjectManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 9904cfe41d..8668f7e54c 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -76,7 +76,7 @@ class ObjectFileIndex final : public FileIndex { private: static constexpr uint32_t MAGIC_NUMBER = 0x5844494F; // OIDX - static constexpr uint16_t VERSION = 29; + static constexpr uint16_t VERSION = 30; static constexpr auto PATTERN = "*.dat;*.pob;*.json;*.parkobj"; IObjectRepository& _objectRepository; @@ -160,6 +160,9 @@ protected: case ObjectType::FootpathSurface: ds << item.FootpathSurfaceInfo.Flags; break; + case ObjectType::PeepAnimations: + ds << item.PeepAnimationsInfo.PeepType; + break; default: // Switch processes only ObjectType::Ride and ObjectType::SceneryGroup break; diff --git a/src/openrct2/object/ObjectRepository.h b/src/openrct2/object/ObjectRepository.h index d92685379f..484b2c52ee 100644 --- a/src/openrct2/object/ObjectRepository.h +++ b/src/openrct2/object/ObjectRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -63,6 +63,10 @@ struct ObjectRepositoryItem { uint8_t Flags{}; } FootpathSurfaceInfo; + struct + { + uint8_t PeepType{}; + } PeepAnimationsInfo; [[nodiscard]] ObjectSourceGame GetFirstSourceGame() const { diff --git a/src/openrct2/object/ObjectTypes.cpp b/src/openrct2/object/ObjectTypes.cpp index ad78be0b66..eb1612447f 100644 --- a/src/openrct2/object/ObjectTypes.cpp +++ b/src/openrct2/object/ObjectTypes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -34,17 +34,18 @@ constexpr std::array kAllObjectTypes = { ObjectType::FootpathRailings, ObjectType::Audio, ObjectType::PeepNames, + ObjectType::PeepAnimations, }; static_assert(kAllObjectTypes.size() == EnumValue(ObjectType::Count)); // Object types that can be saved in a park file. static constexpr std::array kTransientObjectTypes = { - ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, ObjectType::Walls, - ObjectType::Banners, ObjectType::Paths, ObjectType::PathAdditions, ObjectType::SceneryGroup, - ObjectType::ParkEntrance, ObjectType::Water, ObjectType::TerrainSurface, ObjectType::TerrainEdge, - ObjectType::Station, ObjectType::Music, ObjectType::FootpathSurface, ObjectType::FootpathRailings, - ObjectType::PeepNames, + ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, ObjectType::Walls, + ObjectType::Banners, ObjectType::Paths, ObjectType::PathAdditions, ObjectType::SceneryGroup, + ObjectType::ParkEntrance, ObjectType::Water, ObjectType::TerrainSurface, ObjectType::TerrainEdge, + ObjectType::Station, ObjectType::Music, ObjectType::FootpathSurface, ObjectType::FootpathRailings, + ObjectType::PeepNames, ObjectType::PeepAnimations, }; // Object types that cannot be saved in a park file. diff --git a/src/openrct2/object/ObjectTypes.h b/src/openrct2/object/ObjectTypes.h index d9c93f57dd..75dadd261c 100644 --- a/src/openrct2/object/ObjectTypes.h +++ b/src/openrct2/object/ObjectTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -40,12 +40,13 @@ enum class ObjectType : uint8_t FootpathRailings, Audio, PeepNames, + PeepAnimations, Count, None = 255 }; -static constexpr size_t kNumTransientObjectTypes = 17; +static constexpr size_t kNumTransientObjectTypes = 18; static constexpr size_t kNumIntransientObjectTypes = 2; bool ObjectTypeIsTransient(ObjectType type); diff --git a/src/openrct2/object/PathAdditionEntry.h b/src/openrct2/object/PathAdditionEntry.h index 858fc91cac..4a42df77ab 100644 --- a/src/openrct2/object/PathAdditionEntry.h +++ b/src/openrct2/object/PathAdditionEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PathAdditionObject.cpp b/src/openrct2/object/PathAdditionObject.cpp index a4697c8aa8..e1fdf821ca 100644 --- a/src/openrct2/object/PathAdditionObject.cpp +++ b/src/openrct2/object/PathAdditionObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PathAdditionObject.h b/src/openrct2/object/PathAdditionObject.h index a51f3132d7..da8d3815c6 100644 --- a/src/openrct2/object/PathAdditionObject.h +++ b/src/openrct2/object/PathAdditionObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp new file mode 100644 index 0000000000..fd4288f6e6 --- /dev/null +++ b/src/openrct2/object/PeepAnimationsObject.cpp @@ -0,0 +1,221 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "PeepAnimationsObject.h" + +#include "../Context.h" +#include "../PlatformEnvironment.h" +#include "../core/EnumMap.hpp" +#include "../core/Guard.hpp" +#include "../core/Json.hpp" +#include "../peep/PeepAnimations.h" +#include "../rct12/RCT12.h" +#include "ObjectRepository.h" + +using namespace OpenRCT2; + +static const EnumMap animationPeepTypeMap({ + { "guest", AnimationPeepType::Guest }, + { "handyman", AnimationPeepType::Handyman }, + { "mechanic", AnimationPeepType::Mechanic }, + { "security", AnimationPeepType::Security }, + { "entertainer", AnimationPeepType::Entertainer }, +}); + +void PeepAnimationsObject::Load() +{ + auto numImages = GetImageTable().GetCount(); + if (numImages == 0) + return; + + _imageOffsetId = LoadImages(); + + // Set loaded image offsets for all animations + for (auto groupKey = 0u; groupKey < _animationGroups.size(); groupKey++) + { + auto& group = _animationGroups[groupKey]; + auto& requiredAnimationMap = getAnimationsByPeepType(_peepType); + for (auto& [typeStr, typeEnum] : requiredAnimationMap) + { + group[typeEnum].base_image = _imageOffsetId + group[typeEnum].imageTableOffset; + group[typeEnum].bounds = inferMaxAnimationDimensions(group[typeEnum]); + + // Balloons, hats and umbrellas are painted separately, so the inference + // algorithm doesn't account for those. We manually compensate for these here. + // Between 8-12 pixels are needed, depending on rotation, so we're generalising. + auto pag = PeepAnimationGroup(groupKey); + if (pag == PeepAnimationGroup::Balloon || pag == PeepAnimationGroup::Hat || pag == PeepAnimationGroup::Umbrella) + { + group[typeEnum].bounds.sprite_height_negative += 12; + } + } + } +} + +void PeepAnimationsObject::Unload() +{ + UnloadImages(); +} + +void PeepAnimationsObject::ReadJson(IReadObjectContext* context, json_t& root) +{ + Guard::Assert(root.is_object(), "PeepAnimationsObject::ReadJson expects parameter root to be an object"); + PopulateTablesFromJson(context, root); + + Guard::Assert(root["properties"].is_object(), "PeepAnimationsObject::ReadJson expects properties to be an object"); + ReadProperties(root["properties"]); + + auto& requiredAnimationMap = getAnimationsByPeepType(_peepType); + _animationGroups.clear(); + + Guard::Assert(root["animationGroups"].is_array(), "PeepAnimationsObject::ReadJson expects animationGroups to be an array"); + for (auto& groupJson : root["animationGroups"]) + { + Guard::Assert(groupJson["animations"].is_object(), "PeepAnimationsObject::ReadJson expects animations to be an array"); + + PeepAnimations group = ReadAnimations(requiredAnimationMap, groupJson["animations"]); + + if (groupJson.contains("legacyPosition")) + { + auto position = Json::GetNumber(groupJson["legacyPosition"]); + if (position <= EnumValue(RCT12PeepAnimationGroup::Count)) + { + group.legacyPosition = static_cast(position); + } + } + else + { + group.legacyPosition = RCT12PeepAnimationGroup::Invalid; + } + + group.isSlowWalking = Json::GetBoolean(groupJson["isSlowWalking"], false); + group.scriptName = Json::GetString(groupJson["scriptName"], std::string(GetIdentifier())); + + _animationGroups.push_back(group); + } +} + +PeepAnimations PeepAnimationsObject::ReadAnimations(const EnumMap& requiredAnimationMap, json_t& animations) +{ + PeepAnimations group{}; + for (auto& [typeStr, typeEnum] : requiredAnimationMap) + { + if (!animations.contains(typeStr)) + { + // Successive animation groups can copy the basic animations from the primary group + if (!_animationGroups.empty()) + { + auto& referenceAnim = _animationGroups[0][typeEnum]; + if (referenceAnim.imageTableOffset != 0) + { + LOG_VERBOSE("Copying animation '%s' from primary group", typeStr); + std::vector sequence = referenceAnim.frame_offsets; + group[typeEnum] = { + .imageTableOffset = referenceAnim.imageTableOffset, + .frame_offsets = sequence, + }; + continue; + } + } + + // No primary animation bail us out -- error here! + LOG_ERROR("Required animation does not exist: %s", typeStr); + continue; + } + + // The `.data()` here is a workaround for older versions of nlohmann-json. + // TODO: remove when we no longer support Ubuntu 22.04 (Jammy). + auto& animJson = animations[typeStr.data()]; + + // Store animation sequence in vector + auto sequence = animJson["sequence"].get>(); + + group[typeEnum] = { + .imageTableOffset = Json::GetNumber(animJson["offset"]), + .frame_offsets = sequence, + }; + } + + return group; +} + +void PeepAnimationsObject::ReadProperties(json_t& props) +{ + Guard::Assert(props["peepType"].is_string(), "PeepAnimationsObject::ReadProperties expects peepType to be a string"); + _peepType = animationPeepTypeMap[Json::GetString(props["peepType"])]; + + Guard::Assert( + props["noRandomPlacement"].is_boolean(), + "PeepAnimationsObject::ReadProperties expects noRandomPlacement to be a boolean"); + _noRandomPlacement = Json::GetBoolean(props["noRandomPlacement"], false); +} + +std::string PeepAnimationsObject::GetCostumeName() const +{ + return GetStringTable().GetString(ObjectStringID::NAME); +} + +ImageIndex PeepAnimationsObject::GetInlineImageId() const +{ + return _imageOffsetId; +} + +AnimationPeepType PeepAnimationsObject::GetPeepType() const +{ + return _peepType; +} + +const PeepAnimation& PeepAnimationsObject::GetPeepAnimation(PeepAnimationGroup animGroup, PeepAnimationType animType) const +{ + return _animationGroups[EnumValue(animGroup)][animType]; +} + +const SpriteBounds& PeepAnimationsObject::GetSpriteBounds(PeepAnimationGroup animGroup, PeepAnimationType animType) const +{ + return _animationGroups[EnumValue(animGroup)][animType].bounds; +} + +size_t PeepAnimationsObject::GetNumAnimationGroups() const +{ + return _animationGroups.size(); +} + +RCT12PeepAnimationGroup PeepAnimationsObject::GetLegacyPosition(PeepAnimationGroup animGroup) const +{ + return _animationGroups[EnumValue(animGroup)].legacyPosition; +} + +std::string_view PeepAnimationsObject::GetScriptName(PeepAnimationGroup animGroup) const +{ + return _animationGroups[EnumValue(animGroup)].scriptName; +} + +bool PeepAnimationsObject::IsSlowWalking(PeepAnimationGroup animGroup) const +{ + return _animationGroups[EnumValue(animGroup)].isSlowWalking; +} + +void PeepAnimationsObject::DrawPreview(DrawPixelInfo& dpi, int32_t width, int32_t height) const +{ + auto centre = ScreenCoordsXY{ width / 2, height / 2 }; + + // Draw inline sprite in the centre + GfxDrawSprite(dpi, ImageId(_imageOffsetId + 0), centre + ScreenCoordsXY{ -8, -8 }); + + // Draw four cardinal directions around the inline sprite + GfxDrawSprite(dpi, ImageId(_imageOffsetId + 4, COLOUR_BRIGHT_RED, COLOUR_TEAL), centre + ScreenCoordsXY{ -32, -24 }); + GfxDrawSprite(dpi, ImageId(_imageOffsetId + 2, COLOUR_BRIGHT_RED, COLOUR_TEAL), centre + ScreenCoordsXY{ +32, +32 }); + GfxDrawSprite(dpi, ImageId(_imageOffsetId + 1, COLOUR_BRIGHT_RED, COLOUR_TEAL), centre + ScreenCoordsXY{ +32, -24 }); + GfxDrawSprite(dpi, ImageId(_imageOffsetId + 3, COLOUR_BRIGHT_RED, COLOUR_TEAL), centre + ScreenCoordsXY{ -32, +32 }); +} + +void PeepAnimationsObject::SetRepositoryItem(ObjectRepositoryItem* item) const +{ + item->PeepAnimationsInfo.PeepType = EnumValue(_peepType); +} diff --git a/src/openrct2/object/PeepAnimationsObject.h b/src/openrct2/object/PeepAnimationsObject.h new file mode 100644 index 0000000000..a0ed6c6dee --- /dev/null +++ b/src/openrct2/object/PeepAnimationsObject.h @@ -0,0 +1,60 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../core/IStream.hpp" +#include "../peep/PeepAnimations.h" +#include "Object.h" + +#include +#include + +enum class RCT12PeepAnimationGroup : uint8_t; + +class PeepAnimationsObject final : public Object +{ +private: + ImageIndex _imageOffsetId; + std::vector _animationGroups; + OpenRCT2::AnimationPeepType _peepType; + bool _noRandomPlacement; + +public: + static constexpr ObjectType kObjectType = ObjectType::PeepAnimations; + + void ReadJson(IReadObjectContext* context, json_t& root) override; + OpenRCT2::PeepAnimations ReadAnimations(const EnumMap& requiredAnimationMap, json_t& animations); + void ReadProperties(json_t& properties); + void Load() override; + void Unload() override; + + std::string GetCostumeName() const; + ImageIndex GetInlineImageId() const; + + const OpenRCT2::PeepAnimation& GetPeepAnimation( + PeepAnimationGroup animGroup, PeepAnimationType animType = PeepAnimationType::Walking) const; + const OpenRCT2::SpriteBounds& GetSpriteBounds( + PeepAnimationGroup spriteType, PeepAnimationType actionAnimationGroup = PeepAnimationType::Walking) const; + + OpenRCT2::AnimationPeepType GetPeepType() const; + size_t GetNumAnimationGroups() const; + RCT12PeepAnimationGroup GetLegacyPosition(PeepAnimationGroup animGroup) const; + std::string_view GetScriptName(PeepAnimationGroup animGroup) const; + + bool IsSlowWalking(PeepAnimationGroup animGroup) const; + + bool ShouldExcludeFromRandomPlacement() const + { + return _noRandomPlacement; + } + + void DrawPreview(DrawPixelInfo& dpi, int32_t width, int32_t height) const override; + void SetRepositoryItem(ObjectRepositoryItem* item) const override; +}; diff --git a/src/openrct2/object/PeepNamesObject.cpp b/src/openrct2/object/PeepNamesObject.cpp index 415c39c562..99668b05cd 100644 --- a/src/openrct2/object/PeepNamesObject.cpp +++ b/src/openrct2/object/PeepNamesObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepNamesObject.h b/src/openrct2/object/PeepNamesObject.h index abdc834a0b..e3f594ab76 100644 --- a/src/openrct2/object/PeepNamesObject.h +++ b/src/openrct2/object/PeepNamesObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ResourceTable.cpp b/src/openrct2/object/ResourceTable.cpp index 2948cc21e0..025aeff076 100644 --- a/src/openrct2/object/ResourceTable.cpp +++ b/src/openrct2/object/ResourceTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ResourceTable.h b/src/openrct2/object/ResourceTable.h index af2b9b6e7d..96d5989228 100644 --- a/src/openrct2/object/ResourceTable.h +++ b/src/openrct2/object/ResourceTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index ba969dde2a..98855a6cba 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/RideObject.h b/src/openrct2/object/RideObject.h index d41bf85829..aae4b3bc3e 100644 --- a/src/openrct2/object/RideObject.h +++ b/src/openrct2/object/RideObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ScenarioTextObject.cpp b/src/openrct2/object/ScenarioTextObject.cpp index 93c5c1aca1..32a687ad42 100644 --- a/src/openrct2/object/ScenarioTextObject.cpp +++ b/src/openrct2/object/ScenarioTextObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ScenarioTextObject.h b/src/openrct2/object/ScenarioTextObject.h index 5173ede439..84958d4e37 100644 --- a/src/openrct2/object/ScenarioTextObject.h +++ b/src/openrct2/object/ScenarioTextObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryGroupEntry.h b/src/openrct2/object/SceneryGroupEntry.h index fdfdb0978d..1f521c1b88 100644 --- a/src/openrct2/object/SceneryGroupEntry.h +++ b/src/openrct2/object/SceneryGroupEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index cb6b8f3fcc..3310c2103c 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -154,7 +154,7 @@ void SceneryGroupObject::ReadJson(IReadObjectContext* context, json_t& root) if (properties.is_object()) { _legacyType.priority = Json::GetNumber(properties["priority"], 40); - _legacyType.entertainer_costumes = ReadJsonEntertainerCostumes(properties["entertainerCostumes"]); + _legacyType.entertainer_costumes = 0; _items = ReadJsonEntries(context, properties["entries"]); } @@ -162,45 +162,6 @@ void SceneryGroupObject::ReadJson(IReadObjectContext* context, json_t& root) PopulateTablesFromJson(context, root); } -uint32_t SceneryGroupObject::ReadJsonEntertainerCostumes(json_t& jCostumes) -{ - uint32_t costumes = 0; - for (auto& jCostume : jCostumes) - { - auto entertainer = ParseEntertainerCostume(Json::GetString(jCostume)); - auto peepSprite = EntertainerCostumeToSprite(entertainer); - costumes |= 1 << (static_cast(peepSprite)); - } - return costumes; -} - -EntertainerCostume SceneryGroupObject::ParseEntertainerCostume(const std::string& s) -{ - if (s == "panda") - return EntertainerCostume::Panda; - if (s == "tiger") - return EntertainerCostume::Tiger; - if (s == "elephant") - return EntertainerCostume::Elephant; - if (s == "roman") - return EntertainerCostume::Roman; - if (s == "gorilla") - return EntertainerCostume::Gorilla; - if (s == "snowman") - return EntertainerCostume::Snowman; - if (s == "knight") - return EntertainerCostume::Knight; - if (s == "astronaut") - return EntertainerCostume::Astronaut; - if (s == "bandit") - return EntertainerCostume::Bandit; - if (s == "sheriff") - return EntertainerCostume::Sheriff; - if (s == "pirate") - return EntertainerCostume::Pirate; - return EntertainerCostume::Panda; -} - std::vector SceneryGroupObject::ReadJsonEntries(IReadObjectContext* context, json_t& jEntries) { std::vector entries; diff --git a/src/openrct2/object/SceneryGroupObject.h b/src/openrct2/object/SceneryGroupObject.h index c99846d117..c1d6d75e9a 100644 --- a/src/openrct2/object/SceneryGroupObject.h +++ b/src/openrct2/object/SceneryGroupObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,8 +16,6 @@ struct ObjectRepositoryItem; -enum class EntertainerCostume : uint8_t; - class SceneryGroupObject final : public Object { private: @@ -47,7 +45,5 @@ public: private: static std::vector ReadItems(OpenRCT2::IStream* stream); - static uint32_t ReadJsonEntertainerCostumes(json_t& jCostumes); - static EntertainerCostume ParseEntertainerCostume(const std::string& s); static std::vector ReadJsonEntries(IReadObjectContext* context, json_t& jEntries); }; diff --git a/src/openrct2/object/SceneryObject.h b/src/openrct2/object/SceneryObject.h index 3128cfb8ca..8e6ee592c5 100644 --- a/src/openrct2/object/SceneryObject.h +++ b/src/openrct2/object/SceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryEntry.h b/src/openrct2/object/SmallSceneryEntry.h index 942a584ea8..8185251e02 100644 --- a/src/openrct2/object/SmallSceneryEntry.h +++ b/src/openrct2/object/SmallSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp index 0aeadbc9c1..e4ddc7e434 100644 --- a/src/openrct2/object/SmallSceneryObject.cpp +++ b/src/openrct2/object/SmallSceneryObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryObject.h b/src/openrct2/object/SmallSceneryObject.h index c9406863ee..87adcf6a95 100644 --- a/src/openrct2/object/SmallSceneryObject.h +++ b/src/openrct2/object/SmallSceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StationObject.cpp b/src/openrct2/object/StationObject.cpp index fc7dddbad0..428ace48e0 100644 --- a/src/openrct2/object/StationObject.cpp +++ b/src/openrct2/object/StationObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StationObject.h b/src/openrct2/object/StationObject.h index 7874e21d4f..89a97eeb58 100644 --- a/src/openrct2/object/StationObject.h +++ b/src/openrct2/object/StationObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp index e84f1a842f..179d011cbc 100644 --- a/src/openrct2/object/StringTable.cpp +++ b/src/openrct2/object/StringTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StringTable.h b/src/openrct2/object/StringTable.h index db42539dd8..cb4b75397c 100644 --- a/src/openrct2/object/StringTable.h +++ b/src/openrct2/object/StringTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainEdgeObject.cpp b/src/openrct2/object/TerrainEdgeObject.cpp index e3b0d67d03..393eacf1ab 100644 --- a/src/openrct2/object/TerrainEdgeObject.cpp +++ b/src/openrct2/object/TerrainEdgeObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainEdgeObject.h b/src/openrct2/object/TerrainEdgeObject.h index ea77f40656..c859e3616b 100644 --- a/src/openrct2/object/TerrainEdgeObject.h +++ b/src/openrct2/object/TerrainEdgeObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainSurfaceObject.cpp b/src/openrct2/object/TerrainSurfaceObject.cpp index 8a4750eb00..ead66b696f 100644 --- a/src/openrct2/object/TerrainSurfaceObject.cpp +++ b/src/openrct2/object/TerrainSurfaceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index 1cfb4b5a87..5ca3bc8f34 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 43e7e5141f..a5223d3d20 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallObject.h b/src/openrct2/object/WallObject.h index 7be5bc2a5d..5c2cff9cf7 100644 --- a/src/openrct2/object/WallObject.h +++ b/src/openrct2/object/WallObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallSceneryEntry.cpp b/src/openrct2/object/WallSceneryEntry.cpp index b66e282e6a..ee9711c085 100644 --- a/src/openrct2/object/WallSceneryEntry.cpp +++ b/src/openrct2/object/WallSceneryEntry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallSceneryEntry.h b/src/openrct2/object/WallSceneryEntry.h index 7fd9b0f53f..c1d8740926 100644 --- a/src/openrct2/object/WallSceneryEntry.h +++ b/src/openrct2/object/WallSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterEntry.h b/src/openrct2/object/WaterEntry.h index b4709fec0f..ef7cf002e4 100644 --- a/src/openrct2/object/WaterEntry.h +++ b/src/openrct2/object/WaterEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index bb80ffbf1f..828e8c115d 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterObject.h b/src/openrct2/object/WaterObject.h index 30408bc493..d6cb9ce97f 100644 --- a/src/openrct2/object/WaterObject.h +++ b/src/openrct2/object/WaterObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Boundbox.h b/src/openrct2/paint/Boundbox.h index 497a07fe45..588d45253d 100644 --- a/src/openrct2/paint/Boundbox.h +++ b/src/openrct2/paint/Boundbox.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.Entity.cpp b/src/openrct2/paint/Paint.Entity.cpp index 2e70325db7..d0ef7259c7 100644 --- a/src/openrct2/paint/Paint.Entity.cpp +++ b/src/openrct2/paint/Paint.Entity.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.Entity.h b/src/openrct2/paint/Paint.Entity.h index 0a3fb8bd40..3f8117e1f5 100644 --- a/src/openrct2/paint/Paint.Entity.h +++ b/src/openrct2/paint/Paint.Entity.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.SessionFlags.h b/src/openrct2/paint/Paint.SessionFlags.h index 89b4ee8e61..ea8789d24c 100644 --- a/src/openrct2/paint/Paint.SessionFlags.h +++ b/src/openrct2/paint/Paint.SessionFlags.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index f304ba5c8e..f3c4a248c0 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index c3ebcd6068..d84a2da2e6 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/PaintHelpers.cpp b/src/openrct2/paint/PaintHelpers.cpp index 3333453d11..cdb929c9c0 100644 --- a/src/openrct2/paint/PaintHelpers.cpp +++ b/src/openrct2/paint/PaintHelpers.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 4e663e9288..8e91a15e74 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -9,25 +9,19 @@ #include "Painter.h" -#include "../Game.h" #include "../GameState.h" #include "../OpenRCT2.h" #include "../ReplayManager.h" #include "../config/Config.h" #include "../drawing/IDrawingEngine.h" #include "../drawing/Text.h" -#include "../interface/Chat.h" -#include "../interface/InteractiveConsole.h" -#include "../interface/Widget.h" -#include "../interface/Window.h" -#include "../localisation/FormatCodes.h" #include "../localisation/Formatting.h" #include "../localisation/Language.h" #include "../paint/Paint.h" #include "../profiling/Profiling.h" #include "../scenes/intro/IntroScene.h" -#include "../scenes/title/TitleScene.h" #include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../world/TileInspector.h" using namespace OpenRCT2; @@ -105,7 +99,8 @@ static bool ShouldShowFPS() if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) return true; - return WindowFindByClass(WindowClass::TopToolbar); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + return windowMgr->FindByClass(WindowClass::TopToolbar); } void Painter::PaintFPS(DrawPixelInfo& dpi) diff --git a/src/openrct2/paint/Painter.h b/src/openrct2/paint/Painter.h index 4bbbb0dc17..08690836f4 100644 --- a/src/openrct2/paint/Painter.h +++ b/src/openrct2/paint/Painter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index 9e450858b6..e4acb8a42d 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -30,7 +30,8 @@ using namespace OpenRCT2; -static uint16_t _virtualFloorBaseSize = 5 * 32; +static constexpr uint16_t kVirtualFloorBaseSize = 5 * kCoordsXYStep; +static constexpr CoordsXY kVirtualFloorBaseSizeXY = { kVirtualFloorBaseSize, kVirtualFloorBaseSize }; static uint16_t _virtualFloorHeight = 0; static CoordsXYZ _virtualFloorLastMinPos; static CoordsXYZ _virtualFloorLastMaxPos; @@ -130,10 +131,10 @@ void VirtualFloorInvalidate() && max_position.y != std::numeric_limits::lowest()); // Apply the virtual floor size to the computed invalidation area. - min_position.x -= _virtualFloorBaseSize + 16; - min_position.y -= _virtualFloorBaseSize + 16; - max_position.x += _virtualFloorBaseSize + 16; - max_position.y += _virtualFloorBaseSize + 16; + min_position.x -= kVirtualFloorBaseSize + 16; + min_position.y -= kVirtualFloorBaseSize + 16; + max_position.x += kVirtualFloorBaseSize + 16; + max_position.y += kVirtualFloorBaseSize + 16; // Invalidate previous region if appropriate. if (_virtualFloorLastMinPos.x != std::numeric_limits::max() @@ -187,12 +188,12 @@ bool VirtualFloorTileIsFloor(const CoordsXY& loc) } // Check if map selection (usually single tiles) are enabled - // and if the current tile is near or on them - if ((gMapSelectFlags & MAP_SELECT_FLAG_ENABLE) && loc.x >= gMapSelectPositionA.x - _virtualFloorBaseSize - && loc.y >= gMapSelectPositionA.y - _virtualFloorBaseSize && loc.x <= gMapSelectPositionB.x + _virtualFloorBaseSize - && loc.y <= gMapSelectPositionB.y + _virtualFloorBaseSize) + // and if the current tile is near or on them + // (short-circuit to false otherwise - we don't want to show a second + // virtual floor from e. g. an open ride construction window) + if (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE) { - return true; + return loc >= gMapSelectPositionA - kVirtualFloorBaseSizeXY && loc <= gMapSelectPositionB + kVirtualFloorBaseSizeXY; } if (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE_CONSTRUCT) @@ -200,8 +201,8 @@ bool VirtualFloorTileIsFloor(const CoordsXY& loc) // Check if we are anywhere near the selection tiles (larger scenery / rides) for (const auto& tile : gMapSelectionTiles) { - if (loc.x >= tile.x - _virtualFloorBaseSize && loc.y >= tile.y - _virtualFloorBaseSize - && loc.x <= tile.x + _virtualFloorBaseSize && loc.y <= tile.y + _virtualFloorBaseSize) + if (loc.x >= tile.x - kVirtualFloorBaseSize && loc.y >= tile.y - kVirtualFloorBaseSize + && loc.x <= tile.x + kVirtualFloorBaseSize && loc.y <= tile.y + kVirtualFloorBaseSize) { return true; } diff --git a/src/openrct2/paint/VirtualFloor.h b/src/openrct2/paint/VirtualFloor.h index c0ab80a784..59d32c681b 100644 --- a/src/openrct2/paint/VirtualFloor.h +++ b/src/openrct2/paint/VirtualFloor.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/MetalSupports.cpp b/src/openrct2/paint/support/MetalSupports.cpp index 2e276da69f..2ae717f398 100644 --- a/src/openrct2/paint/support/MetalSupports.cpp +++ b/src/openrct2/paint/support/MetalSupports.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/MetalSupports.h b/src/openrct2/paint/support/MetalSupports.h index 00b0268268..b062aefb33 100644 --- a/src/openrct2/paint/support/MetalSupports.h +++ b/src/openrct2/paint/support/MetalSupports.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.cpp b/src/openrct2/paint/support/WoodenSupports.cpp index 534347d3ee..84ee8037bf 100644 --- a/src/openrct2/paint/support/WoodenSupports.cpp +++ b/src/openrct2/paint/support/WoodenSupports.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.h b/src/openrct2/paint/support/WoodenSupports.h index 953672bc21..62aa479a66 100644 --- a/src/openrct2/paint/support/WoodenSupports.h +++ b/src/openrct2/paint/support/WoodenSupports.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.hpp b/src/openrct2/paint/support/WoodenSupports.hpp index 58823aef69..628c3250b2 100644 --- a/src/openrct2/paint/support/WoodenSupports.hpp +++ b/src/openrct2/paint/support/WoodenSupports.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index 8c23b68438..4510028bad 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 86d2059623..42b8794887 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index f65109f4e2..21ab7de778 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index cdb3e35834..5f73a841d3 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp index f5d9f13e9e..ddf3c65bc1 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.h b/src/openrct2/paint/tile_element/Paint.PathAddition.h index dc7d0fbda3..b1554d21fd 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.h +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp index 41ba6095bc..5fe7f40cbe 100644 --- a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index a588344cdc..b00186e4f9 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Surface.h b/src/openrct2/paint/tile_element/Paint.Surface.h index 06eae8f303..5595b67b59 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.h +++ b/src/openrct2/paint/tile_element/Paint.Surface.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index c123239df9..9221103396 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.h b/src/openrct2/paint/tile_element/Paint.TileElement.h index 0ca26bf9ba..6489dbee1e 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.h +++ b/src/openrct2/paint/tile_element/Paint.TileElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Tunnel.h b/src/openrct2/paint/tile_element/Paint.Tunnel.h index 484c3bfaa7..ab260e0489 100644 --- a/src/openrct2/paint/tile_element/Paint.Tunnel.h +++ b/src/openrct2/paint/tile_element/Paint.Tunnel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index d2cfbb1454..b57a2ae3ec 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Segment.h b/src/openrct2/paint/tile_element/Segment.h index 8b242acdec..70e687d3ab 100644 --- a/src/openrct2/paint/tile_element/Segment.h +++ b/src/openrct2/paint/tile_element/Segment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/Segment.h b/src/openrct2/paint/track/Segment.h index 33e9ed121e..b9e6213859 100644 --- a/src/openrct2/paint/track/Segment.h +++ b/src/openrct2/paint/track/Segment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/Support.h b/src/openrct2/paint/track/Support.h index a1dac03445..bafd367d1f 100644 --- a/src/openrct2/paint/track/Support.h +++ b/src/openrct2/paint/track/Support.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp index d50cc17afe..6bc1d2167e 100644 --- a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp index a3bdd281d9..76acdee3f7 100644 --- a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp index 1b31498384..f2ff7dc1ea 100644 --- a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp +++ b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp index 0e9711424b..56762e7b82 100644 --- a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp index 030883587a..49da80a587 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp index 2b5729878e..99e774d807 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp index d41c1f8f66..b52d71bcbc 100644 --- a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp index d0b5939acc..82dc2b7f63 100644 --- a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp index 86d461ed18..853d83dd83 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp index 5594a02f39..aad6847afa 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp index 33cca44622..1afdda61d8 100644 --- a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index 3dd99558b0..30360d9382 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp index e4275fbb09..888765bc38 100644 --- a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp index 327d25043b..a496cd3bc7 100644 --- a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp index 1fb58f1bab..831278da4c 100644 --- a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp index de547f6fcb..af1e2d0142 100644 --- a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp index 88426ccc6d..17df6164f0 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp index 1c6a31e1bc..0f356637ab 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp index 37fb2bb00a..a074b2a64f 100644 --- a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp index 866a392efb..920fac2f31 100644 --- a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp index 6a989d4fe0..8ea2428a01 100644 --- a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MineRide.cpp b/src/openrct2/paint/track/coaster/MineRide.cpp index 7a651d0b77..4dcd3336cb 100644 --- a/src/openrct2/paint/track/coaster/MineRide.cpp +++ b/src/openrct2/paint/track/coaster/MineRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp index 64d72c11f7..5d9c5f6af6 100644 --- a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp index 4ba84c24af..36cd774755 100644 --- a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp index 5790823dff..39f009934d 100644 --- a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp index f5b437b1aa..ace17e35a5 100644 --- a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp index 5f2e82a0fa..0a9a7ecf66 100644 --- a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp index 129bfa3968..a831f5f456 100644 --- a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp index ebd9453d1e..5444ce7fcc 100644 --- a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index e3504505f9..10d45b6963 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp index 52f0df0129..dd9a0d67f7 100644 --- a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/Steeplechase.cpp b/src/openrct2/paint/track/coaster/Steeplechase.cpp index 44f70009b5..2443a5c117 100644 --- a/src/openrct2/paint/track/coaster/Steeplechase.cpp +++ b/src/openrct2/paint/track/coaster/Steeplechase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp index 2a72f93f54..788f2451f6 100644 --- a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp index 0daf908f54..e34431361f 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h index 02e9cb0847..dd2479e762 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/VirginiaReel.cpp b/src/openrct2/paint/track/coaster/VirginiaReel.cpp index 412c2702e8..30f62aadf6 100644 --- a/src/openrct2/paint/track/coaster/VirginiaReel.cpp +++ b/src/openrct2/paint/track/coaster/VirginiaReel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WildMouse.cpp b/src/openrct2/paint/track/coaster/WildMouse.cpp index 7ad99e49ef..3c0d9dad36 100644 --- a/src/openrct2/paint/track/coaster/WildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WildMouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp index ba241ae6b2..5a8de377c1 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp index 4dca63186d..6b638acf74 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp index 988c6f75cf..2c0b097478 100644 --- a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/CarRide.cpp b/src/openrct2/paint/track/gentle/CarRide.cpp index 5516f4e6e0..88a0e04b74 100644 --- a/src/openrct2/paint/track/gentle/CarRide.cpp +++ b/src/openrct2/paint/track/gentle/CarRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Circus.cpp b/src/openrct2/paint/track/gentle/Circus.cpp index d3fd2efcfc..3d4ac5f868 100644 --- a/src/openrct2/paint/track/gentle/Circus.cpp +++ b/src/openrct2/paint/track/gentle/Circus.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/CrookedHouse.cpp b/src/openrct2/paint/track/gentle/CrookedHouse.cpp index 6b70372d92..9872cca412 100644 --- a/src/openrct2/paint/track/gentle/CrookedHouse.cpp +++ b/src/openrct2/paint/track/gentle/CrookedHouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Dodgems.cpp b/src/openrct2/paint/track/gentle/Dodgems.cpp index 448a5a76d8..037301a68d 100644 --- a/src/openrct2/paint/track/gentle/Dodgems.cpp +++ b/src/openrct2/paint/track/gentle/Dodgems.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/FerrisWheel.cpp b/src/openrct2/paint/track/gentle/FerrisWheel.cpp index a3cc6b2bad..b6badab184 100644 --- a/src/openrct2/paint/track/gentle/FerrisWheel.cpp +++ b/src/openrct2/paint/track/gentle/FerrisWheel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp index 0d448089f8..a7347d140a 100644 --- a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp +++ b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/GhostTrain.cpp b/src/openrct2/paint/track/gentle/GhostTrain.cpp index 188dd6fc65..7e138d5a59 100644 --- a/src/openrct2/paint/track/gentle/GhostTrain.cpp +++ b/src/openrct2/paint/track/gentle/GhostTrain.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/HauntedHouse.cpp b/src/openrct2/paint/track/gentle/HauntedHouse.cpp index 0c33c646c7..063c962b8e 100644 --- a/src/openrct2/paint/track/gentle/HauntedHouse.cpp +++ b/src/openrct2/paint/track/gentle/HauntedHouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Maze.cpp b/src/openrct2/paint/track/gentle/Maze.cpp index 64ab0faf22..96e36d5d85 100644 --- a/src/openrct2/paint/track/gentle/Maze.cpp +++ b/src/openrct2/paint/track/gentle/Maze.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MerryGoRound.cpp b/src/openrct2/paint/track/gentle/MerryGoRound.cpp index 156b7d9994..ec7325da16 100644 --- a/src/openrct2/paint/track/gentle/MerryGoRound.cpp +++ b/src/openrct2/paint/track/gentle/MerryGoRound.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MiniGolf.cpp b/src/openrct2/paint/track/gentle/MiniGolf.cpp index edac692e0a..4198b69dab 100644 --- a/src/openrct2/paint/track/gentle/MiniGolf.cpp +++ b/src/openrct2/paint/track/gentle/MiniGolf.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp index c842f34c14..d305a746f2 100644 --- a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp +++ b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MonorailCycles.cpp b/src/openrct2/paint/track/gentle/MonorailCycles.cpp index b81309e1d9..4ea945c492 100644 --- a/src/openrct2/paint/track/gentle/MonorailCycles.cpp +++ b/src/openrct2/paint/track/gentle/MonorailCycles.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/ObservationTower.cpp b/src/openrct2/paint/track/gentle/ObservationTower.cpp index cee3f922cd..69d06bde5d 100644 --- a/src/openrct2/paint/track/gentle/ObservationTower.cpp +++ b/src/openrct2/paint/track/gentle/ObservationTower.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/SpaceRings.cpp b/src/openrct2/paint/track/gentle/SpaceRings.cpp index 3620ad8bd0..ccdd4983b2 100644 --- a/src/openrct2/paint/track/gentle/SpaceRings.cpp +++ b/src/openrct2/paint/track/gentle/SpaceRings.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/SpiralSlide.cpp b/src/openrct2/paint/track/gentle/SpiralSlide.cpp index 3c4d20fb33..60eaa7c08c 100644 --- a/src/openrct2/paint/track/gentle/SpiralSlide.cpp +++ b/src/openrct2/paint/track/gentle/SpiralSlide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/shops/Facility.cpp b/src/openrct2/paint/track/shops/Facility.cpp index 8c7f8a330b..bb0ac8e611 100644 --- a/src/openrct2/paint/track/shops/Facility.cpp +++ b/src/openrct2/paint/track/shops/Facility.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/shops/Shop.cpp b/src/openrct2/paint/track/shops/Shop.cpp index e0f3bf0b91..3417359e0e 100644 --- a/src/openrct2/paint/track/shops/Shop.cpp +++ b/src/openrct2/paint/track/shops/Shop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/3dCinema.cpp b/src/openrct2/paint/track/thrill/3dCinema.cpp index 0d2215f93b..49d93d357f 100644 --- a/src/openrct2/paint/track/thrill/3dCinema.cpp +++ b/src/openrct2/paint/track/thrill/3dCinema.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/Enterprise.cpp b/src/openrct2/paint/track/thrill/Enterprise.cpp index c0eb85b02a..e1cbf96e80 100644 --- a/src/openrct2/paint/track/thrill/Enterprise.cpp +++ b/src/openrct2/paint/track/thrill/Enterprise.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/GoKarts.cpp b/src/openrct2/paint/track/thrill/GoKarts.cpp index 8398fb70aa..0ebc55d2e0 100644 --- a/src/openrct2/paint/track/thrill/GoKarts.cpp +++ b/src/openrct2/paint/track/thrill/GoKarts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp index cda9949d68..2f56dadc46 100644 --- a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp +++ b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/MagicCarpet.cpp b/src/openrct2/paint/track/thrill/MagicCarpet.cpp index 8e9a02cb93..87bdd8ae26 100644 --- a/src/openrct2/paint/track/thrill/MagicCarpet.cpp +++ b/src/openrct2/paint/track/thrill/MagicCarpet.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/MotionSimulator.cpp b/src/openrct2/paint/track/thrill/MotionSimulator.cpp index 806c5d8bb7..25b02ba441 100644 --- a/src/openrct2/paint/track/thrill/MotionSimulator.cpp +++ b/src/openrct2/paint/track/thrill/MotionSimulator.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/RotoDrop.cpp b/src/openrct2/paint/track/thrill/RotoDrop.cpp index 540d620071..8c0022cf4d 100644 --- a/src/openrct2/paint/track/thrill/RotoDrop.cpp +++ b/src/openrct2/paint/track/thrill/RotoDrop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp index 6d277f60f2..4c3663357e 100644 --- a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/SwingingShip.cpp b/src/openrct2/paint/track/thrill/SwingingShip.cpp index 655b3fe01a..6ec4824205 100644 --- a/src/openrct2/paint/track/thrill/SwingingShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingShip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/TopSpin.cpp b/src/openrct2/paint/track/thrill/TopSpin.cpp index 9bc7834f5d..04b860449a 100644 --- a/src/openrct2/paint/track/thrill/TopSpin.cpp +++ b/src/openrct2/paint/track/thrill/TopSpin.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/Twist.cpp b/src/openrct2/paint/track/thrill/Twist.cpp index 32c417b711..ceb2a9df9c 100644 --- a/src/openrct2/paint/track/thrill/Twist.cpp +++ b/src/openrct2/paint/track/thrill/Twist.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Chairlift.cpp b/src/openrct2/paint/track/transport/Chairlift.cpp index b3f64a0e42..d4cb51c190 100644 --- a/src/openrct2/paint/track/transport/Chairlift.cpp +++ b/src/openrct2/paint/track/transport/Chairlift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Lift.cpp b/src/openrct2/paint/track/transport/Lift.cpp index de40eb6618..9b4c8e328b 100644 --- a/src/openrct2/paint/track/transport/Lift.cpp +++ b/src/openrct2/paint/track/transport/Lift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/MiniatureRailway.cpp b/src/openrct2/paint/track/transport/MiniatureRailway.cpp index 3b4e623c0a..62d853cbe3 100644 --- a/src/openrct2/paint/track/transport/MiniatureRailway.cpp +++ b/src/openrct2/paint/track/transport/MiniatureRailway.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Monorail.cpp b/src/openrct2/paint/track/transport/Monorail.cpp index 3f0e972bad..b745b59b10 100644 --- a/src/openrct2/paint/track/transport/Monorail.cpp +++ b/src/openrct2/paint/track/transport/Monorail.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp index 6f09bc3cd4..ecff3b5268 100644 --- a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp +++ b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/BoatHire.cpp b/src/openrct2/paint/track/water/BoatHire.cpp index 81160e9481..e095b7733d 100644 --- a/src/openrct2/paint/track/water/BoatHire.cpp +++ b/src/openrct2/paint/track/water/BoatHire.cpp @@ -1,6 +1,6 @@ /***************************************************************************** /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/DinghySlide.cpp b/src/openrct2/paint/track/water/DinghySlide.cpp index 0fc0f58690..b5bd6be5f7 100644 --- a/src/openrct2/paint/track/water/DinghySlide.cpp +++ b/src/openrct2/paint/track/water/DinghySlide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/DinghySlideCovered.cpp b/src/openrct2/paint/track/water/DinghySlideCovered.cpp index cdaaae440b..e933d1fe3e 100644 --- a/src/openrct2/paint/track/water/DinghySlideCovered.cpp +++ b/src/openrct2/paint/track/water/DinghySlideCovered.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/LogFlume.cpp b/src/openrct2/paint/track/water/LogFlume.cpp index 5f132dd501..289aa5f724 100644 --- a/src/openrct2/paint/track/water/LogFlume.cpp +++ b/src/openrct2/paint/track/water/LogFlume.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/RiverRapids.cpp b/src/openrct2/paint/track/water/RiverRapids.cpp index a90175da0c..8c160ccc0e 100644 --- a/src/openrct2/paint/track/water/RiverRapids.cpp +++ b/src/openrct2/paint/track/water/RiverRapids.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/SplashBoats.cpp b/src/openrct2/paint/track/water/SplashBoats.cpp index 273294fe76..d44a5a12cd 100644 --- a/src/openrct2/paint/track/water/SplashBoats.cpp +++ b/src/openrct2/paint/track/water/SplashBoats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/SubmarineRide.cpp b/src/openrct2/paint/track/water/SubmarineRide.cpp index ddc63a3a55..54472f815b 100644 --- a/src/openrct2/paint/track/water/SubmarineRide.cpp +++ b/src/openrct2/paint/track/water/SubmarineRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp index fdb07e80db..bee22f00b8 100644 --- a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp index ba3f0951ad..dd94d6783d 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h index cc47d63548..74a111b736 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp index afa4b2fd39..7830ca5ea0 100644 --- a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp b/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp index 209a97a6c2..541e463093 100644 --- a/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp index 199583410b..489c8dd1b3 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp index 84da386bb6..d433289be5 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp index 70e5a5ae3a..0f03640157 100644 --- a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp index 8f5243b27d..9267b3e0bb 100644 --- a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp index 73b101d1c7..c8a32472d4 100644 --- a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index ec98713bbb..88a760bb3a 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/VehiclePaint.h b/src/openrct2/paint/vehicle/VehiclePaint.h index b5bb90206f..556edaba43 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.h +++ b/src/openrct2/paint/vehicle/VehiclePaint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp index 880a4d167c..b955595587 100644 --- a/src/openrct2/park/Legacy.cpp +++ b/src/openrct2/park/Legacy.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -9,7 +9,15 @@ #include "Legacy.h" +#include "../Context.h" +#include "../Diagnostic.h" +#include "../entity/EntityList.h" +#include "../entity/Guest.h" +#include "../entity/Staff.h" +#include "../object/ObjectLimits.h" #include "../object/ObjectList.h" +#include "../object/ObjectManager.h" +#include "../object/PeepAnimationsObject.h" #include "../rct2/RCT2.h" #include "../ride/Ride.h" #include "../ride/Track.h" @@ -2266,6 +2274,94 @@ void UpdateFootpathsFromMapping( pathToRailingsMap[entryIndex] = railingIndex; } +const std::vector peepAnimObjects = { + "rct2.peep_animations.guest", + "rct2.peep_animations.handyman", + "rct2.peep_animations.mechanic", + "rct2.peep_animations.security", + "rct2.peep_animations.entertainer_panda", + "rct2.peep_animations.entertainer_elephant", + "rct2.peep_animations.entertainer_tiger", + "rct2.peep_animations.entertainer_astronaut", + "rct2.peep_animations.entertainer_bandit", + "rct2.peep_animations.entertainer_gorilla", + "rct2.peep_animations.entertainer_knight", + "rct2.peep_animations.entertainer_pirate", + "rct2.peep_animations.entertainer_roman", + "rct2.peep_animations.entertainer_sheriff", + "rct2.peep_animations.entertainer_snowman", +}; + +const std::vector& GetLegacyPeepAnimationObjects(const ObjectList& entryList) +{ + return peepAnimObjects; +} + +using AnimObjectConversionTable = std::map>; + +static AnimObjectConversionTable BuildPeepAnimObjectConversionTable() +{ + auto& objectManager = GetContext()->GetObjectManager(); + + AnimObjectConversionTable table{}; + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto object = objectManager.GetLoadedObject(i); + if (object == nullptr) + continue; + + for (auto j = 0u; j < object->GetNumAnimationGroups(); j++) + { + auto pag = PeepAnimationGroup(j); + auto legacyPosition = object->GetLegacyPosition(pag); + if (legacyPosition == RCT12PeepAnimationGroup::Invalid) + continue; + + table[legacyPosition] = { i, pag }; + } + } + + return table; +} + +template +static bool ConvertPeepAnimationType(TPeepType* peep, AnimObjectConversionTable& table) +{ + if (peep->AnimationObjectIndex != OBJECT_ENTRY_INDEX_NULL) + return false; + + // TODO: catch missings + auto legacyPAG = RCT12PeepAnimationGroup(peep->AnimationGroup); + auto& conversion = table[legacyPAG]; + peep->AnimationObjectIndex = conversion.first; + peep->AnimationGroup = static_cast(conversion.second); + return true; +} + +void ConvertPeepAnimationTypeToObjects(OpenRCT2::GameState_t& gameState) +{ + // First, build a conversion table based on the currently selected objects + auto table = BuildPeepAnimObjectConversionTable(); + + auto numConverted = 0u; + + // Convert all guests + for (auto* guest : EntityList()) + { + if (ConvertPeepAnimationType(guest, table)) + numConverted++; + } + + // Convert all staff members + for (auto* staff : EntityList()) + { + if (ConvertPeepAnimationType(staff, table)) + numConverted++; + } + + LOG_INFO("Converted %d peep entities", numConverted); +} + bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType trackType, int32_t parkFileVersion) { // Lots of Log Flumes exist where the downward slopes are simulated by using other track diff --git a/src/openrct2/park/Legacy.h b/src/openrct2/park/Legacy.h index f7ab269659..3453e49376 100644 --- a/src/openrct2/park/Legacy.h +++ b/src/openrct2/park/Legacy.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -14,9 +14,12 @@ #include #include #include +#include namespace OpenRCT2 { + struct GameState_t; + enum class TrackElemType : uint16_t; namespace RCT2 @@ -24,6 +27,7 @@ namespace OpenRCT2 struct FootpathMapping; } } // namespace OpenRCT2 + struct ObjectEntryDescriptor; class ObjectList; using ride_type_t = uint16_t; @@ -36,6 +40,9 @@ void UpdateFootpathsFromMapping( ObjectList& requiredObjects, ObjectEntryIndex& surfaceCount, ObjectEntryIndex& railingCount, ObjectEntryIndex entryIndex, const OpenRCT2::RCT2::FootpathMapping* footpathMapping); +const std::vector& GetLegacyPeepAnimationObjects(const ObjectList& entryList); +void ConvertPeepAnimationTypeToObjects(OpenRCT2::GameState_t& gameState); + /** * If new pieces get added to existing ride types, this could cause existing parks to change appearance, * since the formerly unrendered pieces were not explicitly set invisible. diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 855edc77bb..b6df72a670 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -385,6 +385,12 @@ namespace OpenRCT2 requiredObjects, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); } + if (version < kPeepAnimationObjectsVersion) + { + auto animObjects = GetLegacyPeepAnimationObjects(requiredObjects); + AppendRequiredObjects(requiredObjects, ObjectType::PeepAnimations, animObjects); + } + RequiredObjects = std::move(requiredObjects); } else @@ -1718,6 +1724,12 @@ namespace OpenRCT2 cs.ReadWrite(entity.State); cs.ReadWrite(entity.SubState); + + if (version >= kPeepAnimationObjectsVersion) + cs.ReadWrite(entity.AnimationObjectIndex); + else + entity.AnimationObjectIndex = OBJECT_ENTRY_INDEX_NULL; + cs.ReadWrite(entity.AnimationGroup); if (version <= 1) @@ -2568,7 +2580,7 @@ namespace OpenRCT2 void ParkFile::ReadWriteEntitiesChunk(GameState_t& gameState, OrcaStream& os) { - os.ReadWriteChunk(ParkFileChunkType::ENTITIES, [this, &os](OrcaStream::ChunkStream& cs) { + os.ReadWriteChunk(ParkFileChunkType::ENTITIES, [this, &gameState, &os](OrcaStream::ChunkStream& cs) { if (cs.GetMode() == OrcaStream::Mode::READING) { ResetAllEntities(); @@ -2580,6 +2592,12 @@ namespace OpenRCT2 ReadEntitiesOfTypes< Vehicle, Guest, Staff, Litter, SteamParticle, MoneyEffect, VehicleCrashParticle, ExplosionCloud, CrashSplashParticle, ExplosionFlare, JumpingFountain, Balloon, Duck>(os, cs); + + auto version = os.GetHeader().TargetVersion; + if (version < kPeepAnimationObjectsVersion) + { + ConvertPeepAnimationTypeToObjects(gameState); + } } else { diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h index fd573fc668..31450afea3 100644 --- a/src/openrct2/park/ParkFile.h +++ b/src/openrct2/park/ParkFile.h @@ -11,10 +11,10 @@ namespace OpenRCT2 struct GameState_t; // Current version that is saved. - constexpr uint32_t PARK_FILE_CURRENT_VERSION = 48; + constexpr uint32_t PARK_FILE_CURRENT_VERSION = 49; // The minimum version that is forwards compatible with the current version. - constexpr uint32_t PARK_FILE_MIN_VERSION = 45; + constexpr uint32_t PARK_FILE_MIN_VERSION = 49; // The minimum version that is backwards compatible with the current version. // If this is increased beyond 0, uncomment the checks in ParkFile.cpp and Context.cpp! @@ -37,6 +37,7 @@ namespace OpenRCT2 constexpr uint16_t kExtendedBoatHireVersion = 46; constexpr uint16_t kParkEntranceObjectLimitIncreased = 47; constexpr uint16_t kExtendedStandUpRollerCoasterVersion = 48; + constexpr uint16_t kPeepAnimationObjectsVersion = 49; } // namespace OpenRCT2 class ParkFileExporter diff --git a/src/openrct2/peep/GuestPathfinding.cpp b/src/openrct2/peep/GuestPathfinding.cpp index 77e1652548..d243574cd7 100644 --- a/src/openrct2/peep/GuestPathfinding.cpp +++ b/src/openrct2/peep/GuestPathfinding.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/GuestPathfinding.h b/src/openrct2/peep/GuestPathfinding.h index 11a986e2ed..3e69750714 100644 --- a/src/openrct2/peep/GuestPathfinding.h +++ b/src/openrct2/peep/GuestPathfinding.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimationData.cpp b/src/openrct2/peep/PeepAnimationData.cpp deleted file mode 100644 index ec499fcf3a..0000000000 --- a/src/openrct2/peep/PeepAnimationData.cpp +++ /dev/null @@ -1,1014 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#include "PeepAnimationData.h" - -#include "../drawing/Drawing.h" -#include "PeepAnimations.h" -#include "PeepSpriteIds.h" - -#include - -namespace OpenRCT2 -{ - // clang-format off - - // Define animation sequences for Normal sprites - static constexpr std::array kPeepAnimationSequenceNormalWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceNormalCheckTime = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8 }; - static constexpr std::array kPeepAnimationSequenceNormalWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceNormalEatFood = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 9, 10 }; - static constexpr std::array kPeepAnimationSequenceNormalShakeHead = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - static constexpr std::array kPeepAnimationSequenceNormalEmptyPockets = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; - static constexpr std::array kPeepAnimationSequenceNormalHoldMat = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceNormalSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceNormalSittingEatFood = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalSittingLookAroundLeft = { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalSittingLookAroundRight = { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceNormalWow = { 0, 1, 2, 3, 4, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalThrowUp = { 8, 8, 9, 9, 10, 10, 9, 9, 8, 8, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 13, 13, 8, 8, 9, 9, 8, 8 }; - static constexpr std::array kPeepAnimationSequenceNormalJump = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11 }; - static constexpr std::array kPeepAnimationSequenceNormalDrowning = { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 5, 6, 7 }; - static constexpr std::array kPeepAnimationSequenceNormalJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; - static constexpr std::array kPeepAnimationSequenceNormalReadMap = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 11, 10, 10, 10, 13, 14, 14, 14, 13, 10, 10, 10, 11, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalWave = { 0, 1, 2, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalWave2 = { 0, 1, 2, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalTakePhoto = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 6, 7, 6, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalClap = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalDisgust = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalDrawPicture = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 15, 14, 8, 9, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 15, 14, 8, 9, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceNormalBeingWatched = { 0, 1, 2, 2, 2, 2, 3, 4, 5, 5, 5, 5, 4 }; - static constexpr std::array kPeepAnimationSequenceNormalWithdrawMoney = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 11, 11, 11, 11, 13, 14, 15 }; - - // Define animation group for Normal sequences - static PeepAnimations kPeepAnimationsNormal = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kPeepSpriteNormalStateWalkingId, kPeepAnimationSequenceNormalWalking }; - pag[PeepAnimationType::CheckTime] = { kPeepSpriteNormalStateCheckTimeId, kPeepAnimationSequenceNormalCheckTime }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteNormalStateWatchRideId, kPeepAnimationSequenceNormalWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteNormalStateEatFoodId, kPeepAnimationSequenceNormalEatFood }; - pag[PeepAnimationType::ShakeHead] = { kPeepSpriteNormalStateShakeHeadId, kPeepAnimationSequenceNormalShakeHead }; - pag[PeepAnimationType::EmptyPockets] = { kPeepSpriteNormalStateEmptyPocketsId, kPeepAnimationSequenceNormalEmptyPockets }; - pag[PeepAnimationType::HoldMat] = { kPeepSpriteNormalStateHoldMatId, kPeepAnimationSequenceNormalHoldMat }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteNormalStateSittingIdleId, kPeepAnimationSequenceNormalSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteNormalStateSittingEatFoodId, kPeepAnimationSequenceNormalSittingEatFood }; - pag[PeepAnimationType::SittingLookAroundLeft] = { kPeepSpriteNormalStateSittingLookAroundLeftId, kPeepAnimationSequenceNormalSittingLookAroundLeft }; - pag[PeepAnimationType::SittingLookAroundRight] = { kPeepSpriteNormalStateSittingLookAroundRightId, kPeepAnimationSequenceNormalSittingLookAroundRight }; - pag[PeepAnimationType::Hanging] = { kPeepSpriteNormalStateHangingId, kPeepAnimationSequenceNormalHanging }; - pag[PeepAnimationType::Wow] = { kPeepSpriteNormalStateWowId, kPeepAnimationSequenceNormalWow }; - pag[PeepAnimationType::ThrowUp] = { kPeepSpriteNormalStateThrowUpId, kPeepAnimationSequenceNormalThrowUp }; - pag[PeepAnimationType::Jump] = { kPeepSpriteNormalStateJumpId, kPeepAnimationSequenceNormalJump }; - pag[PeepAnimationType::Drowning] = { kPeepSpriteNormalStateDrowningId, kPeepAnimationSequenceNormalDrowning }; - pag[PeepAnimationType::Joy] = { kPeepSpriteNormalStateJoyId, kPeepAnimationSequenceNormalJoy }; - pag[PeepAnimationType::ReadMap] = { kPeepSpriteNormalStateReadMapId, kPeepAnimationSequenceNormalReadMap }; - pag[PeepAnimationType::Wave] = { kPeepSpriteNormalStateWaveId, kPeepAnimationSequenceNormalWave }; - pag[PeepAnimationType::Wave2] = { kPeepSpriteNormalStateWave2Id, kPeepAnimationSequenceNormalWave2 }; - pag[PeepAnimationType::TakePhoto] = { kPeepSpriteNormalStateTakePhotoId, kPeepAnimationSequenceNormalTakePhoto }; - pag[PeepAnimationType::Clap] = { kPeepSpriteNormalStateClapId, kPeepAnimationSequenceNormalClap }; - pag[PeepAnimationType::Disgust] = { kPeepSpriteNormalStateDisgustId, kPeepAnimationSequenceNormalDisgust }; - pag[PeepAnimationType::DrawPicture] = { kPeepSpriteNormalStateDrawPictureId, kPeepAnimationSequenceNormalDrawPicture }; - pag[PeepAnimationType::BeingWatched] = { kPeepSpriteNormalStateBeingWatchedId, kPeepAnimationSequenceNormalBeingWatched }; - pag[PeepAnimationType::WithdrawMoney] = { kPeepSpriteNormalStateWithdrawMoneyId, kPeepAnimationSequenceNormalWithdrawMoney }; - return pag; - }(); - - // Define animation sequences for Handyman sprites - static constexpr std::array kPeepAnimationSequenceHandymanWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceHandymanWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceHandymanHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceHandymanStaffMower = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceHandymanStaffSweep = { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 }; - static constexpr std::array kPeepAnimationSequenceHandymanDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6, 7 }; - static constexpr std::array kPeepAnimationSequenceHandymanStaffWatering = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceHandymanStaffEmptyBin = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for Handyman sequences - static PeepAnimations kPeepAnimationsHandyman = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kHandymanSpriteStateWalkingId, kPeepAnimationSequenceHandymanWalking }; - pag[PeepAnimationType::WatchRide] = { kHandymanSpriteStateWatchRideId, kPeepAnimationSequenceHandymanWatchRide }; - pag[PeepAnimationType::Hanging] = { kHandymanSpriteStateHangingId, kPeepAnimationSequenceHandymanHanging }; - pag[PeepAnimationType::StaffMower] = { kHandymanSpriteStateStaffMowerId, kPeepAnimationSequenceHandymanStaffMower }; - pag[PeepAnimationType::StaffSweep] = { kHandymanSpriteStateStaffSweepId, kPeepAnimationSequenceHandymanStaffSweep }; - pag[PeepAnimationType::Drowning] = { kHandymanSpriteStateDrowningId, kPeepAnimationSequenceHandymanDrowning }; - pag[PeepAnimationType::StaffWatering] = { kHandymanSpriteStateStaffWateringId, kPeepAnimationSequenceHandymanStaffWatering }; - pag[PeepAnimationType::StaffEmptyBin] = { kHandymanSpriteStateStaffEmptyBinId, kPeepAnimationSequenceHandymanStaffEmptyBin }; - return pag; - }(); - - // Define animation sequences for Mechanic sprites - static constexpr std::array kPeepAnimationSequenceMechanicWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceMechanicWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceMechanicDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6, 7 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffAnswerCall = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 17, 18, 18, 18, 18, 18, 18, 18, 17, 14, 14, 14, 14, 19, 20, 20, 20, 19, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 15, 16, 15, 14, 14, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffAnswerCall2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 19, 20, 20, 20, 19, 14, 14, 14, 14, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffCheckBoard = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 14, 15, 15, 15, 16, 17, 17, 17, 14, 11, 12, 13, 12, 13, 12, 11, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffFix = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffFix2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 21, 20, 21, 22, 21, 20, 21, 22, 20, 21, 22, 21, 20, 19, 18, 0, 0, 23, 24, 25, 26, 27, 28, 28, 26, 24, 29, 30, 31, 32, 31, 30, 31, 32, 31, 30, 31, 32, 31, 30, 29, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffFixGround = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 18, 17, 16, 17, 18, 19, 18, 17, 16, 17, 18, 19, 18, 17, 16, 17, 18, 19, 18, 17, 16, 17, 18, 19, 18, 17, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceMechanicStaffFix3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 13, 12, 11, 11, 12, 13, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 15, 16, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 21, 20, 21, 22, 21, 20, 21, 22, 20, 19, 18, 0, 0, 23, 24, 25, 26, 27, 28, 28, 26, 24, 0, 0, 0, 0, 0, 0 }; - - // Define animation group for Mechanic sequences - static PeepAnimations kPeepAnimationsMechanic = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kMechanicSpriteStateWalkingId, kPeepAnimationSequenceMechanicWalking }; - pag[PeepAnimationType::WatchRide] = { kMechanicSpriteStateWatchRideId, kPeepAnimationSequenceMechanicWatchRide }; - pag[PeepAnimationType::Hanging] = { kMechanicSpriteStateHangingId, kPeepAnimationSequenceMechanicHanging }; - pag[PeepAnimationType::Drowning] = { kMechanicSpriteStateDrowningId, kPeepAnimationSequenceMechanicDrowning }; - pag[PeepAnimationType::StaffAnswerCall] = { kMechanicSpriteStateStaffAnswerCallId, kPeepAnimationSequenceMechanicStaffAnswerCall }; - pag[PeepAnimationType::StaffAnswerCall2] = { kMechanicSpriteStateStaffAnswerCallId, kPeepAnimationSequenceMechanicStaffAnswerCall2 }; - pag[PeepAnimationType::StaffCheckBoard] = { kMechanicSpriteStateStaffCheckBoardId, kPeepAnimationSequenceMechanicStaffCheckBoard }; - pag[PeepAnimationType::StaffFix] = { kMechanicSpriteStateStaffFixId, kPeepAnimationSequenceMechanicStaffFix }; - pag[PeepAnimationType::StaffFix2] = { kMechanicSpriteStateStaffFixId, kPeepAnimationSequenceMechanicStaffFix2 }; - pag[PeepAnimationType::StaffFixGround] = { kMechanicSpriteStateStaffFixGroundId, kPeepAnimationSequenceMechanicStaffFixGround }; - pag[PeepAnimationType::StaffFix3] = { kMechanicSpriteStateStaffFixId, kPeepAnimationSequenceMechanicStaffFix3 }; - return pag; - }(); - - // Define animation sequences for Security sprites - static constexpr std::array kPeepAnimationSequenceSecurityWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceSecurityWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSecurityHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSecurityDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6 }; - - // Define animation group for Security sequences - static PeepAnimations kPeepAnimationsSecurity = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kSecuritySpriteStateWalkingId, kPeepAnimationSequenceSecurityWalking }; - pag[PeepAnimationType::WatchRide] = { kSecuritySpriteStateWatchRideId, kPeepAnimationSequenceSecurityWatchRide }; - pag[PeepAnimationType::Hanging] = { kSecuritySpriteStateHangingId, kPeepAnimationSequenceSecurityHanging }; - pag[PeepAnimationType::Drowning] = { kSecuritySpriteStateDrowningId, kPeepAnimationSequenceSecurityDrowning }; - return pag; - }(); - - // Define animation sequences for EntertainerPanda sprites - static constexpr std::array kPeepAnimationSequenceEntertainerPandaWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaEatFood = { 0, 1, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPandaWave2 = { 0, 1, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerPanda sequences - static PeepAnimations kPeepAnimationsEntertainerPanda = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpritePandaStateWalkingId, kPeepAnimationSequenceEntertainerPandaWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpritePandaStateWatchRideId, kPeepAnimationSequenceEntertainerPandaWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpritePandaStateWaveId, kPeepAnimationSequenceEntertainerPandaEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpritePandaStateHangingId, kPeepAnimationSequenceEntertainerPandaHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpritePandaStateDrowningId, kPeepAnimationSequenceEntertainerPandaDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpritePandaStateJoyId, kPeepAnimationSequenceEntertainerPandaJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpritePandaStateWaveId, kPeepAnimationSequenceEntertainerPandaWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerTiger sprites - static constexpr std::array kPeepAnimationSequenceEntertainerTigerWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerEatFood = { 0, 1, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25 }; - static constexpr std::array kPeepAnimationSequenceEntertainerTigerWave2 = { 0, 1, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerTiger sequences - static PeepAnimations kPeepAnimationsEntertainerTiger = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteTigerStateWalkingId, kPeepAnimationSequenceEntertainerTigerWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteTigerStateWatchRideId, kPeepAnimationSequenceEntertainerTigerWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteTigerStateWaveId, kPeepAnimationSequenceEntertainerTigerEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteTigerStateHangingId, kPeepAnimationSequenceEntertainerTigerHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteTigerStateDrowningId, kPeepAnimationSequenceEntertainerTigerDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteTigerStateJoyId, kPeepAnimationSequenceEntertainerTigerJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteTigerStateWaveId, kPeepAnimationSequenceEntertainerTigerWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerElephant sprites - static constexpr std::array kPeepAnimationSequenceEntertainerElephantWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantEatFood = { 0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6, 7, 8, 9 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }; - static constexpr std::array kPeepAnimationSequenceEntertainerElephantWave2 = { 0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerElephant sequences - static PeepAnimations kPeepAnimationsEntertainerElephant = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteElephantStateWalkingId, kPeepAnimationSequenceEntertainerElephantWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteElephantStateWatchRideId, kPeepAnimationSequenceEntertainerElephantWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteElephantStateWaveId, kPeepAnimationSequenceEntertainerElephantEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteElephantStateHangingId, kPeepAnimationSequenceEntertainerElephantHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteElephantStateDrowningId, kPeepAnimationSequenceEntertainerElephantDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteElephantStateJoyId, kPeepAnimationSequenceEntertainerElephantJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteElephantStateWaveId, kPeepAnimationSequenceEntertainerElephantWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerRoman sprites - static constexpr std::array kPeepAnimationSequenceEntertainerRomanWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanDrowning = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanJoy = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 24, 25, 26, 27, 28, 28, 28, 29, 30, 31, 32, 32, 32, 32, 32, 33, 34, 35, 36, 37, 38 }; - static constexpr std::array kPeepAnimationSequenceEntertainerRomanWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 6, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerRoman sequences - static PeepAnimations kPeepAnimationsEntertainerRoman = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteRomanStateWalkingId, kPeepAnimationSequenceEntertainerRomanWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteRomanStateWatchRideId, kPeepAnimationSequenceEntertainerRomanWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteRomanStateWaveId, kPeepAnimationSequenceEntertainerRomanEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteRomanStateHangingId, kPeepAnimationSequenceEntertainerRomanHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteRomanStateDrowningId, kPeepAnimationSequenceEntertainerRomanDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteRomanStateJoyId, kPeepAnimationSequenceEntertainerRomanJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteRomanStateWaveId, kPeepAnimationSequenceEntertainerRomanWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerGorilla sprites - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaDrowning = { 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerGorillaWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerGorilla sequences - static PeepAnimations kPeepAnimationsEntertainerGorilla = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteGorillaStateWalkingId, kPeepAnimationSequenceEntertainerGorillaWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteGorillaStateWatchRideId, kPeepAnimationSequenceEntertainerGorillaWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteGorillaStateWaveId, kPeepAnimationSequenceEntertainerGorillaEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteGorillaStateHangingId, kPeepAnimationSequenceEntertainerGorillaHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteGorillaStateDrowningId, kPeepAnimationSequenceEntertainerGorillaDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteGorillaStateWaveId, kPeepAnimationSequenceEntertainerGorillaJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteGorillaStateWaveId, kPeepAnimationSequenceEntertainerGorillaWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerSnowman sprites - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 31, 31, 32, 33 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanDrowning = { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 5, 6, 7, 8, 9 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 31, 31, 32, 33 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSnowmanWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 31, 31, 32, 33 }; - - // Define animation group for EntertainerSnowman sequences - static PeepAnimations kPeepAnimationsEntertainerSnowman = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteSnowmanStateWalkingId, kPeepAnimationSequenceEntertainerSnowmanWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteSnowmanStateWatchRideId, kPeepAnimationSequenceEntertainerSnowmanWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteSnowmanStateWaveId, kPeepAnimationSequenceEntertainerSnowmanEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteSnowmanStateHangingId, kPeepAnimationSequenceEntertainerSnowmanHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteSnowmanStateDrowningId, kPeepAnimationSequenceEntertainerSnowmanDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteSnowmanStateWaveId, kPeepAnimationSequenceEntertainerSnowmanJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteSnowmanStateWaveId, kPeepAnimationSequenceEntertainerSnowmanWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerKnight sprites - static constexpr std::array kPeepAnimationSequenceEntertainerKnightWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 12, 12, 12, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 24, 25, 26, 27 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightDrowning = { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 12, 12, 12, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 24, 25, 26, 27 }; - static constexpr std::array kPeepAnimationSequenceEntertainerKnightWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 12, 12, 12, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 24, 25, 26, 27 }; - - // Define animation group for EntertainerKnight sequences - static PeepAnimations kPeepAnimationsEntertainerKnight = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteKnightStateWalkingId, kPeepAnimationSequenceEntertainerKnightWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteKnightStateWatchRideId, kPeepAnimationSequenceEntertainerKnightWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteKnightStateWaveId, kPeepAnimationSequenceEntertainerKnightEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteKnightStateHangingId, kPeepAnimationSequenceEntertainerKnightHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteKnightStateDrowningId, kPeepAnimationSequenceEntertainerKnightDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteKnightStateWaveId, kPeepAnimationSequenceEntertainerKnightJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteKnightStateWaveId, kPeepAnimationSequenceEntertainerKnightWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerAstronaut sprites - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautEatFood = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautJoy = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerAstronautWave2 = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 0 }; - - // Define animation group for EntertainerAstronaut sequences - static PeepAnimations kPeepAnimationsEntertainerAstronaut = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteAstronautStateWalkingId, kPeepAnimationSequenceEntertainerAstronautWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteAstronautStateWatchRideId, kPeepAnimationSequenceEntertainerAstronautWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteAstronautStateWaveId, kPeepAnimationSequenceEntertainerAstronautEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteAstronautStateHangingId, kPeepAnimationSequenceEntertainerAstronautHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteAstronautStateDrowningId, kPeepAnimationSequenceEntertainerAstronautDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteAstronautStateWaveId, kPeepAnimationSequenceEntertainerAstronautJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteAstronautStateWaveId, kPeepAnimationSequenceEntertainerAstronautWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerBandit sprites - static constexpr std::array kPeepAnimationSequenceEntertainerBanditWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13, 13, 13, 13, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditDrowning = { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13, 13, 13, 13, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 }; - static constexpr std::array kPeepAnimationSequenceEntertainerBanditWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13, 13, 13, 13, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 21, 20, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 }; - - // Define animation group for EntertainerBandit sequences - static PeepAnimations kPeepAnimationsEntertainerBandit = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteBanditStateWalkingId, kPeepAnimationSequenceEntertainerBanditWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteBanditStateWatchRideId, kPeepAnimationSequenceEntertainerBanditWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteBanditStateWaveId, kPeepAnimationSequenceEntertainerBanditEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteBanditStateHangingId, kPeepAnimationSequenceEntertainerBanditHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteBanditStateDrowningId, kPeepAnimationSequenceEntertainerBanditDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteBanditStateWaveId, kPeepAnimationSequenceEntertainerBanditJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteBanditStateWaveId, kPeepAnimationSequenceEntertainerBanditWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerSheriff sprites - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffDrowning = { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerSheriffWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 10, 11, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - - // Define animation group for EntertainerSheriff sequences - static PeepAnimations kPeepAnimationsEntertainerSheriff = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpriteSheriffStateWalkingId, kPeepAnimationSequenceEntertainerSheriffWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpriteSheriffStateWatchRideId, kPeepAnimationSequenceEntertainerSheriffWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpriteSheriffStateWaveId, kPeepAnimationSequenceEntertainerSheriffEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpriteSheriffStateHangingId, kPeepAnimationSequenceEntertainerSheriffHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpriteSheriffStateDrowningId, kPeepAnimationSequenceEntertainerSheriffDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpriteSheriffStateWaveId, kPeepAnimationSequenceEntertainerSheriffJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpriteSheriffStateWaveId, kPeepAnimationSequenceEntertainerSheriffWave2 }; - return pag; - }(); - - // Define animation sequences for EntertainerPirate sprites - static constexpr std::array kPeepAnimationSequenceEntertainerPirateWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 24, 25, 26, 27, 27, 27, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateDrowning = { 0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateJoy = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 24, 25, 26, 27, 27, 27, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31 }; - static constexpr std::array kPeepAnimationSequenceEntertainerPirateWave2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 24, 25, 26, 27, 27, 27, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31 }; - - // Define animation group for EntertainerPirate sequences - static PeepAnimations kPeepAnimationsEntertainerPirate = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kEntertainerSpritePirateStateWalkingId, kPeepAnimationSequenceEntertainerPirateWalking }; - pag[PeepAnimationType::WatchRide] = { kEntertainerSpritePirateStateWatchRideId, kPeepAnimationSequenceEntertainerPirateWatchRide }; - pag[PeepAnimationType::EatFood] = { kEntertainerSpritePirateStateWaveId, kPeepAnimationSequenceEntertainerPirateEatFood }; - pag[PeepAnimationType::Hanging] = { kEntertainerSpritePirateStateHangingId, kPeepAnimationSequenceEntertainerPirateHanging }; - pag[PeepAnimationType::Drowning] = { kEntertainerSpritePirateStateDrowningId, kPeepAnimationSequenceEntertainerPirateDrowning }; - pag[PeepAnimationType::Joy] = { kEntertainerSpritePirateStateWaveId, kPeepAnimationSequenceEntertainerPirateJoy }; - pag[PeepAnimationType::Wave2] = { kEntertainerSpritePirateStateWaveId, kPeepAnimationSequenceEntertainerPirateWave2 }; - return pag; - }(); - - // Define animation sequences for IceCream sprites - static constexpr std::array kPeepAnimationSequenceIceCreamWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceIceCreamWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceIceCreamEatFood = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceIceCreamSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceIceCreamSittingEatFood = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for IceCream sequences - static PeepAnimations kPeepAnimationsIceCream = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteIceCreamStateWalkingId, kPeepAnimationSequenceIceCreamWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteIceCreamStateWatchRideId, kPeepAnimationSequenceIceCreamWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteIceCreamStateEatFoodId, kPeepAnimationSequenceIceCreamEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteIceCreamStateSittingIdleId, kPeepAnimationSequenceIceCreamSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteIceCreamStateSittingEatFoodId, kPeepAnimationSequenceIceCreamSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Chips sprites - static constexpr std::array kPeepAnimationSequenceChipsWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceChipsWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceChipsEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceChipsSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceChipsSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Chips sequences - static PeepAnimations kPeepAnimationsChips = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteChipsStateWalkingId, kPeepAnimationSequenceChipsWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteChipsStateWatchRideId, kPeepAnimationSequenceChipsWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteChipsStateEatFoodId, kPeepAnimationSequenceChipsEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteChipsStateSittingIdleId, kPeepAnimationSequenceChipsSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteChipsStateSittingEatFoodId, kPeepAnimationSequenceChipsSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Burger sprites - static constexpr std::array kPeepAnimationSequenceBurgerWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceBurgerWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceBurgerEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceBurgerSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceBurgerSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Burger sequences - static PeepAnimations kPeepAnimationsBurger = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteBurgerStateWalkingId, kPeepAnimationSequenceBurgerWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteBurgerStateWatchRideId, kPeepAnimationSequenceBurgerWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteBurgerStateEatFoodId, kPeepAnimationSequenceBurgerEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteBurgerStateSittingIdleId, kPeepAnimationSequenceBurgerSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteBurgerStateSittingEatFoodId, kPeepAnimationSequenceBurgerSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Drink sprites - static constexpr std::array kPeepAnimationSequenceDrinkWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceDrinkWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceDrinkEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceDrinkSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceDrinkSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Drink sequences - static PeepAnimations kPeepAnimationsDrink = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteDrinkStateWalkingId, kPeepAnimationSequenceDrinkWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteDrinkStateWatchRideId, kPeepAnimationSequenceDrinkWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteDrinkStateEatFoodId, kPeepAnimationSequenceDrinkEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteDrinkStateSittingIdleId, kPeepAnimationSequenceDrinkSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteDrinkStateSittingEatFoodId, kPeepAnimationSequenceDrinkSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Balloon sprites - static constexpr std::array kPeepAnimationSequenceBalloonWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceBalloonWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceBalloonSittingIdle = { 0 }; - - // Define animation group for Balloon sequences - static PeepAnimations kPeepAnimationsBalloon = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteBalloonStateWalkingId, kPeepAnimationSequenceBalloonWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteBalloonStateWatchRideId, kPeepAnimationSequenceBalloonWatchRide }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteBalloonStateSittingIdleId, kPeepAnimationSequenceBalloonSittingIdle }; - return pag; - }(); - - // Define animation sequences for Candyfloss sprites - static constexpr std::array kPeepAnimationSequenceCandyflossWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceCandyflossWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceCandyflossEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceCandyflossSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceCandyflossSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Candyfloss sequences - static PeepAnimations kPeepAnimationsCandyfloss = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteCandyflossStateWalkingId, kPeepAnimationSequenceCandyflossWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteCandyflossStateWatchRideId, kPeepAnimationSequenceCandyflossWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteCandyflossStateEatFoodId, kPeepAnimationSequenceCandyflossEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteCandyflossStateSittingIdleId, kPeepAnimationSequenceCandyflossSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteCandyflossStateSittingEatFoodId, kPeepAnimationSequenceCandyflossSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Umbrella sprites - static constexpr std::array kPeepAnimationSequenceUmbrellaWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceUmbrellaWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceUmbrellaSittingIdle = { 0 }; - - // Define animation group for Umbrella sequences - static PeepAnimations kPeepAnimationsUmbrella = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteUmbrellaStateWalkingId, kPeepAnimationSequenceUmbrellaWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteUmbrellaStateWatchRideId, kPeepAnimationSequenceUmbrellaWatchRide }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteUmbrellaStateSittingIdleId, kPeepAnimationSequenceUmbrellaSittingIdle }; - return pag; - }(); - - // Define animation sequences for Pizza sprites - static constexpr std::array kPeepAnimationSequencePizzaWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequencePizzaWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequencePizzaEatFood = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequencePizzaSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequencePizzaSittingEatFood = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for Pizza sequences - static PeepAnimations kPeepAnimationsPizza = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpritePizzaStateWalkingId, kPeepAnimationSequencePizzaWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpritePizzaStateWatchRideId, kPeepAnimationSequencePizzaWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpritePizzaStateEatFoodId, kPeepAnimationSequencePizzaEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpritePizzaStateSittingIdleId, kPeepAnimationSequencePizzaSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpritePizzaStateSittingEatFoodId, kPeepAnimationSequencePizzaSittingEatFood }; - return pag; - }(); - - // Define animation sequences for SecurityAlt sprites - static constexpr std::array kPeepAnimationSequenceSecurityAltWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceSecurityAltWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSecurityAltHanging = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSecurityAltDrowning = { 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 4, 5, 6 }; - - // Define animation group for SecurityAlt sequences - static PeepAnimations kPeepAnimationsSecurityAlt = []() { - PeepAnimations pag; - pag[PeepAnimationType::Walking] = { kSecurityStaffSpriteAltStateWalkingId, kPeepAnimationSequenceSecurityAltWalking }; - pag[PeepAnimationType::WatchRide] = { kSecuritySpriteStateWatchRideId, kPeepAnimationSequenceSecurityAltWatchRide }; - pag[PeepAnimationType::Hanging] = { kSecuritySpriteStateHangingId, kPeepAnimationSequenceSecurityAltHanging }; - pag[PeepAnimationType::Drowning] = { kSecuritySpriteStateDrowningId, kPeepAnimationSequenceSecurityAltDrowning }; - return pag; - }(); - - // Define animation sequences for Popcorn sprites - static constexpr std::array kPeepAnimationSequencePopcornWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequencePopcornWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequencePopcornEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequencePopcornSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequencePopcornSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Popcorn sequences - static PeepAnimations kPeepAnimationsPopcorn = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpritePopcornStateWalkingId, kPeepAnimationSequencePopcornWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpritePopcornStateWatchRideId, kPeepAnimationSequencePopcornWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpritePopcornStateEatFoodId, kPeepAnimationSequencePopcornEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpritePopcornStateSittingIdleId, kPeepAnimationSequencePopcornSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpritePopcornStateSittingEatFoodId, kPeepAnimationSequencePopcornSittingEatFood }; - return pag; - }(); - - // Define animation sequences for ArmsCrossed sprites - static constexpr std::array kPeepAnimationSequenceArmsCrossedWalking = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for ArmsCrossed sequences - static PeepAnimations kPeepAnimationsArmsCrossed = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteArmsCrossedStateWalkingId, kPeepAnimationSequenceArmsCrossedWalking }; - return pag; - }(); - - // Define animation sequences for HeadDown sprites - static constexpr std::array kPeepAnimationSequenceHeadDownWalking = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for HeadDown sequences - static PeepAnimations kPeepAnimationsHeadDown = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteHeadDownStateWalkingId, kPeepAnimationSequenceHeadDownWalking }; - return pag; - }(); - - // Define animation sequences for Nauseous sprites - static constexpr std::array kPeepAnimationSequenceNauseousWalking = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for Nauseous sequences - static PeepAnimations kPeepAnimationsNauseous = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteNauseousStateWalkingId, kPeepAnimationSequenceNauseousWalking }; - return pag; - }(); - - // Define animation sequences for VeryNauseous sprites - static constexpr std::array kPeepAnimationSequenceVeryNauseousWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceVeryNauseousWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceVeryNauseousSittingIdle = { 0 }; - - // Define animation group for VeryNauseous sequences - static PeepAnimations kPeepAnimationsVeryNauseous = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteVeryNauseousStateWalkingId, kPeepAnimationSequenceVeryNauseousWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteVeryNauseousStateWatchRideId, kPeepAnimationSequenceVeryNauseousWatchRide }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteVeryNauseousStateSittingIdleId, kPeepAnimationSequenceVeryNauseousSittingIdle }; - return pag; - }(); - - // Define animation sequences for RequireToilet sprites - static constexpr std::array kPeepAnimationSequenceRequireToiletWalking = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for RequireToilet sequences - static PeepAnimations kPeepAnimationsRequireToilet = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteRequireToiletStateWalkingId, kPeepAnimationSequenceRequireToiletWalking }; - return pag; - }(); - - // Define animation sequences for Hat sprites - static constexpr std::array kPeepAnimationSequenceHatWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceHatWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceHatSittingIdle = { 0 }; - - // Define animation group for Hat sequences - static PeepAnimations kPeepAnimationsHat = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteHatStateWalkingId, kPeepAnimationSequenceHatWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteHatStateWatchRideId, kPeepAnimationSequenceHatWatchRide }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteHatStateSittingIdleId, kPeepAnimationSequenceHatSittingIdle }; - return pag; - }(); - - // Define animation sequences for HotDog sprites - static constexpr std::array kPeepAnimationSequenceHotDogWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceHotDogWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceHotDogEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceHotDogSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceHotDogSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for HotDog sequences - static PeepAnimations kPeepAnimationsHotDog = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteHotDogStateWalkingId, kPeepAnimationSequenceHotDogWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteHotDogStateWatchRideId, kPeepAnimationSequenceHotDogWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteHotDogStateEatFoodId, kPeepAnimationSequenceHotDogEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteHotDogStateSittingIdleId, kPeepAnimationSequenceHotDogSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteHotDogStateSittingEatFoodId, kPeepAnimationSequenceHotDogSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Tentacle sprites - static constexpr std::array kPeepAnimationSequenceTentacleWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }; - static constexpr std::array kPeepAnimationSequenceTentacleWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceTentacleEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - static constexpr std::array kPeepAnimationSequenceTentacleSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceTentacleSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - - // Define animation group for Tentacle sequences - static PeepAnimations kPeepAnimationsTentacle = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteTentacleStateWalkingId, kPeepAnimationSequenceTentacleWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteTentacleStateWatchRideId, kPeepAnimationSequenceTentacleWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteTentacleStateEatFoodId, kPeepAnimationSequenceTentacleEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteTentacleStateSittingIdleId, kPeepAnimationSequenceTentacleSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteTentacleStateSittingEatFoodId, kPeepAnimationSequenceTentacleSittingEatFood }; - return pag; - }(); - - // Define animation sequences for ToffeeApple sprites - static constexpr std::array kPeepAnimationSequenceToffeeAppleWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceToffeeAppleWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceToffeeAppleEatFood = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceToffeeAppleSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceToffeeAppleSittingEatFood = { 0, 1, 2, 3, 4, 5 }; - - // Define animation group for ToffeeApple sequences - static PeepAnimations kPeepAnimationsToffeeApple = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteToffeeAppleStateWalkingId, kPeepAnimationSequenceToffeeAppleWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteToffeeAppleStateWatchRideId, kPeepAnimationSequenceToffeeAppleWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteToffeeAppleStateEatFoodId, kPeepAnimationSequenceToffeeAppleEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteToffeeAppleStateSittingIdleId, kPeepAnimationSequenceToffeeAppleSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteToffeeAppleStateSittingEatFoodId, kPeepAnimationSequenceToffeeAppleSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Donut sprites - static constexpr std::array kPeepAnimationSequenceDonutWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceDonutWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceDonutEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceDonutSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceDonutSittingEatFood = { 0, 1, 2, 3, 3, 3, 3, 3, 3, 4, 5 }; - - // Define animation group for Donut sequences - static PeepAnimations kPeepAnimationsDonut = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteDonutStateWalkingId, kPeepAnimationSequenceDonutWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteDonutStateWatchRideId, kPeepAnimationSequenceDonutWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteDonutStateEatFoodId, kPeepAnimationSequenceDonutEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteDonutStateSittingIdleId, kPeepAnimationSequenceDonutSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteDonutStateSittingEatFoodId, kPeepAnimationSequenceDonutSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Coffee sprites - static constexpr std::array kPeepAnimationSequenceCoffeeWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceCoffeeWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceCoffeeEatFood = { 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 1 }; - static constexpr std::array kPeepAnimationSequenceCoffeeSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceCoffeeSittingEatFood = { 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 1 }; - - // Define animation group for Coffee sequences - static PeepAnimations kPeepAnimationsCoffee = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteCoffeeStateWalkingId, kPeepAnimationSequenceCoffeeWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteCoffeeStateWatchRideId, kPeepAnimationSequenceCoffeeWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteCoffeeStateWatchRideId, kPeepAnimationSequenceCoffeeEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteCoffeeStateSittingIdleId, kPeepAnimationSequenceCoffeeSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteCoffeeStateSittingIdleId, kPeepAnimationSequenceCoffeeSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Chicken sprites - static constexpr std::array kPeepAnimationSequenceChickenWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceChickenWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceChickenEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceChickenSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceChickenSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Chicken sequences - static PeepAnimations kPeepAnimationsChicken = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteChickenStateWalkingId, kPeepAnimationSequenceChickenWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteChickenStateWatchRideId, kPeepAnimationSequenceChickenWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteChickenStateWatchRideId, kPeepAnimationSequenceChickenEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteChickenStateSittingIdleId, kPeepAnimationSequenceChickenSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteChickenStateSittingIdleId, kPeepAnimationSequenceChickenSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Lemonade sprites - static constexpr std::array kPeepAnimationSequenceLemonadeWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceLemonadeWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceLemonadeEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceLemonadeSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceLemonadeSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Lemonade sequences - static PeepAnimations kPeepAnimationsLemonade = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteLemonadeStateWalkingId, kPeepAnimationSequenceLemonadeWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteLemonadeStateWatchRideId, kPeepAnimationSequenceLemonadeWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteLemonadeStateWatchRideId, kPeepAnimationSequenceLemonadeEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteLemonadeStateSittingIdleId, kPeepAnimationSequenceLemonadeSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteLemonadeStateSittingIdleId, kPeepAnimationSequenceLemonadeSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Watching sprites - static constexpr std::array kPeepAnimationSequenceWatchingWatchRide = { 0 }; - - // Define animation group for Watching sequences - static PeepAnimations kPeepAnimationsWatching = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteWatchingStateWatchRideId, kPeepAnimationSequenceWatchingWatchRide }; - return pag; - }(); - - // Define animation sequences for Pretzel sprites - static constexpr std::array kPeepAnimationSequencePretzelWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequencePretzelWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequencePretzelEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequencePretzelSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequencePretzelSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Pretzel sequences - static PeepAnimations kPeepAnimationsPretzel = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpritePretzelStateWalkingId, kPeepAnimationSequencePretzelWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpritePretzelStateWatchRideId, kPeepAnimationSequencePretzelWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpritePretzelStateWatchRideId, kPeepAnimationSequencePretzelEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpritePretzelStateSittingIdleId, kPeepAnimationSequencePretzelSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpritePretzelStateSittingIdleId, kPeepAnimationSequencePretzelSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Sunglasses sprites - static constexpr std::array kPeepAnimationSequenceSunglassesWalking = { 0, 1, 2, 3, 4, 5 }; - static constexpr std::array kPeepAnimationSequenceSunglassesWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSunglassesSittingIdle = { 0 }; - - // Define animation group for Sunglasses sequences - static PeepAnimations kPeepAnimationsSunglasses = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteSunglassesStateWalkingId, kPeepAnimationSequenceSunglassesWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteSunglassesStateWatchRideId, kPeepAnimationSequenceSunglassesWatchRide }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteSunglassesStateSittingIdleId, kPeepAnimationSequenceSunglassesSittingIdle }; - return pag; - }(); - - // Define animation sequences for SuJongkwa sprites - static constexpr std::array kPeepAnimationSequenceSuJongkwaWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceSuJongkwaWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSuJongkwaEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSuJongkwaSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceSuJongkwaSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for SuJongkwa sequences - static PeepAnimations kPeepAnimationsSuJongkwa = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteSuJongkwaStateWalkingId, kPeepAnimationSequenceSuJongkwaWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteSuJongkwaStateWatchRideId, kPeepAnimationSequenceSuJongkwaWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteSuJongkwaStateWatchRideId, kPeepAnimationSequenceSuJongkwaEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteSuJongkwaStateSittingIdleId, kPeepAnimationSequenceSuJongkwaSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteSuJongkwaStateSittingIdleId, kPeepAnimationSequenceSuJongkwaSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Juice sprites - static constexpr std::array kPeepAnimationSequenceJuiceWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceJuiceWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceJuiceEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceJuiceSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceJuiceSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Juice sequences - static PeepAnimations kPeepAnimationsJuice = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteJuiceStateWalkingId, kPeepAnimationSequenceJuiceWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteJuiceStateWatchRideId, kPeepAnimationSequenceJuiceWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteJuiceStateWatchRideId, kPeepAnimationSequenceJuiceEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteJuiceStateSittingIdleId, kPeepAnimationSequenceJuiceSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteJuiceStateSittingIdleId, kPeepAnimationSequenceJuiceSittingEatFood }; - return pag; - }(); - - // Define animation sequences for FunnelCake sprites - static constexpr std::array kPeepAnimationSequenceFunnelCakeWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceFunnelCakeWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceFunnelCakeEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceFunnelCakeSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceFunnelCakeSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for FunnelCake sequences - static PeepAnimations kPeepAnimationsFunnelCake = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteFunnelCakeStateWalkingId, kPeepAnimationSequenceFunnelCakeWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteFunnelCakeStateWatchRideId, kPeepAnimationSequenceFunnelCakeWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteFunnelCakeStateWatchRideId, kPeepAnimationSequenceFunnelCakeEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteFunnelCakeStateSittingIdleId, kPeepAnimationSequenceFunnelCakeSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteFunnelCakeStateSittingIdleId, kPeepAnimationSequenceFunnelCakeSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Noodles sprites - static constexpr std::array kPeepAnimationSequenceNoodlesWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceNoodlesWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceNoodlesEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceNoodlesSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceNoodlesSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Noodles sequences - static PeepAnimations kPeepAnimationsNoodles = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteNoodlesStateWalkingId, kPeepAnimationSequenceNoodlesWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteNoodlesStateWatchRideId, kPeepAnimationSequenceNoodlesWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteNoodlesStateWatchRideId, kPeepAnimationSequenceNoodlesEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteNoodlesStateSittingIdleId, kPeepAnimationSequenceNoodlesSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteNoodlesStateSittingIdleId, kPeepAnimationSequenceNoodlesSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Sausage sprites - static constexpr std::array kPeepAnimationSequenceSausageWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceSausageWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSausageEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSausageSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceSausageSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Sausage sequences - static PeepAnimations kPeepAnimationsSausage = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteSausageStateWalkingId, kPeepAnimationSequenceSausageWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteSausageStateWatchRideId, kPeepAnimationSequenceSausageWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteSausageStateWatchRideId, kPeepAnimationSequenceSausageEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteSausageStateSittingIdleId, kPeepAnimationSequenceSausageSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteSausageStateSittingIdleId, kPeepAnimationSequenceSausageSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Soup sprites - static constexpr std::array kPeepAnimationSequenceSoupWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceSoupWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSoupEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSoupSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceSoupSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Soup sequences - static PeepAnimations kPeepAnimationsSoup = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteSoupStateWalkingId, kPeepAnimationSequenceSoupWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteSoupStateWatchRideId, kPeepAnimationSequenceSoupWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteSoupStateWatchRideId, kPeepAnimationSequenceSoupEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteSoupStateSittingIdleId, kPeepAnimationSequenceSoupSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteSoupStateSittingIdleId, kPeepAnimationSequenceSoupSittingEatFood }; - return pag; - }(); - - // Define animation sequences for Sandwich sprites - static constexpr std::array kPeepAnimationSequenceSandwichWalking = { 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; - static constexpr std::array kPeepAnimationSequenceSandwichWatchRide = { 0 }; - static constexpr std::array kPeepAnimationSequenceSandwichEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - static constexpr std::array kPeepAnimationSequenceSandwichSittingIdle = { 0 }; - static constexpr std::array kPeepAnimationSequenceSandwichSittingEatFood = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - - // Define animation group for Sandwich sequences - static PeepAnimations kPeepAnimationsSandwich = []() { - PeepAnimations pag = kPeepAnimationsNormal; - pag[PeepAnimationType::Walking] = { kPeepSpriteSandwichStateWalkingId, kPeepAnimationSequenceSandwichWalking }; - pag[PeepAnimationType::WatchRide] = { kPeepSpriteSandwichStateWatchRideId, kPeepAnimationSequenceSandwichWatchRide }; - pag[PeepAnimationType::EatFood] = { kPeepSpriteSandwichStateWatchRideId, kPeepAnimationSequenceSandwichEatFood }; - pag[PeepAnimationType::SittingIdle] = { kPeepSpriteSandwichStateSittingIdleId, kPeepAnimationSequenceSandwichSittingIdle }; - pag[PeepAnimationType::SittingEatFood] = { kPeepSpriteSandwichStateSittingIdleId, kPeepAnimationSequenceSandwichSittingEatFood }; - return pag; - }(); - - // clang-format on - // rct2: 0x00982708 - static std::array kPeepAnimationEntries = { - kPeepAnimationsNormal, - kPeepAnimationsHandyman, - kPeepAnimationsMechanic, - kPeepAnimationsSecurity, - kPeepAnimationsEntertainerPanda, - kPeepAnimationsEntertainerTiger, - kPeepAnimationsEntertainerElephant, - kPeepAnimationsEntertainerRoman, - kPeepAnimationsEntertainerGorilla, - kPeepAnimationsEntertainerSnowman, - kPeepAnimationsEntertainerKnight, - kPeepAnimationsEntertainerAstronaut, - kPeepAnimationsEntertainerBandit, - kPeepAnimationsEntertainerSheriff, - kPeepAnimationsEntertainerPirate, - kPeepAnimationsIceCream, - kPeepAnimationsChips, - kPeepAnimationsBurger, - kPeepAnimationsDrink, - kPeepAnimationsBalloon, - kPeepAnimationsCandyfloss, - kPeepAnimationsUmbrella, - kPeepAnimationsPizza, - kPeepAnimationsSecurityAlt, - kPeepAnimationsPopcorn, - kPeepAnimationsArmsCrossed, - kPeepAnimationsHeadDown, - kPeepAnimationsNauseous, - kPeepAnimationsVeryNauseous, - kPeepAnimationsRequireToilet, - kPeepAnimationsHat, - kPeepAnimationsHotDog, - kPeepAnimationsTentacle, - kPeepAnimationsToffeeApple, - kPeepAnimationsDonut, - kPeepAnimationsCoffee, - kPeepAnimationsChicken, - kPeepAnimationsLemonade, - kPeepAnimationsWatching, - kPeepAnimationsPretzel, - kPeepAnimationsSunglasses, - kPeepAnimationsSuJongkwa, - kPeepAnimationsJuice, - kPeepAnimationsFunnelCake, - kPeepAnimationsNoodles, - kPeepAnimationsSausage, - kPeepAnimationsSoup, - kPeepAnimationsSandwich, - }; - - const PeepAnimation& GetPeepAnimation(PeepAnimationGroup spriteType, PeepAnimationType actionAnimationGroup) - { - return kPeepAnimationEntries[EnumValue(spriteType)][actionAnimationGroup]; - } - - const SpriteBounds& GetSpriteBounds(PeepAnimationGroup spriteType, PeepAnimationType actionAnimationGroup) - { - return kPeepAnimationEntries[EnumValue(spriteType)][actionAnimationGroup].bounds; - } - - void inferMaxPeepSpriteDimensions() - { - for (auto groupKey = EnumValue(PeepAnimationGroup::Normal); groupKey < EnumValue(PeepAnimationGroup::Count); groupKey++) - { - auto& group = kPeepAnimationEntries[groupKey]; - - for (auto type = EnumValue(PeepAnimationType::Walking); type <= EnumValue(PeepAnimationType::WithdrawMoney); type++) - { - auto& anim = group[PeepAnimationType(type)]; - if (anim.frame_offsets.empty()) - continue; - - anim.bounds = inferMaxAnimationDimensions(anim); - - // Balloons, hats and umbrellas are painted separately, so the inference - // algorithm doesn't account for those. We manually compensate for these here. - // Between 8-12 pixels are needed, depending on rotation, so we're generalising. - auto pag = PeepAnimationGroup(groupKey); - if (pag == PeepAnimationGroup::Balloon || pag == PeepAnimationGroup::Hat || pag == PeepAnimationGroup::Umbrella) - { - anim.bounds.sprite_height_negative += 12; - } - } - } - } -} // namespace OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimationData.h b/src/openrct2/peep/PeepAnimationData.h deleted file mode 100644 index ea38d45f24..0000000000 --- a/src/openrct2/peep/PeepAnimationData.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "../core/EnumUtils.hpp" -#include "../entity/Peep.h" -#include "PeepAnimations.h" - -#include - -namespace OpenRCT2 -{ - const PeepAnimation& GetPeepAnimation( - PeepAnimationGroup spriteType, PeepAnimationType actionAnimationGroup = PeepAnimationType::Walking); - const SpriteBounds& GetSpriteBounds( - PeepAnimationGroup spriteType, PeepAnimationType actionAnimationGroup = PeepAnimationType::Walking); - - void inferMaxPeepSpriteDimensions(); -} // namespace OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimations.cpp b/src/openrct2/peep/PeepAnimations.cpp index 591bc57641..dc205cc928 100644 --- a/src/openrct2/peep/PeepAnimations.cpp +++ b/src/openrct2/peep/PeepAnimations.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12,8 +12,14 @@ #include "../Context.h" #include "../drawing/Drawing.h" #include "../entity/Peep.h" +#include "../entity/Staff.h" +#include "../object/ObjectLimits.h" +#include "../object/ObjectManager.h" +#include "../object/PeepAnimationsObject.h" #include +#include +#include namespace OpenRCT2 { @@ -105,6 +111,164 @@ namespace OpenRCT2 } } + AnimationPeepType getAnimationPeepType(StaffType staffType) + { + switch (staffType) + { + case StaffType::Handyman: + return AnimationPeepType::Handyman; + case StaffType::Mechanic: + return AnimationPeepType::Mechanic; + case StaffType::Security: + return AnimationPeepType::Security; + case StaffType::Entertainer: + default: + return AnimationPeepType::Entertainer; + } + } + + ObjectEntryIndex findPeepAnimationsIndexForType(const AnimationPeepType type) + { + auto& objManager = GetContext()->GetObjectManager(); + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto* animObj = objManager.GetLoadedObject(i); + if (animObj != nullptr && animObj->GetPeepType() == type) + return i; + } + return OBJECT_ENTRY_INDEX_NULL; + } + + PeepAnimationsObject* findPeepAnimationsObjectForType(const AnimationPeepType type) + { + auto& objManager = GetContext()->GetObjectManager(); + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto* animObj = objManager.GetLoadedObject(i); + if (animObj != nullptr && animObj->GetPeepType() == type) + return animObj; + } + return nullptr; + } + + std::vector findAllPeepAnimationsIndexesForType(const AnimationPeepType type, bool randomOnly) + { + std::vector output{}; + auto& objManager = GetContext()->GetObjectManager(); + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto* animObj = objManager.GetLoadedObject(i); + if (animObj == nullptr || animObj->GetPeepType() != type) + continue; + + if (randomOnly && animObj->ShouldExcludeFromRandomPlacement()) + continue; + + output.push_back(i); + } + return output; + } + + std::vector findAllPeepAnimationsObjectForType(const AnimationPeepType type, bool randomOnly) + { + std::vector output{}; + auto& objManager = GetContext()->GetObjectManager(); + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto* animObj = objManager.GetLoadedObject(i); + if (animObj == nullptr || animObj->GetPeepType() != type) + continue; + + if (randomOnly && animObj->ShouldExcludeFromRandomPlacement()) + continue; + + output.push_back(animObj); + } + return output; + } + + ObjectEntryIndex findRandomPeepAnimationsIndexForType(const AnimationPeepType type) + { + // Get available costumes, excluding from random placement as requested + auto costumes = findAllPeepAnimationsIndexesForType(type, true); + + // No costumes? Try again without respecting the random placement flag + if (costumes.empty()) + costumes = findAllPeepAnimationsIndexesForType(type); + + // Still no costumes available? Bail out + if (costumes.empty()) + return OBJECT_ENTRY_INDEX_NULL; + + std::vector out{}; + std::sample(costumes.begin(), costumes.end(), std::back_inserter(out), 1, std::mt19937{ std::random_device{}() }); + return !out.empty() ? out[0] : OBJECT_ENTRY_INDEX_NULL; + } + + std::vector getAnimationGroupsByPeepType(const AnimationPeepType type) + { + std::vector groups{}; + + auto& objManager = GetContext()->GetObjectManager(); + for (auto i = 0u; i < kMaxPeepAnimationsObjects; i++) + { + auto* animObj = objManager.GetLoadedObject(i); + if (animObj == nullptr || animObj->GetPeepType() != type) + continue; + + for (auto j = 0u; j < animObj->GetNumAnimationGroups(); j++) + { + auto group = PeepAnimationGroup(j); + auto scriptName = animObj->GetScriptName(group); + if (scriptName.empty()) + continue; + + groups.push_back({ + .objectId = ObjectEntryIndex(i), + .group = group, + .legacyPosition = animObj->GetLegacyPosition(group), + .scriptName = scriptName, + }); + } + } + + return groups; + } + + std::vector getAvailableCostumeStrings(const AnimationPeepType type) + { + auto availCostumeIndexes = findAllPeepAnimationsIndexesForType(type); + auto availCostumeObjects = findAllPeepAnimationsObjectForType(type); + + auto availableCostumes = std::vector{}; + for (auto i = 0u; i < availCostumeObjects.size(); i++) + { + auto baseName = availCostumeObjects[i]->GetCostumeName(); + auto inlineImageId = availCostumeObjects[i]->GetInlineImageId(); + + // std::format doesn't appear to be available on macOS <13.3 + std::stringstream out{}; + out << "{INLINE_SPRITE}"; + for (auto b = 0; b < 32; b += 8) + out << '{' << ((inlineImageId >> b) & 0xFF) << '}'; + out << ' '; + out << baseName; + + availableCostumes.push_back({ + .index = availCostumeIndexes[i], + .object = availCostumeObjects[i], + .rawName = baseName, + .friendlyName = out.str(), + }); + } + + std::sort(availableCostumes.begin(), availableCostumes.end(), [](const auto& a, const auto& b) { + return a.rawName < b.rawName; + }); + + return availableCostumes; + } + // Adapted from CarEntry.cpp SpriteBounds inferMaxAnimationDimensions(const PeepAnimation& anim) { diff --git a/src/openrct2/peep/PeepAnimations.h b/src/openrct2/peep/PeepAnimations.h index 00d4092138..a6ba242962 100644 --- a/src/openrct2/peep/PeepAnimations.h +++ b/src/openrct2/peep/PeepAnimations.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -14,6 +14,13 @@ #include "../drawing/ImageIndexType.h" #include "../entity/Peep.h" +#include +#include + +class PeepAnimationsObject; +enum class RCT12PeepAnimationGroup : uint8_t; +enum class StaffType : uint8_t; + namespace OpenRCT2 { enum class AnimationPeepType : uint8_t @@ -26,6 +33,7 @@ namespace OpenRCT2 }; const EnumMap& getAnimationsByPeepType(AnimationPeepType peepType); + AnimationPeepType getAnimationPeepType(StaffType staffType); struct SpriteBounds { @@ -36,22 +44,19 @@ namespace OpenRCT2 struct PeepAnimation { - uint32_t base_image; - std::span frame_offsets; + ImageIndex imageTableOffset; + std::vector frame_offsets; + uint32_t base_image{}; SpriteBounds bounds{}; - - constexpr PeepAnimation() = default; - - PeepAnimation(uint32_t baseImage, std::span frameOffsets) - : base_image(baseImage) - , frame_offsets(frameOffsets) - { - } }; struct PeepAnimations { public: + bool isSlowWalking = false; + RCT12PeepAnimationGroup legacyPosition; + std::string scriptName{}; + constexpr PeepAnimation& operator[](PeepAnimationType n) { return animations[EnumValue(n)]; @@ -65,5 +70,34 @@ namespace OpenRCT2 PeepAnimation animations[37]{}; }; + ObjectEntryIndex findPeepAnimationsIndexForType(const AnimationPeepType type); + PeepAnimationsObject* findPeepAnimationsObjectForType(const AnimationPeepType type); + + std::vector findAllPeepAnimationsIndexesForType(const AnimationPeepType type, bool randomOnly = false); + std::vector findAllPeepAnimationsObjectForType( + const AnimationPeepType type, bool randomOnly = false); + + ObjectEntryIndex findRandomPeepAnimationsIndexForType(const AnimationPeepType type); + + struct AnimationGroupResult + { + ObjectEntryIndex objectId; + PeepAnimationGroup group; + RCT12PeepAnimationGroup legacyPosition; + std::string_view scriptName; + }; + + std::vector getAnimationGroupsByPeepType(const AnimationPeepType type); + + struct AvailableCostume + { + ObjectEntryIndex index; + PeepAnimationsObject* object; + std::string rawName; + std::string friendlyName; + }; + + std::vector getAvailableCostumeStrings(const AnimationPeepType type); + SpriteBounds inferMaxAnimationDimensions(const PeepAnimation& anim); } // namespace OpenRCT2 diff --git a/src/openrct2/peep/PeepSpriteIds.h b/src/openrct2/peep/PeepSpriteIds.h index ca7f0ded4e..3068bab276 100644 --- a/src/openrct2/peep/PeepSpriteIds.h +++ b/src/openrct2/peep/PeepSpriteIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -158,6 +158,7 @@ namespace OpenRCT2 kPeepSpriteBalloonStateWalkingId = 10785, kPeepSpriteBalloonStateWatchRideId = 10781, kPeepSpriteBalloonStateSittingIdleId = 10809, + kPeepSpriteBalloonItemStart = 10813, kPeepSpriteCandyflossStateWalkingId = 10849, kPeepSpriteCandyflossStateWatchRideId = 10845, @@ -168,6 +169,7 @@ namespace OpenRCT2 kPeepSpriteUmbrellaStateWalkingId = 11197, kPeepSpriteUmbrellaStateWatchRideId = 11221, kPeepSpriteUmbrellaStateSittingIdleId = 11225, + kPeepSpriteUmbrellaItemStart = 11229, kPeepSpritePizzaStateWalkingId = 7785, kPeepSpritePizzaStateWatchRideId = 7781, @@ -197,6 +199,7 @@ namespace OpenRCT2 kPeepSpriteHatStateWalkingId = 10721, kPeepSpriteHatStateWatchRideId = 10717, kPeepSpriteHatStateSittingIdleId = 10745, + kPeepSpriteHatItemStart = 10749, kPeepSpriteHotDogStateWalkingId = 7889, kPeepSpriteHotDogStateWatchRideId = 7885, @@ -244,9 +247,9 @@ namespace OpenRCT2 kPeepSpriteSunglassesStateWatchRideId = 10713, kPeepSpriteSunglassesStateSittingIdleId = 10709, - kPeepSpriteSuJongkwaStateWalkingId = 9509, - kPeepSpriteSuJongkwaStateWatchRideId = 9629, - kPeepSpriteSuJongkwaStateSittingIdleId = 9581, + kPeepSpriteSujeonggwaStateWalkingId = 9509, + kPeepSpriteSujeonggwaStateWatchRideId = 9629, + kPeepSpriteSujeonggwaStateSittingIdleId = 9581, kPeepSpriteJuiceStateWalkingId = 9677, kPeepSpriteJuiceStateWatchRideId = 9797, diff --git a/src/openrct2/peep/PeepThoughts.cpp b/src/openrct2/peep/PeepThoughts.cpp index b67ed4988c..3578abca7a 100644 --- a/src/openrct2/peep/PeepThoughts.cpp +++ b/src/openrct2/peep/PeepThoughts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepThoughts.h b/src/openrct2/peep/PeepThoughts.h index 3a73ed01e8..82e4d1ded8 100644 --- a/src/openrct2/peep/PeepThoughts.h +++ b/src/openrct2/peep/PeepThoughts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/RideUseSystem.cpp b/src/openrct2/peep/RideUseSystem.cpp index 98e6ab1934..4334437f16 100644 --- a/src/openrct2/peep/RideUseSystem.cpp +++ b/src/openrct2/peep/RideUseSystem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/RideUseSystem.h b/src/openrct2/peep/RideUseSystem.h index 4c1f026d1b..02b42a59c1 100644 --- a/src/openrct2/peep/RideUseSystem.h +++ b/src/openrct2/peep/RideUseSystem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index 54ca2ec10f..b808612d15 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -57,7 +57,7 @@ static const wchar_t* _wszCommitSha1Short = WSZ(""); static const wchar_t* _wszArchitecture = WSZ(OPENRCT2_ARCHITECTURE); static std::map _uploadFiles; - #define BACKTRACE_TOKEN "024ed66e0e296ab22777d1292e1d945d78584f350c92fc76c2af843a7db002c9" + #define BACKTRACE_TOKEN "164d73675f52d093fe24de22fa205b2f30cf8cfc1ed1c6f043df301b59e16d1d" using namespace OpenRCT2; diff --git a/src/openrct2/platform/Crash.h b/src/openrct2/platform/Crash.h index 87a3461a6c..fa57d97c55 100644 --- a/src/openrct2/platform/Crash.h +++ b/src/openrct2/platform/Crash.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Memory.h b/src/openrct2/platform/Memory.h index 37b2c9016f..b215c000e2 100644 --- a/src/openrct2/platform/Memory.h +++ b/src/openrct2/platform/Memory.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Android.cpp b/src/openrct2/platform/Platform.Android.cpp index 9a48128ff1..7b14f5a407 100644 --- a/src/openrct2/platform/Platform.Android.cpp +++ b/src/openrct2/platform/Platform.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Common.cpp b/src/openrct2/platform/Platform.Common.cpp index e4c5f68627..d34c78cc8e 100644 --- a/src/openrct2/platform/Platform.Common.cpp +++ b/src/openrct2/platform/Platform.Common.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp index 32363dc900..7ceaa1a3cc 100644 --- a/src/openrct2/platform/Platform.Linux.cpp +++ b/src/openrct2/platform/Platform.Linux.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp index b4ae18d45c..ae24b045f6 100644 --- a/src/openrct2/platform/Platform.Posix.cpp +++ b/src/openrct2/platform/Platform.Posix.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index b246e274a5..e0bad458be 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h index dde5053f9b..25f2e6c734 100644 --- a/src/openrct2/platform/Platform.h +++ b/src/openrct2/platform/Platform.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.macOS.mm b/src/openrct2/platform/Platform.macOS.mm index ccbc9f146d..ace348ec83 100644 --- a/src/openrct2/platform/Platform.macOS.mm +++ b/src/openrct2/platform/Platform.macOS.mm @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/Profiling.cpp b/src/openrct2/profiling/Profiling.cpp index 7359f326f7..63ea4ea107 100644 --- a/src/openrct2/profiling/Profiling.cpp +++ b/src/openrct2/profiling/Profiling.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/Profiling.h b/src/openrct2/profiling/Profiling.h index ece1436988..0d079d4712 100644 --- a/src/openrct2/profiling/Profiling.h +++ b/src/openrct2/profiling/Profiling.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/ProfilingMacros.hpp b/src/openrct2/profiling/ProfilingMacros.hpp index 3712be0e46..5aab6e8468 100644 --- a/src/openrct2/profiling/ProfilingMacros.hpp +++ b/src/openrct2/profiling/ProfilingMacros.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/rct1/Csg.cpp index a9845b5905..f115ac71b1 100644 --- a/src/openrct2/rct1/Csg.cpp +++ b/src/openrct2/rct1/Csg.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Csg.h b/src/openrct2/rct1/Csg.h index fc731f01c9..3d47b5bafc 100644 --- a/src/openrct2/rct1/Csg.h +++ b/src/openrct2/rct1/Csg.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Limits.h b/src/openrct2/rct1/Limits.h index 00e3d7b320..244e927d9f 100644 --- a/src/openrct2/rct1/Limits.h +++ b/src/openrct2/rct1/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 349d916890..cfcb2bcaff 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index e620b7f660..34be3cf4f9 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -50,9 +50,9 @@ #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" +#include "../object/PeepAnimationsObject.h" #include "../object/ScenarioTextObject.h" #include "../park/Legacy.h" -#include "../peep/PeepAnimationData.h" #include "../peep/RideUseSystem.h" #include "../rct12/CSStringConverter.h" #include "../rct12/EntryList.h" @@ -207,6 +207,9 @@ namespace OpenRCT2::RCT1 ImportScenarioObjective(gameState); ImportSavedView(gameState); + ConvertPeepAnimationTypeToObjects(gameState); + ResetPeepSpriteBounds(gameState); + if (_isScenario) { RCT12::FetchAndApplyScenarioPatch(_s4Path); @@ -1264,6 +1267,30 @@ namespace OpenRCT2::RCT1 } } + void ResetPeepSpriteBounds([[maybe_unused]] GameState_t& gameState) + { + // TODO: Entities are currently read from the global state, change this once entities are stored + // in the passed gameState. + auto* animObj = findPeepAnimationsObjectForType(AnimationPeepType::Guest); + for (auto* peep : EntityList()) + { + const auto& spriteBounds = animObj->GetSpriteBounds(peep->AnimationGroup, peep->AnimationType); + peep->SpriteData.Width = spriteBounds.sprite_width; + peep->SpriteData.HeightMin = spriteBounds.sprite_height_negative; + peep->SpriteData.HeightMax = spriteBounds.sprite_height_positive; + } + + auto& objManager = GetContext()->GetObjectManager(); + for (auto* peep : EntityList()) + { + animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + const auto& spriteBounds = animObj->GetSpriteBounds(peep->AnimationGroup, peep->AnimationType); + peep->SpriteData.Width = spriteBounds.sprite_width; + peep->SpriteData.HeightMin = spriteBounds.sprite_height_negative; + peep->SpriteData.HeightMax = spriteBounds.sprite_height_positive; + } + } + void SetVehicleColours(::Vehicle* dst, const RCT1::Vehicle* src) { const auto& srcRide = _s4.Rides[src->Ride]; @@ -1319,8 +1346,10 @@ namespace OpenRCT2::RCT1 void ImportPeep(::Peep* dst, const RCT1::Peep* src) { - // Peep vs. staff (including which kind) - dst->AnimationGroup = RCT1::GetPeepAnimationGroup(src->AnimationGroup); + dst->AnimationObjectIndex = OBJECT_ENTRY_INDEX_NULL; + auto rct12AnimGroup = RCT1::GetPeepAnimationGroup(src->AnimationGroup); + dst->AnimationGroup = static_cast<::PeepAnimationGroup>(rct12AnimGroup); + dst->Action = static_cast(src->Action); dst->SpecialSprite = src->SpecialSprite; dst->NextAnimationType = static_cast(src->NextAnimationType); @@ -1329,10 +1358,7 @@ namespace OpenRCT2::RCT1 dst->AnimationType = static_cast(src->AnimationType); dst->AnimationFrameNum = src->AnimationFrameNum; - const SpriteBounds* spriteBounds = &GetSpriteBounds(dst->AnimationGroup, dst->AnimationType); - dst->SpriteData.Width = spriteBounds->sprite_width; - dst->SpriteData.HeightMin = spriteBounds->sprite_height_negative; - dst->SpriteData.HeightMax = spriteBounds->sprite_height_positive; + // Peep sprite bounds used to be set here. These are now set in a finishing step after loading peep anim objects. dst->MoveTo({ src->x, src->y, src->z }); @@ -1534,6 +1560,10 @@ namespace OpenRCT2::RCT1 if (ScenarioSources::TryGetByName(normalisedName.c_str(), &desc) && !desc.textObjectId.empty()) AppendRequiredObjects(result, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); + // Add all legacy peep animation objects + auto animObjects = GetLegacyPeepAnimationObjects(result); + AppendRequiredObjects(result, ObjectType::PeepAnimations, animObjects); + return result; } diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index 86c5f43bb7..29a3ed1370 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index 234f136035..534b32cea0 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -67,50 +67,50 @@ namespace OpenRCT2::RCT1 return map[colour]; } - ::PeepAnimationGroup GetPeepAnimationGroup(RCT1::PeepAnimationGroup rct1AnimationGroup) + RCT12PeepAnimationGroup GetPeepAnimationGroup(PeepAnimationGroup rct1AnimationGroup) { - static constexpr ::PeepAnimationGroup map[] = + static constexpr RCT12PeepAnimationGroup map[] = { - ::PeepAnimationGroup::Normal, // 0x00 - ::PeepAnimationGroup::Handyman, // 0x01 - ::PeepAnimationGroup::Mechanic, // 0x02 - ::PeepAnimationGroup::Security, // 0x03 - ::PeepAnimationGroup::EntertainerPanda, // 0x04 - ::PeepAnimationGroup::EntertainerTiger, // 0x05 - ::PeepAnimationGroup::EntertainerElephant, // 0x06 - ::PeepAnimationGroup::EntertainerRoman, // 0x07 - ::PeepAnimationGroup::EntertainerGorilla, // 0x08 - ::PeepAnimationGroup::EntertainerSnowman, // 0x09 - ::PeepAnimationGroup::EntertainerKnight, // 0x0A - ::PeepAnimationGroup::EntertainerAstronaut, // 0x0B - ::PeepAnimationGroup::IceCream, // 0x0C - ::PeepAnimationGroup::Chips, // 0x0D - ::PeepAnimationGroup::Burger, // 0x0E - ::PeepAnimationGroup::Drink, // 0x0F - ::PeepAnimationGroup::Balloon, // 0x10 - ::PeepAnimationGroup::Candyfloss, // 0x11 - ::PeepAnimationGroup::Umbrella, // 0x12 - ::PeepAnimationGroup::Pizza, // 0x13 - ::PeepAnimationGroup::SecurityAlt, // 0x14 - ::PeepAnimationGroup::Popcorn, // 0x15 - ::PeepAnimationGroup::ArmsCrossed, // 0x16 - ::PeepAnimationGroup::HeadDown, // 0x17 - ::PeepAnimationGroup::Nauseous, // 0x18 - ::PeepAnimationGroup::VeryNauseous, // 0x19 - ::PeepAnimationGroup::RequireToilet, // 0x1A - ::PeepAnimationGroup::Hat, // 0x1B - ::PeepAnimationGroup::HotDog, // 0x1C - ::PeepAnimationGroup::Tentacle, // 0x1D - ::PeepAnimationGroup::ToffeeApple, // 0x1E - ::PeepAnimationGroup::Doughnut, // 0x1F - ::PeepAnimationGroup::Coffee, // 0x20 - ::PeepAnimationGroup::Chicken, // 0x21 - ::PeepAnimationGroup::Lemonade, // 0x22 + RCT12PeepAnimationGroup::Normal, // 0x00 + RCT12PeepAnimationGroup::Handyman, // 0x01 + RCT12PeepAnimationGroup::Mechanic, // 0x02 + RCT12PeepAnimationGroup::Security, // 0x03 + RCT12PeepAnimationGroup::EntertainerPanda, // 0x04 + RCT12PeepAnimationGroup::EntertainerTiger, // 0x05 + RCT12PeepAnimationGroup::EntertainerElephant, // 0x06 + RCT12PeepAnimationGroup::EntertainerRoman, // 0x07 + RCT12PeepAnimationGroup::EntertainerGorilla, // 0x08 + RCT12PeepAnimationGroup::EntertainerSnowman, // 0x09 + RCT12PeepAnimationGroup::EntertainerKnight, // 0x0A + RCT12PeepAnimationGroup::EntertainerAstronaut, // 0x0B + RCT12PeepAnimationGroup::IceCream, // 0x0C + RCT12PeepAnimationGroup::Chips, // 0x0D + RCT12PeepAnimationGroup::Burger, // 0x0E + RCT12PeepAnimationGroup::Drink, // 0x0F + RCT12PeepAnimationGroup::Balloon, // 0x10 + RCT12PeepAnimationGroup::Candyfloss, // 0x11 + RCT12PeepAnimationGroup::Umbrella, // 0x12 + RCT12PeepAnimationGroup::Pizza, // 0x13 + RCT12PeepAnimationGroup::SecurityAlt, // 0x14 + RCT12PeepAnimationGroup::Popcorn, // 0x15 + RCT12PeepAnimationGroup::ArmsCrossed, // 0x16 + RCT12PeepAnimationGroup::HeadDown, // 0x17 + RCT12PeepAnimationGroup::Nauseous, // 0x18 + RCT12PeepAnimationGroup::VeryNauseous, // 0x19 + RCT12PeepAnimationGroup::RequireToilet, // 0x1A + RCT12PeepAnimationGroup::Hat, // 0x1B + RCT12PeepAnimationGroup::HotDog, // 0x1C + RCT12PeepAnimationGroup::Tentacle, // 0x1D + RCT12PeepAnimationGroup::ToffeeApple, // 0x1E + RCT12PeepAnimationGroup::Doughnut, // 0x1F + RCT12PeepAnimationGroup::Coffee, // 0x20 + RCT12PeepAnimationGroup::Chicken, // 0x21 + RCT12PeepAnimationGroup::Lemonade, // 0x22 }; if (EnumValue(rct1AnimationGroup) >= std::size(map)) { LOG_WARNING("Unsupported RCT1 peep sprite type: %d.", EnumValue(rct1AnimationGroup)); - return ::PeepAnimationGroup::Normal; + return RCT12PeepAnimationGroup::Normal; } return map[EnumValue(rct1AnimationGroup)]; } diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index 54c65f6b09..1b7b424104 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -25,7 +25,7 @@ namespace OpenRCT2::RCT1 enum class PeepAnimationGroup : uint8_t; colour_t GetColour(colour_t colour); - ::PeepAnimationGroup GetPeepAnimationGroup(PeepAnimationGroup rct1AnimationGroup); + RCT12PeepAnimationGroup GetPeepAnimationGroup(PeepAnimationGroup rct1AnimationGroup); uint8_t GetRideType(RideType rideType, VehicleType vehicleType); VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(VehicleType vehicleType); diff --git a/src/openrct2/rct12/CSChar.h b/src/openrct2/rct12/CSChar.h index bdc31e852f..1a9d69a4d9 100644 --- a/src/openrct2/rct12/CSChar.h +++ b/src/openrct2/rct12/CSChar.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/CSStringConverter.cpp b/src/openrct2/rct12/CSStringConverter.cpp index 284c516df4..68cf32721a 100644 --- a/src/openrct2/rct12/CSStringConverter.cpp +++ b/src/openrct2/rct12/CSStringConverter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/CSStringConverter.h b/src/openrct2/rct12/CSStringConverter.h index 49534f60fe..a79cc7dd09 100644 --- a/src/openrct2/rct12/CSStringConverter.h +++ b/src/openrct2/rct12/CSStringConverter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/EntryList.h b/src/openrct2/rct12/EntryList.h index 4efddd8005..2f3faf0211 100644 --- a/src/openrct2/rct12/EntryList.h +++ b/src/openrct2/rct12/EntryList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/Limits.h b/src/openrct2/rct12/Limits.h index 394bcb7baa..ee21b87462 100644 --- a/src/openrct2/rct12/Limits.h +++ b/src/openrct2/rct12/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index 09889280b6..5e1e54edcc 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 4780487b29..145689d7b1 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -985,6 +985,61 @@ enum class RCT12PeepType : uint8_t Invalid = 0xFF }; +enum class RCT12PeepAnimationGroup : uint8_t +{ + Normal = 0, + Handyman = 1, + Mechanic = 2, + Security = 3, + EntertainerPanda = 4, + EntertainerTiger = 5, + EntertainerElephant = 6, + EntertainerRoman = 7, + EntertainerGorilla = 8, + EntertainerSnowman = 9, + EntertainerKnight = 10, + EntertainerAstronaut = 11, + EntertainerBandit = 12, + EntertainerSheriff = 13, + EntertainerPirate = 14, + IceCream = 15, + Chips = 16, + Burger = 17, + Drink = 18, + Balloon = 19, + Candyfloss = 20, + Umbrella = 21, + Pizza = 22, + SecurityAlt = 23, + Popcorn = 24, + ArmsCrossed = 25, + HeadDown = 26, + Nauseous = 27, + VeryNauseous = 28, + RequireToilet = 29, + Hat = 30, + HotDog = 31, + Tentacle = 32, + ToffeeApple = 33, + Doughnut = 34, + Coffee = 35, + Chicken = 36, + Lemonade = 37, + Watching = 38, + Pretzel = 39, + Sunglasses = 40, + Sujeonggwa = 41, + Juice = 42, + FunnelCake = 43, + Noodles = 44, + Sausage = 45, + Soup = 46, + Sandwich = 47, + Count = 48, + + Invalid = 255 +}; + struct RCT12EntityBase { RCT12EntityIdentifier EntityIdentifier; // 0x00 diff --git a/src/openrct2/rct12/SawyerChunk.cpp b/src/openrct2/rct12/SawyerChunk.cpp index 07393c8e17..4ba7a16811 100644 --- a/src/openrct2/rct12/SawyerChunk.cpp +++ b/src/openrct2/rct12/SawyerChunk.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/SawyerChunk.h b/src/openrct2/rct12/SawyerChunk.h index 67615ec1d5..10029e3939 100644 --- a/src/openrct2/rct12/SawyerChunk.h +++ b/src/openrct2/rct12/SawyerChunk.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/SawyerChunkReader.cpp b/src/openrct2/rct12/SawyerChunkReader.cpp index 07d2fd95b4..d6ceef14df 100644 --- a/src/openrct2/rct12/SawyerChunkReader.cpp +++ b/src/openrct2/rct12/SawyerChunkReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/SawyerChunkReader.h b/src/openrct2/rct12/SawyerChunkReader.h index e9b51b9029..83c055c78f 100644 --- a/src/openrct2/rct12/SawyerChunkReader.h +++ b/src/openrct2/rct12/SawyerChunkReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/SawyerChunkWriter.cpp b/src/openrct2/rct12/SawyerChunkWriter.cpp index 7589371ab1..cb97865f40 100644 --- a/src/openrct2/rct12/SawyerChunkWriter.cpp +++ b/src/openrct2/rct12/SawyerChunkWriter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/SawyerChunkWriter.h b/src/openrct2/rct12/SawyerChunkWriter.h index 725a08ea48..8147ef5f9c 100644 --- a/src/openrct2/rct12/SawyerChunkWriter.h +++ b/src/openrct2/rct12/SawyerChunkWriter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index bb334a3072..a6850adb64 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/ScenarioPatcher.h b/src/openrct2/rct12/ScenarioPatcher.h index b45c6525ce..a3df7c39a5 100644 --- a/src/openrct2/rct12/ScenarioPatcher.h +++ b/src/openrct2/rct12/ScenarioPatcher.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/DATLimits.h b/src/openrct2/rct2/DATLimits.h index 586eedca91..7753557762 100644 --- a/src/openrct2/rct2/DATLimits.h +++ b/src/openrct2/rct2/DATLimits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/Limits.h b/src/openrct2/rct2/Limits.h index c085b402d5..c2d9b02bd7 100644 --- a/src/openrct2/rct2/Limits.h +++ b/src/openrct2/rct2/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp index fdefdf8f2c..06984f955e 100644 --- a/src/openrct2/rct2/RCT2.cpp +++ b/src/openrct2/rct2/RCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index 645d3e94b2..d4cdd8cb63 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index d27160d6d8..3f3b960d8a 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -352,6 +352,7 @@ namespace OpenRCT2::RCT2 DetermineFlatRideStatus(); ImportTileElements(gameState); ImportEntities(); + ConvertPeepAnimationTypeToObjects(gameState); gameState.InitialCash = ToMoney64(_s6.InitialCash); gameState.BankLoan = ToMoney64(_s6.CurrentLoan); @@ -1647,7 +1648,11 @@ namespace OpenRCT2::RCT2 dst->NextFlags = src->NextFlags; dst->State = static_cast(src->State); dst->SubState = src->SubState; + + // TODO + dst->AnimationObjectIndex = OBJECT_ENTRY_INDEX_NULL; dst->AnimationGroup = static_cast(src->AnimationGroup); + dst->TshirtColour = src->TshirtColour; dst->TrousersColour = src->TrousersColour; dst->DestinationX = src->DestinationX; @@ -1769,12 +1774,12 @@ namespace OpenRCT2::RCT2 void ImportEntityCommonProperties(EntityBase* dst, const RCT12EntityBase* src) { dst->Type = GetEntityTypeFromRCT2Sprite(src); - dst->SpriteData.HeightMin = src->SpriteHeightNegative; dst->Id = EntityId::FromUnderlying(src->EntityIndex); dst->x = src->x; dst->y = src->y; dst->z = src->z; dst->SpriteData.Width = src->SpriteWidth; + dst->SpriteData.HeightMin = src->SpriteHeightNegative; dst->SpriteData.HeightMax = src->SpriteHeightPositive; dst->SpriteData.SpriteRect = ScreenRect(src->SpriteLeft, src->SpriteTop, src->SpriteRight, src->SpriteBottom); dst->Orientation = src->EntityDirection; @@ -1900,6 +1905,9 @@ namespace OpenRCT2::RCT2 AppendRequiredObjects( objectList, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); + auto animObjects = GetLegacyPeepAnimationObjects(objectList); + AppendRequiredObjects(objectList, ObjectType::PeepAnimations, animObjects); + return objectList; } }; diff --git a/src/openrct2/rct2/SeaDecrypt.cpp b/src/openrct2/rct2/SeaDecrypt.cpp index b091ddb469..2fea66a608 100644 --- a/src/openrct2/rct2/SeaDecrypt.cpp +++ b/src/openrct2/rct2/SeaDecrypt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index c68106bbd3..e7c56013ed 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Exporter.h b/src/openrct2/rct2/T6Exporter.h index 77bfbdd6e2..b1af2315da 100644 --- a/src/openrct2/rct2/T6Exporter.h +++ b/src/openrct2/rct2/T6Exporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index e4ec12d4a5..7d31d12a6c 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 6dd960b5d3..7b410a0185 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CableLift.h b/src/openrct2/ride/CableLift.h index 39cfb939f4..1050b3406b 100644 --- a/src/openrct2/ride/CableLift.h +++ b/src/openrct2/ride/CableLift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CarEntry.cpp b/src/openrct2/ride/CarEntry.cpp index 0a23c5ce10..46bafb524b 100644 --- a/src/openrct2/ride/CarEntry.cpp +++ b/src/openrct2/ride/CarEntry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CarEntry.h b/src/openrct2/ride/CarEntry.h index 4fc317a747..ea830cff8a 100644 --- a/src/openrct2/ride/CarEntry.h +++ b/src/openrct2/ride/CarEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/MazeCost.cpp b/src/openrct2/ride/MazeCost.cpp index 04c54b37a7..d7ae0c4cd9 100644 --- a/src/openrct2/ride/MazeCost.cpp +++ b/src/openrct2/ride/MazeCost.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/MazeCost.h b/src/openrct2/ride/MazeCost.h index 2a58398be3..9d0a6562da 100644 --- a/src/openrct2/ride/MazeCost.h +++ b/src/openrct2/ride/MazeCost.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 6566f74846..796c6d8abc 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -765,7 +765,8 @@ bool Ride::FindTrackGap(const CoordsXYE& input, CoordsXYE* output) const if (rtd.specialType == RtdSpecialType::maze) return false; - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && _currentRideIndex == id) { RideConstructionInvalidateCurrentTrack(); @@ -2700,7 +2701,9 @@ static ResultWithMessage RideCheckBlockBrakes(const CoordsXYE& input, CoordsXYE* return { false }; RideId rideIndex = input.element->AsTrack()->GetRideIndex(); - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && _currentRideIndex == rideIndex) RideConstructionInvalidateCurrentTrack(); @@ -2764,7 +2767,8 @@ static bool RideCheckTrackContainsInversions(const CoordsXYE& input, CoordsXYE* return true; } - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && rideIndex == _currentRideIndex) { RideConstructionInvalidateCurrentTrack(); @@ -2824,7 +2828,8 @@ static bool RideCheckTrackContainsBanked(const CoordsXYE& input, CoordsXYE* outp if (rtd.specialType == RtdSpecialType::maze) return true; - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && rideIndex == _currentRideIndex) { RideConstructionInvalidateCurrentTrack(); @@ -2865,7 +2870,8 @@ static bool RideCheckTrackContainsBanked(const CoordsXYE& input, CoordsXYE* outp */ static int32_t RideCheckStationLength(const CoordsXYE& input, CoordsXYE* output) { - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && _currentRideIndex == input.element->AsTrack()->GetRideIndex()) { @@ -2927,7 +2933,8 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) if (ride == nullptr) return false; - auto w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && rideIndex == _currentRideIndex) { RideConstructionInvalidateCurrentTrack(); @@ -3986,7 +3993,8 @@ void Ride::ConstructMissingEntranceOrExit() const return; } - w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr) w->OnMouseUp(entranceOrExit); } @@ -5022,7 +5030,8 @@ static int32_t RideGetTrackLength(const Ride& ride) RideId rideIndex = tileElement->AsTrack()->GetRideIndex(); - WindowBase* w = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + WindowBase* w = windowMgr->FindByClass(WindowClass::RideConstruction); if (w != nullptr && _rideConstructionState != RideConstructionState::State0 && _currentRideIndex == rideIndex) { RideConstructionInvalidateCurrentTrack(); diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 4554d912e2..3db9ed6e76 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideAudio.cpp b/src/openrct2/ride/RideAudio.cpp index a8f73ef962..6d0053d47c 100644 --- a/src/openrct2/ride/RideAudio.cpp +++ b/src/openrct2/ride/RideAudio.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideAudio.h b/src/openrct2/ride/RideAudio.h index 52e01452d0..45d170fe15 100644 --- a/src/openrct2/ride/RideAudio.h +++ b/src/openrct2/ride/RideAudio.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideColour.h b/src/openrct2/ride/RideColour.h index 9fe0d61d25..5f0164d889 100644 --- a/src/openrct2/ride/RideColour.h +++ b/src/openrct2/ride/RideColour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 3f79d2bd15..e97cc55fc0 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -119,11 +119,11 @@ static int32_t ride_check_if_construction_allowed(Ride& ride) static WindowBase* ride_create_or_find_construction_window(RideId rideIndex) { - auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); + auto* windowManager = GetContext()->GetUiContext()->GetWindowManager(); auto intent = Intent(INTENT_ACTION_RIDE_CONSTRUCTION_FOCUS); intent.PutExtra(INTENT_EXTRA_RIDE_ID, rideIndex.ToUnderlying()); windowManager->BroadcastIntent(intent); - return WindowFindByClass(WindowClass::RideConstruction); + return windowManager->FindByClass(WindowClass::RideConstruction); } /** @@ -238,7 +238,8 @@ void RideClearForConstruction(Ride& ride) ride.RemoveVehicles(); RideClearBlockedTiles(ride); - auto w = WindowFindByNumber(WindowClass::Ride, ride.id.ToUnderlying()); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto w = windowMgr->FindByNumber(WindowClass::Ride, ride.id.ToUnderlying()); if (w != nullptr) w->OnResize(); } @@ -832,13 +833,14 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement) auto stationIndex = entranceElement->GetStationIndex(); // Get or create construction window for ride - auto constructionWindow = WindowFindByClass(WindowClass::RideConstruction); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto constructionWindow = windowMgr->FindByClass(WindowClass::RideConstruction); if (constructionWindow == nullptr) { if (!RideInitialiseConstructionWindow(*ride)) return false; - constructionWindow = WindowFindByClass(WindowClass::RideConstruction); + constructionWindow = windowMgr->FindByClass(WindowClass::RideConstruction); if (constructionWindow == nullptr) return false; } diff --git a/src/openrct2/ride/RideConstruction.h b/src/openrct2/ride/RideConstruction.h index 960a4a5fc2..ae20ab7666 100644 --- a/src/openrct2/ride/RideConstruction.h +++ b/src/openrct2/ride/RideConstruction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideData.cpp b/src/openrct2/ride/RideData.cpp index bbba6640a4..388e0c1b3e 100644 --- a/src/openrct2/ride/RideData.cpp +++ b/src/openrct2/ride/RideData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 44ed9117e8..f6a41ae808 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideEntry.h b/src/openrct2/ride/RideEntry.h index 250714e74a..4e27256904 100644 --- a/src/openrct2/ride/RideEntry.h +++ b/src/openrct2/ride/RideEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideManager.cpp b/src/openrct2/ride/RideManager.cpp index ccedf66590..d843e278f7 100644 --- a/src/openrct2/ride/RideManager.cpp +++ b/src/openrct2/ride/RideManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideManager.hpp b/src/openrct2/ride/RideManager.hpp index 6b1a93d803..7f804e6f78 100644 --- a/src/openrct2/ride/RideManager.hpp +++ b/src/openrct2/ride/RideManager.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 2afa64f82a..de9127ae8a 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideRatings.h b/src/openrct2/ride/RideRatings.h index bcef677b30..4e2f93d87f 100644 --- a/src/openrct2/ride/RideRatings.h +++ b/src/openrct2/ride/RideRatings.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideStringIds.h b/src/openrct2/ride/RideStringIds.h index ab02567a71..13bcb7f2ea 100644 --- a/src/openrct2/ride/RideStringIds.h +++ b/src/openrct2/ride/RideStringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideTypes.h b/src/openrct2/ride/RideTypes.h index 00b67fc8e4..4fd21fe245 100644 --- a/src/openrct2/ride/RideTypes.h +++ b/src/openrct2/ride/RideTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/ShopItem.cpp b/src/openrct2/ride/ShopItem.cpp index 072f76a284..f344ef1cd6 100644 --- a/src/openrct2/ride/ShopItem.cpp +++ b/src/openrct2/ride/ShopItem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/ShopItem.h b/src/openrct2/ride/ShopItem.h index 3cbcca0b42..5990afd3dd 100644 --- a/src/openrct2/ride/ShopItem.h +++ b/src/openrct2/ride/ShopItem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Station.cpp b/src/openrct2/ride/Station.cpp index cbf738a361..5a45a47ba1 100644 --- a/src/openrct2/ride/Station.cpp +++ b/src/openrct2/ride/Station.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Station.h b/src/openrct2/ride/Station.h index b697f98e21..03beed4b68 100644 --- a/src/openrct2/ride/Station.h +++ b/src/openrct2/ride/Station.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 58a658fc8f..baa640f621 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index f3c1fd4fec..1ca131e13d 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 40cc304238..0743101054 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 56ff05c251..2b321faf3c 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 378ce5b961..42fbf78e24 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 129937d2b5..353d15a1bd 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignRepository.cpp b/src/openrct2/ride/TrackDesignRepository.cpp index 2dcfae317d..2abb5982c8 100644 --- a/src/openrct2/ride/TrackDesignRepository.cpp +++ b/src/openrct2/ride/TrackDesignRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignRepository.h b/src/openrct2/ride/TrackDesignRepository.h index 17aa3fdafc..02a9039d5a 100644 --- a/src/openrct2/ride/TrackDesignRepository.h +++ b/src/openrct2/ride/TrackDesignRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index cef4e8582c..b1373fd717 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 09bb7b9c76..33dda7dc56 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackPaint.h b/src/openrct2/ride/TrackPaint.h index 8213ad5ad3..2a5c41b9d2 100644 --- a/src/openrct2/ride/TrackPaint.h +++ b/src/openrct2/ride/TrackPaint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackStyle.cpp b/src/openrct2/ride/TrackStyle.cpp index 675d7a1797..1d926da03f 100644 --- a/src/openrct2/ride/TrackStyle.cpp +++ b/src/openrct2/ride/TrackStyle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackStyle.h b/src/openrct2/ride/TrackStyle.h index b95e556119..5d1495359e 100644 --- a/src/openrct2/ride/TrackStyle.h +++ b/src/openrct2/ride/TrackStyle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrainManager.cpp b/src/openrct2/ride/TrainManager.cpp index 78b11c9552..ea4d04af3a 100644 --- a/src/openrct2/ride/TrainManager.cpp +++ b/src/openrct2/ride/TrainManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrainManager.h b/src/openrct2/ride/TrainManager.h index c611735f38..654820f56f 100644 --- a/src/openrct2/ride/TrainManager.h +++ b/src/openrct2/ride/TrainManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 4941c9caf1..8dfa7c7be1 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -1185,7 +1185,11 @@ struct SoundIdVolume uint8_t volume; }; -static SoundIdVolume Sub6D7AC0( +/** + * + * rct2: 0x006D7AC0 + */ +static SoundIdVolume VehicleSoundFadeInOut( OpenRCT2::Audio::SoundId currentSoundId, uint8_t currentVolume, OpenRCT2::Audio::SoundId targetSoundId, uint8_t targetVolume) { @@ -4919,12 +4923,12 @@ void Vehicle::UpdateSound() } // Friction sound - auto soundIdVolume = Sub6D7AC0(sound1_id, sound1_volume, frictionSound.id, frictionSound.volume); + auto soundIdVolume = VehicleSoundFadeInOut(sound1_id, sound1_volume, frictionSound.id, frictionSound.volume); sound1_id = soundIdVolume.id; sound1_volume = soundIdVolume.volume; // Scream sound - soundIdVolume = Sub6D7AC0(sound2_id, sound2_volume, screamSound.id, screamSound.volume); + soundIdVolume = VehicleSoundFadeInOut(sound2_id, sound2_volume, screamSound.id, screamSound.volume); sound2_id = soundIdVolume.id; sound2_volume = soundIdVolume.volume; diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index b54284750d..e455fe763b 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleColour.h b/src/openrct2/ride/VehicleColour.h index a40e7472ce..2d9dcace22 100644 --- a/src/openrct2/ride/VehicleColour.h +++ b/src/openrct2/ride/VehicleColour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleData.cpp b/src/openrct2/ride/VehicleData.cpp index 8b92acb5ba..9bf2f47d27 100644 --- a/src/openrct2/ride/VehicleData.cpp +++ b/src/openrct2/ride/VehicleData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleData.h b/src/openrct2/ride/VehicleData.h index efede5084f..5a7c47c80a 100644 --- a/src/openrct2/ride/VehicleData.h +++ b/src/openrct2/ride/VehicleData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleRiderControl.cpp b/src/openrct2/ride/VehicleRiderControl.cpp index 907a03a4c9..da83a10319 100644 --- a/src/openrct2/ride/VehicleRiderControl.cpp +++ b/src/openrct2/ride/VehicleRiderControl.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleSubpositionData.cpp b/src/openrct2/ride/VehicleSubpositionData.cpp index fd979d5032..6056080f71 100644 --- a/src/openrct2/ride/VehicleSubpositionData.cpp +++ b/src/openrct2/ride/VehicleSubpositionData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -12654,8 +12654,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EA2A7, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EDF02, { - { 31, 16, 0, 16, 0, 0 }, { 30, 16, 0, 16, 0, 0 }, { 29, 16, 0, 16, 0, 0 }, { 28, 16, 0, 16, 0, 0 }, { 27, 16, 0, 16, 0, 0 }, - { 26, 16, 0, 16, 0, 0 }, { 25, 16, -1, 16, 0, 0 }, { 24, 16, -1, 16, 0, 0 }, { 23, 16, -1, 24, 33, 0 }, { 22, 16, -1, 24, 33, 0 }, + { 31, 16, 0, 0, 0, 0 }, { 30, 16, 0, 0, 0, 0 }, { 29, 16, 0, 0, 0, 0 }, { 28, 16, 0, 0, 0, 0 }, { 27, 16, 0, 0, 0, 0 }, + { 26, 16, 0, 0, 0, 0 }, { 25, 16, -1, 0, 0, 0 }, { 24, 16, -1, 0, 0, 0 }, { 23, 16, -1, 24, 33, 0 }, { 22, 16, -1, 24, 33, 0 }, { 21, 16, -1, 24, 33, 0 }, { 20, 16, -2, 24, 33, 0 }, { 19, 16, -2, 24, 33, 0 }, { 18, 16, -2, 24, 33, 0 }, { 17, 16, -3, 24, 33, 0 }, { 16, 16, -3, 24, 33, 0 }, { 15, 16, -4, 24, 33, 0 }, { 14, 16, -4, 24, 33, 0 }, { 13, 16, -5, 24, 33, 0 }, { 12, 16, -5, 24, 33, 0 }, { 11, 16, -6, 24, 33, 0 }, { 10, 16, -6, 24, 33, 0 }, { 9, 16, -7, 24, 33, 0 }, { 8, 16, -8, 24, 33, 0 }, { 7, 16, -9, 24, 32, 0 }, @@ -12677,8 +12677,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EDF02, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE26D, { - { 16, 0, 0, 24, 0, 0 }, { 16, 1, 0, 24, 0, 0 }, { 16, 2, 0, 24, 0, 0 }, { 16, 3, 0, 24, 0, 0 }, { 16, 4, 0, 24, 0, 0 }, - { 16, 5, 0, 24, 0, 0 }, { 16, 6, -1, 24, 0, 0 }, { 16, 7, -1, 24, 0, 0 }, { 16, 8, -1, 0, 33, 0 }, { 16, 9, -1, 0, 33, 0 }, + { 16, 0, 0, 8, 0, 0 }, { 16, 1, 0, 8, 0, 0 }, { 16, 2, 0, 8, 0, 0 }, { 16, 3, 0, 8, 0, 0 }, { 16, 4, 0, 8, 0, 0 }, + { 16, 5, 0, 8, 0, 0 }, { 16, 6, -1, 8, 0, 0 }, { 16, 7, -1, 8, 0, 0 }, { 16, 8, -1, 0, 33, 0 }, { 16, 9, -1, 0, 33, 0 }, { 16, 10, -1, 0, 33, 0 }, { 16, 11, -2, 0, 33, 0 }, { 16, 12, -2, 0, 33, 0 }, { 16, 13, -2, 0, 33, 0 }, { 16, 14, -3, 0, 33, 0 }, { 16, 15, -3, 0, 33, 0 }, { 16, 16, -4, 0, 33, 0 }, { 16, 17, -4, 0, 33, 0 }, { 16, 18, -5, 0, 33, 0 }, { 16, 19, -5, 0, 33, 0 }, { 16, 20, -6, 0, 33, 0 }, { 16, 21, -6, 0, 33, 0 }, { 16, 22, -7, 0, 33, 0 }, { 16, 23, -8, 0, 33, 0 }, { 16, 24, -9, 0, 32, 0 }, @@ -12700,8 +12700,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE26D, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE5D8, { - { 0, 16, 0, 0, 0, 0 }, { 1, 16, 0, 0, 0, 0 }, { 2, 16, 0, 0, 0, 0 }, { 3, 16, 0, 0, 0, 0 }, { 4, 16, 0, 0, 0, 0 }, - { 5, 16, 0, 0, 0, 0 }, { 6, 16, -1, 0, 0, 0 }, { 7, 16, -1, 0, 0, 0 }, { 8, 16, -1, 8, 33, 0 }, { 9, 16, -1, 8, 33, 0 }, + { 0, 16, 0, 16, 0, 0 }, { 1, 16, 0, 16, 0, 0 }, { 2, 16, 0, 16, 0, 0 }, { 3, 16, 0, 16, 0, 0 }, { 4, 16, 0, 16, 0, 0 }, + { 5, 16, 0, 16, 0, 0 }, { 6, 16, -1, 16, 0, 0 }, { 7, 16, -1, 16, 0, 0 }, { 8, 16, -1, 8, 33, 0 }, { 9, 16, -1, 8, 33, 0 }, { 10, 16, -1, 8, 33, 0 }, { 11, 16, -2, 8, 33, 0 }, { 12, 16, -2, 8, 33, 0 }, { 13, 16, -2, 8, 33, 0 }, { 14, 16, -3, 8, 33, 0 }, { 15, 16, -3, 8, 33, 0 }, { 16, 16, -4, 8, 33, 0 }, { 17, 16, -4, 8, 33, 0 }, { 18, 16, -5, 8, 33, 0 }, { 19, 16, -5, 8, 33, 0 }, { 20, 16, -6, 8, 33, 0 }, { 21, 16, -6, 8, 33, 0 }, { 22, 16, -7, 8, 33, 0 }, { 23, 16, -8, 8, 33, 0 }, { 24, 16, -9, 8, 32, 0 }, @@ -12723,8 +12723,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE5D8, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE943, { - { 16, 31, 0, 8, 0, 0 }, { 16, 30, 0, 8, 0, 0 }, { 16, 29, 0, 8, 0, 0 }, { 16, 28, 0, 8, 0, 0 }, { 16, 27, 0, 8, 0, 0 }, - { 16, 26, 0, 8, 0, 0 }, { 16, 25, -1, 8, 0, 0 }, { 16, 24, -1, 8, 0, 0 }, { 16, 23, -1, 16, 33, 0 }, { 16, 22, -1, 16, 33, 0 }, + { 16, 31, 0, 24, 0, 0 }, { 16, 30, 0, 24, 0, 0 }, { 16, 29, 0, 24, 0, 0 }, { 16, 28, 0, 24, 0, 0 }, { 16, 27, 0, 24, 0, 0 }, + { 16, 26, 0, 24, 0, 0 }, { 16, 25, -1, 24, 0, 0 }, { 16, 24, -1, 24, 0, 0 }, { 16, 23, -1, 16, 33, 0 }, { 16, 22, -1, 16, 33, 0 }, { 16, 21, -1, 16, 33, 0 }, { 16, 20, -2, 16, 33, 0 }, { 16, 19, -2, 16, 33, 0 }, { 16, 18, -2, 16, 33, 0 }, { 16, 17, -3, 16, 33, 0 }, { 16, 16, -3, 16, 33, 0 }, { 16, 15, -4, 16, 33, 0 }, { 16, 14, -4, 16, 33, 0 }, { 16, 13, -5, 16, 33, 0 }, { 16, 12, -5, 16, 33, 0 }, { 16, 11, -6, 16, 33, 0 }, { 16, 10, -6, 16, 33, 0 }, { 16, 9, -7, 16, 33, 0 }, { 16, 8, -8, 16, 33, 0 }, { 16, 7, -9, 16, 32, 0 }, @@ -12746,8 +12746,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EE943, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EECAE, { - { 31, 16, 0, 16, 0, 0 }, { 30, 16, 0, 16, 0, 0 }, { 29, 16, 0, 16, 0, 0 }, { 28, 16, 0, 16, 0, 0 }, { 27, 16, 0, 16, 0, 0 }, - { 26, 16, 0, 16, 0, 0 }, { 25, 16, -1, 16, 0, 0 }, { 24, 16, -1, 16, 0, 0 }, { 23, 16, -1, 8, 43, 0 }, { 22, 16, -1, 8, 43, 0 }, + { 31, 16, 0, 0, 0, 0 }, { 30, 16, 0, 0, 0, 0 }, { 29, 16, 0, 0, 0, 0 }, { 28, 16, 0, 0, 0, 0 }, { 27, 16, 0, 0, 0, 0 }, + { 26, 16, 0, 0, 0, 0 }, { 25, 16, -1, 0, 0, 0 }, { 24, 16, -1, 0, 0, 0 }, { 23, 16, -1, 8, 43, 0 }, { 22, 16, -1, 8, 43, 0 }, { 21, 16, -1, 8, 43, 0 }, { 20, 16, -2, 8, 43, 0 }, { 19, 16, -2, 8, 43, 0 }, { 18, 16, -2, 8, 43, 0 }, { 17, 16, -3, 8, 43, 0 }, { 16, 16, -3, 8, 43, 0 }, { 15, 16, -4, 8, 43, 0 }, { 14, 16, -4, 8, 43, 0 }, { 13, 16, -5, 8, 43, 0 }, { 12, 16, -5, 8, 43, 0 }, { 11, 16, -6, 8, 43, 0 }, { 10, 16, -6, 8, 43, 0 }, { 9, 16, -7, 8, 43, 0 }, { 8, 16, -8, 8, 43, 0 }, { 7, 16, -9, 8, 42, 0 }, @@ -12769,8 +12769,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EECAE, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EF019, { - { 16, 0, 0, 24, 0, 0 }, { 16, 1, 0, 24, 0, 0 }, { 16, 2, 0, 24, 0, 0 }, { 16, 3, 0, 24, 0, 0 }, { 16, 4, 0, 24, 0, 0 }, - { 16, 5, 0, 24, 0, 0 }, { 16, 6, -1, 24, 0, 0 }, { 16, 7, -1, 24, 0, 0 }, { 16, 8, -1, 16, 43, 0 }, { 16, 9, -1, 16, 43, 0 }, + { 16, 0, 0, 8, 0, 0 }, { 16, 1, 0, 8, 0, 0 }, { 16, 2, 0, 8, 0, 0 }, { 16, 3, 0, 8, 0, 0 }, { 16, 4, 0, 8, 0, 0 }, + { 16, 5, 0, 8, 0, 0 }, { 16, 6, -1, 8, 0, 0 }, { 16, 7, -1, 8, 0, 0 }, { 16, 8, -1, 16, 43, 0 }, { 16, 9, -1, 16, 43, 0 }, { 16, 10, -1, 16, 43, 0 }, { 16, 11, -2, 16, 43, 0 }, { 16, 12, -2, 16, 43, 0 }, { 16, 13, -2, 16, 43, 0 }, { 16, 14, -3, 16, 43, 0 }, { 16, 15, -3, 16, 43, 0 }, { 16, 16, -4, 16, 43, 0 }, { 16, 17, -4, 16, 43, 0 }, { 16, 18, -5, 16, 43, 0 }, { 16, 19, -5, 16, 43, 0 }, { 16, 20, -6, 16, 43, 0 }, { 16, 21, -6, 16, 43, 0 }, { 16, 22, -7, 16, 43, 0 }, { 16, 23, -8, 16, 43, 0 }, { 16, 24, -9, 16, 42, 0 }, @@ -12792,8 +12792,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EF019, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EF384, { - { 0, 16, 0, 0, 0, 0 }, { 1, 16, 0, 0, 0, 0 }, { 2, 16, 0, 0, 0, 0 }, { 3, 16, 0, 0, 0, 0 }, { 4, 16, 0, 0, 0, 0 }, - { 5, 16, 0, 0, 0, 0 }, { 6, 16, -1, 0, 0, 0 }, { 7, 16, -1, 0, 0, 0 }, { 8, 16, -1, 24, 43, 0 }, { 9, 16, -1, 24, 43, 0 }, + { 0, 16, 0, 16, 0, 0 }, { 1, 16, 0, 16, 0, 0 }, { 2, 16, 0, 16, 0, 0 }, { 3, 16, 0, 16, 0, 0 }, { 4, 16, 0, 16, 0, 0 }, + { 5, 16, 0, 16, 0, 0 }, { 6, 16, -1, 16, 0, 0 }, { 7, 16, -1, 16, 0, 0 }, { 8, 16, -1, 24, 43, 0 }, { 9, 16, -1, 24, 43, 0 }, { 10, 16, -1, 24, 43, 0 }, { 11, 16, -2, 24, 43, 0 }, { 12, 16, -2, 24, 43, 0 }, { 13, 16, -2, 24, 43, 0 }, { 14, 16, -3, 24, 43, 0 }, { 15, 16, -3, 24, 43, 0 }, { 16, 16, -4, 24, 43, 0 }, { 17, 16, -4, 24, 43, 0 }, { 18, 16, -5, 24, 43, 0 }, { 19, 16, -5, 24, 43, 0 }, { 20, 16, -6, 24, 43, 0 }, { 21, 16, -6, 24, 43, 0 }, { 22, 16, -7, 24, 43, 0 }, { 23, 16, -8, 24, 43, 0 }, { 24, 16, -9, 24, 42, 0 }, @@ -12815,8 +12815,8 @@ CREATE_VEHICLE_INFO(TrackVehicleInfo_8EF384, { }) CREATE_VEHICLE_INFO(TrackVehicleInfo_8EF6EF, { - { 16, 31, 0, 8, 0, 0 }, { 16, 30, 0, 8, 0, 0 }, { 16, 29, 0, 8, 0, 0 }, { 16, 28, 0, 8, 0, 0 }, { 16, 27, 0, 8, 0, 0 }, - { 16, 26, 0, 8, 0, 0 }, { 16, 25, -1, 8, 0, 0 }, { 16, 24, -1, 8, 0, 0 }, { 16, 23, -1, 0, 43, 0 }, { 16, 22, -1, 0, 43, 0 }, + { 16, 31, 0, 24, 0, 0 }, { 16, 30, 0, 24, 0, 0 }, { 16, 29, 0, 24, 0, 0 }, { 16, 28, 0, 24, 0, 0 }, { 16, 27, 0, 24, 0, 0 }, + { 16, 26, 0, 24, 0, 0 }, { 16, 25, -1, 24, 0, 0 }, { 16, 24, -1, 24, 0, 0 }, { 16, 23, -1, 0, 43, 0 }, { 16, 22, -1, 0, 43, 0 }, { 16, 21, -1, 0, 43, 0 }, { 16, 20, -2, 0, 43, 0 }, { 16, 19, -2, 0, 43, 0 }, { 16, 18, -2, 0, 43, 0 }, { 16, 17, -3, 0, 43, 0 }, { 16, 16, -3, 0, 43, 0 }, { 16, 15, -4, 0, 43, 0 }, { 16, 14, -4, 0, 43, 0 }, { 16, 13, -5, 0, 43, 0 }, { 16, 12, -5, 0, 43, 0 }, { 16, 11, -6, 0, 43, 0 }, { 16, 10, -6, 0, 43, 0 }, { 16, 9, -7, 0, 43, 0 }, { 16, 8, -8, 0, 43, 0 }, { 16, 7, -9, 0, 42, 0 }, diff --git a/src/openrct2/ride/VehicleSubpositionData.h b/src/openrct2/ride/VehicleSubpositionData.h index 9d63a61710..22a35ac56f 100644 --- a/src/openrct2/ride/VehicleSubpositionData.h +++ b/src/openrct2/ride/VehicleSubpositionData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h index 26ad8fa29f..2a419f5a4e 100644 --- a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h index 86e2673973..a3fae3e8ec 100644 --- a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h index d906f1892d..c47c240b6a 100644 --- a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h +++ b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h index 1c27dc42c6..d4911403a6 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h index fc5b849b88..d314775550 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h index 66565355f4..8418d1bb96 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h index 67d3f93ff4..c06a2337b6 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h index 0d4340abe8..bced45aa5e 100644 --- a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h index 36b32b7b6c..438a4c8c19 100644 --- a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h index b491b0b609..6db87ee73e 100644 --- a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/GigaCoaster.h b/src/openrct2/ride/rtd/coaster/GigaCoaster.h index 78608d7e3d..c98a8c4146 100644 --- a/src/openrct2/ride/rtd/coaster/GigaCoaster.h +++ b/src/openrct2/ride/rtd/coaster/GigaCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h index 7371c27bb1..681fd0f206 100644 --- a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HybridCoaster.h b/src/openrct2/ride/rtd/coaster/HybridCoaster.h index e3594715aa..a8075dfcf6 100644 --- a/src/openrct2/ride/rtd/coaster/HybridCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HybridCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HyperTwister.h b/src/openrct2/ride/rtd/coaster/HyperTwister.h index 79a6b05e56..4ba516f512 100644 --- a/src/openrct2/ride/rtd/coaster/HyperTwister.h +++ b/src/openrct2/ride/rtd/coaster/HyperTwister.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/Hypercoaster.h b/src/openrct2/ride/rtd/coaster/Hypercoaster.h index 0c59fb9765..56ba474505 100644 --- a/src/openrct2/ride/rtd/coaster/Hypercoaster.h +++ b/src/openrct2/ride/rtd/coaster/Hypercoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h index b22119f2a0..52b43ed7e1 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h index fc550bc707..a6f41853ee 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h index 767d9fd0ae..ac07104b6d 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h index 226b19cb32..ca9289c612 100644 --- a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h index 337cb542b0..25e37827f9 100644 --- a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h index a18b440d3b..8215adbb56 100644 --- a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h index 43cdcef2a1..8cb5072e28 100644 --- a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h index e84684e0f8..665895eb85 100644 --- a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MineRide.h b/src/openrct2/ride/rtd/coaster/MineRide.h index 1f256ac834..b866973bad 100644 --- a/src/openrct2/ride/rtd/coaster/MineRide.h +++ b/src/openrct2/ride/rtd/coaster/MineRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h index 0fd90078d2..e1f8401e6e 100644 --- a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h index 931d2f94b8..b3582ad5eb 100644 --- a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h index 0c19a7b4a2..98797eeba4 100644 --- a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h index f94ac7e868..a8f491103d 100644 --- a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h index 352b654ed1..33c53d3a30 100644 --- a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h index 14a4d09766..6a12a3a3fb 100644 --- a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h index 36b34ae408..4c416f1216 100644 --- a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h index e481dbbca8..cbb3e9ddf2 100644 --- a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h index c2abcd881b..41c2c46330 100644 --- a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h index 1cead178df..a03c8a27ea 100644 --- a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h index eb7301fe22..bbec980768 100644 --- a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h index 01dbf40f77..2cb7b54399 100644 --- a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/Steeplechase.h b/src/openrct2/ride/rtd/coaster/Steeplechase.h index 36955693cf..e030f7f17c 100644 --- a/src/openrct2/ride/rtd/coaster/Steeplechase.h +++ b/src/openrct2/ride/rtd/coaster/Steeplechase.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h index 8456cc9ee1..64f0914d2f 100644 --- a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h index 622325f11e..ca8cd094be 100644 --- a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h index 6881780d83..ce5007ceb5 100644 --- a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h +++ b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/VirginiaReel.h b/src/openrct2/ride/rtd/coaster/VirginiaReel.h index 068ea19d55..771dd8b2b5 100644 --- a/src/openrct2/ride/rtd/coaster/VirginiaReel.h +++ b/src/openrct2/ride/rtd/coaster/VirginiaReel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WaterCoaster.h b/src/openrct2/ride/rtd/coaster/WaterCoaster.h index 5fa266c2cc..63cc48b92d 100644 --- a/src/openrct2/ride/rtd/coaster/WaterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WaterCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h index acc046a7e0..858bdf3245 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h index f7edb3d03a..aafd893a56 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/CarRide.h b/src/openrct2/ride/rtd/gentle/CarRide.h index 27a10db3e3..e1353688b7 100644 --- a/src/openrct2/ride/rtd/gentle/CarRide.h +++ b/src/openrct2/ride/rtd/gentle/CarRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Circus.h b/src/openrct2/ride/rtd/gentle/Circus.h index 0629e3909a..d60e86ce31 100644 --- a/src/openrct2/ride/rtd/gentle/Circus.h +++ b/src/openrct2/ride/rtd/gentle/Circus.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/CrookedHouse.h b/src/openrct2/ride/rtd/gentle/CrookedHouse.h index 76c437cf94..7326e0b82f 100644 --- a/src/openrct2/ride/rtd/gentle/CrookedHouse.h +++ b/src/openrct2/ride/rtd/gentle/CrookedHouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Dodgems.h b/src/openrct2/ride/rtd/gentle/Dodgems.h index b4d7d1434b..ca02949e66 100644 --- a/src/openrct2/ride/rtd/gentle/Dodgems.h +++ b/src/openrct2/ride/rtd/gentle/Dodgems.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/FerrisWheel.h b/src/openrct2/ride/rtd/gentle/FerrisWheel.h index 6f28ee3d4d..27cd2c472e 100644 --- a/src/openrct2/ride/rtd/gentle/FerrisWheel.h +++ b/src/openrct2/ride/rtd/gentle/FerrisWheel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h index 1d03bb886d..47c22d65a1 100644 --- a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h +++ b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/GhostTrain.h b/src/openrct2/ride/rtd/gentle/GhostTrain.h index b024d31f48..0779dd7a4b 100644 --- a/src/openrct2/ride/rtd/gentle/GhostTrain.h +++ b/src/openrct2/ride/rtd/gentle/GhostTrain.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/HauntedHouse.h b/src/openrct2/ride/rtd/gentle/HauntedHouse.h index 8f23c12f83..974834de51 100644 --- a/src/openrct2/ride/rtd/gentle/HauntedHouse.h +++ b/src/openrct2/ride/rtd/gentle/HauntedHouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Maze.h b/src/openrct2/ride/rtd/gentle/Maze.h index 5aee9f40e3..a4019bd6a6 100644 --- a/src/openrct2/ride/rtd/gentle/Maze.h +++ b/src/openrct2/ride/rtd/gentle/Maze.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MerryGoRound.h b/src/openrct2/ride/rtd/gentle/MerryGoRound.h index 01868a1566..e755e6a307 100644 --- a/src/openrct2/ride/rtd/gentle/MerryGoRound.h +++ b/src/openrct2/ride/rtd/gentle/MerryGoRound.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MiniGolf.h b/src/openrct2/ride/rtd/gentle/MiniGolf.h index 56e18e3664..b94fc744e5 100644 --- a/src/openrct2/ride/rtd/gentle/MiniGolf.h +++ b/src/openrct2/ride/rtd/gentle/MiniGolf.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h index 1c8874dbb6..efdf0988ae 100644 --- a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h +++ b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MonorailCycles.h b/src/openrct2/ride/rtd/gentle/MonorailCycles.h index 77a72df846..a4ba5475f9 100644 --- a/src/openrct2/ride/rtd/gentle/MonorailCycles.h +++ b/src/openrct2/ride/rtd/gentle/MonorailCycles.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h index 6c343ab2ff..159d3fc87e 100644 --- a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h +++ b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/ObservationTower.h b/src/openrct2/ride/rtd/gentle/ObservationTower.h index 733972d897..91ddb97f70 100644 --- a/src/openrct2/ride/rtd/gentle/ObservationTower.h +++ b/src/openrct2/ride/rtd/gentle/ObservationTower.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/SpaceRings.h b/src/openrct2/ride/rtd/gentle/SpaceRings.h index c900648837..81d986b245 100644 --- a/src/openrct2/ride/rtd/gentle/SpaceRings.h +++ b/src/openrct2/ride/rtd/gentle/SpaceRings.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/SpiralSlide.h b/src/openrct2/ride/rtd/gentle/SpiralSlide.h index ba0044f657..5f500c39e0 100644 --- a/src/openrct2/ride/rtd/gentle/SpiralSlide.h +++ b/src/openrct2/ride/rtd/gentle/SpiralSlide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/CashMachine.h b/src/openrct2/ride/rtd/shops/CashMachine.h index 9fa3a652f6..e050699417 100644 --- a/src/openrct2/ride/rtd/shops/CashMachine.h +++ b/src/openrct2/ride/rtd/shops/CashMachine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/DrinkStall.h b/src/openrct2/ride/rtd/shops/DrinkStall.h index 84c1f75117..478054148c 100644 --- a/src/openrct2/ride/rtd/shops/DrinkStall.h +++ b/src/openrct2/ride/rtd/shops/DrinkStall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/FirstAid.h b/src/openrct2/ride/rtd/shops/FirstAid.h index cba81b698c..197fbb706b 100644 --- a/src/openrct2/ride/rtd/shops/FirstAid.h +++ b/src/openrct2/ride/rtd/shops/FirstAid.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/FoodStall.h b/src/openrct2/ride/rtd/shops/FoodStall.h index be50c792b1..261830017a 100644 --- a/src/openrct2/ride/rtd/shops/FoodStall.h +++ b/src/openrct2/ride/rtd/shops/FoodStall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/InformationKiosk.h b/src/openrct2/ride/rtd/shops/InformationKiosk.h index 3e1bf4ecb7..a408588d47 100644 --- a/src/openrct2/ride/rtd/shops/InformationKiosk.h +++ b/src/openrct2/ride/rtd/shops/InformationKiosk.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/Shop.h b/src/openrct2/ride/rtd/shops/Shop.h index 85e043f5b5..8d612d2d3b 100644 --- a/src/openrct2/ride/rtd/shops/Shop.h +++ b/src/openrct2/ride/rtd/shops/Shop.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/Toilets.h b/src/openrct2/ride/rtd/shops/Toilets.h index 36718a8dc1..d11f9d1bea 100644 --- a/src/openrct2/ride/rtd/shops/Toilets.h +++ b/src/openrct2/ride/rtd/shops/Toilets.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/3DCinema.h b/src/openrct2/ride/rtd/thrill/3DCinema.h index 9ff0cc6adb..415bb9ba1f 100644 --- a/src/openrct2/ride/rtd/thrill/3DCinema.h +++ b/src/openrct2/ride/rtd/thrill/3DCinema.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/Enterprise.h b/src/openrct2/ride/rtd/thrill/Enterprise.h index ef20f2e019..b65d76df53 100644 --- a/src/openrct2/ride/rtd/thrill/Enterprise.h +++ b/src/openrct2/ride/rtd/thrill/Enterprise.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/GoKarts.h b/src/openrct2/ride/rtd/thrill/GoKarts.h index 97149d4b5b..34cbd6f020 100644 --- a/src/openrct2/ride/rtd/thrill/GoKarts.h +++ b/src/openrct2/ride/rtd/thrill/GoKarts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h index 93b363aa3c..0da8aa4dc2 100644 --- a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h +++ b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/MagicCarpet.h b/src/openrct2/ride/rtd/thrill/MagicCarpet.h index 801792006e..9479432b54 100644 --- a/src/openrct2/ride/rtd/thrill/MagicCarpet.h +++ b/src/openrct2/ride/rtd/thrill/MagicCarpet.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/MotionSimulator.h b/src/openrct2/ride/rtd/thrill/MotionSimulator.h index 60f85994e9..41914794d6 100644 --- a/src/openrct2/ride/rtd/thrill/MotionSimulator.h +++ b/src/openrct2/ride/rtd/thrill/MotionSimulator.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/RotoDrop.h b/src/openrct2/ride/rtd/thrill/RotoDrop.h index 68058b784c..d78b93bf7a 100644 --- a/src/openrct2/ride/rtd/thrill/RotoDrop.h +++ b/src/openrct2/ride/rtd/thrill/RotoDrop.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h index 76b0eb07da..d796da1e41 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/SwingingShip.h b/src/openrct2/ride/rtd/thrill/SwingingShip.h index 3589f4ea98..2045040f10 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingShip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/TopSpin.h b/src/openrct2/ride/rtd/thrill/TopSpin.h index ca5e3b1e40..72db72f8bf 100644 --- a/src/openrct2/ride/rtd/thrill/TopSpin.h +++ b/src/openrct2/ride/rtd/thrill/TopSpin.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/Twist.h b/src/openrct2/ride/rtd/thrill/Twist.h index 18d66aefcc..6a36511e94 100644 --- a/src/openrct2/ride/rtd/thrill/Twist.h +++ b/src/openrct2/ride/rtd/thrill/Twist.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Chairlift.h b/src/openrct2/ride/rtd/transport/Chairlift.h index 64be1e7a1d..8951dcb3b0 100644 --- a/src/openrct2/ride/rtd/transport/Chairlift.h +++ b/src/openrct2/ride/rtd/transport/Chairlift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Lift.h b/src/openrct2/ride/rtd/transport/Lift.h index ceadc3ecff..4d68846a40 100644 --- a/src/openrct2/ride/rtd/transport/Lift.h +++ b/src/openrct2/ride/rtd/transport/Lift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/MiniatureRailway.h b/src/openrct2/ride/rtd/transport/MiniatureRailway.h index 8a7170dbbc..e9f21f853a 100644 --- a/src/openrct2/ride/rtd/transport/MiniatureRailway.h +++ b/src/openrct2/ride/rtd/transport/MiniatureRailway.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Monorail.h b/src/openrct2/ride/rtd/transport/Monorail.h index f43e289ab9..ca2203e32e 100644 --- a/src/openrct2/ride/rtd/transport/Monorail.h +++ b/src/openrct2/ride/rtd/transport/Monorail.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h index 67607db547..5091101229 100644 --- a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h +++ b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/BoatHire.h b/src/openrct2/ride/rtd/water/BoatHire.h index 945ffe8c74..95651806d5 100644 --- a/src/openrct2/ride/rtd/water/BoatHire.h +++ b/src/openrct2/ride/rtd/water/BoatHire.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/DinghySlide.h b/src/openrct2/ride/rtd/water/DinghySlide.h index 54a1d2cdc7..c7325934f1 100644 --- a/src/openrct2/ride/rtd/water/DinghySlide.h +++ b/src/openrct2/ride/rtd/water/DinghySlide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/LogFlume.h b/src/openrct2/ride/rtd/water/LogFlume.h index 8d10ae266d..097f7141a1 100644 --- a/src/openrct2/ride/rtd/water/LogFlume.h +++ b/src/openrct2/ride/rtd/water/LogFlume.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/RiverRafts.h b/src/openrct2/ride/rtd/water/RiverRafts.h index 4893773aac..02c48ee8c6 100644 --- a/src/openrct2/ride/rtd/water/RiverRafts.h +++ b/src/openrct2/ride/rtd/water/RiverRafts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/RiverRapids.h b/src/openrct2/ride/rtd/water/RiverRapids.h index 55a21d9be7..bd77e175d5 100644 --- a/src/openrct2/ride/rtd/water/RiverRapids.h +++ b/src/openrct2/ride/rtd/water/RiverRapids.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/SplashBoats.h b/src/openrct2/ride/rtd/water/SplashBoats.h index 8c33d02a2b..df0e2d23dd 100644 --- a/src/openrct2/ride/rtd/water/SplashBoats.h +++ b/src/openrct2/ride/rtd/water/SplashBoats.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/SubmarineRide.h b/src/openrct2/ride/rtd/water/SubmarineRide.h index f588d5f697..d72a72107c 100644 --- a/src/openrct2/ride/rtd/water/SubmarineRide.h +++ b/src/openrct2/ride/rtd/water/SubmarineRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 35936bddca..21f07a6a06 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/Scenario.h b/src/openrct2/scenario/Scenario.h index 97860f2247..1bbca1bdb0 100644 --- a/src/openrct2/scenario/Scenario.h +++ b/src/openrct2/scenario/Scenario.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index 6618cbf179..1c0d7d8610 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioRepository.h b/src/openrct2/scenario/ScenarioRepository.h index 617248a291..dbe2966050 100644 --- a/src/openrct2/scenario/ScenarioRepository.h +++ b/src/openrct2/scenario/ScenarioRepository.h @@ -1,6 +1,6 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioSources.cpp b/src/openrct2/scenario/ScenarioSources.cpp index 6065333618..3958e3a188 100644 --- a/src/openrct2/scenario/ScenarioSources.cpp +++ b/src/openrct2/scenario/ScenarioSources.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioSources.h b/src/openrct2/scenario/ScenarioSources.h index b6604a2908..dec700be8c 100644 --- a/src/openrct2/scenario/ScenarioSources.h +++ b/src/openrct2/scenario/ScenarioSources.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/Scene.cpp b/src/openrct2/scenes/Scene.cpp index af5d8fdc7f..b2ce9d9db3 100644 --- a/src/openrct2/scenes/Scene.cpp +++ b/src/openrct2/scenes/Scene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/Scene.h b/src/openrct2/scenes/Scene.h index 5515a3ff61..222e711de9 100644 --- a/src/openrct2/scenes/Scene.h +++ b/src/openrct2/scenes/Scene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/intro/IntroScene.cpp b/src/openrct2/scenes/intro/IntroScene.cpp index 82d0a1cb40..7bed84bb00 100644 --- a/src/openrct2/scenes/intro/IntroScene.cpp +++ b/src/openrct2/scenes/intro/IntroScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/intro/IntroScene.h b/src/openrct2/scenes/intro/IntroScene.h index 1dca97680c..1f292a666e 100644 --- a/src/openrct2/scenes/intro/IntroScene.h +++ b/src/openrct2/scenes/intro/IntroScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/preloader/PreloaderScene.cpp b/src/openrct2/scenes/preloader/PreloaderScene.cpp index 298757c8bf..ec1282129a 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.cpp +++ b/src/openrct2/scenes/preloader/PreloaderScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -54,7 +54,7 @@ void PreloaderScene::Tick() gInUpdateCode = false; - if (_jobs.CountPending() == 0 && _jobs.CountProcessing() == 0) + if (!_jobs.IsBusy()) { // Make sure the job is fully completed. _jobs.Join(); diff --git a/src/openrct2/scenes/preloader/PreloaderScene.h b/src/openrct2/scenes/preloader/PreloaderScene.h index 09324df707..0da7774f65 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.h +++ b/src/openrct2/scenes/preloader/PreloaderScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/End.cpp b/src/openrct2/scenes/title/Command/End.cpp index 7b92f68b8c..fe0a04bcb9 100644 --- a/src/openrct2/scenes/title/Command/End.cpp +++ b/src/openrct2/scenes/title/Command/End.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/End.h b/src/openrct2/scenes/title/Command/End.h index 030647da2d..9c8361faa8 100644 --- a/src/openrct2/scenes/title/Command/End.h +++ b/src/openrct2/scenes/title/Command/End.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/FollowEntity.cpp b/src/openrct2/scenes/title/Command/FollowEntity.cpp index 1b9623e7e1..88e6132d1b 100644 --- a/src/openrct2/scenes/title/Command/FollowEntity.cpp +++ b/src/openrct2/scenes/title/Command/FollowEntity.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/FollowEntity.h b/src/openrct2/scenes/title/Command/FollowEntity.h index 93d75e6791..221bf082f7 100644 --- a/src/openrct2/scenes/title/Command/FollowEntity.h +++ b/src/openrct2/scenes/title/Command/FollowEntity.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadPark.cpp b/src/openrct2/scenes/title/Command/LoadPark.cpp index b309eabb87..e9ae65f2da 100644 --- a/src/openrct2/scenes/title/Command/LoadPark.cpp +++ b/src/openrct2/scenes/title/Command/LoadPark.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadPark.h b/src/openrct2/scenes/title/Command/LoadPark.h index 8f09dfbae6..94b5a58103 100644 --- a/src/openrct2/scenes/title/Command/LoadPark.h +++ b/src/openrct2/scenes/title/Command/LoadPark.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadScenario.cpp b/src/openrct2/scenes/title/Command/LoadScenario.cpp index d8ef004265..c58f0d4cba 100644 --- a/src/openrct2/scenes/title/Command/LoadScenario.cpp +++ b/src/openrct2/scenes/title/Command/LoadScenario.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadScenario.h b/src/openrct2/scenes/title/Command/LoadScenario.h index a75b08f98a..3a9cb17bac 100644 --- a/src/openrct2/scenes/title/Command/LoadScenario.h +++ b/src/openrct2/scenes/title/Command/LoadScenario.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Restart.cpp b/src/openrct2/scenes/title/Command/Restart.cpp index 4e8bfcd83d..bb728894b1 100644 --- a/src/openrct2/scenes/title/Command/Restart.cpp +++ b/src/openrct2/scenes/title/Command/Restart.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Restart.h b/src/openrct2/scenes/title/Command/Restart.h index 6bb6467a4f..e13731e8c0 100644 --- a/src/openrct2/scenes/title/Command/Restart.h +++ b/src/openrct2/scenes/title/Command/Restart.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/RotateView.cpp b/src/openrct2/scenes/title/Command/RotateView.cpp index fe896a04e0..3914530d30 100644 --- a/src/openrct2/scenes/title/Command/RotateView.cpp +++ b/src/openrct2/scenes/title/Command/RotateView.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/RotateView.h b/src/openrct2/scenes/title/Command/RotateView.h index 637b795ae0..bbf9fda0af 100644 --- a/src/openrct2/scenes/title/Command/RotateView.h +++ b/src/openrct2/scenes/title/Command/RotateView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetLocation.cpp b/src/openrct2/scenes/title/Command/SetLocation.cpp index be14cd9124..61f50898d1 100644 --- a/src/openrct2/scenes/title/Command/SetLocation.cpp +++ b/src/openrct2/scenes/title/Command/SetLocation.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetLocation.h b/src/openrct2/scenes/title/Command/SetLocation.h index bd9e82699d..5937f98f38 100644 --- a/src/openrct2/scenes/title/Command/SetLocation.h +++ b/src/openrct2/scenes/title/Command/SetLocation.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetSpeed.cpp b/src/openrct2/scenes/title/Command/SetSpeed.cpp index d7c02a7ee4..350d4eb4bb 100644 --- a/src/openrct2/scenes/title/Command/SetSpeed.cpp +++ b/src/openrct2/scenes/title/Command/SetSpeed.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetSpeed.h b/src/openrct2/scenes/title/Command/SetSpeed.h index 4c33d2dcea..01dfb1e4c9 100644 --- a/src/openrct2/scenes/title/Command/SetSpeed.h +++ b/src/openrct2/scenes/title/Command/SetSpeed.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetZoom.cpp b/src/openrct2/scenes/title/Command/SetZoom.cpp index bbf7ead270..6436d7c5dc 100644 --- a/src/openrct2/scenes/title/Command/SetZoom.cpp +++ b/src/openrct2/scenes/title/Command/SetZoom.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetZoom.h b/src/openrct2/scenes/title/Command/SetZoom.h index 13c76b2494..369aa8214f 100644 --- a/src/openrct2/scenes/title/Command/SetZoom.h +++ b/src/openrct2/scenes/title/Command/SetZoom.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Wait.cpp b/src/openrct2/scenes/title/Command/Wait.cpp index a4f9ddcb4f..e2876ebc78 100644 --- a/src/openrct2/scenes/title/Command/Wait.cpp +++ b/src/openrct2/scenes/title/Command/Wait.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Wait.h b/src/openrct2/scenes/title/Command/Wait.h index 9f131633f9..50b8677f4b 100644 --- a/src/openrct2/scenes/title/Command/Wait.h +++ b/src/openrct2/scenes/title/Command/Wait.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index c2bf692cbf..8fdb7259ed 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleScene.h b/src/openrct2/scenes/title/TitleScene.h index 289a903ba6..24114d21d8 100644 --- a/src/openrct2/scenes/title/TitleScene.h +++ b/src/openrct2/scenes/title/TitleScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequence.cpp b/src/openrct2/scenes/title/TitleSequence.cpp index cfd59abbb8..ec9eb87896 100644 --- a/src/openrct2/scenes/title/TitleSequence.cpp +++ b/src/openrct2/scenes/title/TitleSequence.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequence.h b/src/openrct2/scenes/title/TitleSequence.h index 38bbdac5e1..b712907414 100644 --- a/src/openrct2/scenes/title/TitleSequence.h +++ b/src/openrct2/scenes/title/TitleSequence.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequenceManager.cpp b/src/openrct2/scenes/title/TitleSequenceManager.cpp index 53bef10d28..50ca4a3d9e 100644 --- a/src/openrct2/scenes/title/TitleSequenceManager.cpp +++ b/src/openrct2/scenes/title/TitleSequenceManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequenceManager.h b/src/openrct2/scenes/title/TitleSequenceManager.h index a0e5a86e03..58c1bfdb2e 100644 --- a/src/openrct2/scenes/title/TitleSequenceManager.h +++ b/src/openrct2/scenes/title/TitleSequenceManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequencePlayer.h b/src/openrct2/scenes/title/TitleSequencePlayer.h index 8f078fcaf1..1d2a4f64be 100644 --- a/src/openrct2/scenes/title/TitleSequencePlayer.h +++ b/src/openrct2/scenes/title/TitleSequencePlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Duktape.hpp b/src/openrct2/scripting/Duktape.hpp index dfcccfd85f..088b383d01 100644 --- a/src/openrct2/scripting/Duktape.hpp +++ b/src/openrct2/scripting/Duktape.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/HookEngine.cpp b/src/openrct2/scripting/HookEngine.cpp index 0b6d74f3fd..2a84cae624 100644 --- a/src/openrct2/scripting/HookEngine.cpp +++ b/src/openrct2/scripting/HookEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/HookEngine.h b/src/openrct2/scripting/HookEngine.h index 550af6e85a..16d703feb7 100644 --- a/src/openrct2/scripting/HookEngine.h +++ b/src/openrct2/scripting/HookEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/IconNames.hpp b/src/openrct2/scripting/IconNames.hpp index e9c6cd7bf3..0b8d529678 100644 --- a/src/openrct2/scripting/IconNames.hpp +++ b/src/openrct2/scripting/IconNames.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Plugin.cpp b/src/openrct2/scripting/Plugin.cpp index a54e60ead2..4c487364a3 100644 --- a/src/openrct2/scripting/Plugin.cpp +++ b/src/openrct2/scripting/Plugin.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Plugin.h b/src/openrct2/scripting/Plugin.h index 8b91b08d82..db89340f80 100644 --- a/src/openrct2/scripting/Plugin.h +++ b/src/openrct2/scripting/Plugin.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index b678ee3ff2..302cb27680 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index e05f1c2fa5..c549983024 100644 --- a/src/openrct2/scripting/ScriptEngine.h +++ b/src/openrct2/scripting/ScriptEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -46,7 +46,7 @@ namespace OpenRCT2 namespace OpenRCT2::Scripting { - static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 103; + static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 104; // Versions marking breaking changes. static constexpr int32_t API_VERSION_33_PEEP_DEPRECATION = 33; diff --git a/src/openrct2/scripting/bindings/entity/ScEntity.hpp b/src/openrct2/scripting/bindings/entity/ScEntity.hpp index 2ae3192d73..a2f23424a1 100644 --- a/src/openrct2/scripting/bindings/entity/ScEntity.hpp +++ b/src/openrct2/scripting/bindings/entity/ScEntity.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScGuest.cpp b/src/openrct2/scripting/bindings/entity/ScGuest.cpp index fb4fedc801..11277b9b6e 100644 --- a/src/openrct2/scripting/bindings/entity/ScGuest.cpp +++ b/src/openrct2/scripting/bindings/entity/ScGuest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -14,7 +14,8 @@ #include "../../../GameState.h" #include "../../../entity/Guest.h" #include "../../../localisation/Formatting.h" - #include "../../../peep/PeepAnimationData.h" + #include "../../../object/ObjectManager.h" + #include "../../../object/PeepAnimationsObject.h" #include "../../../peep/PeepAnimations.h" #include "../../../ride/RideEntry.h" @@ -867,7 +868,10 @@ namespace OpenRCT2::Scripting auto peep = GetPeep(); if (peep != nullptr) { - const auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, *animationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, *animationType); for (auto frameOffset : animationGroup.frame_offsets) { auto imageId = animationGroup.base_image; @@ -921,7 +925,10 @@ namespace OpenRCT2::Scripting else peep->AnimationFrameNum = offset; - const auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); peep->AnimationImageIdOffset = animationGroup.frame_offsets[offset]; peep->Invalidate(); peep->UpdateSpriteBoundingBox(); @@ -948,7 +955,10 @@ namespace OpenRCT2::Scripting auto* peep = GetGuest(); - const auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); auto length = animationGroup.frame_offsets.size(); offset %= length; @@ -969,7 +979,10 @@ namespace OpenRCT2::Scripting return 0; } - const auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); return static_cast(animationGroup.frame_offsets.size()); } diff --git a/src/openrct2/scripting/bindings/entity/ScGuest.hpp b/src/openrct2/scripting/bindings/entity/ScGuest.hpp index 69d36bcaf3..9ee593e220 100644 --- a/src/openrct2/scripting/bindings/entity/ScGuest.hpp +++ b/src/openrct2/scripting/bindings/entity/ScGuest.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScLitter.cpp b/src/openrct2/scripting/bindings/entity/ScLitter.cpp index d6cef1eecc..fbb6d9cc3e 100644 --- a/src/openrct2/scripting/bindings/entity/ScLitter.cpp +++ b/src/openrct2/scripting/bindings/entity/ScLitter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScLitter.hpp b/src/openrct2/scripting/bindings/entity/ScLitter.hpp index 4cd837cf08..2e5a4d5dd0 100644 --- a/src/openrct2/scripting/bindings/entity/ScLitter.hpp +++ b/src/openrct2/scripting/bindings/entity/ScLitter.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScParticle.cpp b/src/openrct2/scripting/bindings/entity/ScParticle.cpp index e65cad7033..13f89e779b 100644 --- a/src/openrct2/scripting/bindings/entity/ScParticle.cpp +++ b/src/openrct2/scripting/bindings/entity/ScParticle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScParticle.hpp b/src/openrct2/scripting/bindings/entity/ScParticle.hpp index 2798e281d6..3fd08873cb 100644 --- a/src/openrct2/scripting/bindings/entity/ScParticle.hpp +++ b/src/openrct2/scripting/bindings/entity/ScParticle.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScPeep.hpp b/src/openrct2/scripting/bindings/entity/ScPeep.hpp index 9846349944..bbabbfddd3 100644 --- a/src/openrct2/scripting/bindings/entity/ScPeep.hpp +++ b/src/openrct2/scripting/bindings/entity/ScPeep.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp index 45ee647aae..852c7ccad5 100644 --- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp +++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -13,7 +13,8 @@ #include "../../../entity/PatrolArea.h" #include "../../../entity/Staff.h" - #include "../../../peep/PeepAnimationData.h" + #include "../../../object/ObjectManager.h" + #include "../../../object/PeepAnimationsObject.h" #include "../../../peep/PeepAnimations.h" namespace OpenRCT2::Scripting @@ -37,6 +38,7 @@ namespace OpenRCT2::Scripting dukglue_register_property(ctx, &ScStaff::animationOffset_get, &ScStaff::animationOffset_set, "animationOffset"); dukglue_register_property(ctx, &ScStaff::animationLength_get, nullptr, "animationLength"); dukglue_register_method(ctx, &ScStaff::getAnimationSpriteIds, "getAnimationSpriteIds"); + dukglue_register_method(ctx, &ScStaff::getCostumeStrings, "getCostumeStrings"); } Staff* ScStaff::GetStaff() const @@ -75,22 +77,26 @@ namespace OpenRCT2::Scripting if (value == "handyman" && peep->AssignedStaffType != StaffType::Handyman) { peep->AssignedStaffType = StaffType::Handyman; - peep->AnimationGroup = PeepAnimationGroup::Handyman; + peep->AnimationObjectIndex = findPeepAnimationsIndexForType(AnimationPeepType::Handyman); + peep->AnimationGroup = PeepAnimationGroup::Normal; } else if (value == "mechanic" && peep->AssignedStaffType != StaffType::Mechanic) { peep->AssignedStaffType = StaffType::Mechanic; - peep->AnimationGroup = PeepAnimationGroup::Mechanic; + peep->AnimationObjectIndex = findPeepAnimationsIndexForType(AnimationPeepType::Mechanic); + peep->AnimationGroup = PeepAnimationGroup::Normal; } else if (value == "security" && peep->AssignedStaffType != StaffType::Security) { peep->AssignedStaffType = StaffType::Security; - peep->AnimationGroup = PeepAnimationGroup::Security; + peep->AnimationObjectIndex = findPeepAnimationsIndexForType(AnimationPeepType::Security); + peep->AnimationGroup = PeepAnimationGroup::Normal; } else if (value == "entertainer" && peep->AssignedStaffType != StaffType::Entertainer) { peep->AssignedStaffType = StaffType::Entertainer; - peep->AnimationGroup = PeepAnimationGroup::EntertainerPanda; + peep->AnimationObjectIndex = findPeepAnimationsIndexForType(AnimationPeepType::Entertainer); + peep->AnimationGroup = PeepAnimationGroup::Normal; } // Reset state to walking to prevent invalid actions from carrying over @@ -116,48 +122,11 @@ namespace OpenRCT2::Scripting } } - static const DukEnumMap availableHandymanCostumes({ - { "handyman", PeepAnimationGroup::Handyman }, - }); - - static const DukEnumMap availableMechanicCostumes({ - { "mechanic", PeepAnimationGroup::Mechanic }, - }); - - static const DukEnumMap availableSecurityCostumes({ - { "security1", PeepAnimationGroup::Security }, - { "security2", PeepAnimationGroup::SecurityAlt }, - }); - - static const DukEnumMap availableEntertainerCostumes({ - { "none", PeepAnimationGroup::Normal }, - { "panda", PeepAnimationGroup::EntertainerPanda }, - { "tiger", PeepAnimationGroup::EntertainerTiger }, - { "elephant", PeepAnimationGroup::EntertainerElephant }, - { "roman", PeepAnimationGroup::EntertainerRoman }, - { "gorilla", PeepAnimationGroup::EntertainerGorilla }, - { "snowman", PeepAnimationGroup::EntertainerSnowman }, - { "knight", PeepAnimationGroup::EntertainerKnight }, - { "astronaut", PeepAnimationGroup::EntertainerAstronaut }, - { "bandit", PeepAnimationGroup::EntertainerBandit }, - { "sheriff", PeepAnimationGroup::EntertainerSheriff }, - { "pirate", PeepAnimationGroup::EntertainerPirate }, - }); - - static const DukEnumMap& costumesByStaffType(StaffType staffType) + static const std::vector costumesByStaffType(StaffType staffType) { - switch (staffType) - { - case StaffType::Handyman: - return availableHandymanCostumes; - case StaffType::Mechanic: - return availableMechanicCostumes; - case StaffType::Security: - return availableSecurityCostumes; - case StaffType::Entertainer: - default: - return availableEntertainerCostumes; - } + // TODO: shouldn't get hit repeatedly, but cache these if (and only if) it's too slow + auto animPeepType = getAnimationPeepType(staffType); + return getAnimationGroupsByPeepType(animPeepType); } std::vector ScStaff::availableCostumes_get() const @@ -168,29 +137,45 @@ namespace OpenRCT2::Scripting { for (auto& costume : costumesByStaffType(peep->AssignedStaffType)) { - availableCostumes.push_back(std::string(costume.first)); + availableCostumes.push_back(std::string(costume.scriptName)); } } return availableCostumes; } + std::vector ScStaff::getCostumeStrings() const + { + auto peep = GetStaff(); + auto animPeepType = getAnimationPeepType(peep->AssignedStaffType); + + std::vector availableCostumes{}; + for (auto& costume : getAvailableCostumeStrings(animPeepType)) + { + availableCostumes.push_back(costume.friendlyName); + } + return availableCostumes; + } + std::string ScStaff::costume_get() const { auto peep = GetStaff(); if (peep == nullptr) { - return nullptr; + return ""; } - auto& availableCostumes = costumesByStaffType(peep->AssignedStaffType); + auto& costumes = costumesByStaffType(peep->AssignedStaffType); - auto costume = availableCostumes.find(peep->AnimationGroup); - if (costume != availableCostumes.end()) + auto costume = std::find_if(costumes.begin(), costumes.end(), [peep](auto& candidate) { + return candidate.objectId == peep->AnimationObjectIndex; + }); + + if (costume != costumes.end()) { - return std::string(costume->first); + return std::string(costume->scriptName); } else - return nullptr; + return ""; } void ScStaff::costume_set(const DukValue& value) @@ -203,30 +188,28 @@ namespace OpenRCT2::Scripting return; } - auto& availableCostumes = costumesByStaffType(peep->AssignedStaffType); + auto& costumes = costumesByStaffType(peep->AssignedStaffType); + auto costume = costumes.end(); // Split by type passed so as to not break old plugins if (value.type() == DukValue::Type::STRING) { - std::string newCostume = value.as_string(); - auto newAnimationGroup = availableCostumes.TryGet(newCostume); - if (newAnimationGroup != std::nullopt) - { - peep->AnimationGroup = *newAnimationGroup; - return; - } + costume = std::find_if(costumes.begin(), costumes.end(), [value](auto& candidate) { + return candidate.scriptName == value.as_string(); + }); } else if (value.type() == DukValue::Type::NUMBER) { - auto newAnimationGroup = PeepAnimationGroup(value.as_uint() + EnumValue(PeepAnimationGroup::EntertainerPanda)); - if (availableCostumes.find(newAnimationGroup) != availableCostumes.end()) - { - peep->AnimationGroup = newAnimationGroup; - return; - } + auto target = RCT12PeepAnimationGroup(value.as_uint() + EnumValue(RCT12PeepAnimationGroup::EntertainerPanda)); + costume = std::find_if( + costumes.begin(), costumes.end(), [target](auto& candidate) { return candidate.legacyPosition == target; }); } - throw DukException() << "Invalid costume for this staff member"; + if (costume == costumes.end()) + throw DukException() << "Invalid costume for this staff member"; + + peep->AnimationObjectIndex = costume->objectId; + peep->AnimationGroup = costume->group; } std::shared_ptr ScStaff::patrolArea_get() const @@ -304,7 +287,10 @@ namespace OpenRCT2::Scripting return spriteIds; } - auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, *animationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, *animationType); for (auto frameOffset : animationGroup.frame_offsets) { auto imageId = animationGroup.base_image; @@ -352,7 +338,10 @@ namespace OpenRCT2::Scripting else peep->AnimationFrameNum = offset; - auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); peep->AnimationImageIdOffset = animationGroup.frame_offsets[offset]; peep->Invalidate(); peep->UpdateSpriteBoundingBox(); @@ -379,7 +368,10 @@ namespace OpenRCT2::Scripting auto* peep = GetStaff(); - auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); auto length = animationGroup.frame_offsets.size(); offset %= length; @@ -402,7 +394,10 @@ namespace OpenRCT2::Scripting return 0; } - auto& animationGroup = GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); + auto& objManager = GetContext()->GetObjectManager(); + auto* animObj = objManager.GetLoadedObject(peep->AnimationObjectIndex); + + const auto& animationGroup = animObj->GetPeepAnimation(peep->AnimationGroup, peep->AnimationType); return static_cast(animationGroup.frame_offsets.size()); } diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.hpp b/src/openrct2/scripting/bindings/entity/ScStaff.hpp index 12bb57819f..e34e8bfe63 100644 --- a/src/openrct2/scripting/bindings/entity/ScStaff.hpp +++ b/src/openrct2/scripting/bindings/entity/ScStaff.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -60,6 +60,7 @@ namespace OpenRCT2::Scripting void colour_set(uint8_t value); std::vector availableCostumes_get() const; + std::vector getCostumeStrings() const; std::string costume_get() const; void costume_set(const DukValue& value); diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp index e93c137da2..72c89ca0e3 100644 --- a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.hpp b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp index 7955a162a7..bac257d814 100644 --- a/src/openrct2/scripting/bindings/entity/ScVehicle.hpp +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScCheats.hpp b/src/openrct2/scripting/bindings/game/ScCheats.hpp index 8419b63ee8..2040a311dd 100644 --- a/src/openrct2/scripting/bindings/game/ScCheats.hpp +++ b/src/openrct2/scripting/bindings/game/ScCheats.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScConfiguration.hpp b/src/openrct2/scripting/bindings/game/ScConfiguration.hpp index 699714a8e9..9997bb4aed 100644 --- a/src/openrct2/scripting/bindings/game/ScConfiguration.hpp +++ b/src/openrct2/scripting/bindings/game/ScConfiguration.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScConsole.hpp b/src/openrct2/scripting/bindings/game/ScConsole.hpp index 88d18d8ddc..90bc0847a2 100644 --- a/src/openrct2/scripting/bindings/game/ScConsole.hpp +++ b/src/openrct2/scripting/bindings/game/ScConsole.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScContext.hpp b/src/openrct2/scripting/bindings/game/ScContext.hpp index e1a28cbc92..2cb18eabd9 100644 --- a/src/openrct2/scripting/bindings/game/ScContext.hpp +++ b/src/openrct2/scripting/bindings/game/ScContext.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScDisposable.hpp b/src/openrct2/scripting/bindings/game/ScDisposable.hpp index 79e976afa7..1a9ba288a3 100644 --- a/src/openrct2/scripting/bindings/game/ScDisposable.hpp +++ b/src/openrct2/scripting/bindings/game/ScDisposable.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScPlugin.hpp b/src/openrct2/scripting/bindings/game/ScPlugin.hpp index 834f02472c..bddb5b6ab7 100644 --- a/src/openrct2/scripting/bindings/game/ScPlugin.hpp +++ b/src/openrct2/scripting/bindings/game/ScPlugin.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScProfiler.hpp b/src/openrct2/scripting/bindings/game/ScProfiler.hpp index 67ab448e15..205295ccb2 100644 --- a/src/openrct2/scripting/bindings/game/ScProfiler.hpp +++ b/src/openrct2/scripting/bindings/game/ScProfiler.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScNetwork.cpp b/src/openrct2/scripting/bindings/network/ScNetwork.cpp index bc3ac9b55e..89454fd070 100644 --- a/src/openrct2/scripting/bindings/network/ScNetwork.cpp +++ b/src/openrct2/scripting/bindings/network/ScNetwork.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScNetwork.hpp b/src/openrct2/scripting/bindings/network/ScNetwork.hpp index 07b14a84d4..18451b0168 100644 --- a/src/openrct2/scripting/bindings/network/ScNetwork.hpp +++ b/src/openrct2/scripting/bindings/network/ScNetwork.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayer.cpp b/src/openrct2/scripting/bindings/network/ScPlayer.cpp index 56362bce3f..905b11bbc0 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayer.cpp +++ b/src/openrct2/scripting/bindings/network/ScPlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayer.hpp b/src/openrct2/scripting/bindings/network/ScPlayer.hpp index 056dea1205..a1d3abcc63 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayer.hpp +++ b/src/openrct2/scripting/bindings/network/ScPlayer.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp b/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp index 454171c81a..4f8bb37d2a 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp +++ b/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp b/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp index b2854ec0f3..23410dc96c 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp +++ b/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScSocket.hpp b/src/openrct2/scripting/bindings/network/ScSocket.hpp index 1f9849993c..b17af3f277 100644 --- a/src/openrct2/scripting/bindings/network/ScSocket.hpp +++ b/src/openrct2/scripting/bindings/network/ScSocket.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp b/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp index 57fc102304..553d178a42 100644 --- a/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObject.hpp b/src/openrct2/scripting/bindings/object/ScObject.hpp index 08c68c705c..08122f567b 100644 --- a/src/openrct2/scripting/bindings/object/ScObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScObject.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp index b17ff1033d..eba95e2f42 100644 --- a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp +++ b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObjectManager.h b/src/openrct2/scripting/bindings/object/ScObjectManager.h index de3e3195e0..630beb1a4f 100644 --- a/src/openrct2/scripting/bindings/object/ScObjectManager.h +++ b/src/openrct2/scripting/bindings/object/ScObjectManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScClimate.hpp b/src/openrct2/scripting/bindings/world/ScClimate.hpp index 91d8c3d5fc..0a1fc18c8e 100644 --- a/src/openrct2/scripting/bindings/world/ScClimate.hpp +++ b/src/openrct2/scripting/bindings/world/ScClimate.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScDate.hpp b/src/openrct2/scripting/bindings/world/ScDate.hpp index 27bcafdc60..8b3c9ea7b3 100644 --- a/src/openrct2/scripting/bindings/world/ScDate.hpp +++ b/src/openrct2/scripting/bindings/world/ScDate.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScMap.cpp b/src/openrct2/scripting/bindings/world/ScMap.cpp index cf8482241f..d877196d95 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.cpp +++ b/src/openrct2/scripting/bindings/world/ScMap.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScMap.hpp b/src/openrct2/scripting/bindings/world/ScMap.hpp index 718f40115a..cf59c86622 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.hpp +++ b/src/openrct2/scripting/bindings/world/ScMap.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index a6a6af0d9d..54b4a75293 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScPark.hpp b/src/openrct2/scripting/bindings/world/ScPark.hpp index 250f50b6a4..42668dbe9c 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.hpp +++ b/src/openrct2/scripting/bindings/world/ScPark.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScParkMessage.cpp b/src/openrct2/scripting/bindings/world/ScParkMessage.cpp index 0ccd024262..81fc23fb03 100644 --- a/src/openrct2/scripting/bindings/world/ScParkMessage.cpp +++ b/src/openrct2/scripting/bindings/world/ScParkMessage.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScParkMessage.hpp b/src/openrct2/scripting/bindings/world/ScParkMessage.hpp index acfb0972a3..1e86c9cbbd 100644 --- a/src/openrct2/scripting/bindings/world/ScParkMessage.hpp +++ b/src/openrct2/scripting/bindings/world/ScParkMessage.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScResearch.cpp b/src/openrct2/scripting/bindings/world/ScResearch.cpp index 72795f74ab..49950eefb8 100644 --- a/src/openrct2/scripting/bindings/world/ScResearch.cpp +++ b/src/openrct2/scripting/bindings/world/ScResearch.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScResearch.hpp b/src/openrct2/scripting/bindings/world/ScResearch.hpp index dfdff928e6..1cdb611258 100644 --- a/src/openrct2/scripting/bindings/world/ScResearch.hpp +++ b/src/openrct2/scripting/bindings/world/ScResearch.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScScenario.hpp b/src/openrct2/scripting/bindings/world/ScScenario.hpp index 39d5f73eda..3cd3dafa0b 100644 --- a/src/openrct2/scripting/bindings/world/ScScenario.hpp +++ b/src/openrct2/scripting/bindings/world/ScScenario.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTile.cpp b/src/openrct2/scripting/bindings/world/ScTile.cpp index 77c5986355..94d4892bd5 100644 --- a/src/openrct2/scripting/bindings/world/ScTile.cpp +++ b/src/openrct2/scripting/bindings/world/ScTile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTile.hpp b/src/openrct2/scripting/bindings/world/ScTile.hpp index 7df486cfa0..158b5dc094 100644 --- a/src/openrct2/scripting/bindings/world/ScTile.hpp +++ b/src/openrct2/scripting/bindings/world/ScTile.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.cpp b/src/openrct2/scripting/bindings/world/ScTileElement.cpp index 60a848c1da..813114f3fd 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.cpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.hpp b/src/openrct2/scripting/bindings/world/ScTileElement.hpp index f91bbe6fa5..8e0953277d 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.hpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index 02b6748ab3..8732db0c23 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -975,6 +975,7 @@ enum : ImageIndex SPR_G2_ICON_PALETTE_INVISIBLE, SPR_G2_ICON_PALETTE_INVISIBLE_PRESSED, SPR_G2_FOLDER, + SPR_G2_PEEP_ANIMATIONS, // G2 Loading progress diff --git a/src/openrct2/ui/DummyUiContext.cpp b/src/openrct2/ui/DummyUiContext.cpp index 5dbb82f09b..46fd96144b 100644 --- a/src/openrct2/ui/DummyUiContext.cpp +++ b/src/openrct2/ui/DummyUiContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/DummyWindowManager.cpp b/src/openrct2/ui/DummyWindowManager.cpp index 29fde53974..ec19f7c25f 100644 --- a/src/openrct2/ui/DummyWindowManager.cpp +++ b/src/openrct2/ui/DummyWindowManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -69,6 +69,26 @@ namespace OpenRCT2::Ui { return nullptr; } + WindowBase* FindByClass(WindowClass cls) override + { + return nullptr; + } + WindowBase* FindByNumber(WindowClass cls, rct_windownumber number) override + { + return nullptr; + } + WindowBase* FindByNumber(WindowClass cls, EntityId id) override + { + return nullptr; + } + WindowBase* FindFromPoint(const ScreenCoordsXY& screenCoords) override + { + return nullptr; + } + WidgetIndex FindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) override + { + return -1; + } }; std::unique_ptr CreateDummyWindowManager() diff --git a/src/openrct2/ui/UiContext.h b/src/openrct2/ui/UiContext.h index 8ede8f67d5..3bf9885588 100644 --- a/src/openrct2/ui/UiContext.h +++ b/src/openrct2/ui/UiContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/WindowManager.h b/src/openrct2/ui/WindowManager.h index 3ed656ce39..7fb6ca2c2d 100644 --- a/src/openrct2/ui/WindowManager.h +++ b/src/openrct2/ui/WindowManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -42,6 +42,12 @@ namespace OpenRCT2::Ui virtual void SetMainView(const ScreenCoordsXY& viewPos, ZoomLevel zoom, int32_t rotation) = 0; virtual void UpdateMouseWheel() = 0; virtual WindowBase* GetOwner(const Viewport* viewport) = 0; + + virtual WindowBase* FindByClass(WindowClass cls) = 0; + virtual WindowBase* FindByNumber(WindowClass cls, rct_windownumber number) = 0; + virtual WindowBase* FindByNumber(WindowClass cls, EntityId id) = 0; + virtual WindowBase* FindFromPoint(const ScreenCoordsXY& screenCoords) = 0; + virtual WidgetIndex FindWidgetFromPoint(WindowBase& w, const ScreenCoordsXY& screenCoords) = 0; }; std::unique_ptr CreateDummyWindowManager(); diff --git a/src/openrct2/util/Util.cpp b/src/openrct2/util/Util.cpp index 28e44859c5..9653fcaf6d 100644 --- a/src/openrct2/util/Util.cpp +++ b/src/openrct2/util/Util.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/util/Util.h b/src/openrct2/util/Util.h index b7583001bf..ad668f2b32 100644 --- a/src/openrct2/util/Util.h +++ b/src/openrct2/util/Util.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/Intent.cpp b/src/openrct2/windows/Intent.cpp index 81c70ce823..9e7d9e3ca1 100644 --- a/src/openrct2/windows/Intent.cpp +++ b/src/openrct2/windows/Intent.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/Intent.h b/src/openrct2/windows/Intent.h index bafa710594..0f6068c608 100644 --- a/src/openrct2/windows/Intent.h +++ b/src/openrct2/windows/Intent.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/TileInspectorGlobals.h b/src/openrct2/windows/TileInspectorGlobals.h index 1e9559bf2d..f6ac60f759 100644 --- a/src/openrct2/windows/TileInspectorGlobals.h +++ b/src/openrct2/windows/TileInspectorGlobals.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index bb87ccee85..7df1c6f1b1 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Banner.h b/src/openrct2/world/Banner.h index 287e8cb172..49aeeadf33 100644 --- a/src/openrct2/world/Banner.h +++ b/src/openrct2/world/Banner.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index 869beac84a..ef143b7e45 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Climate.h b/src/openrct2/world/Climate.h index bf82d4daa8..04540673bd 100644 --- a/src/openrct2/world/Climate.h +++ b/src/openrct2/world/Climate.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 3d4e4e7585..8103ae5dd9 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index 0d68eb7759..eb6cb9e792 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 20da58468a..c4fbea6a45 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Entrance.h b/src/openrct2/world/Entrance.h index 9959c31ac4..c3e1f20e92 100644 --- a/src/openrct2/world/Entrance.h +++ b/src/openrct2/world/Entrance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index cd4c241316..78411fece1 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 295869d7a2..c7823488cf 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Location.hpp b/src/openrct2/world/Location.hpp index b60f606075..e7c8c6a617 100644 --- a/src/openrct2/world/Location.hpp +++ b/src/openrct2/world/Location.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -50,6 +50,11 @@ struct ScreenSize { return ScreenSize{ width * scalar, height * scalar }; } + + constexpr ScreenSize operator/(int32_t scalar) const + { + return ScreenSize{ width / scalar, height / scalar }; + } }; struct ScreenCoordsXY diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index e1e136b772..7ed0c325f3 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Map.h b/src/openrct2/world/Map.h index 754277302e..72c6df5761 100644 --- a/src/openrct2/world/Map.h +++ b/src/openrct2/world/Map.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index 58dee1417d..b9190fd2be 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapAnimation.h b/src/openrct2/world/MapAnimation.h index 4659d989c2..9d5e5d7e6c 100644 --- a/src/openrct2/world/MapAnimation.h +++ b/src/openrct2/world/MapAnimation.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapGen.cpp b/src/openrct2/world/MapGen.cpp deleted file mode 100644 index 163fc9d467..0000000000 --- a/src/openrct2/world/MapGen.cpp +++ /dev/null @@ -1,950 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#include "MapGen.h" - -#include "../Context.h" -#include "../Diagnostic.h" -#include "../Game.h" -#include "../GameState.h" -#include "../core/Guard.hpp" -#include "../core/Imaging.h" -#include "../core/String.hpp" -#include "../localisation/StringIds.h" -#include "../object/ObjectEntryManager.h" -#include "../object/ObjectList.h" -#include "../object/ObjectManager.h" -#include "../object/SmallSceneryEntry.h" -#include "../object/TerrainEdgeObject.h" -#include "../object/TerrainSurfaceObject.h" -#include "../platform/Platform.h" -#include "../util/Util.h" -#include "../world/tile_element/Slope.h" -#include "../world/tile_element/SmallSceneryElement.h" -#include "../world/tile_element/SurfaceElement.h" -#include "../world/tile_element/TileElement.h" -#include "Map.h" -#include "MapHelpers.h" -#include "Scenery.h" - -#include -#include -#include -#include - -using namespace OpenRCT2; - -#pragma region Height map struct - -static struct -{ - uint32_t width = 0; - uint32_t height = 0; - std::vector mono_bitmap; -} _heightMapData; - -#pragma endregion Height map struct - -#pragma region Random objects - -static constexpr const char* GrassTrees[] = { - // Dark - "rct2.scenery_small.tcf", // Caucasian Fir Tree - "rct2.scenery_small.trf", // Red Fir Tree - "rct2.scenery_small.trf2", // Red Fir Tree - "rct2.scenery_small.tsp", // Scots Pine Tree - "rct2.scenery_small.tmzp", // Montezuma Pine Tree - "rct2.scenery_small.tap", // Aleppo Pine Tree - "rct2.scenery_small.tcrp", // Corsican Pine Tree - "rct2.scenery_small.tbp", // Black Poplar Tree - - // Light - "rct2.scenery_small.tcl", // Cedar of Lebanon Tree - "rct2.scenery_small.tel", // European Larch Tree -}; - -static constexpr const char* DesertTrees[] = { - "rct2.scenery_small.tmp", // Monkey-Puzzle Tree - "rct2.scenery_small.thl", // Honey Locust Tree - "rct2.scenery_small.th1", // Canary Palm Tree - "rct2.scenery_small.th2", // Palm Tree - "rct2.scenery_small.tpm", // Palm Tree - "rct2.scenery_small.tropt1", // Tree - "rct2.scenery_small.tbc", // Cactus - "rct2.scenery_small.tsc", // Cactus -}; - -static constexpr const char* SnowTrees[] = { - "rct2.scenery_small.tcfs", // Snow-covered Caucasian Fir Tree - "rct2.scenery_small.tnss", // Snow-covered Norway Spruce Tree - "rct2.scenery_small.trf3", // Snow-covered Red Fir Tree - "rct2.scenery_small.trfs", // Snow-covered Red Fir Tree -}; - -#pragma endregion - -// Randomly chosen base terrains. We rarely want a whole map made out of chequerboard or rock. -static constexpr std::string_view BaseTerrain[] = { - "rct2.terrain_surface.grass", "rct2.terrain_surface.sand", "rct2.terrain_surface.sand_brown", - "rct2.terrain_surface.dirt", "rct2.terrain_surface.ice", -}; - -static void MapGenGenerateBlank(MapGenSettings* settings); -static void MapGenGenerateSimplex(MapGenSettings* settings); -static void MapGenGenerateFromHeightmapImage(MapGenSettings* settings); - -static void MapGenPlaceTrees(MapGenSettings* settings); -static void MapGenAddBeaches(MapGenSettings* settings); - -void MapGenGenerate(MapGenSettings* settings) -{ - // First, generate the height map - switch (settings->algorithm) - { - case MapGenAlgorithm::blank: - MapGenGenerateBlank(settings); - break; - - case MapGenAlgorithm::simplexNoise: - MapGenGenerateSimplex(settings); - break; - - case MapGenAlgorithm::heightmapImage: - MapGenGenerateFromHeightmapImage(settings); - break; - } - - // Add beaches? - if (settings->beaches) - MapGenAddBeaches(settings); - - // Place trees? - if (settings->trees) - MapGenPlaceTrees(settings); -} - -static void MapGenSetWaterLevel(int32_t waterLevel); -static void MapGenSmoothHeight(int32_t iterations); -static void MapGenSetHeight(MapGenSettings* settings); - -static float FractalNoise(int32_t x, int32_t y, float frequency, int32_t octaves, float lacunarity, float persistence); -static void MapGenSimplex(MapGenSettings* settings); - -static TileCoordsXY _heightSize; -static uint8_t* _height; - -static int32_t GetHeight(int32_t x, int32_t y) -{ - if (x >= 0 && y >= 0 && x < _heightSize.x && y < _heightSize.y) - return _height[x + y * _heightSize.x]; - - return 0; -} - -static void SetHeight(int32_t x, int32_t y, int32_t height) -{ - if (x >= 0 && y >= 0 && x < _heightSize.x && y < _heightSize.y) - _height[x + y * _heightSize.x] = height; -} - -static ObjectEntryIndex MapGenSurfaceTextureId(MapGenSettings* settings) -{ - auto& objectManager = OpenRCT2::GetContext()->GetObjectManager(); - - const auto selectedFloor = TerrainSurfaceObject::GetById(settings->landTexture); - std::string_view surfaceTexture = selectedFloor != nullptr ? selectedFloor->GetIdentifier() : ""; - - if (surfaceTexture.empty()) - { - std::vector availableTerrains; - std::copy_if(std::begin(BaseTerrain), std::end(BaseTerrain), std::back_inserter(availableTerrains), [&](auto terrain) { - return objectManager.GetLoadedObject(ObjectEntryDescriptor(terrain)) != nullptr; - }); - - if (availableTerrains.empty()) - // Fall back to the first available surface texture that is available in the park - surfaceTexture = TerrainSurfaceObject::GetById(0)->GetIdentifier(); - else - surfaceTexture = availableTerrains[UtilRand() % availableTerrains.size()]; - } - - auto surfaceTextureId = objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(surfaceTexture)); - return surfaceTextureId; -} - -static ObjectEntryIndex MapGenEdgeTextureId(MapGenSettings* settings, ObjectEntryIndex surfaceTextureId) -{ - auto& objectManager = OpenRCT2::GetContext()->GetObjectManager(); - - const auto selectedEdge = TerrainEdgeObject::GetById(settings->edgeTexture); - std::string_view edgeTexture = selectedEdge != nullptr ? selectedEdge->GetIdentifier() : ""; - - if (edgeTexture.empty()) - { - auto surfaceObject = objectManager.GetLoadedObject(ObjectType::TerrainSurface, surfaceTextureId); - auto surfaceTexture = surfaceObject->GetIdentifier(); - - // Base edge type on surface type - if (surfaceTexture == "rct2.terrain_surface.dirt") - edgeTexture = "rct2.terrain_edge.wood_red"; - else if (surfaceTexture == "rct2.terrain_surface.ice") - edgeTexture = "rct2.terrain_edge.ice"; - else - edgeTexture = "rct2.terrain_edge.rock"; - - // Fall back to the first available edge texture that is available in the park - if (objectManager.GetLoadedObject(ObjectEntryDescriptor(edgeTexture)) == nullptr) - edgeTexture = TerrainEdgeObject::GetById(0)->GetIdentifier(); - } - - auto edgeTextureId = objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(edgeTexture)); - return edgeTextureId; -} - -static void MapGenResetSurfaces(MapGenSettings* settings) -{ - MapClearAllElements(); - MapInit(settings->mapSize); - - const auto surfaceTextureId = MapGenSurfaceTextureId(settings); - const auto edgeTextureId = MapGenEdgeTextureId(settings, surfaceTextureId); - - for (auto y = 1; y < settings->mapSize.y - 1; y++) - { - for (auto x = 1; x < settings->mapSize.x - 1; x++) - { - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - if (surfaceElement != nullptr) - { - surfaceElement->SetSurfaceObjectIndex(surfaceTextureId); - surfaceElement->SetEdgeObjectIndex(edgeTextureId); - surfaceElement->BaseHeight = settings->heightmapLow; - surfaceElement->ClearanceHeight = settings->heightmapLow; - } - } - } -} - -static void MapGenGenerateBlank(MapGenSettings* settings) -{ - MapGenResetSurfaces(settings); - MapGenSetWaterLevel(settings->waterLevel); -} - -static void MapGenGenerateSimplex(MapGenSettings* settings) -{ - MapGenResetSurfaces(settings); - - // Create the temporary height map and initialise - auto& mapSize = settings->mapSize; - _heightSize = { mapSize.x * 2, mapSize.y * 2 }; - _height = new uint8_t[_heightSize.y * _heightSize.x]; - std::fill_n(_height, _heightSize.y * _heightSize.x, 0x00); - - MapGenSimplex(settings); - MapGenSmoothHeight(2 + (UtilRand() % 6)); - - // Set the game map to the height map - MapGenSetHeight(settings); - delete[] _height; - - if (settings->smoothTileEdges) - { - // Set the tile slopes so that there are no cliffs - while (MapSmooth(1, 1, mapSize.x - 1, mapSize.y - 1)) - { - } - } - - // Add the water - MapGenSetWaterLevel(settings->waterLevel); -} - -static void MapGenAddBeaches(MapGenSettings* settings) -{ - auto& objectManager = OpenRCT2::GetContext()->GetObjectManager(); - - // Figure out what beach texture to use - std::vector availableBeachTextures; - if (objectManager.GetLoadedObject(ObjectEntryDescriptor("rct2.terrain_surface.sand")) != nullptr) - availableBeachTextures.push_back("rct2.terrain_surface.sand"); - if (objectManager.GetLoadedObject(ObjectEntryDescriptor("rct2.terrain_surface.sand_brown")) != nullptr) - availableBeachTextures.push_back("rct2.terrain_surface.sand_brown"); - - if (availableBeachTextures.empty()) - return; - - std::string_view beachTexture = availableBeachTextures[UtilRand() % availableBeachTextures.size()]; - auto beachTextureId = objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(beachTexture)); - - // Add sandy beaches - const auto& mapSize = settings->mapSize; - for (auto y = 1; y < mapSize.y - 1; y++) - { - for (auto x = 1; x < mapSize.x - 1; x++) - { - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - - if (surfaceElement != nullptr && surfaceElement->BaseHeight < settings->waterLevel + 6) - surfaceElement->SetSurfaceObjectIndex(beachTextureId); - } - } -} - -static void MapGenPlaceTree(ObjectEntryIndex type, const CoordsXY& loc) -{ - auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(type); - if (sceneryEntry == nullptr) - { - return; - } - - int32_t surfaceZ = TileElementHeight(loc.ToTileCentre()); - - auto* sceneryElement = TileElementInsert({ loc, surfaceZ }, 0b1111); - Guard::Assert(sceneryElement != nullptr); - - sceneryElement->SetClearanceZ(surfaceZ + sceneryEntry->height); - sceneryElement->SetDirection(UtilRand() & 3); - sceneryElement->SetEntryIndex(type); - sceneryElement->SetAge(0); - sceneryElement->SetPrimaryColour(COLOUR_YELLOW); -} - -static bool MapGenSurfaceTakesGrassTrees(const TerrainSurfaceObject& surface) -{ - const auto& id = surface.GetIdentifier(); - return id == "rct2.terrain_surface.grass" || id == "rct2.terrain_surface.grass_clumps" || id == "rct2.terrain_surface.dirt"; -} - -static bool MapGenSurfaceTakesSandTrees(const TerrainSurfaceObject& surface) -{ - const auto& id = surface.GetIdentifier(); - return id == "rct2.terrain_surface.sand" || id == "rct2.terrain_surface.sand_brown" - || id == "rct2.terrain_surface.sand_red"; -} - -static bool MapGenSurfaceTakesSnowTrees(const TerrainSurfaceObject& surface) -{ - const auto& id = surface.GetIdentifier(); - return id == "rct2.terrain_surface.ice"; -} - -template -static bool TryFindTreeInList(std::string_view id, const T& treeList) -{ - for (size_t j = 0; j < std::size(treeList); j++) - { - if (treeList[j] == id) - return true; - } - return false; -} - -/** - * Randomly places a selection of preset trees on the map. Picks the right tree for the terrain it is placing it on. - */ -static void MapGenPlaceTrees(MapGenSettings* settings) -{ - std::vector grassTreeIds; - std::vector desertTreeIds; - std::vector snowTreeIds; - - for (auto i = 0u; i < getObjectEntryGroupCount(ObjectType::SmallScenery); i++) - { - auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); - auto entry = ObjectEntryGetObject(ObjectType::SmallScenery, i); - - if (sceneryEntry == nullptr) - continue; - - if (TryFindTreeInList(entry->GetIdentifier(), GrassTrees)) - { - grassTreeIds.push_back(i); - } - else if (TryFindTreeInList(entry->GetIdentifier(), DesertTrees)) - { - desertTreeIds.push_back(i); - } - else if (TryFindTreeInList(entry->GetIdentifier(), SnowTrees)) - { - snowTreeIds.push_back(i); - } - } - - // Place trees - float treeToLandRatio = static_cast(settings->treeToLandRatio) / 100.0f; - - auto& gameState = GetGameState(); - for (int32_t y = 1; y < gameState.MapSize.y - 1; y++) - { - for (int32_t x = 1; x < gameState.MapSize.x - 1; x++) - { - auto pos = CoordsXY{ x, y } * kCoordsXYStep; - auto* surfaceElement = MapGetSurfaceElementAt(pos); - if (surfaceElement == nullptr) - continue; - - // Don't place on water - if (surfaceElement->GetWaterHeight() > 0) - continue; - - if (settings->minTreeAltitude > surfaceElement->BaseHeight - || settings->maxTreeAltitude < surfaceElement->BaseHeight) - continue; - - // On sand surfaces, give the tile a score based on nearby water, to be used to determine whether to spawn - // vegetation - float oasisScore = 0.0f; - ObjectEntryIndex treeObjectEntryIndex = OBJECT_ENTRY_INDEX_NULL; - const auto& surfaceStyleObject = *TerrainSurfaceObject::GetById(surfaceElement->GetSurfaceObjectIndex()); - if (MapGenSurfaceTakesSandTrees(surfaceStyleObject)) - { - oasisScore = -0.5f; - constexpr auto maxOasisDistance = 4; - for (int32_t offsetY = -maxOasisDistance; offsetY <= maxOasisDistance; offsetY++) - { - for (int32_t offsetX = -maxOasisDistance; offsetX <= maxOasisDistance; offsetX++) - { - // Get map coord, clamped to the edges - const auto offset = CoordsXY{ offsetX * kCoordsXYStep, offsetY * kCoordsXYStep }; - auto neighbourPos = pos + offset; - neighbourPos.x = std::clamp(neighbourPos.x, kCoordsXYStep, kCoordsXYStep * (gameState.MapSize.x - 1)); - neighbourPos.y = std::clamp(neighbourPos.y, kCoordsXYStep, kCoordsXYStep * (gameState.MapSize.y - 1)); - - const auto neighboutSurface = MapGetSurfaceElementAt(neighbourPos); - if (neighboutSurface != nullptr && neighboutSurface->GetWaterHeight() > 0) - { - float distance = std::sqrt(offsetX * offsetX + offsetY * offsetY); - oasisScore += 0.5f / (maxOasisDistance * distance); - } - } - } - } - - // Use tree:land ratio except when near an oasis - constexpr static auto randModulo = 0xFFFF; - if (static_cast(UtilRand() & randModulo) / randModulo > std::max(treeToLandRatio, oasisScore)) - continue; - - // Use fractal noise to group tiles that are likely to spawn trees together - float noiseValue = FractalNoise(x, y, 0.025f, 2, 2.0f, 0.65f); - // Reduces the range to rarely stray further than 0.5 from the mean. - float noiseOffset = UtilRandNormalDistributed() * 0.25f; - if (noiseValue + oasisScore < noiseOffset) - continue; - - if (!grassTreeIds.empty() && MapGenSurfaceTakesGrassTrees(surfaceStyleObject)) - { - treeObjectEntryIndex = grassTreeIds[UtilRand() % grassTreeIds.size()]; - } - else if (!desertTreeIds.empty() && MapGenSurfaceTakesSandTrees(surfaceStyleObject)) - { - treeObjectEntryIndex = desertTreeIds[UtilRand() % desertTreeIds.size()]; - } - else if (!snowTreeIds.empty() && MapGenSurfaceTakesSnowTrees(surfaceStyleObject)) - { - treeObjectEntryIndex = snowTreeIds[UtilRand() % snowTreeIds.size()]; - } - - if (treeObjectEntryIndex != OBJECT_ENTRY_INDEX_NULL) - MapGenPlaceTree(treeObjectEntryIndex, pos); - } - } -} - -/** - * Sets each tile's water level to the specified water level if underneath that water level. - */ -static void MapGenSetWaterLevel(int32_t waterLevel) -{ - auto& gameState = GetGameState(); - for (int32_t y = 1; y < gameState.MapSize.y - 1; y++) - { - for (int32_t x = 1; x < gameState.MapSize.x - 1; x++) - { - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - if (surfaceElement != nullptr && surfaceElement->BaseHeight < waterLevel) - surfaceElement->SetWaterHeight(waterLevel * kCoordsZStep); - } - } -} - -/** - * Smooths the height map. - */ -static void MapGenSmoothHeight(int32_t iterations) -{ - int32_t i, x, y, xx, yy, avg; - int32_t arraySize = _heightSize.y * _heightSize.x * sizeof(uint8_t); - uint8_t* copyHeight = new uint8_t[arraySize]; - - for (i = 0; i < iterations; i++) - { - std::memcpy(copyHeight, _height, arraySize); - for (y = 1; y < _heightSize.y - 1; y++) - { - for (x = 1; x < _heightSize.x - 1; x++) - { - avg = 0; - for (yy = -1; yy <= 1; yy++) - { - for (xx = -1; xx <= 1; xx++) - { - avg += copyHeight[(y + yy) * _heightSize.x + (x + xx)]; - } - } - avg /= 9; - SetHeight(x, y, avg); - } - } - } - - delete[] copyHeight; -} - -/** - * Sets the height of the actual game map tiles to the height map. - */ -static void MapGenSetHeight(MapGenSettings* settings) -{ - int32_t x, y, heightX, heightY; - - for (y = 1; y < _heightSize.y / 2 - 1; y++) - { - for (x = 1; x < _heightSize.x / 2 - 1; x++) - { - heightX = x * 2; - heightY = y * 2; - - uint8_t q00 = GetHeight(heightX + 0, heightY + 0); - uint8_t q01 = GetHeight(heightX + 0, heightY + 1); - uint8_t q10 = GetHeight(heightX + 1, heightY + 0); - uint8_t q11 = GetHeight(heightX + 1, heightY + 1); - - uint8_t baseHeight = (q00 + q01 + q10 + q11) / 4; - - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - if (surfaceElement == nullptr) - continue; - surfaceElement->BaseHeight = std::max(2, baseHeight * 2); - - // If base height is below water level, lower it to create more natural shorelines - if (surfaceElement->BaseHeight >= 4 && surfaceElement->BaseHeight <= settings->waterLevel) - surfaceElement->BaseHeight -= 2; - - surfaceElement->ClearanceHeight = surfaceElement->BaseHeight; - - uint8_t currentSlope = surfaceElement->GetSlope(); - - if (q00 > baseHeight) - currentSlope |= kTileSlopeSCornerUp; - if (q01 > baseHeight) - currentSlope |= kTileSlopeWCornerUp; - if (q10 > baseHeight) - currentSlope |= kTileSlopeECornerUp; - if (q11 > baseHeight) - currentSlope |= kTileSlopeNCornerUp; - - surfaceElement->SetSlope(currentSlope); - } - } -} - -#pragma region Noise - -/** - * Simplex Noise Algorithm with Fractional Brownian Motion - * Based on: - * - https://code.google.com/p/simplexnoise/ - * - https://code.google.com/p/fractalterraingeneration/wiki/Fractional_Brownian_Motion - */ - -static float Generate(float x, float y); -static int32_t FastFloor(float x); -static float Grad(int32_t hash, float x, float y); - -static uint8_t perm[512]; - -static void NoiseRand() -{ - for (auto& i : perm) - { - i = UtilRand() & 0xFF; - } -} - -static float FractalNoise(int32_t x, int32_t y, float frequency, int32_t octaves, float lacunarity, float persistence) -{ - float total = 0.0f; - float amplitude = persistence; - for (int32_t i = 0; i < octaves; i++) - { - total += Generate(x * frequency, y * frequency) * amplitude; - frequency *= lacunarity; - amplitude *= persistence; - } - return total; -} - -static float Generate(float x, float y) -{ - const float F2 = 0.366025403f; // F2 = 0.5*(sqrt(3.0)-1.0) - const float G2 = 0.211324865f; // G2 = (3.0-sqrt(3.0))/6.0 - - float n0, n1, n2; // Noise contributions from the three corners - - // Skew the input space to determine which simplex cell we're in - float s = (x + y) * F2; // Hairy factor for 2D - float xs = x + s; - float ys = y + s; - int32_t i = FastFloor(xs); - int32_t j = FastFloor(ys); - - float t = static_cast(i + j) * G2; - float X0 = i - t; // Unskew the cell origin back to (x,y) space - float Y0 = j - t; - float x0 = x - X0; // The x,y distances from the cell origin - float y0 = y - Y0; - - // For the 2D case, the simplex shape is an equilateral triangle. - // Determine which simplex we are in. - int32_t i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords - if (x0 > y0) - { - i1 = 1; - j1 = 0; - } // lower triangle, XY order: (0,0)->(1,0)->(1,1) - else - { - i1 = 0; - j1 = 1; - } // upper triangle, YX order: (0,0)->(0,1)->(1,1) - - // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and - // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where - // c = (3-sqrt(3))/6 - - float x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords - float y1 = y0 - j1 + G2; - float x2 = x0 - 1.0f + 2.0f * G2; // Offsets for last corner in (x,y) unskewed coords - float y2 = y0 - 1.0f + 2.0f * G2; - - // Wrap the integer indices at 256, to avoid indexing perm[] out of bounds - int32_t ii = i % 256; - int32_t jj = j % 256; - - // Calculate the contribution from the three corners - float t0 = 0.5f - x0 * x0 - y0 * y0; - if (t0 < 0.0f) - { - n0 = 0.0f; - } - else - { - t0 *= t0; - n0 = t0 * t0 * Grad(perm[ii + perm[jj]], x0, y0); - } - - float t1 = 0.5f - x1 * x1 - y1 * y1; - if (t1 < 0.0f) - { - n1 = 0.0f; - } - else - { - t1 *= t1; - n1 = t1 * t1 * Grad(perm[ii + i1 + perm[jj + j1]], x1, y1); - } - - float t2 = 0.5f - x2 * x2 - y2 * y2; - if (t2 < 0.0f) - { - n2 = 0.0f; - } - else - { - t2 *= t2; - n2 = t2 * t2 * Grad(perm[ii + 1 + perm[jj + 1]], x2, y2); - } - - // Add contributions from each corner to get the final noise value. - // The result is scaled to return values in the interval [-1,1]. - return 40.0f * (n0 + n1 + n2); // TODO: The scale factor is preliminary! -} - -static int32_t FastFloor(float x) -{ - return (x > 0) ? (static_cast(x)) : ((static_cast(x)) - 1); -} - -static float Grad(int32_t hash, float x, float y) -{ - int32_t h = hash & 7; // Convert low 3 bits of hash code - float u = h < 4 ? x : y; // into 8 simple gradient directions, - float v = h < 4 ? y : x; // and compute the dot product with (x,y). - return ((h & 1) != 0 ? -u : u) + ((h & 2) != 0 ? -2.0f * v : 2.0f * v); -} - -static void MapGenSimplex(MapGenSettings* settings) -{ - float freq = settings->simplex_base_freq / 100.0f * (1.0f / _heightSize.x); - int32_t octaves = settings->simplex_octaves; - - int32_t low = settings->heightmapLow / 2; - int32_t high = settings->heightmapHigh / 2 - low; - - NoiseRand(); - for (int32_t y = 0; y < _heightSize.y; y++) - { - for (int32_t x = 0; x < _heightSize.x; x++) - { - float noiseValue = std::clamp(FractalNoise(x, y, freq, octaves, 2.0f, 0.65f), -1.0f, 1.0f); - float normalisedNoiseValue = (noiseValue + 1.0f) / 2.0f; - - SetHeight(x, y, low + static_cast(normalisedNoiseValue * high)); - } - } -} - -#pragma endregion - -#pragma region Heightmap - -/** - * Return the tile coordinate that matches the given pixel of a heightmap - */ -static TileCoordsXY MapgenHeightmapCoordToTileCoordsXY(uint32_t x, uint32_t y) -{ - // The height map does not include the empty tiles around the map, so we add 1. - return TileCoordsXY(static_cast(y + 1), static_cast(x + 1)); -} - -bool MapGenLoadHeightmapImage(const utf8* path) -{ - auto format = Imaging::GetImageFormatFromPath(path); - if (format == IMAGE_FORMAT::PNG) - { - // Promote to 32-bit - format = IMAGE_FORMAT::PNG_32; - } - - try - { - auto image = Imaging::ReadFromFile(path, format); - auto width = std::min(image.Width, kMaximumMapSizePractical); - auto height = std::min(image.Height, kMaximumMapSizePractical); - if (width != image.Width || height != image.Height) - { - ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_HEIGHT_MAP_TOO_BIG, {}); - } - - // Allocate memory for the height map values, one byte pixel - _heightMapData.mono_bitmap.resize(width * height); - _heightMapData.width = width; - _heightMapData.height = height; - - // Copy average RGB value to mono bitmap - constexpr auto numChannels = 4; - const auto pitch = image.Stride; - const auto pixels = image.Pixels.data(); - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - const auto red = pixels[x * numChannels + y * pitch]; - const auto green = pixels[x * numChannels + y * pitch + 1]; - const auto blue = pixels[x * numChannels + y * pitch + 2]; - _heightMapData.mono_bitmap[x + y * _heightMapData.width] = (red + green + blue) / 3; - } - } - return true; - } - catch (const std::exception& e) - { - switch (format) - { - case IMAGE_FORMAT::BITMAP: - ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_READING_BITMAP, {}); - break; - case IMAGE_FORMAT::PNG_32: - ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_READING_PNG, {}); - break; - default: - LOG_ERROR("Unable to load height map image: %s", e.what()); - break; - } - return false; - } -} - -/** - * Frees the memory used to store the selected height map - */ -void MapGenUnloadHeightmapImage() -{ - _heightMapData.mono_bitmap.clear(); - _heightMapData.width = 0; - _heightMapData.height = 0; -} - -/** - * Applies box blur to the surface N times - */ -static void MapGenSmoothHeightmap(std::vector& src, int32_t strength) -{ - // Create buffer to store one channel - std::vector dest(src.size()); - - for (int32_t i = 0; i < strength; i++) - { - // Calculate box blur value to all pixels of the surface - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - uint32_t heightSum = 0; - - // Loop over neighbour pixels, all of them have the same weight - for (int8_t offsetX = -1; offsetX <= 1; offsetX++) - { - for (int8_t offsetY = -1; offsetY <= 1; offsetY++) - { - // Clamp x and y so they stay within the image - // This assumes the height map is not tiled, and increases the weight of the edges - const int32_t readX = std::clamp(x + offsetX, 0, _heightMapData.width - 1); - const int32_t readY = std::clamp(y + offsetY, 0, _heightMapData.height - 1); - heightSum += src[readX + readY * _heightMapData.width]; - } - } - - // Take average - dest[x + y * _heightMapData.width] = heightSum / 9; - } - } - - // Now apply the blur to the source pixels - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - src[x + y * _heightMapData.width] = dest[x + y * _heightMapData.width]; - } - } - } -} - -static void MapGenGenerateFromHeightmapImage(MapGenSettings* settings) -{ - Guard::Assert(!_heightMapData.mono_bitmap.empty(), "No height map loaded"); - Guard::Assert(settings->heightmapHigh != settings->heightmapLow, "Low and high setting cannot be the same"); - - // Make a copy of the original height map that we can edit - auto dest = _heightMapData.mono_bitmap; - - // Get technical map size, +2 for the black tiles around the map - auto maxWidth = static_cast(_heightMapData.width + 2); - auto maxHeight = static_cast(_heightMapData.height + 2); - MapInit({ maxHeight, maxWidth }); - - if (settings->smooth_height_map) - { - MapGenSmoothHeightmap(dest, settings->smooth_strength); - } - - uint8_t maxValue = 255; - uint8_t minValue = 0; - - if (settings->normalize_height) - { - // Get highest and lowest pixel value - maxValue = 0; - minValue = 0xff; - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - uint8_t value = dest[x + y * _heightMapData.width]; - maxValue = std::max(maxValue, value); - minValue = std::min(minValue, value); - } - } - - if (minValue == maxValue) - { - ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_CANNOT_NORMALIZE, {}); - return; - } - } - - Guard::Assert(maxValue > minValue, "Input range is invalid"); - Guard::Assert(settings->heightmapHigh > settings->heightmapLow, "Output range is invalid"); - - const auto surfaceTextureId = MapGenSurfaceTextureId(settings); - const auto edgeTextureId = MapGenEdgeTextureId(settings, surfaceTextureId); - - const uint8_t rangeIn = maxValue - minValue; - const uint8_t rangeOut = (settings->heightmapHigh - settings->heightmapLow) * 2; - - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - // The x and y axis are flipped in the world, so this uses y for x and x for y. - auto tileCoords = MapgenHeightmapCoordToTileCoordsXY(x, y); - auto* const surfaceElement = MapGetSurfaceElementAt(tileCoords); - if (surfaceElement == nullptr) - continue; - - // Read value from bitmap, and convert its range - uint8_t value = dest[x + y * _heightMapData.width]; - value = static_cast(static_cast(value - minValue) / rangeIn * rangeOut) - + (settings->heightmapLow * 2); - surfaceElement->BaseHeight = value; - - // Floor to even number - surfaceElement->BaseHeight /= 2; - surfaceElement->BaseHeight *= 2; - surfaceElement->ClearanceHeight = surfaceElement->BaseHeight; - - // Set textures - surfaceElement->SetSurfaceObjectIndex(surfaceTextureId); - surfaceElement->SetEdgeObjectIndex(edgeTextureId); - - // Set water level - if (surfaceElement->BaseHeight < settings->waterLevel) - { - surfaceElement->SetWaterHeight(settings->waterLevel * kCoordsZStep); - } - } - } - - // Smooth tile edges - if (settings->smoothTileEdges) - { - // Keep smoothing the entire map until no tiles are changed anymore - while (true) - { - uint32_t numTilesChanged = 0; - for (uint32_t y = 0; y < _heightMapData.height; y++) - { - for (uint32_t x = 0; x < _heightMapData.width; x++) - { - auto tileCoords = MapgenHeightmapCoordToTileCoordsXY(x, y); - numTilesChanged += TileSmooth(tileCoords); - } - } - - if (numTilesChanged == 0) - break; - } - } -} - -#pragma endregion diff --git a/src/openrct2/world/MapGen.h b/src/openrct2/world/MapGen.h deleted file mode 100644 index 05c7456ae8..0000000000 --- a/src/openrct2/world/MapGen.h +++ /dev/null @@ -1,53 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#pragma once - -#include "../core/StringTypes.h" -#include "Location.hpp" - -enum class MapGenAlgorithm : uint8_t -{ - blank, - simplexNoise, - heightmapImage, -}; - -struct MapGenSettings -{ - // Base - MapGenAlgorithm algorithm = MapGenAlgorithm::blank; - TileCoordsXY mapSize{ 150, 150 }; - int32_t waterLevel = 6; - int32_t landTexture = 0; - int32_t edgeTexture = 0; - int32_t heightmapLow = 14; - int32_t heightmapHigh = 60; - bool smoothTileEdges = true; - - // Features (e.g. tree, rivers, lakes etc.) - bool trees = true; - int32_t treeToLandRatio = 25; - int32_t minTreeAltitude = 10; - int32_t maxTreeAltitude = 50; - bool beaches = true; - - // Simplex Noise Parameters - int32_t simplex_base_freq = 175; - int32_t simplex_octaves = 6; - - // Height map settings - bool smooth_height_map = true; - uint32_t smooth_strength = 1; - bool normalize_height = true; -}; - -void MapGenGenerate(MapGenSettings* settings); -bool MapGenLoadHeightmapImage(const utf8* path); -void MapGenUnloadHeightmapImage(); diff --git a/src/openrct2/world/MapHelpers.cpp b/src/openrct2/world/MapHelpers.cpp deleted file mode 100644 index d75cdf34f5..0000000000 --- a/src/openrct2/world/MapHelpers.cpp +++ /dev/null @@ -1,311 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#include "MapHelpers.h" - -#include "../world/tile_element/Slope.h" -#include "../world/tile_element/SurfaceElement.h" -#include "Map.h" - -#include - -static uint8_t GetBaseHeightOrZero(int32_t x, int32_t y) -{ - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - return surfaceElement != nullptr ? surfaceElement->BaseHeight : 0; -} - -/** - * Not perfect, this still leaves some particular tiles unsmoothed. - */ -int32_t MapSmooth(int32_t l, int32_t t, int32_t r, int32_t b) -{ - int32_t x, y, count, doubleCorner, raisedLand = 0; - uint8_t highest, cornerHeights[4]; - for (y = t; y < b; y++) - { - for (x = l; x < r; x++) - { - auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); - if (surfaceElement == nullptr) - continue; - surfaceElement->SetSlope(kTileSlopeFlat); - - // Raise to edge height - 2 - highest = surfaceElement->BaseHeight; - highest = std::max(highest, GetBaseHeightOrZero(x - 1, y + 0)); - highest = std::max(highest, GetBaseHeightOrZero(x + 1, y + 0)); - highest = std::max(highest, GetBaseHeightOrZero(x + 0, y - 1)); - highest = std::max(highest, GetBaseHeightOrZero(x + 0, y + 1)); - if (surfaceElement->BaseHeight < highest - 2) - { - raisedLand = 1; - surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 2; - } - - // Check corners - doubleCorner = -1; - cornerHeights[0] = GetBaseHeightOrZero(x - 1, y - 1); - cornerHeights[1] = GetBaseHeightOrZero(x + 1, y - 1); - cornerHeights[2] = GetBaseHeightOrZero(x + 1, y + 1); - cornerHeights[3] = GetBaseHeightOrZero(x - 1, y + 1); - highest = surfaceElement->BaseHeight; - for (std::size_t i = 0; i < std::size(cornerHeights); i++) - highest = std::max(highest, cornerHeights[i]); - - if (highest >= surfaceElement->BaseHeight + 4) - { - count = 0; - int32_t canCompensate = 1; - for (std::size_t i = 0; i < std::size(cornerHeights); i++) - if (cornerHeights[i] == highest) - { - count++; - - // Check if surrounding corners aren't too high. The current tile - // can't compensate for all the height differences anymore if it has - // the extra height slope. - int32_t highestOnLowestSide; - switch (i) - { - default: - case 0: - highestOnLowestSide = std::max(GetBaseHeightOrZero(x + 1, y), GetBaseHeightOrZero(x, y + 1)); - break; - case 1: - highestOnLowestSide = std::max(GetBaseHeightOrZero(x - 1, y), GetBaseHeightOrZero(x, y + 1)); - break; - case 2: - highestOnLowestSide = std::max(GetBaseHeightOrZero(x - 1, y), GetBaseHeightOrZero(x, y - 1)); - break; - case 3: - highestOnLowestSide = std::max(GetBaseHeightOrZero(x + 1, y), GetBaseHeightOrZero(x, y - 1)); - break; - } - - if (highestOnLowestSide > surfaceElement->BaseHeight) - { - surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highestOnLowestSide; - raisedLand = 1; - canCompensate = 0; - } - } - - if (count == 1 && canCompensate) - { - if (surfaceElement->BaseHeight < highest - 4) - { - surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 4; - raisedLand = 1; - } - if (cornerHeights[0] == highest && cornerHeights[2] <= cornerHeights[0] - 4) - doubleCorner = 0; - else if (cornerHeights[1] == highest && cornerHeights[3] <= cornerHeights[1] - 4) - doubleCorner = 1; - else if (cornerHeights[2] == highest && cornerHeights[0] <= cornerHeights[2] - 4) - doubleCorner = 2; - else if (cornerHeights[3] == highest && cornerHeights[1] <= cornerHeights[3] - 4) - doubleCorner = 3; - } - else - { - if (surfaceElement->BaseHeight < highest - 2) - { - surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 2; - raisedLand = 1; - } - } - } - - if (doubleCorner != -1) - { - uint8_t slope = surfaceElement->GetSlope() | kTileSlopeDiagonalFlag; - switch (doubleCorner) - { - case 0: - slope |= kTileSlopeNCornerDown; - break; - case 1: - slope |= kTileSlopeWCornerDown; - break; - case 2: - slope |= kTileSlopeSCornerDown; - break; - case 3: - slope |= kTileSlopeECornerDown; - break; - } - surfaceElement->SetSlope(slope); - } - else - { - uint8_t slope = surfaceElement->GetSlope(); - // Corners - auto surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y + 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeNCornerUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y + 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeWCornerUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y - 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeECornerUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y - 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeSCornerUp; - - // Sides - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y + 0 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeNESideUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y + 0 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeSWSideUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 0, y - 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeSESideUp; - - surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 0, y + 1 }); - if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) - slope |= kTileSlopeNWSideUp; - - // Raise - if (slope == kTileSlopeRaisedCornersMask) - { - slope = kTileSlopeFlat; - surfaceElement->BaseHeight = surfaceElement->ClearanceHeight += 2; - } - surfaceElement->SetSlope(slope); - } - } - } - - return raisedLand; -} - -/** - * Raises the corners based on the height offset of neighbour tiles. - * This does not change the base height, unless all corners have been raised. - * @returns 0 if no edits were made, 1 otherwise - */ -int32_t TileSmooth(const TileCoordsXY& tileCoords) -{ - auto* const surfaceElement = MapGetSurfaceElementAt(tileCoords); - if (surfaceElement == nullptr) - return 0; - - // +-----+-----+-----+ - // | W | NW | N | - // | 2 | 1 | 0 | - // +-----+-----+-----+ - // | SW | _ | NE | - // | 4 | | 3 | - // +-----+-----+-----+ - // | S | SE | E | - // | 7 | 6 | 5 | - // +-----+-----+-----+ - - union - { - int32_t baseheight[8]; - struct - { - int32_t N; - int32_t NW; - int32_t W; - int32_t NE; - int32_t SW; - int32_t E; - int32_t SE; - int32_t S; - }; - } neighbourHeightOffset = {}; - - // Find the neighbour base heights - for (int32_t index = 0, y_offset = -1; y_offset <= 1; y_offset++) - { - for (int32_t x_offset = -1; x_offset <= 1; x_offset++) - { - // Skip self - if (y_offset == 0 && x_offset == 0) - continue; - - // Get neighbour height. If the element is not valid (outside of map) assume the same height - auto* neighbourSurfaceElement = MapGetSurfaceElementAt(tileCoords + TileCoordsXY{ x_offset, y_offset }); - neighbourHeightOffset.baseheight[index] = neighbourSurfaceElement != nullptr ? neighbourSurfaceElement->BaseHeight - : surfaceElement->BaseHeight; - - // Make the height relative to the current surface element - neighbourHeightOffset.baseheight[index] -= surfaceElement->BaseHeight; - - index++; - } - } - - // Count number from the three tiles that is currently higher - int8_t thresholdW = std::clamp(neighbourHeightOffset.SW, 0, 1) + std::clamp(neighbourHeightOffset.W, 0, 1) - + std::clamp(neighbourHeightOffset.NW, 0, 1); - int8_t thresholdN = std::clamp(neighbourHeightOffset.NW, 0, 1) + std::clamp(neighbourHeightOffset.N, 0, 1) - + std::clamp(neighbourHeightOffset.NE, 0, 1); - int8_t thresholdE = std::clamp(neighbourHeightOffset.NE, 0, 1) + std::clamp(neighbourHeightOffset.E, 0, 1) - + std::clamp(neighbourHeightOffset.SE, 0, 1); - int8_t thresholdS = std::clamp(neighbourHeightOffset.SE, 0, 1) + std::clamp(neighbourHeightOffset.S, 0, 1) - + std::clamp(neighbourHeightOffset.SW, 0, 1); - - uint8_t slope = kTileSlopeFlat; - slope |= (thresholdW >= 1) ? SLOPE_W_THRESHOLD_FLAGS : 0; - slope |= (thresholdN >= 1) ? SLOPE_N_THRESHOLD_FLAGS : 0; - slope |= (thresholdE >= 1) ? SLOPE_E_THRESHOLD_FLAGS : 0; - slope |= (thresholdS >= 1) ? SLOPE_S_THRESHOLD_FLAGS : 0; - - // Set diagonal when three corners (one corner down) have been raised, and the middle one can be raised one more - if ((slope == kTileSlopeWCornerDown && neighbourHeightOffset.W >= 4) - || (slope == kTileSlopeSCornerDown && neighbourHeightOffset.S >= 4) - || (slope == kTileSlopeECornerDown && neighbourHeightOffset.E >= 4) - || (slope == kTileSlopeNCornerDown && neighbourHeightOffset.N >= 4)) - { - slope |= kTileSlopeDiagonalFlag; - } - - // Check if the calculated slope is the same already - uint8_t currentSlope = surfaceElement->GetSlope(); - if (currentSlope == slope) - { - return 0; - } - - if ((slope & kTileSlopeRaisedCornersMask) == kTileSlopeRaisedCornersMask) - { - // All corners are raised, raise the entire tile instead. - surfaceElement->SetSlope(kTileSlopeFlat); - surfaceElement->BaseHeight = (surfaceElement->ClearanceHeight += 2); - if (surfaceElement->GetWaterHeight() <= surfaceElement->GetBaseZ()) - { - surfaceElement->SetWaterHeight(0); - } - } - else - { - // Apply the slope to this tile - surfaceElement->SetSlope(slope); - - // Set correct clearance height - if (slope & kTileSlopeDiagonalFlag) - surfaceElement->ClearanceHeight = surfaceElement->BaseHeight + 4; - else if (slope & kTileSlopeRaisedCornersMask) - surfaceElement->ClearanceHeight = surfaceElement->BaseHeight + 2; - } - - return 1; -} diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index b8c2578205..9bfadec72d 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Park.h b/src/openrct2/world/Park.h index b3d2e21673..3a28c34e1f 100644 --- a/src/openrct2/world/Park.h +++ b/src/openrct2/world/Park.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/QuarterTile.cpp b/src/openrct2/world/QuarterTile.cpp index ff30d51b68..2235414771 100644 --- a/src/openrct2/world/QuarterTile.cpp +++ b/src/openrct2/world/QuarterTile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/QuarterTile.h b/src/openrct2/world/QuarterTile.h index 11cf0e8fae..150d746cb7 100644 --- a/src/openrct2/world/QuarterTile.h +++ b/src/openrct2/world/QuarterTile.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Scenery.cpp b/src/openrct2/world/Scenery.cpp index d5dc982134..4642a3fdc3 100644 --- a/src/openrct2/world/Scenery.cpp +++ b/src/openrct2/world/Scenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Scenery.h b/src/openrct2/world/Scenery.h index 5810257525..ec3bcbb98b 100644 --- a/src/openrct2/world/Scenery.h +++ b/src/openrct2/world/Scenery.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ScenerySelection.h b/src/openrct2/world/ScenerySelection.h index fda7f8133e..19573d7fb7 100644 --- a/src/openrct2/world/ScenerySelection.h +++ b/src/openrct2/world/ScenerySelection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/SurfaceData.cpp b/src/openrct2/world/SurfaceData.cpp index 85394bd05f..fb88659d73 100644 --- a/src/openrct2/world/SurfaceData.cpp +++ b/src/openrct2/world/SurfaceData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TileElementsView.h b/src/openrct2/world/TileElementsView.h index 9ce1754911..b389e54f82 100644 --- a/src/openrct2/world/TileElementsView.h +++ b/src/openrct2/world/TileElementsView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 63211571bd..843e74dc3b 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -16,6 +16,8 @@ #include "../ride/Station.h" #include "../ride/Track.h" #include "../ride/TrackData.h" +#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" #include "../windows/TileInspectorGlobals.h" #include "Banner.h" #include "Footpath.h" @@ -84,7 +86,8 @@ namespace OpenRCT2::TileInspector static bool IsTileSelected(const CoordsXY& loc) { // Return true for everyone who has the window open and tile selected - auto* window = WindowFindByClass(WindowClass::TileInspector); + auto* windowMgr = GetContext()->GetUiContext()->GetWindowManager(); + auto* window = windowMgr->FindByClass(WindowClass::TileInspector); return window != nullptr && loc == windowTileInspectorTile.ToCoordsXY(); } diff --git a/src/openrct2/world/TileInspector.h b/src/openrct2/world/TileInspector.h index d280ccb714..dc34da7ab9 100644 --- a/src/openrct2/world/TileInspector.h +++ b/src/openrct2/world/TileInspector.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TilePointerIndex.hpp b/src/openrct2/world/TilePointerIndex.hpp index 580aa48f6b..f0fbc535a2 100644 --- a/src/openrct2/world/TilePointerIndex.hpp +++ b/src/openrct2/world/TilePointerIndex.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Wall.cpp b/src/openrct2/world/Wall.cpp index 484518bfe5..c5bc23e6ac 100644 --- a/src/openrct2/world/Wall.cpp +++ b/src/openrct2/world/Wall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Wall.h b/src/openrct2/world/Wall.h index 1c4db9ca84..688aa54be1 100644 --- a/src/openrct2/world/Wall.h +++ b/src/openrct2/world/Wall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/HeightMap.hpp b/src/openrct2/world/map_generator/HeightMap.hpp new file mode 100644 index 0000000000..1ff4e86189 --- /dev/null +++ b/src/openrct2/world/map_generator/HeightMap.hpp @@ -0,0 +1,66 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../Location.hpp" + +#include +#include +#include +#include + +namespace OpenRCT2::World::MapGenerator +{ + class HeightMap + { + private: + std::vector _height; + + public: + const uint16_t width; + const uint16_t height; + + HeightMap(int32_t tagetWidth, int32_t targetHeight) + : _height(tagetWidth * targetHeight) + , width(tagetWidth) + , height(targetHeight) + { + } + + HeightMap(const HeightMap& heightMap) = default; + + uint8_t& operator[](TileCoordsXY pos) + { + assert(pos.x >= 0 || pos.y >= 0 || pos.x < width || pos.y < height); + return _height[pos.y * width + pos.x]; + } + + const uint8_t& operator[](TileCoordsXY pos) const + { + assert(pos.x >= 0 || pos.y >= 0 || pos.x < width || pos.y < height); + return _height[pos.y * width + pos.x]; + } + + uint8_t* data() + { + return _height.data(); + } + + const uint8_t* data() const + { + return _height.data(); + } + + size_t size() const + { + return _height.size(); + } + }; +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/MapGen.cpp b/src/openrct2/world/map_generator/MapGen.cpp new file mode 100644 index 0000000000..0ca7bcf66d --- /dev/null +++ b/src/openrct2/world/map_generator/MapGen.cpp @@ -0,0 +1,171 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "MapGen.h" + +#include "../../Context.h" +#include "../../GameState.h" +#include "../../object/ObjectManager.h" +#include "../../util/Util.h" +#include "../tile_element/Slope.h" +#include "../tile_element/SurfaceElement.h" +#include "HeightMap.hpp" +#include "PngTerrainGenerator.h" +#include "SimplexNoise.h" +#include "SurfaceSelection.h" +#include "TreePlacement.h" + +#include + +namespace OpenRCT2::World::MapGenerator +{ + static void generateBlankMap(Settings* settings); + + static void addBeaches(Settings* settings); + + void generate(Settings* settings) + { + // First, generate the height map + switch (settings->algorithm) + { + case Algorithm::blank: + generateBlankMap(settings); + break; + + case Algorithm::simplexNoise: + generateSimplexMap(settings); + break; + + case Algorithm::heightmapImage: + GenerateFromHeightmapImage(settings); + break; + } + + // Add beaches? + if (settings->beaches) + addBeaches(settings); + + // Place trees? + if (settings->trees) + placeTrees(settings); + } + + void resetSurfaces(Settings* settings) + { + MapClearAllElements(); + MapInit(settings->mapSize); + + const auto surfaceTextureId = generateSurfaceTextureId(settings); + const auto edgeTextureId = generateEdgeTextureId(settings, surfaceTextureId); + + for (auto y = 1; y < settings->mapSize.y - 1; y++) + { + for (auto x = 1; x < settings->mapSize.x - 1; x++) + { + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + if (surfaceElement != nullptr) + { + surfaceElement->SetSurfaceObjectIndex(surfaceTextureId); + surfaceElement->SetEdgeObjectIndex(edgeTextureId); + surfaceElement->BaseHeight = settings->heightmapLow; + surfaceElement->ClearanceHeight = settings->heightmapLow; + } + } + } + } + + static void generateBlankMap(Settings* settings) + { + resetSurfaces(settings); + setWaterLevel(settings->waterLevel); + } + + static void addBeaches(Settings* settings) + { + auto beachTextureId = generateBeachTextureId(); + if (beachTextureId == OBJECT_ENTRY_INDEX_NULL) + return; + + // Add sandy beaches + const auto& mapSize = settings->mapSize; + for (auto y = 1; y < mapSize.y - 1; y++) + { + for (auto x = 1; x < mapSize.x - 1; x++) + { + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + + if (surfaceElement != nullptr && surfaceElement->BaseHeight < settings->waterLevel + 6) + surfaceElement->SetSurfaceObjectIndex(beachTextureId); + } + } + } + + /** + * Sets each tile's water level to the specified water level if underneath that water level. + */ + void setWaterLevel(int32_t waterLevel) + { + auto& gameState = GetGameState(); + for (int32_t y = 1; y < gameState.MapSize.y - 1; y++) + { + for (int32_t x = 1; x < gameState.MapSize.x - 1; x++) + { + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + if (surfaceElement != nullptr && surfaceElement->BaseHeight < waterLevel) + surfaceElement->SetWaterHeight(waterLevel * kCoordsZStep); + } + } + } + + /** + * Sets the height of the actual game map tiles to the height map. + */ + void setMapHeight(Settings* settings, const HeightMap& heightMap) + { + for (auto y = 1; y < heightMap.height / 2 - 1; y++) + { + for (auto x = 1; x < heightMap.width / 2 - 1; x++) + { + auto heightX = x * 2; + auto heightY = y * 2; + + uint8_t q00 = heightMap[{ heightX + 0, heightY + 0 }]; + uint8_t q01 = heightMap[{ heightX + 0, heightY + 1 }]; + uint8_t q10 = heightMap[{ heightX + 1, heightY + 0 }]; + uint8_t q11 = heightMap[{ heightX + 1, heightY + 1 }]; + + uint8_t baseHeight = (q00 + q01 + q10 + q11) / 4; + + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + if (surfaceElement == nullptr) + continue; + surfaceElement->BaseHeight = std::max(2, baseHeight * 2); + + // If base height is below water level, lower it to create more natural shorelines + if (surfaceElement->BaseHeight >= 4 && surfaceElement->BaseHeight <= settings->waterLevel) + surfaceElement->BaseHeight -= 2; + + surfaceElement->ClearanceHeight = surfaceElement->BaseHeight; + + uint8_t currentSlope = surfaceElement->GetSlope(); + + if (q00 > baseHeight) + currentSlope |= kTileSlopeSCornerUp; + if (q01 > baseHeight) + currentSlope |= kTileSlopeWCornerUp; + if (q10 > baseHeight) + currentSlope |= kTileSlopeECornerUp; + if (q11 > baseHeight) + currentSlope |= kTileSlopeNCornerUp; + + surfaceElement->SetSlope(currentSlope); + } + } + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/MapGen.h b/src/openrct2/world/map_generator/MapGen.h new file mode 100644 index 0000000000..431a231217 --- /dev/null +++ b/src/openrct2/world/map_generator/MapGen.h @@ -0,0 +1,59 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../Location.hpp" + +namespace OpenRCT2::World::MapGenerator +{ + enum class Algorithm : uint8_t + { + blank, + simplexNoise, + heightmapImage, + }; + + struct Settings + { + // Base + Algorithm algorithm = Algorithm::blank; + TileCoordsXY mapSize{ 150, 150 }; + int32_t waterLevel = 6; + int32_t landTexture = 0; + int32_t edgeTexture = 0; + int32_t heightmapLow = 14; + int32_t heightmapHigh = 60; + bool smoothTileEdges = true; + + // Features (e.g. tree, rivers, lakes etc.) + bool trees = true; + int32_t treeToLandRatio = 25; + int32_t minTreeAltitude = 10; + int32_t maxTreeAltitude = 50; + bool beaches = true; + + // Simplex Noise Parameters + int32_t simplex_base_freq = 175; + int32_t simplex_octaves = 6; + + // Height map settings + bool smooth_height_map = true; + uint32_t smooth_strength = 1; + bool normalize_height = true; + }; + + class HeightMap; + + void generate(Settings* settings); + void resetSurfaces(Settings* settings); + void setWaterLevel(int32_t waterLevel); + void setMapHeight(Settings* settings, const HeightMap& heightMap); + +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/MapHelpers.cpp b/src/openrct2/world/map_generator/MapHelpers.cpp new file mode 100644 index 0000000000..f106418bce --- /dev/null +++ b/src/openrct2/world/map_generator/MapHelpers.cpp @@ -0,0 +1,319 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "MapHelpers.h" + +#include "../../world/tile_element/Slope.h" +#include "../../world/tile_element/SurfaceElement.h" +#include "../Map.h" + +#include + +namespace OpenRCT2::World::MapGenerator +{ + static uint8_t GetBaseHeightOrZero(int32_t x, int32_t y) + { + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + return surfaceElement != nullptr ? surfaceElement->BaseHeight : 0; + } + + /** + * Not perfect, this still leaves some particular tiles unsmoothed. + */ + int32_t MapSmooth(int32_t l, int32_t t, int32_t r, int32_t b) + { + int32_t x, y, count, doubleCorner, raisedLand = 0; + uint8_t highest, cornerHeights[4]; + for (y = t; y < b; y++) + { + for (x = l; x < r; x++) + { + auto surfaceElement = MapGetSurfaceElementAt(TileCoordsXY{ x, y }); + if (surfaceElement == nullptr) + continue; + surfaceElement->SetSlope(kTileSlopeFlat); + + // Raise to edge height - 2 + highest = surfaceElement->BaseHeight; + highest = std::max(highest, GetBaseHeightOrZero(x - 1, y + 0)); + highest = std::max(highest, GetBaseHeightOrZero(x + 1, y + 0)); + highest = std::max(highest, GetBaseHeightOrZero(x + 0, y - 1)); + highest = std::max(highest, GetBaseHeightOrZero(x + 0, y + 1)); + if (surfaceElement->BaseHeight < highest - 2) + { + raisedLand = 1; + surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 2; + } + + // Check corners + doubleCorner = -1; + cornerHeights[0] = GetBaseHeightOrZero(x - 1, y - 1); + cornerHeights[1] = GetBaseHeightOrZero(x + 1, y - 1); + cornerHeights[2] = GetBaseHeightOrZero(x + 1, y + 1); + cornerHeights[3] = GetBaseHeightOrZero(x - 1, y + 1); + highest = surfaceElement->BaseHeight; + for (std::size_t i = 0; i < std::size(cornerHeights); i++) + highest = std::max(highest, cornerHeights[i]); + + if (highest >= surfaceElement->BaseHeight + 4) + { + count = 0; + int32_t canCompensate = 1; + for (std::size_t i = 0; i < std::size(cornerHeights); i++) + if (cornerHeights[i] == highest) + { + count++; + + // Check if surrounding corners aren't too high. The current tile + // can't compensate for all the height differences anymore if it has + // the extra height slope. + int32_t highestOnLowestSide; + switch (i) + { + default: + case 0: + highestOnLowestSide = std::max( + GetBaseHeightOrZero(x + 1, y), GetBaseHeightOrZero(x, y + 1)); + break; + case 1: + highestOnLowestSide = std::max( + GetBaseHeightOrZero(x - 1, y), GetBaseHeightOrZero(x, y + 1)); + break; + case 2: + highestOnLowestSide = std::max( + GetBaseHeightOrZero(x - 1, y), GetBaseHeightOrZero(x, y - 1)); + break; + case 3: + highestOnLowestSide = std::max( + GetBaseHeightOrZero(x + 1, y), GetBaseHeightOrZero(x, y - 1)); + break; + } + + if (highestOnLowestSide > surfaceElement->BaseHeight) + { + surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highestOnLowestSide; + raisedLand = 1; + canCompensate = 0; + } + } + + if (count == 1 && canCompensate) + { + if (surfaceElement->BaseHeight < highest - 4) + { + surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 4; + raisedLand = 1; + } + if (cornerHeights[0] == highest && cornerHeights[2] <= cornerHeights[0] - 4) + doubleCorner = 0; + else if (cornerHeights[1] == highest && cornerHeights[3] <= cornerHeights[1] - 4) + doubleCorner = 1; + else if (cornerHeights[2] == highest && cornerHeights[0] <= cornerHeights[2] - 4) + doubleCorner = 2; + else if (cornerHeights[3] == highest && cornerHeights[1] <= cornerHeights[3] - 4) + doubleCorner = 3; + } + else + { + if (surfaceElement->BaseHeight < highest - 2) + { + surfaceElement->BaseHeight = surfaceElement->ClearanceHeight = highest - 2; + raisedLand = 1; + } + } + } + + if (doubleCorner != -1) + { + uint8_t slope = surfaceElement->GetSlope() | kTileSlopeDiagonalFlag; + switch (doubleCorner) + { + case 0: + slope |= kTileSlopeNCornerDown; + break; + case 1: + slope |= kTileSlopeWCornerDown; + break; + case 2: + slope |= kTileSlopeSCornerDown; + break; + case 3: + slope |= kTileSlopeECornerDown; + break; + } + surfaceElement->SetSlope(slope); + } + else + { + uint8_t slope = surfaceElement->GetSlope(); + // Corners + auto surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y + 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeNCornerUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y + 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeWCornerUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y - 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeECornerUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y - 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeSCornerUp; + + // Sides + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 1, y + 0 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeNESideUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x - 1, y + 0 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeSWSideUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 0, y - 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeSESideUp; + + surfaceElement2 = MapGetSurfaceElementAt(TileCoordsXY{ x + 0, y + 1 }); + if (surfaceElement2 != nullptr && surfaceElement2->BaseHeight > surfaceElement->BaseHeight) + slope |= kTileSlopeNWSideUp; + + // Raise + if (slope == kTileSlopeRaisedCornersMask) + { + slope = kTileSlopeFlat; + surfaceElement->BaseHeight = surfaceElement->ClearanceHeight += 2; + } + surfaceElement->SetSlope(slope); + } + } + } + + return raisedLand; + } + + /** + * Raises the corners based on the height offset of neighbour tiles. + * This does not change the base height, unless all corners have been raised. + * @returns 0 if no edits were made, 1 otherwise + */ + int32_t TileSmooth(const TileCoordsXY& tileCoords) + { + auto* const surfaceElement = MapGetSurfaceElementAt(tileCoords); + if (surfaceElement == nullptr) + return 0; + + // +-----+-----+-----+ + // | W | NW | N | + // | 2 | 1 | 0 | + // +-----+-----+-----+ + // | SW | _ | NE | + // | 4 | | 3 | + // +-----+-----+-----+ + // | S | SE | E | + // | 7 | 6 | 5 | + // +-----+-----+-----+ + + union + { + int32_t baseheight[8]; + struct + { + int32_t N; + int32_t NW; + int32_t W; + int32_t NE; + int32_t SW; + int32_t E; + int32_t SE; + int32_t S; + }; + } neighbourHeightOffset = {}; + + // Find the neighbour base heights + for (int32_t index = 0, y_offset = -1; y_offset <= 1; y_offset++) + { + for (int32_t x_offset = -1; x_offset <= 1; x_offset++) + { + // Skip self + if (y_offset == 0 && x_offset == 0) + continue; + + // Get neighbour height. If the element is not valid (outside of map) assume the same height + auto* neighbourSurfaceElement = MapGetSurfaceElementAt(tileCoords + TileCoordsXY{ x_offset, y_offset }); + neighbourHeightOffset.baseheight[index] = neighbourSurfaceElement != nullptr + ? neighbourSurfaceElement->BaseHeight + : surfaceElement->BaseHeight; + + // Make the height relative to the current surface element + neighbourHeightOffset.baseheight[index] -= surfaceElement->BaseHeight; + + index++; + } + } + + // Count number from the three tiles that is currently higher + int8_t thresholdW = std::clamp(neighbourHeightOffset.SW, 0, 1) + std::clamp(neighbourHeightOffset.W, 0, 1) + + std::clamp(neighbourHeightOffset.NW, 0, 1); + int8_t thresholdN = std::clamp(neighbourHeightOffset.NW, 0, 1) + std::clamp(neighbourHeightOffset.N, 0, 1) + + std::clamp(neighbourHeightOffset.NE, 0, 1); + int8_t thresholdE = std::clamp(neighbourHeightOffset.NE, 0, 1) + std::clamp(neighbourHeightOffset.E, 0, 1) + + std::clamp(neighbourHeightOffset.SE, 0, 1); + int8_t thresholdS = std::clamp(neighbourHeightOffset.SE, 0, 1) + std::clamp(neighbourHeightOffset.S, 0, 1) + + std::clamp(neighbourHeightOffset.SW, 0, 1); + + uint8_t slope = kTileSlopeFlat; + slope |= (thresholdW >= 1) ? SLOPE_W_THRESHOLD_FLAGS : 0; + slope |= (thresholdN >= 1) ? SLOPE_N_THRESHOLD_FLAGS : 0; + slope |= (thresholdE >= 1) ? SLOPE_E_THRESHOLD_FLAGS : 0; + slope |= (thresholdS >= 1) ? SLOPE_S_THRESHOLD_FLAGS : 0; + + // Set diagonal when three corners (one corner down) have been raised, and the middle one can be raised one more + if ((slope == kTileSlopeWCornerDown && neighbourHeightOffset.W >= 4) + || (slope == kTileSlopeSCornerDown && neighbourHeightOffset.S >= 4) + || (slope == kTileSlopeECornerDown && neighbourHeightOffset.E >= 4) + || (slope == kTileSlopeNCornerDown && neighbourHeightOffset.N >= 4)) + { + slope |= kTileSlopeDiagonalFlag; + } + + // Check if the calculated slope is the same already + uint8_t currentSlope = surfaceElement->GetSlope(); + if (currentSlope == slope) + { + return 0; + } + + if ((slope & kTileSlopeRaisedCornersMask) == kTileSlopeRaisedCornersMask) + { + // All corners are raised, raise the entire tile instead. + surfaceElement->SetSlope(kTileSlopeFlat); + surfaceElement->BaseHeight = (surfaceElement->ClearanceHeight += 2); + if (surfaceElement->GetWaterHeight() <= surfaceElement->GetBaseZ()) + { + surfaceElement->SetWaterHeight(0); + } + } + else + { + // Apply the slope to this tile + surfaceElement->SetSlope(slope); + + // Set correct clearance height + if (slope & kTileSlopeDiagonalFlag) + surfaceElement->ClearanceHeight = surfaceElement->BaseHeight + 4; + else if (slope & kTileSlopeRaisedCornersMask) + surfaceElement->ClearanceHeight = surfaceElement->BaseHeight + 2; + } + + return 1; + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/MapHelpers.h b/src/openrct2/world/map_generator/MapHelpers.h new file mode 100644 index 0000000000..d01f060412 --- /dev/null +++ b/src/openrct2/world/map_generator/MapHelpers.h @@ -0,0 +1,26 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../Location.hpp" + +namespace OpenRCT2::World::MapGenerator +{ + enum + { + SLOPE_S_THRESHOLD_FLAGS = (1 << 0), + SLOPE_W_THRESHOLD_FLAGS = (1 << 1), + SLOPE_N_THRESHOLD_FLAGS = (1 << 2), + SLOPE_E_THRESHOLD_FLAGS = (1 << 3) + }; + + int32_t MapSmooth(int32_t l, int32_t t, int32_t r, int32_t b); + int32_t TileSmooth(const TileCoordsXY& tileCoords); +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/PngTerrainGenerator.cpp b/src/openrct2/world/map_generator/PngTerrainGenerator.cpp new file mode 100644 index 0000000000..5a0dd90fa6 --- /dev/null +++ b/src/openrct2/world/map_generator/PngTerrainGenerator.cpp @@ -0,0 +1,263 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "PngTerrainGenerator.h" + +#include "../../Context.h" +#include "../../Diagnostic.h" +#include "../../core/Imaging.h" +#include "../../localisation/Formatter.h" +#include "../../localisation/StringIds.h" +#include "../Map.h" +#include "../tile_element/SurfaceElement.h" +#include "MapGen.h" +#include "MapHelpers.h" +#include "SurfaceSelection.h" + +#include + +namespace OpenRCT2::World::MapGenerator +{ + static struct + { + uint32_t width = 0; + uint32_t height = 0; + std::vector mono_bitmap; + } _heightMapData; + + /** + * Return the tile coordinate that matches the given pixel of a heightmap + */ + static TileCoordsXY HeightmapCoordToTileCoordsXY(uint32_t x, uint32_t y) + { + // The height map does not include the empty tiles around the map, so we add 1. + return TileCoordsXY(static_cast(y + 1), static_cast(x + 1)); + } + + bool LoadHeightmapImage(const utf8* path) + { + auto format = Imaging::GetImageFormatFromPath(path); + if (format == IMAGE_FORMAT::PNG) + { + // Promote to 32-bit + format = IMAGE_FORMAT::PNG_32; + } + + try + { + auto image = Imaging::ReadFromFile(path, format); + auto width = std::min(image.Width, kMaximumMapSizePractical); + auto height = std::min(image.Height, kMaximumMapSizePractical); + if (width != image.Width || height != image.Height) + { + ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_HEIGHT_MAP_TOO_BIG, {}); + } + + // Allocate memory for the height map values, one byte pixel + _heightMapData.mono_bitmap.resize(width * height); + _heightMapData.width = width; + _heightMapData.height = height; + + // Copy average RGB value to mono bitmap + constexpr auto numChannels = 4; + const auto pitch = image.Stride; + const auto pixels = image.Pixels.data(); + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + const auto red = pixels[x * numChannels + y * pitch]; + const auto green = pixels[x * numChannels + y * pitch + 1]; + const auto blue = pixels[x * numChannels + y * pitch + 2]; + _heightMapData.mono_bitmap[x + y * _heightMapData.width] = (red + green + blue) / 3; + } + } + return true; + } + catch (const std::exception& e) + { + switch (format) + { + case IMAGE_FORMAT::BITMAP: + ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_READING_BITMAP, {}); + break; + case IMAGE_FORMAT::PNG_32: + ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_READING_PNG, {}); + break; + default: + LOG_ERROR("Unable to load height map image: %s", e.what()); + break; + } + return false; + } + } + + /** + * Frees the memory used to store the selected height map + */ + void UnloadHeightmapImage() + { + _heightMapData.mono_bitmap.clear(); + _heightMapData.width = 0; + _heightMapData.height = 0; + } + + /** + * Applies box blur to the surface N times + */ + static void SmoothHeightmap(std::vector& src, int32_t strength) + { + // Create buffer to store one channel + std::vector dest(src.size()); + + for (int32_t i = 0; i < strength; i++) + { + // Calculate box blur value to all pixels of the surface + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + uint32_t heightSum = 0; + + // Loop over neighbour pixels, all of them have the same weight + for (int8_t offsetX = -1; offsetX <= 1; offsetX++) + { + for (int8_t offsetY = -1; offsetY <= 1; offsetY++) + { + // Clamp x and y so they stay within the image + // This assumes the height map is not tiled, and increases the weight of the edges + const int32_t readX = std::clamp(x + offsetX, 0, _heightMapData.width - 1); + const int32_t readY = std::clamp(y + offsetY, 0, _heightMapData.height - 1); + heightSum += src[readX + readY * _heightMapData.width]; + } + } + + // Take average + dest[x + y * _heightMapData.width] = heightSum / 9; + } + } + + // Now apply the blur to the source pixels + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + src[x + y * _heightMapData.width] = dest[x + y * _heightMapData.width]; + } + } + } + } + + void GenerateFromHeightmapImage(Settings* settings) + { + Guard::Assert(!_heightMapData.mono_bitmap.empty(), "No height map loaded"); + Guard::Assert(settings->heightmapHigh != settings->heightmapLow, "Low and high setting cannot be the same"); + + // Make a copy of the original height map that we can edit + auto dest = _heightMapData.mono_bitmap; + + // Get technical map size, +2 for the black tiles around the map + auto maxWidth = static_cast(_heightMapData.width + 2); + auto maxHeight = static_cast(_heightMapData.height + 2); + MapInit({ maxHeight, maxWidth }); + + if (settings->smooth_height_map) + { + SmoothHeightmap(dest, settings->smooth_strength); + } + + uint8_t maxValue = 255; + uint8_t minValue = 0; + + if (settings->normalize_height) + { + // Get highest and lowest pixel value + maxValue = 0; + minValue = 0xff; + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + uint8_t value = dest[x + y * _heightMapData.width]; + maxValue = std::max(maxValue, value); + minValue = std::min(minValue, value); + } + } + + if (minValue == maxValue) + { + ContextShowError(STR_HEIGHT_MAP_ERROR, STR_ERROR_CANNOT_NORMALIZE, {}); + return; + } + } + + Guard::Assert(maxValue > minValue, "Input range is invalid"); + Guard::Assert(settings->heightmapHigh > settings->heightmapLow, "Output range is invalid"); + + const auto surfaceTextureId = generateSurfaceTextureId(settings); + const auto edgeTextureId = generateEdgeTextureId(settings, surfaceTextureId); + + const uint8_t rangeIn = maxValue - minValue; + const uint8_t rangeOut = (settings->heightmapHigh - settings->heightmapLow) * 2; + + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + // The x and y axis are flipped in the world, so this uses y for x and x for y. + auto tileCoords = HeightmapCoordToTileCoordsXY(x, y); + auto* const surfaceElement = MapGetSurfaceElementAt(tileCoords); + if (surfaceElement == nullptr) + continue; + + // Read value from bitmap, and convert its range + uint8_t value = dest[x + y * _heightMapData.width]; + value = static_cast(static_cast(value - minValue) / rangeIn * rangeOut) + + (settings->heightmapLow * 2); + surfaceElement->BaseHeight = value; + + // Floor to even number + surfaceElement->BaseHeight /= 2; + surfaceElement->BaseHeight *= 2; + surfaceElement->ClearanceHeight = surfaceElement->BaseHeight; + + // Set textures + surfaceElement->SetSurfaceObjectIndex(surfaceTextureId); + surfaceElement->SetEdgeObjectIndex(edgeTextureId); + + // Set water level + if (surfaceElement->BaseHeight < settings->waterLevel) + { + surfaceElement->SetWaterHeight(settings->waterLevel * kCoordsZStep); + } + } + } + + // Smooth tile edges + if (settings->smoothTileEdges) + { + // Keep smoothing the entire map until no tiles are changed anymore + while (true) + { + uint32_t numTilesChanged = 0; + for (uint32_t y = 0; y < _heightMapData.height; y++) + { + for (uint32_t x = 0; x < _heightMapData.width; x++) + { + auto tileCoords = HeightmapCoordToTileCoordsXY(x, y); + numTilesChanged += TileSmooth(tileCoords); + } + } + + if (numTilesChanged == 0) + break; + } + } + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/MapHelpers.h b/src/openrct2/world/map_generator/PngTerrainGenerator.h similarity index 53% rename from src/openrct2/world/MapHelpers.h rename to src/openrct2/world/map_generator/PngTerrainGenerator.h index e953445800..6563d2b9af 100644 --- a/src/openrct2/world/MapHelpers.h +++ b/src/openrct2/world/map_generator/PngTerrainGenerator.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -9,15 +9,13 @@ #pragma once -#include "Location.hpp" +#include "../../core/StringTypes.h" -enum +namespace OpenRCT2::World::MapGenerator { - SLOPE_S_THRESHOLD_FLAGS = (1 << 0), - SLOPE_W_THRESHOLD_FLAGS = (1 << 1), - SLOPE_N_THRESHOLD_FLAGS = (1 << 2), - SLOPE_E_THRESHOLD_FLAGS = (1 << 3) -}; + struct Settings; -int32_t MapSmooth(int32_t l, int32_t t, int32_t r, int32_t b); -int32_t TileSmooth(const TileCoordsXY& tileCoords); + bool LoadHeightmapImage(const utf8* path); + void UnloadHeightmapImage(); + void GenerateFromHeightmapImage(Settings* settings); +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/SimplexNoise.cpp b/src/openrct2/world/map_generator/SimplexNoise.cpp new file mode 100644 index 0000000000..e65273feb9 --- /dev/null +++ b/src/openrct2/world/map_generator/SimplexNoise.cpp @@ -0,0 +1,227 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "SimplexNoise.h" + +#include "../../util/Util.h" +#include "HeightMap.hpp" +#include "MapGen.h" +#include "MapHelpers.h" + +#include + +namespace OpenRCT2::World::MapGenerator +{ + /** + * Simplex Noise Algorithm with Fractional Brownian Motion + * Based on: + * - https://code.google.com/p/simplexnoise/ + * - https://code.google.com/p/fractalterraingeneration/wiki/Fractional_Brownian_Motion + */ + + static float Generate(float x, float y); + static int32_t FastFloor(float x); + static float Grad(int32_t hash, float x, float y); + + static uint8_t perm[512]; + + void NoiseRand() + { + for (auto& i : perm) + { + i = UtilRand() & 0xFF; + } + } + + float FractalNoise(int32_t x, int32_t y, float frequency, int32_t octaves, float lacunarity, float persistence) + { + float total = 0.0f; + float amplitude = persistence; + for (int32_t i = 0; i < octaves; i++) + { + total += Generate(x * frequency, y * frequency) * amplitude; + frequency *= lacunarity; + amplitude *= persistence; + } + return total; + } + + static float Generate(float x, float y) + { + const float F2 = 0.366025403f; // F2 = 0.5*(sqrt(3.0)-1.0) + const float G2 = 0.211324865f; // G2 = (3.0-sqrt(3.0))/6.0 + + float n0, n1, n2; // Noise contributions from the three corners + + // Skew the input space to determine which simplex cell we're in + float s = (x + y) * F2; // Hairy factor for 2D + float xs = x + s; + float ys = y + s; + int32_t i = FastFloor(xs); + int32_t j = FastFloor(ys); + + float t = static_cast(i + j) * G2; + float X0 = i - t; // Unskew the cell origin back to (x,y) space + float Y0 = j - t; + float x0 = x - X0; // The x,y distances from the cell origin + float y0 = y - Y0; + + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + int32_t i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords + if (x0 > y0) + { + i1 = 1; + j1 = 0; + } // lower triangle, XY order: (0,0)->(1,0)->(1,1) + else + { + i1 = 0; + j1 = 1; + } // upper triangle, YX order: (0,0)->(0,1)->(1,1) + + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + + float x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords + float y1 = y0 - j1 + G2; + float x2 = x0 - 1.0f + 2.0f * G2; // Offsets for last corner in (x,y) unskewed coords + float y2 = y0 - 1.0f + 2.0f * G2; + + // Wrap the integer indices at 256, to avoid indexing perm[] out of bounds + int32_t ii = i % 256; + int32_t jj = j % 256; + + // Calculate the contribution from the three corners + float t0 = 0.5f - x0 * x0 - y0 * y0; + if (t0 < 0.0f) + { + n0 = 0.0f; + } + else + { + t0 *= t0; + n0 = t0 * t0 * Grad(perm[ii + perm[jj]], x0, y0); + } + + float t1 = 0.5f - x1 * x1 - y1 * y1; + if (t1 < 0.0f) + { + n1 = 0.0f; + } + else + { + t1 *= t1; + n1 = t1 * t1 * Grad(perm[ii + i1 + perm[jj + j1]], x1, y1); + } + + float t2 = 0.5f - x2 * x2 - y2 * y2; + if (t2 < 0.0f) + { + n2 = 0.0f; + } + else + { + t2 *= t2; + n2 = t2 * t2 * Grad(perm[ii + 1 + perm[jj + 1]], x2, y2); + } + + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 40.0f * (n0 + n1 + n2); // TODO: The scale factor is preliminary! + } + + static int32_t FastFloor(float x) + { + return (x > 0) ? (static_cast(x)) : ((static_cast(x)) - 1); + } + + static float Grad(int32_t hash, float x, float y) + { + int32_t h = hash & 7; // Convert low 3 bits of hash code + float u = h < 4 ? x : y; // into 8 simple gradient directions, + float v = h < 4 ? y : x; // and compute the dot product with (x,y). + return ((h & 1) != 0 ? -u : u) + ((h & 2) != 0 ? -2.0f * v : 2.0f * v); + } + + /** + * Smooths the height map. + */ + static void smoothHeightMap(int32_t iterations, HeightMap& heightMap) + { + for (auto i = 0; i < iterations; i++) + { + auto copyHeight = heightMap; + for (auto y = 1; y < heightMap.height - 1; y++) + { + for (auto x = 1; x < heightMap.width - 1; x++) + { + auto avg = 0; + for (auto yy = -1; yy <= 1; yy++) + { + for (auto xx = -1; xx <= 1; xx++) + { + avg += copyHeight[{ y + yy, x + xx }]; + } + } + avg /= 9; + heightMap[{ x, y }] = avg; + } + } + } + } + + static void generateSimplexNoise(Settings* settings, HeightMap& heightMap) + { + float freq = settings->simplex_base_freq / 100.0f * (1.0f / heightMap.width); + int32_t octaves = settings->simplex_octaves; + + int32_t low = settings->heightmapLow / 2; + int32_t high = settings->heightmapHigh / 2 - low; + + NoiseRand(); + for (int32_t y = 0; y < heightMap.height; y++) + { + for (int32_t x = 0; x < heightMap.width; x++) + { + float noiseValue = std::clamp(FractalNoise(x, y, freq, octaves, 2.0f, 0.65f), -1.0f, 1.0f); + float normalisedNoiseValue = (noiseValue + 1.0f) / 2.0f; + + heightMap[{ x, y }] = low + static_cast(normalisedNoiseValue * high); + } + } + } + + void generateSimplexMap(Settings* settings) + { + resetSurfaces(settings); + + // Create the temporary height map and initialise + auto& mapSize = settings->mapSize; + auto heightMap = HeightMap(mapSize.x * 2, mapSize.y * 2); + + generateSimplexNoise(settings, heightMap); + smoothHeightMap(2 + (UtilRand() % 6), heightMap); + + // Set the game map to the height map + setMapHeight(settings, heightMap); + + if (settings->smoothTileEdges) + { + // Set the tile slopes so that there are no cliffs + while (MapSmooth(1, 1, mapSize.x - 1, mapSize.y - 1)) + { + } + } + + // Add the water + setWaterLevel(settings->waterLevel); + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/SimplexNoise.h b/src/openrct2/world/map_generator/SimplexNoise.h new file mode 100644 index 0000000000..f8e5a3f515 --- /dev/null +++ b/src/openrct2/world/map_generator/SimplexNoise.h @@ -0,0 +1,22 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include + +namespace OpenRCT2::World::MapGenerator +{ + struct Settings; + + void NoiseRand(); + float FractalNoise(int32_t x, int32_t y, float frequency, int32_t octaves, float lacunarity, float persistence); + + void generateSimplexMap(Settings* settings); +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/SurfaceSelection.cpp b/src/openrct2/world/map_generator/SurfaceSelection.cpp new file mode 100644 index 0000000000..b83a0e0179 --- /dev/null +++ b/src/openrct2/world/map_generator/SurfaceSelection.cpp @@ -0,0 +1,103 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "SurfaceSelection.h" + +#include "../../Context.h" +#include "../../object/ObjectEntryManager.h" +#include "../../object/ObjectList.h" +#include "../../object/ObjectManager.h" +#include "../../object/TerrainEdgeObject.h" +#include "../../object/TerrainSurfaceObject.h" +#include "../../util/Util.h" +#include "MapGen.h" + +#include +#include + +namespace OpenRCT2::World::MapGenerator +{ + // Randomly chosen base terrains. We rarely want a whole map made out of chequerboard or rock. + static constexpr std::string_view kBaseTerrain[] = { + "rct2.terrain_surface.grass", "rct2.terrain_surface.sand", "rct2.terrain_surface.sand_brown", + "rct2.terrain_surface.dirt", "rct2.terrain_surface.ice", + }; + + ObjectEntryIndex generateSurfaceTextureId(Settings* settings) + { + auto& objectManager = GetContext()->GetObjectManager(); + + const auto selectedFloor = TerrainSurfaceObject::GetById(settings->landTexture); + std::string_view surfaceTexture = selectedFloor != nullptr ? selectedFloor->GetIdentifier() : ""; + + if (surfaceTexture.empty()) + { + std::vector availableTerrains; + std::copy_if( + std::begin(kBaseTerrain), std::end(kBaseTerrain), std::back_inserter(availableTerrains), + [&](auto terrain) { return objectManager.GetLoadedObject(ObjectEntryDescriptor(terrain)) != nullptr; }); + + if (availableTerrains.empty()) + // Fall back to the first available surface texture that is available in the park + surfaceTexture = TerrainSurfaceObject::GetById(0)->GetIdentifier(); + else + surfaceTexture = availableTerrains[UtilRand() % availableTerrains.size()]; + } + + auto surfaceTextureId = objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(surfaceTexture)); + return surfaceTextureId; + } + + ObjectEntryIndex generateEdgeTextureId(Settings* settings, ObjectEntryIndex surfaceTextureId) + { + auto& objectManager = GetContext()->GetObjectManager(); + + const auto selectedEdge = TerrainEdgeObject::GetById(settings->edgeTexture); + std::string_view edgeTexture = selectedEdge != nullptr ? selectedEdge->GetIdentifier() : ""; + + if (edgeTexture.empty()) + { + auto surfaceObject = objectManager.GetLoadedObject(ObjectType::TerrainSurface, surfaceTextureId); + auto surfaceTexture = surfaceObject->GetIdentifier(); + + // Base edge type on surface type + if (surfaceTexture == "rct2.terrain_surface.dirt") + edgeTexture = "rct2.terrain_edge.wood_red"; + else if (surfaceTexture == "rct2.terrain_surface.ice") + edgeTexture = "rct2.terrain_edge.ice"; + else + edgeTexture = "rct2.terrain_edge.rock"; + + // Fall back to the first available edge texture that is available in the park + if (objectManager.GetLoadedObject(ObjectEntryDescriptor(edgeTexture)) == nullptr) + edgeTexture = TerrainEdgeObject::GetById(0)->GetIdentifier(); + } + + auto edgeTextureId = objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(edgeTexture)); + return edgeTextureId; + } + + ObjectEntryIndex generateBeachTextureId() + { + auto& objectManager = GetContext()->GetObjectManager(); + + // Figure out what beach texture to use + std::vector availableBeachTextures; + if (objectManager.GetLoadedObject(ObjectEntryDescriptor("rct2.terrain_surface.sand")) != nullptr) + availableBeachTextures.push_back("rct2.terrain_surface.sand"); + if (objectManager.GetLoadedObject(ObjectEntryDescriptor("rct2.terrain_surface.sand_brown")) != nullptr) + availableBeachTextures.push_back("rct2.terrain_surface.sand_brown"); + + if (availableBeachTextures.empty()) + return OBJECT_ENTRY_INDEX_NULL; + + std::string_view beachTexture = availableBeachTextures[UtilRand() % availableBeachTextures.size()]; + return objectManager.GetLoadedObjectEntryIndex(ObjectEntryDescriptor(beachTexture)); + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/SurfaceSelection.h b/src/openrct2/world/map_generator/SurfaceSelection.h new file mode 100644 index 0000000000..878441022a --- /dev/null +++ b/src/openrct2/world/map_generator/SurfaceSelection.h @@ -0,0 +1,21 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../../object/ObjectTypes.h" + +namespace OpenRCT2::World::MapGenerator +{ + struct Settings; + + ObjectEntryIndex generateSurfaceTextureId(Settings* settings); + ObjectEntryIndex generateEdgeTextureId(Settings* settings, ObjectEntryIndex surfaceTextureId); + ObjectEntryIndex generateBeachTextureId(); +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/TreePlacement.cpp b/src/openrct2/world/map_generator/TreePlacement.cpp new file mode 100644 index 0000000000..8061e50b04 --- /dev/null +++ b/src/openrct2/world/map_generator/TreePlacement.cpp @@ -0,0 +1,232 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "TreePlacement.h" + +#include "../../GameState.h" +#include "../../core/Guard.hpp" +#include "../../object/ObjectEntryManager.h" +#include "../../object/ObjectList.h" +#include "../../object/ObjectManager.h" +#include "../../object/SmallSceneryEntry.h" +#include "../../object/TerrainSurfaceObject.h" +#include "../../util/Util.h" +#include "../Map.h" +#include "../tile_element/SmallSceneryElement.h" +#include "../tile_element/SurfaceElement.h" +#include "../tile_element/TileElement.h" +#include "MapGen.h" +#include "SimplexNoise.h" + +#include + +namespace OpenRCT2::World::MapGenerator +{ + static constexpr const char* kGrassTrees[] = { + // Dark + "rct2.scenery_small.tcf", // Caucasian Fir Tree + "rct2.scenery_small.trf", // Red Fir Tree + "rct2.scenery_small.trf2", // Red Fir Tree + "rct2.scenery_small.tsp", // Scots Pine Tree + "rct2.scenery_small.tmzp", // Montezuma Pine Tree + "rct2.scenery_small.tap", // Aleppo Pine Tree + "rct2.scenery_small.tcrp", // Corsican Pine Tree + "rct2.scenery_small.tbp", // Black Poplar Tree + + // Light + "rct2.scenery_small.tcl", // Cedar of Lebanon Tree + "rct2.scenery_small.tel", // European Larch Tree + }; + + static constexpr const char* kDesertTrees[] = { + "rct2.scenery_small.tmp", // Monkey-Puzzle Tree + "rct2.scenery_small.thl", // Honey Locust Tree + "rct2.scenery_small.th1", // Canary Palm Tree + "rct2.scenery_small.th2", // Palm Tree + "rct2.scenery_small.tpm", // Palm Tree + "rct2.scenery_small.tropt1", // Tree + "rct2.scenery_small.tbc", // Cactus + "rct2.scenery_small.tsc", // Cactus + }; + + static constexpr const char* kSnowTrees[] = { + "rct2.scenery_small.tcfs", // Snow-covered Caucasian Fir Tree + "rct2.scenery_small.tnss", // Snow-covered Norway Spruce Tree + "rct2.scenery_small.trf3", // Snow-covered Red Fir Tree + "rct2.scenery_small.trfs", // Snow-covered Red Fir Tree + }; + + static void placeTree(ObjectEntryIndex type, const CoordsXY& loc) + { + auto* sceneryEntry = ObjectManager::GetObjectEntry(type); + if (sceneryEntry == nullptr) + { + return; + } + + int32_t surfaceZ = TileElementHeight(loc.ToTileCentre()); + + auto* sceneryElement = TileElementInsert({ loc, surfaceZ }, 0b1111); + Guard::Assert(sceneryElement != nullptr); + + sceneryElement->SetClearanceZ(surfaceZ + sceneryEntry->height); + sceneryElement->SetDirection(UtilRand() & 3); + sceneryElement->SetEntryIndex(type); + sceneryElement->SetAge(0); + sceneryElement->SetPrimaryColour(COLOUR_YELLOW); + } + + static bool surfaceTakesGrassTrees(const TerrainSurfaceObject& surface) + { + const auto& id = surface.GetIdentifier(); + return id == "rct2.terrain_surface.grass" || id == "rct2.terrain_surface.grass_clumps" + || id == "rct2.terrain_surface.dirt"; + } + + static bool surfaceTakesSandTrees(const TerrainSurfaceObject& surface) + { + const auto& id = surface.GetIdentifier(); + return id == "rct2.terrain_surface.sand" || id == "rct2.terrain_surface.sand_brown" + || id == "rct2.terrain_surface.sand_red"; + } + + static bool surfaceTakesSnowTrees(const TerrainSurfaceObject& surface) + { + const auto& id = surface.GetIdentifier(); + return id == "rct2.terrain_surface.ice"; + } + + template + static bool TryFindTreeInList(std::string_view id, const T& treeList) + { + for (size_t j = 0; j < std::size(treeList); j++) + { + if (treeList[j] == id) + return true; + } + return false; + } + + /** + * Randomly places a selection of preset trees on the map. Picks the right tree for the terrain it is placing it on. + */ + void placeTrees(Settings* settings) + { + std::vector grassTreeIds; + std::vector desertTreeIds; + std::vector snowTreeIds; + + for (auto i = 0u; i < getObjectEntryGroupCount(ObjectType::SmallScenery); i++) + { + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); + auto entry = ObjectEntryGetObject(ObjectType::SmallScenery, i); + + if (sceneryEntry == nullptr) + continue; + + if (TryFindTreeInList(entry->GetIdentifier(), kGrassTrees)) + { + grassTreeIds.push_back(i); + } + else if (TryFindTreeInList(entry->GetIdentifier(), kDesertTrees)) + { + desertTreeIds.push_back(i); + } + else if (TryFindTreeInList(entry->GetIdentifier(), kSnowTrees)) + { + snowTreeIds.push_back(i); + } + } + + // Place trees + float treeToLandRatio = static_cast(settings->treeToLandRatio) / 100.0f; + + // Randomise simplex noise + NoiseRand(); + + auto& gameState = GetGameState(); + for (int32_t y = 1; y < gameState.MapSize.y - 1; y++) + { + for (int32_t x = 1; x < gameState.MapSize.x - 1; x++) + { + auto pos = CoordsXY{ x, y } * kCoordsXYStep; + auto* surfaceElement = MapGetSurfaceElementAt(pos); + if (surfaceElement == nullptr) + continue; + + // Don't place on water + if (surfaceElement->GetWaterHeight() > 0) + continue; + + if (settings->minTreeAltitude > surfaceElement->BaseHeight + || settings->maxTreeAltitude < surfaceElement->BaseHeight) + continue; + + // On sand surfaces, give the tile a score based on nearby water, to be used to determine whether to spawn + // vegetation + float oasisScore = 0.0f; + ObjectEntryIndex treeObjectEntryIndex = OBJECT_ENTRY_INDEX_NULL; + const auto& surfaceStyleObject = *TerrainSurfaceObject::GetById(surfaceElement->GetSurfaceObjectIndex()); + if (surfaceTakesSandTrees(surfaceStyleObject)) + { + oasisScore = -0.5f; + constexpr auto maxOasisDistance = 4; + for (int32_t offsetY = -maxOasisDistance; offsetY <= maxOasisDistance; offsetY++) + { + for (int32_t offsetX = -maxOasisDistance; offsetX <= maxOasisDistance; offsetX++) + { + // Get map coord, clamped to the edges + const auto offset = CoordsXY{ offsetX * kCoordsXYStep, offsetY * kCoordsXYStep }; + auto neighbourPos = pos + offset; + neighbourPos.x = std::clamp( + neighbourPos.x, kCoordsXYStep, kCoordsXYStep * (gameState.MapSize.x - 1)); + neighbourPos.y = std::clamp( + neighbourPos.y, kCoordsXYStep, kCoordsXYStep * (gameState.MapSize.y - 1)); + + const auto neighboutSurface = MapGetSurfaceElementAt(neighbourPos); + if (neighboutSurface != nullptr && neighboutSurface->GetWaterHeight() > 0) + { + float distance = std::sqrt(offsetX * offsetX + offsetY * offsetY); + oasisScore += 0.5f / (maxOasisDistance * distance); + } + } + } + } + + // Use tree:land ratio except when near an oasis + constexpr static auto randModulo = 0xFFFF; + if (static_cast(UtilRand() & randModulo) / randModulo > std::max(treeToLandRatio, oasisScore)) + continue; + + // Use fractal noise to group tiles that are likely to spawn trees together + float noiseValue = FractalNoise(x, y, 0.025f, 2, 2.0f, 0.65f); + // Reduces the range to rarely stray further than 0.5 from the mean. + float noiseOffset = UtilRandNormalDistributed() * 0.25f; + if (noiseValue + oasisScore < noiseOffset) + continue; + + if (!grassTreeIds.empty() && surfaceTakesGrassTrees(surfaceStyleObject)) + { + treeObjectEntryIndex = grassTreeIds[UtilRand() % grassTreeIds.size()]; + } + else if (!desertTreeIds.empty() && surfaceTakesSandTrees(surfaceStyleObject)) + { + treeObjectEntryIndex = desertTreeIds[UtilRand() % desertTreeIds.size()]; + } + else if (!snowTreeIds.empty() && surfaceTakesSnowTrees(surfaceStyleObject)) + { + treeObjectEntryIndex = snowTreeIds[UtilRand() % snowTreeIds.size()]; + } + + if (treeObjectEntryIndex != OBJECT_ENTRY_INDEX_NULL) + placeTree(treeObjectEntryIndex, pos); + } + } + } +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/map_generator/TreePlacement.h b/src/openrct2/world/map_generator/TreePlacement.h new file mode 100644 index 0000000000..80b45555ab --- /dev/null +++ b/src/openrct2/world/map_generator/TreePlacement.h @@ -0,0 +1,15 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +namespace OpenRCT2::World::MapGenerator +{ + struct Settings; + + void placeTrees(Settings* settings); +} // namespace OpenRCT2::World::MapGenerator diff --git a/src/openrct2/world/tile_element/BannerElement.h b/src/openrct2/world/tile_element/BannerElement.h index 6c127f5727..93efbbbc77 100644 --- a/src/openrct2/world/tile_element/BannerElement.h +++ b/src/openrct2/world/tile_element/BannerElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/EntranceElement.cpp b/src/openrct2/world/tile_element/EntranceElement.cpp index 60ffecc6c7..ebbb5e6417 100644 --- a/src/openrct2/world/tile_element/EntranceElement.cpp +++ b/src/openrct2/world/tile_element/EntranceElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/EntranceElement.h b/src/openrct2/world/tile_element/EntranceElement.h index d6b4789e9c..f021e9a647 100644 --- a/src/openrct2/world/tile_element/EntranceElement.h +++ b/src/openrct2/world/tile_element/EntranceElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/LargeSceneryElement.cpp b/src/openrct2/world/tile_element/LargeSceneryElement.cpp index def95e30d3..5a3b0ee184 100644 --- a/src/openrct2/world/tile_element/LargeSceneryElement.cpp +++ b/src/openrct2/world/tile_element/LargeSceneryElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/LargeSceneryElement.h b/src/openrct2/world/tile_element/LargeSceneryElement.h index 9a45dfddb0..b37810e81f 100644 --- a/src/openrct2/world/tile_element/LargeSceneryElement.h +++ b/src/openrct2/world/tile_element/LargeSceneryElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/PathElement.cpp b/src/openrct2/world/tile_element/PathElement.cpp index 1c8b058b00..6347f93054 100644 --- a/src/openrct2/world/tile_element/PathElement.cpp +++ b/src/openrct2/world/tile_element/PathElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/PathElement.h b/src/openrct2/world/tile_element/PathElement.h index 75eb619871..10e3749f18 100644 --- a/src/openrct2/world/tile_element/PathElement.h +++ b/src/openrct2/world/tile_element/PathElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/Slope.h b/src/openrct2/world/tile_element/Slope.h index fff29bd16c..777f21064e 100644 --- a/src/openrct2/world/tile_element/Slope.h +++ b/src/openrct2/world/tile_element/Slope.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SmallSceneryElement.cpp b/src/openrct2/world/tile_element/SmallSceneryElement.cpp index 4109953518..3e6b332c1a 100644 --- a/src/openrct2/world/tile_element/SmallSceneryElement.cpp +++ b/src/openrct2/world/tile_element/SmallSceneryElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SmallSceneryElement.h b/src/openrct2/world/tile_element/SmallSceneryElement.h index ec890822a9..dc585ab490 100644 --- a/src/openrct2/world/tile_element/SmallSceneryElement.h +++ b/src/openrct2/world/tile_element/SmallSceneryElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SurfaceElement.cpp b/src/openrct2/world/tile_element/SurfaceElement.cpp index 1d5711ff5a..040ca39e01 100644 --- a/src/openrct2/world/tile_element/SurfaceElement.cpp +++ b/src/openrct2/world/tile_element/SurfaceElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SurfaceElement.h b/src/openrct2/world/tile_element/SurfaceElement.h index ca8c1900bc..036a15e448 100644 --- a/src/openrct2/world/tile_element/SurfaceElement.h +++ b/src/openrct2/world/tile_element/SurfaceElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElement.cpp b/src/openrct2/world/tile_element/TileElement.cpp index bf730e0e2b..ca9e9fb55c 100644 --- a/src/openrct2/world/tile_element/TileElement.cpp +++ b/src/openrct2/world/tile_element/TileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElement.h b/src/openrct2/world/tile_element/TileElement.h index 6d1bdce5e9..71cf617921 100644 --- a/src/openrct2/world/tile_element/TileElement.h +++ b/src/openrct2/world/tile_element/TileElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementBase.cpp b/src/openrct2/world/tile_element/TileElementBase.cpp index ae250f92ac..8dd5fd399c 100644 --- a/src/openrct2/world/tile_element/TileElementBase.cpp +++ b/src/openrct2/world/tile_element/TileElementBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementBase.h b/src/openrct2/world/tile_element/TileElementBase.h index 00eb32c90d..df42a7fa74 100644 --- a/src/openrct2/world/tile_element/TileElementBase.h +++ b/src/openrct2/world/tile_element/TileElementBase.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementType.h b/src/openrct2/world/tile_element/TileElementType.h index 6ccbe9bf8f..35e243b516 100644 --- a/src/openrct2/world/tile_element/TileElementType.h +++ b/src/openrct2/world/tile_element/TileElementType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TrackElement.cpp b/src/openrct2/world/tile_element/TrackElement.cpp index 46dfb7880e..9dfe8a1e50 100644 --- a/src/openrct2/world/tile_element/TrackElement.cpp +++ b/src/openrct2/world/tile_element/TrackElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TrackElement.h b/src/openrct2/world/tile_element/TrackElement.h index 7ed7a55917..75f6a03289 100644 --- a/src/openrct2/world/tile_element/TrackElement.h +++ b/src/openrct2/world/tile_element/TrackElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/WallElement.cpp b/src/openrct2/world/tile_element/WallElement.cpp index af9a61ad8e..779c9b85b2 100644 --- a/src/openrct2/world/tile_element/WallElement.cpp +++ b/src/openrct2/world/tile_element/WallElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/WallElement.h b/src/openrct2/world/tile_element/WallElement.h index f032fabcfb..6ddec0568f 100644 --- a/src/openrct2/world/tile_element/WallElement.h +++ b/src/openrct2/world/tile_element/WallElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/AssertHelpers.hpp b/test/tests/AssertHelpers.hpp index 722581f7b4..89d258d90c 100644 --- a/test/tests/AssertHelpers.hpp +++ b/test/tests/AssertHelpers.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/BitSetTests.cpp b/test/tests/BitSetTests.cpp index 2f4cbbd050..3e007ede31 100644 --- a/test/tests/BitSetTests.cpp +++ b/test/tests/BitSetTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/CircularBuffer.cpp b/test/tests/CircularBuffer.cpp index 666b770244..166fbfde70 100644 --- a/test/tests/CircularBuffer.cpp +++ b/test/tests/CircularBuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/CryptTests.cpp b/test/tests/CryptTests.cpp index cf9663d678..5dc16917ae 100644 --- a/test/tests/CryptTests.cpp +++ b/test/tests/CryptTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/EnumMapTest.cpp b/test/tests/EnumMapTest.cpp index e7da143a6b..3e85e87e1e 100644 --- a/test/tests/EnumMapTest.cpp +++ b/test/tests/EnumMapTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/FormattingTests.cpp b/test/tests/FormattingTests.cpp index eca364393a..f631b1d5ae 100644 --- a/test/tests/FormattingTests.cpp +++ b/test/tests/FormattingTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/ImageImporterTests.cpp b/test/tests/ImageImporterTests.cpp index 56aca7dccc..f5ef20c84a 100644 --- a/test/tests/ImageImporterTests.cpp +++ b/test/tests/ImageImporterTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/IniReaderTest.cpp b/test/tests/IniReaderTest.cpp index 1dd4a1c616..3e67c81f9d 100644 --- a/test/tests/IniReaderTest.cpp +++ b/test/tests/IniReaderTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/IniWriterTest.cpp b/test/tests/IniWriterTest.cpp index 606424c505..760ed6dde8 100644 --- a/test/tests/IniWriterTest.cpp +++ b/test/tests/IniWriterTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/LanguagePackTest.cpp b/test/tests/LanguagePackTest.cpp index 5f19d2e309..e5910e9d45 100644 --- a/test/tests/LanguagePackTest.cpp +++ b/test/tests/LanguagePackTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/LocalisationTest.cpp b/test/tests/LocalisationTest.cpp index 920e6377ab..77d807539f 100644 --- a/test/tests/LocalisationTest.cpp +++ b/test/tests/LocalisationTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/MultiLaunch.cpp b/test/tests/MultiLaunch.cpp index a28d1a4acb..ae73b07c31 100644 --- a/test/tests/MultiLaunch.cpp +++ b/test/tests/MultiLaunch.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/Platform.cpp b/test/tests/Platform.cpp index 2b3e1cc1d9..ac3dfd4fdb 100644 --- a/test/tests/Platform.cpp +++ b/test/tests/Platform.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/PlayTests.cpp b/test/tests/PlayTests.cpp index 8afda5ced0..f268ae122d 100644 --- a/test/tests/PlayTests.cpp +++ b/test/tests/PlayTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/ReplayTests.cpp b/test/tests/ReplayTests.cpp index 1ea1a8f777..7780b158d4 100644 --- a/test/tests/ReplayTests.cpp +++ b/test/tests/ReplayTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/RideRatings.cpp b/test/tests/RideRatings.cpp index 3726fd3a5a..15f343a0a4 100644 --- a/test/tests/RideRatings.cpp +++ b/test/tests/RideRatings.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index 950d1e5b90..bf32066519 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/SawyerCodingTest.cpp b/test/tests/SawyerCodingTest.cpp index 05dff2888a..a83b11fe1d 100644 --- a/test/tests/SawyerCodingTest.cpp +++ b/test/tests/SawyerCodingTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/ScenarioPatcherTests.cpp b/test/tests/ScenarioPatcherTests.cpp index 9f853f5a0f..34d61ffb0a 100644 --- a/test/tests/ScenarioPatcherTests.cpp +++ b/test/tests/ScenarioPatcherTests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/StringTest.cpp b/test/tests/StringTest.cpp index bd18e3cc00..05a72b3f7c 100644 --- a/test/tests/StringTest.cpp +++ b/test/tests/StringTest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/TestData.cpp b/test/tests/TestData.cpp index ff1dcd8310..6255bdd9ca 100644 --- a/test/tests/TestData.cpp +++ b/test/tests/TestData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/TestData.h b/test/tests/TestData.h index de6ca4eeab..5784102b6a 100644 --- a/test/tests/TestData.h +++ b/test/tests/TestData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/TileElements.cpp b/test/tests/TileElements.cpp index de1b1cf156..60936b550f 100644 --- a/test/tests/TileElements.cpp +++ b/test/tests/TileElements.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/TileElementsView.cpp b/test/tests/TileElementsView.cpp index 1412e221e9..2f488b633f 100644 --- a/test/tests/TileElementsView.cpp +++ b/test/tests/TileElementsView.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/helpers/StringHelpers.hpp b/test/tests/helpers/StringHelpers.hpp index 011cdb2b39..5c8b406144 100644 --- a/test/tests/helpers/StringHelpers.hpp +++ b/test/tests/helpers/StringHelpers.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/test/tests/tests.cpp b/test/tests/tests.cpp index fbbfa7b8f9..d776c74f00 100644 --- a/test/tests/tests.cpp +++ b/test/tests/tests.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2024 OpenRCT2 developers + * Copyright (c) 2014-2025 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2