diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 533bbbb451..50abb923d2 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -804,6 +804,8 @@ C8D612EB56BD4214BEC0F7FF /* GroupVector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4D523B8782E4C458AF1490D /* GroupVector.hpp */; }; B2F44E535BD14A03BE8B9D14 /* ZipStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F28A181D311D4E078FDB090C /* ZipStream.hpp */; }; 7CDC7EE9B12E40FB9FE78546 /* Crypt.OpenRCT2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4248E4E4394842D4AF6119DA /* Crypt.OpenRCT2.cpp */; }; + 4653963391E945D397BCCA0C /* ChangeMapSizeAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76CE81CEAF7F4538976F7C4C /* ChangeMapSizeAction.cpp */; }; + F1BE1CB5525C4FF794A3F3CE /* ChangeMapSizeAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C49050C073DB4CB980E1EC5A /* ChangeMapSizeAction.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1911,6 +1913,8 @@ F4D523B8782E4C458AF1490D /* GroupVector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = GroupVector.hpp; path = src/openrct2/core/GroupVector.hpp; sourceTree = SOURCE_ROOT; }; F28A181D311D4E078FDB090C /* ZipStream.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ZipStream.hpp; path = src/openrct2/core/ZipStream.hpp; sourceTree = SOURCE_ROOT; }; 4248E4E4394842D4AF6119DA /* Crypt.OpenRCT2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Crypt.OpenRCT2.cpp; path = src/openrct2/core/Crypt.OpenRCT2.cpp; sourceTree = SOURCE_ROOT; }; + 76CE81CEAF7F4538976F7C4C /* ChangeMapSizeAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChangeMapSizeAction.cpp; path = src/openrct2/actions/ChangeMapSizeAction.cpp; sourceTree = SOURCE_ROOT; }; + C49050C073DB4CB980E1EC5A /* ChangeMapSizeAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChangeMapSizeAction.h; path = src/openrct2/actions/ChangeMapSizeAction.h; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2227,6 +2231,8 @@ 66A10FC3257F1E2E00DD651A /* WaterRaiseAction.h */, 66A10FC7257F1E2E00DD651A /* WaterSetHeightAction.cpp */, 66A10FC8257F1E2F00DD651A /* WaterSetHeightAction.h */, + 76CE81CEAF7F4538976F7C4C /* ChangeMapSizeAction.cpp */, + C49050C073DB4CB980E1EC5A /* ChangeMapSizeAction.h */, ); path = actions; sourceTree = ""; @@ -3668,6 +3674,7 @@ E6C71B6165224F65AA87E65B /* RideUseSystem.h in Headers */, C8D612EB56BD4214BEC0F7FF /* GroupVector.hpp in Headers */, B2F44E535BD14A03BE8B9D14 /* ZipStream.hpp in Headers */, + F1BE1CB5525C4FF794A3F3CE /* ChangeMapSizeAction.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4492,6 +4499,7 @@ 6C90BE01D190493295071B23 /* ScTile.cpp in Sources */, 258C212125F84FA2B4C3BCAE /* RideUseSystem.cpp in Sources */, 7CDC7EE9B12E40FB9FE78546 /* Crypt.OpenRCT2.cpp in Sources */, + 4653963391E945D397BCCA0C /* ChangeMapSizeAction.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/data/language/fi-FI.txt b/data/language/fi-FI.txt index 4607f77fb4..97bd1cb552 100644 --- a/data/language/fi-FI.txt +++ b/data/language/fi-FI.txt @@ -533,11 +533,11 @@ STR_1144 :Ei pysty rakentamaan/siirtämään tämän laitteen/kohteen sisää STR_1145 :Ei pysty rakentamaan/siirtämään tämän laitteen/kohteen uloskäyntiä… STR_1146 :Sisäänkäyntiä ei ole vielä rakennettu STR_1147 :Uloskäyntiä ei ole vielä rakennettu -STR_1148 :Neljänneskuorma -STR_1149 :Puolikas kuorma -STR_1150 :Kolmeneljäsosakuorma -STR_1151 :Täysi kuorma -STR_1152 :Mikä tahansa kuorma +STR_1148 :Neljänneslasti +STR_1149 :Puolikas lasti +STR_1150 :Kolmeneljäsosalasti +STR_1151 :Täysi lasti +STR_1152 :Mikä tahansa lasti STR_1153 :Korkeusmerkinnät radoissa STR_1154 :Korkeusmerkinnät maanpinnassa STR_1155 :Korkeusmerkinnät poluissa @@ -548,8 +548,8 @@ STR_1159 :Sijoita maisemointeja, kasveja ja somisteita STR_1160 :Luo/säädä järviä ja vettä STR_1161 :Tätä ei voi sijoittaa tähän… STR_1162 :{OUTLINE}{TOPAZ}{STRINGID} -STR_1163 :{STRINGID}{NEWLINE}(Oikea klikkaus muokkaa) -STR_1164 :{STRINGID}{NEWLINE}(Oikea klikkaus poistaa) +STR_1163 :{STRINGID}{NEWLINE}(Muokkaa oikealla painikkeella) +STR_1164 :{STRINGID}{NEWLINE}(Poista oikealla painikkeella) STR_1165 :{STRINGID} - {STRINGID} {COMMA16} STR_1166 :Veden tasoa ei voi laskea tässä… STR_1167 :Veden tasoa ei voi nostaa tässä… @@ -873,7 +873,7 @@ STR_1482 :“Voin pahoin” STR_1483 :“Voin erittäin pahoin” STR_1484 :“Tahdon mennä johonkin jännittävämpään kuin {STRINGID}” STR_1485 :“{STRINGID} näyttää liian hurjalta minulle” -STR_1486 :“En ole nauttinut {STRINGID} loppuun vielä” +STR_1486 :“Minulla on vielä {STRINGID} jäljellä” STR_1487 :“Pelkästään laitteen {STRINGID} katsominen saa minut voimaan pahoin” STR_1488 :“En aio maksaa noin paljon laitteesta {STRINGID}” STR_1489 :“Haluan kotiin” @@ -898,7 +898,7 @@ STR_1507 :“En löydä puiston uloskäyntiä” STR_1508 :“Tahdon pois kohteesta {STRINGID}” STR_1509 :“Tahdon ulos kohteesta {STRINGID}” STR_1510 :“En mene kohteeseen {STRINGID} - se ei ole turvallinen” -STR_1511 :“Tämä tie on kuvottava” +STR_1511 :“Tämä polku on kuvottava” STR_1512 :“Täällä on liikaa tungosta” STR_1513 :“Täällä on todella paljon ilkivaltaa” STR_1514 :“Mahtava maisema!” @@ -918,7 +918,7 @@ STR_1527 :“Tämä hattara kojusta {STRINGID} on todella reilun hintainen” STR_1528 : STR_1529 : STR_1530 : -STR_1531 :“Tämä pitsa kojusta {STRINGID} on todella reilun hintainen” +STR_1531 :“Tämä pizza kojusta {STRINGID} on todella reilun hintainen” STR_1532 : STR_1533 :“Tämä popcorn kojusta {STRINGID} on todella reilun hintainen” STR_1534 :“Tämä nakkisämpylä kojusta {STRINGID} on todella reilun hintainen” @@ -939,32 +939,32 @@ STR_1548 : STR_1549 : STR_1550 :“Vau!” STR_1551 :“Minulla on outo fiilis että joku katselee minua” -STR_1552 :“En maksa noin paljon ilmapallosta kojussa {STRINGID}” -STR_1553 :“En maksa noin paljon pehmolelusta kojussa {STRINGID}” -STR_1554 :“En maksa noin paljon puiston kartasta kojussa {STRINGID}” +STR_1552 :“En maksa noin paljon ilmapallosta kojusta {STRINGID}” +STR_1553 :“En maksa noin paljon pehmolelusta kojusta {STRINGID}” +STR_1554 :“En maksa noin paljon puiston kartasta kojusta {STRINGID}” STR_1555 :“En maksa noin paljon kuvasta laitteesta {STRINGID}” -STR_1556 :“En maksa noin paljon sateenvarjosta kojussa {STRINGID}” -STR_1557 :“En maksa noin paljon juomasta kojussa {STRINGID}” -STR_1558 :“En maksa noin paljon hampurilaisesta kojussa {STRINGID}” -STR_1559 :“En maksa noin paljon ranskalaisista kojussa {STRINGID}” -STR_1560 :“En maksa noin paljon jäätelöstä kojussa {STRINGID}” -STR_1561 :“En maksa noin paljon hattarasta kojussa {STRINGID}” +STR_1556 :“En maksa noin paljon sateenvarjosta kojusta {STRINGID}” +STR_1557 :“En maksa noin paljon juomasta kojusta {STRINGID}” +STR_1558 :“En maksa noin paljon hampurilaisesta kojusta {STRINGID}” +STR_1559 :“En maksa noin paljon ranskalaisista kojusta {STRINGID}” +STR_1560 :“En maksa noin paljon jäätelöstä kojusta {STRINGID}” +STR_1561 :“En maksa noin paljon hattarasta kojusta {STRINGID}” STR_1562 : STR_1563 : STR_1564 : -STR_1565 :“En maksa noin paljon pitsasta kojussa {STRINGID}” +STR_1565 :“En maksa noin paljon pizzasta kojusta {STRINGID}” STR_1566 : -STR_1567 :“En maksa noin paljon popcornista kojussa {STRINGID}” -STR_1568 :“En maksa noin paljon nakkisämpylästä kojussa {STRINGID}” -STR_1569 :“En maksa noin paljon lonkerosta kojussa {STRINGID}” -STR_1570 :“En maksa noin paljon hatusta kojussa {STRINGID}” -STR_1571 :“En maksa noin paljon toffeeomenasta kojussa {STRINGID}” -STR_1572 :“En maksa noin paljon t-paidasta kojussa {STRINGID}” -STR_1573 :“En maksa noin paljon donitsista kojussa {STRINGID}” -STR_1574 :“En maksa noin paljon kahvista kojussa {STRINGID}” +STR_1567 :“En maksa noin paljon popcornista kojusta {STRINGID}” +STR_1568 :“En maksa noin paljon nakkisämpylästä kojusta {STRINGID}” +STR_1569 :“En maksa noin paljon lonkerosta kojusta {STRINGID}” +STR_1570 :“En maksa noin paljon hatusta kojusta {STRINGID}” +STR_1571 :“En maksa noin paljon toffeeomenasta kojusta {STRINGID}” +STR_1572 :“En maksa noin paljon t-paidasta kojusta {STRINGID}” +STR_1573 :“En maksa noin paljon donitsista kojusta {STRINGID}” +STR_1574 :“En maksa noin paljon kahvista kojusta {STRINGID}” STR_1575 : -STR_1576 :“En maksa noin paljon paistetusta kanasta kojussa {STRINGID}” -STR_1577 :“En maksa noin paljon limsasta kojussa {STRINGID}” +STR_1576 :“En maksa noin paljon paistetusta kanasta kojusta {STRINGID}” +STR_1577 :“En maksa noin paljon limsasta kojusta {STRINGID}” STR_1578 : STR_1579 : STR_1580 : @@ -986,7 +986,7 @@ STR_1595 :“Tämä lihapullakeitto kojusta {STRINGID} on todella reilun hint STR_1596 :“Tämä hedelmämehu kojusta {STRINGID} on todella reilun hintainen” STR_1597 :“Tämä soijamaito kojusta {STRINGID} on todella reilun hintainen” STR_1598 :“Tämä sujongkwa kojusta {STRINGID} on todella reilun hintainen” -STR_1599 :“Tämä pantonki kojusta {STRINGID} on todella reilun hintainen” +STR_1599 :“Tämä voileipä kojusta {STRINGID} on todella reilun hintainen” STR_1600 :“Tämä keksi kojusta {STRINGID} on todella reilun hintainen” STR_1601 : STR_1602 : @@ -1006,24 +1006,24 @@ STR_1615 : STR_1616 :“En maksa noin paljon kuvasta laitteesta {STRINGID}” STR_1617 :“En maksa noin paljon kuvasta laitteesta {STRINGID}” STR_1618 :“En maksa noin paljon kuvasta laitteesta {STRINGID}” -STR_1619 :“En maksa noin paljon rinkelistä kojussa {STRINGID}” -STR_1620 :“En maksa noin paljon kaakaosta kojussa {STRINGID}” -STR_1621 :“En maksa noin paljon jääteestä kojussa {STRINGID}” -STR_1622 :“En maksa noin paljon tippaleivästä kojussa {STRINGID}” -STR_1623 :“En maksa noin paljon aurinkolaseista kojussa {STRINGID}” -STR_1624 :“En maksa noin paljon häränlihanuudeleista kojussa {STRINGID}” -STR_1625 :“En maksa noin paljon paistetuista riisinuudeleista kojussa {STRINGID}” -STR_1626 :“En maksa noin paljon wontonkeitosta kojussa {STRINGID}” -STR_1627 :“En maksa noin paljon lihapullakeitosta kojussa {STRINGID}” -STR_1628 :“En maksa noin paljon hedelmämehusta kojussa {STRINGID}” -STR_1629 :“En maksa noin paljon soijamaidosta kojussa {STRINGID}” -STR_1630 :“En maksa noin paljon sujongkwasta kojussa {STRINGID}” -STR_1631 :“En maksa noin paljon patongista kojussa {STRINGID}” -STR_1632 :“En maksa noin paljon keksistä kojussa {STRINGID}” +STR_1619 :“En maksa noin paljon rinkelistä kojusta {STRINGID}” +STR_1620 :“En maksa noin paljon kaakaosta kojusta {STRINGID}” +STR_1621 :“En maksa noin paljon jääteestä kojusta {STRINGID}” +STR_1622 :“En maksa noin paljon tippaleivästä kojusta {STRINGID}” +STR_1623 :“En maksa noin paljon aurinkolaseista kojusta {STRINGID}” +STR_1624 :“En maksa noin paljon häränlihanuudeleista kojusta {STRINGID}” +STR_1625 :“En maksa noin paljon paistetuista riisinuudeleista kojusta {STRINGID}” +STR_1626 :“En maksa noin paljon wontonkeitosta kojusta {STRINGID}” +STR_1627 :“En maksa noin paljon lihapullakeitosta kojusta {STRINGID}” +STR_1628 :“En maksa noin paljon hedelmämehusta kojusta {STRINGID}” +STR_1629 :“En maksa noin paljon soijamaidosta kojusta {STRINGID}” +STR_1630 :“En maksa noin paljon sujongkwasta kojusta {STRINGID}” +STR_1631 :“En maksa noin paljon voileivästä kojusta {STRINGID}” +STR_1632 :“En maksa noin paljon keksistä kojusta {STRINGID}” STR_1633 : STR_1634 : STR_1635 : -STR_1636 :“En maksa noin paljon grillimakkarasta kojussa {STRINGID}” +STR_1636 :“En maksa noin paljon grillimakkarasta kojusta {STRINGID}” STR_1637 : STR_1638 : STR_1639 : @@ -1199,7 +1199,7 @@ STR_1816 :Valitse kävijälistan näyttämä tietotyyppi STR_1817 :({COMMA32}) STR_1818 :{WINDOW_COLOUR_2}Kaikki kävijät STR_1819 :{WINDOW_COLOUR_2}Kaikki kävijät (yhteenvetona) -STR_1820 :{WINDOW_COLOUR_2}Kävijät {STRINGID} +STR_1820 :{WINDOW_COLOUR_2}Kävijät: {STRINGID} STR_1821 :{WINDOW_COLOUR_2}Kävijät, jotka ajattelevat {SMALLFONT}{STRINGID} STR_1822 :{WINDOW_COLOUR_2}Kävijöiden ajatukset kohteesta {POP16}{STRINGID} STR_1823 :Näytä kävijöiden ajatukset tästä laitteesta/kohteesta @@ -1364,34 +1364,34 @@ STR_1984 :{WINDOW_COLOUR_2}Paistetun kanan hinta: STR_1985 :{WINDOW_COLOUR_2}Limsan hinta: STR_1986 :{WINDOW_COLOUR_2} STR_1987 :{WINDOW_COLOUR_2} -STR_1988 :ilmapalloani -STR_1989 :pehmoleluani -STR_1990 :puiston karttaani -STR_1991 :valokuvaani -STR_1992 :sateenvarjoani -STR_1993 :juomaani -STR_1994 :hampurilaistani -STR_1995 :ranskalaisiani -STR_1996 :jäätelöäni -STR_1997 :hattaraani -STR_1998 :tyhjää tölkkiäni -STR_1999 :roskaani -STR_2000 :tyhjää hampurilaisrasiaani -STR_2001 :pizzaani -STR_2002 :kuponkiani -STR_2003 :popcorniani -STR_2004 :nakkisämpylääni -STR_2005 :lonkeroani -STR_2006 :hattuani -STR_2007 :toffeeomenaani -STR_2008 :t-paitaani -STR_2009 :donitsiani -STR_2010 :kahviani -STR_2011 :tyhjää kuppiani -STR_2012 :paistettua kanaani -STR_2013 :limsaani -STR_2014 :tyhjää rasiaani -STR_2015 :tyhjää pulloani +STR_1988 :ilmapallo +STR_1989 :pehmolelu +STR_1990 :puiston kartta +STR_1991 :valokuva +STR_1992 :sateenvarjo +STR_1993 :juoma +STR_1994 :hampurilainen +STR_1995 :ranskalaisannos +STR_1996 :jäätelö +STR_1997 :hattara +STR_1998 :tyhjä tölkki +STR_1999 :roska +STR_2000 :tyhjä hampurilaisrasia +STR_2001 :pizza +STR_2002 :kuponki +STR_2003 :popcorn +STR_2004 :nakkisämpylä +STR_2005 :lonkero +STR_2006 :hattu +STR_2007 :toffeeomena +STR_2008 :t-paita +STR_2009 :donitsi +STR_2010 :kahvi +STR_2011 :tyhjä kuppi +STR_2012 :paistettu kana +STR_2013 :limsa +STR_2014 :tyhjä rasia +STR_2015 :tyhjä pullo STR_2016 :Ilmapalloja STR_2017 :Pehmoleluja STR_2018 :Puistokarttoja @@ -1488,32 +1488,32 @@ STR_2111 :{WINDOW_COLOUR_2}Lihapullakeiton hinta: STR_2112 :{WINDOW_COLOUR_2}Hedelmämehun hinta: STR_2113 :{WINDOW_COLOUR_2}Soijapapumaidon hinta: STR_2114 :{WINDOW_COLOUR_2}Sujongkwan hinta: -STR_2115 :{WINDOW_COLOUR_2}Patongin hinta: +STR_2115 :{WINDOW_COLOUR_2}Voileivän hinta: STR_2116 :{WINDOW_COLOUR_2}Piparin hinta: STR_2117 :{WINDOW_COLOUR_2} STR_2118 :{WINDOW_COLOUR_2} STR_2119 :{WINDOW_COLOUR_2} STR_2120 :{WINDOW_COLOUR_2}Grillimakkaran hinta: STR_2121 :{WINDOW_COLOUR_2} -STR_2125 :rinkeliäni -STR_2126 :kaakaotani -STR_2127 :jääteetäni -STR_2128 :tippaleipääni -STR_2129 :aurinkolasejani -STR_2130 :häränlihanuudeleitani -STR_2131 :paistettuja riisinuudeleitani -STR_2132 :wontonkeittoani -STR_2133 :lihapullakeittoani -STR_2134 :hedelmämehuani -STR_2135 :soijapapumaitoani -STR_2136 :sujongkwaani -STR_2137 :patonkiani -STR_2138 :pipariani -STR_2139 :tyhjää kulhoani -STR_2140 :tyhjää juomatölkkiäni -STR_2141 :tyhjää mehukuppiani -STR_2142 :grillimakkaraani -STR_2143 :tyhjää kulhoani +STR_2125 :rinkeli +STR_2126 :kaakao +STR_2127 :jäätee +STR_2128 :tippaleipä +STR_2129 :aurinkolasi +STR_2130 :häränlihanuudeli +STR_2131 :paistettu riisinuudeli +STR_2132 :wontonkeitto +STR_2133 :lihapullakeitto +STR_2134 :hedelmämehu +STR_2135 :soijapapumaito +STR_2136 :sujongkwa +STR_2137 :voileipä +STR_2138 :pipari +STR_2139 :tyhjää kulho +STR_2140 :tyhjää juomatölkki +STR_2141 :tyhjää mehukuppi +STR_2142 :grillimakkara +STR_2143 :tyhjää kulho STR_2147 :Rinkeleitä STR_2148 :Kaakaoita STR_2149 :Jääteitä @@ -1526,7 +1526,7 @@ STR_2155 :Lihapullakeittoja STR_2156 :Hedelmämehuja STR_2157 :Soijapapumaitoja STR_2158 :Sujongkwoita -STR_2159 :Patonkeja +STR_2159 :Voileipiä STR_2160 :Pipareita STR_2161 :Tyhjiä kulhoja STR_2162 :Tyhjiä juomatölkkejä @@ -1545,7 +1545,7 @@ STR_2177 :lihapullakeittoa STR_2178 :hedelmämehu STR_2179 :soijapapumaitoa STR_2180 :sujongkwaa -STR_2181 :patonki +STR_2181 :voileipä STR_2182 :pipari STR_2183 :tyhjä kulho STR_2184 :tyhjä juomatölkki @@ -1564,7 +1564,7 @@ STR_2199 :Lihapullakeitto STR_2200 :Hedelmämehu STR_2201 :Soijapapumaito STR_2202 :Sujongkwa -STR_2203 :Patonki +STR_2203 :Voileipä STR_2204 :Pipari STR_2205 :Tyhjä kulho STR_2206 :Tyhjä juomatölkki @@ -1579,7 +1579,7 @@ STR_2214 :Rakentaminen ei ole mahdollista pelin ollessa pysäytettynä! STR_2215 :{STRINGID}{NEWLINE}({STRINGID}) STR_2216 :{WINDOW_COLOUR_2}{COMMA16}°C STR_2217 :{WINDOW_COLOUR_2}{COMMA16}°F -STR_2218 :{RED}{STRINGID} laitteessa {STRINGID} ei ole vielä palautunut {STRINGID}lle!{NEWLINE}Tarkista, onko se jumissa tai juuttunut +STR_2218 :{RED}{STRINGID} laitteessa {STRINGID} ei ole vielä palannut {STRINGID}lle!{NEWLINE}Tarkista, onko se jumissa tai juuttunut STR_2219 :{RED}{COMMA16} henkilöä on kuollut laitteen {STRINGID} onnettomuudessa STR_2220 :{WINDOW_COLOUR_2}Puiston taso: {BLACK}{COMMA16} STR_2221 :Puiston taso: {COMMA16} @@ -1740,17 +1740,17 @@ STR_2382 :Maa STR_2383 :Vesi STR_2384 :{WINDOW_COLOUR_2}Tavoitteesi: STR_2385 :{BLACK}Ei mitään -STR_2386 :{BLACK}Puistossasi tulee olla vähintään {COMMA16} kävijää {MONTHYEAR} loppuun mennessä ja puiston tason tulee olla vähintään 600 -STR_2387 :{BLACK}Saavuta puiston arvoksi vähintään {POP16}{POP16}{CURRENCY} vuoden {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR} loppuun mennessä +STR_2386 :{BLACK}Puistossasi tulee olla vähintään {COMMA16} kävijää {MONTHYEAR} loppuun mennessä, ja puiston tason tulee olla vähintään 600 +STR_2387 :{BLACK}Saavuta puiston arvoksi vähintään {POP16}{POP16}{CURRENCY} {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR} loppuun mennessä STR_2388 :{BLACK}Pidä hauskaa! STR_2389 :{BLACK}Rakenna niin hyvä {STRINGID} kuin voit! STR_2390 :{BLACK}Puistossasi tulee olla 10 eri tyyppistä toiminnassa olevaa vuoristorataa joiden huvitustaso on vähintään 6.00 STR_2391 :{BLACK}Puistossasi tulee olla vähintään {COMMA16} kävijää, eikä puiston taso saa pudota hetkeksikään alle 700:n! -STR_2392 :{BLACK}Sinun tulee saada {POP16}{POP16}{CURRENCY} kuukausituloja laitteiden lipputuloista +STR_2392 :{BLACK}Sinun tulee ansaita {POP16}{POP16}{CURRENCY} kuukausituloja laitteiden lipputuloista STR_2393 :{BLACK}Puistossasi tulee olla 10 eri tyyppistä toiminnassa olevaa vuoristorataa, joiden pitää olla vähintään {LENGTH} pitkiä ja joiden huvitustaso on vähintään 7.00 STR_2394 :{BLACK}Viimeistele puiston 5 osittain rakennettua vuoristorataa niin, että jokaisen huvitustaso on vähintään {POP16}{POP16}{COMMA2DP32} -STR_2395 :{BLACK}Maksa lainasi takaisin ja saavuta puistolle arvo {POP16}{POP16}{CURRENCY} -STR_2396 :{BLACK}Sinun tulee saada {POP16}{POP16}{CURRENCY} kuukausituloja ruoan, juomien ja tavaroiden myynnistä +STR_2395 :{BLACK}Maksa lainasi takaisin, ja saavuta puiston arvoksi vähintään {POP16}{POP16}{CURRENCY} +STR_2396 :{BLACK}Sinun tulee ansaita {POP16}{POP16}{CURRENCY} kuukausituloja ruoan, juomien ja tavaroiden myynnistä STR_2397 :Ei mitään STR_2398 :Kävijöiden määrä tiettynä päivänä STR_2399 :Puiston arvo tiettynä päivänä @@ -1792,12 +1792,12 @@ STR_2436 :1 viikko STR_2443 :{WINDOW_COLOUR_2}Viikottainen kustannus: {BLACK}{CURRENCY2DP} STR_2444 :{WINDOW_COLOUR_2}Kokonaiskustannus: {BLACK}{CURRENCY2DP} STR_2445 :Aloita tämä markkinointikampanja -STR_2446 :{YELLOW}Markkinointikampanjasi ilmaiseen sisäänpääsyyn on loppunut -STR_2447 :{YELLOW}Markkinointikampanjasi ilmaiseen pääsyyn laitteeseen {STRINGID} on loppunut -STR_2448 :{YELLOW}Markkinointikampanjasi sisäänpääsyyn puoleen hintaan on loppunut -STR_2449 :{YELLOW}Markkinointikampanjasi ilmaisia {STRINGID} varten on loppunut -STR_2450 :{YELLOW}Mainoskampanjasi puistolle on loppunut -STR_2451 :{YELLOW}Mainoskampanjasi laitteelle {STRINGID} on loppunut +STR_2446 :{YELLOW}Markkinointikampanjasi ilmaiseen sisäänpääsyyn on päättynyt +STR_2447 :{YELLOW}Markkinointikampanjasi ilmaiseen pääsyyn laitteeseen {STRINGID} on päättynyt +STR_2448 :{YELLOW}Markkinointikampanjasi sisäänpääsyyn puoleen hintaan on päättynyt +STR_2449 :{YELLOW}Markkinointikampanjasi ilmaisia {STRINGID} varten on päättynyt +STR_2450 :{YELLOW}Mainoskampanjasi puistolle on päättynyt +STR_2451 :{YELLOW}Mainoskampanjasi laitteelle {STRINGID} on päättynyt STR_2452 :{WINDOW_COLOUR_2}Varat (miinus velka): {BLACK}{CURRENCY2DP} STR_2453 :{WINDOW_COLOUR_2}Varat (miinus velka): {RED}{CURRENCY2DP} STR_2454 :{BLACK}{CURRENCY2DP} - @@ -2000,8 +2000,8 @@ STR_2793 :(Suorittanut {STRINGID}) STR_2794 :{WINDOW_COLOUR_2}Suorittanut: {BLACK}{STRINGID}{NEWLINE}{WINDOW_COLOUR_2}Yhtiön arvolla: {BLACK}{CURRENCY} STR_2795 :Järjestä STR_2796 :Järjestä laitelistaus valitun tietotyypin mukaan -STR_2797 :Vieritä näkymää kun hiiri on näytön reunassa -STR_2798 :Valitse vieritetäänkö näkymää kun hiiri on näytön reunassa +STR_2797 :Vieritä näkymää kun osoitin on näytön reunassa +STR_2798 :Valitse vieritetäänkö näkymää kun osoitin on näytön reunassa STR_2799 :Näytä ja aseta näppäinasetukset STR_2800 :{WINDOW_COLOUR_2}Sisäänpääsyt: {BLACK}{COMMA32} STR_2801 :{WINDOW_COLOUR_2}Tulot sisäänpääsyistä: {BLACK}{CURRENCY2DP} @@ -2015,10 +2015,10 @@ STR_2808 :{RED}Kävijät valittavat puistosi ilkivallasta{NEWLINE}Tarkista ja STR_2809 :{RED}Kävijät ovat nälkäisiä eivätkä löydä paikkaa josta saisi ruokaa STR_2810 :{RED}Kävijät ovat janoisia eivätkä löydä paikkaa josta saisi juotavaa STR_2811 :{RED}Kävijät valittavat etteivät löydä vessaa puistostasi -STR_2812 :{RED}Kävijät eksyvät tai jäävät jumiink{NEWLINE}Tarkista polkusi että kävijät löytävä tiensä paikasta toiseen -STR_2813 :{RED}Sisäänpääsyn hinta on liian korkea!{NEWLINE}Laske sisäänpääsyhintaa tai paranna puiston arvoa jotta puistosi houkuttelee enemmän kävijöitä +STR_2812 :{RED}Kävijät eksyvät tai jäävät jumiin{NEWLINE}Tarkista polkuasettelusi, jotta kävijät löytävät tiensä paikasta toiseen +STR_2813 :{RED}Puiston sisäänpääsyhinta on liian korkea!{NEWLINE}Laske sisäänpääsyhintaa tai paranna puiston arvoa jotta puistosi houkuttelee enemmän kävijöitä STR_2814 :{WINDOW_COLOUR_2}Sotkuisin puisto -palkinto -STR_2815 :{WINDOW_COLOUR_2}Siistein puisto -palkinto +STR_2815 :{WINDOW_COLOUR_2}Puhtain puisto -palkinto STR_2816 :{WINDOW_COLOUR_2}Parhaimmat vuoristoradat -palkinto STR_2817 :{WINDOW_COLOUR_2}Paras hinta/laatu-suhde -palkinto STR_2818 :{WINDOW_COLOUR_2}Kaunein puisto -palkinto @@ -2035,7 +2035,7 @@ STR_2828 :{WINDOW_COLOUR_2}Häikäisevimmät värivalinnat -palkinto STR_2829 :{WINDOW_COLOUR_2}Sekavin asettelu -palkinto STR_2830 :{WINDOW_COLOUR_2}Parhaat lempeät laitteet -palkinto STR_2831 :{TOPAZ}Puistosi sai ”Maan sotkuisin puisto” -palkinnon! -STR_2832 :{TOPAZ}Puistosi sai ”Maan siistein puisto” -palkinnon! +STR_2832 :{TOPAZ}Puistosi sai ”Maan puhtain puisto” -palkinnon! STR_2833 :{TOPAZ}Puistosi sai ”Parhaimmat vuoristoradat” -palkinnon! STR_2834 :{TOPAZ}Puistosi sai ”Maan paras hinta/laatu-suhde” -palkinnon! STR_2835 :{TOPAZ}Puistosi sai ”Maan kaunein puisto” -palkinnon! @@ -2051,7 +2051,7 @@ STR_2844 :{TOPAZ}Puistosi sai ”Maan parhaat mukautetut laitteet” -palkinn STR_2845 :{TOPAZ}Puistosi sai ”Häikäisevimmät värivalinnat” -palkinnon! STR_2846 :{TOPAZ}Puistosi sai ”Sekavin asettelu” -palkinnon! STR_2847 :{TOPAZ}Puistosi sai ”Maan parhaat lempeät laitteet” -palkinnon! -STR_2848 :{WINDOW_COLOUR_2}Ei tuoreita palkintoja +STR_2848 :{WINDOW_COLOUR_2}Ei viimeaikaisia palkintoja STR_2849 :Uusi skenaario asennettiin onnistuneesti STR_2850 :Uusi ratamalli asennettiin onnistuneesti STR_2851 :Skenaario on jo asennettu @@ -2152,7 +2152,7 @@ STR_3062 :Perusvuoristorata STR_3063 :Vesikanava (vedenalainen rata) STR_3064 :Aloittelijoiden puistot STR_3065 :Haastavat puistot -STR_3066 :Asiantuntijoiden puistot +STR_3066 :Vaativat puistot STR_3067 :“Oikeat” puistot STR_3068 :Muut puistot STR_3069 :Yläosa @@ -3585,7 +3585,7 @@ STR_6377 :{WINDOW_COLOUR_2}Tyyppi: {BLACK}{STRINGID} laitteelle {STRINGID} STR_6378 :Vastaanotetaan esinelistaa: {INT32} / {INT32} STR_6379 :Vastaanotettiin epäkelpoja tietoja STR_6380 :Päivitys saatavilla! -STR_6381 :Liity OpenRCT2 -Discordiin! +STR_6381 :Liity OpenRCT2:n Discordiin! STR_6382 :Uusi OpenRCT2-versio on saatavilla: {STRING}! STR_6383 :Avaa lataussivusto STR_6384 :Lumisade diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 160dcffa53..e8ac49de2f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -16,6 +16,7 @@ - Fix: [#14649] ImageImporter incorrectly remaps colours outside the RCT2 palette. - Fix: [#14667] “Extreme Hawaiian Island” has unpurchaseable land tiles (original bug). - Fix: [#15096] Crash when placing entrances in the scenario editor near the map corner. +- Fix: [#15136] Exported SV6 files cause vanilla RCT2 to hang. - Fix: [#15142] ToonTowner's mine roofs were moved into the pirate theme scenery group instead of the mine theme scenery group. - Fix: [#15148] Track Designs Manager delete confirmation window doesn't display properly. - Fix: [#15170] Plugin: incorrect label text alignment. diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 1406e82f41..2cf33f60bd 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -655,17 +656,8 @@ static void window_map_textinput(rct_window* w, rct_widgetindex widgetIndex, cha size += 2; size = std::clamp(size, MINIMUM_MAP_SIZE_TECHNICAL, MAXIMUM_MAP_SIZE_TECHNICAL); - int32_t currentSize = gMapSize; - while (size < currentSize) - { - map_window_decrease_map_size(); - currentSize--; - } - while (size > currentSize) - { - map_window_increase_map_size(); - currentSize++; - } + auto changeMapSizeAction = ChangeMapSizeAction(size); + GameActions::Execute(&changeMapSizeAction); w->Invalidate(); } break; @@ -1370,17 +1362,8 @@ static void window_map_set_peep_spawn_tool_down(const ScreenCoordsXY& screenCoor */ static void map_window_increase_map_size() { - if (gMapSize >= MAXIMUM_MAP_SIZE_TECHNICAL) - { - context_show_error(STR_CANT_INCREASE_MAP_SIZE_ANY_FURTHER, STR_NONE, {}); - return; - } - - gMapSize++; - map_extend_boundary_surface(); - window_map_init_map(); - window_map_centre_on_view_point(); - gfx_invalidate_screen(); + auto increaseMapSizeAction = ChangeMapSizeAction(gMapSize + 1); + GameActions::Execute(&increaseMapSizeAction); } /** @@ -1389,17 +1372,8 @@ static void map_window_increase_map_size() */ static void map_window_decrease_map_size() { - if (gMapSize < 16) - { - context_show_error(STR_CANT_DECREASE_MAP_SIZE_ANY_FURTHER, STR_NONE, {}); - return; - } - - gMapSize--; - map_remove_out_of_range_elements(); - window_map_init_map(); - window_map_centre_on_view_point(); - gfx_invalidate_screen(); + auto decreaseMapSizeAction = ChangeMapSizeAction(gMapSize - 1); + GameActions::Execute(&decreaseMapSizeAction); } static constexpr const uint16_t WaterColour = MapColour(PALETTE_INDEX_195); diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 897f6eb518..107a66e207 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -103,6 +103,7 @@ enum class GameCommand : int32_t GuestSetFlags, // GA SetDate, // GA Custom, // GA + ChangeMapSize, Count, }; diff --git a/src/openrct2/actions/ChangeMapSizeAction.cpp b/src/openrct2/actions/ChangeMapSizeAction.cpp new file mode 100644 index 0000000000..fb55284220 --- /dev/null +++ b/src/openrct2/actions/ChangeMapSizeAction.cpp @@ -0,0 +1,77 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 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 "ChangeMapSizeAction.h" + +#include "../Context.h" +#include "../drawing/IDrawingEngine.h" +#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" +#include "../windows/Intent.h" + +ChangeMapSizeAction::ChangeMapSizeAction(const int32_t targetSize) + : _targetSize(targetSize) +{ +} + +uint16_t ChangeMapSizeAction::GetActionFlags() const +{ + return GameAction::GetActionFlags() | GameActions::Flags::AllowWhilePaused; +} + +void ChangeMapSizeAction::Serialise(DataSerialiser& stream) +{ + GameAction::Serialise(stream); + stream << DS_TAG(_targetSize); +} + +GameActions::Result::Ptr ChangeMapSizeAction::Query() const +{ + if (_targetSize >= MAXIMUM_MAP_SIZE_TECHNICAL) + { + return std::make_unique( + GameActions::Status::InvalidParameters, STR_CANT_INCREASE_MAP_SIZE_ANY_FURTHER, STR_NONE); + } + if (_targetSize < 16) + { + return std::make_unique( + GameActions::Status::InvalidParameters, STR_CANT_DECREASE_MAP_SIZE_ANY_FURTHER, STR_NONE); + } + return std::make_unique(); +} + +GameActions::Result::Ptr ChangeMapSizeAction::Execute() const +{ + while (gMapSize != _targetSize) + { + if (_targetSize < gMapSize) + { + gMapSize--; + map_remove_out_of_range_elements(); + } + else + { + gMapSize++; + map_extend_boundary_surface(); + } + } + + auto* ctx = OpenRCT2::GetContext(); + auto uiContext = ctx->GetUiContext(); + auto* windowManager = uiContext->GetWindowManager(); + + windowManager->BroadcastIntent(Intent(INTENT_ACTION_MAP)); + gfx_invalidate_screen(); + return std::make_unique(); +} + +void ChangeMapSizeAction::AcceptParameters(GameActionParameterVisitor& visitor) +{ + visitor.Visit("targetSize", _targetSize); +} diff --git a/src/openrct2/actions/ChangeMapSizeAction.h b/src/openrct2/actions/ChangeMapSizeAction.h new file mode 100644 index 0000000000..93d3e021fc --- /dev/null +++ b/src/openrct2/actions/ChangeMapSizeAction.h @@ -0,0 +1,30 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 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 "../world/Map.h" +#include "GameAction.h" + +DEFINE_GAME_ACTION(ChangeMapSizeAction, GameCommand::ChangeMapSize, GameActions::Result) +{ +public: + ChangeMapSizeAction() = default; + ChangeMapSizeAction(const int32_t targetSize); + + void AcceptParameters(GameActionParameterVisitor & visitor) override; + uint16_t GetActionFlags() const override; + + void Serialise(DataSerialiser & stream) override; + GameActions::Result::Ptr Query() const override; + GameActions::Result::Ptr Execute() const override; + +private: + int32_t _targetSize; +}; diff --git a/src/openrct2/actions/GameActionRegistration.cpp b/src/openrct2/actions/GameActionRegistration.cpp index 872883540c..e48bfa8d73 100644 --- a/src/openrct2/actions/GameActionRegistration.cpp +++ b/src/openrct2/actions/GameActionRegistration.cpp @@ -13,6 +13,7 @@ #include "BannerSetColourAction.h" #include "BannerSetNameAction.h" #include "BannerSetStyleAction.h" +#include "ChangeMapSizeAction.h" #include "ClearAction.h" #include "ClimateSetAction.h" #include "CustomAction.h" @@ -172,6 +173,7 @@ namespace GameActions Register(); Register(); Register(); + Register(); #ifdef ENABLE_SCRIPTING Register(); #endif diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 217ff1257f..6c79e3a5f8 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -58,6 +58,7 @@ + @@ -505,6 +506,7 @@ + diff --git a/src/openrct2/network/NetworkAction.cpp b/src/openrct2/network/NetworkAction.cpp index 99e6e8c2c2..005de69e7c 100644 --- a/src/openrct2/network/NetworkAction.cpp +++ b/src/openrct2/network/NetworkAction.cpp @@ -200,6 +200,7 @@ const std::array(NetworkPermission::Count)> N GameCommand::PlaceParkEntrance, GameCommand::RemoveParkEntrance, GameCommand::PlacePeepSpawn, + GameCommand::ChangeMapSize, }, }, NetworkAction{ diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 99bec0e452..dacaedb18f 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -40,7 +40,7 @@ // This string specifies which version of network stream current build uses. // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -#define NETWORK_STREAM_VERSION "10" +#define NETWORK_STREAM_VERSION "11" #define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION static Peep* _pickup_peep = nullptr; diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index b60317c71d..548688ca60 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -1796,7 +1796,7 @@ static void clear_element_at(const CoordsXY& loc, TileElement** elementPtr) break; } auto parkEntranceRemoveAction = ParkEntranceRemoveAction(CoordsXYZ{ seqLoc, element->GetBaseZ() }); - auto result = GameActions::Execute(&parkEntranceRemoveAction); + auto result = GameActions::ExecuteNested(&parkEntranceRemoveAction); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. if (result->Error != GameActions::Status::Ok) { @@ -1808,7 +1808,7 @@ static void clear_element_at(const CoordsXY& loc, TileElement** elementPtr) { CoordsXYZD wallLocation = { loc.x, loc.y, element->GetBaseZ(), element->GetDirection() }; auto wallRemoveAction = WallRemoveAction(wallLocation); - auto result = GameActions::Execute(&wallRemoveAction); + auto result = GameActions::ExecuteNested(&wallRemoveAction); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. if (result->Error != GameActions::Status::Ok) { @@ -1820,7 +1820,7 @@ static void clear_element_at(const CoordsXY& loc, TileElement** elementPtr) { auto removeSceneryAction = LargeSceneryRemoveAction( { loc.x, loc.y, element->GetBaseZ(), element->GetDirection() }, element->AsLargeScenery()->GetSequenceIndex()); - auto result = GameActions::Execute(&removeSceneryAction); + auto result = GameActions::ExecuteNested(&removeSceneryAction); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. if (result->Error != GameActions::Status::Ok) { @@ -1832,7 +1832,7 @@ static void clear_element_at(const CoordsXY& loc, TileElement** elementPtr) { auto bannerRemoveAction = BannerRemoveAction( { loc.x, loc.y, element->GetBaseZ(), element->AsBanner()->GetPosition() }); - auto result = GameActions::Execute(&bannerRemoveAction); + auto result = GameActions::ExecuteNested(&bannerRemoveAction); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. if (result->Error != GameActions::Status::Ok) { diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 4f1b5573b3..aed6d68ff7 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -46,21 +46,19 @@ static std::array, SPATIAL_INDEX_SIZE> gSpriteSpatialIndex static void FreeEntity(EntityBase& entity); -constexpr size_t GetSpatialIndexOffset(int32_t x, int32_t y) +static constexpr size_t GetSpatialIndexOffset(const CoordsXY& loc) { - if (x == LOCATION_NULL) + if (loc.IsNull()) return SPATIAL_INDEX_LOCATION_NULL; - const auto tileX = std::clamp(x / COORDS_XY_STEP, 0, MAXIMUM_MAP_SIZE_TECHNICAL); - const auto tileY = std::clamp(y / COORDS_XY_STEP, 0, MAXIMUM_MAP_SIZE_TECHNICAL); - const auto index = tileX * MAXIMUM_MAP_SIZE_TECHNICAL + tileY; + // NOTE: The input coordinate is rotated and can have negative components. + const auto tileX = std::abs(loc.x) / COORDS_XY_STEP; + const auto tileY = std::abs(loc.y) / COORDS_XY_STEP; - if (index >= std::size(gSpriteSpatialIndex)) - { + if (tileX >= MAXIMUM_MAP_SIZE_TECHNICAL || tileY >= MAXIMUM_MAP_SIZE_TECHNICAL) return SPATIAL_INDEX_LOCATION_NULL; - } - return index; + return tileX * MAXIMUM_MAP_SIZE_TECHNICAL + tileY; } // Required for GetEntity to return a default @@ -155,7 +153,7 @@ EntityBase* get_sprite(size_t spriteIndex) const std::vector& GetEntityTileList(const CoordsXY& spritePos) { - return gSpriteSpatialIndex[GetSpatialIndexOffset(spritePos.x, spritePos.y)]; + return gSpriteSpatialIndex[GetSpatialIndexOffset(spritePos)]; } void EntityBase::Invalidate() @@ -463,7 +461,7 @@ void sprite_misc_update_all() // Performs a search to ensure that insert keeps next_in_quadrant in sprite_index order static void SpriteSpatialInsert(EntityBase* sprite, const CoordsXY& newLoc) { - size_t newIndex = GetSpatialIndexOffset(newLoc.x, newLoc.y); + size_t newIndex = GetSpatialIndexOffset(newLoc); auto& spatialVector = gSpriteSpatialIndex[newIndex]; auto index = std::lower_bound(std::begin(spatialVector), std::end(spatialVector), sprite->sprite_index); spatialVector.insert(index, sprite->sprite_index); @@ -471,7 +469,7 @@ static void SpriteSpatialInsert(EntityBase* sprite, const CoordsXY& newLoc) static void SpriteSpatialRemove(EntityBase* sprite) { - size_t currentIndex = GetSpatialIndexOffset(sprite->x, sprite->y); + size_t currentIndex = GetSpatialIndexOffset({ sprite->x, sprite->y }); auto& spatialVector = gSpriteSpatialIndex[currentIndex]; auto index = std::lower_bound(std::begin(spatialVector), std::end(spatialVector), sprite->sprite_index); if (index != std::end(spatialVector) && *index == sprite->sprite_index) @@ -487,8 +485,8 @@ static void SpriteSpatialRemove(EntityBase* sprite) static void SpriteSpatialMove(EntityBase* sprite, const CoordsXY& newLoc) { - size_t newIndex = GetSpatialIndexOffset(newLoc.x, newLoc.y); - size_t currentIndex = GetSpatialIndexOffset(sprite->x, sprite->y); + size_t newIndex = GetSpatialIndexOffset(newLoc); + size_t currentIndex = GetSpatialIndexOffset({ sprite->x, sprite->y }); if (newIndex == currentIndex) return;