1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 03:53:07 +01:00

Merge remote-tracking branch 'upstream/master' into scenery-window

This commit is contained in:
qcz
2014-08-23 20:18:26 +02:00
19 changed files with 829 additions and 351 deletions

View File

@@ -42,7 +42,7 @@ STR_0040 :Attractie
STR_0041 :Attractie
STR_0042 :Attractie
STR_0043 :Attractie
STR_0044 :Omgekeerde vrijvalachtbaan
STR_0044 :Omgekeerde vrijevalachtbaan
STR_0045 :Lift
STR_0046 :Attractie
STR_0047 :Attractie
@@ -836,7 +836,7 @@ STR_0834 :{SMALLFONT}{BLACK}Schijf- en spelopties
STR_0835 :Kan het spel niet initialiseren
STR_0836 :Kan het spel niet in geminimaliseerde toestand starten
STR_0837 :Kan het grafisch systeem niet starten
STR_0838 :CD-code {INT32} is niet geldig voor deze CD van RollerCoaster Tycoon 2 CD!{WINDOW_COLOUR_1}{WINDOW_COLOUR_1}Deïnstalleer RollerCoaster Tycoon 2% en installeer het opnieuw met de correcte CD-code
STR_0838 :CD-code {INT32} is niet geldig voor deze CD van RollerCoaster Tycoon 2!{WINDOW_COLOUR_1}{WINDOW_COLOUR_1}Deïnstalleer RollerCoaster Tycoon 2% en installeer het opnieuw met de correcte CD-code
STR_0839 :{UINT16} x {UINT16}
STR_0840 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{UINT16} x {UINT16}
STR_0841 :Bureaubladvenster
@@ -1031,7 +1031,7 @@ STR_1029 :Kan niet gedeeltelijk boven en onder water bouwen!
STR_1030 :Dit kan alleen onder water worden gebouwd!
STR_1031 :Dit kan niet onder water worden gebouwd!
STR_1032 :Dit kan alleen op water worden gebouwd!
STR_1033 :Dit kan alleen bouwen de grond worden gebouwd!
STR_1033 :Dit kan alleen boven de grond worden gebouwd!
STR_1034 :Dit kan alleen op land worden gebouwd!
STR_1035 :De gemeente staat geen constructies boven boomniveau toe!
STR_1036 :Spel laden
@@ -1060,7 +1060,7 @@ STR_1058 :Voer een nieuwe naam in voor deze attractie:
STR_1059 :Kan deze attractienaam geen andere naam geven...
STR_1060 :Ongeldige attractienaam
STR_1061 :Normale stand
STR_1062 :Continu circuit
STR_1062 :Voortdurend circuit
STR_1063 :Lancering via achterwaartse optakeling
STR_1064 :Lancering
STR_1065 :Shuttlestand
@@ -1093,7 +1093,7 @@ STR_1091 :Circusmodus
STR_1092 :Neerwaartse lancering
STR_1093 :Crooked housestand
STR_1094 :Vrijevalmodus
STR_1095 :Continuous circuit met blokken
STR_1095 :Voortdurend circuit met blokken
STR_1096 :Lancering
STR_1097 :Lancering met blokken
STR_1098 :Gaat naar het einde van {POP16}{STRINGID}
@@ -1197,11 +1197,11 @@ STR_1195 :Testrit
STR_1196 :Open
STR_1197 :Defect
STR_1198 :Neergestort!
STR_1199 :{COMMA16} persoon aan boord
STR_1200 :{COMMA16} mensen aan boord
STR_1199 :{COMMA16} passagier
STR_1200 :{COMMA16} passagiers
STR_1201 :Niemand in de wachtrij
STR_1202 :1 persoon in de wachtrij
STR_1203 :{COMMA16} mensen in de wachtrij
STR_1202 :1 bezoeker in de wachtrij
STR_1203 :{COMMA16} bezoekers in de wachtrij
STR_1204 :{COMMA16} minuut wachttijd
STR_1205 :{COMMA16} minuten wachttijd
STR_1206 :{WINDOW_COLOUR_2}Wacht op:
@@ -1558,7 +1558,7 @@ STR_1556 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een paraplu van {
STR_1557 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor frisdrank van {STRINGID}{ENDQUOTES}
STR_1558 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een hamburger {STRINGID}{ENDQUOTES}
STR_1559 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor frietjes van {STRINGID}{ENDQUOTES}
STR_1560 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een ijstje van {STRINGID}{ENDQUOTES}
STR_1560 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een ijsje van {STRINGID}{ENDQUOTES}
STR_1561 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een suikerspin van {STRINGID}{ENDQUOTES}
STR_1562 :
STR_1563 :
@@ -1590,13 +1590,13 @@ STR_1588 :{SMALLFONT}{OPENQUOTES}Deze warme chocolademelk van {STRINGID} is e
STR_1589 :{SMALLFONT}{OPENQUOTES}Deze ijsthee van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1590 :{SMALLFONT}{OPENQUOTES}Deze funnel cake van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1591 :{SMALLFONT}{OPENQUOTES}Deze zonnebril van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1592 :{SMALLFONT}{OPENQUOTES}These beef noodles van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1593 :{SMALLFONT}{OPENQUOTES}These fried rice noodles van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1594 :{SMALLFONT}{OPENQUOTES}This wonton soup van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1595 :{SMALLFONT}{OPENQUOTES}This meatball soup van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1592 :{SMALLFONT}{OPENQUOTES}Deze rundernoedels van {STRINGID} zijn erg goedkoop{ENDQUOTES}
STR_1593 :{SMALLFONT}{OPENQUOTES}Deze rijstnoedels van {STRINGID} zijn erg goedkoop{ENDQUOTES}
STR_1594 :{SMALLFONT}{OPENQUOTES}Deze wantansoep van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1595 :{SMALLFONT}{OPENQUOTES}Deze soep met balletjes van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1596 :{SMALLFONT}{OPENQUOTES}Dit sap van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1597 :{SMALLFONT}{OPENQUOTES}Deze sojamelk van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1598 :{SMALLFONT}{OPENQUOTES}This sujongkwa van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1598 :{SMALLFONT}{OPENQUOTES}Deze sujeonggwa van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1599 :{SMALLFONT}{OPENQUOTES}Dit broodje van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1600 :{SMALLFONT}{OPENQUOTES}Dit koekje van {STRINGID} is erg goedkoop{ENDQUOTES}
STR_1601 :
@@ -1622,13 +1622,13 @@ STR_1620 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor warme chocolademe
STR_1621 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor ijsthee van {STRINGID}{ENDQUOTES}
STR_1622 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een funnel cake van {STRINGID}{ENDQUOTES}
STR_1623 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een zonnebril van {STRINGID}{ENDQUOTES}
STR_1624 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor beef noodles van {STRINGID}{ENDQUOTES}
STR_1625 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor fried rice noodles van {STRINGID}{ENDQUOTES}
STR_1626 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor wonton soup van {STRINGID}{ENDQUOTES}
STR_1627 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor meatball soup van {STRINGID}{ENDQUOTES}
STR_1624 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor rundernoedels van {STRINGID}{ENDQUOTES}
STR_1625 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor rijstnoedels van {STRINGID}{ENDQUOTES}
STR_1626 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor wantansoep van {STRINGID}{ENDQUOTES}
STR_1627 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor soep met balletjes van {STRINGID}{ENDQUOTES}
STR_1628 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor sap van {STRINGID}{ENDQUOTES}
STR_1629 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor sojamelk van {STRINGID}{ENDQUOTES}
STR_1630 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor sujongkwa van {STRINGID}{ENDQUOTES}
STR_1630 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor sujeonggwa van {STRINGID}{ENDQUOTES}
STR_1631 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een broodje van {STRINGID}{ENDQUOTES}
STR_1632 :{SMALLFONT}{OPENQUOTES}Zoveel betaal ik niet voor een koekje van {STRINGID}{ENDQUOTES}
STR_1633 :
@@ -1766,9 +1766,9 @@ STR_1764 :Balkendrempels
STR_1765 :Actiefoto-installatie
STR_1766 :Draaischijf
STR_1767 :Draaiende tunnel
STR_1768 :Can't change number of swings...
STR_1769 :{WINDOW_COLOUR_2}Number of swings:
STR_1770 :{SMALLFONT}{BLACK}Number of complete swings
STR_1768 :Kan het aantal schommelingen niet aanpassen...
STR_1769 :{WINDOW_COLOUR_2}Aantal schommelingen:
STR_1770 :{SMALLFONT}{BLACK}Aantal complete schommelingen
STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16}
STR_1772 :{COMMA16}
STR_1773 :Een attractie mag maar één actiefoto-installatie hebben
@@ -1790,8 +1790,8 @@ STR_1788 :{INLINE_SPRITE}{07}{20}{00}{00} Sheriffkostuum
STR_1789 :{INLINE_SPRITE}{08}{20}{00}{00} Piratenpak
STR_1790 :{SMALLFONT}{BLACK}Selecteer de uniformkleur voor dit type werknemer
STR_1791 :{WINDOW_COLOUR_2}Uniformkleur:
STR_1792 :Gaat naar {STRINGID} voor een reparatie
STR_1793 :Gaat naar {STRINGID} voor een inspectie
STR_1792 :Gaat {STRINGID} repareren
STR_1793 :Gaat {STRINGID} inspecteren
STR_1794 :Repareert {STRINGID}
STR_1795 :Beantwoordt radio-oproep
STR_1796 :Is defect en moet worden gerepareerd
@@ -1814,16 +1814,16 @@ STR_1812 :{SMALLFONT}{BLACK}{STRINGID}
STR_1813 :Overige objecten
STR_1814 :Acties
STR_1815 :Gedachten
STR_1816 :{SMALLFONT}{BLACK}Select information type to show in guest list
STR_1816 :{SMALLFONT}{BLACK}Selecteer het type informatie dat je in de gastenlijst wilt zien
STR_1817 :({COMMA16})
STR_1818 :{WINDOW_COLOUR_2}Alle bezoekers
STR_1819 :{WINDOW_COLOUR_2}Alle bezoekers (samengevat)
STR_1820 :{WINDOW_COLOUR_2}Guests {STRINGID}
STR_1821 :{WINDOW_COLOUR_2}Guests thinking {STRINGID}
STR_1822 :{WINDOW_COLOUR_2}Guests thinking about {POP16}{STRINGID}
STR_1823 :{SMALLFONT}{BLACK}Show guests' thoughts about this ride/attraction
STR_1824 :{SMALLFONT}{BLACK}Show guests on this ride/attraction
STR_1825 :{SMALLFONT}{BLACK}Show guests queuing for this ride/attraction
STR_1820 :{WINDOW_COLOUR_2}Bezoekers die {STRINGID}
STR_1821 :{WINDOW_COLOUR_2}Bezoekers die {STRINGID} denken
STR_1822 :{WINDOW_COLOUR_2}Bezoekers met gedachten over {POP16}{STRINGID}
STR_1823 :{SMALLFONT}{BLACK}Toon de gedachten van bezoekers over deze attractie
STR_1824 :{SMALLFONT}{BLACK}Toon de bezoekers in deze attractie
STR_1825 :{SMALLFONT}{BLACK}Toon de bezoekers die in de rij staan voor deze attractie
STR_1826 :Status
STR_1827 :Populariteit
STR_1828 :Voldoening
@@ -1842,15 +1842,15 @@ STR_1840 :Stilstandtijd: {COMMA16}%
STR_1841 :Winst: {CURRENCY} per uur
STR_1842 :Favoriete attractie van: {COMMA16} bezoeker
STR_1843 :Favoriete attractie van: {COMMA16} bezoekers
STR_1844 :{SMALLFONT}{BLACK}Select information type to show in ride/attraction list
STR_1844 :{SMALLFONT}{BLACK}Selecteer het type informatie dat je in de attractielijst wilt zien
STR_1845 :{MONTHYEAR}
STR_1846 :{COMMA16} bezoekers
STR_1847 :{INLINE_SPRITE}{11}{20}{00}{00}{COMMA16} bezoekers
STR_1848 :{INLINE_SPRITE}{10}{20}{00}{00}{COMMA16} bezoekers
STR_1849 :{WINDOW_COLOUR_2}Draai muziek
STR_1850 :{SMALLFONT}{BLACK}Select whether music should be played for this ride
STR_1851 :{WINDOW_COLOUR_2}Running cost: {BLACK}{CURRENCY2DP} per hour
STR_1852 :{WINDOW_COLOUR_2}Running cost: {BLACK}Unknown
STR_1850 :{SMALLFONT}{BLACK}Selecteer of er in deze attractie muziek moet worden gedraaid
STR_1851 :{WINDOW_COLOUR_2}Bedrijfskosten: {BLACK}{CURRENCY2DP} per uur
STR_1852 :{WINDOW_COLOUR_2}Bedrijfskosten: {BLACK}Onbekend
STR_1853 :{WINDOW_COLOUR_2}Bouw: {BLACK}dit jaar
STR_1854 :{WINDOW_COLOUR_2}Bouw: {BLACK}vorig jaar
STR_1855 :{WINDOW_COLOUR_2}Bouw: {BLACK}{COMMA16} jaar geleden
@@ -1867,15 +1867,15 @@ STR_1865 :Bewaker
STR_1866 :Entertainer
STR_1867 :{BLACK}{COMMA16} {STRINGID}
STR_1868 :Kan het aantal rotaties niet aanpassen...
STR_1869 :{WINDOW_COLOUR_2}Number of rotations:
STR_1870 :{SMALLFONT}{BLACK}Number of complete rotations
STR_1869 :{WINDOW_COLOUR_2}Aantal rotaties:
STR_1870 :{SMALLFONT}{BLACK}Aantal complete rotaties
STR_1871 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16}
STR_1872 :{COMMA16}
STR_1873 :{WINDOW_COLOUR_2}Inkomsten: {BLACK}{CURRENCY} per uur
STR_1874 :{WINDOW_COLOUR_2}Winst: {BLACK}{CURRENCY} per uur
STR_1875 :{BLACK} {SPRITE}{BLACK} {STRINGID}
STR_1876 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{251}{19}{00}{00}Inspect Rides
STR_1877 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{252}{19}{00}{00}Fix Rides
STR_1876 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{251}{19}{00}{00}Attracties inspecteren
STR_1877 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{252}{19}{00}{00}Attracties repareren
STR_1878 :{WINDOW_COLOUR_2}Inspectie:
STR_1879 :Elke 10 minuten
STR_1880 :Elke 20 minutes
@@ -1884,16 +1884,16 @@ STR_1882 :Elke 45 minutes
STR_1883 :Elk uur
STR_1884 :Elke 2 uur
STR_1885 :Nooit
STR_1886 :Inspecting {STRINGID}
STR_1887 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}{COMMA16} minutes
STR_1888 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}more than 4 hours
STR_1886 :Inspecteert {STRINGID}
STR_1887 :{WINDOW_COLOUR_2}Tijd sinds laatste inspectie: {BLACK}{COMMA16} minuten
STR_1888 :{WINDOW_COLOUR_2}Tijd sinds laatste inspectie: {BLACK}meer dan 4 uur
STR_1889 :{WINDOW_COLOUR_2}Stilstandtijd: {MOVE_X}{255}{BLACK}{COMMA16}%
STR_1890 :{SMALLFONT}{BLACK}Select how often a mechanic should check this ride
STR_1891 :No {STRINGID} in park yet!
STR_1890 :{SMALLFONT}{BLACK}Selecteer hoe vaak een monteur deze attractie moet inspecteren
STR_1891 :Nog geen {STRINGID} in het park!
STR_1892 :RollerCoaster Tycoon 2
STR_1893 :Please insert your RollerCoaster Tycoon 2 CD in the folLaaging drive:-
STR_1893 :Voer je CD van RollerCoaster Tycoon 2 in het volgende stationCD in the folLaaging drive:
STR_1894 :{WINDOW_COLOUR_2}{STRINGID} verkocht: {BLACK}{COMMA32}
STR_1895 :{SMALLFONT}{BLACK}Build new ride/attraction
STR_1895 :{SMALLFONT}{BLACK}Nieuwe attractie bouwen
STR_1896 :{WINDOW_COLOUR_2}Uitgaven/Inkomsten
STR_1897 :{WINDOW_COLOUR_2}Attractiebouw
STR_1898 :{WINDOW_COLOUR_2}Attractiebedrijf
@@ -1935,18 +1935,18 @@ STR_1933 :{STRINGID} is nu in {STRINGID}
STR_1934 :{STRINGID} heeft {STRINGID} verlaten
STR_1935 :{STRINGID} heeft het park verlaten
STR_1936 :{STRINGID} heeft {STRINGID} gekocht
STR_1937 :{SMALLFONT}{BLACK}Show information about the subject of this message
STR_1938 :{SMALLFONT}{BLACK}Show view of guest
STR_1939 :{SMALLFONT}{BLACK}Show view of staff member
STR_1940 :{SMALLFONT}{BLACK}Show happiness, energy, hunger etc. for this guest
STR_1941 :{SMALLFONT}{BLACK}Show which rides this guest has been on
STR_1942 :{SMALLFONT}{BLACK}Show financial information about this guest
STR_1943 :{SMALLFONT}{BLACK}Show guest's recent thoughts
STR_1944 :{SMALLFONT}{BLACK}Show items guest is carrying
STR_1945 :{SMALLFONT}{BLACK}Show orders and options for this staff member
STR_1946 :{SMALLFONT}{BLACK}Select costume for this entertainer
STR_1947 :{SMALLFONT}{BLACK}Show areas patrolled by selected staff type, and locate the nearest staff member
STR_1948 :{SMALLFONT}{BLACK}Hire a new staff member of the selected type
STR_1937 :{SMALLFONT}{BLACK}Informatie tonen over het onderwerp van dit bericht
STR_1938 :{SMALLFONT}{BLACK}Beeld van bezoeker tonen
STR_1939 :{SMALLFONT}{BLACK}Beeld van werknemer tonen
STR_1940 :{SMALLFONT}{BLACK}Stemming, energie, hongerniveau e.d. van deze bezoeker tonen
STR_1941 :{SMALLFONT}{BLACK}Tonen in welke attracties deze bezoeker is geweest
STR_1942 :{SMALLFONT}{BLACK}Financiële informatie over deze bezoeker tonen
STR_1943 :{SMALLFONT}{BLACK}Recente gedachten van deze bezoeker tonen
STR_1944 :{SMALLFONT}{BLACK}Toon de dingen die de gast bij zich heeft
STR_1945 :{SMALLFONT}{BLACK}Orders en opties voor deze werknemer tonen
STR_1946 :{SMALLFONT}{BLACK}Kostuum van deze entertainer selecteren
STR_1947 :{SMALLFONT}{BLACK}Werkgebieden van het geselecteerde type werknemer weergeven, en de dichtstbijzijnde werknemer localiseren
STR_1948 :{SMALLFONT}{BLACK}Nieuwe werknemer van het geselecteerde type aannemen
STR_1949 :Samenvatting financiën
STR_1950 :Grafiek financiën
STR_1951 :Grafiek van parkwaardering
@@ -2015,25 +2015,25 @@ STR_2013 :Limonade
STR_2014 :Lege doos
STR_2015 :Lege fles
STR_2016 :Ballonnen
STR_2017 :Cuddly Toys
STR_2018 :Park Maps
STR_2017 :Knuffels
STR_2018 :Parkplattegronden
STR_2019 :Actiefoto's
STR_2020 :Umbrellas
STR_2021 :Drinks
STR_2022 :Burgers
STR_2023 :Fries
STR_2024 :Ice Creams
STR_2025 :Cotton Candy
STR_2026 :Empty Cans
STR_2027 :Rubbish
STR_2028 :Empty Burger Boxes
STR_2029 :Pizzas
STR_2030 :Vouchers
STR_2031 :Popcorn
STR_2032 :Hot Dogs
STR_2033 :Tentacles
STR_2034 :Hats
STR_2035 :Candy Apples
STR_2020 :Paraplu's
STR_2021 :Blikjes frisdrank
STR_2022 :Hamburgers
STR_2023 :Zakjes fries
STR_2024 :IJsjes
STR_2025 :Suikerspinnen
STR_2026 :Lege blikjes
STR_2027 :Stuks rommel
STR_2028 :Lege hamburgerdozen
STR_2029 :Pizza's
STR_2030 :Bonnen
STR_2031 :Bakjes popcorn
STR_2032 :Hotdogs
STR_2033 :Tentakels
STR_2034 :Hoeden
STR_2035 :Toffeeappels
STR_2036 :T-shirts
STR_2037 :Donuts
STR_2038 :Kopjes koffie
@@ -2106,13 +2106,13 @@ STR_2104 :{WINDOW_COLOUR_2}Prijs warme chocolademelk:
STR_2105 :{WINDOW_COLOUR_2}Prijs ijsthee:
STR_2106 :{WINDOW_COLOUR_2}Prijs funnel cake:
STR_2107 :{WINDOW_COLOUR_2}Prijs zonnebril:
STR_2108 :{WINDOW_COLOUR_2}Beef Noodles price:
STR_2109 :{WINDOW_COLOUR_2}Fried Rice Noodles price:
STR_2110 :{WINDOW_COLOUR_2}Wonton Soup price:
STR_2111 :{WINDOW_COLOUR_2}Meatball Soup price:
STR_2108 :{WINDOW_COLOUR_2}Prijs rundernoedels:
STR_2109 :{WINDOW_COLOUR_2}Prijs rijstnoedels:
STR_2110 :{WINDOW_COLOUR_2}Prijs wantansoep:
STR_2111 :{WINDOW_COLOUR_2}Prijs soep met balletjes:
STR_2112 :{WINDOW_COLOUR_2}Prijs sap:
STR_2113 :{WINDOW_COLOUR_2}Prijs sojamelk:
STR_2114 :{WINDOW_COLOUR_2}Sujongkwa price:
STR_2114 :{WINDOW_COLOUR_2}Prijs sujeonggwa:
STR_2115 :{WINDOW_COLOUR_2}Prijs broodje:
STR_2116 :{WINDOW_COLOUR_2}Prijs koekje:
STR_2117 :{WINDOW_COLOUR_2}
@@ -2128,13 +2128,13 @@ STR_2126 :Warme chocolademelk
STR_2127 :IJsthee
STR_2128 :Funnel cake
STR_2129 :Zonnebril
STR_2130 :Beef Noodles
STR_2131 :Fried Rice Noodles
STR_2132 :Wonton Soup
STR_2133 :Meatball Soup
STR_2130 :Rundernoedels
STR_2131 :Rijstnoedels
STR_2132 :Wantansoep
STR_2133 :Soep met balletjes
STR_2134 :Sap
STR_2135 :Sojamelk
STR_2136 :Sujongkwa
STR_2136 :Sujeonggwa
STR_2137 :Broodje
STR_2138 :Koekje
STR_2139 :Lege kom
@@ -2148,22 +2148,22 @@ STR_2146 :Actiefoto's
STR_2147 :Krakelingen
STR_2148 :Warme chocolademelk
STR_2149 :IJsthee
STR_2150 :Funnel Cakes
STR_2151 :Sunglasses
STR_2152 :Beef Noodles
STR_2153 :Fried Rice Noodles
STR_2154 :Wonton Soups
STR_2155 :Meatball Soups
STR_2150 :Funnel cakes
STR_2151 :Zonnebrillen
STR_2152 :Rundernoedels
STR_2153 :Rijstnoedels
STR_2154 :Kommen wantansoep
STR_2155 :Kommen soep met balletjes
STR_2156 :Sap
STR_2157 :Sojamelk
STR_2158 :Sujongkwa
STR_2158 :Sujeonggwa
STR_2159 :Broodjes
STR_2160 :Koekjes
STR_2161 :Lege kommen
STR_2162 :Empty Drink Cartons
STR_2163 :Empty Juice cups
STR_2164 :gebraden worsts
STR_2165 :Empty Bowls
STR_2162 :Lege drinkkartons
STR_2163 :Lege sapbekers
STR_2164 :gebraden worsten
STR_2165 :Lege kommen
STR_2166 :een actiefoto
STR_2167 :een actiefoto
STR_2168 :een actiefoto
@@ -2172,41 +2172,41 @@ STR_2170 :warme chocolademelk
STR_2171 :ijsthee
STR_2172 :een funnel cake
STR_2173 :een zonnebril
STR_2174 :some Beef Noodles
STR_2175 :some Fried Rice Noodles
STR_2176 :some Wonton Soup
STR_2177 :some Meatball Soup
STR_2174 :rundernoedels
STR_2175 :rijstnoedels
STR_2176 :wantansoep
STR_2177 :soep met balletjes
STR_2178 :sap
STR_2179 :sojamelk
STR_2180 :some Sujongkwa
STR_2180 :sujeonggwa
STR_2181 :een broodje
STR_2182 :een koekje
STR_2183 :an Empty Bowl
STR_2184 :an Empty Drink Carton
STR_2185 :an Empty Juice Cup
STR_2186 :a gebraden worst
STR_2187 :an Empty Bowl
STR_2183 :een lege kom
STR_2184 :een leeg drinkarton
STR_2185 :een lege sapbeker
STR_2186 :een gebraden worst
STR_2187 :een lege kom
STR_2188 :Actiefoto van {STRINGID}
STR_2189 :Actiefoto van {STRINGID}
STR_2190 :Actiefoto van {STRINGID}
STR_2191 :krakeling
STR_2192 :warme chocolademelk
STR_2193 :ijsthee
STR_2191 :Krakeling
STR_2192 :Warme chocolademelk
STR_2193 :IJsthee
STR_2194 :Funnel cake
STR_2195 :Zonnebril
STR_2196 :Beef Noodles
STR_2197 :Fried Rice Noodles
STR_2198 :Wonton Soup
STR_2199 :Meatball Soup
STR_2200 :sap
STR_2201 :sojamelk
STR_2202 :Sujongkwa
STR_2203 :Sub Sandwich
STR_2204 :Cookie
STR_2205 :Empty Bowl
STR_2206 :Empty Drink Carton
STR_2207 :Empty Juice Cup
STR_2208 :gebraden worst
STR_2196 :Rundernoedels
STR_2197 :Rijstnoedels
STR_2198 :Wantansoep
STR_2199 :Soep met balletjes
STR_2200 :Sap
STR_2201 :Sojamelk
STR_2202 :Sujeonggwa
STR_2203 :Broodje
STR_2204 :Koekje
STR_2205 :Lege kom
STR_2206 :Leeg drinkkarton
STR_2207 :Lege sapbeker
STR_2208 :Gebraden worst
STR_2209 :Lege kom
STR_2210 :{SMALLFONT}{BLACK}Toon lijst van klusjesmannen in het park
STR_2211 :{SMALLFONT}{BLACK}Toon lijst van monteurs in het park
@@ -2227,7 +2227,7 @@ STR_2225 :{WINDOW_COLOUR_2}Contant: {RED}{CURRENCY2DP}
STR_2226 :{WINDOW_COLOUR_2}Parkwaarde: {BLACK}{CURRENCY}
STR_2227 :{WINDOW_COLOUR_2}Bedrijfswaarde: {BLACK}{CURRENCY}
STR_2228 :{WINDOW_COLOUR_2}Inkomsten horeca en merchandise{NEWLINE}vorige maand: {BLACK}{CURRENCY}
STR_2229 :Helling omhoog naar vertical
STR_2229 :Helling omhoog naar verticaal
STR_2230 :Verticale baan
STR_2231 :Vasthoudrem voor afdaling
STR_2232 :Kabelliftheuvel
@@ -2247,10 +2247,10 @@ STR_2245 :oktober
STR_2246 :november
STR_2247 :december
STR_2248 :Kan deze attractie niet afbreken...
STR_2249 :{BABYBLUE}New ride/attraction now available:-{NEWLINE}{STRINGID}
STR_2250 :{BABYBLUE}New scenery/themeing now available:-{NEWLINE}{STRINGID}
STR_2251 :Can only be built on paths!
STR_2252 :Can only be built across paths!
STR_2249 :{BABYBLUE}Nieuwe attractie is nu beschikbaar:{NEWLINE}{STRINGID}
STR_2250 :{BABYBLUE}Nieuw decor/thema is nu beschikbaar:{NEWLINE}{STRINGID}
STR_2251 :Kan alleen op paden worden gebouwd!
STR_2252 :Kan alleen over paden worden gebouwd!
STR_2253 :Transportattracties
STR_2254 :Rustige attracties
STR_2255 :Achtbanen
@@ -2272,9 +2272,9 @@ STR_2270 :{WINDOW_COLOUR_2}Voortgang: {BLACK}{STRINGID}
STR_2271 :{WINDOW_COLOUR_2}Verwacht: {BLACK}{STRINGID}
STR_2272 :{WINDOW_COLOUR_2}Attractie:{NEWLINE}{BLACK}{STRINGID}
STR_2273 :{WINDOW_COLOUR_2}Decor/thema:{NEWLINE}{BLACK}{STRINGID}
STR_2274 :{SMALLFONT}{BLACK}Show details of this invention or development
STR_2275 :{SMALLFONT}{BLACK}Show funding and options for research & development
STR_2276 :{SMALLFONT}{BLACK}Show research & development status
STR_2274 :{SMALLFONT}{BLACK}Details van deze uitvinding of ontwikkeling tonen
STR_2275 :{SMALLFONT}{BLACK}Budget en opties voor onderzoek en ontwikkeling tonen
STR_2276 :{SMALLFONT}{BLACK}Status van onderzoek en ontwikkeling tonen
STR_2277 :Onbekend
STR_2278 :Transportattractie
STR_2279 :Rustige attractie
@@ -2289,26 +2289,26 @@ STR_2287 :Ontwerp voltooien
STR_2288 :Onbekend
STR_2289 :{STRINGID} {STRINGID}
STR_2290 :{SMALLFONT}{BLACK}{STRINGID} {STRINGID}
STR_2291 :Select scenario for new game
STR_2292 :{WINDOW_COLOUR_2}Rides been on:
STR_2291 :Selecteer een scenario voor een nieuw spel
STR_2292 :{WINDOW_COLOUR_2}Bezochte attracties:
STR_2293 :{BLACK} Geen
STR_2294 :{SMALLFONT}{BLACK}Change base land style
STR_2295 :{SMALLFONT}{BLACK}Change vertical edges of land
STR_2296 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} paid to enter park
STR_2297 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} ride
STR_2298 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} rides
STR_2299 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} item of food
STR_2300 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} items of food
STR_2301 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} drink
STR_2302 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} drinks
STR_2303 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} souvenir
STR_2304 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} spent on {BLACK}{COMMA16} souvenirs
STR_2305 :Track design files
STR_2306 :Save track design
STR_2307 :Select {STRINGID} design
STR_2308 :{STRINGID} Track Designs
STR_2309 :Install New Track Design
STR_2310 :Build custom design
STR_2294 :{SMALLFONT}{BLACK}Bovenkant land aanpassen
STR_2295 :{SMALLFONT}{BLACK}Zijkant land aanpassen
STR_2296 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} betaald voor entree
STR_2297 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgeven aan {BLACK}{COMMA16} attractie
STR_2298 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} attracties
STR_2299 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} stuk voedsel
STR_2300 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} stuks voedsel
STR_2301 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} drankjr
STR_2302 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} drankjes
STR_2303 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} souvenir
STR_2304 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2} uitgegeven aan {BLACK}{COMMA16} souvenirs
STR_2305 :Baantontwerpbestanden
STR_2306 :Baanontwerp opslaan
STR_2307 :Ontwerp voor {STRINGID} selecteren
STR_2308 :Baanontwerpen voor {STRINGID}
STR_2309 :Nieuw baanontwerp installeren
STR_2310 :Eigen ontwerp bouwen
STR_2311 :{WINDOW_COLOUR_2}Spanningswaarde: {BLACK}{COMMA2DP32} (ongeveer)
STR_2312 :{WINDOW_COLOUR_2}Intensiteitswaarde: {BLACK}{COMMA2DP32} (ongeveer)
STR_2313 :{WINDOW_COLOUR_2}Misselheidswaarde: {BLACK}{COMMA2DP32} (ongeveer)
@@ -2376,82 +2376,82 @@ STR_2374 :Hoog
STR_2375 :Zeer hoog
STR_2376 :Extreem
STR_2377 :Ultra-extreem
STR_2378 :{SMALLFONT}{BLACK}Adjust smaller area of land
STR_2379 :{SMALLFONT}{BLACK}Adjust larger area of land
STR_2380 :{SMALLFONT}{BLACK}Adjust smaller area of water
STR_2381 :{SMALLFONT}{BLACK}Adjust larger area of water
STR_2378 :{SMALLFONT}{BLACK}Kleiner stuk land aanpassen
STR_2379 :{SMALLFONT}{BLACK}Groter stuk land aanpassen
STR_2380 :{SMALLFONT}{BLACK}Kleiner stuk water aanpassen
STR_2381 :{SMALLFONT}{BLACK}Groter stuk water aanpassen
STR_2382 :Land
STR_2383 :Water
STR_2384 :{WINDOW_COLOUR_2}Je doel:
STR_2385 :{BLACK}Geen
STR_2386 :{BLACK}Om minstens {COMMA16} bezoekers in je park toe hebben aan het einde van {MONTHYEAR}, met een parkwaardering van ten minste 600
STR_2387 :{BLACK}To achieve a park value of at least {POP16}{POP16}{CURRENCY} at the end of {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
STR_2387 :{BLACK}Om een parkwaarde van minstens {POP16}{POP16}{CURRENCY} te hebben aan het einde van {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
STR_2388 :{BLACK}Om plezier te hebben!
STR_2389 :{BLACK}Build the best {STRINGID} you can!
STR_2390 :{BLACK}To have 10 different types of roller coasters operating in your park, each with an excitement value of at least 6.00
STR_2391 :{BLACK}To have at least {COMMA16} guests in your park. You must not let the park rating drop beLaag 700 at any time!
STR_2392 :{BLACK}To achieve a monthly income from ride tickets of at least {POP16}{POP16}{CURRENCY}
STR_2393 :{BLACK}To have 10 different types of roller coasters operating in your park, each with a minimum length of {LENGTH}, and an excitement rating of at least 7.00
STR_2394 :{BLACK}To finish building all 5 of the partially built roller coasters in this park, designing them to achieve excitement ratings of at least {POP16}{POP16}{COMMA2DP32} each
STR_2395 :{BLACK}To repay your loan and achieve a park value of at least {POP16}{POP16}{CURRENCY}
STR_2396 :{BLACK}To achieve a monthly profit from food, drink and merchandise sales of at least {POP16}{POP16}{CURRENCY}
STR_2389 :{BLACK}Om de beste {STRINGID} te bouwen!
STR_2390 :{BLACK}Om 10 verschillende typen achtbanen in je park te hebben, elk met een spanningswaarde van minstens 6,00
STR_2391 :{BLACK}Om minstens {COMMA16} bezoekers in je park te hebben. Je parkwaardering mag geen moment onder de 700 komen!
STR_2392 :{BLACK}Om in één maand minstens {POP16}{POP16}{CURRENCY} aan attractiekaartjes te verdienen
STR_2393 :{BLACK}Om 10 verschillende typen achtbanen in je park te hebben, elk met een lengte van minstens {LENGTH}, en een spanningswaarde van minstens 7,00
STR_2394 :{BLACK}Om alle 5 deels gebouwde achtbanen in je park af te maken, ek met een spanningswaarde van minstens {POP16}{POP16}{COMMA2DP32}
STR_2395 :{BLACK}Om je lening terug te betalen en een parkwaarde van minstens {POP16}{POP16}{CURRENCY} te bereiken
STR_2396 :{BLACK}Om in één maand minstens {POP16}{POP16}{CURRENCY} aan de verkoop van eten, drinken en merchandise te verdienen
STR_2397 :Geen
STR_2398 :Number of guests at a given date
STR_2399 :Park value at a given date
STR_2400 :Have fun
STR_2401 :Build the best ride you can
STR_2402 :Build 10 roller coasters
STR_2403 :Number of guests in park
STR_2404 :Monthly income from ride tickets
STR_2405 :Build 10 roller coasters of a given length
STR_2406 :Finish building 5 roller coasters
STR_2407 :Repay loan and achieve a given park value
STR_2408 :Monthly profit from food/merchandise
STR_2409 :{WINDOW_COLOUR_2}Marketing campaigns in operation
STR_2398 :Aantal bezoekers op een bepaalde datum
STR_2399 :Parkwaarde op een bepaalde datum
STR_2400 :Plezier hebben
STR_2401 :De beste attractie te bouwen
STR_2402 :10 achtbanen bouwen
STR_2403 :Aantal bezoekers in het park
STR_2404 :Maandelijks inkomen van attractiekaartjes
STR_2405 :10 achtbanen van een bepaalde lengte bouwen
STR_2406 :5 achtbanen afmaken
STR_2407 :Lening terugbetalen en een bepaalde parkwaarde bereiken
STR_2408 :Maandelijks inkomen van voedsel/merchandise
STR_2409 :{WINDOW_COLOUR_2}Lopende marketingcampagnes
STR_2410 :{BLACK}Geen
STR_2411 :{WINDOW_COLOUR_2}Marketing campaigns available
STR_2412 :{SMALLFONT}{BLACK}Start this marketing campaign
STR_2411 :{WINDOW_COLOUR_2}Beschikbare marketingcampagnes
STR_2412 :{SMALLFONT}{BLACK}Deze marketingcampagne starten
STR_2413 :{BLACK}({CURRENCY2DP} per week)
STR_2414 :(Not Selected)
STR_2415 :{WINDOW_COLOUR_2}Ride:
STR_2414 :(niet geselecteerd)
STR_2415 :{WINDOW_COLOUR_2}Attractie:
STR_2416 :{WINDOW_COLOUR_2}Item:
STR_2417 :{WINDOW_COLOUR_2}Length of time:
STR_2417 :{WINDOW_COLOUR_2}Tijdsduur:
STR_2418 :Gratis entree voor {STRINGID}
STR_2419 :Gratis toegang tot {STRINGID}
STR_2420 :Half-price entry to {STRINGID}
STR_2420 :50% korting op entree voor {STRINGID}
STR_2421 :Gratis {STRINGID}
STR_2422 :Advertentiecampagne voor {STRINGID}
STR_2423 :Advertentiecampagne voor {STRINGID}
STR_2424 :{WINDOW_COLOUR_2}Vouchers for free entry to the park
STR_2425 :{WINDOW_COLOUR_2}Vouchers for free rides on a particular ride
STR_2426 :{WINDOW_COLOUR_2}Vouchers for half-price entry to the park
STR_2427 :{WINDOW_COLOUR_2}Vouchers for free food or drink
STR_2428 :{WINDOW_COLOUR_2}Advertising campaign for the park
STR_2429 :{WINDOW_COLOUR_2}Advertising campaign for a particular ride
STR_2430 :{BLACK}Vouchers for free entry to {STRINGID}
STR_2431 :{BLACK}Vouchers for free ride on {STRINGID}
STR_2432 :{BLACK}Vouchers for half-price entry to {STRINGID}
STR_2433 :{BLACK}Vouchers for free {STRINGID}
STR_2434 :{BLACK}Advertising campaign for {STRINGID}
STR_2435 :{BLACK}Advertising campaign for {STRINGID}
STR_2424 :{WINDOW_COLOUR_2}Bonnen voor gratis entree
STR_2425 :{WINDOW_COLOUR_2}Bonnen voor gratis ritten op een bepaalde attractie
STR_2426 :{WINDOW_COLOUR_2}Bonnen voor 50% korting op de entreeprijs
STR_2427 :{WINDOW_COLOUR_2}Bonnen voor gratis eten of drinken
STR_2428 :{WINDOW_COLOUR_2}Advertentiecampagne voor het park
STR_2429 :{WINDOW_COLOUR_2}Advertentiecampagne voor een bepaalde attractie
STR_2430 :{BLACK}Bonnen voor gratis entree voor {STRINGID}
STR_2431 :{BLACK}Bonnen voor een gratis rit in {STRINGID}
STR_2432 :{BLACK}Bonnen voor 50% korting op entree voor {STRINGID}
STR_2433 :{BLACK}Bonnen voor gratis {STRINGID}
STR_2434 :{BLACK}Advertentiecampagne voor {STRINGID}
STR_2435 :{BLACK}Advertentiecampagne voor {STRINGID}
STR_2436 :1 week
STR_2437 :2 weken
STR_2438 :3 weken
STR_2439 :4 weken
STR_2440 :5 weken
STR_2441 :6 weken
STR_2442 :{BLACK}({STRINGID} remaining)
STR_2443 :{WINDOW_COLOUR_2}Cost per week: {BLACK}{CURRENCY2DP}
STR_2444 :{WINDOW_COLOUR_2}Total cost: {BLACK}{CURRENCY2DP}
STR_2445 :Start this marketing campaign
STR_2442 :{BLACK}({STRINGID} resterend)
STR_2443 :{WINDOW_COLOUR_2}Kosten per week: {BLACK}{CURRENCY2DP}
STR_2444 :{WINDOW_COLOUR_2}Totale kosten: {BLACK}{CURRENCY2DP}
STR_2445 :Start deze marketingcampagne
STR_2446 :{YELLOW}Your marketing campaign for free entry to the park has finished
STR_2447 :{YELLOW}Your marketing campaign for free rides on {STRINGID} has finished
STR_2448 :{YELLOW}Your marketing campaign for half-price entry to the park has finished
STR_2449 :{YELLOW}Your marketing campaign for free {STRINGID} has finished
STR_2450 :{YELLOW}Your advertising campaign for the park has finished
STR_2451 :{YELLOW}Your advertising campaign for {STRINGID} has finished
STR_2452 :{WINDOW_COLOUR_2}Cash (less loan): {BLACK}{CURRENCY2DP}
STR_2453 :{WINDOW_COLOUR_2}Cash (less loan): {RED}{CURRENCY2DP}
STR_2452 :{WINDOW_COLOUR_2}Saldo (zonder lening): {BLACK}{CURRENCY2DP}
STR_2453 :{WINDOW_COLOUR_2}Saldo (zonder lening): {RED}{CURRENCY2DP}
STR_2454 :{SMALLFONT}{BLACK}{CURRENCY2DP} -
STR_2455 :{SMALLFONT}{BLACK}+{CURRENCY2DP} -
STR_2456 :{SMALLFONT}{BLACK}{CURRENCY2DP} -

View File

@@ -540,4 +540,12 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
break;
}
}
/**
* rct2: 0x00698827
* returns 1 on pickup (CF not set)
*/
int peep_can_be_picked_up(rct_peep* peep){
return RCT2_ADDRESS(0x982004, uint8)[peep->state] & 1;
}

View File

@@ -437,6 +437,7 @@ typedef struct {
if (peep->type == PEEP_TYPE_STAFF)
int peep_get_staff_count();
int peep_can_be_picked_up(rct_peep* peep);
void peep_update_all();
void peep_problem_warnings_update();
void peep_update_crowd_noise();

View File

@@ -54,7 +54,7 @@ typedef struct {
uint8 status; // 0x049
uint16 var_04A;
uint32 var_04C;
uint16 overall_view; // 0x050
uint16 overall_view; // 0x050 00XX = X, XX00 = Y (* 32 + 16)
uint16 station_starts[4]; // 0x052
uint8 station_heights[4]; // 0x05A
uint8 pad_05E[0xC];
@@ -103,10 +103,13 @@ typedef struct {
uint8 pad_14E[0x06];
uint32 var_154;
uint16 var_158;
uint8 pad_15A[0x26];
uint8 pad_15A;
uint8 num_riders; // 0x15B
uint8 pad_15C[0x24];
uint16 build_date;
sint16 upkeep_cost; // 0x182
uint8 pad_184[0x12];
uint16 race_winner; // 0x184
uint8 pad_186[0x10];
uint16 var_196;
// used in computing excitement, nausea, etc
uint8 var_198;

View File

@@ -134,6 +134,8 @@ enum {
enum {
STR_NONE = -1,
STR_GUEST = 767,
STR_DATE_DAY_1 = 779,
STR_DATE_DAY_2 = STR_DATE_DAY_1 + 1,
STR_DATE_DAY_3 = STR_DATE_DAY_1 + 2,
@@ -294,6 +296,8 @@ enum {
STR_OPEN = 1196,
STR_BROKEN_DOWN = 1197,
STR_CRASHED = 1198,
STR_PERSON_ON_RIDE = 1199,
STR_PEOPLE_ON_RIDE = 1200,
STR_QUEUE_EMPTY = 1201,
STR_QUEUE_ONE_PERSON = 1202,
@@ -371,6 +375,9 @@ enum {
STR_CANT_OPEN_PARK = 1723,
STR_CANT_CLOSE_PARK = 1724,
STR_RACE_WON_BY_GUEST = 1739,
STR_RACE_WON_BY = 1740,
STR_INDIVIDUAL_GUESTS_TIP = 1752,
STR_SUMMARISED_GUESTS_TIP = 1753,
STR_ADMISSION_PRICE = 1756,

View File

@@ -41,4 +41,7 @@ typedef struct {
void vehicle_update_all();
/** Helper macro until rides are stored in this module. */
#define GET_VEHICLE(sprite_index) &(g_sprite_list[sprite_index].vehicle)
#endif

View File

@@ -162,7 +162,7 @@ void viewport_create(rct_window *w, int x, int y, int width, int height, int zoo
viewport->width = width;
viewport->height = height;
if (!(flags & (1 << 0))){
if (!(flags & VIEWPORT_FOCUS_TYPE_COORDINATE)){
zoom = 0;
}
@@ -171,12 +171,12 @@ void viewport_create(rct_window *w, int x, int y, int width, int height, int zoo
viewport->zoom = zoom;
viewport->flags = 0;
if (RCT2_GLOBAL(0x9AAC7A, uint8) & 1){
if (RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_KEYBOARD_SHORTCUTS, uint8) & 1){
viewport->flags |= VIEWPORT_FLAG_GRIDLINES;
}
w->viewport = viewport;
if (flags & (1<<1)){
if (flags & VIEWPORT_FOCUS_TYPE_SPRITE){
w->viewport_target_sprite = sprite;
rct_sprite* center_sprite = &g_sprite_list[sprite];
center_x = center_sprite->unknown.x;

View File

@@ -27,6 +27,7 @@
#include "widget.h"
#include "window.h"
#include "viewport.h"
#include "sprite.h"
#define RCT2_FIRST_WINDOW (RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window))
#define RCT2_LAST_WINDOW (RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*) - 1)
@@ -394,11 +395,11 @@ rct_window *window_create(int x, int y, int width, int height, uint32 *event_han
w->disabled_widgets = 0;
w->pressed_widgets = 0;
w->var_020 = 0;
w->var_480 = 0;
w->var_482 = 0;
w->var_484 = 0;
w->var_486 = 0;
w->var_488 = 0;
w->viewport_focus_coordinates.var_480 = 0;
w->viewport_focus_coordinates.x = 0;
w->viewport_focus_coordinates.y = 0;
w->viewport_focus_coordinates.z = 0;
w->viewport_focus_coordinates.rotation = 0;
w->page = 0;
w->var_48C = 0;
w->frame_no = 0;
@@ -885,6 +886,35 @@ rct_window *window_get_main()
return NULL;
}
/**
* Based on
* rct2: 0x696ee9 & 0x66842F
*
*/
void window_scroll_to_viewport(rct_window *w)
{
int x, y, z;
rct_window *mainWindow;
// In original checked to make sure x and y were not -1 as well.
if (w->viewport == NULL || w->viewport_focus_coordinates.y == -1)
return;
if (w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_SPRITE) {
rct_sprite *sprite = &(g_sprite_list[w->viewport_focus_sprite.sprite_id]);
x = sprite->unknown.x;
y = sprite->unknown.y;
z = sprite->unknown.z;
} else {
x = w->viewport_focus_coordinates.x;
y = w->viewport_focus_coordinates.y & VIEWPORT_FOCUS_Y_MASK;
z = w->viewport_focus_coordinates.z;
}
mainWindow = window_get_main();
if (mainWindow != NULL)
window_scroll_to_location(mainWindow, x, y, z);
}
/**
*
* rct2: 0x006E7C9C

View File

@@ -93,6 +93,69 @@ typedef struct {
sint16 v_thumb_bottom; // 0x10
} rct_scroll;
/**
* Viewport focus structure.
* size: 0xA
* Use sprite.type to work out type.
*/
typedef struct{
sint16 var_480;
sint16 x; //0x482
sint16 y; //0x484 & VIEWPORT_FOCUS_Y_MASK
sint16 z; //0x486
uint8 rotation;//0x488
uint8 pad_489;
} coordinate_focus;
// Type is viewport_target_sprite_id & 0x80000000 != 0
typedef struct{
sint16 var_480;
uint16 sprite_id; //0x482
uint8 pad_484;
uint8 type; //0x485 & VIEWPORT_FOCUS_TYPE_MASK
uint16 pad_486;
uint8 rotation; //0x488
uint8 pad_489;
} sprite_focus;
#define VIEWPORT_FOCUS_TYPE_MASK 0xC0
enum{
VIEWPORT_FOCUS_TYPE_COORDINATE = (1<<6),
VIEWPORT_FOCUS_TYPE_SPRITE = (1<<7)
};
#define VIEWPORT_FOCUS_Y_MASK 0x3FFF;
typedef struct{
sint16 campaign_type;
sint16 no_weeks; //0x482
uint16 ride_id; //0x484
uint32 pad_486;
} campaign_variables;
typedef struct{
sint16 selected_ride_id; //0x480
sint16 highlighted_ride_id; //0x482
uint16 pad_484;
uint16 pad_486;
uint16 selected_ride_countdown; //488
} new_ride_variables;
typedef struct{
sint16 var_480;
sint16 var_482;
uint16 var_484;
uint16 var_486;
uint16 var_488;
} news_variables;
typedef struct{
sint16 rotation;
sint16 var_482;
uint16 var_484;
uint16 var_486;
uint16 var_488;
}map_variables;
/**
* Window structure
* size: 0x4C0
@@ -122,11 +185,14 @@ typedef struct rct_window {
sint16 selected_list_item; // 0x47A -1 for none selected
sint16 pad_47C;
sint16 pad_47E;
sint16 var_480;
sint16 var_482; // viewport target x
sint16 var_484; // viewport target y
sint16 var_486; // viewport target z
sint16 var_488; // viewport rotation << 8
union{
coordinate_focus viewport_focus_coordinates;
sprite_focus viewport_focus_sprite;
campaign_variables campaign;
new_ride_variables new_ride;
news_variables news;
map_variables map;
};
sint16 page; // 0x48A
sint16 var_48C;
sint16 frame_no; // 0x48E updated every tic for motion in windows sprites
@@ -326,6 +392,7 @@ void window_push_others_below(rct_window *w1);
rct_window *window_get_main();
void window_scroll_to_viewport(rct_window *w);
void window_scroll_to_location(rct_window *w, int x, int y, int z);
void window_rotate_camera(rct_window *w);
void window_zoom_in(rct_window *w);
@@ -374,7 +441,7 @@ void window_park_objective_open();
void window_park_rating_open();
void window_finances_open();
void window_finances_research_open();
void window_new_campaign_open(int campaignType);
void window_new_campaign_open(sint16 campaignType);
void window_ride_list_open();
void window_new_ride_open();
void window_banner_open();

View File

@@ -162,7 +162,7 @@ void window_map_open()
w->var_020 |= 0x300;
window_init_scroll_widgets(w);
w->var_480 = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint16);
w->map.rotation = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint16);
window_map_init_map();
RCT2_GLOBAL(0x00F64F05, uint8) = 0;

View File

@@ -128,7 +128,7 @@ int ride_name_compare(const void *a, const void *b)
*
* rct2: 0x0069E16F
*/
void window_new_campaign_open(int campaignType)
void window_new_campaign_open(sint16 campaignType)
{
// RCT2_CALLPROC_X(0x0069E16F, campaignType, 0, 0, 0, 0, 0, 0);
@@ -138,7 +138,7 @@ void window_new_campaign_open(int campaignType)
w = window_bring_to_front_by_id(WC_NEW_CAMPAIGN, 0);
if (w != NULL) {
if (w->var_480 == campaignType)
if (w->campaign.campaign_type == campaignType)
return;
window_close(w);
@@ -162,13 +162,13 @@ void window_new_campaign_open(int campaignType)
window_new_campaign_widgets[WIDX_TITLE].image = STR_MARKETING_VOUCHERS_FOR_FREE_ENTRY_TO_THE_PARK + campaignType;
// Campaign type
w->var_480 = campaignType;
w->campaign.campaign_type = campaignType;
// Number of weeks
w->var_482 = 2;
w->campaign.no_weeks = 2;
// Currently selected ride
w->var_484 = SELECTED_RIDE_UNDEFINED;
w->campaign.ride_id = SELECTED_RIDE_UNDEFINED;
// Get all applicable rides
numApplicableRides = 0;
@@ -234,7 +234,7 @@ static void window_new_campaign_mouseup()
break;
case WIDX_START_BUTTON:
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = STR_CANT_START_MARKETING_CAMPAIGN;
game_do_command(0, (w->var_482 << 8) | 1, 0, (w->var_484 << 8) | w->var_480, GAME_COMMAND_START_MARKETING_CAMPAIGN, 0, 0);
game_do_command(0, (w->campaign.no_weeks << 8) | 1, 0, (w->campaign.ride_id << 8) | w->campaign.campaign_type, GAME_COMMAND_START_MARKETING_CAMPAIGN, 0, 0);
window_close(w);
break;
}
@@ -252,7 +252,7 @@ static void window_new_campaign_mousedown(int widgetIndex, rct_window *w, rct_wi
case WIDX_RIDE_DROPDOWN_BUTTON:
dropdownWidget = widget - 1;
if (w->var_480 == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) {
if (w->campaign.campaign_type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) {
window_new_campaign_get_shop_items();
if (window_new_campaign_shop_items[0] != 255) {
int numItems = 0;
@@ -305,11 +305,11 @@ static void window_new_campaign_mousedown(int widgetIndex, rct_window *w, rct_wi
}
break;
case WIDX_WEEKS_INCREASE_BUTTON:
w->var_482 = min(w->var_482 + 1, 6);
w->campaign.no_weeks = min(w->campaign.no_weeks + 1, 6);
window_invalidate(w);
break;
case WIDX_WEEKS_DECREASE_BUTTON:
w->var_482 = max(w->var_482 - 1, 2);
w->campaign.no_weeks = max(w->campaign.no_weeks - 1, 2);
window_invalidate(w);
break;
}
@@ -329,13 +329,13 @@ static void window_new_campaign_dropdown()
if (widgetIndex != WIDX_RIDE_DROPDOWN_BUTTON)
return;
if (w->var_480 == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) {
if (w->campaign.campaign_type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) {
rct_string_id itemStringId = (uint16)gDropdownItemsArgs[dropdownIndex] - 2016;
if (itemStringId >= 32)
itemStringId -= 96;
w->var_484 = itemStringId;
w->campaign.ride_id = itemStringId;
} else {
w->var_484 = window_new_campaign_rides[dropdownIndex];
w->campaign.ride_id = window_new_campaign_rides[dropdownIndex];
}
window_invalidate(w);
@@ -355,15 +355,15 @@ static void window_new_campaign_invalidate()
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type = WWT_EMPTY;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN_BUTTON].type = WWT_EMPTY;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].image = STR_MARKETING_NOT_SELECTED;
switch (w->var_480) {
switch (w->campaign.campaign_type) {
case ADVERTISING_CAMPAIGN_RIDE_FREE:
case ADVERTISING_CAMPAIGN_RIDE:
window_new_campaign_widgets[WIDX_RIDE_LABEL].type = WWT_24;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type = WWT_DROPDOWN;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN_BUTTON].type = WWT_DROPDOWN_BUTTON;
window_new_campaign_widgets[WIDX_RIDE_LABEL].image = STR_MARKETING_RIDE;
if (w->var_484 != SELECTED_RIDE_UNDEFINED) {
rct_ride *ride = GET_RIDE(w->var_484);
if (w->campaign.ride_id != SELECTED_RIDE_UNDEFINED) {
rct_ride *ride = GET_RIDE(w->campaign.ride_id);
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].image = ride->var_04A;
RCT2_GLOBAL(0x013CE952, uint32) = ride->var_04C;
}
@@ -373,8 +373,8 @@ static void window_new_campaign_invalidate()
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type = WWT_DROPDOWN;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN_BUTTON].type = WWT_DROPDOWN_BUTTON;
window_new_campaign_widgets[WIDX_RIDE_LABEL].image = STR_MARKETING_ITEM;
if (w->var_484 != SELECTED_RIDE_UNDEFINED) {
rct_string_id itemStringId = w->var_484 + 2016;
if (w->campaign.ride_id != SELECTED_RIDE_UNDEFINED) {
rct_string_id itemStringId = w->campaign.ride_id + 2016;
if (itemStringId >= 2048)
itemStringId += 96;
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].image = itemStringId;
@@ -383,11 +383,11 @@ static void window_new_campaign_invalidate()
}
// Set current number of weeks spinner
window_new_campaign_widgets[WIDX_WEEKS_SPINNER].image = (STR_MARKETING_1_WEEK - 1) + w->var_482;
window_new_campaign_widgets[WIDX_WEEKS_SPINNER].image = (STR_MARKETING_1_WEEK - 1) + w->campaign.no_weeks;
// Enable / disable start button based on ride dropdown
w->disabled_widgets &= ~(1 << WIDX_START_BUTTON);
if (window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type == WWT_DROPDOWN && w->var_484 == SELECTED_RIDE_UNDEFINED)
if (window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type == WWT_DROPDOWN && w->campaign.ride_id == SELECTED_RIDE_UNDEFINED)
w->disabled_widgets |= 1 << WIDX_START_BUTTON;
}
@@ -409,11 +409,11 @@ static void window_new_campaign_paint()
y = w->y + 60;
// Price per week
money32 pricePerWeek = AdvertisingCampaignPricePerWeek[w->var_480];
money32 pricePerWeek = AdvertisingCampaignPricePerWeek[w->campaign.campaign_type];
gfx_draw_string_left(dpi, STR_MARKETING_COST_PER_WEEK, &pricePerWeek, 0, x, y);
y += 13;
// Total price
money32 totalPrice = AdvertisingCampaignPricePerWeek[w->var_480] * w->var_482;
money32 totalPrice = AdvertisingCampaignPricePerWeek[w->campaign.campaign_type] * w->campaign.no_weeks;
gfx_draw_string_left(dpi, STR_MARKETING_TOTAL_COST, &totalPrice, 0, x, y);
}

View File

@@ -431,16 +431,16 @@ void window_new_ride_open()
w->colours[0] = 24;
w->colours[1] = 26;
w->colours[2] = 26;
w->var_480 = -1;
w->var_482 = -1;
w->new_ride.selected_ride_countdown = -1;
w->new_ride.highlighted_ride_id = -1;
_lastTrackDesignCountRideType.type = 255;
_lastTrackDesignCountRideType.entry_index = 255;
window_new_ride_populate_list();
w->var_482 = RCT2_ADDRESS(0x00F43825, sint16)[_window_new_ride_current_tab];
if (w->var_482 == -1)
w->var_482 = RCT2_GLOBAL(0x00F43523, sint16);
w->new_ride.highlighted_ride_id = RCT2_ADDRESS(0x00F43825, sint16)[_window_new_ride_current_tab];
if (w->new_ride.highlighted_ride_id == -1)
w->new_ride.highlighted_ride_id = RCT2_GLOBAL(0x00F43523, sint16);
w->width = 1;
window_new_ride_refresh_widget_sizing(w);
@@ -577,13 +577,13 @@ static void window_new_ride_mousedown(int widgetIndex, rct_window *w, rct_widget
_window_new_ride_current_tab = page;
w->frame_no = 0;
w->var_482 = -1;
w->var_480 = -1;
w->new_ride.highlighted_ride_id = -1;
w->new_ride.selected_ride_countdown = -1;
window_new_ride_populate_list();
if (page < WINDOW_NEW_RIDE_PAGE_RESEARCH) {
w->var_482 = RCT2_ADDRESS(0x00F43825, sint16)[page];
if (w->var_482 == -1)
w->var_482 = RCT2_GLOBAL(0x00F43523, sint16);
w->new_ride.highlighted_ride_id = RCT2_ADDRESS(0x00F43825, sint16)[page];
if (w->new_ride.highlighted_ride_id == -1)
w->new_ride.highlighted_ride_id = RCT2_GLOBAL(0x00F43523, sint16);
}
window_new_ride_refresh_widget_sizing(w);
@@ -603,7 +603,7 @@ static void window_new_ride_update(rct_window *w)
widget_invalidate(w->classification, w->number, WIDX_TAB_1 + _window_new_ride_current_tab);
if (w->var_480 != -1 && w->var_488-- == 0)
if (w->new_ride.selected_ride_countdown != -1 && w->new_ride.selected_ride_countdown-- == 0)
window_new_ride_select(w);
}
@@ -645,21 +645,22 @@ static void window_new_ride_scrollmousedown()
{
short x, y;
rct_window *w;
ride_list_item item;
window_scrollmouse_get_registers(w, x, y);
if (RCT2_GLOBAL(0x009DEA6E, uint8) != 0)
return;
ride_list_item item = window_new_ride_scroll_get_ride_list_item_at(w, x, y);
item = window_new_ride_scroll_get_ride_list_item_at(w, x, y);
if (item.type == 255 && item.entry_index == 255)
return;
RCT2_ADDRESS(0x00F43825, ride_list_item)[_window_new_ride_current_tab] = item;
w->var_480 = *((sint16*)&item);
w->new_ride.selected_ride_countdown = *((sint16*)&item);
sound_play_panned(SOUND_CLICK_1, w->x + (w->width / 2));
w->var_488 = 8;
w->new_ride.selected_ride_countdown = 8;
window_invalidate(w);
}
@@ -671,17 +672,18 @@ static void window_new_ride_scrollmouseover()
{
short x, y;
rct_window *w;
ride_list_item item;
window_scrollmouse_get_registers(w, x, y);
if (w->var_480 != -1)
if (w->new_ride.selected_ride_countdown != -1)
return;
ride_list_item item = window_new_ride_scroll_get_ride_list_item_at(w, x, y);
if (w->var_482 == *((sint16*)&item))
item = window_new_ride_scroll_get_ride_list_item_at(w, x, y);
if (w->new_ride.highlighted_ride_id == *((sint16*)&item))
return;
w->var_482 = *((sint16*)&item);
w->new_ride.highlighted_ride_id = *((sint16*)&item);
RCT2_ADDRESS(0x00F43825, ride_list_item)[_window_new_ride_current_tab] = item;
window_invalidate(w);
}
@@ -737,7 +739,7 @@ static void window_new_ride_paint()
window_new_ride_draw_tab_images(dpi, w);
if (_window_new_ride_current_tab != WINDOW_NEW_RIDE_PAGE_RESEARCH) {
ride_list_item item = *((ride_list_item*)&w->var_482);
ride_list_item item = *((ride_list_item*)&w->new_ride.highlighted_ride_id);
if (item.type == 255 && item.entry_index == 255)
return;
@@ -827,15 +829,16 @@ static void window_new_ride_scrollpaint()
int y = 1;
ride_list_item *listItem = (ride_list_item*)0x00F43523;
while (listItem->type != 255 || listItem->entry_index != 255) {
uint8 *rideEntry;
// Draw flat button rectangle
int flags = 0;
if (w->var_480 == *((sint16*)listItem))
if (w->new_ride.selected_ride_countdown == *((sint16*)listItem))
flags |= 0x20;
if (w->var_482 == *((sint16*)listItem) || flags != 0)
if (w->new_ride.highlighted_ride_id == *((sint16*)listItem) || flags != 0)
gfx_fill_rect_inset(dpi, x, y, x + 115, y + 115, w->colours[1], 0x80 | flags);
// Draw ride image
uint8 *rideEntry = rideEntries[listItem->entry_index];
rideEntry = rideEntries[listItem->entry_index];
int unk = RCT2_GLOBAL(rideEntry + 4, uint32);
if (listItem->type != RCT2_GLOBAL(rideEntry + 12, uint8)) {
unk++;
@@ -970,7 +973,7 @@ static void window_new_ride_paint_ride_information(rct_window *w, rct_drawpixeli
*/
static void window_new_ride_select(rct_window *w)
{
ride_list_item item = *((ride_list_item*)&w->var_480);
ride_list_item item = *((ride_list_item*)&w->new_ride.selected_ride_countdown);
if (item.type == 255)
return;

View File

@@ -107,7 +107,7 @@ void window_news_open()
window->colours[0] = 1;
window->colours[1] = 1;
window->colours[2] = 0;
window->var_480 = -1;
window->news.var_480 = -1;
}
// sub_66E4BA:
@@ -144,17 +144,17 @@ static void window_news_update(rct_window *w)
int i, j, x, y, z;
rct_news_item *newsItems;
if (w->var_480 == -1)
if (w->news.var_480 == -1)
return;
if (--w->var_484 != 0)
if (--w->news.var_484 != 0)
return;
window_invalidate(w);
sound_play_panned(SOUND_CLICK_2, w->x + (w->width / 2));
newsItems = RCT2_ADDRESS(RCT2_ADDRESS_NEWS_ITEM_LIST, rct_news_item);
j = w->var_480;
w->var_480 = -1;
j = w->news.var_480;
w->news.var_480 = -1;
for (i = 11; i < 61; i++) {
if (newsItems[i].type == NEWS_ITEM_NULL)
return;
@@ -162,10 +162,11 @@ static void window_news_update(rct_window *w)
if (j == 0) {
if (newsItems[i].flags & 1)
return;
if (w->var_482 == 1) {
if (w->news.var_482 == 1) {
news_item_open_subject(newsItems[i].type, newsItems[i].assoc);
return;
} else if (w->var_482 > 1) {
}
else if (w->news.var_482 > 1) {
news_item_get_subject_location(newsItems[i].type, newsItems[i].assoc, &x, &y, &z);
if (x != SPRITE_LOCATION_NULL)
if ((w = window_get_main()) != NULL)
@@ -250,9 +251,9 @@ static void window_news_scrollmousedown()
}
if (buttonIndex != 0) {
w->var_480 = i - 11;
w->var_482 = buttonIndex;
w->var_484 = 4;
w->news.var_480 = i - 11;
w->news.var_482 = buttonIndex;
w->news.var_484 = 4;
window_invalidate(w);
sound_play_panned(SOUND_CLICK_1, w->x + (w->width / 2));
}
@@ -318,7 +319,7 @@ static void window_news_scrollpaint()
// Item text
char sz[400];// = (char*)0x09B5F2C;
char* args[1];
args[0] = &sz;
args[0] = (char*)&sz;
sprintf(sz, "%c%c%s", newsItem->colour, FORMAT_SMALLFONT, newsItem->text);
gfx_draw_string_left_wrapped(dpi, args, 2, y + 10, 325, 1170, 14);
@@ -328,9 +329,9 @@ static void window_news_scrollpaint()
yy = y + 14;
press = 0;
if (w->var_480 != -1) {
newsItem2 = &newsItems[11 + w->var_480];
if (newsItem == newsItem2 && w->var_482 == 1)
if (w->news.var_480 != -1) {
newsItem2 = &newsItems[11 + w->news.var_480];
if (newsItem == newsItem2 && w->news.var_482 == 1)
press = 0x20;
}
gfx_fill_rect_inset(dpi, x, yy, x + 23, yy + 23, w->colours[2], press);
@@ -369,9 +370,9 @@ static void window_news_scrollpaint()
yy = y + 14;
press = 0;
if (w->var_480 != -1) {
newsItem2 = &newsItems[11 + w->var_480];
if (newsItem == newsItem2 && w->var_482 == 2)
if (w->news.var_480 != -1) {
newsItem2 = &newsItems[11 + w->news.var_480];
if (newsItem == newsItem2 && w->news.var_482 == 2)
press = 0x20;
}
gfx_fill_rect_inset(dpi, x, yy, x + 23, yy + 23, w->colours[2], press);

View File

@@ -574,7 +574,6 @@ static uint32 window_park_page_enabled_widgets[] = {
#pragma endregion
static void window_park_init_viewport(rct_window *w);
static void window_park_scroll_to_viewport(rct_window *w);
static void window_park_set_page(rct_window *w, int page);
static void window_park_anchor_border_widgets(rct_window *w);
static void window_park_align_tabs(rct_window *w);
@@ -594,7 +593,7 @@ rct_window *window_park_open()
w->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_ENTRANCE];
w->number = 0;
w->page = WINDOW_PARK_PAGE_ENTRANCE;
w->var_482 = 0;
w->viewport_focus_coordinates.y = 0;
w->frame_no = 0;
w->list_information_type = -1;
w->var_48C = -1;
@@ -620,8 +619,8 @@ void window_park_entrance_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->var_482 = -1;
window->var_484 = -1;
window->viewport_focus_coordinates.y = -1;
window->viewport_focus_coordinates.x = -1;
}
window->page = WINDOW_PARK_PAGE_ENTRANCE;
@@ -680,7 +679,7 @@ static void window_park_entrance_mouseup()
RCT2_CALLPROC_X(0x00668393, 0, 0, 0, widgetIndex, (int)w, 0, 0);
break;
case WIDX_LOCATE:
window_park_scroll_to_viewport(w);
window_scroll_to_viewport(w);
break;
case WIDX_RENAME:
RCT2_GLOBAL(0x013CE962, uint32) = RCT2_GLOBAL(0x013573D8, uint32);
@@ -1022,10 +1021,11 @@ static void window_park_init_viewport(rct_window *w)
// Call invalidate event
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
w->var_482 = x;
w->var_484 = y;
w->var_486 = z;
w->var_488 = r << 8;
w->viewport_focus_coordinates.x = x;
w->viewport_focus_coordinates.y = y;
w->viewport_focus_sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
w->viewport_focus_coordinates.z = z;
w->viewport_focus_coordinates.rotation = r;
if (zr != 0xFFFF) {
// Create viewport
@@ -1037,11 +1037,11 @@ static void window_park_init_viewport(rct_window *w)
w->y + viewportWidget->top + 1,
(viewportWidget->right - viewportWidget->left) - 2,
(viewportWidget->bottom - viewportWidget->top) - 2,
zr&0xFF,
0,
x,
y,
z,
xy&0xC0000000 >> 30,
w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_MASK,
-1
);
w->flags |= (1 << 2);
@@ -1054,30 +1054,6 @@ static void window_park_init_viewport(rct_window *w)
window_invalidate(w);
}
static void window_park_scroll_to_viewport(rct_window *w)
{
int x, y, z;
rct_window *mainWindow;
if (w->viewport == NULL || *((sint32*)&w->var_482) == -1)
return;
if (*((uint32*)&w->var_486) & 0x80000000) {
rct_sprite *sprite = &(g_sprite_list[w->var_482]);
x = sprite->unknown.x;
y = sprite->unknown.y;
z = sprite->unknown.z;
} else {
x = w->var_482;
y = w->var_484;
z = w->var_486;
}
mainWindow = window_get_main();
if (mainWindow != NULL)
window_scroll_to_location(mainWindow, x, y, z);
}
#pragma endregion
#pragma region Rating page
@@ -1093,8 +1069,8 @@ void window_park_rating_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->var_482 = -1;
window->var_484 = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@@ -1227,8 +1203,8 @@ void window_park_guests_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->var_482 = -1;
window->var_484 = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@@ -1633,8 +1609,8 @@ void window_park_objective_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->var_482 = -1;
window->var_484 = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@@ -1796,8 +1772,8 @@ void window_park_awards_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->var_482 = -1;
window->var_484 = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))

View File

@@ -20,10 +20,13 @@
#include "addresses.h"
#include "game.h"
#include "map.h"
#include "ride.h"
#include "peep.h"
#include "string_ids.h"
#include "sprite.h"
#include "sprites.h"
#include "viewport.h"
#include "widget.h"
#include "window.h"
#include "window_dropdown.h"
@@ -48,6 +51,14 @@ enum WINDOW_PEEP_WIDGET_IDX {
WIDX_TAB_4,
WIDX_TAB_5,
WIDX_TAB_6,
WIDX_MARQUEE = 10,
WIDX_VIEWPORT,
WIDX_ACTION_LBL,
WIDX_PICKUP,
WIDX_RENAME,
WIDX_LOCATE,
WIDX_TRACK
};
void window_peep_emptysub(){};
@@ -66,21 +77,36 @@ rct_widget window_peep_overview_widgets[] = {
{ WWT_12, 1, 3, 166, 45, 56, 0x0FFFFFFFF, STR_NONE}, // Label Thought marquee
{ WWT_VIEWPORT, 1, 3, 166, 57, 143, 0x0FFFFFFFF, STR_NONE }, // Viewport
{ WWT_12, 1, 3, 166, 144, 154, 0x0FFFFFFFF, STR_NONE}, // Label Action
{ WWT_FLATBTN, 1, 167, 190, 45, 68, SPR_RENAME, 1706}, // Rename Button
{ WWT_FLATBTN, 1, 167, 190, 69, 92, 0x1430, 1055}, // Pickup Button
{ WWT_FLATBTN, 1, 167, 190, 45, 68, SPR_RENAME, 1706}, // Pickup Button
{ WWT_FLATBTN, 1, 167, 190, 69, 92, 0x1430, 1055}, // Rename Button
{ WWT_FLATBTN, 1, 167, 190, 93, 116, SPR_LOCATE, STR_LOCATE_SUBJECT_TIP},// Locate Button
{ WWT_FLATBTN, 1, 167, 190, 117, 140, SPR_TRACK_PEEP, 1930}, // Track Button
{ WIDGETS_END },
};
//0x981D0C
rct_widget *window_peep_page_widgets[] = {
window_peep_overview_widgets
window_peep_overview_widgets,
(rct_widget *)0x9AC45C,
(rct_widget *)0x9ac500,
(rct_widget *)0x9ac5b4,
(rct_widget *)0x9ac658,
(rct_widget *)0x9ac6FC
};
void window_peep_set_page(rct_window* w, int page);
void window_peep_disable_widgets(rct_window* w);
void window_peep_viewport_init(rct_window* w);
void window_peep_close();
void window_peep_resize();
void window_peep_overview_mouse_up();
void window_peep_overview_paint();
static void* window_peep_overview_events[] = {
(void*)0x696A75,
(void*)0x696A06,
(void*)0x696FBE,
window_peep_close,
window_peep_overview_mouse_up,
window_peep_resize,
window_peep_emptysub,
window_peep_emptysub,
window_peep_emptysub,
@@ -104,15 +130,67 @@ static void* window_peep_overview_events[] = {
window_peep_emptysub,
window_peep_emptysub,
(void*)0x696749, //Invalidate
(void*)0x696887, //Paint
window_peep_overview_paint, //Paint
(void*)0x69707C
};
//0x981D24
void* window_peep_page_events[] = {
window_peep_overview_events
window_peep_overview_events,
(void*)0x982468,
(void*)0x9824d8,
(void*)0x982548,
(void*)0x9825b8,
(void*)0x982628
};
//0x981D3C
uint32 window_peep_page_enabled_widgets[] = {
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
(1 << WIDX_TAB_3) |
(1 << WIDX_TAB_4) |
(1 << WIDX_TAB_5) |
(1 << WIDX_TAB_6) |
(1 << WIDX_RENAME)|
(1 << WIDX_PICKUP)|
(1 << WIDX_LOCATE)|
(1 << WIDX_TRACK),
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
(1 << WIDX_TAB_3) |
(1 << WIDX_TAB_4) |
(1 << WIDX_TAB_5) |
(1 << WIDX_TAB_6),
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
(1 << WIDX_TAB_3) |
(1 << WIDX_TAB_4) |
(1 << WIDX_TAB_5) |
(1 << WIDX_TAB_6), //|
//(1 << WIDX_?),
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
(1 << WIDX_TAB_3) |
(1 << WIDX_TAB_4) |
(1 << WIDX_TAB_5) |
(1 << WIDX_TAB_6),
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
(1 << WIDX_TAB_3) |
(1 << WIDX_TAB_4) |
(1 << WIDX_TAB_5) |
(1 << WIDX_TAB_6),
(1 << WIDX_CLOSE) |
(1 << WIDX_TAB_1) |
(1 << WIDX_TAB_2) |
@@ -142,12 +220,12 @@ void window_peep_open(rct_peep* peep){
window->enabled_widgets = window_peep_page_enabled_widgets[0];
window->number = peep->sprite_index;
window->page = 0;
window->var_482 = 0;
window->viewport_focus_coordinates.y = 0;
window->frame_no = 0;
window->list_information_type = 0;
window->var_492 = 0;
window->var_494 = 0;
RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0);
window_peep_disable_widgets(window);
window->min_width = 192;
window->min_height = 157;
window->max_width = 500;
@@ -158,19 +236,286 @@ void window_peep_open(rct_peep* peep){
window->colours[0] = 1;
window->colours[1] = 15;
window->colours[2] = 15;
window->var_482 = -1;
window->viewport_focus_coordinates.y = -1;
}
window->page = 0;
window_invalidate(window);
window->widgets = RCT2_GLOBAL(0x981D0C, rct_widget*);
window->enabled_widgets = RCT2_GLOBAL(0x981D3C,uint32);
window->widgets = window_peep_page_widgets[WINDOW_PEEP_OVERVIEW];
window->enabled_widgets = window_peep_page_enabled_widgets[WINDOW_PEEP_OVERVIEW];
window->var_020 = RCT2_GLOBAL(0x981D54,uint32);
window->event_handlers = RCT2_GLOBAL(0x981D24,uint32*);
window->event_handlers = window_peep_page_events[WINDOW_PEEP_OVERVIEW];
window->pressed_widgets = 0;
RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0);
window_peep_disable_widgets(window);
window_init_scroll_widgets(window);
RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0);
window_peep_viewport_init(window);
}
/* rct2: 0x006987A6
* Disables the finance tab when no money.
* Disables peep pickup when in certain no pickup states.
*/
void window_peep_disable_widgets(rct_window* w){
rct_peep* peep = &g_sprite_list[w->number].peep;
uint64 disabled_widgets = 0;
if (peep_can_be_picked_up(peep)){
if (w->disabled_widgets & (1 << WIDX_PICKUP))
window_invalidate(w);
}
else{
disabled_widgets = (1 << WIDX_PICKUP);
if (!(w->disabled_widgets & (1 << WIDX_PICKUP)))
window_invalidate(w);
}
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_11){
disabled_widgets |= (1 << WIDX_TAB_4); //Disable finance tab if no money
}
w->disabled_widgets = disabled_widgets;
}
/* rct2: 0x00696A75 */
void window_peep_close(){
rct_window* w;
window_get_register(w);
if (RCT2_GLOBAL(0x9DE518,uint32) & (1<<3)){
if (w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS,rct_windowclass) &&
w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER,rct_windownumber))
tool_cancel();
}
}
/* rct2: 0x00696FBE */
void window_peep_resize(){
rct_window* w;
window_get_register(w);
window_peep_disable_widgets(w);
RCT2_CALLPROC_EBPSAFE(w->event_handlers[WE_INVALIDATE]);
window_invalidate_by_id(0xA97, w->number);
window_set_resize(w, 192, 159, 500, 450);
rct_viewport* view = w->viewport;
if (view){
if ((w->width - 30) == view->width){
if ((w->height - 72) == view->height){
window_peep_viewport_init(w);
return;
}
}
uint8 zoom_amount = 1 << view->zoom;
view->width = w->width - 30;
view->height = w->height - 72;
view->view_width = view->width / zoom_amount;
view->view_height = view->height / zoom_amount;
}
window_peep_viewport_init(w);
}
/* rct2: 0x00696A06 */
void window_peep_overview_mouse_up(){
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
switch(widgetIndex){
case WIDX_CLOSE:
window_close(w);
break;
case WIDX_TAB_1:
case WIDX_TAB_2:
case WIDX_TAB_3:
case WIDX_TAB_4:
case WIDX_TAB_5:
case WIDX_TAB_6:
window_peep_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_PICKUP:
//696ba6
break;
case WIDX_RENAME:
//696e4d
break;
case WIDX_LOCATE:
window_scroll_to_viewport(w);
break;
case WIDX_TRACK:
g_sprite_list[w->number].peep.flags ^= PEEP_FLAGS_TRACKING;
break;
}
}
void window_peep_set_page(rct_window* w, int page){
if (RCT2_GLOBAL(0x9DE518,uint32) & (1 << 3))
{
if(w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER, rct_windownumber) &&
w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, rct_windowclass))
tool_cancel();
}
int listen = 0;
if ( page == WINDOW_PEEP_OVERVIEW && w->page==WINDOW_PEEP_OVERVIEW && w->viewport){
if(!(w->viewport->flags & VIEWPORT_FLAG_SOUND_ON))
listen = 1;
}
w->page = page;
w->frame_no = 0;
w->no_list_items = 0;
w->selected_list_item = -1;
rct_viewport* viewport = w->viewport;
w->viewport = 0;
if (viewport){
viewport->width = 0;
}
w->enabled_widgets = window_peep_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x981D54,uint32)[page];
w->event_handlers = window_peep_page_events[page];
w->pressed_widgets = 0;
w->widgets = window_peep_page_widgets[page];
window_peep_disable_widgets(w);
window_invalidate(w);
RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0);
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
window_init_scroll_widgets(w);
window_invalidate(w);
if (listen && w->viewport) w->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
}
/* rct2: 0x0069883C */
void window_peep_viewport_init(rct_window* w){
if (w->page != WINDOW_PEEP_OVERVIEW) return;
union{
sprite_focus sprite;
coordinate_focus coordinate;
} focus; //The focus will be either a sprite or a coordinate.
focus.sprite.sprite_id = w->number;
rct_peep* peep = GET_PEEP(w->number);
if (peep->state == PEEP_STATE_PICKED){
focus.sprite.sprite_id = -1;
}
else{
uint8 final_check = 1;
if (peep->state == PEEP_STATE_ON_RIDE
|| peep->state == PEEP_STATE_ENTERING_RIDE
|| (peep->state == PEEP_STATE_LEAVING_RIDE && peep->x == SPRITE_LOCATION_NULL)){
rct_ride* ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]);
if (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK){
rct_vehicle* train = GET_VEHICLE(ride->train_car_map[peep->current_train]);
int car = peep->current_car;
for (; car != 0; car--){
train = GET_VEHICLE(train->next_vehicle_on_train);
}
focus.sprite.sprite_id = train->sprite_index;
final_check = 0;
}
}
if (peep->x == SPRITE_LOCATION_NULL && final_check){
rct_ride* ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]);
int x = ride->overall_view & 0xFF * 32 + 16;
int y = (ride->overall_view >> 8) * 32 + 16;
int height = map_element_height(x, y);
height += 32;
focus.coordinate.x = x;
focus.coordinate.y = y;
focus.coordinate.z = height;
focus.sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
}
else{
focus.sprite.type |= VIEWPORT_FOCUS_TYPE_SPRITE | VIEWPORT_FOCUS_TYPE_COORDINATE;
focus.sprite.pad_486 &= 0xFFFF;
}
focus.coordinate.rotation = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint8);
}
uint16 viewport_flags;
if (w->viewport){
//Check all combos, for now skipping y and rot
if (focus.coordinate.x == w->viewport_focus_coordinates.x &&
focus.coordinate.y == w->viewport_focus_coordinates.y &&
focus.coordinate.z == w->viewport_focus_coordinates.z &&
focus.coordinate.rotation == w->viewport_focus_coordinates.rotation)
return;
viewport_flags = w->viewport->flags;
w->viewport->width = 0;
w->viewport = 0;
viewport_update_pointers();
}
else{
viewport_flags = 0;
if (RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_FLAGS, uint8) & 0x1)
viewport_flags |= VIEWPORT_FLAG_GRIDLINES;
}
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
w->viewport_focus_coordinates.x = focus.coordinate.x;
w->viewport_focus_coordinates.y = focus.coordinate.y;
w->viewport_focus_coordinates.z = focus.coordinate.z;
w->viewport_focus_coordinates.rotation = focus.coordinate.rotation;
if (peep->state != PEEP_STATE_PICKED){
if (!(w->viewport)){
rct_widget* view_widget = &w->widgets[WIDX_VIEWPORT];
int x = view_widget->left + 1 + w->x;
int y = view_widget->top + 1 + w->y;
int width = view_widget->right - view_widget->left - 1;
int height = view_widget->bottom - view_widget->top - 1;
viewport_create(w, x, y, width, height, 0, focus.coordinate.x, focus.coordinate.y, focus.coordinate.z, focus.sprite.type & VIEWPORT_FOCUS_TYPE_MASK, focus.sprite.sprite_id);
w->flags |= WF_2;
window_invalidate(w);
}
}
if (w->viewport)
w->viewport->flags = viewport_flags;
window_invalidate(w);
}
/* rct2: 0x696887 */
void window_peep_overview_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *labelWidget;
window_paint_get_registers(w, dpi);
RCT2_CALLPROC_X(0x696887, 0, 0, 0, 0, w, dpi, 0);
return;
window_draw_widgets(w, dpi);
//6983dd
//698597
//6985d8
//69861f
//69869b
//698661
if (w->viewport){
window_draw_viewport(dpi, w);
}
}

View File

@@ -346,7 +346,7 @@ static void window_research_development_paint()
if (RCT2_GLOBAL(rideEntry + 8, uint32) & 0x1000)
stringId = RCT2_GLOBAL(rideEntry, uint16);
else
stringId = (typeId & 0xFF00) + 2;
stringId = ((typeId >> 8) & 0xFF) + 2;
} else {
uint8 *sceneryEntry = RCT2_GLOBAL(0x009ADA90 + (typeId & 0xFFFF) * 4, uint8*);
stringId = RCT2_GLOBAL(sceneryEntry, uint16);
@@ -382,10 +382,10 @@ static void window_research_development_paint()
if (typeId != 0xFFFFFFFF) {
if (typeId >= 0x10000) {
uint8 *rideEntry = RCT2_GLOBAL(0x009ACFA4 + (typeId & 0xFF) * 4, uint8*);
if (RCT2_GLOBAL(rideEntry + 8, uint32) & 0x1000)
stringId = RCT2_GLOBAL(rideEntry, uint16);
else
stringId = (typeId & 0xFF00) + 2;
if (RCT2_GLOBAL(rideEntry + 8, uint32) & 0x1000)
stringId = RCT2_GLOBAL(rideEntry, uint16);
else
stringId = ((typeId >> 8) & 0xFF) + 2;
lastDevelopmentFormat = STR_RESEARCH_RIDE_LABEL;
} else {
@@ -394,7 +394,7 @@ static void window_research_development_paint()
lastDevelopmentFormat = STR_RESEARCH_SCENERY_LABEL;
}
gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 266, lastDevelopmentFormat, 0);
}
}
}
#pragma endregion

View File

@@ -23,6 +23,7 @@
#include "game.h"
#include "ride.h"
#include "string_ids.h"
#include "sprite.h"
#include "sprites.h"
#include "widget.h"
#include "window.h"
@@ -437,11 +438,44 @@ static void window_ride_list_paint()
*/
static void ride_get_status(int rideIndex, int *formatSecondary, int *argument)
{
int eax = 0, ebx = 0, ecx = 0, edx, esi = 0, edi = 0, ebp = 0;
edx = rideIndex;
RCT2_CALLFUNC_X(0x006AF561, &eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
*formatSecondary = ebx & 0xFFFF;
*argument = eax;
rct_ride *ride = &g_ride_list[rideIndex];
if (ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED) {
*formatSecondary = STR_CRASHED;
return;
}
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN) {
*formatSecondary = STR_BROKEN_DOWN;
return;
}
if (ride->status == RIDE_STATUS_CLOSED) {
*formatSecondary = STR_CLOSED;
return;
}
if (ride->status == RIDE_STATUS_TESTING) {
*formatSecondary = STR_TEST_RUN;
return;
}
rct_peep *peep = GET_PEEP(ride->race_winner);
if (ride->mode == RIDE_MODE_RACE && !(ride->lifecycle_flags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) && ride->race_winner != 0xFFFF && peep->sprite_identifier == SPRITE_IDENTIFIER_PEEP) {
if (peep->name_string_idx == STR_GUEST) {
*argument = peep->id;
*formatSecondary = STR_RACE_WON_BY_GUEST;
} else {
*argument = peep->name_string_idx;
*formatSecondary = STR_RACE_WON_BY;
}
} else {
if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x20000)) {
*argument = ride->num_riders;
*formatSecondary = STR_PERSON_ON_RIDE;
if(*argument != 1)
*formatSecondary = STR_PEOPLE_ON_RIDE;
} else {
*formatSecondary = STR_OPEN;
}
}
}
/**

View File

@@ -186,7 +186,7 @@ rct_window* sub_6BEF1B(rct_peep* peep)
w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32);
w->number = peep->sprite_index;
w->page = 0;
w->var_482 = 0;
w->viewport_focus_coordinates.y = 0;
w->frame_no = 0;
RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing, var_494 should perhaps be uint16?

View File

@@ -128,7 +128,7 @@ void window_scenarioselect_open()
window->colours[0] = 1;
window->colours[1] = 26;
window->colours[2] = 26;
window->var_480 = -1;
window->viewport_focus_coordinates.var_480 = -1;
window->var_494 = 0;
window_scenarioselect_init_tabs();