Compare commits
995 Commits
Author | SHA1 | Date |
---|---|---|
Arnold Zhou | 0254b570d8 | |
Stephan Spengler | 71a8eee5c6 | |
spacek531 | a25daf2fc1 | |
spacek531 | 4ea55ef415 | |
Arnold Zhou | 63d1259fd7 | |
Michael Steenbeek | 8a93ce1714 | |
Gymnasiast | 337707c889 | |
Gymnasiast | eb1bb3b985 | |
Gymnasiast | 8c1a841a7f | |
Gymnasiast | 7e9110b35b | |
Michael Steenbeek | d4f97d3875 | |
OpenRCT2 git bot | 965b8434dd | |
Michael Steenbeek | 3e77adc169 | |
OpenRCT2 git bot | a177938fdb | |
OpenRCT2 git bot | bf1d69b309 | |
shakthi124 | 7fb3022f32 | |
Stephan Spengler | 73043106ed | |
Aaron van Geffen | c00fe1e7d6 | |
Aaron van Geffen | 7c9b27f57a | |
spacek531 | 94750f4e34 | |
OpenRCT2 git bot | 37b0dfcb16 | |
Michael Steenbeek | fc0b5fde27 | |
Michael Steenbeek | 6ac6db489c | |
Die4Ever | a50fa5e04b | |
Aaron van Geffen | f703413dca | |
Arnold Zhou | 01319ff352 | |
Michael Steenbeek | a985931910 | |
Harry-Hopkinson | 2a027f4269 | |
Harry-Hopkinson | 900b7a15d7 | |
Harry-Hopkinson | 7fa27912ac | |
Harry-Hopkinson | 62618edd9f | |
Harry-Hopkinson | f4ce81ac6d | |
Harry-Hopkinson | c489d6288a | |
Harry-Hopkinson | c829854b88 | |
Harry-Hopkinson | 1cca5d7ec3 | |
Harry-Hopkinson | a7be543fc3 | |
Harry-Hopkinson | 84bdd12008 | |
OpenRCT2 git bot | 5e9cdbf363 | |
Harry Hopkinson | 68f2b0f207 | |
Harry Hopkinson | 3c04e67ece | |
Michael Steenbeek | d7f6baf307 | |
Michael Steenbeek | 0977e7c724 | |
Michael Steenbeek | 5e81bc7ad2 | |
Gymnasiast | 30dca0f03e | |
Gymnasiast | 8a181b5513 | |
Aaron van Geffen | f5b5e45069 | |
Aaron van Geffen | ceed2c0c3a | |
OpenRCT2 git bot | c74610ce7d | |
Michael Steenbeek | 8f8149f1e5 | |
OpenRCT2 git bot | 083e987e4e | |
Aaron van Geffen | 5462ea00cc | |
Aaron van Geffen | 15837e7e95 | |
Michael Steenbeek | 9cd648747f | |
OpenRCT2 git bot | 0eee7377f5 | |
Aaron van Geffen | fd12a507a0 | |
Aaron van Geffen | e8a009bb3c | |
Ryan Gudonis | f5834d67db | |
Aaron van Geffen | adc8c5e6a2 | |
Michael Steenbeek | 308cc3c9a0 | |
OpenRCT2 git bot | ce626b6deb | |
Stephan Spengler | 7315b3bdbf | |
Aaron van Geffen | 10c97c6599 | |
Matt | fe968fbc38 | |
Aaron van Geffen | f17d936958 | |
OpenRCT2 git bot | bbb5b92610 | |
Aaron van Geffen | 04fa09e8df | |
Aaron van Geffen | c9de56471d | |
Aaron van Geffen | 804f63e52a | |
Aaron van Geffen | a943abdbb3 | |
Aaron van Geffen | 2f05dc9179 | |
Aaron van Geffen | 000637a18e | |
Aaron van Geffen | 539bb5487e | |
Aaron van Geffen | 6cb49d2e3b | |
OpenRCT2 git bot | 08a3513f7f | |
Aaron van Geffen | e6fac7f870 | |
Michael Steenbeek | 06e2363b1e | |
Michael Steenbeek | 8b9536eeb7 | |
Gymnasiast | 7d3ac7ea9d | |
Gymnasiast | b5743eccbc | |
Gymnasiast | 250a26fb14 | |
Gymnasiast | ae88b7b0fc | |
Michael Steenbeek | eaba5f356c | |
OpenRCT2 git bot | 2217d401c1 | |
Michael Steenbeek | 15d5f75a2b | |
HtotheTML | c907d02a05 | |
Gymnasiast | 0311f4b875 | |
Gymnasiast | a3a09577be | |
Gymnasiast | 3bb1f8e18a | |
Gymnasiast | dde7a8270a | |
Gymnasiast | 308912b8ce | |
Gymnasiast | 86f80faca8 | |
Gymnasiast | 4f41734dc5 | |
Ted John | 1c2bc82456 | |
Ted John | e887662d15 | |
Ted John | 58292caf22 | |
Ted John | 641d8f70aa | |
Ted John | 13c4ee5213 | |
Ted John | 774a8a382f | |
Ted John | 776fa71a4f | |
Ted John | abc67f09e6 | |
Gymnasiast | 6c31491bff | |
Gymnasiast | 99b99ef0c5 | |
Gymnasiast | 270c6320b9 | |
Gymnasiast | c0d425357e | |
Gymnasiast | 5522b5cb03 | |
Michael Steenbeek | 311628dadf | |
Aaron van Geffen | 57bdae9d49 | |
Aaron van Geffen | 4e2f546d14 | |
rohan4412 | 24a24e3f53 | |
Aaron van Geffen | 69847a02ed | |
OpenRCT2 git bot | 5260b5d52f | |
Aaron van Geffen | 14828e4416 | |
Michael Steenbeek | 340a6838cc | |
Harry Hopkinson | ef8618209e | |
Aaron van Geffen | 8b51112a81 | |
Stephan Spengler | f4156e9043 | |
OpenRCT2 git bot | 919cef7f55 | |
Michael Steenbeek | 5b57071d73 | |
spacek531 | 6ba33b735a | |
Michael Steenbeek | 288575c4ff | |
Aaron van Geffen | 2f68c7e823 | |
Aaron van Geffen | 3e4a77fd50 | |
Aaron van Geffen | 6c66bff4b6 | |
Aaron van Geffen | 308219d32e | |
Aaron van Geffen | 69c5e6ad9e | |
Aaron van Geffen | 9a4aa4bb94 | |
Michał Janiszewski | 3c35558f3f | |
spacek531 | 104a5d5222 | |
Aaron van Geffen | 1a5f4c6952 | |
Michael Steenbeek | 6979e88b9e | |
Michał Janiszewski | 7239810d39 | |
spacek531 | 6df16c7946 | |
Aaron van Geffen | 4ffe00aaba | |
Michael Steenbeek | 59297f0038 | |
Michael Steenbeek | 0e245692b2 | |
Michael Steenbeek | 5407ba2d55 | |
Aaron van Geffen | 57a6b0a00c | |
Harry Hopkinson | bda383c236 | |
Aaron van Geffen | b3b62c86be | |
Aaron van Geffen | 828aeadf5b | |
Aaron van Geffen | ef4cad5ee3 | |
Aaron van Geffen | b0a3888d4d | |
Aaron van Geffen | 96ce7f706f | |
Aaron van Geffen | 945a799228 | |
Michael Steenbeek | 3f92139dad | |
Gymnasiast | 3ed61cac9a | |
Gymnasiast | 98e980f535 | |
Aaron van Geffen | 9e206d5528 | |
Aaron van Geffen | 86835836b5 | |
Michael Steenbeek | 6408b0537a | |
Gymnasiast | 42add207e9 | |
Gymnasiast | 4cdaaa9810 | |
Gymnasiast | 9e2463ff52 | |
Gymnasiast | b3d9255c2d | |
Gymnasiast | 09dc7077c1 | |
Harry Hopkinson | 740ee91cb5 | |
Aaron van Geffen | 347ce53f26 | |
Aaron van Geffen | 92aeace98c | |
Aaron van Geffen | 617003dff6 | |
Aaron van Geffen | 740b624eed | |
Aaron van Geffen | a63d86c488 | |
Aaron van Geffen | ba9c84f835 | |
Harry Hopkinson | 98ac3a1bbc | |
Michael Steenbeek | 2d99e49a05 | |
Duncan | eded6e2129 | |
Duncan | 2884e095c9 | |
OpenRCT2 git bot | cecd4b04c8 | |
Mike | d58673105d | |
Michał Janiszewski | 63e996194f | |
Claudio Tiecher | 10a5d790c6 | |
Michał Janiszewski | 24a2db9fc9 | |
Aaron van Geffen | 738471ff84 | |
Harry Hopkinson | 613d60b446 | |
Aaron van Geffen | 47d0996b4f | |
Aaron van Geffen | 81e068c7b2 | |
Aaron van Geffen | a61a561d01 | |
Aaron van Geffen | a627cf7a1e | |
Aaron van Geffen | 23551c09b3 | |
Aaron van Geffen | ca6f142a97 | |
Michael Steenbeek | ca1118c2f1 | |
Aaron van Geffen | 1e9bee0c00 | |
Aaron van Geffen | 05448222e2 | |
Aaron van Geffen | e423575411 | |
Aaron van Geffen | 6e607bbb37 | |
Aaron van Geffen | 16a7e36984 | |
Aaron van Geffen | c4fdade375 | |
Aaron van Geffen | b37e2479c8 | |
Aaron van Geffen | d801882492 | |
Aaron van Geffen | 376cb1f74a | |
Aaron van Geffen | 8dd22e90b4 | |
Aaron van Geffen | 58aa5e0106 | |
Aaron van Geffen | 779e65d8b2 | |
Aaron van Geffen | 73c592b137 | |
Aaron van Geffen | aeef004710 | |
Aaron van Geffen | 0d3c9909b6 | |
Aaron van Geffen | f51404d29d | |
Michał Janiszewski | 11510a0e0b | |
Michał Janiszewski | a611244b31 | |
Aaron van Geffen | 2ff3295587 | |
Aaron van Geffen | d6ce62e74f | |
Aaron van Geffen | 3e000d550b | |
Aaron van Geffen | db73b1fede | |
Aaron van Geffen | 809fe4a51b | |
Aaron van Geffen | 893392d987 | |
Michael Steenbeek | bf74dfba7b | |
Aaron van Geffen | 831c7651bb | |
Michael Steenbeek | 46b356047c | |
Michał Janiszewski | c8ec8a550a | |
Michał Janiszewski | 6838832778 | |
Michał Janiszewski | 18d2b5ef6e | |
Michał Janiszewski | 6721a74b26 | |
Michał Janiszewski | 80ee864f37 | |
Aaron van Geffen | fa90a84d22 | |
mrmbernardi | 489ae58c5c | |
OpenRCT2 git bot | f3bb57a54c | |
Harry Hopkinson | bbc5a109ef | |
Aaron van Geffen | c92d3bf018 | |
Aaron van Geffen | 770277ab95 | |
Katherine Norton | cd528665e6 | |
Mathias Gibbens | accbd799ee | |
OpenRCT2 git bot | cf3d4c7e22 | |
Gymnasiast | 5319c0e8bd | |
Gymnasiast | 3641e78341 | |
Michał Janiszewski | a088f7615b | |
Gymnasiast | 332ba3244e | |
Gymnasiast | dfd958b855 | |
Gymnasiast | 369996809c | |
Michał Janiszewski | 4e8f578075 | |
OpenRCT2 git bot | 9f69b532b1 | |
Aaron van Geffen | 17920b6039 | |
Ryan Gudonis | 339a572d03 | |
Michał Janiszewski | 7b12667ddb | |
Aaron van Geffen | 8973e35ba1 | |
Michał Janiszewski | ad79699b21 | |
OpenRCT2 git bot | 15ee7a244b | |
Matt | 409da62fe8 | |
Big-Blue-1 | e31bebbedf | |
Michael Steenbeek | 921860729b | |
Harry-Hopkinson | dda8c3ecb2 | |
Michael Steenbeek | 44c442f832 | |
Gymnasiast | 938f3cd783 | |
Gymnasiast | 00618c79d2 | |
Gymnasiast | 22e7ad598b | |
Gymnasiast | dbbfc2f1d1 | |
Michael Steenbeek | 575cd756b3 | |
Aaron van Geffen | 95239d75c9 | |
Aaron van Geffen | 66cb4a1d81 | |
Aaron van Geffen | 25faa361ad | |
Aaron van Geffen | dcc1a0627d | |
Michael Steenbeek | 4de4f4a985 | |
duncanspumpkin | f6c34ddd59 | |
duncanspumpkin | 4810a72232 | |
Michael Steenbeek | 5470a49382 | |
Gymnasiast | de0ca4ded4 | |
Gymnasiast | 6335906d03 | |
Michael Steenbeek | c02c7925c3 | |
JDCustard | fe6da02718 | |
Michael Steenbeek | 21001be23d | |
Aaron van Geffen | 2d74287b4b | |
Harry-Hopkinson | 52ad6861af | |
Harry-Hopkinson | d6efe4cd53 | |
Harry-Hopkinson | b9003d6e60 | |
Harry-Hopkinson | 8eebcc5486 | |
Harry-Hopkinson | a3e685bf1f | |
Harry-Hopkinson | 97e9634a61 | |
Harry-Hopkinson | b795d4ba8a | |
Aaron van Geffen | f5f31496db | |
Aaron van Geffen | d35d08e86a | |
Harry Hopkinson | 9266a6f0d3 | |
Michael Steenbeek | 03926c46d0 | |
Michael Steenbeek | e6207ee1b3 | |
Aaron van Geffen | 56cbc0eb8a | |
Michael Steenbeek | be9f1a2072 | |
Michael Steenbeek | 6d0b02e524 | |
Harry-Hopkinson | 74513374d1 | |
Harry-Hopkinson | 7aed4d18f2 | |
Harry-Hopkinson | 82c31b80d4 | |
Harry-Hopkinson | 5ef115941d | |
Harry-Hopkinson | ef7d7575de | |
Harry-Hopkinson | 8ce6ba7606 | |
Harry-Hopkinson | 9e2b45fab3 | |
Harry-Hopkinson | 343b10c172 | |
Michael Steenbeek | 7a1b4ce425 | |
duncanspumpkin | 34fa06cd29 | |
duncanspumpkin | c8a5af02a5 | |
duncanspumpkin | 788878e7fc | |
duncanspumpkin | bd3ae5cbb9 | |
duncanspumpkin | 3448926251 | |
mrmbernardi | f4cebb11df | |
Gustav Burkhardt | 5837a33a60 | |
Aaron van Geffen | 3cda6e367b | |
Michael Steenbeek | af46ff5f0a | |
Michał Janiszewski | 49b28f1757 | |
Gymnasiast | 8beb50da61 | |
Gymnasiast | a00f478104 | |
Gymnasiast | 9e236d1b5a | |
Gymnasiast | 4db5d62476 | |
Gymnasiast | 9906a18bc7 | |
Michał Janiszewski | 0e1e93e898 | |
Aaron van Geffen | fe7152fc72 | |
Aaron van Geffen | 9f45d40bae | |
Aaron van Geffen | 7c4be9ce92 | |
Kaavya Ramachandhran | bc06ffce8b | |
Kaavya Ramachandhran | 1b4defbae9 | |
Aaron van Geffen | 255e89ec37 | |
Aaron van Geffen | 49b75e6606 | |
Aaron van Geffen | ddc386b186 | |
73 | 30d314e463 | |
OpenRCT2 git bot | 08fdf386a5 | |
Aaron van Geffen | 17af7db195 | |
Aaron van Geffen | 2799d96145 | |
Aaron van Geffen | 886b8e8431 | |
Aaron van Geffen | 642162853f | |
Aaron van Geffen | b52bf40a20 | |
Michael Steenbeek | c4c706c59c | |
Karsten Van Fossan | 137099a429 | |
Michael Steenbeek | f7f7cd823f | |
Michael Steenbeek | 3d05fce68e | |
Rahul Unniyampath | 893ae7f0ca | |
Michael Steenbeek | 7fc34ef612 | |
evmarcus | 1f761faee0 | |
Harry Hopkinson | b05dcb3dfe | |
Aaron van Geffen | 1b5d0f47ab | |
Aaron van Geffen | 82c434358a | |
OpenRCT2 git bot | 447805c8f4 | |
Michael Steenbeek | 9b7face116 | |
QwertyChouskie | 1d3a2393dc | |
OpenRCT2 git bot | 73fc3bce8c | |
Harry-Hopkinson | 47939567c4 | |
Harry-Hopkinson | 337f9ca549 | |
Harry-Hopkinson | 140e17029d | |
Harry-Hopkinson | c264ec1077 | |
Harry-Hopkinson | ba1f066710 | |
Harry-Hopkinson | cf50b4c8a3 | |
Michał Janiszewski | b64ec76c95 | |
Harry-Hopkinson | 04ca18b7c6 | |
Harry Hopkinson | 530a7de98f | |
mrmbernardi | 8a2afbd1a3 | |
QwertyChouskie | 5a424af8a9 | |
mrmbernardi | b21f0504cf | |
Harry-Hopkinson | cd9ca1debb | |
Harry-Hopkinson | f357dd6cab | |
Harry-Hopkinson | b294d97f03 | |
Harry-Hopkinson | 9fa917ae57 | |
Harry-Hopkinson | 14cdfc7262 | |
Michał Janiszewski | a6e1124175 | |
Harry-Hopkinson | 2ccb77320b | |
Harry-Hopkinson | f242bbf095 | |
Harry-Hopkinson | c5cfc65317 | |
OpenRCT2 git bot | 0872327fe5 | |
Duncan | 3ce917e2e1 | |
OpenRCT2 git bot | 0d12eb657d | |
Michael Steenbeek | 246f1f30b9 | |
Aaron van Geffen | a4bd20bcfc | |
Aaron van Geffen | d536f9bce0 | |
Aaron van Geffen | 4f3449cfcf | |
Rik Smeets | 953bb4ee91 | |
Michael Steenbeek | 005aece802 | |
Michał Janiszewski | f9bd26214b | |
Michael Steenbeek | 271a22d00e | |
Michael Steenbeek | 4e7d5d987a | |
Rik Smeets | b009643ab0 | |
Rik Smeets | e250ec3b66 | |
Rik Smeets | 2a78399418 | |
OpenRCT2 git bot | 828eb0e467 | |
Michael Steenbeek | e190afeb80 | |
Michael Steenbeek | a38039f6e4 | |
Michael Steenbeek | c3cf6f01ca | |
Michael Steenbeek | 318bff1eac | |
Gymnasiast | 19e403068d | |
Gymnasiast | c158854a7f | |
Gymnasiast | 4f3b7aa8a9 | |
Gymnasiast | 7b072808ee | |
Gymnasiast | fef1a27342 | |
Gymnasiast | 28451027b1 | |
Gymnasiast | 1f1377a8ef | |
Michael Steenbeek | 26d65b37ea | |
Michał Janiszewski | 58249538eb | |
Michał Janiszewski | d957fdf8ca | |
Michał Janiszewski | e55d761eb7 | |
Michał Janiszewski | 87fe784da0 | |
Michał Janiszewski | c8f91d3f35 | |
Michael Steenbeek | 3461ac38ca | |
Michał Janiszewski | 6b734fda6b | |
Michał Janiszewski | dfcb527ada | |
John Kastner | 6ea091841f | |
Claudio Tiecher | a94e6c54d8 | |
Michael Steenbeek | 9062049be1 | |
Michał Janiszewski | 06081eb23d | |
Michael Steenbeek | 19a65d1642 | |
Michael Steenbeek | 0668f0fb92 | |
Michał Janiszewski | d8ba574e6c | |
Michael Steenbeek | 8d16c0a73d | |
Michael Steenbeek | ab73fe7317 | |
ζeh Matt | 84d1f502b1 | |
ζeh Matt | f14b86426d | |
ζeh Matt | e3343f263f | |
ζeh Matt | d969a4f80d | |
Gymnasiast | 88eca0d518 | |
Gymnasiast | c232aa9b0c | |
Gymnasiast | eb2cda6a56 | |
Michael Steenbeek | 27e43b3a94 | |
Gymnasiast | 18232341c8 | |
Peter Froud | c4b7845c26 | |
Peter Froud | 869d1b398b | |
Peter Froud | 322321645b | |
Peter Froud | 2b1d5ad9b7 | |
Peter Froud | 276ff311cf | |
Peter Froud | 1f698dfc76 | |
Peter Froud | d1f740c786 | |
Peter Froud | 40537a17fa | |
Peter Froud | 226fc4cb00 | |
Peter Froud | 257c2d45d3 | |
Peter Froud | f49fe68cc6 | |
Peter Froud | a1517a4fcb | |
Peter Froud | 9e702d8b65 | |
Peter Froud | 87ee06b7a4 | |
Peter Froud | 13abc3441c | |
Peter Froud | 125fa12d6f | |
Peter Froud | 338cca6760 | |
Peter Froud | 23958186bd | |
Gymnasiast | e1127cde8a | |
Gymnasiast | 96c9b7d85d | |
Ryan Gudonis | b5fdcf9a17 | |
mrmbernardi | d48b75fb86 | |
Matt | 4eacb21f57 | |
Matt | b9a0dcbe2f | |
Aaron van Geffen | db18c712fe | |
Aaron van Geffen | 66ca0388ed | |
Aaron van Geffen | abc02511e1 | |
Aaron van Geffen | afb4dcf728 | |
reversebottle | 854d4e6fa4 | |
Michael Steenbeek | 66edbc01aa | |
Aaron van Geffen | cec251bb63 | |
Aaron van Geffen | e173564500 | |
Aaron van Geffen | 98c3c8b22c | |
Aaron van Geffen | e898e9211d | |
Aaron van Geffen | d645906003 | |
Aaron van Geffen | 5f4d02a6f7 | |
Michael Steenbeek | 8e563edcbe | |
Michael Steenbeek | 03b0c1e884 | |
Harry Hopkinson | bf20a6d146 | |
reversebottle | 7c65a372aa | |
Michał Janiszewski | 43507671b5 | |
Stephan Spengler | 2913a0686a | |
Michael Steenbeek | 8e157bd709 | |
Claudio Tiecher | be6a4cf5d9 | |
Michael Steenbeek | fb49287343 | |
Michael Steenbeek | 457d40bf2b | |
Claudio Tiecher | a1fd280a27 | |
Claudio Tiecher | 4d99fec550 | |
Claudio Tiecher | 5d2ecf71e5 | |
Claudio Tiecher | fe84bb3e7e | |
Claudio Tiecher | 026e12d22e | |
Claudio Tiecher | eb4c64abc4 | |
Claudio Tiecher | 24688ad5a3 | |
Claudio Tiecher | c6def2d0a9 | |
Claudio Tiecher | e5ff6b271a | |
Claudio Tiecher | ffb8b4d44b | |
Claudio Tiecher | ef81a6376e | |
Claudio Tiecher | b60483f25d | |
Claudio Tiecher | 2c4c2da319 | |
Claudio Tiecher | 13e9ff84c2 | |
Michał Janiszewski | 0581b1edd3 | |
Harry Hopkinson | 249c8259c1 | |
Max | bc926057eb | |
OpenRCT2 git bot | 2b2091130b | |
Michael Steenbeek | 6eb96b1b07 | |
Gymnasiast | 02e412d9a1 | |
Gymnasiast | 40394389ef | |
Gymnasiast | bc27179b07 | |
Gymnasiast | 24807932c3 | |
Gymnasiast | c1c71003eb | |
ZeeMaji | 8614517e14 | |
ZeeMaji | d94ebee33e | |
Gymnasiast | 2465694404 | |
Gymnasiast | d6ce38185f | |
Gymnasiast | 00e1f504f5 | |
Gymnasiast | 9982749def | |
Gymnasiast | b66f687880 | |
Gymnasiast | 9b1603a37a | |
Gymnasiast | eb058d4fe3 | |
Gymnasiast | 73441bff5d | |
Gymnasiast | 3c4b0ba36e | |
Gymnasiast | 515951e667 | |
Gymnasiast | 6602100d22 | |
Gymnasiast | 91e0f91cb0 | |
Gymnasiast | dfa5875c5a | |
Gymnasiast | 82d8167482 | |
Gymnasiast | d21b411f43 | |
Gymnasiast | 1d324247bf | |
Gymnasiast | cd5c56d811 | |
Andrew | a972d231d7 | |
Andrew | 693c422cd4 | |
OpenRCT2 git bot | 51b0143b2d | |
Michael Steenbeek | 1470507d8e | |
Michael Steenbeek | 74364e2afc | |
Jan Kelemen | cb3b2a77e7 | |
Michał Janiszewski | 4484dc647c | |
Stephan Spengler | 304ce22756 | |
Duncan | 5a70fd97fb | |
Michał Janiszewski | c166d69f22 | |
Michał Janiszewski | 3a6115b2b5 | |
Michał Janiszewski | 221877fa33 | |
Michał Janiszewski | 723b9ed5bc | |
Michał Janiszewski | b07b1e29dc | |
CoryY | 3f81a491b0 | |
Michael Steenbeek | 8963234eac | |
Matt | 6633509af6 | |
Claudio Tiecher | 59958a6b8f | |
Harry Hopkinson | 25d3db0f1f | |
OpenRCT2 git bot | c858b3a8c1 | |
Michael Steenbeek | 2181f1b09e | |
Michael Steenbeek | 0f927d720b | |
Michael Steenbeek | 0968d87668 | |
Michael Steenbeek | d2e7d57104 | |
Harry Hopkinson | 8a6de886be | |
Jan Kelemen | 9bb678688e | |
Harry Hopkinson | b69db13de3 | |
OpenRCT2 git bot | 15650ad184 | |
OpenRCT2 git bot | 470667ed28 | |
Michał Janiszewski | 6414ea29fb | |
Michał Janiszewski | 5c00047bd1 | |
Michał Janiszewski | 9524174d13 | |
Peter Froud | 1e51925968 | |
OpenRCT2 git bot | 988162e125 | |
Gymnasiast | 7ae98f7421 | |
Gymnasiast | 632f29e6a9 | |
Matt | 6950a74b37 | |
Michael Steenbeek | 1981ca6b0b | |
Harry Hopkinson | e486606189 | |
Duncan | 1d3bd31ab8 | |
Michael Steenbeek | b219ab1ed4 | |
Michael Steenbeek | 24f5675cab | |
Ryan Gudonis | 65fa51976b | |
Harry Hopkinson | 78d95fc0bd | |
Michael Steenbeek | 9ebe65b55a | |
Duncan | 7a60e7f2e0 | |
Michał Janiszewski | 7634dfb6a3 | |
Duncan | 3146d463bd | |
Harry Hopkinson | 0c1fb5fec0 | |
Harry Hopkinson | 048276b67a | |
OpenRCT2 git bot | d0592e0887 | |
Duncan | cb100db56e | |
Michael Steenbeek | dec5140f20 | |
Matt | 1e8ae8ea11 | |
Matt | a2fdd600cf | |
Tulio Leao | 7190e7ae26 | |
ζeh Matt | 64bc52c5f6 | |
Harry Hopkinson | 81814bd81e | |
ζeh Matt | 2814662ea8 | |
ζeh Matt | d3b8ad471e | |
Piotr Kubaj | 96be441533 | |
Stephan Spengler | 01248c26a4 | |
Jan Kelemen | 56df47a48d | |
Jan Kelemen | ee4e8d0323 | |
Harry Hopkinson | 9ab18e37a2 | |
OpenRCT2 git bot | aa6a1b0bdd | |
Harry Hopkinson | 86c28693ba | |
ζeh Matt | a1304ef147 | |
ζeh Matt | ae0af55a99 | |
ζeh Matt | 425c4cf04e | |
ζeh Matt | c87b82d75e | |
ζeh Matt | 8bf33a6039 | |
ζeh Matt | f7682f6b13 | |
ζeh Matt | bdcfa5af8f | |
ζeh Matt | 47d346ee81 | |
ζeh Matt | 462bb33234 | |
ζeh Matt | d95f14dcda | |
ζeh Matt | a33cc1ac86 | |
ζeh Matt | 7be082cacc | |
ζeh Matt | 1a7b873256 | |
ζeh Matt | 87dd29f3bc | |
ζeh Matt | afe266e2fe | |
ζeh Matt | 98acdf3743 | |
ζeh Matt | 2661cf8772 | |
ζeh Matt | 8864f6cf51 | |
ζeh Matt | 81499643db | |
ζeh Matt | 1a197af715 | |
OpenRCT2 git bot | 33a5ee2160 | |
Harry-Hopkinson | 3247d16ed8 | |
Harry-Hopkinson | 56df39dcb4 | |
Harry Hopkinson | ef9840f29b | |
Harry Hopkinson | 9748038815 | |
Duncan | 4b6ba80a46 | |
mrmbernardi | 4ccecd6e68 | |
Jan Kelemen | bc149ca95c | |
Matt | 85f0919483 | |
OpenRCT2 git bot | eaa082bf3e | |
mrmbernardi | a0b18688ec | |
Michał Janiszewski | e05ae5f051 | |
Michał Janiszewski | 5078d3d8ef | |
Michał Janiszewski | a17240544b | |
Michał Janiszewski | 1ba9201d48 | |
Michał Janiszewski | 132d45c9e2 | |
John Kastner | 05c0542d1f | |
Jan Kelemen | dabf85882a | |
Jan Kelemen | baf3d8fded | |
Michael Bernardi | 412ca5d9c5 | |
Michael Bernardi | 1cb0650cba | |
ζeh Matt | 556004bf37 | |
ζeh Matt | 9bfc3a0a29 | |
ζeh Matt | 78406f4d67 | |
ζeh Matt | 9a8ca8e2d1 | |
ζeh Matt | a9870f8148 | |
Michael Steenbeek | 9d77219b5d | |
mrmbernardi | 54a4cbb1e9 | |
Matt | 9a100b82b4 | |
Michał Janiszewski | a2762ed321 | |
Matt | 2053b17dea | |
ζeh Matt | c9ac9784ed | |
Andrew | 5aed126cac | |
Michael Steenbeek | 8916b3ce9d | |
Gymnasiast | e9fc4473bb | |
Gymnasiast | 864f0350ed | |
Gymnasiast | 4d35989888 | |
ZeeMajora | a09724ad91 | |
ZeeMajora | c7a48a37b6 | |
ZeeMajora | 345f9aa27d | |
Gymnasiast | de0c681b80 | |
Gymnasiast | 05e5bb5106 | |
Gymnasiast | 6506b1d1fa | |
Gymnasiast | 12c00dedeb | |
Gymnasiast | c1ca8f729f | |
Gymnasiast | c2ed24b183 | |
Gymnasiast | ce1240f8d1 | |
Katherine Norton | 534ba4f339 | |
Harry Hopkinson | bb743f0c88 | |
AuraSpecs | a3659b7ca4 | |
Harry Hopkinson | 701bbda164 | |
Harry Hopkinson | 14f0479c94 | |
Aaron van Geffen | a79b062136 | |
Harry Hopkinson | 42844d1667 | |
OpenRCT2 git bot | 37104ed4f8 | |
Aaron van Geffen | 4976d65fc3 | |
Michael Steenbeek | aa804a19ff | |
Michael Steenbeek | 01bc8cdb5e | |
Aaron van Geffen | a3eea76fa0 | |
Aaron van Geffen | c2730bc12d | |
Michael Steenbeek | 25ec1e4211 | |
Aaron van Geffen | 2d52f5b982 | |
Aaron van Geffen | 6edcd6d7a0 | |
Matt | 626e922591 | |
Matt | 418785104d | |
Harry Hopkinson | 063c4f7bce | |
Michał Janiszewski | c921edd76c | |
Aaron van Geffen | 8bf848582b | |
Harry Hopkinson | 57a4c83f80 | |
Michał Janiszewski | b2639add4c | |
Aaron van Geffen | 19171f7eef | |
Aaron van Geffen | 989a4dddbd | |
Aaron van Geffen | da0bbb2019 | |
Aaron van Geffen | ffcb2b8c82 | |
Michael Steenbeek | 11ccbbfc5e | |
Gymnasiast | f98157d4f1 | |
Gymnasiast | 53b68f23fa | |
Gymnasiast | 37a224e9b3 | |
Harry Hopkinson | 70ea832808 | |
Aaron van Geffen | 530ec9a6f7 | |
Aaron van Geffen | 0c0b10fc09 | |
Stephan Spengler | bcff6f5a7e | |
Michael Steenbeek | 70461be037 | |
Gymnasiast | 4ba4f96f61 | |
Gymnasiast | 554968383c | |
Michał Janiszewski | f5cd5bc15b | |
Harry Hopkinson | 0fab1eaca8 | |
Michael Steenbeek | 880e5af35d | |
Gymnasiast | d1b1e42643 | |
Gymnasiast | 6c25b79139 | |
Gymnasiast | 8d478e78a5 | |
ZeeMaji | 47a221de4e | |
HtotheTML | 90ad01bc40 | |
Michael Steenbeek | 3beeca3fe3 | |
Julian | 142c078ad1 | |
Michał Janiszewski | a9f26c804a | |
Michał Janiszewski | a37e83b63c | |
Michał Janiszewski | 093567ed51 | |
Michał Janiszewski | e1fbe586d0 | |
Michał Janiszewski | 7b4d3db5ac | |
Harry Hopkinson | 7797db10c8 | |
AuraSpecs | d11a82aa4f | |
Matt | 325a3db436 | |
OpenRCT2 git bot | eceea5a034 | |
ζeh Matt | f3a5320ff8 | |
ζeh Matt | fd66cb5e1b | |
ζeh Matt | b2f14af84d | |
ζeh Matt | 646743334c | |
ζeh Matt | 0b917408c4 | |
ζeh Matt | 3f456b7b2b | |
ζeh Matt | 523bd0ae36 | |
ζeh Matt | 336c1b26d3 | |
ζeh Matt | ecc46799d4 | |
Matt | 9d9f0af0cd | |
Severin Paul Höfer | 3b8de13af9 | |
Severin Paul Höfer | e1631afe48 | |
Severin Paul Höfer | 99dfbc2661 | |
Severin Paul Höfer | 0ff998a071 | |
Severin Paul Höfer | 133c8a1068 | |
Severin Paul Höfer | 1ce1d1b04e | |
Severin Paul Höfer | aefc07c9c5 | |
Matt | fdbdbd405f | |
ζeh Matt | 3b0ff5dcc8 | |
OpenRCT2 git bot | 6b134a05c3 | |
Michael Steenbeek | 045d610391 | |
Michael Steenbeek | 724ab47a37 | |
Harry Hopkinson | b989ccbb20 | |
Gymnasiast | 276b599470 | |
Gymnasiast | c2f2058fa0 | |
Gymnasiast | 731275613a | |
Harry Hopkinson | d8864e567c | |
OpenRCT2 git bot | 5fef6d364d | |
Peter Froud | 40a7fa70fc | |
Gymnasiast | 1ed22ff58c | |
Gymnasiast | 6e3ed12f13 | |
Gymnasiast | 38cfa4045d | |
Gymnasiast | b482897cd8 | |
Gymnasiast | 5e31e73d53 | |
Gymnasiast | 32c04305f2 | |
Gymnasiast | 849af8c2d8 | |
Matt | 1042c428e8 | |
Martin | 2f0dea0243 | |
Martin Mizzi | f5a9846ea2 | |
Romain | a3ce64c009 | |
OpenRCT2 git bot | a0933c7020 | |
OpenRCT2 git bot | 7f59e20926 | |
Ota | e9b214282d | |
Michael Steenbeek | ecbc523229 | |
Gymnasiast | accfa1af61 | |
Gymnasiast | b254501b25 | |
Alex Parisi | efb6d48c4c | |
OpenRCT2 git bot | 04603f5213 | |
Michał Janiszewski | f374a833e6 | |
Michał Janiszewski | c654d848fc | |
Michał Janiszewski | 7152ae2c00 | |
Michał Janiszewski | cc56384bb6 | |
Michał Janiszewski | e2c380edba | |
Matt | d929e6a540 | |
Michael Steenbeek | 1613658647 | |
Matt | d25a2e7b05 | |
OpenRCT2 git bot | cb2bca7c7a | |
Harry-Hopkinson | 43f13ff36c | |
Harry-Hopkinson | 0a8f1154ad | |
Harry Hopkinson | 691f5f88e5 | |
OpenRCT2 git bot | 2d0a04ada9 | |
Gymnasiast | 085a126bbf | |
Gymnasiast | 4b03275cff | |
David Sungaila | 89f83d6c0d | |
Harry Hopkinson | 1c285dbf9f | |
Severin Paul Höfer | 0c7b94255f | |
Michał Janiszewski | 8cf393f971 | |
Matt | 19be093569 | |
Matt | 5ac347e9f6 | |
Matt | 5ed5fece46 | |
OpenRCT2 git bot | 64787ff91f | |
Michael Steenbeek | c3380e29dd | |
Michael Steenbeek | 48a8d484cf | |
Harry-Hopkinson | ce8afe252a | |
Harry-Hopkinson | b755c873e5 | |
ζeh Matt | c24657a7f7 | |
OpenRCT2 git bot | 72ca04633e | |
Harry Hopkinson | a55da09e1c | |
Michael Steenbeek | 1a13cdcc57 | |
Michael Steenbeek | 70b9d0ca47 | |
Matt | 6626208695 | |
Michael Steenbeek | c4be52644d | |
David Sungaila | 20eddc4d49 | |
Michael Steenbeek | 67a7614140 | |
OpenRCT2 git bot | 26bdaebe4f | |
Matt | c8b28ca457 | |
Matt | 0c1991c004 | |
David Sungaila | 920e39fb34 | |
Karst | da8594cec1 | |
Michael Steenbeek | 776674af7a | |
Michael Steenbeek | 8a5e7d32f6 | |
Michael Steenbeek | 4369709d19 | |
Gymnasiast | 61e8b6d206 | |
Gymnasiast | 142d708cee | |
Matt | a20f2b04e9 | |
Harry Hopkinson | 6deac11916 | |
Gymnasiast | c40a840f5b | |
Gymnasiast | 8e64eaca94 | |
Michael Steenbeek | 6a9f9025ff | |
Harry Hopkinson | ad5ef31a97 | |
ZeeMaji | 1849c7de47 | |
Hielke Morsink | c9fe19e0d9 | |
Michał Janiszewski | 6e49a25a7b | |
Michał Janiszewski | fd01a9a76a | |
Harry Hopkinson | 3eb9cf2264 | |
Matt | 9363a459a2 | |
Harry Hopkinson | fd17842291 | |
OpenRCT2 git bot | 08fbdd1552 | |
Romain | 80948c36bb | |
Michael Steenbeek | 9efe25c11c | |
Gymnasiast | d413f7dd48 | |
frutiemax | 376d69090b | |
frutiemax | c8d836bc09 | |
frutiemax | 580852351f | |
frutiemax | 535b485d37 | |
frutiemax | 714b2a1ace | |
frutiemax | 1cd1b7ca87 | |
frutiemax | 760a6aa337 | |
frutiemax | 83d840f3a5 | |
frutiemax | 62be6090a8 | |
frutiemax | b512914c4b | |
Michał Janiszewski | 4e23ba3e16 | |
Michał Janiszewski | f89dbf0d15 | |
Michał Janiszewski | e97500cbcc | |
Michał Janiszewski | 05efdb2497 | |
Michał Janiszewski | 280e3a85a6 | |
OpenRCT2 git bot | a6e5d5b192 | |
Matt | 3514449591 | |
ζeh Matt | c5ca671d5f | |
ζeh Matt | 2c12b4921b | |
AuraSpecs | f6ab154176 | |
Michał Janiszewski | 1a74a74988 | |
Michał Janiszewski | d7823d3ad3 | |
HtotheTML | 43b9ffb2b8 | |
OpenRCT2 git bot | 328c397718 | |
Michael Steenbeek | 22715852f5 | |
Michael Steenbeek | f2862861ce | |
Michael Steenbeek | 40c7e73189 | |
HtotheTML | a377538f0a | |
OpenRCT2 git bot | 13fc351591 | |
OpenRCT2 git bot | 8abda17cb3 | |
wstagg | 4a51e7f362 | |
Gymnasiast | 0196606851 | |
Gymnasiast | 295671ef8c | |
Gymnasiast | 702113bb23 | |
Gymnasiast | 77048ffb7c | |
Gymnasiast | 97fb10ceb1 | |
Gymnasiast | 17f5f38191 | |
Gymnasiast | c19cfd201c | |
Gymnasiast | 706ef61e04 | |
Gymnasiast | 64abf72fa2 | |
Gymnasiast | d60e205f77 | |
Michael Steenbeek | ceafb68481 | |
Tulio Leao | fbe563c836 | |
Gymnasiast | 8208afe5f6 | |
Gymnasiast | eb99798f4b | |
Matt | fc1b580074 | |
Severin Paul Höfer | 89094cad0d | |
Peter Froud | a382e4be8a | |
Peter Froud | 21bda5e5e4 | |
Peter Froud | 01d9eeb266 | |
Peter Froud | 704c779bf2 | |
Peter Froud | 7bb8fd7131 | |
Severin Paul Höfer | 704333344e | |
HtotheTML | be9970b274 | |
Harry Hopkinson | 11ae8247bd | |
Michael Steenbeek | 396af1f34c | |
Michael Steenbeek | 8dd5014bc4 | |
Michael Steenbeek | 22e73325d9 | |
Harry Hopkinson | 01eecbaeba | |
Michael Steenbeek | 2059b50f44 | |
Harry Hopkinson | a14d471530 | |
Michael Steenbeek | 73183f6736 | |
Michael Steenbeek | 32aa3f56b4 | |
Gymnasiast | 83e4fc0d0f | |
Gymnasiast | 2d2fd03fc7 | |
Michael Steenbeek | 3f83cad03a | |
Matt | bf4f82da07 | |
Hielke Morsink | f9870ece7a | |
ζeh Matt | cc64a17642 | |
Matt | faccd5f14a | |
ζeh Matt | 84213efde2 | |
Matt | 49ff5a1826 | |
ζeh Matt | e5a10c1514 | |
Michael Steenbeek | 3827d1770b | |
Matt | 6e14f6540a | |
Hielke Morsink | 1f8b7950bc | |
Hielke Morsink | 99e1746eda | |
Hielke Morsink | 0c10435b7e | |
Hielke Morsink | ad4bc0dd10 | |
Hielke Morsink | 74d61369be | |
Peter Froud | ce45cb3360 | |
ZeeMaji | ff03844b35 | |
Harry Hopkinson | 8816aa607c | |
Peter Froud | 010e43e6ff | |
Peter Froud | 4c18d322c6 | |
Peter Froud | afe3b02a24 | |
Harry Hopkinson | f8fa43f578 | |
Michael Steenbeek | 115e7389a9 | |
Matt | d4b0c2e115 | |
Michael Steenbeek | 71c20a04d7 | |
Hielke Morsink | 422df650b6 | |
Hielke Morsink | fb420f6516 | |
Michael Steenbeek | b200ce02ef | |
Harry Hopkinson | 42336915cd | |
Hielke Morsink | ab80a9b007 | |
Severin Paul Höfer | d0aae46a75 | |
Severin Paul Höfer | 576caaa094 | |
Severin Paul Höfer | fb41a5764c | |
Severin Paul Höfer | 2136706129 | |
Severin Paul Höfer | 794ee9be78 | |
Severin Paul Höfer | e8b05c4afd | |
Severin Paul Höfer | e27a20f800 | |
OpenRCT2 git bot | db2a8af3cb | |
Hielke Morsink | f85cac627d | |
Michael Steenbeek | b5786c2a86 | |
Hielke Morsink | ece4b7327e | |
Hielke Morsink | f6d739624e | |
tanzimchowdh | cba53fd3ce | |
Aaron van Geffen | dcd1f60f4f | |
Severin Paul Höfer | 2c26799ca4 | |
Hielke Morsink | 13351d996e | |
Peter Froud | f272b57a88 | |
Peter Froud | 7302d718e3 | |
Peter Froud | 4145f851da | |
Peter Froud | 648941aa11 | |
Peter Froud | 7903845eae | |
Peter Froud | 32c880ef89 | |
Peter Froud | 9299a80a58 | |
Matt | 8e88f464b3 | |
Harry Hopkinson | 0f283dc2a9 | |
Harry Hopkinson | 7ca5b1cd65 | |
Matt | f55eeff2e0 | |
ζeh Matt | 25c807edbd | |
ζeh Matt | c493e22b9b | |
Matt | 7141fb4574 | |
Matt | b35eb7ac7f | |
Katherine Norton | 0450435377 | |
ζeh Matt | 3518a638bb | |
OpenRCT2 git bot | 2cb4eb950b | |
Matt | d08612b708 | |
Michael Steenbeek | 8846760b8b | |
Severin Paul Höfer | 39a37f14eb | |
ζeh Matt | 80ca8aefaa | |
ζeh Matt | 8653ad740a | |
ζeh Matt | c839a1746d | |
ζeh Matt | f708e911e4 | |
ζeh Matt | 9b2a79faf1 | |
ζeh Matt | a5dde0f8dc | |
ζeh Matt | 4c919f74aa | |
Ota | 33523c98c2 | |
ζeh Matt | 8ae4709aac | |
ζeh Matt | dae726009e | |
Michael Steenbeek | 00b5932557 | |
ζeh Matt | 6b9de0bb2f | |
OpenRCT2 git bot | b50f1c91d9 | |
Gymnasiast | 9d03fad8b8 | |
Gymnasiast | 95c1adc813 | |
Gymnasiast | cffc55e165 | |
Gymnasiast | 44d547a4bc | |
Gymnasiast | b832eb5f72 | |
Gymnasiast | d2f5e739aa | |
OpenRCT2 git bot | ece7601532 | |
Matt | 4c84215196 | |
Matt | 9527e9658b | |
Basssiiie | cc7c528885 | |
Basssiiie | 5221e8ee9f | |
OpenRCT2 git bot | 717682a21f | |
Severin Paul Höfer | 15e0402c63 | |
Matt | 04e8a25c44 | |
Stephan Spengler | e8a7bc43b3 | |
Max | 7a9e8a5e44 | |
Severin Paul Höfer | 62d0fd76e0 | |
OpenRCT2 git bot | 739dd712d5 | |
Matt | 35b19cade1 | |
ζeh Matt | d202f0044d | |
ζeh Matt | 7d3c273594 | |
ζeh Matt | 3dc2a25121 | |
Michał Janiszewski | 7d8f13a97f | |
MichaelJBerk | 15fcaffc91 | |
Michael Steenbeek | 0e5c82e2d4 | |
Michael Steenbeek | 3023784bbf | |
Matt | cde2a43d32 | |
Gymnasiast | 5593eca03d | |
Gymnasiast | a6c0c7dd79 | |
HtotheTML | 50cf1aed67 | |
ζeh Matt | e12eaa48d4 | |
Matt | ce0cc9fc84 | |
ζeh Matt | 6eea65fac7 | |
ζeh Matt | 88a0e4b8d4 | |
Michael Steenbeek | f4956f5cdb | |
OpenRCT2 git bot | 872b28c8d8 | |
Andrei BENCSIK | 03ddac9c7f | |
Matt | c137d20a0b | |
Andrew | 2768716238 | |
Michael Steenbeek | adadaafdb0 | |
Michael Steenbeek | ba585f4474 | |
ζeh Matt | c7a716e050 | |
ζeh Matt | 8bcd409fb0 | |
Michał Janiszewski | 296e8cdb16 | |
Conrad Kostecki | 7c638c7865 | |
Gymnasiast | 7df3b22e14 | |
Gymnasiast | cfff3c53f9 | |
Gymnasiast | 3df551ffbf | |
Gymnasiast | 01fc353cc8 | |
mrmbernardi | f0a82e9ecd | |
Conrad Kostecki | 010c19ba61 | |
James103 | 1d8dc111f1 | |
Gymnasiast | f6840cb2af | |
Gymnasiast | 6782a42e08 | |
Gymnasiast | 8db5b655bd | |
Gymnasiast | f06a80cb30 |
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
Checks: >
|
||||
-*,
|
||||
cppcoreguidelines-macro-usage,
|
||||
modernize-use-nullptr,
|
||||
modernize-use-override,
|
||||
readability-uppercase-literal-suffix
|
||||
CheckOptions:
|
||||
- key: cppcoreguidelines-macro-usage.AllowedRegexp
|
||||
value: 'validate_global_widx|NETWORK_STREAM_VERSION'
|
||||
- key: readability-uppercase-literal-suffix.NewSuffixes
|
||||
value: 'u;L;uL;LL;uLL'
|
||||
WarningsAsErrors: true
|
||||
FormatStyle: 'file'
|
|
@ -23,7 +23,7 @@ env:
|
|||
OPENRCT2_BUILD_SERVER: GitHub
|
||||
OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }}
|
||||
BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }}
|
||||
OPENRCT2_VERSION: 0.4.7
|
||||
OPENRCT2_VERSION: 0.4.11
|
||||
|
||||
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
|
||||
concurrency:
|
||||
|
@ -39,7 +39,7 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Lint Commit Messages
|
||||
|
@ -55,7 +55,7 @@ jobs:
|
|||
shell: sh
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Run clang-format
|
||||
run: scripts/check-code-formatting
|
||||
check-changelog-formatting:
|
||||
|
@ -66,9 +66,31 @@ jobs:
|
|||
shell: bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Run check-changelog-formatting
|
||||
run: scripts/check-changelog-formatting
|
||||
g2dat:
|
||||
name: g2.dat
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout OpenRCT2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: OpenRCT2
|
||||
- name: Download gxc
|
||||
run: |
|
||||
curl -Lo tools.tar.gz https://github.com/IntelOrca/libsawyer/releases/download/v1.3.0/libsawyer-tools-linux-x64.tar.gz
|
||||
mkdir -p "$GITHUB_WORKSPACE/bin"
|
||||
tar -C "$GITHUB_WORKSPACE/bin" -xf tools.tar.gz
|
||||
echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH
|
||||
- name: Build g2.dat
|
||||
run: |
|
||||
gxc build g2.dat OpenRCT2/resources/g2/sprites.json
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: g2.dat
|
||||
path: g2.dat
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-latest
|
||||
|
@ -89,10 +111,10 @@ jobs:
|
|||
echo "CONFIGURATION=Release" >> "$GITHUB_ENV"
|
||||
fi
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Git describe for shallow checkout
|
||||
id: ghd
|
||||
uses: proudust/gh-describe@v1
|
||||
uses: proudust/gh-describe@v2
|
||||
- name: Update GA environment
|
||||
run: echo "OPENRCT2_DESCRIBE=${{ steps.ghd.outputs.describe }}" >> $GITHUB_ENV
|
||||
- name: Install MSVC problem matcher
|
||||
|
@ -106,7 +128,7 @@ jobs:
|
|||
build-symbols
|
||||
build-installer -i
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-${{ matrix.platform }}
|
||||
path: artifacts
|
||||
|
@ -134,7 +156,7 @@ jobs:
|
|||
name: Windows (${{ matrix.platform_name }}) using mingw
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: openrct2/openrct2-build:12-mingw
|
||||
container: openrct2/openrct2-build:14-mingw
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -146,9 +168,9 @@ jobs:
|
|||
build_flags: -DBUILD_SHARED_LIBS=ON -DENABLE_SCRIPTING=ON
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: ${{ matrix.cache_key }}
|
||||
- name: Install GCC problem matcher
|
||||
|
@ -161,14 +183,14 @@ jobs:
|
|||
ninja -k0
|
||||
- name: Upload artifacts (CI)
|
||||
if: matrix.platform == 'NT5.1'
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-Windows-${{ matrix.platform }}
|
||||
path: bin/openrct2.exe
|
||||
if-no-files-found: error
|
||||
macos-cmake:
|
||||
name: macOS (${{ matrix.arch }}) using CMake
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-12
|
||||
needs: check-code-formatting
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
@ -178,7 +200,8 @@ jobs:
|
|||
- arch: x64
|
||||
cache_key: macos-x64
|
||||
# Note: only build/run tests on the native architecture of the CI agent
|
||||
# GitHub macos-latest agents are currently all Intel
|
||||
# GitHub macos-12 agents are all Intel, but as of 2024-04-25 new images, e.g. macos-14 (current macos-latest) are arm64
|
||||
# See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
|
||||
build_flags: -DARCH="x86_64" -DWITH_TESTS=on
|
||||
run_tests: true
|
||||
- arch: arm64
|
||||
|
@ -187,9 +210,9 @@ jobs:
|
|||
run_tests: false
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: ${{ matrix.cache_key }}
|
||||
- name: Configure ccache
|
||||
|
@ -211,7 +234,7 @@ jobs:
|
|||
cd artifacts
|
||||
zip -rqy openrct2-macos.zip OpenRCT2.app
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-${{ matrix.arch }}-cmake
|
||||
path: artifacts/openrct2-macos.zip
|
||||
|
@ -226,18 +249,18 @@ jobs:
|
|||
if: ${{matrix.run_tests}}
|
||||
macos-universal:
|
||||
name: macOS universal app bundle
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-12
|
||||
needs: macos-cmake
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: download x64 app bundle
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-x64-cmake
|
||||
path: macos_universal/x64
|
||||
- name: download arm64 app bundle
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-arm64-cmake
|
||||
path: macos_universal/arm64
|
||||
|
@ -257,7 +280,7 @@ jobs:
|
|||
cd artifacts
|
||||
zip -rqy openrct2-macos.zip OpenRCT2.app
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-universal
|
||||
path: artifacts/openrct2-macos.zip
|
||||
|
@ -271,7 +294,7 @@ jobs:
|
|||
echo 'Not going to push build'
|
||||
fi
|
||||
linux-portable:
|
||||
name: Linux (${{ matrix.platform }}, ${{ matrix.distro }}, portable)
|
||||
name: ${{ matrix.distro }} Linux (${{ matrix.release }}, ${{ matrix.platform }}, portable)
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: ${{ matrix.image }}
|
||||
|
@ -280,32 +303,26 @@ jobs:
|
|||
matrix:
|
||||
include:
|
||||
# Use `-fno-var-tracking-assignments` to reduce amount of produced debug information. This is necessary due to 100MiB limit of GitHub / openrct2.org API.
|
||||
# For focal the debug information still takes too much space, so reduce amount of debug info to minimum using `-g1` (`-g` means `-g2`), which is enough for backtraces only.
|
||||
- platform: x86_64
|
||||
distro: bionic
|
||||
image: openrct2/openrct2-build:4-bionic
|
||||
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments" -DWITH_TESTS=off -DDISABLE_FLAC=ON -DDISABLE_VORBIS=ON
|
||||
- platform: x86_64
|
||||
distro: focal
|
||||
image: openrct2/openrct2-build:12-focal
|
||||
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g1 -gz" -DWITH_TESTS=off
|
||||
- platform: x86_64
|
||||
distro: jammy
|
||||
image: openrct2/openrct2-build:12-jammy
|
||||
distro: Ubuntu
|
||||
release: jammy
|
||||
image: openrct2/openrct2-build:14-jammy
|
||||
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments"
|
||||
- platform: x86_64
|
||||
distro: bullseye
|
||||
image: openrct2/openrct2-build:12-bullseye
|
||||
distro: Debian
|
||||
release: bullseye
|
||||
image: openrct2/openrct2-build:14-bullseye
|
||||
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments" -DWITH_TESTS=off
|
||||
- platform: i686
|
||||
distro: focal
|
||||
image: openrct2/openrct2-build:12-focal32
|
||||
build_flags: -DFORCE32=ON -DENABLE_SCRIPTING=OFF -DCMAKE_CXX_FLAGS="-m32 -g1 -gz" -DWITH_TESTS=off
|
||||
distro: Ubuntu
|
||||
release: jammy
|
||||
image: openrct2/openrct2-build:14-jammy32
|
||||
build_flags: -DFORCE32=ON -DENABLE_SCRIPTING=OFF -DCMAKE_CXX_FLAGS="-m32 -g -gz" -DWITH_TESTS=off
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: linux-${{ matrix.platform }}-${{ matrix.distro }}
|
||||
- name: Get pre-reqs
|
||||
|
@ -317,7 +334,7 @@ jobs:
|
|||
- name: Build artifacts
|
||||
run: . scripts/setenv -q && build-portable artifacts/OpenRCT2-${{ runner.os }}-${{ matrix.distro }}-${{ matrix.platform }}.tar.gz bin/install/usr
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-${{ matrix.distro }}-${{ matrix.platform }}
|
||||
path: artifacts
|
||||
|
@ -335,15 +352,15 @@ jobs:
|
|||
echo 'Not going to push build'
|
||||
fi
|
||||
linux-appimage:
|
||||
name: Linux (x86_64, AppImage)
|
||||
name: Ubuntu Linux (AppImage, x86_64)
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: openrct2/openrct2-build:12-focal
|
||||
container: openrct2/openrct2-build:14-jammy
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: linux-appimage
|
||||
- name: Get pre-reqs
|
||||
|
@ -353,7 +370,7 @@ jobs:
|
|||
- name: Build AppImage
|
||||
run: . scripts/setenv -q && build-appimage
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-AppImage
|
||||
path: artifacts
|
||||
|
@ -368,13 +385,13 @@ jobs:
|
|||
echo 'Not going to push build'
|
||||
fi
|
||||
linux-docker:
|
||||
name: Linux (docker)
|
||||
name: Ubuntu Linux (Docker)
|
||||
needs: check-code-formatting
|
||||
if: github.repository == 'OpenRCT2/OpenRCT2'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout image
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: OpenRCT2/openrct2-docker
|
||||
- name: Build image
|
||||
|
@ -393,15 +410,15 @@ jobs:
|
|||
echo 'Image not pushed'
|
||||
fi
|
||||
linux-clang:
|
||||
name: Linux (Debug, [http, network, flac, vorbis OpenGL] disabled) using clang
|
||||
name: Ubuntu Linux (jammy, debug, [http, network, flac, vorbis OpenGL] disabled) using clang
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: openrct2/openrct2-build:12-jammy
|
||||
container: openrct2/openrct2-build:14-jammy
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: linux-clang
|
||||
- name: Install GCC problem matcher
|
||||
|
@ -409,15 +426,15 @@ jobs:
|
|||
- name: Build OpenRCT2
|
||||
run: . scripts/setenv && build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DDISABLE_NETWORK=ON -DDISABLE_HTTP=ON -DDISABLE_FLAC=ON -DDISABLE_VORBIS=ON -DDISABLE_OPENGL=ON
|
||||
linux-clang-tests:
|
||||
name: Linux (Debug) using clang, coverage enabled
|
||||
name: Ubuntu Linux (debug) using clang, coverage enabled
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: openrct2/openrct2-build:12-jammy
|
||||
container: openrct2/openrct2-build:14-jammy
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: linux-clang
|
||||
- name: Install GCC problem matcher
|
||||
|
@ -441,7 +458,7 @@ jobs:
|
|||
xz -1v coverage.json
|
||||
xz -1v OpenRCT2Tests
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-${{ runner.os }}-coverage
|
||||
path: |
|
||||
|
@ -453,12 +470,12 @@ jobs:
|
|||
name: Android
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-code-formatting
|
||||
container: openrct2/openrct2-build:12-android
|
||||
container: openrct2/openrct2-build:14-android
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
uses: hendrikmuhs/ccache-action@v1.2.11 # https://github.com/hendrikmuhs/ccache-action/issues/181
|
||||
with:
|
||||
key: android
|
||||
- name: Install GCC problem matcher
|
||||
|
@ -472,7 +489,7 @@ jobs:
|
|||
mkdir -p artifacts
|
||||
mv src/openrct2-android/app/build/outputs/apk/release/app-release.apk artifacts/openrct2-arm.apk
|
||||
- name: Upload artifacts (CI)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OpenRCT2-Android
|
||||
path: artifacts
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
name: clang-tidy-check
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.editorconfig'
|
||||
- '.gitattributes'
|
||||
- '.github/*_TEMPLATE/**'
|
||||
- '.github/workflows/localisation.yml'
|
||||
- '.gitignore'
|
||||
- '.vscode/**'
|
||||
|
||||
jobs:
|
||||
clang-tidy-check:
|
||||
runs-on: ubuntu-latest
|
||||
container: openrct2/openrct2-build:13-jammy
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ZehMatt/clang-tidy-annotations@v1
|
||||
with:
|
||||
build_dir: 'build'
|
||||
cmake_args: '-G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DDISABLE_DISCORD_RPC=ON'
|
|
@ -24,7 +24,7 @@
|
|||
"/Library/Frameworks"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
"cppStandard": "c++20"
|
||||
},
|
||||
{
|
||||
"name": "Linux",
|
||||
|
|
|
@ -55,7 +55,7 @@ endif ()
|
|||
include(CheckCXXCompilerFlag)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
@ -64,21 +64,21 @@ set(TITLE_SEQUENCE_VERSION "0.4.6")
|
|||
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip")
|
||||
set(TITLE_SEQUENCE_SHA1 "80fefc6ebbabc42a6f4703412daa5c62f661420d")
|
||||
|
||||
set(OBJECTS_VERSION "1.3.13")
|
||||
set(OBJECTS_VERSION "1.4.6")
|
||||
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip")
|
||||
set(OBJECTS_SHA1 "15a60424d5f4f0b94ac07763b6967ba0e6ae3a7d")
|
||||
set(OBJECTS_SHA1 "49852246ba3d3a44f143e0c4de8f4d2e8f950c10")
|
||||
|
||||
set(OPENSFX_VERSION "1.0.3")
|
||||
set(OPENSFX_VERSION "1.0.5")
|
||||
set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip")
|
||||
set(OPENSFX_SHA1 "ffec5a97bd5035860c4c9a43fe32cf51886478e3")
|
||||
set(OPENSFX_SHA1 "b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb")
|
||||
|
||||
set(OPENMSX_VERSION "1.5")
|
||||
set(OPENMSX_URL "https://github.com/OpenRCT2/OpenMusic/releases/download/v${OPENMSX_VERSION}/openmusic.zip")
|
||||
set(OPENMSX_SHA1 "f3c707e576281758637598ce68880416891fe5f9")
|
||||
|
||||
set(REPLAYS_VERSION "0.0.78")
|
||||
set(REPLAYS_VERSION "0.0.79")
|
||||
set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v${REPLAYS_VERSION}/replays.zip")
|
||||
set(REPLAYS_SHA1 "31C5D07EED8481D5C6D57F9E4FE9443AAEDE7739")
|
||||
set(REPLAYS_SHA1 "34457077DBA9448A08FF6AC95E5CB92D65252E0C")
|
||||
|
||||
option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.")
|
||||
option(WITH_TESTS "Build tests")
|
||||
|
@ -125,12 +125,13 @@ if (APPIMAGE)
|
|||
endif ()
|
||||
|
||||
if (MACOS_USE_DEPENDENCIES)
|
||||
message("Using OpenRCT2 dependencies instead of system libraries")
|
||||
# if we're building on macOS, then we need the dependencies
|
||||
include(cmake/download.cmake)
|
||||
|
||||
set(MACOS_DYLIBS_VERSION "33")
|
||||
set(MACOS_DYLIBS_VERSION "35")
|
||||
set(MACOS_DYLIBS_ZIPFILE "openrct2-libs-v${MACOS_DYLIBS_VERSION}-universal-macos-dylibs.zip")
|
||||
set(MACOS_DYLIBS_SHA1 "8b47f3a3603f3ad3a1ee292033d0daffe9a3e43c")
|
||||
set(MACOS_DYLIBS_SHA1 "bed4340c32b6dbee9634ceaf19cb6b49a837aead")
|
||||
set(MACOS_DYLIBS_DIR "${ROOT_DIR}/lib/macos")
|
||||
set(MACOS_DYLIBS_URL "https://github.com/OpenRCT2/Dependencies/releases/download/v${MACOS_DYLIBS_VERSION}/${MACOS_DYLIBS_ZIPFILE}")
|
||||
|
||||
|
@ -147,6 +148,7 @@ if (MACOS_USE_DEPENDENCIES)
|
|||
# if we're making the OpenRCT2.app bundle, rpath will be handled by fixup_bundle
|
||||
# if we're building the CLI executable, we need to do it ourselves
|
||||
if (NOT MACOS_BUNDLE)
|
||||
message("Setting rpath for macOS dylibs")
|
||||
# the RPATH to be used when installing, but only if it's not a system directory
|
||||
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
|
||||
if("${isSystemDir}" STREQUAL "-1")
|
||||
|
@ -277,6 +279,9 @@ if (MSVC)
|
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244") # C4244: 'conversion_type': conversion from 'type1' to 'type2', possible loss of data
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4068") # C4068: unknown pragma
|
||||
|
||||
# Enable char8_t<->char conversion
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:char8_t-")
|
||||
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
|
@ -331,6 +336,9 @@ else ()
|
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas -Wno-missing-braces -Wno-comment -Wnonnull -Wno-unused-parameter -Wno-attributes")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG=${DEBUG_LEVEL}")
|
||||
|
||||
# Enable char8_t<->char conversion
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-char8_t -Wno-deprecated-declarations")
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=objc-method-access")
|
||||
endif()
|
||||
|
|
|
@ -36,6 +36,8 @@ Examples of unacceptable behavior include:
|
|||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
For our community guidelines please refer to [CommunityGuidelines.md](CommunityGuidelines.md).
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
# Community Guidelines
|
||||
|
||||
## Community rules
|
||||
|
||||
- Please be respectful to other members. Avoid any racist, sexist, homophobic, excessively political, or otherwise distasteful discussions.
|
||||
- While some cursing is appropriate in context, refrain from using excessive profanity.
|
||||
- Keep conversations in the appropriate channel. Some off-topic discussions are to be expected, but try not to blatantly post non-subject-related content.
|
||||
- No not safe for work (NSFW) material is allowed. Breaking this rule will be met with an immediate ban.
|
||||
- Keep spam to a minimum:
|
||||
- Do not repeatedly send the same message.
|
||||
- Do not post links to sites/content others would find unacceptable.
|
||||
- Advertising or promotion of piracy is forbidden.
|
||||
- Staff members (`@Developer` on Discord) have the final say about what is and is not acceptable within the community. Refusals to listen to staff may result in being kicked or banned.
|
||||
- HAVE FUN and enjoy all that the community has to offer.
|
||||
|
||||
To read our Code of Conduct please refer to [Code of Conduct](CODE_OF_CONDUCT.md).
|
||||
|
||||
## Team rules
|
||||
|
||||
On top of the community rules, the development and moderation team has to keep themselves to a specific set of rules.
|
||||
|
||||
### Behavioural rules
|
||||
|
||||
- Keep cool to any community member, even if they can be very frustrating to deal with: Do not retaliate, say nothing if you cannot keep it polite.
|
||||
- Stand up for one another and take responsibility for each others mistakes.
|
||||
- Any team member can request a time-out in team chat, which will suspend any talking in team chat for 30 minutes.
|
||||
- Respect the time out, do not contact each other in DM during this period.
|
||||
- We work with a 3 strike system, if you hit strike 3 you will lose your role.
|
||||
|
||||
### Rules regarding PRs
|
||||
|
||||
- Any contributor PR requires at least two code reviews, either by developers or trusted community members (at least one developer).
|
||||
- Any developer PR requires at least one code review, by another developer.
|
||||
- Any PR requires one playtest review, if applicable.
|
||||
|
||||
### Guidelines regarding public relations and community management
|
||||
|
||||
With an online presence we require maintaining a good public image. For this we have specific guidelines, so each party can take responsibility where necessary.
|
||||
|
||||
- Any message* for support or public relations requires a signature**.
|
||||
- When sending emails, finish the letter with: Your regards, your name and the OpenRCT2 Team.
|
||||
- Please keep a professional tone when communicating for support and public relations purposes.
|
||||
|
||||
*Discord messages are already signed.
|
||||
**For the identity associated with each signature refer to the paragraph "Team signatures"
|
||||
|
||||
|
||||
#### Team Signatures
|
||||
|
||||
When finding a message on our social media the following signatures refer to the following members:
|
||||
|
||||
| Name | Signature |
|
||||
| ---- | --------- |
|
||||
| Ted (IntelOrca) | ~/i |
|
||||
| Duncan (duncanpumpkin) | ~/d |
|
||||
| Michał (janisozaur) | ~/j |
|
||||
| Hielke (Broxzier) | ~/b |
|
||||
| Tulio (tupaschoal) | ~/t |
|
||||
| Olivier (Oli414) | ~/o |
|
||||
| Matthias (ZehMatt) | ~/z |
|
||||
| Karst (AuraSpecs) | ~/a |
|
||||
| Michael (mrmbernardi) | ~/m |
|
||||
| Michael (Gymnasiast) | ~/g |
|
|
@ -12,6 +12,7 @@ Includes all git commit authors. Aliases are GitHub usernames or community nickn
|
|||
* Karst van Galen Last (AuraSpecs) - Lead OpenSoundEffects & OpenMusic
|
||||
* Michael Bernardi (mrmbernardi) - Programming
|
||||
* Michael Steenbeek (Gymnasiast) - Lead Localisation - Programming
|
||||
* Aaron van Geffen (AaronVanGeffen) - Programming
|
||||
|
||||
## Support team
|
||||
* Kenton Boadway (Krutonium) - Lead OpenScenarios
|
||||
|
@ -21,7 +22,6 @@ Includes all git commit authors. Aliases are GitHub usernames or community nickn
|
|||
* Marijn van der Werf (marijnvdwerf)
|
||||
* (zsilencer)
|
||||
* Richard Jenkins (rwjuk)
|
||||
* Aaron van Geffen (AaronVanGeffen)
|
||||
* Rik Smeets (rik-smeets)
|
||||
|
||||
## Long term contributors
|
||||
|
@ -118,8 +118,11 @@ Appreciation for contributors who have provided substantial work, but are no lon
|
|||
* Wenzhao Qiu (qwzhaox) - Misc.
|
||||
* Tiago Reul (reul) - Misc.
|
||||
* Fredrik Tegnell (fredriktegnell) - Misc.
|
||||
* Alex Parisi (alex-parisi) - Added API for returning metadata from all registered plugins.
|
||||
* Arnold Zhou (mrmagic2020) - Added plugin API for getting and setting guests' favourite rides, misc.
|
||||
|
||||
## Bug fixes & Refactors
|
||||
* Claudio Tiecher (janclod)
|
||||
* (KirilAngelov)
|
||||
* (halfbro)
|
||||
* (Myrtle)
|
||||
|
@ -232,6 +235,12 @@ Appreciation for contributors who have provided substantial work, but are no lon
|
|||
* Wenzhao Qiu (qwzhaox)
|
||||
* Michael Bernardi (mrmbernardi)
|
||||
* Aram Kazorian (aramk-hub)
|
||||
* Harry Hopkinson (Harry-Hopkinson)
|
||||
* Jan Kelemen (jan-kelemen)
|
||||
* Cory Ye (CoryfY)
|
||||
* Karsten Van Fossan (karstenvanf)
|
||||
* Kaavya Ramachandhran (ayvaak)
|
||||
* Mike Harvey (harvito)
|
||||
|
||||
## Toolchain
|
||||
* (Balletie) - macOS
|
||||
|
@ -281,6 +290,7 @@ Appreciation for contributors who have provided substantial work, but are no lon
|
|||
* Russian - (Soosisya)
|
||||
* Spanish - Josué Acevedo (Wirlie), Diego Mateos (dimateos), (frenchiveruti), (mdtrooper), Daniel Trujillo Viedma (gDanix); small fixes: (teapartycthulu)
|
||||
* Swedish - (Jinxit), (mharrys), (Slimeyo), Matte Andersson (Nubbie)
|
||||
* Ukrainian - (CsyeCokTheSolly), (Veydzher), (Saba4ara)
|
||||
|
||||
## Graphics
|
||||
* Yannic Geurts (xzbobzx) - OpenRCT2 Logo
|
||||
|
@ -315,4 +325,4 @@ Appreciation for contributors who have provided substantial work, but are no lon
|
|||
|
||||
Thanks to: Peter James Adcock, Joe Booth, and John Wardley
|
||||
|
||||
Licensed to Infogrames Interactive Inc.
|
||||
Licensed to Infogrames Interactive Inc.
|
||||
|
|
|
@ -186,7 +186,7 @@ STR_0768 :رجل مساعد {INT32}
|
|||
STR_0769 :ميكانيكي {INT32}
|
||||
STR_0770 :رجل الأمن {INT32}
|
||||
STR_0771 :المُرفه {INT32}
|
||||
STR_0777 :خديقة غير مسماة{POP16}{POP16}
|
||||
STR_0777 :خديقة غير مسماة
|
||||
STR_0778 :إشارة
|
||||
STR_0779 :الأول
|
||||
STR_0780 :الثاني
|
||||
|
@ -1740,12 +1740,12 @@ STR_2382 :Land
|
|||
STR_2383 :Water
|
||||
STR_2384 :{WINDOW_COLOUR_2}Your objective:
|
||||
STR_2385 :{BLACK}None
|
||||
STR_2386 :{BLACK}To have at least {COMMA16} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600
|
||||
STR_2386 :{BLACK}To have at least {COMMA32} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600
|
||||
STR_2387 :{BLACK}To achieve a park value of at least {POP16}{POP16}{CURRENCY} at the end of {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Have Fun!
|
||||
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 below 700 at any time!
|
||||
STR_2391 :{BLACK}To have at least {COMMA32} guests in your park. You must not let the park rating drop below 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
|
||||
|
@ -2100,39 +2100,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :…غير قادر علي تحميل الملف
|
||||
STR_3011 :الملف يحتوي علي بيانات خاطئة
|
||||
STR_3012 :Dodgems beat style
|
||||
STR_3013 :Fairground organ style
|
||||
STR_3014 :Roman fanfare style
|
||||
STR_3015 :Oriental style
|
||||
STR_3016 :Martian style
|
||||
STR_3017 :Jungle drums style
|
||||
STR_3018 :Egyptian style
|
||||
STR_3019 :Toyland style
|
||||
STR_3020 :
|
||||
STR_3021 :Space style
|
||||
STR_3022 :Horror style
|
||||
STR_3023 :Techno style
|
||||
STR_3024 :Gentle style
|
||||
STR_3025 :Summer style
|
||||
STR_3026 :Water style
|
||||
STR_3027 :Wild west style
|
||||
STR_3028 :Jurassic style
|
||||
STR_3029 :Rock style
|
||||
STR_3030 :Ragtime style
|
||||
STR_3031 :Fantasy style
|
||||
STR_3032 :Rock style 2
|
||||
STR_3033 :Ice style
|
||||
STR_3034 :Snow style
|
||||
STR_3035 :Custom music 1
|
||||
STR_3036 :Custom music 2
|
||||
STR_3037 :Medieval style
|
||||
STR_3038 :Urban style
|
||||
STR_3039 :Organ style
|
||||
STR_3040 :Mechanical style
|
||||
STR_3041 :Modern style
|
||||
STR_3042 :Pirates style
|
||||
STR_3043 :Rock style 3
|
||||
STR_3044 :Candy style
|
||||
STR_3045 :Select style of music to play
|
||||
STR_3047 :Local authority forbids demolition or modifications to this ride
|
||||
STR_3048 :Marketing campaigns forbidden by local authority
|
||||
|
@ -2359,7 +2326,7 @@ STR_3305 :{WINDOW_COLOUR_2}Monthly income:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Monthly profit:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimum length:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Excitement rating:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Rides/attractions under a preservation order:
|
||||
|
@ -2921,7 +2888,7 @@ STR_5755 :نسخة برنامج خاطئة (السرفر يستخدم الن
|
|||
STR_5756 :كلمة سر خاطئة
|
||||
STR_5757 :السرفر ممتلئ
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} قد إنظم للعبة
|
||||
STR_5759 :يُحمل الخريطة … ({INT32} / {INT32}) كيلو بايت
|
||||
STR_5759 :يُحمل الخريطة …
|
||||
STR_5760 :دولار هونج كونج (دهونج)
|
||||
STR_5761 :دولار تيوان الجديدة (دتيوان)
|
||||
STR_5762 :الين الصيني (ين)
|
||||
|
@ -2997,7 +2964,7 @@ STR_5832 :Show height as generic units instead of measurement format set unde
|
|||
STR_5833 :Changes what date format is used
|
||||
STR_5834 :Select which audio device OpenRCT2 will use
|
||||
STR_5835 :Mute the game if the window loses focus
|
||||
STR_5836 :حدد الموسيقى المستخدمة في القائمة الرئيسية.{NEWLINE}يتطلب تحديد سمة محاكي الافعوانيات 1 تعيين المسار إلى محاكي الافعوانيات 1 في تبويب الخيارات المتقدمة.
|
||||
STR_5836 :حدد الموسيقى المستخدمة في القائمة الرئيسية.{NEWLINE}يتطلب تحديد سمة RollerCoaster Tycoon 1 تعيين المسار إلى RollerCoaster Tycoon 1 في تبويب الخيارات المتقدمة.
|
||||
STR_5837 :Create and manage custom UI themes
|
||||
STR_5838 :Show a separate button for the finance window in the toolbar
|
||||
STR_5839 :Show a separate button for the research and development window in the toolbar
|
||||
|
@ -3249,12 +3216,12 @@ STR_6089 :{STRING} تم تغيير أسم الحديقة من ‘{STRING}’
|
|||
STR_6090 :{STRING} .فتح الحديقة
|
||||
STR_6091 :{STRING} .إغلاق الحديقة
|
||||
STR_6092 :{STRING} تم تغيير رسول دخول الحديقة إلي {STRING}
|
||||
STR_6093 :{STRING} placed new scenery.
|
||||
STR_6094 :{STRING} removed scenery.
|
||||
STR_6095 :{STRING} edited scenery.
|
||||
STR_6096 :{STRING} set sign name to ‘{STRING}’.
|
||||
STR_6097 :{STRING} placed a track of ride ‘{STRING}’.
|
||||
STR_6098 :{STRING} removed a track of ride.
|
||||
STR_6093 :{STRING} تم وضع مشهد جديد.
|
||||
STR_6094 :{STRING} تم حذف المشهد.
|
||||
STR_6095 :{STRING} تم تعديل المشهد.
|
||||
STR_6096 :{STRING} غير اسم اللافته الي ‘{STRING}’.
|
||||
STR_6097 :{STRING} تم وضع مسار الرحلة ‘{STRING}’.
|
||||
STR_6098 :{STRING} تم حذف مسار الرحلة.
|
||||
STR_6099 :.أنت متصل مع السرفر
|
||||
STR_6100 :.أنت إنفصلت عن السرفر
|
||||
STR_6101 :Rides don’t decrease in value over time
|
||||
|
@ -3281,7 +3248,7 @@ STR_6129 :إنسخ
|
|||
STR_6130 :إنسخ الكل
|
||||
STR_6131 :مصدر العنصر
|
||||
STR_6132 :تجاهل حالة التطوير
|
||||
STR_6133 :Access rides and scenery that have not yet been invented
|
||||
STR_6133 :قم بالوصول للرحلات والمشاهد التي لم يتم إصدارها بعد
|
||||
STR_6134 :إخلاء المشهد
|
||||
STR_6135 :العميل أرسل طلب خاطئ
|
||||
STR_6136 :السرفر أرسل طلب خاطئ
|
||||
|
@ -3289,13 +3256,13 @@ STR_6137 :OpenRCT2, a free and open source clone of Roller Coaster Tycoon 2.
|
|||
STR_6138 :OpenRCT2 is the work of many authors, a full list can be found in “contributors.md”. For more information, visit http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6139 :All product and company names belong to their respective holders. Use of them does not imply any affiliation with or endorsement by them.
|
||||
STR_6140 :سجل التغيير…
|
||||
STR_6141 :RCT1 Bottom Toolbar
|
||||
STR_6141 :السفليRCT1 شريط ادوات
|
||||
STR_6142 :{WINDOW_COLOUR_2}أسم المسار: {BLACK}{STRING}
|
||||
STR_6143 :{WINDOW_COLOUR_2}نوع الرحلة: {BLACK}{STRINGID}
|
||||
STR_6144 :أظهر تأثيرات التراب
|
||||
STR_6145 :حدد
|
||||
STR_6146 :Enable all drawable track pieces
|
||||
STR_6147 :Enables all track pieces the ride type is capable of in the construction window, regardless of whether the vehicle supports them.
|
||||
STR_6146 :فعل كل قطع المسار الممكن رسمه
|
||||
STR_6147 :تمكين جميع قطع المسار الخاصة بالمركبة في نافذة البناء، بغض النظر عما إذا كانت المركبة تدعمها أم لا.
|
||||
STR_6148 :يتصل إلي السرفر الأساسي…
|
||||
STR_6149 :غير قادر علي الإتصال بالسرفر الأساسي
|
||||
STR_6150 :رد خاطئ من السرفر الأساسي (لا رقم جسون)
|
||||
|
@ -3341,7 +3308,7 @@ STR_6217 :توافرية المسار \الرحلة
|
|||
STR_6218 :محاكاة الأفعوانيات المفتوحة 2 الرسمية
|
||||
STR_6219 :تعليم مشاكل المسار
|
||||
STR_6220 :أجعله مُستخدم
|
||||
STR_6221 :{BLACK هذا سوف يحدد المدخل والمخرج المعروف للرحلة للمنطقة هذه. فقط مدخل ومخرج واحد يمكن إسخدامة لكل محطة.
|
||||
STR_6221 :{BLACK} هذا سوف يحدد المدخل والمخرج المعروف للرحلة للمنطقة هذه. فقط مدخل ومخرج واحد يمكن إسخدامة لكل محطة.
|
||||
STR_6222 :لا يمكن وضع نقطة دخول الزوار هنا…
|
||||
STR_6223 :يجب أن يكون خارج حدود الحديقة!
|
||||
STR_6224 :{STRING} تم وضع نقطة دخول الزوار.
|
||||
|
@ -3481,7 +3448,7 @@ STR_6374 :C
|
|||
STR_6375 :رحلة غير معروفة
|
||||
STR_6376 :{WINDOW_COLOUR_2}عربة الرحلة:{NEWLINE}{BLACK}{STRINGID} لـ {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}النوع: {BLACK}{STRINGID} لـ {STRINGID}
|
||||
STR_6378 :يستقبل قائمة العناصر: {INT32} / {INT32}
|
||||
STR_6378 :يستقبل قائمة العناصر:
|
||||
STR_6379 :أستقبل بيانات خاطئة
|
||||
STR_6380 :يتوفر تحديث للعبة!
|
||||
STR_6381 :إنضم لديسكورد الرسمي!
|
||||
|
@ -3490,8 +3457,8 @@ STR_6383 :فتح صفحة التحميل
|
|||
STR_6384 :ثلوج
|
||||
STR_6385 :ثلوج كثيفة
|
||||
STR_6386 :عاصفة ثلجية
|
||||
STR_6387 :لا يمكن خفض العنصر هنا...
|
||||
STR_6388 :لا يمكن رفع العنصر هنا...
|
||||
STR_6387 :لا يمكن خفض العنصر هنا…
|
||||
STR_6388 :لا يمكن رفع العنصر هنا…
|
||||
STR_6389 :فسحة غير صالحة
|
||||
STR_6390 :تحتاج OpenRCT2 إلى ملفات من لعبة RollerCoaster Tycoon 2 الاصلية لكي تعمل. الرجاء تحديد المسار التي تتواجد به RollerCoaster Tycoon 2.
|
||||
STR_6391 :من فضلك حدد مسار اللعبة الاصلية
|
||||
|
@ -3535,7 +3502,7 @@ STR_6428 :Joy Down
|
|||
STR_6429 :Joy {INT32}
|
||||
STR_6430 :LMB
|
||||
STR_6431 :RMB
|
||||
STR_6432 :Mouse {INT32}
|
||||
STR_6432 :الماوس {INT32}
|
||||
STR_6433 :حذف
|
||||
STR_6434 :حذف كل الإرتباطات من هذا الإختصار.
|
||||
STR_6435 :{WINDOW_COLOUR_2}أوقف المُخربون: {BLACK}{COMMA16}
|
||||
|
@ -3593,9 +3560,9 @@ STR_6487 :تفعيل شاهد من خلال العاملون
|
|||
STR_6488 :{RED}يشكو الضيوف من طوابير الإنتظار الطويلة بحديقتك.{NEWLINE}قلل الطوابير الطويلة المسببة للمشكلة، أو زد عدد الرحلات.
|
||||
STR_6489 :خطأ: نسخة حديقة غير مدعومة
|
||||
STR_6490 :تحذير: نسخة حديقة شبه مدعومة
|
||||
STR_6491 :حُفظت هذه الحديقة في نسخة أحدث من اللعبة. الحديقة نسخة {INT32} و تتطلب علي الأقل نسخة{INT32}.
|
||||
STR_6492 :حُفظت هذه الحديقة في نسخة قديمة من اللعبة، ولا يمكن فتحها في النسخة الحالية من اللعبة. نسخة الحديقة هي{INT32}.
|
||||
STR_6493 :حُفظت هذه الحديقة في نسخة أحدث من اللعبة، ربما فُقدت بعض البيانات. نسخة الحديقة هي{INT32} وتتطلب علي الأقل نسخة{INT32}.
|
||||
STR_6491 :حُفظت هذه الحديقة في نسخة أحدث من اللعبة. الحديقة نسخة {INT32} و تتطلب علي الأقل نسخة{INT32} أنت حاليا تستخدم النسخة v{INT32}.
|
||||
STR_6492 :حُفظت هذه الحديقة في نسخة قديمة من اللعبة، ولا يمكن فتحها في النسخة الحالية من اللعبة. نسخة الحديقة هي{INT32} أنت حاليا تستخدم النسخة v{INT32}.
|
||||
STR_6493 :حُفظت هذه الحديقة في نسخة أحدث من اللعبة، ربما فُقدت بعض البيانات. نسخة الحديقة هي{INT32} وتتطلب علي الأقل نسخة{INT32} أنت حاليا تستخدم النسخة v{INT32}.
|
||||
STR_6494 :تجميع حسب نوع الرحلة
|
||||
STR_6495 :مجموعة الرحلات حسب نوع الرحلة بدلاً من عرض كل مركبة على حدة.
|
||||
STR_6496 :{WINDOW_COLOUR_2}{STRINGID}
|
||||
|
@ -3617,6 +3584,11 @@ STR_6511 :لفة انعدامية الوزن (يمين)
|
|||
STR_6512 :لفة كبيرة انعدامية الوزن (شمال)
|
||||
STR_6513 :لفة كبيرة انعدامية الوزن (يمين)
|
||||
STR_6514 :ارتفاع غير صحيح!
|
||||
STR_6515 :{BLACK}RollerCoaster Tycoon 1 غير مربوطة - سيتم استخدام الصور الاحتياطية.
|
||||
STR_6516 :واحد او اكثر من عنصر يتطلبون ان تكون RollerCoaster Tycoon 1 مرتبطة لكي يعرضوا بشكل صحيح. سيتم استخدام الصور الاحتياطية.
|
||||
STR_6517 :واحد او اكثر من عنصر يتطلبون ان تكون RollerCoaster Tycoon 1 مرتبطة لكي يعرضوا بشكل صحيح. سيتم استخدام الصور الاحتياطية.
|
||||
STR_6518 :{BLACK} قم بالمرور فوق احدي المشاهد لكي ترى تفاصيله والمهمات المطلوبة به. انقر عليه لكي تلعبه.
|
||||
STR_6519 :الملحقات
|
||||
STR_6520 :حزمة الملفات
|
||||
STR_6521 :أولوية منخفضة
|
||||
STR_6522 :أولوية مرتفعة
|
||||
|
@ -3624,12 +3596,16 @@ STR_6523 :تقليل أولوية حزمة الملفات المحددة.
|
|||
STR_6524 :زيادة أولوية حزمة الملفات المحددة.
|
||||
STR_6525 :أعد تحميل جميع الملفات في اللعبة بحزم الملفات الممكّنة.
|
||||
STR_6526 :(الرسوميات القياسية، الموسيقي والمؤثرات الصوتية)
|
||||
STR_6527 :المسابقات
|
||||
STR_6528 :معاملات مسار غير صحيحة!
|
||||
STR_6529 :معلمة نظام الألوان غير صحيح!
|
||||
STR_6530 :حزمة توسوعية منشئة بالمستخدم
|
||||
STR_6531 :آلة السفر عبر الزمن
|
||||
STR_6532 :عالم أحلام كاتي
|
||||
|
||||
STR_6533 :{WINDOW_COLOUR_2}عامل الاثارة: {BLACK}-{COMMA16}%
|
||||
STR_6534 :{WINDOW_COLOUR_2}عامل الشدة: {BLACK}-{COMMA16}%
|
||||
STR_6535 :{WINDOW_COLOUR_2}عامل الغثيان: {BLACK}-{COMMA16}%
|
||||
STR_6536 :حٌفظت الحديقة بنسخة احدث من اللعبة. حٌفظت الحديقة بنسخة v{INT32}, أنت حاليا تستخدم النسخة v{INT32}.
|
||||
#############
|
||||
# Scenarios #
|
||||
################
|
||||
|
@ -4221,87 +4197,87 @@ STR_DTLS :قم ببناء جولات الأعلام الستة المفقود
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :أفريقيا - منجم الماس الأفريقي
|
||||
STR_SCNR :مناجم أفريقيا
|
||||
STR_PARK :مناجم أفريقيا
|
||||
STR_DTLS :لقد ورثت منجم ألماس مهجور ووجدت ألماسة ثمينة. قررت استثمار هذه الأموال لبناء مدينة ملاهي مشهورة عالميًا.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :أفريقيا - الواحة
|
||||
STR_SCNR :جنون السراب
|
||||
STR_PARK :جنون السراب
|
||||
STR_DTLS :تم اكتشاف واحة صحراوية والتي ستوفر موقعًا جميلًا للحديقة. تم توفير المواصلات من وإلى الواحة.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :أفريقيا - شلالات فيكتوريا
|
||||
STR_SCNR :على الحافة
|
||||
STR_PARK :على الحافة
|
||||
STR_DTLS :تم بناء سد يوفر طاقة كهرومائية وفيرة ورخيصة لتشغيل الحديقة. أنت بحاجة للوصول إلى قيمة عالية للحديقة للمساعدة في سداد قرض السد.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :أنتاركتيكا - الإنقاذ البيئي
|
||||
STR_SCNR :المغامرات الثلجية
|
||||
STR_PARK :المغامرات الثلجية
|
||||
STR_DTLS :لقد لجأت إليك وكالة البيئة لتحويل مصفاة نفط قديمة صديقة للبيئة إلى منطقة جذب سياحي كبرى. الأرض رخيصة لكن الفائدة على القرض مرتفعة. يمكنك بيع المباني القديمة من أجل بعض النقود.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :آسيا - تعزيز السياحة بسور الصين العظيم
|
||||
STR_SCNR :سور الصين العظيم
|
||||
STR_PARK :سور الصين العظيم
|
||||
STR_DTLS :قررت السلطات تعزيز السياحة حول السور العظيم من خلال بناء مدينة ترفيهية على الأرض المجاورة. المال ليس مُعضلة!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :آسيا - استصلاح السواحل اليابانية
|
||||
STR_SCNR :شاطئ أوكيناوا
|
||||
STR_PARK :شاطئ أوكيناوا
|
||||
STR_DTLS :نفدت مساحة الحديقة الموجودة. خيارك الوحيد هو البناء في البحر، وهكذا حصلت على قرض. يتم فرض قيود الارتفاع على المباني الخاصة بك بسبب الأساسات ومخاطر الزلازل.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :اسيا - قصر المهراجا
|
||||
STR_SCNR :حديقة المهراجا
|
||||
STR_PARK :حديقة المهراجا
|
||||
STR_DTLS :لقد تم تكليفك من قبل المهراجا لإحضار الترفيه لعدد كبير من السكان المحليين. حيث يتعين عليك بناء حديقة مستوحاة من قصر المهراجا.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :أستراليا - صخور أولورو
|
||||
STR_SCNR :مغامرات أولورو
|
||||
STR_PARK :مغامرات أولورو
|
||||
STR_DTLS :أنت تساعد السكان الأصليين في بناء حديقة كجزء من برنامج التوعية الثقافية. تحتاج إلى الوصول إلى عدد كبير من الزوار لتثقيفهم حول التراث الفريد للسكان الأصليين.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :أستراليا - المرح على الشاطئ
|
||||
STR_SCNR :حفلة شواء على الشاطئ
|
||||
STR_PARK :حفلة شواء على الشاطئ
|
||||
STR_DTLS :تعرضت حديقة الفقمة الخاصة برجل أعمال محلي للإفلاس. أنت حاليًا تدير حديقة صغيرة، قُمت بشراء الحديقة الأخرى من شركة البناء. ويتعين عليك الأن تطوير حديقة مشتركة كبيرة.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :أوروبا - المهرجان الثقافي الأوروبي
|
||||
STR_SCNR :الروعة الأوروبية
|
||||
STR_PARK :الروعة الأوروبية
|
||||
STR_DTLS :لقد تم إحضارك لتولي مركز جذب الزوار الثقافيين الأوروبيين ويجب عليك زيادة عدد الضيوف من أجل سداد دعم الاتحاد الأوروبي بحلول نهاية الدورة الحالية للبرلمان الأوروبي.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :أوروبا - التجديد
|
||||
STR_SCNR :من الرماد
|
||||
STR_PARK :من الرماد
|
||||
STR_DTLS :لقد أصبحت هذه الحديقة القديمة بحالة يرثى لها. حَصلت على منحة من الاتحاد الأوروبي لإعادة هذه المنطقة المحرومة إلى مجدها السابق! تحتاج إلى تجديد الحديقة وسداد المنحة.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :أمريكا الشمالية - جزيرة هاواي الأخيرة
|
||||
STR_SCNR :واكي وايكيكي
|
||||
STR_PARK :واكي وايكيكي
|
||||
STR_DTLS :يشعر سكان هاواي بالملل من ركوب الأمواج ويبحثون عن شيء أكثر إثارة. تحتاج إلى بناء حديقة مع وضع ذلك في الاعتبار للحفاظ على التصنيف المرتفع لمناطق الجذب السياحي في المنطقة.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :أمريكا الشمالية - الوادي العظيم
|
||||
STR_SCNR :أحداث الوادي
|
||||
STR_PARK :أحداث الوادي
|
||||
STR_DTLS :عليك بناء حديقة على أرض محدودة على جانبي هذا الكنز الطبيعي - لديك الفرصة لشراء الأراضي المجاورة من الهنود الأمريكيين الأصليين. تحتاج إلى إكمال الهدف للحفاظ على سكان المدينة المحلية.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :أمريكا الشمالية - جنة الأفعوانيات
|
||||
STR_SCNR :جنة الأفعوانيات
|
||||
STR_PARK :جنة الأفعوانيات
|
||||
STR_DTLS :أنت رجل أعمال ناجح في إجازة طويلة وترغب في استغلال هذا الوقت في تحويل حديقة المدينة إلى جنة أفعوانيات. المال ليس عائقًا!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :أمريكا الجنوبية - مدينة الإنكا المفقودة
|
||||
STR_SCNR :مؤسس المدينة المفقودة
|
||||
STR_PARK :مؤسس المدينة المفقودة
|
||||
STR_DTLS :لتعزيز السياحة المحلية، يجب عليك إنشاء حديقة تتماشى مع محيطها، ولها قيود على الارتفاع.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :أمريكا الجنوبية - هضبة الغابات المطيرة
|
||||
STR_SCNR :العاب الغابات المطيرة
|
||||
STR_PARK :العاب الغابات المطيرة
|
||||
STR_DTLS :المساحة محدودة في الغابات المطيرة الثمينة - حيث يجب عليك ضم أكبر قدر ممكن في المساحة المخلية الحالية، من أجل توفير بديل قابل للتطبيق لصناعة الأخشاب المحليةالمساحة محدودة في الغابات المطيرة الثمينة - يجب حشر أكبر قدر ممكن في المساحة المخلية الحالية، من أجل توفير بديل قابل للتطبيق لصناعة الأخشاب المحلية.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :أمريكا الجنوبية - كرنفال ريو
|
||||
STR_SCNR :شواطئ باو دي أسوكار
|
||||
STR_PARK :شواطئ باو دي أسوكار
|
||||
STR_DTLS :انت تُدير حديقة صغيرة بالقرب من مدينة ريو لكن البنك طالبك بالقرض. تحتاج إلى زيادة ربحك بسرعة لتسديد هذا الدين غير المتوقع.
|
||||
|
||||
|
@ -4309,72 +4285,72 @@ STR_DTLS :انت تُدير حديقة صغيرة بالقرب من مدين
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :العصور المظلمة - القلعة
|
||||
STR_SCNR :قلعة كليفسايد
|
||||
STR_PARK :قلعة كليفسايد
|
||||
STR_DTLS :الأعضاء المحليون في مجتمع إعادة تمثيل المعركة جادون إلى حد ما بشأن هوايتهم. لقد عهدوا إليك بمهمة بناء مدينة ملاهي بطابع العصور المظلمة على أراضي قلعة كليفسايد.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :العصور المظلمة - روبن هود
|
||||
STR_SCNR :غابة شيروود
|
||||
STR_PARK :غابة شيروود
|
||||
STR_DTLS :لتحرير الثروة من الأثرياء وتوزيعها على المحتاجين، قررت أنت ورجالك التابعين بناء مدينة ملاهي في غابة شيروود.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :المستقبل - اللقاءات الأولى
|
||||
STR_SCNR :الروعة خارج الأرض
|
||||
STR_PARK :الروعة خارج الأرض
|
||||
STR_DTLS :تم اكتشاف الحياة على كوكب بعيد، قم ببناء متنزه غريب للاستفادة من موجة الاهتمام غير المسبوقة.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :المستقبل - عالم المستقبل
|
||||
STR_SCNR :مدينة الجوزاء
|
||||
STR_PARK :مدينة الجوزاء
|
||||
STR_DTLS :أظهر رؤيتك المبتكرة والمثالية للمستقبل - ابتكر تصميمًا مستقبليًا للحديقة يتضمن أحدث عوامل الجذب.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :الأساطير - موقع أفلام أنيماترونكس
|
||||
STR_SCNR :تحفيات أنيماترونكس
|
||||
STR_PARK :تحفيات أنيماترونكس
|
||||
STR_DTLS :لقد تم تكليفك بمهمة تشغيل وتحسين مدينة ملاهي موجودة، والتي تم إنشاؤها على مجموعة أفلام قديمة. أنشئ تكريمًا لرسامي تقنية إيقاف الحركة الرائدين الذين قاموا بإحياء الكائنات الأسطورية على الشاشة الفضية لأول مرة.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :الأساطير - مهد الحضارة
|
||||
STR_SCNR :جنون الأساطير
|
||||
STR_PARK :جنون الأساطير
|
||||
STR_DTLS :أنت تمتلك جزيرة ذات قيمة أثرية معينة. لقد قررت تمويل الحفاظ عليها من خلال بناء مدينة ملاهي على أساس التراث الأسطوري الغني للمنطقة.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :ماقبل التاريخ - بعد النيزك
|
||||
STR_SCNR :المذبحة الحفرة
|
||||
STR_PARK :المذبحة الحفرة
|
||||
STR_DTLS :أنت تمتلك حفرة نيزك قديمة متربة. بروح ريادة الأعمال الحقيقية، قررت إنشاء مدينة ملاهي ذات طابع نايزك وكويكبات وتحويل أرضك التي تبدو بلا قيمة إلى ثروة كبيرة.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :ماقبل التاريخ - سفاري جوراسي
|
||||
STR_SCNR :كوسترسورس
|
||||
STR_PARK :كوسترسورس
|
||||
STR_DTLS :لقد تم تكليفك بمهمة بناء مدينة ملاهي ذات طابع من العصر الجوراسي. لتحسين وصول الزائرين إلى المعروضات النباتية والحيوانية الغريبة، ستحتاج إلى إنشاء رحلات تجول في الوادي وداخله.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :ماقبل التاريخ - العصر الحجري
|
||||
STR_SCNR :الرحلات الحجرية
|
||||
STR_PARK :الرحلات الحجرية
|
||||
STR_DTLS :لإحباط مطوري الطرق السريعة والحفاظ على الدوائر الحجرية القديمة الغامضة، ستحتاج إلى إنشاء مدينة ملاهي ذا طابع العصر الحجري وزيادة الأرباح. ومع ذلك، قد يشكل جذب الزوار تحديًا، حيث أن التضاريس غير مضيافة.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :العشرينيات الصاخبة - جزيرة السجن
|
||||
STR_SCNR :ألكتراز
|
||||
STR_PARK :ألكتراز
|
||||
STR_DTLS :جزيرة السجن سيئة السمعة - التي زاد عدد سكانها ذات يوم بالمهربين والمبتزين - معروضة للبيع الآن. لقد قررت تحويلها إلى منطقة جذب سياحي كبرى، والمال ليس مُعضلة
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :العشرينيات الصاخبة - كأس شنايدر
|
||||
STR_SCNR :شواطئ شنايدر
|
||||
STR_PARK :شواطئ شنايدر
|
||||
STR_DTLS :تقترب الذكرى 75 لفوز جدك بكأس شنايدر في غضون بضع سنوات. سوف تكرم إنجازه من خلال بناء مدينة ملاهي على أساس سباق الطائرات المائية الشهير.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :العشرينيات الصاخبة - ناطحات السحب
|
||||
STR_SCNR :متروبوليس
|
||||
STR_PARK :متروبوليس
|
||||
STR_DTLS :أنت تمتلك قطعة أرض فارغة بالقرب من الجزء المنخفض من المدينة. لتحقيق أقصى استفادة من الممتلكات الحضرية الخاصة بك ، قم ببناء مدينة ملاهي مع ناطحات سحاب مستوحاة من العمارة الشاهقة على طراز فن الآرت ديكو في العشرينات.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :روك أند رول - قوة الورود
|
||||
STR_SCNR :وودستوك
|
||||
STR_PARK :وودستوك
|
||||
STR_DTLS :يُقام مهرجان موسيقي سنوي كبير على أرضك. أنشئ متنزهًا عصريًا للترفيه عن الجمهور المفعم بالحيوية.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :روك أند رول - روك أند رول
|
||||
STR_SCNR :إحياء الروك أند رول
|
||||
STR_PARK :إحياء الروك أند رول
|
||||
STR_DTLS :شهدت مدينة ملاهي القديمة هذه أيامًا أفضل. ساعد المالك على إضفاء مظهر روك أند رول وحول المكان إلى مكان ناجح.
|
||||
|
||||
|
@ -4487,4 +4463,4 @@ STR_DTLS :يا أطفال! هيا نمرح!{NEWLINE}المؤلفان: Piehead
|
|||
<Sand Dune>
|
||||
STR_SCNR :الكثبان الرملية
|
||||
STR_PARK :الكثبان الرملية
|
||||
STR_DTLS :باعتبارك مالكًا لمتنزه صغير، فقد اشتريت قطعة أرض كبيرة على طول الشاطئ للتوسع وجذب المزيد من الضيوف لزيارة الكثبان الرملية الجميلة، ولكن احذر: لا يمكنك إزعاج تلك الكثبان الرملية الهشة بيئيًا.{NEWLINE}المؤلف: rbarclay
|
||||
STR_DTLS :باعتبارك مالكًا لمتنزه صغير، فقد اشتريت قطعة أرض كبيرة على طول الشاطئ للتوسع وجذب المزيد من الضيوف لزيارة الكثبان الرملية الجميلة، ولكن احذر: لا يمكنك إزعاج تلك الكثبان الرملية الهشة بيئيًا.{NEWLINE}المؤلف: rbarclay
|
||||
|
|
|
@ -186,7 +186,7 @@ STR_0768 :Encarregat de neteja {INT32}
|
|||
STR_0769 :Mecànic {INT32}
|
||||
STR_0770 :Guarda de seguretat {INT32}
|
||||
STR_0771 :Animador {INT32}
|
||||
STR_0777 :Parc sense nom{POP16}{POP16}
|
||||
STR_0777 :Parc sense nom
|
||||
STR_0778 :Senyal
|
||||
STR_0779 :1
|
||||
STR_0780 :2
|
||||
|
@ -1740,12 +1740,12 @@ STR_2382 :Terra
|
|||
STR_2383 :Aigua
|
||||
STR_2384 :{WINDOW_COLOUR_2}El vostre objectiu:
|
||||
STR_2385 :{BLACK}Cap
|
||||
STR_2386 :{BLACK}Tenir almenys {COMMA16} visitants al parc al final de {MONTHYEAR}, amb una valoració del parc d’almenys 600.
|
||||
STR_2386 :{BLACK}Tenir almenys {COMMA32} visitants al parc al final de {MONTHYEAR}, amb una valoració del parc d’almenys 600.
|
||||
STR_2387 :{BLACK}Aconseguir una valoració del parc d’almenys {POP16}{POP16}{CURRENCY} al final de {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}.
|
||||
STR_2388 :{BLACK}Divertiu-vos!
|
||||
STR_2389 :{BLACK}Construïu el millor {STRINGID} que pugueu!
|
||||
STR_2390 :{BLACK}Tenir 10 tipus diferents de muntanyes russes operant al parc, cadascuna d’elles amb un valor d’emoció d’almenys 6,00.
|
||||
STR_2391 :{BLACK}Tenir almenys {COMMA16} visitants al parc. No podeu deixar que la valoració del parc caigui per sota de 700 en cap moment!
|
||||
STR_2391 :{BLACK}Tenir almenys {COMMA32} visitants al parc. No podeu deixar que la valoració del parc caigui per sota de 700 en cap moment!
|
||||
STR_2392 :{BLACK}Aconseguir uns ingressos mensuals amb les entrades d’atraccions d’almenys {POP16}{POP16}{CURRENCY}.
|
||||
STR_2393 :{BLACK}Tenir 10 tipus diferents de muntanyes russes operant al parc, cadascuna amb una longitud mínima de {LENGTH} i un valor d’emoció d’almenys 7,00.
|
||||
STR_2394 :{BLACK}Acabar de construir les cinc muntanyes russes que s’havien començat a construir al parc, dissenyant-les per a aconseguir un nivell d’emoció d’almenys {POP16}{POP16}{COMMA2DP32} per cada una d’elles.
|
||||
|
@ -2100,39 +2100,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :El fitxer no s’ha pogut carregar…
|
||||
STR_3011 :El fitxer conté dades no vàlides.
|
||||
STR_3012 :Estil cotxes de xoc
|
||||
STR_3013 :Estil orgue de fira
|
||||
STR_3014 :Estil fanfàrria romana
|
||||
STR_3015 :Estil oriental
|
||||
STR_3016 :Estil marcià
|
||||
STR_3017 :Estil tambors de la jungla
|
||||
STR_3018 :Estil egipci
|
||||
STR_3019 :Estil de joguines
|
||||
STR_3020 :
|
||||
STR_3021 :Estil espacial
|
||||
STR_3022 :Estil de pel·lícula de por
|
||||
STR_3023 :Estil tecno
|
||||
STR_3024 :Estil suau
|
||||
STR_3025 :Estil estival
|
||||
STR_3026 :Estil aquàtic
|
||||
STR_3027 :Estil salvatge oest
|
||||
STR_3028 :Estil juràssic
|
||||
STR_3029 :Estil rock
|
||||
STR_3030 :Estil ragtime
|
||||
STR_3031 :Estil fantàstic
|
||||
STR_3032 :Estil rock 2
|
||||
STR_3033 :Estil gèlid
|
||||
STR_3034 :Estil nevat
|
||||
STR_3035 :Peça personalitzada 1
|
||||
STR_3036 :Peça personalitzada 2
|
||||
STR_3037 :Estil medieval
|
||||
STR_3038 :Estil urbà
|
||||
STR_3039 :Estil orgue
|
||||
STR_3040 :Estil mecànic
|
||||
STR_3041 :Estil modern
|
||||
STR_3042 :Estil pirata
|
||||
STR_3043 :Estil rock 3
|
||||
STR_3044 :Estil caramel
|
||||
STR_3045 :Trieu l’estil de música que ha de reproduir.
|
||||
STR_3047 :Les autoritats pertinents no permeten enderrocar o modificar aquesta atracció.
|
||||
STR_3048 :Les autoritats pertinents no permeten realitzar campanyes de màrqueting.
|
||||
|
@ -2359,7 +2326,7 @@ STR_3305 :{WINDOW_COLOUR_2}Ingressos mensuals:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Beneficis mensuals:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Longitud mínima:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Nivell d’emoció:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Atraccions protegides:
|
||||
|
@ -2921,7 +2888,7 @@ STR_5755 :Versió de programari incorrecta (el servidor usa {STRING}).
|
|||
STR_5756 :Contrasenya no vàlida
|
||||
STR_5757 :Servidor ple
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} s’ha unit a la partida.
|
||||
STR_5759 :Es descarrega el mapa… ({INT32}/{INT32} KiB)
|
||||
STR_5759 :Es descarrega el mapa…
|
||||
STR_5760 :Dòlars de Hong Kong(HK$)
|
||||
STR_5761 :Nou dòlar de Taiwan(NT$)
|
||||
STR_5762 :Iuan xinès (CN¥)
|
||||
|
@ -3485,7 +3452,7 @@ STR_6374 :C
|
|||
STR_6375 :Atracció desconeguda
|
||||
STR_6376 :{WINDOW_COLOUR_2}Vehicle d’atracció:{NEWLINE}{BLACK}{STRINGID} per {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Tipus: {BLACK}{STRINGID} per {STRINGID}
|
||||
STR_6378 :Es va rebent la llista d’objectes: {INT32} / {INT32}
|
||||
STR_6378 :Es va rebent la llista d’objectes:
|
||||
STR_6379 :S’han rebut dades no vàlides.
|
||||
STR_6380 :Actualització disponible!
|
||||
STR_6381 :Uniu-vos al canal de l’OpenRCT2 de Discord!
|
||||
|
@ -3698,7 +3665,32 @@ STR_6588 :Gràcies al Herman Riddering per permetre’ns gravar el 35er Voigt
|
|||
STR_6589 :Mostra els botons de les finestres a l’esquerra
|
||||
STR_6590 :Mostra els botons de les finestres (com ara el de tancar la finestra) a l’esquerra en lloc de mostrar-los a la dreta.
|
||||
STR_6591 :L’empleat ara mateix arregla una atracció i no se’l pot acomiadar.
|
||||
STR_6592 :L’empleat ara mateix fa una inspecció i no se’l pot acomidiar.
|
||||
STR_6592 :L’empleat ara mateix fa una inspecció i no se’l pot acomiadar.
|
||||
STR_6593 :Trau les tanques del parc
|
||||
STR_6594 :Inspecció de casella: Commuta la inclinació del mur
|
||||
STR_6595 :{WINDOW_COLOUR_2}Autor: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Autors: {BLACK}{STRING}
|
||||
STR_6597 :Paràmetre no vàlid
|
||||
STR_6598 :Valor fora del rang
|
||||
STR_6599 :L’element fantasma no s’ha trobat
|
||||
STR_6600 :El globus no s’ha trobat
|
||||
STR_6601 :L’empleat no s’ha trobat
|
||||
STR_6602 :L’atracció no s’ha trobat
|
||||
STR_6603 :L’objecte d’atracció no s’ha trobat
|
||||
STR_6604 :El jugador no s’ha trobat
|
||||
STR_6605 :L’element d’entrada no s’ha trobat
|
||||
STR_6606 :L’element de superfície no s’ha trobat
|
||||
STR_6607 :L’element de casella no s’ha trobat
|
||||
STR_6608 :L’element de via no s’ha trobat
|
||||
STR_6609 :El bloc de via no s’ha trobat
|
||||
STR_6610 :L’element de camí no s’ha trobat
|
||||
STR_6611 :L’element de mur no s’ha trobat
|
||||
STR_6612 :L’element de text de cartell no s’ha trobat
|
||||
STR_6613 :Recarrega l’objecte
|
||||
STR_6614 :El preu de l’entrada al parc no es pot canviar
|
||||
STR_6615 :La via d'aquesta casella necessita aigua
|
||||
STR_6616 :L’acció no és vàlida per a aquest tipus d’empleat
|
||||
STR_6617 :No es pot intercanviar l’element de la casella amb si mateix
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4288,87 +4280,87 @@ STR_DTLS :Construïu les atraccions Six Flags que falten, o creeu els vostres
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Àfrica - Mines de diamants
|
||||
STR_SCNR :Mines d’Àfrica
|
||||
STR_PARK :Mines d’Àfrica
|
||||
STR_DTLS :Heu heretat una mina de diamants que ja no s’explota, on hi heu trobat un diamant valuós. Voleu invertir els diners del diamant per tal de construir un parc temàtic conegut a tot el món.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Àfrica - Oasi
|
||||
STR_SCNR :La follia dels miratges
|
||||
STR_PARK :La follia dels miratges
|
||||
STR_DTLS :S’ha descobert un oasi que seria una bona localització per a fer-hi un parc. El transport fins l’oasi ja està preparat.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Àfrica - Les cascades Victòria
|
||||
STR_SCNR :A la vora
|
||||
STR_PARK :A la vora
|
||||
STR_DTLS :S’ha construït una presa que ofereix energia hidroelèctrica barata i abundant per a fer funcionar un parc. Haureu d’obtenir una valoració del parc prou alta per a poder retornar el préstec de la presa.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antàrtida - Rescat ecològic
|
||||
STR_SCNR :Aventures gèlides
|
||||
STR_PARK :Aventures gèlides
|
||||
STR_DTLS :L’agència mediambiental us ha delegat la tasca de transformar aquesta monstruositat ecològica en forma de refineria de petroli en una atracció turística capdavantera. El terreny és barat però el tipus d’interès del préstec és alt. Podeu vendre els vells edificis per a treure’n profit.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Àsia - Millores turístiques a la Gran Muralla
|
||||
STR_SCNR :La Gran Muralla xinesa
|
||||
STR_PARK :La Gran Muralla xinesa
|
||||
STR_DTLS :Les autoritats han decidit millorar les instal·lacions turístiques al voltant de la Gran Muralla construint-hi un parc temàtic. I no us preocupeu pels diners!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Àsia - Recuperació de la costa japonesa
|
||||
STR_SCNR :Costa d’Okinawa
|
||||
STR_PARK :Costa d’Okinawa
|
||||
STR_DTLS :Un parc s’ha quedat sense espai. L’única opció és construir mar endins, i per això heu demanat un préstec. Les restriccions d’alçada dels edificis es deuen al tipus de fonaments i el risc de terratrèmols.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Àsia - Palau del maharajà
|
||||
STR_SCNR :Parc del maharajà
|
||||
STR_PARK :Parc del maharajà
|
||||
STR_DTLS :El maharajà us ha destinat aquí per tal que proporcioneu entreteniment a l’enorme població local. Construïu un parc inspirat pel palau del maharajà.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Austràlia - Uluru
|
||||
STR_SCNR :L’aventura Uluru
|
||||
STR_PARK :L’aventura Uluru
|
||||
STR_DTLS :Esteu ajudant els aborígens a construir un parc dins del programa de conscienciació cultural. Necessiteu un gran nombre de visitants per a instruir-los en l’herència cultural única de la població indígena.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Austràlia - Diversió a la platja
|
||||
STR_SCNR :L’explosió de la barbacoa de la platja
|
||||
STR_PARK :L’explosió de la barbacoa de la platja
|
||||
STR_DTLS :El parc marítim d’un emprenedor local ha fet fallida. Ja teniu un parc petit que funciona, però ara acabeu de comprar l’altre parc. Desenvolupeu un únic parc combinat.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Festival cultural europeu
|
||||
STR_SCNR :Extravagància europea
|
||||
STR_PARK :Extravagància europea
|
||||
STR_DTLS :Us han dut per a dirigir una atracció cultural europea per als turistes i heu d’augmentar el nombre de visitants per tal de poder retornar la subvenció de la UE a finals de l’actual mandat del parlament europeu.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovació
|
||||
STR_SCNR :Des de les cendres
|
||||
STR_PARK :Des de les cendres
|
||||
STR_DTLS :Aquest parc vell està en mal estat. Heu guanyat una subvenció per a retornar aquesta àrea desafavorida a la seva antiga glòria! Heu de renovar el parc i retornar la subvenció.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nord-amèrica - Illa hawaiana llunyana
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :La gent de Hawaii s’avorreixen només fent surf i busquen alguna cosa més intensa. Heu de construir un parc amb això al cap per tal de mantenir un interès turístic a la zona prou elevat.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nord-amèrica - El Gran Canyó
|
||||
STR_SCNR :Calamitats del Canyó
|
||||
STR_PARK :Calamitats del Canyó
|
||||
STR_DTLS :Heu de construir un parc en el terreny limitat en les dues bandes d’aquest tresor natural. Teniu l’oportunitat de comprar terrenys adjacents dels nadius indis americans. Heu de completar l’objectiu per a alimentar els habitants de la població local.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nord-amèrica - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Sou un magnat de les finances competent en període sabàtic que desitja usar el seu temps en transformar el parc de la ciutat en el «Rollercoaster Heaven». I els diners no importen!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sud-amèrica - La ciutat inca perduda
|
||||
STR_SCNR :La fundació de la ciutat perduda
|
||||
STR_PARK :La fundació de la ciutat perduda
|
||||
STR_DTLS :Per a augmentar el turisme local heu de construir un parc que s’adigui amb els seus voltants i que compleixi amb les restriccions d’alçada.
|
||||
STR_DTLS :Per a augmentar el turisme local heu de construir un parc que s’adigui amb els seus voltants.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sud-amèrica - L’altiplà de la selva tropical
|
||||
STR_SCNR :Diversió a la selva
|
||||
STR_PARK :Diversió a la selva
|
||||
STR_DTLS :En aquesta preciosa selva tropical, l’espai està limitat. Heu d’amuntegar tot el que pugueu en els llocs sense arbres, per tal de que la indústria local de la fusta continuï sent una alternativa viable al turisme.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sud-amèrica - Carnaval de Rio
|
||||
STR_SCNR :Costes del Pão de Açúcar
|
||||
STR_PARK :Costes del Pão de Açúcar
|
||||
STR_DTLS :Dirigiu un petit parc prop de Rio, però el banc demana que se li pagui el préstec. Necessiteu augmentar ràpidament la vostra capacitat recaptatòria per a retornar aquest deute inesperat.
|
||||
|
||||
|
@ -4376,72 +4368,72 @@ STR_DTLS :Dirigiu un petit parc prop de Rio, però el banc demana que se li p
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Medieval - Castell
|
||||
STR_SCNR :Castell del penya-segat
|
||||
STR_PARK :Castell del penya-segat
|
||||
STR_DTLS :Els membres locals de la societat de representacions de batalles es prenen la seva afició seriosament. Us han confiat la tasca de construir un parc temàtic de l’edat mitjana on hi ha el castell de Cliffside.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Medieval - Robin Hood
|
||||
STR_SCNR :El bosc de Sherwood
|
||||
STR_PARK :El bosc de Sherwood
|
||||
STR_DTLS :Amb la intenció de robar als rics i repartir el que aconseguiu entre els pobres, heu decidit que, amb l’ajuda dels vostres «homes feliços», construireu un parc temàtic al bosc de Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Futurístic - Primers encontres
|
||||
STR_SCNR :Extravagància Extraterrestre
|
||||
STR_PARK :Extravagància Extraterrestre
|
||||
STR_DTLS :S’ha descobert vida en un planeta llunyà. Construïu un parc de temàtica alienígena per a recaptar els diners d’aquesta onada d’interès sense precedent.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Futurístic - Món del futur
|
||||
STR_SCNR :Ciutat Gèmini
|
||||
STR_PARK :Ciutat Gèmini
|
||||
STR_DTLS :Mostreu la vostra inventiva visió utòpica del futur. Aixequeu un parc amb dissenys futurístics que incorpori atraccions avantguardistes.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitològic - Plató d’animatrònics
|
||||
STR_SCNR :Relíquies animatròniques
|
||||
STR_PARK :Relíquies animatròniques
|
||||
STR_DTLS :Us han encomanat la tasca de fer funcionar i millorar un parc temàtic ja existent que s’ha construït en un vell plató de cinema. Construïu un tribut als animadors pioners de l’stop-motion que van portar per primer cop criatures mítiques a la vida a la gran pantalla.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitològic - El bressol de la civilització
|
||||
STR_SCNR :Bogeria mitològica
|
||||
STR_PARK :Bogeria mitològica
|
||||
STR_DTLS :Sou el propietari d’una illa amb un important valor arqueològic. Heu decidit finançar la seva preservació construint-hi un parc temàtic basat en la rica herència mitològica de l’àrea.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistòric - Després de l’asteroide
|
||||
STR_SCNR :La matança del cràter
|
||||
STR_PARK :La matança del cràter
|
||||
STR_DTLS :Sou el propietari d’un vell cràter polsegós causat per un meteorit. Amb el vertader esperit emprenedor, heu decidit construir un parc amb la temàtica de l’asteroide i convertir aquestes terres aparentment poc valuoses en una fortuna considerable.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistòric - Safari juràssic
|
||||
STR_SCNR :Atracciósaurus
|
||||
STR_PARK :Atracciósaurus
|
||||
STR_DTLS :Us han assignat la tasca de construir un parc de l’era juràssica. Per tal d’optimitzar l’accés dels visitants a les exhibicions de plantes i animals exòtics, haureu de construir atraccions per tota la vall.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistòric - L’edat de pedra
|
||||
STR_SCNR :Passeig rocós
|
||||
STR_PARK :Passeig rocós
|
||||
STR_DTLS :Per a frustrar els plans dels constructors d’una autopista i per a ajudar a preservar els misteriosos i antics cercles de pedra, haureu de construir un parc temàtic amb l’edat de pedra com a principal motiu i aconseguir treure’n beneficis. No obstant, atreure visitants pot suposar un repte, ja que el terreny és un poc inhòspit.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - L’illa presó
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :La infame Illa Presó, la població de la qual fa molt temps creixia gràcies a contrabandistes i estafadors, està en venda. Heu decidit convertir-la en una atracció turística de primer ordre, i no us preocupeu pels diners.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Els «Roaring Twenties» - La Copa Schneider
|
||||
STR_SCNR :Costa Schneider
|
||||
STR_PARK :Costa Schneider
|
||||
STR_DTLS :El 25è aniversari de la victòria del vostre avi a la Copa Schneider serà d’aquí pocs anys. L’honorareu construint un parc on la temàtica serà la famosa cursa d’hidroavions.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Els «Roaring Twenties» - Gratacels
|
||||
STR_SCNR :Metròpoli
|
||||
STR_PARK :Metròpoli
|
||||
STR_DTLS :Disposeu d’un solar buit prop de la zona pobra de la població. Per a treure profit d’aquests terrenys urbans, construïu un parc en forma de gratacels inspirat en el desorbitat art decó dels anys vint.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Hi ha un gran festival anual de música als teus terrenys. Construïu-hi un parc temàtic a la moda per a mantenir els esperits lliures entretinguts.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Revival del Rock ’n’ Roll
|
||||
STR_PARK :Revival del Rock ’n’ Roll
|
||||
STR_DTLS :Aquest parc temàtic ha vist millors dies. Ajudeu al propietari a donar-li un toc rock ’n’ roll retro i convertiu el lloc en un lloc pròsper.
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ STR_0768 :Údržbář {INT32}
|
|||
STR_0769 :Mechanik {INT32}
|
||||
STR_0770 :Hlídač {INT32}
|
||||
STR_0771 :Maskot {INT32}
|
||||
STR_0777 :Nepojmenovaný park{POP16}{POP16}
|
||||
STR_0777 :Nepojmenovaný park
|
||||
STR_0778 :Nápis
|
||||
STR_0779 :1.
|
||||
STR_0780 :2.
|
||||
|
@ -1742,12 +1742,12 @@ STR_2382 :Země
|
|||
STR_2383 :Vodní plochy
|
||||
STR_2384 :{WINDOW_COLOUR_2}Cíl scénáře:
|
||||
STR_2385 :{BLACK}žádný
|
||||
STR_2386 :{BLACK}Mít v parku alespoň {COMMA16} návštěvníků na konci {MONTHYEAR}, s hodnocením parku alespoň 600
|
||||
STR_2386 :{BLACK}Mít v parku alespoň {COMMA32} návštěvníků na konci {MONTHYEAR}, s hodnocením parku alespoň 600
|
||||
STR_2387 :{BLACK}Dosáhnout hodnoty parku alespoň {POP16}{POP16}{CURRENCY} na konci {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Příjemnou zábavu!
|
||||
STR_2389 :{BLACK}Postav ten nejlepší {STRINGID}!
|
||||
STR_2390 :{BLACK}Mít v parku 10 druhů kolotočů v provozu, každý s hodnotou zábavnosti alespoň 6.00
|
||||
STR_2391 :{BLACK}Mít v parku alespoň {COMMA16} návštěvníků a zároveň nikdy nenechat hodnocení parku spadnout pod 700!
|
||||
STR_2391 :{BLACK}Mít v parku alespoň {COMMA32} návštěvníků a zároveň nikdy nenechat hodnocení parku spadnout pod 700!
|
||||
STR_2392 :{BLACK}Dosáhnout měsíčního příjmu z lístků na atrakce alespoň {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}{BLACK}Mít v parku 10 druhů kolotočů v provozu, každý s hodnotou zábavnosti alespoň 7.00 a délkou alespoň {LENGHT}
|
||||
STR_2394 :{BLACK}Dokončit všech 5 rozestavěných horských drah tak, aby každá dosahovala hodnocení vzrušení alespoň {POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2102,39 +2102,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Nepodařilo se načíst soubor…
|
||||
STR_3011 :Soubor obsahuje neplatná data
|
||||
STR_3012 :Autodrom
|
||||
STR_3013 :Tržnice
|
||||
STR_3014 :Římská fanfára
|
||||
STR_3015 :Orient
|
||||
STR_3016 :Marťan
|
||||
STR_3017 :Jungle bubny
|
||||
STR_3018 :Egypt
|
||||
STR_3019 :Země hraček
|
||||
STR_3020 :
|
||||
STR_3021 :Vesmír
|
||||
STR_3022 :Horor
|
||||
STR_3023 :Techno
|
||||
STR_3024 :Mírná hudba
|
||||
STR_3025 :Letní hudba
|
||||
STR_3026 :Vodní
|
||||
STR_3027 :Divoký západ
|
||||
STR_3028 :Jurský styl
|
||||
STR_3029 :Rock
|
||||
STR_3030 :Ragtime
|
||||
STR_3031 :Fantasy
|
||||
STR_3032 :Rock 2
|
||||
STR_3033 :Led
|
||||
STR_3034 :Sníh
|
||||
STR_3035 :Vlastní hudba 1
|
||||
STR_3036 :Vlastní hudba 2
|
||||
STR_3037 :Středověk
|
||||
STR_3038 :Urban
|
||||
STR_3039 :Varhany
|
||||
STR_3040 :Mechanika
|
||||
STR_3041 :Moderní
|
||||
STR_3042 :Piráti
|
||||
STR_3043 :Rock 3
|
||||
STR_3044 :Sladkosti
|
||||
STR_3045 :Vyberte styl muziky, která bude hrát
|
||||
STR_3047 :Místní správa zakazuje úpravy a zrušení této atrakce
|
||||
STR_3048 :Reklamní kampaně zakázány místní správou
|
||||
|
@ -2361,7 +2328,7 @@ STR_3305 :{WINDOW_COLOUR_2}Měsíční příjem:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Měsíční zisk:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimální délka:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Nadšení:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Atrakce, které je nutno zachovat:
|
||||
|
@ -2920,7 +2887,7 @@ STR_5755 :Nesprávná verze hry (Server používá {STRING})
|
|||
STR_5756 :Špatné heslo
|
||||
STR_5757 :Server je plný
|
||||
STR_5758 :{OUTLINE}{GREEN}Hráč {STRING} se připojil do hry
|
||||
STR_5759 :Stahování mapy … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Stahování mapy …
|
||||
STR_5760 :Hongkongský dolar (HK$)
|
||||
STR_5761 :Tchajwanský dolar (NT$)
|
||||
STR_5762 :Čínský jüan (CN¥)
|
||||
|
@ -3483,7 +3450,7 @@ STR_6374 :K
|
|||
STR_6375 :Neznámá atrakce
|
||||
STR_6376 :{WINDOW_COLOUR_2}Vozy atrakce:{NEWLINE}{BLACK}{STRINGID} pro {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Typ: {BLACK}{STRINGID} pro {STRINGID}
|
||||
STR_6378 :Stahování seznamu objektů: {INT32} / {INT32}
|
||||
STR_6378 :Stahování seznamu objektů:
|
||||
STR_6379 :Stažena neplatná data
|
||||
STR_6380 :Dostupná aktualizace!
|
||||
STR_6381 :Připojte se na OpenRCT2 Discord!
|
||||
|
@ -3770,87 +3737,87 @@ STR_DTLS :Postavte chybějící Six Flags atrakce, nebo vytvořte své vlastn
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :Zdědili jste diamantový důl mimo provoz a nalezli hodnotný diamant. Rozhodli jste se tedy investovat peníze do stavby světoznámého zábavního parku.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :Byla objevena pouštní oáza, která nabízí nádherné místo pro zábavní park. Přeprava do oázy zajištěna.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :Postavená přehrada zajišťuje velké množství levné hydroelektrické energie pro váš zábavní park. Dosáhněte vysokého hodnocení parku, abyste snáze splatili půjčku na přehradu.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :Obrátili se na vás ochranáři životního prostředí s prosbou, abyste přeměnili neekologickou rafinerii na vysoce navštěvovanou turistickou destinací. Pozemky jsou levné, ale úrok z půjčky vysoký. Zkuste prodat staré budovy.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :Místní správa se rozhodla podpořit cestovní ruch a vytvořit Velkou zeď stavbou přilehlého zábavního parku. Peníze nehrají roli.
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :Současnému zábavnímu parku došlo místo. Jedinou možností je začít stavět na moři, takže budete potřebovat velkou půjčku. V této oblasti jsou častá zemětřesení, proto nesmíte stavět vysoké budovy.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :Mahárádža vás vybral, abyste přinesli zábavu pro místní velkou populaci. Postavte zábavní park inspirovaný Mahárádžovým palácem
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :Pomáháte domorodcům postavit zábavní park pro upozornění na jejich kulturu. Musíte poučit co nejvíce lidí o unikátní kultuře domorodých obyvatel.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :Místní mořský svět bankrotoval a vy jste ho odkoupili. Vám už ale jeden malý park patří - postavte tedy ze dvou malých parků jeden obrovský!
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :Byli jste přizváni, abyste převzali kontrolu nad Evropskou Kulturní Návštěvnickou Atrakcí a musíte zajistit nárůst návštěvnosti, jinak nebudete moci zaplatit za EU dotaci do konce vládního období.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :Evropská Unie vám dala grant, abyste zajistil obnovu starého, neudržovaného zábavního parku a přinesl zpět jeho tehdejší slávu. Musíte celý park renovovat a splatit grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :N. America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :Havajané jsou znudění ze surfování a chtějí zažít něco adrenalinovějšího. Postavte zábavní park a nezapomeňte na to - pomůže vám to s dosažením dobrého hodnocení parku.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :Omezený terén vás nutí vybudovat zábavní park po stranách národní památky. Můžete ale od Indiánů nakupovat pozemky. Abyste si udrželi hodnocení místní správy, splňte cíl!
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Jste úspěšný obchodní magnát, který si přeje přetvořit městský park v místo nebeských horských drah. Peníze nehrají žádnou roli!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :Abyste zvýšili počet místních turistů, musíte postavit zábavní park, který zapadá do okolí a nemá žádné výškové budovy.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Prostor je limitovaný drahocenným deštným pralesem - musíte toho namáčknout co nejvíce do dosavadních pozemků, abyste mohli konkurovat místním dřevorubeckým společnostem.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :Provozujete malý zábavní park poblíž Ria, ale banka chce vrátit půjčku. Musíte rychle zvýšit vaše příjmy, abyste mohli dluh splatit.
|
||||
|
||||
|
@ -3858,72 +3825,72 @@ STR_DTLS :Provozujete malý zábavní park poblíž Ria, ale banka chce vrát
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Dark Age - Castle
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Členové místní skupiny pro rekonstrukci historických bitev berou své hobby trochu moc vážně. Svěřili vám stavbu starověkého zábavního parku na území Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Dark Age - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :Abyste mohli brát bohatým a dávat chudým, rozhodli jste se postavit zábavní park v Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Future - First Encounters
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Byl objeven život na vzdálené planetě. Postavte mimozemsky zaměřený zábavní park, abyste se svezli na vlně nového nepředvídaného zájmu.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Future - Future World
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Ukažte svou vynalézavou, utopickou vizi budoucnosti - přijďte s futuristickým zábavním parkem, který zahrnuje ty nejnovější atrakce.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythological - Animatronic Film Set
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :Byl vám zadán úkol správy a vylepšování stávajícího zábavního parku, který byl postaven na starém filmařském místě. Vybudujte odkaz průkopníkům-animátorům, kteří poprvé přinesli mýtické postavy k životu na stříbrném plátně.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythological - Cradle of Civilisation
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :Vlastníte ostrov velké archeologické hodnoty. Rozhodli jste se podpořit jeho zachování vybudováním zábavního parku založeném na mytologii tohoto místa.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoric - After the Asteroid
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :Vlastníte velký kráter a jakožto opravdový průkopník jste se rozhodl vybudovat zábavní park ve stylu asteroidů a přeměnit tuto zdánlivě bezcennou půdu v profitující a vyhledávanou oblast.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoric - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :Byli jste zaúkolováni stavbou zábavního parku ve stylu období Jura. Pro zlepšení přístupu návštěvníků k exotickým rostlinám a zvířatům budete muset postavit mosty do a přes údolí.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoric - Stone Age
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :Abyste se vyhnuli stavbě dálnice a zachovali mysteriózní prehistorické kamenné kruhy, budete muset postavit zábavní park ve stylu doby kamenné a začít vydělávat. Nicméně přilákat návštěvníky bude těžké, protože terén je opravdu nehostinný.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Prison Island
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Nechvalně proslavená ostrovní věznice - jejíž populace jednou překypovala pašeráky a vyděrači - je nyní na prodej. Rozhodli jste se jí přetvořit na velkou turistickou atrakci - na peníze berte ohled!
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :75. leté výročí výhry Schneider Cup vašeho dědečka se blíží a zbývá už jen pár let. Poctíte jeho úspěch stavbou zábavního parku založeném na proslulém závodu hydroplánů.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Skyscrapers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Vlastníte volný pozemek v městské oblasti téměř bez růstu. Abyste vymačkali co nejvíce z vaší nemovitosti, postavíte mrakodrap-zábavní park inspirovaný architekturou dvacátých let.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Obrovský každoroční hudební festival se bude konat na vašem pozemku. Postavte pořádný park, abyste zabavili návštěvníky.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Rock ’n’ Roll Revival
|
||||
STR_PARK :Rock ’n’ Roll Revival
|
||||
STR_DTLS :Tento stárnoucí zábavní park už viděl lepší dny. Pomozte majiteli dát parku retro rock ’n’ roll vzhled a udělat z něho vyhledávané místo.
|
||||
|
||||
|
|
|
@ -96,6 +96,7 @@ STR_0091 :Ukendt Forlystelse (59)
|
|||
STR_0092 :LIM Accelereret Rutschebane
|
||||
STR_0093 :Hybrid Rutschebane
|
||||
STR_0094 :Enkelt skinde rutchebane
|
||||
STR_0095 :Alpin rutchebane
|
||||
STR_0096 :Klassisk træ rutsjebane
|
||||
STR_0512 :En kompakt rutschebane med en spiral stigning og bløde, snoede fald.
|
||||
STR_0513 :En loopende rutschebane hvor passagerne er i en stående position
|
||||
|
@ -178,13 +179,14 @@ STR_0600 :Selvkørende togvogne kører igennem en sen snoet bane af spor
|
|||
STR_0602 :Rutsjebanetog accelereres ud af stationen af lineære induktionsmotorer for at suse gennem snoede inversioner
|
||||
STR_0603 :En rutsjebane i træ stil, med stål spor, Med stejle fald og hurtige sving.
|
||||
STR_0604 :Gæster sider i en enkelt række, på et smalt monorail spor, imens de suser igennem skarpe sving ,snoninger og hurtige vridninger.
|
||||
STR_0605 :Ryttere kælker ned ad en bugtende stålbane og bremser for at kontrollere deres hastighed
|
||||
STR_0606 :En ældre stils trærutsjebane med en hurtig og ujævn tur med masser af luft tid, laterale G'er, og designet til at føles som ‘ude-af-kontrol’
|
||||
STR_0767 :Gæst {INT32}
|
||||
STR_0768 :Handymand {INT32}
|
||||
STR_0769 :Mekaniker {INT32}
|
||||
STR_0770 :Sikkerhedsvagt {INT32}
|
||||
STR_0771 :Entertainer {INT32}
|
||||
STR_0777 :Unavngivet park{POP16}{POP16}
|
||||
STR_0777 :Unavngivet park
|
||||
STR_0778 :Skilt
|
||||
STR_0779 :1.
|
||||
STR_0780 :2.
|
||||
|
@ -1735,12 +1737,12 @@ STR_2382 :Land
|
|||
STR_2383 :Vand
|
||||
STR_2384 :{WINDOW_COLOUR_2}Dit mål:
|
||||
STR_2385 :{BLACK}Ingen
|
||||
STR_2386 :{BLACK}At have mindst {COMMA16} gæster i parken, ved udgangen af {MONTHYEAR}, og med en park vurdering på mindst 600
|
||||
STR_2386 :{BLACK}At have mindst {COMMA32} gæster i parken, ved udgangen af {MONTHYEAR}, og med en park vurdering på mindst 600
|
||||
STR_2387 :{BLACK}At opnå en Parkværdi på mindst {POP16}{POP16}{CURRENCY} ved udgangen af {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Hav det sjovt!
|
||||
STR_2389 :{BLACK}Byg den bedste {STRINGID} du kan!
|
||||
STR_2390 :{BLACK}At have 10 forskellige typer rutschebaner i gang i parken på samme tid, Hver med en spændings vurdering over 6.00
|
||||
STR_2391 :{BLACK}At have mindst {COMMA16} gæster i parken. Du må ikke lade park vurderingen flade under 700 på noget tidspunkt!
|
||||
STR_2391 :{BLACK}At have mindst {COMMA32} gæster i parken. Du må ikke lade park vurderingen flade under 700 på noget tidspunkt!
|
||||
STR_2392 :{BLACK}At opnå en månedlig indkomst fra forlystelser på mindst {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}At have 10 forskellige typer rutschebaner i gang i parken på samme tid, hver med en minimums længde på {LENGTH}, og en spændings vurdering på mindst 7.00
|
||||
STR_2394 :{BLACK}At færdiggøre alle 5 af de delvist færdige byggede rutschebaner i denne park, design dem til at have at opnå en spændings vurdering på mindst {POP16}{POP16}{COMMA2DP32} hver
|
||||
|
@ -1958,7 +1960,7 @@ STR_2749 :Mit nye scenarie
|
|||
STR_2750 :Flyt alle enheder til toppen
|
||||
STR_2751 :Flyt alle enheder til bunden
|
||||
STR_2752 :Ryd græs
|
||||
STR_2753 :Slået græs
|
||||
STR_2753 :Slå græs
|
||||
STR_2754 :Vand planter
|
||||
STR_2755 :Reparer hærværk
|
||||
STR_2756 :Fjern affald
|
||||
|
@ -2095,39 +2097,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Kan ikke indlæse fil…
|
||||
STR_3011 :Filen indeholder ugyldige data
|
||||
STR_3012 :Radiobil musik stil
|
||||
STR_3013 :Karnevalsmusik stil
|
||||
STR_3014 :Romersk fanfare stil
|
||||
STR_3015 :Orientalsk stil
|
||||
STR_3016 :Maritim stil
|
||||
STR_3017 :Jungletrommer stil
|
||||
STR_3018 :Egyptisk stil
|
||||
STR_3019 :Legetøjs land stil
|
||||
STR_3020 :
|
||||
STR_3021 :Rum stil
|
||||
STR_3022 :Gyser stil
|
||||
STR_3023 :Techno stil
|
||||
STR_3024 :Rolig stil
|
||||
STR_3025 :Sommer stil
|
||||
STR_3026 :Vand stil
|
||||
STR_3027 :Western stil
|
||||
STR_3028 :Jurassic stil
|
||||
STR_3029 :Rock stil
|
||||
STR_3030 :Ragtime stil
|
||||
STR_3031 :Fantasy stil
|
||||
STR_3032 :Rock stil 2
|
||||
STR_3033 :Is stil
|
||||
STR_3034 :Sne stil
|
||||
STR_3035 :Valgfrit musik 1
|
||||
STR_3036 :Valgfrit musik 2
|
||||
STR_3037 :Middelalder stil
|
||||
STR_3038 :Undergrunds stil
|
||||
STR_3039 :Orgel stil
|
||||
STR_3040 :Mekanisk stil
|
||||
STR_3041 :Moderne stil
|
||||
STR_3042 :Pirat stil
|
||||
STR_3043 :Rock stil 3
|
||||
STR_3044 :Slik stil
|
||||
STR_3045 :Vælg musikstilen der skal spilles
|
||||
STR_3047 :Lokal myndigheder forbyder nedrivning eller ændringer af denne forlystelse
|
||||
STR_3048 :Marketingkampagner forbydes af de lokale myndigheder
|
||||
|
@ -2354,7 +2323,7 @@ STR_3305 :{WINDOW_COLOUR_2}Månedsinkomst:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Månedsprofit:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimum længde:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Spændings vurdering:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}forlystelser/attraktioner under bevaringsordre:
|
||||
|
@ -2914,7 +2883,7 @@ STR_5755 :Forkert spil version (Serveren kører med {STRING})
|
|||
STR_5756 :Ugyldig kode
|
||||
STR_5757 :Serveren er fyldt
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} har sluttet sig til spillet
|
||||
STR_5759 :Henter kortet … ({INT32} / {INT32}) KB
|
||||
STR_5759 :Henter kortet …
|
||||
STR_5760 :Hong Kong Dollars (HK$)
|
||||
STR_5761 :New Taiwan Dollar (NT$)
|
||||
STR_5762 :Chinese Yuan (CN¥)
|
||||
|
@ -3278,8 +3247,8 @@ STR_6133 :Adgang til forlystelser og sceneri, der endnu ikke er opfundet
|
|||
STR_6134 :Ryd sceneri
|
||||
STR_6135 :Klienten sendte en ugyldig anmodning
|
||||
STR_6136 :Serveren sendte en ugyldig anmodning
|
||||
STR_6137 :OpenRCT2, en gratis, open source klon af Roller Coaster Tycoon 2.
|
||||
STR_6138 :OpenRCT2 er et samarbejde imellem mange forfattere, en komplet liste kan findes i “contributors.md”. Du kan finde flere oplysninger på http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6137 :OpenRCT2, en gratis, open source genskabelse af Roller Coaster Tycoon 2.
|
||||
STR_6138 :OpenRCT2 er et samarbejde imellem mange forfattere, en komplet liste kan findes under “bidragudere” knappen. Du kan finde flere oplysninger på http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6139 :Alle produkt- og firmanavne tilhører deres respektive indehavere. Brug af dem indebærer ikke nogen tilknytning til eller godkendelse af dem.
|
||||
STR_6140 :Ændringslog…
|
||||
STR_6141 :RCT1 bund værktøjslinje
|
||||
|
@ -3478,7 +3447,7 @@ STR_6374 :R
|
|||
STR_6375 :Ukendt forlystelse
|
||||
STR_6376 :{WINDOW_COLOUR_2}Vogn:{NEWLINE}{BLACK}{STRINGID} til {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID} til {STRINGID}
|
||||
STR_6378 :Henter objektliste: {INT32} / {INT32}
|
||||
STR_6378 :Henter objektliste:
|
||||
STR_6379 :Modtog ugyldig data
|
||||
STR_6380 :Opdatering tilgængelig!
|
||||
STR_6381 :Deltag i OpenRCT2 Discord gruppe!
|
||||
|
@ -3585,14 +3554,17 @@ STR_6482 :Gennemsigtigheds Indstillinger
|
|||
STR_6483 :Åben gennemsigtigheds indstillinger
|
||||
STR_6484 :Skift gennemsigtig vegetation
|
||||
STR_6485 :Skift gennemsigtig køretøjer
|
||||
STR_6486 :Skift gennemsigtig gæster
|
||||
STR_6487 :Skift gennemsigtig personale
|
||||
STR_6486 :Skift skjul gæster
|
||||
STR_6487 :Skift skjul personale
|
||||
STR_6488 :{RED}Gæster klager over længden af køerne i din park.{NEWLINE}Overvej at forkorte problematiske køer eller øge forlystelsernes gennemstrømning.
|
||||
STR_6489 :Fejl: Inkompatibel Park Version
|
||||
STR_6490 :Advarsel: Semi-kompatibel Park Version
|
||||
STR_6491 :Denne park blev gemt i en nyere version af OpenRCT2. Parken er v{INT32} og kræver mindst v{INT32}. Du benytter v{INT32}
|
||||
STR_6492 :Denne park er gemt i en ældre version af OpenRCT2, og kan ikke åbnes med denne version af OpenRCT2. Parken er v{INT32}.
|
||||
STR_6493 :Denne park blev gemt i en nyere version af OpenRCT2, nogle data kan gå tabt. Parken er gemt i v{INT32}. Du benytter v{INT32}
|
||||
STR_6494 :Gruppér efter type
|
||||
STR_6495 :Gruppérer efter forlystelsestyper efter type istedet for at vise hver vogn for seperat.
|
||||
STR_6496 :{WINDOW_COLOUR_2}{STRINGID}
|
||||
STR_6497 :Klik på et felt for at vise dets felt elementer.{NEWLINE}Ctrl + Klik et felt element for at vælge det direkte.
|
||||
STR_6498 :Aktiver for at fastholde kvadratisk kortfacon.
|
||||
STR_6499 :Køretøjstype understøttes ikke af spor design formatet
|
||||
|
@ -3625,7 +3597,7 @@ STR_6525 :Genindlæs alle aktiver i spillet med de aktiverede materiel pakker
|
|||
STR_6526 :(basis grafik, musik og lydeffekter)
|
||||
STR_6527 :Konkurrencer
|
||||
STR_6528 :Ugyldig spor parameter!
|
||||
STR_6529 :Invalid farve skema parameter!
|
||||
STR_6529 :Ugyldig farve skema parameter!
|
||||
STR_6530 :User Created Expansion Set
|
||||
STR_6531 :The Time Machine
|
||||
STR_6532 :Katy’s Dreamworld
|
||||
|
@ -3633,6 +3605,93 @@ STR_6533 :{WINDOW_COLOUR_2}Spændings Faktor: {BLACK}-{COMMA16}%
|
|||
STR_6534 :{WINDOW_COLOUR_2}Intensitets Faktor: {BLACK}-{COMMA16}%
|
||||
STR_6535 :{WINDOW_COLOUR_2}Kvalme Faktor: {BLACK}-{COMMA16}%
|
||||
STR_6536 :Denne park var gemt i en senere version af OpenRCT2. Parken var gemt i v{INT32}, du benytter v{INT32}.
|
||||
STR_6537 :Tillad almindelige stier som køområde
|
||||
STR_6538 :Viser almindelige gangstier i rullemenuen Køer i sti vinduet.
|
||||
STR_6539 :Bremser lukket
|
||||
STR_6540 :{WINDOW_COLOUR_2}Særlig tak til følgende virksomheder for at tillade deres lighed:
|
||||
STR_6541 :{WINDOW_COLOUR_2}Rocky Mountain Construction Group, Josef Wiegand GmbH & Co. KG
|
||||
STR_6542 :Bidragydere
|
||||
STR_6543 :Bidragydere…
|
||||
STR_6544 :Lån kan ikke være negativ!
|
||||
STR_6545 :Brug RCT1 renteberegning
|
||||
STR_6546 :Brug renteberegningsalgoritmen for RollerCoaster Tycoon 1, som brugte en fast procentsats på ca. 1,33%.
|
||||
STR_6547 :Alt Sceneri
|
||||
STR_6548 :Vis rækværk ved kryds
|
||||
STR_6549 :Kompatibilitetsobjekter kan ikke vælges!
|
||||
STR_6550 :Denne post er inkluderet for bagudkompatibilitet, med gamle eller beskadigede genstande. Det kan ikke vælges, kun fravælges.
|
||||
|
||||
STR_6551 :Militærgrøn
|
||||
STR_6552 :Honningdug
|
||||
STR_6553 :Solbrun
|
||||
STR_6554 :Rødbrun
|
||||
STR_6555 :Koral rosa
|
||||
STR_6556 :Skov grøn
|
||||
STR_6557 :Chartreuse
|
||||
STR_6558 :Jæger grøn
|
||||
STR_6559 :Celadon
|
||||
STR_6560 :Limegrøn
|
||||
STR_6561 :Sepia
|
||||
STR_6562 :Fersken
|
||||
STR_6563 :Singrøn
|
||||
STR_6564 :Blågrøn
|
||||
STR_6565 :Havskum grøn
|
||||
STR_6566 :Violet
|
||||
STR_6567 :Lavendel
|
||||
STR_6568 :Pastel orange
|
||||
STR_6569 :Dybt vand
|
||||
STR_6570 :Pastel pink
|
||||
STR_6571 :Umber
|
||||
STR_6572 :Beige
|
||||
STR_6573 :Usynlig
|
||||
STR_6574 :Tomrum
|
||||
STR_6575 :Tillad specielle farveskemaer
|
||||
STR_6576 :Tilføjer specielle farver til rullemenuen Farver
|
||||
STR_6577 :Blokbremse hastighed
|
||||
STR_6578 :Indstil hastighedsgrænse for blokbremser. I bloksektionstilstand er tilstødende bremser med en langsommere hastighed forbundet med blokbremsen.
|
||||
STR_6579 :Blokbremser indstilles til standardhastighed, når de gemmes som spordesign
|
||||
STR_6580 :Nulstil
|
||||
STR_6581 :Er du sikker på, at du vil nulstille alle genvejstaster på denne fane?
|
||||
STR_6582 :Åbn vinduet med tastaturgenveje
|
||||
STR_6583 :{WINDOW_COLOUR_2}Baglænskørende tog
|
||||
STR_6584 :Vælg for at køre tog baglæns
|
||||
STR_6585 :Kan ikke foretage ændringer…
|
||||
STR_6586 :OpenRCT2
|
||||
STR_6587 :OpenRCT2 Titelmelodi er et værk af Allister Brimble,{NEWLINE}licenseret CC BY-SA 4.0.
|
||||
STR_6588 :Tak til Herman Riddering for at give os mulighed for at optage 35er Voigt.
|
||||
STR_6589 :Vis vinduesknapperne til venstre
|
||||
STR_6590 :Vis vinduesknapperne (f.eks. for at lukke vinduet) til venstre for titellinjen i stedet for til højre.
|
||||
STR_6591 :Medarbejder er i øjeblikket ved at ordne en tur og kan ikke fyres.
|
||||
STR_6592 :Medarbejder inspicerer i øjeblikket en forlystelse og kan ikke fyres.
|
||||
STR_6593 :Fjern parkhegn
|
||||
STR_6594 :Fliseinspektør: Skift væghældning
|
||||
STR_6595 :{WINDOW_COLOUR_2}Forfatter: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Forfattere: {BLACK}{STRING}
|
||||
STR_6597 :Ugyldig parameter
|
||||
STR_6598 :Værdi uden for grænseområde
|
||||
STR_6599 :Spøgelse element ikke fundet
|
||||
STR_6600 :Ballon ikke fundet
|
||||
STR_6601 :Ansat ikke fundet
|
||||
STR_6602 :Forlystelse ikke fundet
|
||||
STR_6603 :Forlystes objekt enhed ikke fundet
|
||||
STR_6604 :Spiller ikke fundet
|
||||
STR_6605 :Indgangs element ikke fundet
|
||||
STR_6606 :Overflade element ikke fundet
|
||||
STR_6607 :Flise element ikke fundet
|
||||
STR_6608 :Spor element ikke fundet
|
||||
STR_6609 :Spor blok ikke fundet
|
||||
STR_6610 :Sti element ikke fundet
|
||||
STR_6611 :Væg element ikke fundet
|
||||
STR_6612 :Banner element ikke fundet
|
||||
STR_6613 :Genindlæs objekt
|
||||
STR_6614 :Kan ikke ændre parkens entré pris
|
||||
STR_6615 :Spor på dette felt kræver vand
|
||||
STR_6616 :Handlingen er ugyldig for denne medarbejdertype
|
||||
STR_6617 :Kan ikke bytte felt element med sig selv
|
||||
STR_6618 :Objektet kan ikke begrænses eller afgrænses…
|
||||
STR_6619 :Objekttype kan ikke begrænses!
|
||||
STR_6620 :Objektet blev ikke fundet!
|
||||
STR_6621 :Begræns
|
||||
STR_6622 :Begræns objekt til scenarieeditoren og sandkassetilstanden.
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4076,16 +4135,6 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
###########
|
||||
# Scenery #
|
||||
###########
|
||||
|
||||
## Start OpenRCT2 Official
|
||||
[TTPIRF05]
|
||||
STR_NAME :Tag
|
||||
|
||||
## End OpenRCT2 Official
|
||||
|
||||
###############################################################################
|
||||
## RCT2 Scenarios
|
||||
###############################################################################
|
||||
|
@ -4223,87 +4272,87 @@ STR_DTLS :Byg de manglende Six Flags forlystelser, eller opret dine egne desi
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afrika - Afrikansk Diamant Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :Du arvede en nedlagt diamantmine og fandt en værdifuld diamant. Du beslutter dig for at investere de penge til at bygge en verdensberømt forlystelsespark.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afrika - Oase
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :En ørken oase er blevet opdaget og ville være en smuk beliggenhed for en park. Der er sørget for transport til oasen.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afrika - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :En dæmning er blevet bygget, som tilbyder rigelige, billige vandkraft til at drive en park. Du er nødt til at nå en høj park værdi for at hjælpe med tilbagebetalingen af lånet til dæmningen.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarktis - Økologisk Genanvendelse
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :Miljøagenturet har henvendt sig til dig for at omdanne et gammelt olieraffinaderi økologisk ‘øjebæ’ til en top turistattraktion. Jord er billigt, men lånerenterne er høje. Du kan sælge de gamle bygninger til genanvendelse.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asien - Den Kinesiske Mur Turistforbedring
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :Myndighederne har besluttet at forbedre turismen omkring Den Kinesiske Mur ved at bygge en forlystelsespark på den tilstødende jord. Penge er ikke noget problem!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asien - Japansk kystområde
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :En eksisterende park er løbet tør for plads. Din eneste mulighed er at bygge ud i havet, og så har du taget et lån. Højdebegrænsninger på din bygning håndhæves på grund af fundamenter og jordskælvsrisiko.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asien - Maharaja Palads
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :Du er blevet bestilt af Maharajaen til at bringe underholdning til den store lokale befolkning. Byg en park inspireret af Maharajas palads.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasien - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :Du hjælper aboriginal folk, til at bygge en park, som en del af en kulturel bevidsthed program. Du skal få et stort antal gæster, til at uddanne dem i den unikke arv af det oprindelige folk.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasien - Sjov på Stranden
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :En lokal iværksætters havlivs park er gået fallit. Du driver allerede en lille park og køber den anden park fra byggefirmaet. Udvikl den til en stor kombineret park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Europæisk kulturfestival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :De er blevet hentet ind for at overtage, en europæisk kulturel turistattraktion, og skal øge antallet af gæster, for at kunne betale EU-tilskuddet tilbage, inden udgangen af den nuværende valgperiode i Europa-Parlamentet.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :En gammel park er gået i forfald. De får et EU-tilskud til at bringe dette ugunstigt stillede område, tilbage til sin tidligere herlighed! Du er nødt til at renovere parken, og tilbagebetale tilskuddet.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nordamerika - Ekstrem Hawaii-ø
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :Befolkningen i Hawaii er træt af surfing, og er på udkig efter noget mere intenst. Du skal bygge en park, med dette i tankerne for at holde områdets turistattraktion rating i top.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nordamerika - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :Du er nødt til at bygge en park på begrænset jord, på hver side af denne naturlige skat - du har mulighed for at købe nabojord fra indianerne. Du er nødt til at fuldføre målet om at opretholde den lokale bys befolkning.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nordamerika - Rutshebane Himmel
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Du er en succesfuld forretningsmagnat igang med flere sabbatår, der ønsker at bruge denne tid på at omdanne byparken til Rollercoaster Heaven. Penge er ikke noget problem!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sydamerika - Inka-rigets fortabte by
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :For yderligere at øge den lokale turisme skal du konstruere en park, der er i harmoni med sine omgivelser, og har højdebegrænsninger.
|
||||
STR_DTLS :For yderligere at øge den lokale turisme skal du konstruere en park, der er i harmoni med sine omgivelser.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sydamerica - Regnskovs Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Pladsen er begrænset i den dyrebare regnskov - du skal proppe så meget som muligt ind i den eksisterende rydning for at give et levedygtigt alternativ til den lokale træindustri.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sydamerica - Karneval i Rio
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :Du driver en lille park nær Rio, men banken har indkaldt dit lån. Du er nødt til hurtigt at øge din indtjeningsevne, til at tilbagebetale denne uventede gæld.
|
||||
|
||||
|
@ -4311,72 +4360,72 @@ STR_DTLS :Du driver en lille park nær Rio, men banken har indkaldt dit lån.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Middelalder - Borgen
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Lokale medlemmer af kamp re-enactment samfundet er temmelig alvorligt om deres hobby. De har betroet dig opgaven med at bygge en mørk tidsalder forlystelsespark på grunden ved Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Middelalder - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :For at befri rigdom fra de rige og distribuere den til de trængende, har du og dine lystige svende besluttet at bygge en forlystelsespark i Sherwood Skoven.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Fremtiden - Første Kontakt
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Der er fundet liv på en fjern planet. Byg en Rumalien forlystelsespark til at lave penge på den hidtil usete bølge af interesse.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Fremtiden - Fremtidsverden
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Vis din opfindsomme, utopiske vision om fremtiden - kom op med et futuristisk parkdesign, der inkorporerer state-of-the-art attraktioner.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mytologisk - Animatronic Film Sæt
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :Du har fået til opgave at drive og forbedre en eksisterende forlystelsespark, som er bygget på et gammelt filmsæt. Byg en hyldest til de banebrydende stop-motion animatorer, der først bragte mytiske væsner til live på biograflærredet.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mytologisk - Civilisationens vugge
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :Du ejer en ø af særlig arkæologisk værdi. Du har besluttet at finansiere dens bevarelse, ved at bygge en forlystelsespark baseret på områdets rige mytologiske arv.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Forhistorisk - Efter Asteroiden
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :Du ejer et støvet gammelt meteorkrater. I den sande iværksætterånd har du besluttet at konstruere en asteroide forlystelsespark og konvertere dit tilsyneladende værdiløse land til en betydelig formue.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Præhistorisk - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :Du har fået til opgave at bygge en Jurassic æra forlystelsespark. For at optimere dine besøgendes adgang til de eksotiske plante- og dyreudstillinger skal du bygge en bygning, der går over og ind i dalen.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Præhistorisk - Stenalderen
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :For at forpurre motorvejsudviklerne og bevare de mystiske gamle stencirkler skal du konstruere en stenalder forlystelsespark og lave en fortjeneste. Det kan dog være en udfordring at tiltrække besøgende, da terrænet er en smule ugæstfrit.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Brølende Tyvere - Fængselsøen
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Den berygtede Prison Island - hvis befolkning engang husede organiseret kriminalitet og hjemmebrændere - er nu til salg. Du har besluttet at konvertere det til en top turistattraktion, og penge er ikke noget problem.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Brølende Tyvere - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :T75-årsdagen for din bedstefars Schneider Cup-sejr kommer op om et par år. Du vil ære hans præstation ved at bygge en forlystelsespark baseret på den berømte vandflyver racer.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Brølende Tyvere - Skyskrabere
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Du ejer en tom grund i nærheden af den lave del af byen. For at presse mest muligt ud af din byejendom skal du bygge en skyskraber forlystelsespark inspireret af den skyhøje art deco arkitektur i tyverne.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :En stor årlig musikfestival finder sted på dit land. Byg en hip forlystelsespark for at holde det frisindede publikum underholdt.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock og Rul
|
||||
STR_SCNR :Rock ’n’ Roll Revival
|
||||
STR_PARK :Rock ’n’ Roll Revival
|
||||
STR_DTLS :Denne aldrende forlystelsespark har set bedre dage. Hjælp ejeren med at give det en retro rock ’n’ roll makeover og gøre stedet til et vellykket sted.
|
||||
|
||||
|
@ -4387,3 +4436,106 @@ STR_DTLS :Denne aldrende forlystelsespark har set bedre dage. Hjælp ejeren m
|
|||
STR_SCNR :Panda World
|
||||
STR_PARK :Panda World
|
||||
STR_DTLS :Tilføj flere forlystelser, og tiltræk flere besøgende til denne panda-tema park
|
||||
|
||||
<Tycoon Park>
|
||||
STR_SCNR :Tycoon Park
|
||||
STR_PARK :Tycoon Park
|
||||
STR_DTLS :
|
||||
|
||||
###
|
||||
<UCES Halloween>
|
||||
STR_SCNR :Cemetery Ridge
|
||||
STR_PARK :Cemetery Ridge
|
||||
STR_DTLS :Dette er Halloween, UCES Halloween, græskar skriger i nattens mulm og mørke! Denne kirkegård er i problemer, og det er op til dig at redde den, mens du lader de døde hvile i fred! Kan du holde spøgelserne i deres grave og give de besøgende kuldegysninger?{NEWLINE}Forfatter: Squid
|
||||
|
||||
###############################################################################
|
||||
## UCES: The Time Machine (2003)
|
||||
###############################################################################
|
||||
<Lighthouse of Alexandria by Katatude for UCES>
|
||||
STR_SCNR :The Lighthouse of Alexandria
|
||||
STR_PARK :The Lighthouse of Alexandria
|
||||
STR_DTLS :Alexander byggede byen; Grækere, romere, egyptere satte deres præg. Men den største ære var et vidunder i den antikke verden - fyret. Besøg og lav en park!{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Cleveland's Luna Park>
|
||||
STR_SCNR :Luna Park, Cleveland
|
||||
STR_PARK :Luna Park
|
||||
STR_DTLS :Som den var på åbningsdagen - 18. Maj 1905.{NEWLINE}Forfatter: Aetherwave
|
||||
|
||||
<Mount Vesuvius 1700 A.D. by Katatude for UCES>
|
||||
STR_SCNR :Mount Vesuvius
|
||||
STR_PARK :Mount Vesuvius
|
||||
STR_DTLS :Pompeji og Herculaneum blev begravet af Mt. Vesuvius i 79 e.Kr. Besøg udgravningerne og byg en park!{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<The Sandbox by Katatude for UCES>
|
||||
STR_SCNR :The Sandbox
|
||||
STR_PARK :The Sandbox
|
||||
STR_DTLS :Hvad alle vil have - en sandkasse! Så grib din lille spand og skovl og byg en park!{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Niagara Falls & Gorge by Katatude for UCES>
|
||||
STR_SCNR :Niagara Falls & Gorge
|
||||
STR_PARK :Niagara Falls
|
||||
STR_DTLS :American Falls, Bridal Falls & Canadian Horseshoe Falls på Niagara Frontier, 1850.{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Rocky Mountain Miners>
|
||||
STR_SCNR :Rocky Mountain Miners
|
||||
STR_PARK :Rocky Mountain Miners
|
||||
STR_DTLS :Et stenskred beskadigede din jernbane. Dine arbejdere er gået på guldjagt. Er der guld i rutsjebaner?{NEWLINE}Forfattere: Squid, Buckone, Fossil
|
||||
|
||||
<The Time Machine by Katatude for UCES>
|
||||
STR_SCNR :The Time Machine
|
||||
STR_PARK :The Time Machine
|
||||
STR_DTLS :Tidsmaskinen. Byg med på farten – når du vil, hvor du vil. Evigheden venter. Alt er relativt.{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Tower of Babel>
|
||||
STR_SCNR :Tower of Babel
|
||||
STR_PARK :Tower of Babel
|
||||
STR_DTLS :Hovsa! Se, hvor tidsmaskinen tog os til nu! Hvor forsvandt alle hen?{NEWLINE}Forfatter: Fossil
|
||||
|
||||
<Transformation>
|
||||
STR_SCNR :Transformation
|
||||
STR_PARK :Transformation
|
||||
STR_DTLS :Vi har ventet dig…{NEWLINE}Forfatter: Fossil
|
||||
|
||||
<Urbis Incognitus>
|
||||
STR_SCNR :Urbis Incognitus
|
||||
STR_PARK :Urbis Incognitus
|
||||
STR_DTLS :Romerne er trætte af kedelige gladiatorkampe. Giv dem mere spænding, lav en romersk by om til den største forlystelsespark nogensinde!{NEWLINE}Forfatter: Kaffe
|
||||
|
||||
###############################################################################
|
||||
## UCES: Katy’s Dreamworld (2003)
|
||||
###############################################################################
|
||||
|
||||
<Beneath the Christmas Tree by Katatude for UCES>
|
||||
STR_SCNR :Beneath the Christmas Tree
|
||||
STR_PARK :Winter Wonderland
|
||||
STR_DTLS :Mor byggede denne scene under vores træ. Nu vil hun have lavet en park i den! Kan du hjælpe?{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Bigrock Blast>
|
||||
STR_SCNR :Bigrock Blast
|
||||
STR_PARK :Bigrock Blast
|
||||
STR_DTLS :Efter en eksplosion på Bigrock Mining Co. er befolkningen i Bigrock nødt til at bygge en forlystelsespark for at holde deres by i live.{NEWLINE}Forfattere: rbarclay & buckone
|
||||
|
||||
<Camp Mockingbird for UCES by Katatude>
|
||||
STR_SCNR :Camp Mockingbird
|
||||
STR_PARK :Camp Mockingbird
|
||||
STR_DTLS :Kun 500$ om ugen til denne sommerlejr! Bryd din sparegris op, og hav det derefter sjovt og byg en park.{NEWLINE}Forfatter: Katatude
|
||||
|
||||
<Choo Choo Town>
|
||||
STR_SCNR :Choo-Choo Town
|
||||
STR_PARK :Choo-Choo Town
|
||||
STR_DTLS :Mor! Far! Jeg vil til Fut-Fut by!{NEWLINE}Forfatter: Fossil
|
||||
|
||||
<Dragon Islands>
|
||||
STR_SCNR :Dragon Islands
|
||||
STR_PARK :Dragon Islands
|
||||
STR_DTLS :Drageøen? Jeg er ikke sikker på at jeg vil derhen…{NEWLINE}Forfatter: Fossil
|
||||
|
||||
<Kiddy Karnival II>
|
||||
STR_SCNR :Kiddie Karnival II
|
||||
STR_PARK :Kiddie Karnival
|
||||
STR_DTLS :Hej Unger, Lad os have det sjovt!{NEWLINE}Forfattere: Piehead & Fossil
|
||||
|
||||
<Sand Dune>
|
||||
STR_SCNR :Sand Dune
|
||||
STR_PARK :Sand Dune
|
||||
STR_DTLS :Som ejer af en lille park, købte du et stort stykke jord langs stranden for at udvide og tiltrække flere gæster til at besøge de smukke klitter, men pas på, du må ikke forstyrre de økologisk skrøbelige klitter.{NEWLINE}Forfatter: rbarclay
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Hybridachterbahn
|
|||
STR_0094 :Einschienenachterbahn
|
||||
STR_0095 :Alpenachterbahn
|
||||
STR_0096 :Klassische Holzachterbahn
|
||||
STR_0097 :Klassische Stehachterbahn
|
||||
STR_0512 :Eine kompakte Stahlachterbahn mit einem Spirallifthügel und Wagen mit Sitzen in einer Reihe
|
||||
STR_0513 :Eine Looping-Achterbahn, bei der sich die Fahrgäste in einer stehenden Position befinden
|
||||
STR_0514 :Die unterhalb der Schiene aufgehängten Züge schwingen in Kurven seitlich aus.
|
||||
|
@ -147,7 +148,7 @@ STR_0560 :
|
|||
STR_0561 :
|
||||
STR_0562 :Angetriebene Wagen fahren auf einer mehrstöckigen Strecke mit gruseliger Landschaft und Spezialeffekten
|
||||
STR_0563 :Die Fahrgäste sitzen in komfortablen Wagen mit einfachen Beckenhalterungen, in denen sie gigantische, gemäßigte Gefälle erleben, aber auch viel Zeit oben „in der Luft“ verbringen
|
||||
STR_0564 :Diese Holzachterbahn ist schnell, rauh, laut und gibt einem das Gefühl, außer Kontrolle zu sein, wobei man häufig „in der Luft“ ist
|
||||
STR_0564 :Diese Holzachterbahn ist schnell, rau, laut und gibt einem das Gefühl, außer Kontrolle zu sein, wobei man häufig „in der Luft“ ist
|
||||
STR_0565 :Eine einfache Holzachterbahn mit nur leichten Gefällen und Kurven, bei der die Wagen nur mit Hilfe von seitlichen Führungsrollen und der Schwerkraft auf der Strecke gehalten werden
|
||||
STR_0566 :Voneinander unabhängige Achterbahnwagen rasen auf einer engen Zickzack-Strecke mit scharfen Kurven und kurzen, starken Gefällen
|
||||
STR_0567 :Die Passagiere befinden sich in Sitzen, die an beiden Seiten der Bahn hängen, auf der sie über Kopf steile Gefälle hinunterrasen und verschiedene Inversionsfiguren erleben
|
||||
|
@ -177,16 +178,17 @@ STR_0598 :Umgekehrte Achterbahnzüge werden aus der Station beschleunigt und
|
|||
STR_0599 :Eine kompakte Achterbahn mit unabhängigen Wagen und gemäßigten, sich windenden Gefällen
|
||||
STR_0600 :Angetriebene Minenzüge fahren auf einer gemäßigten und verwundenen Strecke
|
||||
STR_0602 :Achterbahnzüge werden aus der Station mit Hilfe von linearen Induktionsmotoren beschleunigt und rasen durch gewundene Überkopfteile
|
||||
STR_0603 :Eine Achterbahn im Holzstil mit einer Stahlschiene, die steile Abfahrten und Inversionen ermöglicht.
|
||||
STR_0604 :Die Fahrgäste fahren in einer Einzelreihe auf einer engen Einschienenstrecke, wobei sie durch enge Inversionen und Richtungswechsel rasen.
|
||||
STR_0605 :Die Fahrgäste rodeln eine sich schlängelnde Stahlbahn hinunter und bremsen, um ihre Geschwindigkeit zu regulieren.
|
||||
STR_0606 :Eine Holzachterbahn nach älterer Art. Sie ist schnell, rauh, laut und gibt einem das Gefühl, außer Kontrolle zu sein, wobei man gelegentlich seitlichen Gs ausgesetzt und häufig „in der Luft“ ist
|
||||
STR_0603 :Eine Achterbahn im Holzstil mit einer Stahlschiene, die steile Abfahrten und Inversionen ermöglicht
|
||||
STR_0604 :Die Fahrgäste fahren in einer Einzelreihe auf einer engen Einschienenstrecke, wobei sie durch enge Inversionen und Richtungswechsel rasen
|
||||
STR_0605 :Die Fahrgäste rodeln eine sich schlängelnde Stahlbahn hinunter und bremsen, um ihre Geschwindigkeit zu regulieren
|
||||
STR_0606 :Eine Holzachterbahn nach älterer Art. Sie ist schnell, rau, laut und gibt einem das Gefühl, außer Kontrolle zu sein, wobei man gelegentlich seitlichen Gs ausgesetzt und häufig „in der Luft“ ist
|
||||
STR_0607 :Eine intensive Stahl-Looping-Achterbahn älterer Art, bei der die Fahrer im Stehen fahren
|
||||
STR_0767 :Besucher {INT32}
|
||||
STR_0768 :Parkpfleger {INT32}
|
||||
STR_0769 :Mechaniker {INT32}
|
||||
STR_0770 :Aufseher {INT32}
|
||||
STR_0771 :Animateur {INT32}
|
||||
STR_0777 :Unbenannter Park{POP16}{POP16}
|
||||
STR_0777 :Unbenannter Park
|
||||
STR_0778 :Schild
|
||||
STR_0779 :1.
|
||||
STR_0780 :2.
|
||||
|
@ -1059,7 +1061,7 @@ STR_1669 :{WINDOW_COLOUR_2}Zufriedenheit: {BLACK}{COMMA16}%
|
|||
STR_1670 :{WINDOW_COLOUR_2}Besucher gesamt: {BLACK}{COMMA32}
|
||||
STR_1671 :{WINDOW_COLOUR_2}Gesamtgewinn: {BLACK}{CURRENCY2DP}
|
||||
STR_1672 :Bremsen
|
||||
STR_1673 :Drehkontrolle umschalt.
|
||||
STR_1673 :Drehkontrolle umschalten
|
||||
STR_1674 :Bremsgeschwindigkeit
|
||||
STR_1675 :{POP16}{VELOCITY}
|
||||
STR_1676 :Geschwindigkeitsgrenze{NEWLINE}für Bremsen einstellen
|
||||
|
@ -1738,12 +1740,12 @@ STR_2382 :Land
|
|||
STR_2383 :Wasser
|
||||
STR_2384 :{WINDOW_COLOUR_2}Ihr Ziel:
|
||||
STR_2385 :{BLACK}Keins
|
||||
STR_2386 :{BLACK}Mindestens {COMMA16} Parkbesucher bis {MONTHYEAR} und eine Parkbewertung von mindestens 600 zu haben
|
||||
STR_2386 :{BLACK}Mindestens {COMMA32} Parkbesucher bis {MONTHYEAR} und eine Parkbewertung von mindestens 600 zu haben
|
||||
STR_2387 :{BLACK}Einen Verkehrswert von mindestens {POP16}{POP16}{CURRENCY} zu erreichen bis {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Viel Spaß!
|
||||
STR_2389 :{BLACK}Bauen Sie Ihre(n) beste(n) {STRINGID}!
|
||||
STR_2390 :{BLACK}Mindestens 10 verschiedene Achterbahntypen in Ihrem Park zu betreiben, wobei jeder einen Nervenkitzelwert von mindestens 6,00 aufweisen muss
|
||||
STR_2391 :{BLACK}Mindestens {COMMA16} Parkbesucher zu erreichen. Die Parkbewertung darf zu keinem Zeitpunkt unter 700 fallen!
|
||||
STR_2391 :{BLACK}Mindestens {COMMA32} Parkbesucher zu erreichen. Die Parkbewertung darf zu keinem Zeitpunkt unter 700 fallen!
|
||||
STR_2392 :{BLACK}Monatliche Einkünfte durch Fahrttickets von mindestens {POP16}{POP16}{CURRENCY} zu erreichen
|
||||
STR_2393 :{BLACK}Mindestens 10 verschiedene Achterbahntypen in Ihrem Park zu betreiben, wobei jeder eine Mindestlänge von {LENGTH} und einen Nervenkitzelwert von mindestens 7,00 aufweisen muss
|
||||
STR_2394 :{BLACK}Alle 5 bereits teilweise gebauten Achterbahnen fertigzustellen, damit sie jeweils einen Nervenkitzelwert von {POP16}{POP16}{COMMA2DP32} erzielen
|
||||
|
@ -2099,39 +2101,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Datei kann nicht geladen werden …
|
||||
STR_3011 :Datei enthält ungültige Daten
|
||||
STR_3012 :Autoscooter-Beat-Stil
|
||||
STR_3013 :Jahrmarktsorgelstil
|
||||
STR_3014 :Römischer Fanfarenstil
|
||||
STR_3015 :Orientstil
|
||||
STR_3016 :Mars-Stil
|
||||
STR_3017 :Dschungeltrommelnstil
|
||||
STR_3018 :Ägyptischer Stil
|
||||
STR_3019 :Spielzeuglandstil
|
||||
STR_3020 :
|
||||
STR_3021 :Weltraumstil
|
||||
STR_3022 :Horrorstil
|
||||
STR_3023 :Techno-Stil
|
||||
STR_3024 :Gemäßigter Stil
|
||||
STR_3025 :Sommerstil
|
||||
STR_3026 :Wasserstil
|
||||
STR_3027 :Wildwest-Stil
|
||||
STR_3028 :Jurassic-Stil
|
||||
STR_3029 :Rock-Stil
|
||||
STR_3030 :Ragtime-Stil
|
||||
STR_3031 :Fantasy-Stil
|
||||
STR_3032 :Rock-Stil 2
|
||||
STR_3033 :Eis-Stil
|
||||
STR_3034 :Schnee-Stil
|
||||
STR_3035 :Eigene Musik 1
|
||||
STR_3036 :Eigene Musik 2
|
||||
STR_3037 :Mittelalterstil
|
||||
STR_3038 :Stadtstil
|
||||
STR_3039 :Orgelstil
|
||||
STR_3040 :Maschinenstil
|
||||
STR_3041 :Moderner Stil
|
||||
STR_3042 :Piratenstil
|
||||
STR_3043 :Rock-Stil 3
|
||||
STR_3044 :Candyland-Stil
|
||||
STR_3045 :Wählen Sie den Musikstil aus
|
||||
STR_3047 :Die örtlichen Behörden verbieten den Abriss oder Änderungen an dieser Bahn
|
||||
STR_3048 :Marketingkampagnen von den örtlichen Behörden verboten
|
||||
|
@ -2358,7 +2327,7 @@ STR_3305 :{WINDOW_COLOUR_2}Monatliche Einkünfte:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Monatlicher Gewinn:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Mindestlänge:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Nervenkitzelwert:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Attraktionen unter Beibehaltungsauftrag:
|
||||
|
@ -2915,7 +2884,7 @@ STR_5755 :Inkompatible Softwareversion (Server benutzt {STRING})
|
|||
STR_5756 :Falsches Passwort
|
||||
STR_5757 :Server voll
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} hat das Spiel betreten
|
||||
STR_5759 :Karte herunterladen … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Karte herunterladen …
|
||||
STR_5760 :Hongkong-Dollar (HK$)
|
||||
STR_5761 :Taiwan-Dollar (NT$)
|
||||
STR_5762 :Chines. Yuan (CN¥)
|
||||
|
@ -3326,7 +3295,7 @@ STR_6199 :Datum setzen
|
|||
STR_6200 :Datum zurücksetzen
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :Stil des virtuellen Bodens:
|
||||
STR_6203 :Um vertikales Platzieren von Elementen zu vereinfachen, wird ein virtueller Boden eingeblendet, wenn Strg oder Shift gehalten wird
|
||||
STR_6203 :Um vertikales Platzieren von Elementen zu vereinfachen, wird ein virtueller Boden eingeblendet, wenn die Strg- oder Umschalttaste gehalten wird.
|
||||
STR_6215 :Konstruktion
|
||||
STR_6216 :Betrieb
|
||||
STR_6217 :Bahn- / Streckenverfügbarkeit
|
||||
|
@ -3477,7 +3446,7 @@ STR_6374 :A
|
|||
STR_6375 :Unbekannte Attraktion
|
||||
STR_6376 :{WINDOW_COLOUR_2}Fahrzeug:{NEWLINE}{BLACK}{STRINGID} für {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Typ: {BLACK}{STRINGID} für {STRINGID}
|
||||
STR_6378 :Objektliste empfangen: {INT32}/{INT32}
|
||||
STR_6378 :Objektliste empfangen:
|
||||
STR_6379 :Ungültige Daten empfangen
|
||||
STR_6380 :Update verfügbar!
|
||||
STR_6381 :OpenRCT2-Discord beitreten!
|
||||
|
@ -3595,7 +3564,7 @@ STR_6493 :Dieser Park wurde in einer späteren Version von OpenRCT2 gespeiche
|
|||
STR_6494 :Nach Fahrgeschäftstyp gruppieren
|
||||
STR_6495 :Fahrgeschäfte nach Fahrgeschäftstyp gruppieren, anstatt jedes Fahrzeug separat anzuzeigen.
|
||||
STR_6496 :{WINDOW_COLOUR_2}{STRINGID}
|
||||
STR_6497 :Klicken Sie auf eine Kachel, um ihre Kachelelemente anzuzeigen.{NEWLINE}Strg + Klick auf Kachel, um sie direkt auszuwählen.
|
||||
STR_6497 :Klicken Sie auf eine Kachel, um ihre Kachelelemente anzuzeigen.{NEWLINE}Strg + Klick auf ein Kachelelement, um es direkt auszuwählen.
|
||||
STR_6498 :Aktivieren, um quadratische Kartenform beizubehalten.
|
||||
STR_6499 :Fahrzeugtyp nicht vom Streckendesignformat unterstüzt
|
||||
STR_6500 :Streckenelemente nicht vom Streckendesignformat unterstüzt
|
||||
|
@ -3613,7 +3582,7 @@ STR_6511 :Null-G-Rolle (rechts)
|
|||
STR_6512 :Große Null-G-Rolle (l.)
|
||||
STR_6513 :Große Null-G-Rolle (r.)
|
||||
STR_6514 :Ungültige Höhe!
|
||||
STR_6515 :{BLACK}RollerCoaster Tycoon 1 nicht verknüpft - Es werden Fallback-Bilder verwendet.
|
||||
STR_6515 :{BLACK}RollerCoaster Tycoon 1 nicht verknüpft. Es werden Fallback-Bilder verwendet.
|
||||
STR_6516 :Eines oder mehrere der hinzugefügten Objekte benötigen eine Verknüpfung mit RollerCoaster Tycoon 1 für eine korrekte Anzeige. Es werden Fallback-Bilder verwendet.
|
||||
STR_6517 :Eines oder mehrere Objekte in diesem Park benötigen eine Verknüpfung mit RollerCoaster Tycoon 1 für eine korrekte Anzeige. Es werden Fallback-Bilder verwendet.
|
||||
STR_6518 :{BLACK}Zeigen Sie auf ein Szenario, um seine Beschreibung und sein Ziel zu sehen. Klicken Sie, um das Spiel zu beginnen.
|
||||
|
@ -3636,7 +3605,7 @@ STR_6534 :{WINDOW_COLOUR_2}Intensitätsfaktor: {BLACK}-{COMMA16}%
|
|||
STR_6535 :{WINDOW_COLOUR_2}Übelkeitsfaktor: {BLACK}-{COMMA16}%
|
||||
STR_6536 :Dieser Park wurde in einer späteren Version von OpenRCT2 gespeichert. Der Park wurde in v{INT32} gespeichert. Sie benutzen im Moment v{INT32}.
|
||||
STR_6537 :Normale Fußwege als Warteschlangen erlauben
|
||||
STR_6538 :Zeigt reguläre Pfade in der Warteschlangenliste im Fußwegfenster an
|
||||
STR_6538 :Zeigt normale Fußwege in der Warteschlangenliste im Fußwegfenster an
|
||||
STR_6539 :Bremse geschlossen
|
||||
STR_6540 :{WINDOW_COLOUR_2}Besonderen Dank an die folgenden Unternehmen für die Gestattung der Verwendung ihrer Abbilder:
|
||||
STR_6541 :{WINDOW_COLOUR_2}Rocky Mountain Construction Group, Josef Wiegand GmbH & Co. KG
|
||||
|
@ -3650,7 +3619,7 @@ STR_6548 :Geländer an Kreuzung zeigen
|
|||
STR_6549 :Kompabilitätsobjekte können nicht ausgewählt werden!
|
||||
STR_6550 :Dieser Eintrag wird für die Abwärtskompabilität mit alten oder beschädigten Objekten bereitgestellt. Er kann nicht ausgewählt werden. Er kann nur abgewählt werden.
|
||||
STR_6551 :Armeegrün
|
||||
STR_6552 :Honigtau
|
||||
STR_6552 :Honigmelone
|
||||
STR_6553 :Loh
|
||||
STR_6554 :Kastanienrot
|
||||
STR_6555 :Koralle
|
||||
|
@ -3693,6 +3662,55 @@ STR_6591 :Der Mitarbeiter repariert gerade ein Fahrgeschäft und kann deshalb
|
|||
STR_6592 :Der Mitarbeiter inspiziert gerade ein Fahrgeschäft und kann deshalb nicht entlassen werden.
|
||||
STR_6593 :Parkzäune entfernen
|
||||
STR_6594 :Kachelinspektor: Wandneigung umschalten
|
||||
STR_6595 :{WINDOW_COLOUR_2}Autor: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Autoren: {BLACK}{STRING}
|
||||
STR_6597 :Ungültiger Parameter
|
||||
STR_6598 :Wert liegt außerhalb des zulässigen Bereichs
|
||||
STR_6599 :Geisterelement konnte nicht gefunden werden
|
||||
STR_6600 :Ballon konnte nicht gefunden werden
|
||||
STR_6601 :Mitarbeiter konnte nicht gefunden werden
|
||||
STR_6602 :Fahrgeschäft/Attraktion konnte nicht gefunden werden
|
||||
STR_6603 :Attraktionseingang konnte nicht gefunden werden
|
||||
STR_6604 :Spieler konnte nicht gefunden werden
|
||||
STR_6605 :Eingangselement konnte nicht gefunden werden
|
||||
STR_6606 :Oberflächenelement konnte nicht gefunden werden
|
||||
STR_6607 :Kachelelement konnte nicht gefunden werden
|
||||
STR_6608 :Streckenelement konnte nicht gefunden werden
|
||||
STR_6609 :Streckenblock konnte nicht gefunden werden
|
||||
STR_6610 :Wegelement konnte nicht gefunden werden
|
||||
STR_6611 :Wandelement konnte nicht gefunden werden
|
||||
STR_6612 :Bannerelement konnte nicht gefunden werden
|
||||
STR_6613 :Objekt neu laden
|
||||
STR_6614 :Parkeintrittsgeld kann nicht geändert werden
|
||||
STR_6615 :Streckenabschnitt auf dieser Kachel benötigt Wasser
|
||||
STR_6616 :Aktion ungültig für diesen Personaltyp
|
||||
STR_6617 :Kachelelement kann nicht mit sich selbst vertauscht werden
|
||||
STR_6618 :Objekt kann weder eingeschränkt werden noch kann die Einschränkung zurückgenommen werden …
|
||||
STR_6619 :Objekttyp kann nicht eingeschränkt werden!
|
||||
STR_6620 :Objekt nicht gefunden!
|
||||
STR_6621 :Einschränken
|
||||
STR_6622 :Objekt auf den Szenario-Editor und dem Sandkastenmodus einschränken
|
||||
STR_6623 :Geben Sie „help“ ein, um eine Liste der verfügbaren Befehle zu erhalten. Geben Sie „hide“ ein, um die Konsole auszublenden.
|
||||
STR_6624 :Kachelinspektor: Elemente sortieren
|
||||
STR_6625 :Ungültige Farbe
|
||||
STR_6626 :Animation ist gespiegelt
|
||||
STR_6627 :Streckengeschwindigkeit zu hoch!
|
||||
STR_6628 :Kann nur auf der Kante von Fußwegen platziert werden!
|
||||
STR_6629 :Symbolleisten-Schaltflächen horizontal zentriert ausrichten
|
||||
STR_6630 :Mit dieser Einstellung werden die Schaltflächen der Symbolleiste horizontal in der Mitte des Bildschirms ausgerichtet. Normalerweise sind sie in den Ecken angeordnet.
|
||||
STR_6631 :Laden …
|
||||
STR_6632 :Überprüfen von Objektdateien …
|
||||
STR_6633 :Überprüfen von Szenario-Dateien …
|
||||
STR_6634 :Überprüfen von Streckenentwurfsdateien …
|
||||
STR_6635 :Überprüfen von Medienpaketen …
|
||||
STR_6636 :Überprüfen der Titelsequenzen …
|
||||
STR_6637 :Laden der Titelsequenzen …
|
||||
STR_6638 :Vergrößerte Benutzeroberfläche
|
||||
STR_6639 :Verändert die Benutzeroberfläche so, dass sie besser für die Touch-Bedienung geeignet ist
|
||||
STR_6640 :Medienpakete bearbeiten …
|
||||
STR_6641 :Lade-/Fortschrittsfenster
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4283,87 +4301,87 @@ STR_DTLS :Bauen Sie die fehlenden Six-Flags-Bahnen, oder erstellen Sie Ihre e
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afrika - Diamantenmine
|
||||
STR_SCNR :Die Minen Afrikas
|
||||
STR_PARK :Die Minen Afrikas
|
||||
STR_DTLS :Sie haben eine aufgegebene Diamantenmine geerbt und finden einen wertvollen Diamanten. Sie beschließen, das Geld in einen weltberühmten Themenpark zu investieren.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afrika - Oase
|
||||
STR_SCNR :Fata Morgana
|
||||
STR_PARK :Fata Morgana
|
||||
STR_DTLS :In der Wüste wurde eine Oase entdeckt, die der ideale Standort für einen Vergnügungspark wäre. Transportmittel zur Oase wurden zur Verfügung gestellt.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afrika - Victoria-Wasserfälle
|
||||
STR_SCNR :Über die Kante
|
||||
STR_PARK :Über die Kante
|
||||
STR_DTLS :Ein Damm wurde gebaut und erzeugt große Mengen an billigem Strom, mit dem Sie einen Park betreiben können. Sie müssen allerdings einen hohen Park-Verkehrswert erreichen, um das Darlehen für den Damm zurückzahlen zu können.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarktis - Umweltschutzmaßnahmen
|
||||
STR_SCNR :Abenteuer im Eis
|
||||
STR_PARK :Abenteuer im Eis
|
||||
STR_DTLS :Sie sollen eine alte Ölraffinerie, die den Umweltschützern ein Dorn im Auge ist, in eine erstklassige Touristenattraktion verwandeln. Das Land ist günstig, doch die Darlehenszinsen sind hoch. Sie können aber die alten Gebäude verkaufen.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asien - Große Mauer - Tourismusprojekt
|
||||
STR_SCNR :Große Mauer von China
|
||||
STR_PARK :Große Mauer von China
|
||||
STR_DTLS :Die Behörden haben entschieden, noch mehr Touristen zur Großen Mauer zu locken, und wollen auf einem angrenzenden Gebiet einen Themenpark errichten. Geld spielt keine Rolle
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asien - Japanische Landgewinnung
|
||||
STR_SCNR :Okinawa-Küste
|
||||
STR_PARK :Okinawa-Küste
|
||||
STR_DTLS :In einem vorhandenen Park herrscht Platzmangel, Sie müssen also dem Meer neues Land abringen. Dafür haben Sie ein Darlehen aufgenommen. Die maximale Bauhöhe ist aufgrund des instabilen Untergrunds und der Erdbeben beschränkt.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asien - Maharadschas Palast
|
||||
STR_SCNR :Maharadscha-Park
|
||||
STR_PARK :Maharadscha-Park
|
||||
STR_DTLS :Der Maharadscha hat Sie damit beauftragt, die örtlichen Massen zu unterhalten. Errichten Sie einen Park, der seine Inspiration aus dem Palast des Maharadschas bezieht.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasien - Ayers Rock
|
||||
STR_SCNR :Ayers-Abenteuer
|
||||
STR_PARK :Ayers-Abenteuer
|
||||
STR_DTLS :Sie helfen den Aborigines, im Rahmen eines Programms zur Kulturförderung einen Vergnügungspark zu bauen. Sie müssen eine große Besucherzahl erreichen, um den Leuten das einzigartige kulturelle Erbe der Aborigines nahe zu bringen.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasien - Spaß am Strand
|
||||
STR_SCNR :Strand-Party
|
||||
STR_PARK :Strand-Party
|
||||
STR_DTLS :Der Meerespark eines örtlichen Unternehmers hat Bankrott gemacht. Sie besitzen bereits einen kleinen Park und möchten den anderen dazukaufen. Um die benötigten Gelder aufzutreiben, müssen Sie zunächst Ihren kleinen Park ausbauen.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Europäisches Kulturfestival
|
||||
STR_SCNR :Europäisches Happening
|
||||
STR_PARK :Europäisches Happening
|
||||
STR_DTLS :Sie wurden engagiert, um eine kulturelle Besucherattraktion in Europa zu leiten, und müssen die Anzahl der Gäste steigern, um die EU-Subventionen bis zum Ende der Amtsperiode des aktuellen Europäischen Parlaments zurückzahlen zu können.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovierung
|
||||
STR_SCNR :Wie Phönix aus der Asche
|
||||
STR_PARK :Wie Phönix aus der Asche
|
||||
STR_DTLS :Ein alter Vergnügungspark befindet sich in desolatem Zustand. Sie erhalten EU-Fördermittel, um dem verwahrlosten Gebiet wieder zu seinem früheren Glanz zu verhelfen. Sie müssen den Park renovieren und die Fördermittel zurückzahlen.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nordamerika - Hawaii Extrem
|
||||
STR_SCNR :Verrücktes Waikiki
|
||||
STR_PARK :Verrücktes Waikiki
|
||||
STR_DTLS :Die Bevölkerung von Hawaii hat das Surfen satt und sehnt sich nach etwas Abwechslung. Sie müssen einen Park bauen, um sie bei Laune zu halten und gleichzeitig dafür sorgen, dass die Insel für Touristen attraktiv bleibt.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nordamerika - Grand Canyon
|
||||
STR_SCNR :Canyon-Katastrophen
|
||||
STR_PARK :Canyon-Katastrophen
|
||||
STR_DTLS :Sie müssen neben diesem Naturwunder einen Vergnügungspark errichten. Es herrscht Platzmangel, Sie können aber Land von den Indianern kaufen. Haben Sie Erfolg, sichern Sie damit der örtlichen Bevölkerung den Lebensunterhalt.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nordamerika - Achterbahnhimmel
|
||||
STR_SCNR :Achterbahnhimmel
|
||||
STR_PARK :Achterbahnhimmel
|
||||
STR_DTLS :Sie sind ein erfolgreicher Geschäftsmann, der sich eine vierjährige Auszeit genommen hat und nun einen Vergnügungspark errichten möchte, bei dem Geld keine Rolle spielt.
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Südamerika - Verlorene Stadt der Inka
|
||||
STR_SCNR :Gründer der Verlorenen Stadt
|
||||
STR_PARK :Gründer der Verlorenen Stadt
|
||||
STR_DTLS :Um der örtlichen Tourismusindustrie den Rücken zu stärken, müssen Sie einen Vergnügungspark konstruieren, der sich harmonisch in die Umgebung einfügt - Höhenbegrenzungen inklusive.
|
||||
STR_DTLS :Um der örtlichen Tourismusindustrie den Rücken zu stärken, müssen Sie einen Vergnügungspark konstruieren, der sich harmonisch in die Umgebung einfügt.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Südamerika - Regenwaldplateau
|
||||
STR_SCNR :Rummel im Regenwald
|
||||
STR_PARK :Rummel im Regenwald
|
||||
STR_DTLS :Platz ist Mangelware im kostbaren Regenwald - Sie müssen so viele Attraktionen wie möglich auf der existierenden Lichtung unterbringen, um eine rentable Alternative zur örtlichen Holzindustrie zu schaffen.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Südamerika - Karneval in Rio
|
||||
STR_SCNR :Zauberei am Zuckerhut
|
||||
STR_PARK :Zauberei am Zuckerhut
|
||||
STR_DTLS :Sie leiten einen kleinen Vergnügungspark in der Nähe von Rio. Als die Bank plötzlich das Ihnen gewährte Darlehen zurückfordert, müssen Sie einen Weg finden, Ihre Einnahmen rasch zu steigern, um diese unerwarteten Schulden zurückzuzahlen.
|
||||
|
||||
|
@ -4371,72 +4389,72 @@ STR_DTLS :Sie leiten einen kleinen Vergnügungspark in der Nähe von Rio. Als
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Finsteres Mittelalter - Schloss
|
||||
STR_SCNR :Felsenschloss
|
||||
STR_PARK :Felsenschloss
|
||||
STR_DTLS :Einige Mitglieder der Gesellschaft zur Nachstellung von Schlachten nehmen ihr Hobby ziemlich ernst. Sie haben Sie damit beauftragt, einen Freizeitpark Finsteres Mittelalter auf den Gründen des Felsenschlosses zu bauen.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Finsteres Mittelalter - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :Um die Reichen finanziell zu erleichtern und das Geld den Bedürftigen zukommen zu lassen, haben Sie und Ihre Gespielen beschlossen, im Sherwood Forest einen Freizeitpark zu bauen.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Zukunft - Neulinge
|
||||
STR_SCNR :Außerirdische Extravaganz
|
||||
STR_PARK :Außerirdische Extravaganz
|
||||
STR_DTLS :Auf einem fernen Planeten ist Leben entdeckt worden. Bauen Sie einen außerirdischen Freizeitpark, um die unerwartet heftige Hysterie in bare Münze umzuwandeln.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Zukunft - Welt der Zukunft
|
||||
STR_SCNR :Zwillingsstadt
|
||||
STR_PARK :Zwillingsstadt
|
||||
STR_DTLS :Beweisen Sie Ihre innovative, utopische Vision der Zukunft - errichten Sie einen futuristischen Freizeitpark mit topmodernen Attraktionen.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythologie - Animatronic-Filmgelände
|
||||
STR_SCNR :Animatronic-Possen
|
||||
STR_PARK :Animatronic-Possen
|
||||
STR_DTLS :Ihre Aufgabe ist, einen bestehenden Freizeitpark zu verbessern, der auf einem alten Filmgelände gebaut wurde. Bauen Sie eine Gedenkstätte für die Pioniere der Stop-Motion, die die Mystikwesen als Erste ins Kino brachten.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythologie - Wiege der Zivilisation
|
||||
STR_SCNR :Mythologischer Wahnsinn
|
||||
STR_PARK :Mythologischer Wahnsinn
|
||||
STR_DTLS :Sie besitzen eine Insel von besonderem architektonischen Wert. Sie haben beschlossen, ihre Erhaltung durch einen Freizeitpark zu finanzieren, der sich mit dem reichen mythologischen Erbe der Gegend befasst.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Vorgeschichte - Nach dem Asteroiden
|
||||
STR_SCNR :Kratergemetzel
|
||||
STR_PARK :Kratergemetzel
|
||||
STR_DTLS :Sie besitzen einen alten, verstaubten Meteoritenkrater. In Ihrem unternehmerischen Geist haben Sie beschlossen, einen Asteroiden-Freizeitpark zu bauen und Ihr scheinbar wertloses Land in eine Geldanlage umzuwandeln.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Vorgeschichte - Jurassic-Safari
|
||||
STR_SCNR :Achtersaurus
|
||||
STR_PARK :Achtersaurus
|
||||
STR_DTLS :Sie haben die Aufgabe, einen Jurassic-Freizeitpark zu bauen. Damit Ihre Besucher optimalen Zugang zu den exotischen Pflanzen und Tieren haben, müssen Sie Attraktionen errichten, die über und in die Täler führen.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Vorgeschichte - Steinzeit
|
||||
STR_SCNR :Felswanderungen
|
||||
STR_PARK :Felswanderungen
|
||||
STR_DTLS :Um den Autobahnbauern ein Schnippchen zu schlagen und die alten Steinkreise zu erhalten, müssen Sie einen Steinzeitpark bauen und ihn profitabel machen. Besucher anzulocken wird schwer, weil das Gelände unwirtlich ist.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Die Wilden Zwanziger - Gefängnisinsel
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Die berüchtigte Gefängnisinsel - die einst überquoll vor Schwarzhändlern und Gaunern - steht jetzt zum Verkauf. Sie haben beschlossen, sie in eine 1A-Touristenattraktion zu verwandeln. Geld spielt keine Rolle
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Die Wilden Zwanziger - Schneider-Cup
|
||||
STR_SCNR :Schneider-Ufer
|
||||
STR_PARK :Schneider-Ufer
|
||||
STR_DTLS :In ein paar Jahren ist das 75. Jubiläum des Sieges Ihres Großvaters im Schneider-Cup. Ihm zu Ehren bauen Sie einen Freizeitpark auf der berühmten Wasserflugzeug-Rennstrecke.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Die Wilden Zwanziger - Wolkenkratzer
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Sie besitzen ein Gelände in der Nähe des flach gebauten Teils der Stadt. Um aus Ihrem Besitz das Beste zu machen, bauen Sie einen Wolkenkratzer-Freizeitpark im hochragenden Stil der Art Déco-Architektur der Zwanziger Jahre.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Auf Ihrem Land findet jährlich ein großes Musikfestival statt. Bauen Sie einen hippen Freizeitpark, um das freidenkende Publikum bei Laune zu halten.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Rock-’n’-Roll-Revival
|
||||
STR_PARK :Rock-’n’-Roll-Revival
|
||||
STR_DTLS :Dieser Freizeitpark ist ein wenig in die Jahre gekommen. Helfen Sie dem Besitzer, ihm einen Rock-’n’-Roll-Anstrich zu geben und ihn zu einem beliebten Ausflugsziel zu machen.
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Hybrid Coaster
|
|||
STR_0094 :Single Rail Roller Coaster
|
||||
STR_0095 :Alpine Coaster
|
||||
STR_0096 :Classic Wooden Roller Coaster
|
||||
STR_0097 :Classic Stand-up Roller Coaster
|
||||
STR_0512 :A compact roller coaster with a spiral lift hill and smooth, twisting drops.
|
||||
STR_0513 :A looping roller coaster where the riders ride in a standing position
|
||||
STR_0514 :Trains suspended beneath the roller coaster track swing out to the side around corners
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :A wooden style roller coaster with a steel track, allowing for stee
|
|||
STR_0604 :Riders ride single file on a narrow monorail track, as they race through tight inversions and direction changes
|
||||
STR_0605 :Riders toboggan down a meandering steel track, braking to control their speed
|
||||
STR_0606 :An older-style wooden roller coaster with a fast and rough ride, with plenty of air-time, some lateral G’s, and designed to feel ‘out-of-control’
|
||||
STR_0607 :An intense, older-style steel looping roller coaster where the riders ride in a standing position
|
||||
STR_0767 :Guest {INT32}
|
||||
STR_0768 :Handyman {INT32}
|
||||
STR_0769 :Mechanic {INT32}
|
||||
STR_0770 :Security Guard {INT32}
|
||||
STR_0771 :Entertainer {INT32}
|
||||
STR_0777 :Unnamed park{POP16}{POP16}
|
||||
STR_0777 :Unnamed park
|
||||
STR_0778 :Sign
|
||||
STR_0779 :1st
|
||||
STR_0780 :2nd
|
||||
|
@ -1737,12 +1739,12 @@ STR_2382 :Land
|
|||
STR_2383 :Water
|
||||
STR_2384 :{WINDOW_COLOUR_2}Your objective:
|
||||
STR_2385 :{BLACK}None
|
||||
STR_2386 :{BLACK}To have at least {COMMA16} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600
|
||||
STR_2386 :{BLACK}To have at least {COMMA32} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600
|
||||
STR_2387 :{BLACK}To achieve a park value of at least {POP16}{POP16}{CURRENCY} at the end of {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Have Fun!
|
||||
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 below 700 at any time!
|
||||
STR_2391 :{BLACK}To have at least {COMMA32} guests in your park. You must not let the park rating drop below 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
|
||||
|
@ -2097,39 +2099,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Unable to load file…
|
||||
STR_3011 :File contains invalid data
|
||||
STR_3012 :Dodgems beat style
|
||||
STR_3013 :Fairground organ style
|
||||
STR_3014 :Roman fanfare style
|
||||
STR_3015 :Oriental style
|
||||
STR_3016 :Martian style
|
||||
STR_3017 :Jungle drums style
|
||||
STR_3018 :Egyptian style
|
||||
STR_3019 :Toyland style
|
||||
STR_3020 :
|
||||
STR_3021 :Space style
|
||||
STR_3022 :Horror style
|
||||
STR_3023 :Techno style
|
||||
STR_3024 :Gentle style
|
||||
STR_3025 :Summer style
|
||||
STR_3026 :Water style
|
||||
STR_3027 :Wild west style
|
||||
STR_3028 :Jurassic style
|
||||
STR_3029 :Rock style
|
||||
STR_3030 :Ragtime style
|
||||
STR_3031 :Fantasy style
|
||||
STR_3032 :Rock style 2
|
||||
STR_3033 :Ice style
|
||||
STR_3034 :Snow style
|
||||
STR_3035 :Custom music 1
|
||||
STR_3036 :Custom music 2
|
||||
STR_3037 :Medieval style
|
||||
STR_3038 :Urban style
|
||||
STR_3039 :Organ style
|
||||
STR_3040 :Mechanical style
|
||||
STR_3041 :Modern style
|
||||
STR_3042 :Pirates style
|
||||
STR_3043 :Rock style 3
|
||||
STR_3044 :Candy style
|
||||
STR_3045 :Select style of music to play
|
||||
STR_3047 :Local authority forbids demolition or modifications to this ride
|
||||
STR_3048 :Marketing campaigns forbidden by local authority
|
||||
|
@ -2356,7 +2325,7 @@ STR_3305 :{WINDOW_COLOUR_2}Monthly income:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Monthly profit:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimum length:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Excitement rating:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Rides/attractions under a preservation order:
|
||||
|
@ -2916,7 +2885,7 @@ STR_5755 :Incorrect Software Version (Server is using {STRING})
|
|||
STR_5756 :Bad Password
|
||||
STR_5757 :Server Full
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} has joined the game
|
||||
STR_5759 :Downloading map … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Downloading map …
|
||||
STR_5760 :Hong Kong Dollars (HK$)
|
||||
STR_5761 :New Taiwan Dollar (NT$)
|
||||
STR_5762 :Chinese Yuan (CN¥)
|
||||
|
@ -3480,7 +3449,7 @@ STR_6374 :C
|
|||
STR_6375 :Unknown Ride
|
||||
STR_6376 :{WINDOW_COLOUR_2}Ride vehicle:{NEWLINE}{BLACK}{STRINGID} for {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID} for {STRINGID}
|
||||
STR_6378 :Receiving objects list: {INT32} / {INT32}
|
||||
STR_6378 :Receiving objects list…
|
||||
STR_6379 :Received invalid data
|
||||
STR_6380 :Update available!
|
||||
STR_6381 :Join OpenRCT2 Discord!
|
||||
|
@ -3699,6 +3668,53 @@ STR_6593 :Remove park fences
|
|||
STR_6594 :Tile Inspector: Toggle wall slope
|
||||
STR_6595 :{WINDOW_COLOUR_2}Author: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Authors: {BLACK}{STRING}
|
||||
STR_6597 :Invalid parameter
|
||||
STR_6598 :Value out of range
|
||||
STR_6599 :Ghost element not found
|
||||
STR_6600 :Balloon not found
|
||||
STR_6601 :Staff not found
|
||||
STR_6602 :Ride not found
|
||||
STR_6603 :Ride object entry not found
|
||||
STR_6604 :Player not found
|
||||
STR_6605 :Entrance element not found
|
||||
STR_6606 :Surface element not found
|
||||
STR_6607 :Tile element not found
|
||||
STR_6608 :Track element not found
|
||||
STR_6609 :Track block not found
|
||||
STR_6610 :Path element not found
|
||||
STR_6611 :Wall element not found
|
||||
STR_6612 :Banner element not found
|
||||
STR_6613 :Reload object
|
||||
STR_6614 :Can’t change park entrance fee
|
||||
STR_6615 :Track on this tile needs water
|
||||
STR_6616 :Action invalid for that staff type
|
||||
STR_6617 :Can’t swap tile element with itself
|
||||
STR_6618 :Can’t restrict or derestrict object…
|
||||
STR_6619 :Object type cannot be restricted!
|
||||
STR_6620 :Object not found!
|
||||
STR_6621 :Restrict
|
||||
STR_6622 :Restrict object to the Scenario Editor and Sandbox mode.
|
||||
STR_6623 :Type ‘help’ for a list of available commands. Type ‘hide’ to hide the console.
|
||||
STR_6624 :Tile Inspector: Sort elements
|
||||
STR_6625 :Invalid colour
|
||||
STR_6626 :Animation is backwards
|
||||
STR_6627 :Track speed too high!
|
||||
STR_6628 :Can only be placed on path edges!
|
||||
STR_6629 :Align toolbar buttons horizontally centred
|
||||
STR_6630 :This setting will align the toolbar buttons horizontally in the centre of the screen. The traditional way of aligning them is in the left and right corner.
|
||||
STR_6631 :Loading…
|
||||
STR_6632 :Checking object files…
|
||||
STR_6633 :Checking scenario files…
|
||||
STR_6634 :Checking track design files…
|
||||
STR_6635 :Checking asset packs…
|
||||
STR_6636 :Checking title sequences…
|
||||
STR_6637 :Loading title sequence…
|
||||
STR_6638 :Enlarged UI
|
||||
STR_6639 :Modifies the interface to be more suitable for touch usage
|
||||
STR_6640 :Edit asset packs…
|
||||
STR_6641 :Loading/progress window
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4279,87 +4295,87 @@ STR_DTLS :Build the missing Six Flags rides, or create your own designs to im
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :You inherited a disused diamond mine, and find a valuable diamond. You decide to invest that money to build a world-famous theme park.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :A desert Oasis has been discovered and would provide a beautiful location for a park. Transport to the oasis has been provided.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :A dam has been built offering abundant, cheap hydroelectric power with which to run a park. You need to reach a high park value to help repay the loan for the dam.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :The environment agency has turned to you to transform an old oil refinery ecological eyesore into a top tourist attraction. Land is cheap but loan interest is high. You can sell the old buildings for salvage.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :The authorities have decided to enhance tourism around the Great Wall by building a theme park on the adjacent land. Money is no object!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :An existing park has run out of space. Your only option is to build out into the sea, and so you have taken out a loan. Height restrictions on your building are enforced due to foundations and earthquake risk.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :You have been commissioned by the Maharaja to bring entertainment to the large local population. Build a park inspired by the Maharaja’s palace.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :You are helping Aboriginal people to build a park as part of a cultural awareness program. You need to get a large number of guests to educate them in the unique heritage of the Aboriginal people.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :A local entrepreneur’s sealife park has gone bust. You already operate a small park and buy the other park from the construction company. Develop a big combined park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :You have been brought in to take over a European Cultural Visitor Attraction and must increase the number of guests in order to pay back the EU subsidy by the end of the current European parliament term.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :An old park has fallen into disrepair. You gain a European Union grant to return this deprived area to its former glory! You need to renovate the park and repay the grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :North America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :The people of Hawaii are bored of surfing and are looking for something more intense. You need to build a park with this in mind to keep the area’s tourist attraction rating high.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :You have to build a park on limited land either side of this natural treasure - you do have the opportunity to buy neighbouring land from the Native American Indians. You need to complete the objective to sustain the local town’s population.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :You are a successful business tycoon on long sabbatical who desires to use this time transforming the city park into Rollercoaster Heaven. Money is no object!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings, and has height restrictions.
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Space is limited in the precious rainforest - you must cram as much as possible into the existing clearing, in order to provide a viable alternative to the local timber industry.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :You run a small park near Rio but the bank has called in your loan. You need to quickly increase your earning capacity to repay this unexpected debt.
|
||||
|
||||
|
@ -4367,72 +4383,72 @@ STR_DTLS :You run a small park near Rio but the bank has called in your loan.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Dark Age - Castle
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Local members of the battle re-enactment society are rather serious about their hobby. They’ve entrusted you with the job of constructing a Dark Age theme park on the grounds of Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Dark Age - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :To liberate wealth from the rich and distribute it to the needy, you and your Merry Men have decided to build a theme park in Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Future - First Encounters
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Life has been discovered on a distant planet Build an alien theme park to cash in on the unprecedented wave of interest.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Future - Future World
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Show off your inventive, utopian vision of the future - come up with a futuristic park design that incorporates state-of-the-art attractions.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythological - Animatronic Film Set
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :You have been given the task of running and improving an existing theme park, which has been built on an old film set. Build a tribute to the pioneering stop-motion animators who first brought mythical creatures to life on the silver screen.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythological - Cradle of Civilisation
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :You own an island of particular archaeological value. You’ve decided to fund its preservation by constructing a theme park based on the area’s rich Mythological heritage.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoric - After the Asteroid
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :You own a dusty old meteor crater. In the true entrepreneurial spirit, you’ve decided to construct an asteroid theme park and convert your seemingly worthless land into a sizeable fortune.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoric - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :You’ve been given the task of constructing a Jurassic era theme park. To optimize your visitors’ access to the exotic plant and animal exhibits, you will need to build rides going over and into the valley.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoric - Stone Age
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :To thwart the highway developers and preserve the mysterious ancient stone circles, you will need to construct a Stone Age theme park and turn a profit. However, attracting visitors may pose a challenge, as the terrain is a tad inhospitable.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Prison Island
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :The infamous Prison Island - whose population once swelled with bootleggers and racketeers - is now up for sale. You’ve decided to convert it into a top tourist attraction, and money is no object
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :The 75th anniversary of your grandfather’s Schneider Cup victory is coming up in a few years. You’re going to honour his achievement by building a theme park based on the famous seaplane race.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Skyscrapers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :You own an empty lot near the low-rise part of town. To squeeze the most out of your urban property, build a skyscraper theme park inspired by the soaring art deco architecture of the twenties.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ‘n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :A large annual music festival takes place on your land. Build a hip theme park to keep the free-spirited audience entertained.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ‘n’ Roll - Rock ‘n’ Roll
|
||||
STR_SCNR :Rock ‘n’ Roll Revival
|
||||
STR_PARK :Rock ‘n’ Roll Revival
|
||||
STR_DTLS :This aging theme park has seen better days. Help the owner give it a retro rock ‘n’ roll makeover and turn the place into a successful venue.
|
||||
|
||||
|
|
|
@ -7,12 +7,11 @@
|
|||
# Vanilla strings. Only change strings that differ from UK English!
|
||||
STR_0007 :Miniature Railroad
|
||||
STR_0015 :Bobsled Coaster
|
||||
STR_0027 :Bumper Cars
|
||||
STR_0035 :Carousel
|
||||
STR_0038 :Restroom
|
||||
STR_0041 :3D Theater
|
||||
STR_0045 :Elevator
|
||||
STR_0047 :ATM
|
||||
STR_0052 :Tunnel Of Horror
|
||||
STR_0517 :Passengers ride in miniature trains along a narrow-gauge railroad track
|
||||
STR_0529 :Mine train themed roller coaster trains career along steel roller coaster track made to look like old railroad track
|
||||
STR_0537 :Guests bump into each other in self-driven electric bumper cars
|
||||
|
@ -203,7 +202,7 @@ STR_3102 :Re-paint colored scenery on landscape
|
|||
STR_3122 :{WINDOW_COLOUR_2}Favorite ride of: {BLACK}{COMMA32} guest
|
||||
STR_3123 :{WINDOW_COLOUR_2}Favorite ride of: {BLACK}{COMMA32} guests
|
||||
|
||||
STR_3372 :{BLACK}= A.T.M.
|
||||
STR_3372 :{BLACK}= ATM
|
||||
STR_3373 :{BLACK}= Restroom
|
||||
|
||||
# Strings added by OpenRCT2. Only add strings that differ from UK English!
|
||||
|
@ -232,6 +231,10 @@ STR_6274 :Can’t set color scheme…
|
|||
STR_6307 :Color scheme: {BLACK}{STRINGID}
|
||||
STR_6328 :With this option enabled, giant screenshots will have a transparent background instead of the default black color.
|
||||
STR_6501 :Random color
|
||||
STR_6625 :Invalid color
|
||||
|
||||
STR_6629 :Align toolbar buttons horizontally centered
|
||||
STR_6630 :This setting will align the toolbar buttons horizontally in the center of the screen. The traditional way of aligning them is in the left and right corner.
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -811,87 +814,87 @@ STR_DTLS :Build the missing Six Flags rides, or create your own designs to im
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :You inherited a disused diamond mine, and find a valuable diamond. You decide to invest that money to build a world-famous theme park.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :A desert Oasis has been discovered and would provide a beautiful location for a park. Transport to the oasis has been provided.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :A dam has been built offering abundant, cheap hydroelectric power with which to run a park. You need to reach a high park value to help repay the loan for the dam.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :The environment agency has turned to you to transform an old oil refinery ecological eyesore into a top tourist attraction. Land is cheap but loan interest is high. You can sell the old buildings for salvage.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :The authorities have decided to enhance tourism around the Great Wall by building a theme park on the adjacent land. Money is no object!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :An existing park has run out of space. Your only option is to build out into the sea, and so you have taken out a loan. Height restrictions on your building are enforced due to foundations and earthquake risk.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :You have been commissioned by the Maharaja to bring entertainment to the large local population. Build a park inspired by the Maharaja’s palace.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :You are helping Aboriginal people to build a park as part of a cultural awareness program. You need to get a large number of guests to educate them in the unique heritage of the Aboriginal people.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :A local entrepreneur’s sealife park has gone bust. You already operate a small park and buy the other park from the construction company. Develop a big combined park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :You have been brought in to take over a European Cultural Visitor Attraction and must increase the number of guests in order to pay back the EU subsidy by the end of the current European parliament term.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :An old park has fallen into disrepair. You gain a European Union grant to return this deprived area to its former glory! You need to renovate the park and repay the grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :N. America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :The people of Hawaii are bored of surfing and are looking for something more intense. You need to build a park with this in mind to keep the area’s tourist attraction rating high.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :You have to build a park on limited land either side of this natural treasure - you do have the opportunity to buy neighboring land from the Native American Indians. You need to complete the objective to sustain the local town’s population.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :You are a successful business tycoon on long sabbatical who desires to use this time transforming the city park into Rollercoaster Heaven. Money is no object!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings, and has height restrictions.
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Space is limited in the precious rainforest - you must cram as much as possible into the existing clearing, in order to provide a viable alternative to the local timber industry.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :You run a small park near Rio but the bank has called in your loan. You need to quickly increase your earning capacity to repay this unexpected debt.
|
||||
|
||||
|
@ -899,71 +902,71 @@ STR_DTLS :You run a small park near Rio but the bank has called in your loan.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Dark Age - Castle
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Local members of the battle re-enactment society are rather serious about their hobby. They’ve entrusted you with the job of constructing a Dark Age theme park on the grounds of Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Dark Age - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :To liberate wealth from the rich and distribute it to the needy, you and your Merry Men have decided to build a theme park in Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Future - First Encounters
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Life has been discovered on a distant planet. Build an alien theme park to cash in on the unprecedented wave of interest.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Future - Future World
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Show off your inventive, utopian vision of the future - come up with a futuristic park design that incorporates state-of-the-art attractions.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythological - Animatronic Film Set
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :You have been given the task of running and improving an existing theme park, which has been built on an old film set. Build a tribute to the pioneering stop-motion animators who first brought mythical creatures to life on the silver screen.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythological - Cradle of Civilization
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :You own an island of particular archaeological value. You’ve decided to fund its preservation by constructing a theme park based on the area’s rich Mythological heritage.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoric - After the Asteroid
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :You own a dusty old meteor crater. In the true entrepreneurial spirit, you’ve decided to construct an asteroid theme park and convert your seemingly worthless land into a sizeable fortune.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoric - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :You’ve been given the task of constructing a Jurassic era theme park. To optimize your visitors’ access to the exotic plant and animal exhibits, you will need to build rides going over and into the valley.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoric - Stone Age
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :To thwart the highway developers and preserve the mysterious ancient stone circles, you will need to construct a Stone Age theme park and turn a profit. However, attracting visitors may pose a challenge, as the terrain is a tad inhospitable.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Prison Island
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :The infamous Prison Island - whose population once swelled with bootleggers and racketeers - is now up for sale. You’ve decided to convert it into a top tourist attraction, and money is no object.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :The 75th anniversary of your grandfather’s Schneider Cup victory is coming up in a few years. You’re going to honor his achievement by building a theme park based on the famous seaplane race.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Skyscrapers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :You own an empty lot near the low-rise part of town. To squeeze the most out of your urban property, build a skyscraper theme park inspired by the soaring art deco architecture of the twenties.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ‘n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :A large annual music festival takes place on your land. Build a hip theme park to keep the free-spirited audience entertained.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ‘n’ Roll - Rock ‘n’ Roll
|
||||
STR_SCNR :Rock ‘n’ Roll Revival
|
||||
STR_PARK :Rock ‘n’ Roll Revival
|
||||
STR_DTLS :This aging theme park has seen better days. Help the owner give it a retro rock ‘n’ roll makeover and turn the place into a successful venue.
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Hibrida Onda Fervojo
|
|||
STR_0094 :Onda Fervojo kun Unuopa Relo
|
||||
STR_0095 :Alpa Onda Fervojo
|
||||
STR_0096 :Klasika Ligna Onda Fervojo
|
||||
STR_0097 :Klasika Staranta Onda Fervojo
|
||||
STR_0512 :Onda fervojo kompakta kun helikforma lifto kaj glataj kurboplenaj malleviĝoj.
|
||||
STR_0513 :Onda fervojo kun lopoj, sur kiun la rajdantoj rajdas starante
|
||||
STR_0514 :Trajnoj penditaj sub la trako de la onda fervojo svingiĝas flanken ĉe anguloj
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :Ligna onda fervojo kun ŝtala trako, kiu permesas krutajn malleviĝ
|
|||
STR_0604 :Rajdantoj rajdas anservice sur mallarĝa monorela trako, dum ili vetkuras tra krutaj inversigoj kaj ŝanĝoj de direkto.
|
||||
STR_0605 :Rajdantoj toboganas malsupren serpentuman ŝtalan trakon, bremsante por regi ilian rapidecon.
|
||||
STR_0606 :Maljuna-stila ligna onda fervojo kun rapida kaj malglata rajdo, kun sufiĉe da ‘en-aeraj periodoj’, kelka flanka graviteco, kaj desegnita sentiĝi ‘nedirektebla’
|
||||
STR_0607 :Intensa, malnovstila ŝtala onda fervojo kun lopoj, sur kiun la rajdantoj rajdas starante
|
||||
STR_0767 :Gasto {INT32}
|
||||
STR_0768 :Faktoto {INT32}
|
||||
STR_0769 :Mekanikisto {INT32}
|
||||
STR_0770 :Gardisto {INT32}
|
||||
STR_0771 :Amuzisto {INT32}
|
||||
STR_0777 :Parko sennoma{POP16}{POP16}
|
||||
STR_0777 :Parko sennoma
|
||||
STR_0778 :Afiŝo
|
||||
STR_0779 :1a
|
||||
STR_0780 :2a
|
||||
|
@ -1737,12 +1739,12 @@ STR_2382 :Tero
|
|||
STR_2383 :Akvo
|
||||
STR_2384 :{WINDOW_COLOUR_2}Via celo:
|
||||
STR_2385 :{BLACK}Neniu
|
||||
STR_2386 :{BLACK}Havi almenaŭ {COMMA16} gastojn en via parko al la fino de {MONTHYEAR}, kun pritakso de parko ne malpli ol 600
|
||||
STR_2386 :{BLACK}Havi almenaŭ {COMMA32} gastojn en via parko al la fino de {MONTHYEAR}, kun pritakso de parko ne malpli ol 600
|
||||
STR_2387 :{BLACK}Atingi parkvaloron ne malpli ol {POP16}{POP16}{CURRENCY} al la fino de {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Amuzi Vin!
|
||||
STR_2389 :{BLACK}Konstrui je la plej bona {STRINGID}, kiun vi povas konstrui!
|
||||
STR_2390 :{BLACK}Havi 10 malsamajn tipojn de ondaj fervojoj funkciantajn en via parko, kiuj havas po pritakson de eksciteco ne malpli ol 6.00
|
||||
STR_2391 :{BLACK}Havi almenaŭ {COMMA16} gastojn en via parko. Ankaŭ, necesas ke la pritakso de la parko neniam falu sub 700!
|
||||
STR_2391 :{BLACK}Havi almenaŭ {COMMA32} gastojn en via parko. Ankaŭ, necesas ke la pritakso de la parko neniam falu sub 700!
|
||||
STR_2392 :{BLACK}Atingi enspezon monatan ne malpli ol {POP16}{POP16}{CURRENCY}, pro la vendado de biletoj de atrakcioj
|
||||
STR_2393 :{BLACK}Havi 10 malsamajn tipojn de ondaj fervojoj funkciantajn en via parko, kiuj havas po mimimuman longecon de {LENGTH} kaj pritakson de eksciteco ne malpli ol 7.00
|
||||
STR_2394 :{BLACK}Fini la konstruadon de la tutaj 5 ondaj fervojoj konstruitaj parte. Desegni ilin, por atingi po pritakson de eksciteco ne malpli ol {POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2011,7 +2013,7 @@ STR_2809 :{RED}Gastoj malsatas, kaj ne eblas trovi ie ajn por aĉeti manĝaĵ
|
|||
STR_2810 :{RED}Gastoj soifas, kaj ne eblas trovi ie ajn por aĉeti trinkaĵon
|
||||
STR_2811 :{RED}Gastoj plendas, ĉar ili ne eblas trovi la necesejojn en via parko
|
||||
STR_2812 :{RED}Gastoj perdiĝas{NEWLINE}Kontrolu ĉu la aranĝo de viaj trotuaroj bezonas plibonigon, por helpi la gastojn tiel, kiel ili ne perdiĝas
|
||||
STR_2813 :{RED}Via kosto de parkeniro estas tro alta!{NEWLINE}Malaltigi ĝin, aŭ plibonigi la parkvaloron por allogi pli da gastoj
|
||||
STR_2813 :{RED}Via enirpago de parko estas tro alta!{NEWLINE}Malaltigi ĝin, aŭ plibonigi la parkvaloron por allogi pli da gastoj
|
||||
STR_2814 :{WINDOW_COLOUR_2}Premio por la plej negliĝa parko
|
||||
STR_2815 :{WINDOW_COLOUR_2}Premio por la plej orda parko
|
||||
STR_2816 :{WINDOW_COLOUR_2}Premio por la parko kun la plej bonaj ondaj fervojoj
|
||||
|
@ -2097,39 +2099,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Ne eblas ŝargi dosieron…
|
||||
STR_3011 :Doserio enhavas nevalidajn datumojn
|
||||
STR_3012 :Doĝemotakto-stilo
|
||||
STR_3013 :Foirejo-orgeno-stilo
|
||||
STR_3014 :Roma-fanfaro-stilo
|
||||
STR_3015 :Orienta stilo
|
||||
STR_3016 :Marsa stilo
|
||||
STR_3017 :Ĝangalotamburoj-stilo
|
||||
STR_3018 :Egipta stilo
|
||||
STR_3019 :Ludilejo-stilo
|
||||
STR_3020 :
|
||||
STR_3021 :Spaco-stilo
|
||||
STR_3022 :Horora stilo
|
||||
STR_3023 :Tekno-stilo
|
||||
STR_3024 :Milda stilo
|
||||
STR_3025 :Somero-stilo
|
||||
STR_3026 :Akvo-stilo
|
||||
STR_3027 :Sovaĝa-okcidento-stilo
|
||||
STR_3028 :Ĵurasa stilo
|
||||
STR_3029 :Rokmuziko-stilo
|
||||
STR_3030 :Ragtimo-stilo
|
||||
STR_3031 :Fantasto-stilo
|
||||
STR_3032 :Rokmuziko-stilo 2
|
||||
STR_3033 :Glacio-stilo
|
||||
STR_3034 :Neĝo-stilo
|
||||
STR_3035 :Propra muziko 1
|
||||
STR_3036 :Propra muziko 2
|
||||
STR_3037 :Mezepoka stilo
|
||||
STR_3038 :Urba stilo
|
||||
STR_3039 :Orgeno-stilo
|
||||
STR_3040 :Mekanika stilo
|
||||
STR_3041 :Moderna stilo
|
||||
STR_3042 :Piratoj-stilo
|
||||
STR_3043 :Rokmuziko-stilo 3
|
||||
STR_3044 :Dolĉaĵo-stilo
|
||||
STR_3045 :Elekti stilon de muziko por ludi
|
||||
STR_3047 :Loka aŭtoritato malpermesas malkonstruon aŭ redaktojn de ĉi tiu atrakcio
|
||||
STR_3048 :Loka aŭtoritato malpermesas kampanjojn surmerkatigajn
|
||||
|
@ -2356,7 +2325,7 @@ STR_3305 :{WINDOW_COLOUR_2}Enspezo monata:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Profito monata:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimuma longeco:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Pritakso de eksciteco:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Atrakcioj, kiujn oni ne eblas ŝanĝi dum la scenaro:
|
||||
|
@ -2916,7 +2885,7 @@ STR_5755 :Malĝusta Versio de Programo (Servilo uzas je {STRING})
|
|||
STR_5756 :Malbona Pasvorto
|
||||
STR_5757 :Servilo Plena
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} aliĝis al la ludo
|
||||
STR_5759 :Elŝutas mapon … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Elŝutas mapon …
|
||||
STR_5760 :Honkongaj Dolaroj (HK$)
|
||||
STR_5761 :Nova Tajvana Dolaro (NT$)
|
||||
STR_5762 :Ĉina Juano (CN¥)
|
||||
|
@ -3480,7 +3449,7 @@ STR_6374 :I
|
|||
STR_6375 :Nekonata Atrakcio
|
||||
STR_6376 :{WINDOW_COLOUR_2}Atrakcioveturilo:{NEWLINE}{BLACK}{STRINGID} por {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Tipo: {BLACK}{STRINGID} por {STRINGID}
|
||||
STR_6378 :Ricevas liston de objektoj: {INT32} / {INT32}
|
||||
STR_6378 :Ricevas liston de objektoj:
|
||||
STR_6379 :Ricevis nevalidan datumon
|
||||
STR_6380 :Ĝisdatigo disponeblas!
|
||||
STR_6381 :Aliĝi al la Diskordo de OpenRCT2!
|
||||
|
@ -3579,7 +3548,7 @@ STR_6474 :Nevideblaj Gastoj
|
|||
STR_6475 :Nevidebla Dungitaro
|
||||
STR_6476 :Nevideba Vegetaĵaro
|
||||
STR_6477 :Nevideba Pejzaĝo
|
||||
STR_6478 :Nevidebaj Trotruaroj
|
||||
STR_6478 :Nevidebaj Trotuaroj
|
||||
STR_6479 :Nevidebaj Atrakcioj
|
||||
STR_6480 :Nevidebaj Veturiloj
|
||||
STR_6481 :Agordoj de Travidebleco
|
||||
|
@ -3698,6 +3667,53 @@ STR_6593 :Forigi parkobarilojn
|
|||
STR_6594 :Inspektilo de Bloko: Baskuligi deklivecon de muro
|
||||
STR_6595 :{WINDOW_COLOUR_2}Aŭtoro: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Aŭtoroj: {BLACK}{STRING}
|
||||
STR_6597 :Nevalida parametro
|
||||
STR_6598 :Valoro estas ekstervarieja
|
||||
STR_6599 :Fantomo-elemento ne troviĝis
|
||||
STR_6600 :Balono ne troviĝis
|
||||
STR_6601 :Dungitaro ne troviĝis
|
||||
STR_6602 :Atrakcio ne troviĝis
|
||||
STR_6603 :Enigo de atrakcio-objekto ne troviĝis
|
||||
STR_6604 :Ludanto ne troviĝis
|
||||
STR_6605 :Enirejo-elemento ne troviĝis
|
||||
STR_6606 :Surfaco-elemento ne troviĝis
|
||||
STR_6607 :Blokelemento ne troviĝis
|
||||
STR_6608 :Trakelemento ne troviĝis
|
||||
STR_6609 :Blokparto de trako ne troviĝis
|
||||
STR_6610 :Trotuaro-elemento ne troviĝis
|
||||
STR_6611 :Muro-elemento ne troviĝis
|
||||
STR_6612 :Rubando-elemento ne troviĝis
|
||||
STR_6613 :Reŝargi objekton
|
||||
STR_6614 :Ne povas ŝanĝi enirpagon de parko
|
||||
STR_6615 :Trako sur ĉi tiu bloko bezonas akvon
|
||||
STR_6616 :Ago estas nevalida por tiu dungitotipo
|
||||
STR_6617 :Ne povas permuti blokelementon kun si mem
|
||||
STR_6618 :Ne povas limigi aŭ mallimigi objekton…
|
||||
STR_6619 :Objekotipo ne povas esti limigita!
|
||||
STR_6620 :Objekto ne troviĝis!
|
||||
STR_6621 :Limigi
|
||||
STR_6622 :Limigi objekton al la Scenaroredaktilo kaj Provejo-reĝimo.
|
||||
STR_6623 :Tajpu la komandon ‘help’ por montri liston de disponeblaj komandoj. Tajpu la komandon ‘hide’ por kaŝi la konsolon.
|
||||
STR_6624 :Inspektilo de Bloko: Ordigi elementojn
|
||||
STR_6625 :Nevalida koloro
|
||||
STR_6626 :Animacio movas malantaŭen
|
||||
STR_6627 :Rapideco de trako estas tro alta!
|
||||
STR_6628 :Nur meteblas sur bordoj de trotuaroj!
|
||||
STR_6629 :Ĝisrandigi butonojn de ilobreto horizontale centren
|
||||
STR_6630 :Ĉi tiu agordo ĝisrandigos la butonojn de ilobreto horizontale centren de la ekrano. La tradicia maniero ĝisrandigi ilin estas al la dekstre kaj maldeksre anguloj.
|
||||
STR_6631 :Ŝargado…
|
||||
STR_6632 :Kontrolas dosierojn de objektoj…
|
||||
STR_6633 :Kontrolas dosierojn de scenaroj…
|
||||
STR_6634 :Kontrolas dosierojn de trakdesegnaĵoj…
|
||||
STR_6635 :Kontrolas havaĵo-pakojn…
|
||||
STR_6636 :Kontrolas titolosekvencojn…
|
||||
STR_6637 :Ŝargas titolosekvencon…
|
||||
STR_6638 :Pligrandigita fasado
|
||||
STR_6639 :Modifas la fasadon por esti pli taŭga por tuŝekranoj
|
||||
STR_6640 :Redakti havaĵo-pakojn…
|
||||
STR_6641 :Ŝargado/progreso-fenestro
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4287,87 +4303,87 @@ STR_DTLS :Konstruu la mankantajn atrakciojn de Six Flags, aŭ kreu viajn prop
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afriko - Afrika Diamanto-Mino
|
||||
STR_SCNR :Minoj de Afriko
|
||||
STR_PARK :Minoj de Afriko
|
||||
STR_DTLS :Vi heredis ne plu uzitan diamanto-minejon, kaj trovis valoran diamanton. Vi decidas investi tiun monon por konstrui mondfaman amuzparkon.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afriko - Oazo
|
||||
STR_SCNR :Miraĝo-Frenezo
|
||||
STR_PARK :Miraĝo-Frenezo
|
||||
STR_DTLS :Dezerta oazo estis malkovrita kaj provizus belan lokon por parko. Transporto al la oazo estis provizita.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afriko - Akvofaloj de Viktoria
|
||||
STR_SCNR :Super La Rando
|
||||
STR_PARK :Super La Rando
|
||||
STR_DTLS :Digo konstruita oferas abundan malmultekostan hidroelektran potencon por administri parkon. Vi devas atingi altan parkvaloron por helpi repagi la prunton de la digo.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarkto - Ekologia Savo
|
||||
STR_SCNR :Glaciaj Aventuroj
|
||||
STR_PARK :Glaciaj Aventuroj
|
||||
STR_DTLS :La biomedia agentejo komisiis vin por transformi malnovan nafto-rafinejon, ekologian malbelaĵon, en supran turismo-vidindaĵon. Tereno estas malmultekosta sed pruntinterezo estas alta. Vi povas vendi la malnovajn konstruaĵojn por savado.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Azio - Plibonigo de Turismo de la Granda Ĉina Muro
|
||||
STR_SCNR :La Granda Ĉina Muro
|
||||
STR_PARK :La Granda Ĉina Muro
|
||||
STR_DTLS :La aŭtoritatoj decidis plibonigi turismon ĉirkaŭ la Granda Muro per konstrui amuzparkon sur la apuda tereno. Mono estas neniu problemo!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Azio - Japana Marborda Reakiro
|
||||
STR_SCNR :Okinavo-Marbordo
|
||||
STR_PARK :Okinavo-Marbordo
|
||||
STR_DTLS :Ekzistanta parko elĉerpiĝis de spaco. Via sola eblo estas konstrui sur la maron, kaj tial vi elprenis prunton. Alteco-limigoj de viaj konstruaĵoj estas observigitaj pro fondaĵoj kaj tertremo-risko.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Azio - Maharaĝo-Palaco
|
||||
STR_SCNR :Parko-Maharaĝo
|
||||
STR_PARK :Parko-Maharaĝo
|
||||
STR_DTLS :Vi estis komisiita de la Maharaĝo por alporti amuzadon al la granda loka loĝantaro. Konstruu parkon inspiritan de la palaco de Maharaĝo.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Aŭstralazio - Uluruo
|
||||
STR_SCNR :Uluru-Aventuro
|
||||
STR_PARK :Uluru-Aventuro
|
||||
STR_DTLS :Vi helpas aborigenojn per konstrui parkon kiel parto de programo de kultura konscio. Vi bezonas akiri multajn gastojn por eduki ilin pri la unika heredaĵo de la aborigenoj.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Aŭstralazio - Amuzo ĉe la Plaĝo
|
||||
STR_SCNR :Kradostado-Festo ĉe la Plaĝo
|
||||
STR_PARK :Kradostado-Festo ĉe la Plaĝo
|
||||
STR_DTLS :La marvivo-parko de loka entreprenisto eksenmoniĝis. Vi jam funkciigas malgrandan parkon, kaj aĉetas la alian parkon de la konstruo-kompanio. Ellaboru grandan kombinitan parkon.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Eŭropo - Eŭropa Kultura Festivalo
|
||||
STR_SCNR :Eŭropa Ekstravagancaĵo
|
||||
STR_PARK :Eŭropa Ekstravagancaĵo
|
||||
STR_DTLS :Vi estis alportita por transpreni Eŭropan Kulturan Vizitanto-Vidindaĵon kaj devas pliigi la nombron de gastoj por repagi la EU-subvencion antaŭ la fino de la aktuala Eŭropa parlamento-oficdaŭro.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Eŭropo - Renovigo
|
||||
STR_SCNR :El La Cindroj
|
||||
STR_PARK :El La Cindroj
|
||||
STR_DTLS :Malnova parko falis je kadukiĝo. Vi akiras subvencion de Eŭropa Unio por redoni ĉi tiun senigitan areon al sia iama gloro! Vi bezonas renovigi la parkon kaj repagi la subvencion.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nordameriko - Ekstrema Havaja Insulo
|
||||
STR_SCNR :Komika Waikiki
|
||||
STR_PARK :Komika Waikiki
|
||||
STR_DTLS :La homoj de Havajo estas enuigitaj de surfado kaj serĉas ion pli intensan. Vi devas konstrui parkon ĉi-rilate por subteni la vidindaĵo-valoron de la areo alta.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nordameriko - Granda Kanjono
|
||||
STR_SCNR :Kanjono-Katastrofoj
|
||||
STR_PARK :Kanjono-Katastrofoj
|
||||
STR_DTLS :Vi devas konstrui parkon sur limigita tereno ambaŭflanke de ĉi tiu natura trezoro - vi havas la oportunecon por aĉeti najbaran terenon de la Indiĝenaj Amerikanoj. Vi devas kompletigi la celon por daŭrigi la loĝantaron de la loka vilaĝo.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nordameriko - Paradizo de Ondaj Fervojoj
|
||||
STR_SCNR :Paradizo de Ondaj Fervojoj
|
||||
STR_PARK :Paradizo de Ondaj Fervojoj
|
||||
STR_DTLS :Vi estas sukcesa komerca magnato prenanta longan libertempon, kiu deziras uzi ĉi tiun tempon per transformi la urban parkon en Onda-Fervojo-Paradizon. Mono estas neniu problemo!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sudameriko - La Perdita Inkaa Urbo
|
||||
STR_SCNR :Fondinto de la Perdita Urbo
|
||||
STR_PARK :Fondinto de la Perdita Urbo
|
||||
STR_DTLS :Por plue akceli lokan turismon, vi devas konstrui parkon, kiu kaj akordas kun sia ĉirkaŭaĵo, kaj observas limigojn de alteco.
|
||||
STR_DTLS :Por plue akceli lokan turismon, vi devas konstrui parkon, kiu akordas kun sia ĉirkaŭaĵo.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sudameriko - Pluvarbaro-Altebenaĵo
|
||||
STR_SCNR :Pluvarbaro-Kapriolo
|
||||
STR_PARK :Pluvarbaro-Kapriolo
|
||||
STR_DTLS :Spaco estas limigita en la altvalora pluvarbaro - vi devas plenegigi kiel eble plej multe en la ekzistantan senarbejon, por havigi vivipovan alternativon je la loka ligno-industrio.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sudameriko - La Karnavalo de Rio
|
||||
STR_SCNR :Sukerpano-Marbordoj
|
||||
STR_PARK :Sukerpano-Marbordoj
|
||||
STR_DTLS :Vi administras malgrandan parkon proksime de Rio-de-Ĵanejro, sed la banko alvokis vian prunton. Vi devas rapide pliigi vian enspezado-kapablon por repagi ĉi tiun neatenditan ŝuldon.
|
||||
|
||||
|
@ -4375,72 +4391,72 @@ STR_DTLS :Vi administras malgrandan parkon proksime de Rio-de-Ĵanejro, sed l
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Malluma Epoko - Kastelo
|
||||
STR_SCNR :Klifoflanko-Kastelo
|
||||
STR_PARK :Klifoflanko-Kastelo
|
||||
STR_DTLS :Lokaj anoj de la socio de batalo-rekonstruoj estas sufiĉe seriozaj pri ilia ŝatokupo. Ili konfidis al vi la laboron de konstrui amuzparkon kun temo de Malluma Epoko sur la tereno de Klifoflanko-Kastelo.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Malluma Epoko - Robin Hood
|
||||
STR_SCNR :Arbaro Sherwood
|
||||
STR_PARK :Arbaro Sherwood
|
||||
STR_DTLS :Por liberigi la riĉaĵon de riĉuloj kaj disdoni ĝin al senhavuloj, vi kaj viaj Gajaj Viroj decidis konstrui amuzparkon en Arbaro Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Estonto - Unuaj Renkontoj
|
||||
STR_SCNR :Ekstertera Ekstravagancaĵo
|
||||
STR_PARK :Ekstertera Ekstravagancaĵo
|
||||
STR_DTLS :Vivo estis malkovrita ĉe malproksima planedo. Konstruu eksterteran parkon por profiti de la senprecedenca ondo de intereso.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Estonto - Estonta Mondo
|
||||
STR_SCNR :Ĝemeloj-Urbo
|
||||
STR_PARK :Ĝemeloj-Urbo
|
||||
STR_DTLS :Montru vian inventeman, utopian konceptadon de la estonteco - kreu futurisman parko-dezegnaĵon, kiu enkorpigas la plej modernajn atrakciojn.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitologia - Animatronika Filmado-Loko
|
||||
STR_SCNR :Animatronikaj Burleskaĵoj
|
||||
STR_PARK :Animatronikaj Burleskaĵoj
|
||||
STR_DTLS :Vi ricevis la taskon de funkciigi kaj plibonigi ekzistantan amuzparkon, kiu estis konstruita ĉe malnova filmado-loko. Konstruu tributon al la pioniraj haltmovado-animistoj, kiuj unue vivigis mitajn kreitojn sur la film-ekranon.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitologia - Naskiĝejo de Civilizo
|
||||
STR_SCNR :Mitologia Frenezo
|
||||
STR_PARK :Mitologia Frenezo
|
||||
STR_DTLS :Vi posedas insulon de aparta arkeologia valoro. Vi decidis financi ĝian konservadon per konstrui amuzparkon surbaze de la riĉa Mitologia heredaĵo de la areo.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prahistoria - Post la Asteroido
|
||||
STR_SCNR :Kratero-Buĉado
|
||||
STR_PARK :Kratero-Buĉado
|
||||
STR_DTLS :Vi posedas polvan malnovan meteor-krateron. Per vera entreprenema vigleco, vi decidis konstrui asteroidan amuzparkon kaj konverti vian ŝajne senvaloran bienon en konsiderindan riĉaĵon.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prahistoria - Ĵurasa Safario
|
||||
STR_SCNR :Onda-Fervojo-Dinosaŭro
|
||||
STR_PARK :Onda-Fervojo-Dinosaŭro
|
||||
STR_DTLS :Vi ricevis la taskon de konstrui Ĵurasa-epokan amuzparkon. Por optimumigi la aliron de viaj vizitantoj al la ekzotikaj ekspoziciaĵoj da kreskaĵoj kaj bestoj, vi bezonos konstrui atrakciojn irantajn super kaj en la valon.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prahistoria - Ŝtonepoko
|
||||
STR_SCNR :Rokaj Vagaĵoj
|
||||
STR_PARK :Rokaj Vagaĵoj
|
||||
STR_DTLS :Por malhelpi la ŝoseo-ellaborantojn kaj konservi la misterajn antikvajn ŝtono-rondojn, vi bezonos konstrui Ŝtonepokan amuzparkon kaj gajni profiton. Tamen, eble estos defio por allogi vizitantojn, ĉar la tereno estas iom negastema.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Muĝadaj Dudekaj - Prizono-Insulo
|
||||
STR_SCNR :Alkatrazo
|
||||
STR_PARK :Alkatrazo
|
||||
STR_DTLS :La fifama Mallibereja Insulo - kies loĝantaro iam ŝveliĝis per piratistoj kaj eldevigantoj - nun estas aĉetebla. Vi decidis transformi ĝin en supran turisman vidindaĵon, kaj mono estas neniu problemo.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Muĝadaj Dudekaj - Schneider-Trofeo
|
||||
STR_SCNR :Schneider-Marbordoj
|
||||
STR_PARK :Schneider-Marbordoj
|
||||
STR_DTLS :La 75-a datreveno de la Schneider-Trofeo-venko de via avo venas en kelkaj jaroj. Vi honoros lian atingon per konstrui amuzparkon surbaze de la fama hidroplano-vetkuro.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Muĝadaj Dudekaj - Ĉielskrapantoj
|
||||
STR_SCNR :Metropolo
|
||||
STR_PARK :Metropolo
|
||||
STR_DTLS :Vi posedas malplenan teron proksime de la malaltaĵo-parto de la urbo. Por akiri la plej grandan parton de via urba propraĵo, konstruu ĉielskrapanto-temitan amuzparkon inspiritan de la altegiĝia artodekora arkitekturo de la dudekaj.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rokenrolo - La Potenco de Floroj
|
||||
STR_SCNR :Woodstock-Festivalo
|
||||
STR_PARK :Woodstock-Festivalo
|
||||
STR_DTLS :Granda jara muzikfestivalo okazas sur via tereno. Konstruu mojosan amuzparkon por teni la liberaniman spektantaron amuzita.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rokenrolo - Rokenrolo
|
||||
STR_SCNR :La Revivigo de Rokenrolo
|
||||
STR_PARK :La Revivigo de Rokenrolo
|
||||
STR_DTLS :Ĉi tiu maljuniĝa amuzparko vidis pli bonajn tagojn. Helpu la posedanton doni al ĝi eksmodan rokenrolan renovigon, kaj transformi la lokon en sukcesan ejon.
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
STR_0000 :
|
||||
STR_0001 :{STRINGID} {COMMA16}
|
||||
STR_0002 :Montaña Rusa Espiral
|
||||
STR_0003 :Montaña Rusa En Pie
|
||||
STR_0003 :Montaña Rusa de pie
|
||||
STR_0004 :Montaña Rusa Colgante
|
||||
STR_0005 :Montaña Rusa Invertida
|
||||
STR_0006 :Montaña Rusa Infantil
|
||||
|
@ -54,7 +54,7 @@ STR_0049 :Casa Encantada
|
|||
STR_0050 :Sala de primeros auxilios
|
||||
STR_0051 :Circo
|
||||
STR_0052 :Tren fantasma
|
||||
STR_0053 :Montaña Rusa En Pie Tornado
|
||||
STR_0053 :Montaña Rusa de pie Tornado
|
||||
STR_0054 :Montaña Rusa de Madera
|
||||
STR_0055 :Montaña de fricción lateral
|
||||
STR_0056 :Ratón Loco
|
||||
|
@ -98,6 +98,7 @@ STR_0093 :Montaña Rusa Híbrida
|
|||
STR_0094 :Montaña Rusa de un solo carril
|
||||
STR_0095 :Montaña Rusa Alpina
|
||||
STR_0096 :Montaña Rusa de madera clásica
|
||||
STR_0097 :Montaña Rusa de pie clásica
|
||||
STR_0512 :Una montaña rusa pequeña de acero con una subida en espiral y vagones con asientos en línea.
|
||||
STR_0513 :Una montaña rusa en el que los pasajeros permanecen de pie.
|
||||
STR_0514 :Los vagones suspendidos bajo los raíles se balancean hacia los lados en las curvas.
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :Una montaña rusa estilo de madera con vías de acero, lo que le pe
|
|||
STR_0604 :Los pasajeros viajan en fila india en una pista de monorraíl estrecha, mientras corren a través de inversiones estrechas y cambios de dirección.
|
||||
STR_0605 :Los pasajeros bajan por una serpenteante vía de acero, frenando para controlar su velocidad.
|
||||
STR_0606 :Una montaña rusa de madera de estilo antiguo con un recorrido rápido y bruto, con muchas caídas, algunas fuerzas G laterales, y diseñada para ofrecer una experiencia ‘fuera de control’.
|
||||
STR_0607 :Una intensa montaña rusa en espiral de acero y de estilo antiguo en la que los pasajeros viajan de pie.
|
||||
STR_0767 :Visitante {INT32}
|
||||
STR_0768 :Manitas {INT32}
|
||||
STR_0769 :Mecánico {INT32}
|
||||
STR_0770 :Guardia {INT32}
|
||||
STR_0771 :Animador {INT32}
|
||||
STR_0777 :Parque sin nombre{POP16}{POP16}
|
||||
STR_0777 :Parque sin nombre
|
||||
STR_0778 :Señal
|
||||
STR_0779 :1
|
||||
STR_0780 :2
|
||||
|
@ -564,10 +566,10 @@ STR_1172 :{YELLOW}{STRINGID}
|
|||
STR_1173 :Construir senderos
|
||||
STR_1174 :Cartel de señal interfiere
|
||||
STR_1175 :No se puede construir esto sobre una pendiente
|
||||
STR_1176 :No se puede construir este camino aquí…
|
||||
STR_1177 :No se puede quitar este camino de aquí…
|
||||
STR_1176 :No se puede construir un sendero aquí…
|
||||
STR_1177 :No se puede quitar este sendero de aquí…
|
||||
STR_1178 :Pendiente del terreno no apto
|
||||
STR_1179 :Camino interfiere
|
||||
STR_1179 :Sendero interfiere
|
||||
STR_1180 :¡No se puede construir bajo el agua!
|
||||
STR_1181 :Senderos
|
||||
STR_1182 :Tipo
|
||||
|
@ -577,8 +579,8 @@ STR_1185 :Dirección
|
|||
STR_1186 :Cuesta abajo
|
||||
STR_1187 :Nivel del suelo
|
||||
STR_1188 :Cuesta arriba
|
||||
STR_1189 :Construye el camino seleccionado
|
||||
STR_1190 :Eliminar la sección de camino previo
|
||||
STR_1189 :Construye el sendero seleccionado
|
||||
STR_1190 :Eliminar la sección de sendero previo
|
||||
STR_1191 :{BLACK}{STRINGID}
|
||||
STR_1192 :{OUTLINE}{RED}{STRINGID}
|
||||
STR_1193 :{WINDOW_COLOUR_2}{STRINGID}
|
||||
|
@ -1041,7 +1043,7 @@ STR_1649 :“¡Me estoy quedando sin dinero!”
|
|||
STR_1650 :“¡Wow! ¡Están construyendo una nueva atracción!”
|
||||
STR_1653 :“… ¡Y aquí estamos en {STRINGID}!”
|
||||
STR_1654 :{WINDOW_COLOUR_2}Pensamientos recientes:
|
||||
STR_1655 :Construir camino a nivel del suelo.
|
||||
STR_1655 :Construir sendero a nivel del suelo.
|
||||
STR_1656 :Construir puente o túnel.
|
||||
STR_1657 :{WINDOW_COLOUR_2}Atracción preferida:
|
||||
STR_1658 :{WINDOW_COLOUR_2}Intensidad: {BLACK}menos de {COMMA16}
|
||||
|
@ -1738,12 +1740,12 @@ STR_2382 :Tierra
|
|||
STR_2383 :Agua
|
||||
STR_2384 :{WINDOW_COLOUR_2}Tu objetivo:
|
||||
STR_2385 :{BLACK}Ninguno
|
||||
STR_2386 :{BLACK}Tener al menos {COMMA16} visitantes en tu parque a finales de {MONTHYEAR}, con una valoración del parque de al menos 600
|
||||
STR_2386 :{BLACK}Tener al menos {COMMA32} visitantes en tu parque a finales de {MONTHYEAR}, con una valoración del parque de al menos 600
|
||||
STR_2387 :{BLACK}Conseguir un valor del parque {POP16}{POP16}{CURRENCY} a final de {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}¡Diviértete!
|
||||
STR_2389 :{BLACK}¡Construye el mejor {STRINGID} que puedas!
|
||||
STR_2390 :{BLACK}Tener al menos 10 tipos de montañas rusas distintas operando en el parque, cada una con un valor de emoción de al menos 6.00
|
||||
STR_2391 :{BLACK}Tener al menos {COMMA16} visitantes en tu parque. ¡No dejes que la valoración baje de 700 en ningún momento!
|
||||
STR_2391 :{BLACK}Tener al menos {COMMA32} visitantes en tu parque. ¡No dejes que la valoración baje de 700 en ningún momento!
|
||||
STR_2392 :{BLACK}Conseguir unos ingresos mensuales por venta de entradas a atracciones de al menos {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Tener al menos 10 tipos de montañas rusas distintas operando en el parque, cada una con una longitud mínima de {LENGTH}, y un valor de emoción de al menos 7.00
|
||||
STR_2394 :{BLACK}Terminar de construir 5 de las montañas rusas no terminadas en este parque, diseñándolas de modo que tengan un valor de emoción de al menos {POP16}{POP16}{COMMA2DP32} cada una
|
||||
|
@ -2054,7 +2056,7 @@ STR_2851 :Escenario ya instalado
|
|||
STR_2852 :Vía ya instalada
|
||||
STR_2853 :¡Prohibido por las autoridades locales!
|
||||
STR_2854 :{RED}¡Los visitantes no encuentran la entrada de {STRINGID}!{NEWLINE}Construye un sendero hacia la entrada
|
||||
STR_2855 :{RED}¡{STRINGID} no tiene un camino de salida!{NEWLINE}Construye un camino desde la salida de la atracción.
|
||||
STR_2855 :{RED}¡{STRINGID} no tiene un sendero de salida!{NEWLINE}Construye un sendero desde la salida de la atracción.
|
||||
STR_2858 :No puedes iniciar una campaña publicitaria…
|
||||
STR_2861 :{WINDOW_COLOUR_2}Bajo licencia a Infogrames Interactive Inc.
|
||||
STR_2971 :Esquema de color principal
|
||||
|
@ -2098,39 +2100,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :No se pudo cargar el archivo…
|
||||
STR_3011 :El archivo contiene datos no válidos
|
||||
STR_3012 :Estilo coches de choque
|
||||
STR_3013 :Estilo Órgano de feria
|
||||
STR_3014 :Estilo fanfarria romana
|
||||
STR_3015 :Estilo oriental
|
||||
STR_3016 :Estilo marciano
|
||||
STR_3017 :Estilo tambores jungla
|
||||
STR_3018 :Estilo egipcio
|
||||
STR_3019 :Estilo juguete
|
||||
STR_3020 :
|
||||
STR_3021 :Estilo espacio
|
||||
STR_3022 :Estilo terror
|
||||
STR_3023 :Estilo tecno
|
||||
STR_3024 :Estilo suave
|
||||
STR_3025 :Estilo verano
|
||||
STR_3026 :Estilo acuático
|
||||
STR_3027 :Estilo salvaje oeste
|
||||
STR_3028 :Estilo jurásico
|
||||
STR_3029 :Estilo rock
|
||||
STR_3030 :Estilo ragtime
|
||||
STR_3031 :Estilo fantasía
|
||||
STR_3032 :Estilo rock 2
|
||||
STR_3033 :Estilo hielo
|
||||
STR_3034 :Estilo nieve
|
||||
STR_3035 :Música personalizada 1
|
||||
STR_3036 :Música personalizada 2
|
||||
STR_3037 :Estilo medieval
|
||||
STR_3038 :Estilo urbano
|
||||
STR_3039 :Estilo órgano
|
||||
STR_3040 :Estilo mecánico
|
||||
STR_3041 :Estilo moderno
|
||||
STR_3042 :Estilo pirata
|
||||
STR_3043 :Estilo rock 3
|
||||
STR_3044 :Estilo caramelo
|
||||
STR_3045 :Selecciona el estilo de música a reproducir
|
||||
STR_3047 :La autoridad local no permite demoler o modificar esta atracción
|
||||
STR_3048 :Campañas de marketing prohibidas por la autoridad local
|
||||
|
@ -2357,7 +2326,7 @@ STR_3305 :{WINDOW_COLOUR_2}Ingreso mensual:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Ganancia mensual:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Longitud mínima:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Rango Satisfacción:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Atracciones/Juegos con orden de preservación:
|
||||
|
@ -2377,7 +2346,7 @@ STR_3328 :No se puede avanzar a la siguiente etapa del editor…
|
|||
STR_3329 :No se ha construido una entrada del parque
|
||||
STR_3330 :El parque debe poseer un terreno
|
||||
STR_3331 :El sendero de la entrada del parque al borde del mapa no está completo o es demasiado complejo. Ha de tener un sólo carril con el menor número posible de cruces y curvas.
|
||||
STR_3332 :La entrada del parque está al revés o no tiene un camino que lleve al borde del mapa
|
||||
STR_3332 :La entrada del parque está al revés o no tiene un sendero que lleve al borde del mapa
|
||||
STR_3333 :Exportar complementos al guardar el juego
|
||||
STR_3334 :Selecciona si los complementos adicionales (datos no distribuidos con el juego principal) utilizados en un escenario deben exportarse al guardar el juego, lo que permite que otros jugadores que no tengan esos complementos puedan abrirlo.
|
||||
STR_3335 :Diseñador de Vías - Selecciona el tipo de Atracción y Vehículo
|
||||
|
@ -2921,7 +2890,7 @@ STR_5755 :Versión de Software Incorrecto (Versión del servidor {STRING})
|
|||
STR_5756 :Contraseña Incorrecta
|
||||
STR_5757 :Servidor Lleno
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} se ha unido al juego
|
||||
STR_5759 :Descargando mapa … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Descargando mapa …
|
||||
STR_5760 :Dólar de Hong Kong (HK$)
|
||||
STR_5761 :Nuevo dólar de Taiwán (NT$)
|
||||
STR_5762 :Yuan Chino (CN¥)
|
||||
|
@ -3140,7 +3109,7 @@ STR_5980 :Texto de bandera: {BLACK}{STRINGID}
|
|||
STR_5981 :No es una bandera
|
||||
STR_5982 :Tipo de escenario grande: {BLACK}{COMMA16}
|
||||
STR_5983 :ID pieza de escenario grande: {BLACK}{COMMA16}
|
||||
STR_5984 :Caminos Bloqueados:
|
||||
STR_5984 :Senderos Bloqueados:
|
||||
STR_5985 :Nueva Carpeta
|
||||
STR_5986 :Escribe el nombre de la nueva carpeta
|
||||
STR_5987 :No se puede crear la carpeta
|
||||
|
@ -3377,7 +3346,7 @@ STR_6257 :Translúcido
|
|||
STR_6258 :Transparente
|
||||
STR_6259 :Deshabilitado
|
||||
STR_6260 :Mostrar casillas bloqueadas
|
||||
STR_6261 :Mostrar caminos anchos
|
||||
STR_6261 :Mostrar senderos anchos
|
||||
STR_6262 :Volumen Maestro
|
||||
STR_6263 :Activar o desactivar todos los sonidos
|
||||
STR_6264 :Usar siempre explorador de archivos del sistema
|
||||
|
@ -3453,7 +3422,7 @@ STR_6343 :Inspector de cuadrícula: Aumentar coordenada Y
|
|||
STR_6344 :Inspector de cuadrícula: Disminuir coordenada Y
|
||||
STR_6345 :Inspector de cuadrícula: Aumentar altura del elemento
|
||||
STR_6346 :Inspector de cuadrícula: Disminuir altura del elemento
|
||||
STR_6347 :¡Agregados a los caminos no se pueden añadir en cruces de nivel!
|
||||
STR_6347 :¡Adiciones a los senderos no se pueden colocar en cruces de nivel!
|
||||
STR_6348 :¡Primero quita el cruce de nivel!
|
||||
STR_6349 :Secuencia de la pantalla de inicio al azar
|
||||
STR_6350 :Distribuir
|
||||
|
@ -3484,7 +3453,7 @@ STR_6374 :G
|
|||
STR_6375 :Paseo Desconocido
|
||||
STR_6376 :{WINDOW_COLOUR_2}Paseo en vehículo:{NEWLINE}{BLACK}{STRINGID} para {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Tipo: {BLACK}{STRINGID} para {STRINGID}
|
||||
STR_6378 :Recepción de lista de objetos: {INT32} / {INT32}
|
||||
STR_6378 :Recepción de lista de objetos:
|
||||
STR_6379 :Se recibieron datos no válidos
|
||||
STR_6380 :¡Actualización disponible!
|
||||
STR_6381 :¡Únete al Discord de OpenRCT2!
|
||||
|
@ -3555,7 +3524,7 @@ STR_6445 :Pasamanos de sendero.
|
|||
STR_6446 :{WINDOW_COLOUR_2}Nombre de la superficie: {BLACK}{STRINGID}
|
||||
STR_6447 :{WINDOW_COLOUR_2}Nombre del pasamanos: {BLACK}{STRINGID}
|
||||
STR_6448 :Formato de objeto no soportado
|
||||
STR_6449 :{WINDOW_COLOUR_2}Caminos:
|
||||
STR_6449 :{WINDOW_COLOUR_2}Senderos:
|
||||
STR_6450 :{BLACK}“{STRING}”
|
||||
STR_6451 :{BLACK}“{STRING}” - {STRING}
|
||||
STR_6452 :{WINDOW_COLOUR_2}Vende: {BLACK}{STRING}
|
||||
|
@ -3583,7 +3552,7 @@ STR_6474 :Visitantes invisibles
|
|||
STR_6475 :Empleados invisibles
|
||||
STR_6476 :Vegetación invisible
|
||||
STR_6477 :Escenario invisible
|
||||
STR_6478 :Caminos invisibles
|
||||
STR_6478 :Senderos invisibles
|
||||
STR_6479 :Atracciones invisibles
|
||||
STR_6480 :Vehículos invisibles
|
||||
STR_6481 :Opciones de transparencia
|
||||
|
@ -3642,8 +3611,8 @@ STR_6533 :{WINDOW_COLOUR_2}Factor de emoción: {BLACK}-{COMMA16}%
|
|||
STR_6534 :{WINDOW_COLOUR_2}Factor de intensidad: {BLACK}-{COMMA16}%
|
||||
STR_6535 :{WINDOW_COLOUR_2}Factor de náusea: {BLACK}-{COMMA16}%
|
||||
STR_6536 :Este parque fue guardado en una versión más reciente de OpenRCT2. Este parque se guardó en la v{INT32}, actualmente estás en la v{INT32}.
|
||||
STR_6537 :Permitir usar caminos normales como cola
|
||||
STR_6538 :Muestra caminos normales en el menú desplegable de colas de la ventana Senderos.
|
||||
STR_6537 :Permitir usar senderos normales como cola
|
||||
STR_6538 :Muestra senderos normales en el menú desplegable de colas de la ventana Senderos.
|
||||
STR_6539 :Freno cerrado
|
||||
STR_6540 :{WINDOW_COLOUR_2}En especial gracias a las siguientes empresas for permitir el uso de su imagen:
|
||||
STR_6541 :{WINDOW_COLOUR_2}Rocky Mountain Construction Group, Josef Wiegand GmbH & Co. KG
|
||||
|
@ -3700,6 +3669,55 @@ STR_6591 :El empleado está reparando una atracción y no puede ser despedido
|
|||
STR_6592 :El empleado está inspeccionando una atracción y no puede ser despedido.
|
||||
STR_6593 :Eliminar vallas del parque
|
||||
STR_6594 :Inspector de cuadricula: Alternar inclinación del muro
|
||||
STR_6595 :{WINDOW_COLOUR_2}Autor: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Autores: {BLACK}{STRING}
|
||||
STR_6597 :Parámetro no válido
|
||||
STR_6598 :Valor fuera de rango
|
||||
STR_6599 :Elemento fantasma no encontrado
|
||||
STR_6600 :Globo no encontrado
|
||||
STR_6601 :Empleado no encontrado
|
||||
STR_6602 :Atracción no encontrada
|
||||
STR_6603 :Entrada de objeto de atracción no encontrada
|
||||
STR_6604 :Jugador no encontrado
|
||||
STR_6605 :Elemento de entrada no encontrado
|
||||
STR_6606 :Elemento de superficie no encontrado
|
||||
STR_6607 :Elemento de casilla no encontrado
|
||||
STR_6608 :Elemento de vía no encontrado
|
||||
STR_6609 :Bloque de vía no encontrado
|
||||
STR_6610 :Elemento de sendero no encontrado
|
||||
STR_6611 :Elemento de muro no encontrado
|
||||
STR_6612 :Elemento de banner no encontrado
|
||||
STR_6613 :Recargar objeto
|
||||
STR_6614 :No se puede cambiar el precio de la entrada al parque
|
||||
STR_6615 :La vía en esta casilla necesita agua
|
||||
STR_6616 :Acción no válida para ese tipo de trabajador
|
||||
STR_6617 :No se puede intercambiar el elemento de la casilla consigo mismo
|
||||
STR_6618 :No se puede poner ni quitar restricción al objeto…
|
||||
STR_6619 :¡Este tipo de objeto no puede ser restringido!
|
||||
STR_6620 :¡Objeto no encontrado!
|
||||
STR_6621 :Restringir
|
||||
STR_6622 :Restringir objeto al Editor de Escenarios y el modo Sandbox.
|
||||
STR_6623 :Escribe ‘help’ para ver la lista de comandos disponibles. Escribe ‘hide’ para ocultar la consola.
|
||||
STR_6624 :Inspector de cuadrícula: Ordernar elementos
|
||||
STR_6625 :Color no válido
|
||||
STR_6626 :La animación está reflejada
|
||||
STR_6627 :¡Velocidad de vía demasiado alta!
|
||||
STR_6628 :¡Sólo puede ser colocado en los bordes del sendero!
|
||||
STR_6629 :Alinear los botones de la barra de herramientas centrados horizontalmente
|
||||
STR_6630 :Este ajuste alineará los botones de la barra de herramientas horizontalmente en el centro de la pantalla. La forma tradicional de alinearlos es en la esquina izquierda y derecha.
|
||||
STR_6631 :Cargando…
|
||||
STR_6632 :Comprobando archivos de objeto…
|
||||
STR_6633 :Comprobando archivos de escenario…
|
||||
STR_6634 :Comprobando archivos de diseño de vía…
|
||||
STR_6635 :Comprobando archivos de recurso…
|
||||
STR_6636 :Comprobando secuencias de título…
|
||||
STR_6637 :Cargando secuencia de título…
|
||||
STR_6638 :Interfaz ampliada
|
||||
STR_6639 :Modifica la interfaz para que sea más fácil de usar con pantallas táctiles
|
||||
STR_6640 :Editar paquetes de recursos…
|
||||
STR_6641 :Ventana de carga/progreso
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
##############
|
||||
# Escenarios #
|
||||
|
@ -4290,89 +4308,89 @@ STR_DTLS :Construye las atracciones Six Flags faltantes, o crea tus propios d
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - Mina de diamantes
|
||||
STR_SCNR :Minas de África
|
||||
STR_PARK :Minas de África
|
||||
STR_DTLS :Has heredado una mina de diamantes en desuso, y has encontrado un valioso diamante. Has decidido invertir ese dinero en construir un parque temático de fama mundial.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Locura de espejismo
|
||||
STR_PARK :Locura de espejismo
|
||||
STR_DTLS :Se ha descubierto un oasis en el desierto, y constituye un hermoso lugar para un parque. También se han proporcionado los medios de transporte hasta el oasis.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :África - Cataratas Victoria
|
||||
STR_SCNR :Sobre el borde
|
||||
STR_PARK :Sobre el borde
|
||||
STR_DTLS :Se ha construido una presa que ofrece abundante y barata energía hidroeléctrica con la que suministrar a un parque. Tendrás que alcanzar un alto valor de parque para poder devolver el dinero del préstamo para la presa.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antártico - recuperación ecológica
|
||||
STR_SCNR :Aventuras heladas
|
||||
STR_PARK :Aventuras heladas
|
||||
STR_DTLS :La agencia de medio ambiente recurre a ti para transformar una vieja refinería, en una atracción turística de primera. El terreno es barato, pero los intereses son elevados. Puedes vender los viejos edificios como chatarra.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Mejora turística de la Gran Muralla China
|
||||
STR_SCNR :Gran Muralla China
|
||||
STR_PARK :Gran Muralla China
|
||||
STR_DTLS :Las autoridades han decidido mejorar el turismo en torno a la Gran Muralla construyendo un parque temático en el terreno adyacente. ¡El dinero no es un problema
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Recuperación costera japonesa
|
||||
STR_SCNR :Costa Okinawa
|
||||
STR_PARK :Costa Okinawa
|
||||
STR_DTLS :Un parque ya existente se ha quedado sin espacio. Tu única opción para seguir construyendo es ganarle terreno al mar, así que has pedido un préstamo. Las restricciones de altura de los edificios son obligatorias debido a los cimientos/rie…
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Palacio del Maharajá
|
||||
STR_SCNR :Parque Maharajá
|
||||
STR_PARK :Parque Maharajá
|
||||
STR_DTLS :Has sido designado por el Maharajá para traer un poco de entretenimiento a la gran población local. Construye un parque inspirado en el palacio del Maharajá.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Aventura en Ayers
|
||||
STR_PARK :Aventura en Ayers
|
||||
STR_DTLS :Estás ayudando al pueblo aborigen a construir un parque como parte de un programa de concienciación cultural. Necesitas a un gran número de visitantes para instruirles acerca de la herencia única del pueblo aborigen.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia; Diversión en la playa
|
||||
STR_SCNR :Bárbara barbacoa playera
|
||||
STR_PARK :Bárbara barbacoa playera
|
||||
STR_DTLS :El parque marino de un empresario local se ha arruinado. Tú ya tienes un pequeño parque y tienes que ganar suficiente dinero para comprar el otro parque a la compañía de construcción. Tendrás que desarrollar tu propio parque para crea…
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - Festival cultural europeo
|
||||
STR_SCNR :Extravagancia europea
|
||||
STR_PARK :Extravagancia europea
|
||||
STR_DTLS :Te han traído aquí para que te ocupes de una atracción europea cultural para visitantes, y tienes que aumentar el número de asistentes para poder devolver el subsidio de la UE al final del periodo parlamentario europeo actual.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovación
|
||||
STR_SCNR :Desde las cenizas
|
||||
STR_PARK :Desde las cenizas
|
||||
STR_DTLS :Un viejo parque se encuentra en mal estado. Has recibido una subvención de la Unión Europea para devolver a esta depauperada área a su antigua gloria. Tendrás que renovar el parque y ganar lo suficiente para pagar la subvención.
|
||||
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :N. América - Isla hawaiana extrema
|
||||
STR_SCNR :Waikiki Guay
|
||||
STR_PARK :Waikiki Guay
|
||||
STR_DTLS :Las gentes de Hawai se han aburrido de practicar surf y ahora buscan algo más intenso. Tienes que construir un parque para satisfacerlos, y conservar alto el índice de atractivo turístico del área.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :N. América - Gran Cañón
|
||||
STR_SCNR :Calamidades en el cañon
|
||||
STR_PARK :Calamidades en el cañon
|
||||
STR_DTLS :Debes construir un parque en el terreno que hay a ambos lados de este tesoro natural, aunque tienes la oportunidad de comprar las tierras vecinas a los indios nativos americanos. Tendrás que cumplir el objetivo de mantener a la población …
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :N. América - Paraíso de montañas rusas
|
||||
STR_SCNR :Paraíso de montañas rusas
|
||||
STR_PARK :Paraíso de montañas rusas
|
||||
STR_DTLS :Eres un exitoso magnate de los negocios que se ha tomado cuatro años sabáticos. Tu deseo es construir un parque sin limitaciones de dinero.
|
||||
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sudamérica; Ciudad perdida inca
|
||||
STR_SCNR :Fundador de la ciudad perdida
|
||||
STR_PARK :Fundador de la ciudad perdida
|
||||
STR_DTLS :Para impulsar aún más el turismo local, tienes que construir un parque que esté a tono con el entorno que lo rodea, y respetando las restricciones de altura.
|
||||
STR_DTLS :Para impulsar aún más el turismo local, tienes que construir un parque que esté en sintonía con el entorno que lo rodea.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sudamérica - Meseta selvática
|
||||
STR_SCNR :Aventuras en la selva
|
||||
STR_PARK :Aventuras en la selva
|
||||
STR_DTLS :En esta valiosa selva el espacio es limitado, tendrás que apretujarte tanto como puedas en el claro existente, con el fin de proporcionar una alternativa viable para la industria maderera local.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sudamérica - Carnaval de Río
|
||||
STR_SCNR :Costas de Sugarloaf
|
||||
STR_PARK :Costas de Sugarloaf
|
||||
STR_DTLS :Gestionas un pequeño parque cerca de Río, pero el banco te ha retirado su préstamo. Tendrás que aumentar rápidamente tu capacidad de ganancias para pagar esta deuda inesperada.
|
||||
|
||||
|
@ -4381,72 +4399,72 @@ STR_DTLS :Gestionas un pequeño parque cerca de Río, pero el banco te ha ret
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Edad media, castillo
|
||||
STR_SCNR :El castillo en el risco
|
||||
STR_PARK :El castillo en el risco
|
||||
STR_DTLS :Los miembros de una asociación local de recreación de batallas históricas se toman su afición muy en serio. Te han confiado la construcción de un parque temático de la edad media en los terrenos del Castillo del risco.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Edad media, Robin Hood
|
||||
STR_SCNR :El bosque de Sherwood
|
||||
STR_PARK :El bosque de Sherwood
|
||||
STR_DTLS :Para quitarles el dinero a los ricos y dárselo a los pobres, tus alegres compañeros y tú habéis decidido construir un parque temático en el bosque de Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Futuro, primer contacto
|
||||
STR_SCNR :Exceso extraterrestre
|
||||
STR_PARK :Exceso extraterrestre
|
||||
STR_DTLS :¡Se ha descubierto vida en un planeta distante Construye un parque temático basado en los extraterrestres para sacar dinero del interés sin precedentes que ha despertado el tema.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Futuro, el mundo futuro
|
||||
STR_SCNR :Ciudad Géminis
|
||||
STR_PARK :Ciudad Géminis
|
||||
STR_DTLS :Demuestra tu inventiva y utópica visión del futuro, crea un parque de diseño futurista que incorpore atracciones de última tecnología.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitológica, estudio de cine animatrónico
|
||||
STR_SCNR :Animatrónica de los antiguos
|
||||
STR_PARK :Animatrónica de los antiguos
|
||||
STR_DTLS :Se te ha encargado dirigir y mejorar un parque temático ya existente sobre unos antiguos estudios de cine. Rinde tributo a los pioneros de las animaciones que fueron los primeros en llevar a la gran pantalla las criaturas míticas.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitológico, cuna de la civilización
|
||||
STR_SCNR :Locura mitológica
|
||||
STR_PARK :Locura mitológica
|
||||
STR_DTLS :Posees una isla de cierto valor arqueológico. Has decidido financiar su conservación construyendo un parque temático basado en la riqueza de la tradición mitológica de la zona.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistórica, después del asteroide
|
||||
STR_SCNR :Carnicería en el cráter
|
||||
STR_PARK :Carnicería en el cráter
|
||||
STR_DTLS :Posees un antiguo cráter de meteorito. Siguiendo una clara vocación industrial, has decidido construir un parque temático de asteroides y convertir tus tierras aparentemente sin valor en una considerable fortuna.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistórica, safari jurásico
|
||||
STR_SCNR :Montañasauro
|
||||
STR_PARK :Montañasauro
|
||||
STR_DTLS :Tu misión es construir un parque de atracciones basado en el jurásico. Para optimizar el acceso de los visitantes a las exóticas exhibiciones de plantas y animales, tendrás que construir atracciones que suban y bajen del valle.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistórica, edad de piedra
|
||||
STR_SCNR :Un paseo por las piedras
|
||||
STR_PARK :Un paseo por las piedras
|
||||
STR_DTLS :Para combatir a los promotores de una autopista y preservar los antiguos círculos de piedra, debes construir un parque temático de la edad de piedra y hacerlo rentable. Pero atraer visitantes no es fácil por el terreno poco acogedor.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Los locos años veinte, la isla prisión
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :La infame isla prisión, antes habitada por contrabandistas y estafadores, ahora está a la venta. Has decidido convertirla en una atracción turística de primer orden ¡y el dinero no es un problema
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Los locos años veinte, la copa Schneider
|
||||
STR_SCNR :Las costas de Schneider
|
||||
STR_PARK :Las costas de Schneider
|
||||
STR_DTLS :En pocos años se cumplirá el 75 aniversario de la victoria de tu abuelo en la copa Schneider. Vas a honrar su logro construyendo un parque temático basado en la famosa carrera de hidroaviones.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Los locos años veinte, rascacielos
|
||||
STR_SCNR :Metrópolis
|
||||
STR_PARK :Metrópolis
|
||||
STR_DTLS :Posees una parcela vacía en la parte baja de la ciudad. Para exprimir al máximo tu propiedad, decides construir un parque temático basado en los rascacielos y la arquitectura Art Decó de los años veinte.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock & Roll - Poder florar
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :En tus tierras se desarrolla todos los años un gran festival musical. Construye un parque temático para mantener a la audiencia entretenida.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock & Roll - Rock & Roll
|
||||
STR_SCNR :La resurrección del Rock & Roll
|
||||
STR_PARK :La resurrección del Rock & Roll
|
||||
STR_DTLS :Este antiguo parque temático ha visto tiempos mejores. Ayuda al propietario a darle un aspecto más rockanrolero y convierte el lugar en un negocio próspero.
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ STR_0013 :Balade en voiture
|
|||
STR_0014 :Chute libre lancée
|
||||
STR_0015 :Bobsleigh
|
||||
STR_0016 :Tour d’observation
|
||||
STR_0017 :Montagnes russe looping
|
||||
STR_0017 :Montagnes russes looping
|
||||
STR_0018 :Canotube
|
||||
STR_0019 :Train de la mine
|
||||
STR_0020 :Télésiège
|
||||
|
@ -49,7 +49,7 @@ STR_0042 :Vrille
|
|||
STR_0043 :Anneaux de l’espace
|
||||
STR_0044 :Chute libre renversée
|
||||
STR_0045 :Ascenseur
|
||||
STR_0046 :Montagnes russes en chute vert.
|
||||
STR_0046 :Montagnes russes à chute verticale
|
||||
STR_0047 :Distributeur de monnaie
|
||||
STR_0048 :Twist
|
||||
STR_0049 :Maison hantée
|
||||
|
@ -67,7 +67,7 @@ STR_0060 :Manège Inconnu (3A)
|
|||
STR_0061 :Virginia Reel
|
||||
STR_0062 :Bateaux éclabousseurs
|
||||
STR_0063 :Mini hélicoptères
|
||||
STR_0064 :Mont. russes — posit. couchée
|
||||
STR_0064 :Montagnes russes en position couchée
|
||||
STR_0065 :Monorail suspendu
|
||||
STR_0066 :Manège Inconnu (40)
|
||||
STR_0067 :Inverseur
|
||||
|
@ -80,7 +80,7 @@ STR_0073 :Maison biscornue
|
|||
STR_0074 :Vélos monorail
|
||||
STR_0075 :Montagnes compactes inversées
|
||||
STR_0076 :Montagnes aquatiques
|
||||
STR_0077 :Voiture propulsée dans les airs
|
||||
STR_0077 :Montagnes russes verticales à air comprimé
|
||||
STR_0078 :Epingle à cheveux inversée
|
||||
STR_0079 :Tapis volant
|
||||
STR_0080 :Balade sous-marine
|
||||
|
@ -100,6 +100,7 @@ STR_0093 :Montagnes russes hybrides
|
|||
STR_0094 :Montagnes russes à rail unique
|
||||
STR_0095 :Montagnes russes alpines
|
||||
STR_0096 :Montagnes russes en bois classiques
|
||||
STR_0097 :Montagnes russes debout classiques
|
||||
STR_0512 :Des voitures individuelles descendent des pentes régulières en virage
|
||||
STR_0513 :Grand huit que les passagers parcourent debout
|
||||
STR_0514 :Des voitures suspendues sous la voie se balancent dans les virages des montagnes russes
|
||||
|
@ -183,12 +184,13 @@ STR_0603 :Train de montagnes russes en bois avec des rails en acier, permetta
|
|||
STR_0604 :Les passagers parcourent une voie à rail unique dans des voitures mono-places, à travers des inversions et des virages serrés
|
||||
STR_0605 :Les passagers dévalent une voie en acier sinueuse, freinant pour contrôler leur vitesse
|
||||
STR_0606 :Une montagne russe en bois au style ancien, rapide et turbulente, avec de nombreux moments en suspension, quelques forces latérales et conçues pour paraître hors de contrôle
|
||||
STR_0607 :Les passagers parcourent debout une montagne russe en acier intense au style ancien, ponctuée d’inversions
|
||||
STR_0767 :Visiteur {INT32}
|
||||
STR_0768 :Agent d’entretien {INT32}
|
||||
STR_0769 :Mécanicien {INT32}
|
||||
STR_0770 :Agent de sécurité {INT32}
|
||||
STR_0771 :Animateur {INT32}
|
||||
STR_0777 :Parc sans nom{POP16}{POP16}
|
||||
STR_0777 :Parc sans nom
|
||||
STR_0778 :Panneau
|
||||
STR_0779 :1er
|
||||
STR_0780 :2
|
||||
|
@ -989,7 +991,7 @@ STR_1594 :« Cette soupe aux raviolis de {STRINGID} est vraiment une bonne a
|
|||
STR_1595 :« Cette soupe aux boulettes de viande de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1596 :« Ce jus de fruits de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1597 :« Ce lait de soja de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1598 :« Ce sujongkwa de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1598 :« Ce Sujeonggwa de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1599 :« Ce sandwich de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1600 :« Ce cookie de {STRINGID} est vraiment une bonne affaire »
|
||||
STR_1601 :
|
||||
|
@ -1021,7 +1023,7 @@ STR_1626 :« Je ne paierai pas si cher pour une soupe aux raviolis de {STRIN
|
|||
STR_1627 :« Je ne paierai pas si cher pour une soupe aux boulettes de viandes de {STRINGID} »
|
||||
STR_1628 :« Je ne paierai pas si cher pour un jus de fruits de {STRINGID} »
|
||||
STR_1629 :« Je ne paierai pas si cher pour du lait de soja de {STRINGID} »
|
||||
STR_1630 :« Je ne paierai pas si cher pour un sujongkwa de {STRINGID} »
|
||||
STR_1630 :« Je ne paierai pas si cher pour un Sujeonggwa de {STRINGID} »
|
||||
STR_1631 :« Je ne paierai pas si cher pour un sandwich de {STRINGID} »
|
||||
STR_1632 :« Je ne paierai pas si cher pour un cookie de {STRINGID} »
|
||||
STR_1633 :
|
||||
|
@ -1491,7 +1493,7 @@ STR_2110 :{WINDOW_COLOUR_2}Prix de la soupe aux raviolis :
|
|||
STR_2111 :{WINDOW_COLOUR_2}Prix de la soupe aux boulettes de viande :
|
||||
STR_2112 :{WINDOW_COLOUR_2}Prix d’un jus de fruits :
|
||||
STR_2113 :{WINDOW_COLOUR_2}Prix d’un lait de soja :
|
||||
STR_2114 :{WINDOW_COLOUR_2}Prix d’un sujongkwa :
|
||||
STR_2114 :{WINDOW_COLOUR_2}Prix d’un Sujeonggwa :
|
||||
STR_2115 :{WINDOW_COLOUR_2}Prix d’un sandwich :
|
||||
STR_2116 :{WINDOW_COLOUR_2}Prix d’un cookie :
|
||||
STR_2117 :{WINDOW_COLOUR_2}
|
||||
|
@ -1510,7 +1512,7 @@ STR_2132 :Soupe aux raviolis
|
|||
STR_2133 :Soupe aux boulettes de viande
|
||||
STR_2134 :Jus de fruits
|
||||
STR_2135 :Lait de soja
|
||||
STR_2136 :Sujongkwa
|
||||
STR_2136 :Sujeonggwa
|
||||
STR_2137 :Sandwich
|
||||
STR_2138 :Cookie
|
||||
STR_2139 :Bol vide
|
||||
|
@ -1529,7 +1531,7 @@ STR_2154 :Soupes aux raviolis
|
|||
STR_2155 :Soupes aux boulettes de viande
|
||||
STR_2156 :Jus de fruits
|
||||
STR_2157 :Laits de soja
|
||||
STR_2158 :Sujongkwa
|
||||
STR_2158 :Sujeonggwa
|
||||
STR_2159 :Sandwichs
|
||||
STR_2160 :Cookies
|
||||
STR_2161 :Bols vides
|
||||
|
@ -1548,7 +1550,7 @@ STR_2176 :de la soupe aux raviolis
|
|||
STR_2177 :de la soupe aux boulettes de viande
|
||||
STR_2178 :un jus de fruits
|
||||
STR_2179 :du lait de soja
|
||||
STR_2180 :du Sujongkwa
|
||||
STR_2180 :du Sujeonggwa
|
||||
STR_2181 :un sandwich
|
||||
STR_2182 :un cookie
|
||||
STR_2183 :un bol vide
|
||||
|
@ -1567,7 +1569,7 @@ STR_2198 :Soupe aux raviolis
|
|||
STR_2199 :Soupe aux boulettes de viande
|
||||
STR_2200 :Jus de fruits
|
||||
STR_2201 :Lait de soja
|
||||
STR_2202 :Sujongkwa
|
||||
STR_2202 :Sujeonggwa
|
||||
STR_2203 :Sandwich
|
||||
STR_2204 :Cookie
|
||||
STR_2205 :Bol vide
|
||||
|
@ -1744,12 +1746,12 @@ STR_2382 :Terrain
|
|||
STR_2383 :Eau
|
||||
STR_2384 :{WINDOW_COLOUR_2}Votre objectif :
|
||||
STR_2385 :{BLACK}Aucun
|
||||
STR_2386 :{BLACK}Avoir au moins {COMMA16} visiteurs dans votre parc à la fin {MONTHYEAR}, avec une évaluation de parc d’au moins 600
|
||||
STR_2386 :{BLACK}Avoir au moins {COMMA32} visiteurs dans votre parc à la fin {MONTHYEAR}, avec une évaluation de parc d’au moins 600
|
||||
STR_2387 :{BLACK}Atteindre une valeur de parc d’au moins {POP16}{POP16}{CURRENCY} à la fin {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Amusez-vous !
|
||||
STR_2389 :{BLACK}Construisez la meilleure attraction {STRINGID} possible !
|
||||
STR_2390 :{BLACK}Avoir construit au moins 10 montagnes russes différentes dans votre parc, chacune d’entre elles atteignant un indice d’engouement d’au moins 6.00
|
||||
STR_2391 :{BLACK}Avoir reçu au moins {COMMA16} visiteurs dans votre parc. L’évaluation du parc ne doit jamais descendre en dessous des 700 !
|
||||
STR_2391 :{BLACK}Avoir reçu au moins {COMMA32} visiteurs dans votre parc. L’évaluation du parc ne doit jamais descendre en dessous des 700 !
|
||||
STR_2392 :{BLACK}Obtenir un revenu mensuel avec les tickets d’attraction d’au moins {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Avoir construit au moins 10 montagnes russes différentes dans votre parc, chacune d’entre elles atteignant une longueur d’au moins {LENGTH}, avec un indice d’engouement d’au moins 7.00
|
||||
STR_2394 :{BLACK}Terminer la construction des 5 montagnes russes entamées dans ce parc, avec une conception leur permettant d’atteindre un indice d’engouement d’au moins {POP16}{POP16}{COMMA2DP32} chacune
|
||||
|
@ -2002,7 +2004,7 @@ STR_2793 :(Réussi par {STRINGID})
|
|||
STR_2794 :{WINDOW_COLOUR_2}Réussi par : {BLACK}{STRINGID}{NEWLINE}{WINDOW_COLOUR_2} avec une valeur de société de : {BLACK}{CURRENCY}
|
||||
STR_2795 :Trier
|
||||
STR_2796 :Trie la liste des attractions dans l’ordre avec le type d’informations affiché
|
||||
STR_2797 :Défiler la vue quand le curseur atteint le bord de l’écran
|
||||
STR_2797 :Défiler la vue quand le curseur est au bord de l’écran
|
||||
STR_2798 :Fait défiler la vue quand le curseur atteint le bord de l’écran
|
||||
STR_2799 :Voir ou modifier les touches de raccourci
|
||||
STR_2800 :{WINDOW_COLOUR_2}Nombre total d’entrées : {BLACK}{COMMA32}
|
||||
|
@ -2104,39 +2106,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Impossible de charger le fichier…
|
||||
STR_3011 :Le fichier contient des données non valides
|
||||
STR_3012 :Auto-tamponneuse
|
||||
STR_3013 :Orgue champ de foire
|
||||
STR_3014 :Fanfare romaine
|
||||
STR_3015 :Oriental
|
||||
STR_3016 :Alien
|
||||
STR_3017 :Tambours de la jungle
|
||||
STR_3018 :Egyptien
|
||||
STR_3019 :Jouets par milliers
|
||||
STR_3020 :
|
||||
STR_3021 :Espace
|
||||
STR_3022 :Horreur
|
||||
STR_3023 :Techno
|
||||
STR_3024 :Tranquille
|
||||
STR_3025 :Estival
|
||||
STR_3026 :Aquatique
|
||||
STR_3027 :Western
|
||||
STR_3028 :Jurassique
|
||||
STR_3029 :Rock
|
||||
STR_3030 :Ragtime
|
||||
STR_3031 :Imaginaire
|
||||
STR_3032 :Rock 2
|
||||
STR_3033 :Glace
|
||||
STR_3034 :Neige
|
||||
STR_3035 :Musique perso 1
|
||||
STR_3036 :Musique perso 2
|
||||
STR_3037 :Médiéval
|
||||
STR_3038 :Urbain
|
||||
STR_3039 :Orgue
|
||||
STR_3040 :Mécanique
|
||||
STR_3041 :Moderne
|
||||
STR_3042 :Pirates
|
||||
STR_3043 :Rock 3
|
||||
STR_3044 :Bonbon-ville
|
||||
STR_3045 :Choisit le style de musique
|
||||
STR_3047 :Les autorités locales interdisent la démolition ou modification de cette attraction
|
||||
STR_3048 :Les autorités locales interdisent toute campagne marketing
|
||||
|
@ -2363,7 +2332,7 @@ STR_3305 :{WINDOW_COLOUR_2}Revenu mensuel :
|
|||
STR_3306 :{WINDOW_COLOUR_2}Bénéfice mensuel :
|
||||
STR_3307 :{WINDOW_COLOUR_2}Longueur minimum :
|
||||
STR_3308 :{WINDOW_COLOUR_2}Indice d’engouement :
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Attractions protégées :
|
||||
|
@ -2925,7 +2894,7 @@ STR_5755 :Mauvaise version du programme (le serveur utilise {STRING})
|
|||
STR_5756 :Mauvais mot de passe
|
||||
STR_5757 :Serveur plein
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} a rejoint la partie
|
||||
STR_5759 :Téléchargement de la carte… ({INT32}/{INT32} Kio)
|
||||
STR_5759 :Téléchargement de la carte…
|
||||
STR_5760 :Dollars de Hong Kong (HK$)
|
||||
STR_5761 :Nouveau Dollar Taïwanais (NT$)
|
||||
STR_5762 :Yuan Chinois (CN¥)
|
||||
|
@ -3489,7 +3458,7 @@ STR_6374 :C
|
|||
STR_6375 :Attraction inconnue
|
||||
STR_6376 :{WINDOW_COLOUR_2}Véhicule : {NEWLINE}{BLACK}{STRINGID} pour {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Type : {BLACK}{STRINGID} pour {STRINGID}
|
||||
STR_6378 :Réception de la liste des objets : {INT32} / {INT32}
|
||||
STR_6378 :Réception de la liste des objets :
|
||||
STR_6379 :Donnée(s) invalide(s) reçues
|
||||
STR_6380 :Mise à jour disponible !
|
||||
STR_6381 :Rejoindre le Discord d’OpenRCT2 !
|
||||
|
@ -3703,6 +3672,56 @@ STR_6589 :Placer les boutons de fenêtre à gauche
|
|||
STR_6590 :Place les boutons de fenêtre (par exemple pour fermer la fenêtre) sur la gauche de la barre de titre au lieu de la droite
|
||||
STR_6591 :L’employé est en train de réparer une attraction et ne peut pas être licencié.
|
||||
STR_6592 :L’employé est en train d’inspecter une attraction et ne peut pas être licencié.
|
||||
STR_6593 :Retirer les clôtures du parc
|
||||
STR_6594 :Inspecteur de cases: Permuter la pente des murs
|
||||
STR_6595 :{WINDOW_COLOUR_2}Créé par : {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Créé par : {BLACK}{STRING}
|
||||
STR_6597 :Paramètre invalide
|
||||
STR_6598 :Valeur hors plage
|
||||
STR_6599 :Élément fantôme introuvable
|
||||
STR_6600 :Ballon introuvable
|
||||
STR_6601 :Employé introuvable
|
||||
STR_6602 :Attraction introuvable
|
||||
STR_6603 :Entrée d’objet d’attraction introuvable
|
||||
STR_6604 :Joueur/joueuse introuvable
|
||||
STR_6605 :Élément d’entrée introuvable
|
||||
STR_6606 :Élément de surface introuvable
|
||||
STR_6607 :Élément de case introuvable
|
||||
STR_6608 :Élément de voie introuvable
|
||||
STR_6609 :Bloc de voie introuvable
|
||||
STR_6610 :Élément de chemin introuvable
|
||||
STR_6611 :Élément de mur introuvable
|
||||
STR_6612 :Élément de bannière introuvable
|
||||
STR_6613 :Recharger l’objet
|
||||
STR_6614 :Impossible de changer le prix d’entrée du parc
|
||||
STR_6615 :La voie a besoin d’eau sur cette case
|
||||
STR_6616 :Action invalide pour ce type de personnel
|
||||
STR_6617 :Impossible de permuter un élément de case avec lui-même
|
||||
STR_6618 :Impossible de restreindre ou dé-restreindre l’objet…
|
||||
STR_6619 :Ce type d’objet ne peut pas être restreint !
|
||||
STR_6620 :Objet introuvable !
|
||||
STR_6621 :Restreindre
|
||||
STR_6622 :Restreint l’objet à l’éditeur de scénario et au mode bac à sable
|
||||
STR_6623 :Tapez « help » pour une liste des commandes disponibles. Tapez « hide » pour cacher la console.
|
||||
STR_6624 :Inspecteur de cases : Trier les éléments
|
||||
STR_6625 :Couleur invalide
|
||||
STR_6626 :L’animation est retournée
|
||||
STR_6627 :Vitesse de voie trop élevée !
|
||||
STR_6628 :Ne peut être placé que sur le bord des allées !
|
||||
STR_6629 :Centrer les boutons de la barre d’outils
|
||||
STR_6630 :Ce réglage aligne horizontalement les boutons de la barre d’outil au centre de l’écran, au lieu de les répartir à gauche et à droite
|
||||
STR_6631 :Chargement…
|
||||
STR_6632 :Vérification des fichiers d’objet…
|
||||
STR_6633 :Vérification des fichiers de scénario…
|
||||
STR_6634 :Vérification des fichiers de conception de voie…
|
||||
STR_6635 :Vérification des packs de ressources…
|
||||
STR_6636 :Vérification des séquences titre…
|
||||
STR_6637 :Chargement de la séquence titre…
|
||||
STR_6638 :Interface agrandie
|
||||
STR_6639 :Adapte l’interface à un usage tactile
|
||||
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} Kio)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4283,87 +4302,87 @@ STR_DTLS :Construisez les attractions Six Flags manquantes ou créez vos prop
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afrique — La mine de diamants
|
||||
STR_SCNR :Mines d’Afrique
|
||||
STR_PARK :Mines d’Afrique
|
||||
STR_DTLS :Vous héritez d’une mine de diamants désaffectée et découvrez un diamant de grande valeur. Vous décidez d’investir cet argent dans la construction d’un parc à thème de renommée mondiale.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afrique — L’oasis
|
||||
STR_SCNR :Mirage fou
|
||||
STR_PARK :Mirage fou
|
||||
STR_DTLS :Une oasis offrant le cadre idéal pour un parc a été découverte dans le désert. Des moyens de transport ont été fournis.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afrique — Chutes Victoria
|
||||
STR_SCNR :Amortir la chute
|
||||
STR_PARK :Amortir la chute
|
||||
STR_DTLS :Un barrage offrant suffisamment de puissance hydroélectrique à faible coût pour la création d’un parc a été construit. Votre but est d’obtenir une haute rentabilité pour rembourser l’emprunt du barrage.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctique — Sauvetage écologique
|
||||
STR_SCNR :Aventures glacées
|
||||
STR_PARK :Aventures glacées
|
||||
STR_DTLS :L’agence pour l’environnement vous charge de transformer une vieille raffinerie de pétrole en attraction touristique de premier ordre. Le terrain n’est pas cher mais l’intérêt sur l’emprunt est élevé. Vous pouvez vendre les équipements.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asie — Développement de la Grande Muraille
|
||||
STR_SCNR :Grande Muraille de Chine
|
||||
STR_PARK :Grande Muraille de Chine
|
||||
STR_DTLS :Les autorités ont décidé d’accroître le tourisme dans les environs de la Grande Muraille en construisant un parc à thème sur les terrains environnants. Aucune restriction financière.
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asie — A la conquête de l’océan
|
||||
STR_SCNR :Côte Okinawa
|
||||
STR_PARK :Côte Okinawa
|
||||
STR_DTLS :L’un de vos parcs au Japon ne peut plus s’étendre. Une seule possibilité : construire sur la mer. Vous contractez un emprunt et devez respecter des restrictions de hauteur en raison du risque de tremblement de terre.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia — Le palais du maharajah
|
||||
STR_SCNR :Parc Maharajah
|
||||
STR_PARK :Parc Maharajah
|
||||
STR_DTLS :Le maharajah vous a chargé de divertir la nombreuse population locale. Construisez un parc inspiré du palais du maharajah.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Océanie — Ayers Rock
|
||||
STR_SCNR :L’aventure aborigène
|
||||
STR_PARK :L’aventure aborigène
|
||||
STR_DTLS :Vous aidez les Aborigènes à construire un parc s’inscrivant dans un programme de sensibilisation culturelle. Vous devez toucher un large public et l’intéresser au patrimoine authentique des Aborigènes.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Océanie — Fun at the Beach
|
||||
STR_SCNR :Attractions sous les tropiques
|
||||
STR_PARK :Attractions sous les tropiques
|
||||
STR_DTLS :Le parc maritime d’un entrepreneur local fait faillite. Vous êtes à la tête d’un petit parc et devez trouver les fonds nécessaires au rachat de l’autre parc. Vous y parviendrez en visant la création d’un immense parc combiné.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe — Le festival culturel européen
|
||||
STR_SCNR :L’extravagance européenne
|
||||
STR_PARK :L’extravagance européenne
|
||||
STR_DTLS :Vous avez été choisi pour reprendre un parc d’attractions culturel européen et devez augmenter sa fréquentation pour pouvoir rembourser les subventions européennes à la fin du mandat parlementaire européen.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe — Rénovation
|
||||
STR_SCNR :La Renaissance
|
||||
STR_PARK :La Renaissance
|
||||
STR_DTLS :Un ancien parc est tombé en ruines. Vous recevez une subvention de l’Union Européenne pour rendre à cette zone défavorisée sa gloire passée. Vous devez rénover le parc et rembourser la subvention.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Amérique du Nord — Hawaii extrême
|
||||
STR_SCNR :C’est parti Waikiki !
|
||||
STR_PARK :C’est parti Waikiki !
|
||||
STR_DTLS :Les habitants de Hawaii en ont assez de surfer et cherche des sensations plus fortes. Vous devez construire un parc qui les satisfera et qui garantira l’attrait touristique de la zone.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Amérique du Nord — Le Grand Canyon
|
||||
STR_SCNR :Pas de faille possible
|
||||
STR_PARK :Pas de faille possible
|
||||
STR_DTLS :Vous devez construire un parc à étendue limitée de chaque côté de ce cadeau de la nature. Vous pouvez acheter les terres avoisinantes aux Indiens locaux. Vous devez remplir cet objectif pour maintenir le nombre d’habitants dans la ville.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Amérique du Nord — Le parc de vos rêves
|
||||
STR_SCNR :Le paradis des montagnes russes
|
||||
STR_PARK :Le paradis des montagnes russes
|
||||
STR_DTLS :Vous êtes un businessman accompli en période sabbatique de 4 ans, désirant construire un parc sans la moindre restriction financière.
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Amérique du Sud — La cité inca
|
||||
STR_SCNR :Les aventuriers de la cité perdue
|
||||
STR_PARK :Les aventuriers de la cité perdue
|
||||
STR_DTLS :Pour dynamiser encore plus le tourisme local vous devez construire un parc en harmonie avec son environnement, avec des restrictions de hauteur.
|
||||
STR_DTLS :Pour dynamiser encore plus le tourisme local vous devez construire un parc en harmonie avec son environnement.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Amérique du Sud — La forêt équatoriale
|
||||
STR_SCNR :La forêt en folie
|
||||
STR_PARK :La forêt en folie
|
||||
STR_DTLS :L’espace est limité dans la précieuse forêt équatoriale : vous devez entasser les éléments autant que vous pouvez dans la clairière déjà existante, de manière à fournir une alternative à l’industrie sylvestre locale.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Amérique du Sud — Le carnaval de Rio
|
||||
STR_SCNR :Au pied du pain de sucre
|
||||
STR_PARK :Au pied du pain de sucre
|
||||
STR_DTLS :Vous dirigez un petit parc près de Rio, mais la banque a demandé le remboursement de votre prêt. Vous devez rapidement augmenter votre rentabilité pour rembourser cette dette inattendue.
|
||||
|
||||
|
@ -4371,72 +4390,72 @@ STR_DTLS :Vous dirigez un petit parc près de Rio, mais la banque a demandé
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Moyen Âge — Château
|
||||
STR_SCNR :Château en bord de falaise
|
||||
STR_PARK :Château en bord de falaise
|
||||
STR_DTLS :Les sociétaires d’une association de reconstitution de combats médiévaux prennent leur activité très au sérieux. Ils vous ont chargé de construire un parc sur le thème du Moyen Âge sur les terres d’un château en bord de falaise.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Moyen Âge — Robin des Bois
|
||||
STR_SCNR :Forêt de Sherwood
|
||||
STR_PARK :Forêt de Sherwood
|
||||
STR_DTLS :Pour voler l’argent des riches et le donner aux pauvres, vos joyeux compères et vous-même avez décidé de construire un parc dans la forêt de Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Futur — Rencontre du 3e type
|
||||
STR_SCNR :Extravagance extraterrestre
|
||||
STR_PARK :Extravagance extraterrestre
|
||||
STR_DTLS :Une forme de vie a été découverte sur une autre planète. Construisez un parc sur le thème des extraterrestres pour engranger un maximum de profits.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Futur — Le monde du futur
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Faites preuve de créativité et laissez parler vos talents de visionnaire en construisant un parc futuriste proposant des attractions du dernier cri.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythologique — Automates de films
|
||||
STR_SCNR :Automates de l’Antiquité
|
||||
STR_PARK :Automates de l’Antiquité
|
||||
STR_DTLS :Vous êtes chargé(e) de rénover et d’exploiter un parc déjà existant, construit à partir d’un ancien décor de cinéma. Rendez hommage aux pionniers de l’animation d’automates qui ont donné vie à des créatures mythiques dans les salles obscures.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythologique — Berceau de la civilisation
|
||||
STR_SCNR :Folie mythologique
|
||||
STR_PARK :Folie mythologique
|
||||
STR_DTLS :Vous possédez une île contenant des trésors archéologiques. Vous avez décidé d’en financer la préservation en construisant un parc sur le thème des richesses mythologiques du site.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Préhistorique — Après l’astéroïde
|
||||
STR_SCNR :Cratère en folie
|
||||
STR_PARK :Cratère en folie
|
||||
STR_DTLS :Vous possédez un vieux cratère météoritique poussiéreux. Avec l’esprit d’entreprise qui vous caractérise, vous avez décidé de construire un parc sur le thème des astéroïdes et de rendre cet endroit rentable.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Préhistorique — Safari jurassique
|
||||
STR_SCNR :Le retour des dinosaures
|
||||
STR_PARK :Le retour des dinosaures
|
||||
STR_DTLS :Vous êtes chargé(e) de construire un parc sur le thème du jurassique. Pour optimiser l’accès des visiteurs aux plantes exotiques et aux exhibitions d’animaux, vous allez devoir construire des montagnes russes parcourant la vallée.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Préhistorique — L’âge de pierre
|
||||
STR_SCNR :Promenade rocailleuse
|
||||
STR_PARK :Promenade rocailleuse
|
||||
STR_DTLS :Pour concurrencer les promoteurs d’autoroutes et préserver la beauté du site, vous devrez construire un parc sur le thème de l’âge de pierre et le rentabiliser. Attirer les visiteurs ne sera pas facile dans un contexte aussi inhospitalier.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Les années folles — Le Rocher
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :La fameuse prison, autrefois remplie de trafiquants et de racketteurs, est aujourd’hui à vendre. Vous avez décidé de la transformer en attraction touristique, sans restriction financière.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Les années folles — La Coupe Schneider
|
||||
STR_SCNR :Course d’hydravions
|
||||
STR_PARK :Course d’hydravions
|
||||
STR_DTLS :Dans quelques années, ce sera le 75e anniversaire de la victoire de votre grand-père dans la Coupe Schneider. Vous allez lui rendre hommage en construisant un parc sur le thème de cette course légendaire d’hydravions.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Les années folles — Gratte-ciel
|
||||
STR_SCNR :Métropolis
|
||||
STR_PARK :Métropolis
|
||||
STR_DTLS :Vous possédez un terrain nu dans les faubourgs de la ville. Pour en tirer un maximum de revenus, construisez un parc sur le thème des gratte-ciel en vous inspirant de l’architecture art déco des années folles.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock & Roll — Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Un grand festival de musique se tient sur votre terrain chaque année. Construisez un parc sur le thème du mouvement hippie qui satisfera les amateurs du genre.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock & Roll — Rock & Roll
|
||||
STR_SCNR :La renaissance du Rock & Roll
|
||||
STR_PARK :La renaissance du Rock & Roll
|
||||
STR_DTLS :Ce parc sur le thème du Rock & Roll a connu son heure de gloire. Aidez son propriétaire à le réaménager et à lui donner un second souffle.
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Ottovolante ibrido
|
|||
STR_0094 :Ottovolante a binario singolo
|
||||
STR_0095 :Ottovolante Alpino
|
||||
STR_0096 :Ottovolante di legno classico
|
||||
STR_0097 :Ottovolante in piedi classico
|
||||
STR_0512 :Un ottovolante compatto con una salita a spirale e cadute fluide e tortuose.
|
||||
STR_0513 :Un ottovolante con giro della morte dove i passeggeri si trovano in una posizione eretta
|
||||
STR_0514 :I treni, sospesi sotto l’ottovolante, durante le curve oscillano lateralmente
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :Un ottovolante in legno con i binari in acciaio, in grado di avere
|
|||
STR_0604 :I visitatori viaggiano lungo un sottile tracciato da monorotaia, attraverso strette inversioni e cambi di direzione.
|
||||
STR_0605 :I visitatori scendono lungo una rotaia piena di curve, frenando per controllare la velocità del loro vagone
|
||||
STR_0606 :Un ottovolante di legno vecchio stile con un percorso veloce e turbolento, con molto air-time, G laterali, progettato per farti sentire “fuori controllo”
|
||||
STR_0607 :Un intenso ottovolante d’acciaio vecchio stile, nel quale i passeggeri sono in posizione eretta
|
||||
STR_0767 :Visitatore {INT32}
|
||||
STR_0768 :Tuttofare {INT32}
|
||||
STR_0769 :Meccanico {INT32}
|
||||
STR_0770 :Vigilante {INT32}
|
||||
STR_0771 :Intrattenitore {INT32}
|
||||
STR_0777 :Parco senza nome{POP16}{POP16}
|
||||
STR_0777 :Parco senza nome
|
||||
STR_0778 :Cartello
|
||||
STR_0779 :1°
|
||||
STR_0780 :2
|
||||
|
@ -1740,12 +1742,12 @@ STR_2382 :Terreno
|
|||
STR_2383 :Acqua
|
||||
STR_2384 :{WINDOW_COLOUR_2}Il tuo obiettivo:
|
||||
STR_2385 :{BLACK}Nessuno
|
||||
STR_2386 :{BLACK}Avere almeno {COMMA16} visitatori nel parco entro la fine di {MONTHYEAR}, con una valutazione del parco di almeno 600
|
||||
STR_2386 :{BLACK}Avere almeno {COMMA32} visitatori nel parco entro la fine di {MONTHYEAR}, con una valutazione del parco di almeno 600
|
||||
STR_2387 :{BLACK}Far raggiungere al parco un valore di almeno {POP16}{POP16}{CURRENCY} entro la fine di {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Divertirsi!
|
||||
STR_2389 :{BLACK}Costruire il migliore {STRINGID} si possa!
|
||||
STR_2390 :{BLACK}Avere 10 tipi diversi di ottovolante nel parco, ognuno con un livello di divertimento di almeno 6.00
|
||||
STR_2391 :{BLACK}Avere almeno {COMMA16} visitatori nel parco. E non devi mai avere una valutazione del parco inferiore a 700!
|
||||
STR_2391 :{BLACK}Avere almeno {COMMA32} visitatori nel parco. E non devi mai avere una valutazione del parco inferiore a 700!
|
||||
STR_2392 :{BLACK}Incassare mensilmente tramite i biglietti delle attrazioni almeno {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Avere 10 tipi diversi di ottovolante nel parco, ognuno della lunghezza minima di {LENGTH} e un livello di divertimento di almeno 7.00
|
||||
STR_2394 :{BLACK}Finire di costruire tutti e cinque gli ottovolanti parzialmente costruiti in questo parco, facendo loro raggiungere un livello di divertimento di almeno {POP16}{POP16}{COMMA2DP32} ciascuno
|
||||
|
@ -2099,39 +2101,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Impossibile caricare il file…
|
||||
STR_3011 :Il file contiene dati non validi
|
||||
STR_3012 :Stile auto da scontro
|
||||
STR_3013 :Stile organo da fiera
|
||||
STR_3014 :Stile fanfara romana
|
||||
STR_3015 :Stile orientale
|
||||
STR_3016 :Stile marziano
|
||||
STR_3017 :Stile tamburi nella giungla
|
||||
STR_3018 :Stile egiziano
|
||||
STR_3019 :Stile giocattolo
|
||||
STR_3020 :
|
||||
STR_3021 :Stile spaziale
|
||||
STR_3022 :Stile horror
|
||||
STR_3023 :Stile techno
|
||||
STR_3024 :Stile tranquillo
|
||||
STR_3025 :Stile estivo
|
||||
STR_3026 :Stile acquatico
|
||||
STR_3027 :Stile far west
|
||||
STR_3028 :Stile giurassico
|
||||
STR_3029 :Stile rock
|
||||
STR_3030 :Stile ragtime
|
||||
STR_3031 :Stile fantastico
|
||||
STR_3032 :Stile rock 2
|
||||
STR_3033 :Stile ghiacciato
|
||||
STR_3034 :Stile nevoso
|
||||
STR_3035 :Musica personalizzata 1
|
||||
STR_3036 :Musica personalizzata 2
|
||||
STR_3037 :Stile medievale
|
||||
STR_3038 :Stile urbano
|
||||
STR_3039 :Stile organo
|
||||
STR_3040 :Stile meccanico
|
||||
STR_3041 :Stile moderno
|
||||
STR_3042 :Stile piratesco
|
||||
STR_3043 :Stile rock 3
|
||||
STR_3044 :Stile dolciumi
|
||||
STR_3045 :Seleziona uno stile musicale da suonare
|
||||
STR_3047 :Le autorità locali vietano la demolizione o la modifica di quest’attrazione
|
||||
STR_3048 :Campagne di marketing vietate dalle autorità locali
|
||||
|
@ -2358,7 +2327,7 @@ STR_3305 :{WINDOW_COLOUR_2}Entrate mensili:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Profitto mensile:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Lunghezza minima:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Liv. divertimento:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Attrazioni sotto ordine di protezione:
|
||||
|
@ -2922,7 +2891,7 @@ STR_5755 :Versione del software errata (il server usa {STRING})
|
|||
STR_5756 :Password errata
|
||||
STR_5757 :Server pieno
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} è entrato in gioco
|
||||
STR_5759 :Scaricamento mappa … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Scaricamento mappa …
|
||||
STR_5760 :Dollari di Hong Kong (HK$)
|
||||
STR_5761 :Nuovi dollari taiwanesi (NT$)
|
||||
STR_5762 :Yuan cinesi (CN¥)
|
||||
|
@ -3486,7 +3455,7 @@ STR_6374 :M
|
|||
STR_6375 :Attrazione sconosciuta
|
||||
STR_6376 :{WINDOW_COLOUR_2}Veicolo attrazione:{NEWLINE}{BLACK}{STRINGID} per {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Tipo: {BLACK}{STRINGID} per {STRINGID}
|
||||
STR_6378 :Scaricamento lista oggetti: {INT32} / {INT32}
|
||||
STR_6378 :Scaricamento lista oggetti:
|
||||
STR_6379 :Ricevuti dati non validi
|
||||
STR_6380 :Aggiornamento disponibile!
|
||||
STR_6381 :Unisciti al Discord di OpenRCT2!
|
||||
|
@ -3657,7 +3626,7 @@ STR_6546 :Usa l’algoritmo di calcolo dell’interesse di RollerCoaster Tyco
|
|||
STR_6547 :Tutto lo scenario
|
||||
STR_6548 :Mostra le ringhiere agli incroci
|
||||
STR_6549 :Gli oggetti per la compatibilità non possono essere selezionati!
|
||||
STR_6550 :Questa voce è inclusa per retrocompatibilità con oggetti vecchi o danneggiati. Non può essere selezionata, solo deselezionata.
|
||||
STR_6550 :Questa voce è inclusa per retrocompatibilità con oggetti vecchi o danneggiati. Non può essere selezionata, ma solo deselezionata.
|
||||
|
||||
STR_6551 :Verde militare
|
||||
STR_6552 :Verde pallido
|
||||
|
@ -3705,6 +3674,36 @@ STR_6593 :Rimuovi recinto del parco
|
|||
STR_6594 :Analizzatore celle: Attiva/disattiva inclinazione muro
|
||||
STR_6595 :{WINDOW_COLOUR_2}Autore: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Autori: {BLACK}{STRING}
|
||||
STR_6597 :Parametro non valido
|
||||
STR_6598 :Valore fuori scala
|
||||
STR_6599 :Elemento fantasma non trovato
|
||||
STR_6600 :Palloncino non trovato
|
||||
STR_6601 :Membro dello staff non trovato
|
||||
STR_6602 :Attrazione non trovata
|
||||
STR_6603 :Elemento oggetto dell'attrazione non trovata
|
||||
STR_6604 :Giocatore non trovato
|
||||
STR_6605 :Elemento d’ingresso non trovato
|
||||
STR_6606 :Elemento di superficie non trovato
|
||||
STR_6607 :Elemento cella non trovato
|
||||
STR_6608 :Elemento percorso non trovato
|
||||
STR_6609 :Blocco di tracciato non trovato
|
||||
STR_6610 :Elemento di sentiero non trovato
|
||||
STR_6611 :Elemento di muro non trovato
|
||||
STR_6612 :Elemento cartello non trovato
|
||||
STR_6613 :Ricarica oggetto
|
||||
STR_6614 :Non è possibile modificare il prezzo di ingresso
|
||||
STR_6615 :Il tracciato su questa cella necessita acqua
|
||||
STR_6616 :Azione non valida per quel tipo di staff
|
||||
STR_6617 :Non è possibile scambiare l’elemento della cella con sé stesso
|
||||
STR_6618 :Impossibile cambiare la limitazione dell’oggetto…
|
||||
STR_6619 :Il tipo di oggetto non può essere sottoposto a limitazione!
|
||||
STR_6620 :Oggetto non trovato!
|
||||
STR_6621 :Limitato
|
||||
STR_6622 :Limita l’oggetto all’editor degli scenari e alla modalità sandbox
|
||||
STR_6623 :Digita ‘help’ per una lista dei comandi disponibili. Digita ‘hide’ per nascondere la console.
|
||||
STR_6624 :Analizzatore celle: ordina elementi
|
||||
STR_6625 :Colore non valido
|
||||
STR_6626 :L’animazione è invertita
|
||||
|
||||
|
||||
#############
|
||||
|
@ -4297,87 +4296,87 @@ STR_DTLS :Costruisci le attrazioni Six Flags mancanti o crea dei progetti tut
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - Miniera di diamanti
|
||||
STR_SCNR :Miniere africane
|
||||
STR_PARK :Miniere africane
|
||||
STR_DTLS :Hai ereditato una miniera di diamanti abbandonata, da cui è stato estratto l’ultimo prezioso diamante. Decidi di investire il ricavato per creare un parco che diventi famoso in tutto il mondo.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasi
|
||||
STR_SCNR :Il miraggio
|
||||
STR_PARK :Il miraggio
|
||||
STR_DTLS :Nel deserto è stata scoperta un’oasi che costituirebbe una splendida ambientazione per un parco. I mezzi di trasporto per raggiungerla esistono già.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Cascate Vittoria
|
||||
STR_SCNR :Tuffo nel vuoto
|
||||
STR_PARK :Tuffo nel vuoto
|
||||
STR_DTLS :È stata costruita una diga che eroga energia idroelettrica a basso prezzo e in quantità, con la quale è possibile alimentare un parco. Per rimborsare il prestito della diga, dovrai creare un parco di grande valore.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antartide - Recupero ecologico
|
||||
STR_SCNR :Avventure fra i ghiacci
|
||||
STR_PARK :Avventure fra i ghiacci
|
||||
STR_DTLS :L’agenzia dei servizi ambientali si è rivolta a te per trasformare una vecchia raffineria, vero pugno nell’occhio, in rinomata attrazione turistica. La terra costa poco ma l’interesse sui prestiti è alto. Puoi vendere i vecchi edifici.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Turismo alla Grande Muraglia
|
||||
STR_SCNR :La Grande Muraglia Cinese
|
||||
STR_PARK :La Grande Muraglia Cinese
|
||||
STR_DTLS :Le autorità hanno deciso di promuovere il turismo presso la Grande Muraglia costruendo un parco a tema nei paraggi. I soldi non sono un problema
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Sfruttamento costiero in Giappone
|
||||
STR_SCNR :Costa di Okinawa
|
||||
STR_PARK :Costa di Okinawa
|
||||
STR_DTLS :Un parco esistente ha esaurito lo spazio a sua disposizione. L’unica possibilità è costruire in mare aperto e per riuscirci hai chiesto un prestito. Le limitazioni di altezza sono piuttosto restrittive, a causa del terreno cedevole.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Palazzo del Maragià
|
||||
STR_SCNR :Il parco del Maragià
|
||||
STR_PARK :Il parco del Maragià
|
||||
STR_DTLS :Il Maragià ti ha incaricato di creare qualcosa che intrattenga la vasta popolazione locale. Costruisci un parco ispirato al palazzo del Maragià.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australia - Ayers Rock
|
||||
STR_SCNR :Avventura all’Ayers
|
||||
STR_PARK :Avventura all’Ayers
|
||||
STR_DTLS :Nell’ambito di un programma di rivalutazione culturale, stai aiutando gli aborigeni a creare un parco. Devi attrarre un numero elevato di visitatori per trasmettergli l’eredità culturale degli aborigeni.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australia - Divertimento in spiaggia
|
||||
STR_SCNR :Barbecue balneare
|
||||
STR_PARK :Barbecue balneare
|
||||
STR_DTLS :Il parco marino di un imprenditore locale è fallito. Tu possiedi già un piccolo parco e per comprare l’altro devi trovare dei soldi, sviluppando poi entrambi in una grossa struttura combinata.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Festival culturale europeo
|
||||
STR_SCNR :Festival europeo
|
||||
STR_PARK :Festival europeo
|
||||
STR_DTLS :Ti è stato chiesto di gestire una grande attrazione culturale europea. Devi incrementare il numero di visite per ripagare i sussidi UE prima che scada il termine stabilito dal Parlamento Europeo.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Rinnovo
|
||||
STR_SCNR :Rinascita dalle ceneri
|
||||
STR_PARK :Rinascita dalle ceneri
|
||||
STR_DTLS :Un vecchio parco è in sfacelo. Ti viene concesso un prestito dall’Unione Europea per riportare questa zona desolata alla sua bellezza originaria. Dovrai rinnovare il parco e ripagare il prestito.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nordamerica - Hawaii estreme
|
||||
STR_SCNR :Brivido a Waikiki
|
||||
STR_PARK :Brivido a Waikiki
|
||||
STR_DTLS :Gli abitanti delle Hawaii sono stufi del surf e cercano qualcosa di più eccitante. Devi costruire un parco che soddisfi le loro aspettative, mantenendo alto il livello di attrazione turistica locale.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nordamerica - Grand Canyon
|
||||
STR_SCNR :Calamità nel canyon
|
||||
STR_PARK :Calamità nel canyon
|
||||
STR_DTLS :Devi costruire un parco ai due lati di questa meraviglia naturale. Hai dei limiti di spazio da rispettare, ma potrai acquistare terreno dagli indiani locali. Dovrai raggiungere l’obiettivo per sostenere la popolazione locale.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nordamerica - Paradiso dell’ottovolante
|
||||
STR_SCNR :Paradiso dell’ottovolante
|
||||
STR_PARK :Paradiso dell’ottovolante
|
||||
STR_DTLS :Sei un magnate della finanza di grande successo, che si è preso 4 anni di vacanza dagli affari e desidera costruire un parco senza badare a spese.
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sudamerica - Città perduta Inca
|
||||
STR_SCNR :Il fondatore della città perduta
|
||||
STR_PARK :Il fondatore della città perduta
|
||||
STR_DTLS :Per potenziare il turismo, devi creare un parco intonato all’ambiente, rispettando dei limiti di altezza.
|
||||
STR_DTLS :Per potenziare il turismo, devi creare un parco intonato all’ambiente.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sudamerica - La foresta pluviale
|
||||
STR_SCNR :Scorribanda nella foresta
|
||||
STR_PARK :Scorribanda nella foresta
|
||||
STR_DTLS :Nella preziosa foresta pluviale, lo spazio è limitato. Devi sfruttare al meglio la radura già esistente per creare una valida alternativa all’industria locale del legno.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sudamerica - Carnevale di Rio
|
||||
STR_SCNR :Pan di zucchero
|
||||
STR_PARK :Pan di zucchero
|
||||
STR_DTLS :Gestisci un piccolo parco presso Rio e la banca ti ha chiesto di rimborsare un debito. Devi aumentare rapidamente le tue entrate per fronteggiare questa situazione imprevista.
|
||||
|
||||
|
@ -4385,72 +4384,72 @@ STR_DTLS :Gestisci un piccolo parco presso Rio e la banca ti ha chiesto di ri
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Età Oscura - Castello
|
||||
STR_SCNR :Castello di Cliffside
|
||||
STR_PARK :Castello di Cliffside
|
||||
STR_DTLS :I membri locali della società per il ripristino delle leggi sulle battaglie prendono seriamente il loro hobby. Ti hanno affidato l’incarico di costruire un parco a tema sull’Età Oscura, da erigere sulle fondamenta del Castello di Cliffside.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Età Oscura - Robin Hood
|
||||
STR_SCNR :Foresta di Sherwood
|
||||
STR_PARK :Foresta di Sherwood
|
||||
STR_DTLS :Per sottrarre i beni ai ricchi e donarli ai poveri, tu e i tuoi uomini avete deciso di costruire un parco a tema nella Foresta di Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Futuro - Primi incontri
|
||||
STR_SCNR :Stravaganza extraterrestre
|
||||
STR_PARK :Stravaganza extraterrestre
|
||||
STR_DTLS :Su un lontano pianeta è stata scoperta la vita Costruisci un parco a tema sugli alieni e goditi un successo di visitatori senza precedenti.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Futuro - Il mondo del futuro
|
||||
STR_SCNR :Città di Gemini
|
||||
STR_PARK :Città di Gemini
|
||||
STR_DTLS :Metti in gioco la tua fantastica e utopistica visione del futuro e costruisci un parco futuristico composto dalle attrazioni più all’avanguardia.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitologico - Set cinematografico animatronico
|
||||
STR_SCNR :Animatronica antichità
|
||||
STR_PARK :Animatronica antichità
|
||||
STR_DTLS :Hai ricevuto l’incarico di gestire un parco a tema esistente, costruito sul set di un vecchio film. Rendi omaggio ai pionieri dell’animazione cinematografica che per primi hanno portato sul grande schermo e creature mitologiche.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitologico - La culla della civiltà
|
||||
STR_SCNR :Follia mitologica
|
||||
STR_PARK :Follia mitologica
|
||||
STR_DTLS :Possiedi un’isola di eccezionale valore archeologico. Hai deciso di preservarne le origini costruendo un parco a tema basato sull’eredità mitologica della zona.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Preistoria - Dopo l’asteroide
|
||||
STR_SCNR :Il massacro del cratere
|
||||
STR_PARK :Il massacro del cratere
|
||||
STR_DTLS :Possiedi un vecchio cratere meteoritico. Con lo spirito che ti contraddistingue, hai deciso di costruire un parco sugli asteroidi, tramutando così la tua terra in una fonte di ingente guadagno.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Preistoria - Safari Giurassico
|
||||
STR_SCNR :Ottovolantosauro
|
||||
STR_PARK :Ottovolantosauro
|
||||
STR_DTLS :Hai ricevuto l’incarico di costruire un parco preistorico ispirato al Giurassico. Per ottimizzare l’accesso dei visitatori, dovrai costruire tragitti che sovrastano la valle e vi si inoltrano.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Preistoria - Età della Pietra
|
||||
STR_SCNR :Passeggiata tra le rocce
|
||||
STR_PARK :Passeggiata tra le rocce
|
||||
STR_DTLS :Per scoraggiare i costruttori di autostrade e conservare i misteriosi e antichi cerchi di pietra, dovrai costruire un parco a tema sull’Età della Pietra e farlo fruttare. L’impresa è una vera e propria sfida, dato il territorio inospitale.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Ruggenti Anni Venti - Isola carceraria
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :L’infame isola carceraria, la cui popolazione un tempo si dedicava al contrabbando e alle attività illecite, è in vendita. Hai deciso di trasformarla in un’importante attrazione turistica e il denaro non è un problema.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Ruggenti Anni Venti - Coppa Schneider
|
||||
STR_SCNR :Costa di Schneider
|
||||
STR_PARK :Costa di Schneider
|
||||
STR_DTLS :Manca poco aI 75° anniversario della conquista della Coppa Schneider da parte di tuo nonno. Hai deciso di onorare la sua impresa costruendo un parco a tema basato sulla famosa corsa di idrovolanti.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Ruggenti Anni Venti
|
||||
STR_SCNR :Metropoli
|
||||
STR_PARK :Metropoli
|
||||
STR_DTLS :Possiedi un lotto di terra vuoto vicino alla parte meno sviluppata della città. Per sfruttare al meglio la tua proprietà, costruisci un parco caratterizzato da grattacieli ispirandoti all’architettura art decò degli anni Venti.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock & Roll - Gli anni dei fiori
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Un importante festival musicale si tiene ogni anno sulla tua proprietà. Costruisci un parco a tema di ispirazione hippy per attrarre gli spiriti liberi.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock & Roll - Rock & Roll
|
||||
STR_SCNR :La rinascita del Rock & Roll
|
||||
STR_PARK :La rinascita del Rock & Roll
|
||||
STR_DTLS :Questo vecchio parco a tema ha vissuto tempi migliori. Aiuta il proprietario a ristrutturarlo in stile Rock & Roll e trasformalo in un luogo di successo.
|
||||
|
||||
|
|
|
@ -1729,12 +1729,12 @@ STR_2382 :地形
|
|||
STR_2383 :水
|
||||
STR_2384 :{WINDOW_COLOUR_2}あなたの目標:
|
||||
STR_2385 :{BLACK}なし
|
||||
STR_2386 :{BLACK}{POP16}{MONTHYEAR}の終わりに、 パークの内に{PUSH16}{PUSH16}{COMMA16}以上人の来客し、600以上のパーク評価値を取得する必要があります。
|
||||
STR_2386 :{BLACK}{POP16}{MONTHYEAR}の終わりに、 パークの内に{PUSH16}{PUSH16}{COMMA32}以上人の来客し、600以上のパーク評価値を取得する必要があります。
|
||||
STR_2387 :{BLACK}{POP16}{MONTHYEAR}の終わりに、 {CURRENCY}以上のパーク評価額を取得する必要があります。
|
||||
STR_2388 :{BLACK}楽しんで下さい!
|
||||
STR_2389 :{BLACK}最高の{STRINGID}を建設してください!
|
||||
STR_2390 :{BLACK}パークで10タイプのジェットコースターを稼働させるには、それぞれ少なくとも6.00以上の興奮度が必要です。
|
||||
STR_2391 :{BLACK}パークに少なくとも{COMMA16}ゲストを入れてを取得する必要があります。パークの評価額がいつでも700以下にならないようにしてはいけません!
|
||||
STR_2391 :{BLACK}パークに少なくとも{COMMA32}ゲストを入れてを取得する必要があります。パークの評価額がいつでも700以下にならないようにしてはいけません!
|
||||
STR_2392 :{BLACK}ライドの月次総収入の{POP16}{POP16}{CURRENCY}を取得する必要があります。
|
||||
STR_2393 :{BLACK}パークで10タイプのジェットコースターを操作しますし、それぞれ所定の長さの{LENGTH}し, 7.00以上の興奮度が必要です。
|
||||
STR_2394 :{BLACK}パークであるの5ジェットコースターの建設を仕上げますし、 それぞれ{POP16}{POP16}{COMMA2DP32}以上の興奮度が必要です。
|
||||
|
@ -2089,39 +2089,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :ファイルをロードすることができません…
|
||||
STR_3011 :ファイルには無効なデータが含まれています
|
||||
STR_3012 :ダージャムズ・ビート・スタイル
|
||||
STR_3013 :フェアグラウンドオルガン・スタイル
|
||||
STR_3014 :ローマンファンファーレ・スタイル
|
||||
STR_3015 :オリエンタル・スタイル
|
||||
STR_3016 :火星スタイル
|
||||
STR_3017 :ジャングルドラム・スタイル
|
||||
STR_3018 :エジプト・スタイル
|
||||
STR_3019 :トイランド・スタイル
|
||||
STR_3020 :
|
||||
STR_3021 :スペース・スタイル
|
||||
STR_3022 :ホラー・スタイル
|
||||
STR_3023 :テクノ・スタイル
|
||||
STR_3024 :ジェントル・スタイル
|
||||
STR_3025 :サマー・スタイル
|
||||
STR_3026 :ウォーター・スタイル
|
||||
STR_3027 :ワイルドウエスト・スタイル
|
||||
STR_3028 :ジュラ紀・スタイル
|
||||
STR_3029 :ロック・スタイル
|
||||
STR_3030 :ラグタイム・スタイル
|
||||
STR_3031 :ファンタジー・スタイル
|
||||
STR_3032 :ロック・スタイル 2番
|
||||
STR_3033 :アイス・スタイル
|
||||
STR_3034 :スノー・スタイル
|
||||
STR_3035 :カスタム・スタイル 1番
|
||||
STR_3036 :カスタム・スタイル 2番
|
||||
STR_3037 :中世・スタイル
|
||||
STR_3038 :都市・スタイル
|
||||
STR_3039 :オルガン・スタイル
|
||||
STR_3040 :メカニカル・スタイル
|
||||
STR_3041 :モダン・スタイル
|
||||
STR_3042 :パイレーツ・スタイル
|
||||
STR_3043 :ロック・スタイル 3番
|
||||
STR_3044 :キャンディ・スタイル
|
||||
STR_3045 :音楽のスタイルの選定
|
||||
STR_3047 :この乗物の除去や改造は、地方自治体により禁止されています
|
||||
STR_3048 :キャンペーンは地方自治体により禁止されています
|
||||
|
@ -2348,7 +2315,7 @@ STR_3305 :{WINDOW_COLOUR_2}月売上:
|
|||
STR_3306 :{WINDOW_COLOUR_2}月利益:
|
||||
STR_3307 :{WINDOW_COLOUR_2}最小長:
|
||||
STR_3308 :{WINDOW_COLOUR_2}興奮度:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}保全命令のライド:
|
||||
|
@ -2908,7 +2875,7 @@ STR_5755 :不適切なソフトウェアバージョン(サーバは{STRING
|
|||
STR_5756 :Bad Password
|
||||
STR_5757 :サーバがいっぱいです
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING}がゲームに参加しました。
|
||||
STR_5759 :地図をダウンロード中… ({INT32} / {INT32}) KiB
|
||||
STR_5759 :地図をダウンロード中…
|
||||
STR_5760 :香港ドル (HK$)
|
||||
STR_5761 :ニュー台湾ドル (NT$)
|
||||
STR_5762 :人民元 (CN¥)
|
||||
|
@ -4049,87 +4016,87 @@ STR_DTLS : 不足しているシックスフラッグスの乗物を設置す
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :アフリカ ・ ダイヤモンド鉱山
|
||||
STR_SCNR :アフリカの鉱山
|
||||
STR_PARK :アフリカの鉱山
|
||||
STR_DTLS :You inherited a disused diamond mine, and find a valuable diamond. You decide to invest that money to build a world-famous theme park.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :アフリカ ・ オアシス
|
||||
STR_SCNR :ミラージュ・マッドネス
|
||||
STR_PARK :ミラージュ・マッドネス
|
||||
STR_DTLS :A desert Oasis has been discovered and would provide a beautiful location for a park. Transport to the oasis has been provided.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :アフリカ ・ ヴィクトリアの滝
|
||||
STR_SCNR :オーバー・ザ・エッジ
|
||||
STR_PARK :オーバー・ザ・エッジ
|
||||
STR_DTLS :A dam has been built offering abundant, cheap hydroelectric power with which to run a park. You need to reach a high park value to help repay the loan for the dam.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :南極 ・ 生態学的なサルベージ
|
||||
STR_SCNR :氷の冒険
|
||||
STR_PARK :氷の冒険
|
||||
STR_DTLS :The environment agency has turned to you to transform an old oil refinery ecological eyesore into a top tourist attraction. Land is cheap but loan interest is high. You can sell the old buildings for salvage.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :アジア ・ 万里の長城ツーリズムの強化
|
||||
STR_SCNR :万里の長城
|
||||
STR_PARK :万里の長城
|
||||
STR_DTLS :The authorities have decided to enhance tourism around the Great Wall by building a theme park on the adjacent land. Money is no object!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :アジア ・ 日本の沿岸再生
|
||||
STR_SCNR :沖縄海岸
|
||||
STR_PARK :沖縄海岸
|
||||
STR_DTLS :An existing park has run out of space. Your only option is to build out into the sea, and so you have taken out a loan. Height restrictions on your building are enforced due to foundations and earthquake risk.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :アジア ・ マハラジャのパレス
|
||||
STR_SCNR :パーク・マハラジャ
|
||||
STR_PARK :パーク・マハラジャ
|
||||
STR_DTLS :You have been commissioned by the Maharaja to bring entertainment to the large local population. Build a park inspired by the Maharaja’s palace.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :オーストラリア ・ エアーズロック
|
||||
STR_SCNR :エアーズ・アドベンチャー
|
||||
STR_PARK :エアーズ・アドベンチャー
|
||||
STR_DTLS :You are helping Aboriginal people to build a park as part of a cultural awareness program. You need to get a large number of guests to educate them in the unique heritage of the Aboriginal people.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :オーストラリア ・ ビーチの楽しみ
|
||||
STR_SCNR :ビーチ・バーベキュー
|
||||
STR_PARK :ビーチ・バーベキュー
|
||||
STR_DTLS :A local entrepreneur’s sealife park has gone bust. You already operate a small park and buy the other park from the construction company. Develop a big combined park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :ヨーロパ ・ ヨーロッパ文化祭
|
||||
STR_SCNR :ヨーロッパ文化祭
|
||||
STR_PARK :ヨーロッパ文化祭
|
||||
STR_DTLS :You have been brought in to take over a European Cultural Visitor Attraction and must increase the number of guests in order to pay back the EU subsidy by the end of the current European parliament term.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :ヨーロパ ・ レノベーション
|
||||
STR_SCNR :灰の中から
|
||||
STR_PARK :灰の中から
|
||||
STR_DTLS :An old park has fallen into disrepair. You gain a European Union grant to return this deprived area to its former glory! You need to renovate the park and repay the grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :北アメリカ ・ ハワイ島
|
||||
STR_SCNR :ワッキー・ワイキキ
|
||||
STR_PARK :ワッキー・ワイキキ
|
||||
STR_DTLS :The people of Hawaii are bored of surfing and are looking for something more intense. You need to build a park with this in mind to keep the area’s tourist attraction rating high.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :北アメリカ ・ グランドキャニオン
|
||||
STR_SCNR :キャニオン・カラミティー
|
||||
STR_PARK :キャニオン・カラミティー
|
||||
STR_DTLS :You have to build a park on limited land either side of this natural treasure - you do have the opportunity to buy neighbouring land from the Native American Indians. You need to complete the objective to sustain the local town’s population.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :北アメリカ ・ ジェットコースター天国
|
||||
STR_SCNR :ジェットコースター天国
|
||||
STR_PARK :ジェットコースター天国
|
||||
STR_DTLS :You are a successful business tycoon on long sabbatical who desires to use this time transforming the city park into Rollercoaster Heaven. Money is no object!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :南アメリカ ・ インカの失われた都市
|
||||
STR_SCNR :ロスト・シティ
|
||||
STR_PARK :ロスト・シティ
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings, and has height restrictions.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :南アメリカ ・ 熱帯雨林高原
|
||||
STR_SCNR :熱帯雨林高原
|
||||
STR_PARK :熱帯雨林高原
|
||||
STR_DTLS :Space is limited in the precious rainforest - you must cram as much as possible into the existing clearing, in order to provide a viable alternative to the local timber industry.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :南アメリカ ・ リオカーニバル
|
||||
STR_SCNR :シュガーローフ・ショアーズ
|
||||
STR_PARK :シュガーローフ・ショアーズ
|
||||
STR_DTLS :You run a small park near Rio but the bank has called in your loan. You need to quickly increase your earning capacity to repay this unexpected debt.
|
||||
|
||||
|
@ -4137,71 +4104,71 @@ STR_DTLS :You run a small park near Rio but the bank has called in your loan.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :暗黒時代 ・ 崖側の城
|
||||
STR_SCNR :崖側の城
|
||||
STR_PARK :崖側の城
|
||||
STR_DTLS :Local members of the battle re-enactment society are rather serious about their hobby. They’ve entrusted you with the job of constructing a Dark Age theme park on the grounds of Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :暗黒時代 ・ ロビン・フッド
|
||||
STR_SCNR :シャーウッドの森
|
||||
STR_PARK :シャーウッドの森
|
||||
STR_DTLS :To liberate wealth from the rich and distribute it to the needy, you and your Merry Men have decided to build a theme park in Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :未来 ・ 最初の出会い
|
||||
STR_SCNR :地球外な壮観
|
||||
STR_PARK :地球外な壮観
|
||||
STR_DTLS :Life has been discovered on a distant planet Build an alien theme park to cash in on the unprecedented wave of interest.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :未来 ・ 未来の世界
|
||||
STR_SCNR :ジェミニ・シティ
|
||||
STR_PARK :ジェミニ・シティ
|
||||
STR_DTLS :Show off your inventive, utopian vision of the future - come up with a futuristic park design that incorporates state-of-the-art attractions.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :神話 - アニマトロニクス撮影現場
|
||||
STR_SCNR :アニマトロ・アンティクス
|
||||
STR_PARK :アニマトロ・アンティクス
|
||||
STR_DTLS :You have been given the task of running and improving an existing theme park, which has been built on an old film set. Build a tribute to the pioneering stop-motion animators who first brought mythical creatures to life on the silver screen.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :神話 - 世界四大文明
|
||||
STR_SCNR :神話の狂気
|
||||
STR_PARK :神話の狂気
|
||||
STR_DTLS :You own an island of particular archaeological value. You’ve decided to fund its preservation by constructing a theme park based on the area’s rich Mythological heritage.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :前史時代 ・ 小惑星の後
|
||||
STR_SCNR :クレーターの大虐殺
|
||||
STR_PARK :クレーターの大虐殺
|
||||
STR_DTLS :You own a dusty old meteor crater. In the true entrepreneurial spirit, you’ve decided to construct an asteroid theme park and convert your seemingly worthless land into a sizeable fortune.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :前史時代 ・ ジュラシックサファリ
|
||||
STR_SCNR :コースターサウルス
|
||||
STR_PARK :コースターサウルス
|
||||
STR_DTLS :You’ve been given the task of constructing a Jurassic era theme park. To optimize your visitors’ access to the exotic plant and animal exhibits, you will need to build rides going over and into the valley.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :前史時代 ・ 石器文化
|
||||
STR_SCNR :ロッキー・ランブル
|
||||
STR_PARK :ロッキー・ランブル
|
||||
STR_DTLS :To thwart the highway developers and preserve the mysterious ancient stone circles, you will need to construct a Stone Age theme park and turn a profit. However, attracting visitors may pose a challenge, as the terrain is a tad inhospitable.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :1920時代 - アルカトラズ島
|
||||
STR_SCNR :アルカトラズ
|
||||
STR_PARK :アルカトラズ
|
||||
STR_DTLS :The infamous Prison Island - whose population once swelled with bootleggers and racketeers - is now up for sale. You’ve decided to convert it into a top tourist attraction, and money is no object
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :1920時代 - シュナイダー・レース
|
||||
STR_SCNR :シュナイダー・ショーズ
|
||||
STR_PARK :シュナイダー・ショーズ
|
||||
STR_DTLS :The 75th anniversary of your grandfather’s Schneider Cup victory is coming up in a few years. You’re going to honour his achievement by building a theme park based on the famous seaplane race.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :1920時代 - 高層ビル
|
||||
STR_SCNR :メトロポリス
|
||||
STR_PARK :メトロポリス
|
||||
STR_DTLS :You own an empty lot near the low-rise part of town. To squeeze the most out of your urban property, build a skyscraper theme park inspired by the soaring art deco architecture of the twenties.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :ロックンロール - フラワーパワー
|
||||
STR_SCNR :ウッドストック
|
||||
STR_PARK :ウッドストック
|
||||
STR_DTLS :A large annual music festival takes place on your land. Build a hip theme park to keep the free-spirited audience entertained.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :ロックンロール - ロックンロール
|
||||
STR_SCNR :ロックンロール・リバイバル
|
||||
STR_PARK :ロックンロール・リバイバル
|
||||
STR_DTLS :This aging theme park has seen better days. Help the owner give it a retro rock ’n’ roll makeover and turn the place into a successful venue.
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :하이브리드 코스터
|
|||
STR_0094 :모노레일 롤러코스터
|
||||
STR_0095 :알파인 코스터
|
||||
STR_0096 :클래식 우든 롤러코스터
|
||||
STR_0097 :클래식 스탠드 업 롤러코스터
|
||||
STR_0512 :나선형 리프트 힐과 부드럽게 꼬인 낙하를 가진 알찬 구성의 롤러코스터입니다.
|
||||
STR_0513 :일어선 자세로 탑승하는 루핑 롤러코스터입니다.
|
||||
STR_0514 :코너를 돌 때 롤러코스터 트랙 아래에 매달린 차량이 좌우로 흔들리는 열차입니다.
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :철제 트랙이 있는 목재 스타일의 롤러코스터로 급
|
|||
STR_0604 :탑승객들은 폭이 좁은 모노레일 트랙 위에 한 줄로 탑승한 채로, 급격한 전이와 방향 전환 코스를 달립니다.
|
||||
STR_0605 :탑승객들이 구불구불한 철제 트랙을 따라 썰매 모양의 차량을 타고 스스로 속력을 조절하며 내려오는 놀이기구입니다.
|
||||
STR_0606 :빠르고 거친 승차감과 충분한 에어 타임, 약간의 측면 중력이 있으며 '통제되지 않는 느낌'을 느낄 수 있도록 설계된 구식 목재 롤러코스터입니다.
|
||||
STR_0607 :탑승객들이 일어선 자세로 탑승하는, 격렬한 구식 스타일의 철제 루핑 롤러코스터입니다.
|
||||
STR_0767 :손님 {INT32}
|
||||
STR_0768 :미화원 {INT32}
|
||||
STR_0769 :정비기술자 {INT32}
|
||||
STR_0770 :경비원 {INT32}
|
||||
STR_0771 :엔터테이너 {INT32}
|
||||
STR_0777 :이름 없는 공원{POP16}{POP16}
|
||||
STR_0777 :이름 없는 공원
|
||||
STR_0778 :팻말
|
||||
STR_0779 :1일
|
||||
STR_0780 :2일
|
||||
|
@ -1741,12 +1743,12 @@ STR_2382 :땅
|
|||
STR_2383 :물
|
||||
STR_2384 :{WINDOW_COLOUR_2}목표:
|
||||
STR_2385 :{BLACK}없음
|
||||
STR_2386 :{BLACK}공원에 최소 {COMMA16}명 이상의 손님을 {MONTHYEAR}까지 유치하고, 공원 등급을 600 이상으로 유지하세요
|
||||
STR_2386 :{BLACK}공원에 최소 {COMMA32}명 이상의 손님을 {MONTHYEAR}까지 유치하고, 공원 등급을 600 이상으로 유지하세요
|
||||
STR_2387 :{BLACK}최소 {POP16}{POP16}{CURRENCY} 이상의 공원 가치를 {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}까지 달성하세요
|
||||
STR_2388 :{BLACK}즐기세요!
|
||||
STR_2389 :{BLACK}최고의 {STRINGID}(을)를 건설하세요!
|
||||
STR_2390 :{BLACK}흥미도가 최소 6.00을 넘는 10종의 다른 롤러코스터를 공원에 운용하세요
|
||||
STR_2391 :{BLACK}공원에 최소 {COMMA16}명 이상의 손님을 유치하세요. 단 한 순간이라도 공원 등급을 700 아래로 떨어뜨려서는 안 됩니다!
|
||||
STR_2391 :{BLACK}공원에 최소 {COMMA32}명 이상의 손님을 유치하세요. 단 한 순간이라도 공원 등급을 700 아래로 떨어뜨려서는 안 됩니다!
|
||||
STR_2392 :{BLACK}놀이기구 탑승 수익만으로 월 수익을 최소 {POP16}{POP16}{CURRENCY} 이상 달성하세요
|
||||
STR_2393 :{BLACK}최소 길이가 {LENGTH} 이상이고 흥미도가 최소 7.00을 넘는 10개의 다른 종류의 롤러코스터를 공원에 운용하세요
|
||||
STR_2394 :{BLACK}이 공원에 미완성된 5대의 롤러코스터를 각각의 흥미도가 최소 {POP16}{POP16}{COMMA2DP32} 이상이 되도록 완성하세요
|
||||
|
@ -2101,39 +2103,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :파일을 불러올 수 없습니다…
|
||||
STR_3011 :파일이 올바르지 않은 데이터를 포함하고 있습니다
|
||||
STR_3012 :범퍼카 비트 스타일
|
||||
STR_3013 :축제 오르간 스타일
|
||||
STR_3014 :로마 팡파르 스타일
|
||||
STR_3015 :동양 스타일
|
||||
STR_3016 :화성 스타일
|
||||
STR_3017 :정글 북 스타일
|
||||
STR_3018 :이집트 스타일
|
||||
STR_3019 :장난감나라 스타일
|
||||
STR_3020 :
|
||||
STR_3021 :우주 스타일
|
||||
STR_3022 :호러 스타일
|
||||
STR_3023 :테크노 스타일
|
||||
STR_3024 :젠틀 스타일
|
||||
STR_3025 :여름 스타일
|
||||
STR_3026 :수중 스타일
|
||||
STR_3027 :서부 스타일
|
||||
STR_3028 :쥐라기 스타일
|
||||
STR_3029 :록 스타일
|
||||
STR_3030 :래그타임 스타일
|
||||
STR_3031 :판타지 스타일
|
||||
STR_3032 :록 스타일 2
|
||||
STR_3033 :얼음 스타일
|
||||
STR_3034 :눈 스타일
|
||||
STR_3035 :사용자 음악 1
|
||||
STR_3036 :사용자 음악 2
|
||||
STR_3037 :중세 스타일
|
||||
STR_3038 :도시 스타일
|
||||
STR_3039 :오르간 스타일
|
||||
STR_3040 :기계적인 스타일
|
||||
STR_3041 :현대적인 스타일
|
||||
STR_3042 :해적 스타일
|
||||
STR_3043 :록 스타일 3
|
||||
STR_3044 :사탕 스타일
|
||||
STR_3045 :재생할 음악 스타일을 선택하세요
|
||||
STR_3047 :지역 당국이 이 놀이기구를 파괴하거나 수정하는 것을 금지했습니다
|
||||
STR_3048 :지역 당국이 광고 이벤트를 금지했습니다
|
||||
|
@ -2360,7 +2329,7 @@ STR_3305 :{WINDOW_COLOUR_2}월 수익:
|
|||
STR_3306 :{WINDOW_COLOUR_2}월 순이익:
|
||||
STR_3307 :{WINDOW_COLOUR_2}최소 길이:
|
||||
STR_3308 :{WINDOW_COLOUR_2}흥미도:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}수정·파괴할 수 없는 놀이기구/시설:
|
||||
|
@ -2618,7 +2587,7 @@ STR_5335 :놀이기구 입구
|
|||
STR_5336 :놀이기구 출구
|
||||
STR_5337 :공원 입구
|
||||
STR_5338 :요소 종류
|
||||
STR_5339 :기본 고도
|
||||
STR_5339 :기본 높이
|
||||
STR_5340 :최상단 높이
|
||||
STR_5343 :직원 자동 배치
|
||||
STR_5344 :변경기록
|
||||
|
@ -2816,9 +2785,9 @@ STR_5612 :유령 플래그
|
|||
STR_5613 :B
|
||||
STR_5614 :깨짐 플래그
|
||||
STR_5615 :L
|
||||
STR_5616 :타일 플래그의 마지막 요소
|
||||
STR_5617 :선택한 요소를 위로 이동합니다.
|
||||
STR_5618 :선택한 요소를 아래로 이동합니다.
|
||||
STR_5616 :이 칸의 마지막 요소
|
||||
STR_5617 :선택한 요소를 위로 이동합니다
|
||||
STR_5618 :선택한 요소를 아래로 이동합니다
|
||||
STR_5619 :롤러코스터 타이쿤
|
||||
STR_5620 :애디드 어트랙션
|
||||
STR_5621 :루피 랜드스케이프
|
||||
|
@ -2920,7 +2889,7 @@ STR_5755 :소프트웨어 버전이 맞지 않습니다 (서버는 {STRING}
|
|||
STR_5756 :비밀번호가 맞지 않습니다
|
||||
STR_5757 :서버 제한 인원이 꽉 찼습니다
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} 님 입장
|
||||
STR_5759 :맵 다운로드 중 … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :맵 다운로드 중 …
|
||||
STR_5760 :홍콩 달러 (HK$)
|
||||
STR_5761 :신 대만 달러 (NT$)
|
||||
STR_5762 :중국 위안 (CN¥)
|
||||
|
@ -3483,7 +3452,7 @@ STR_6374 :겹
|
|||
STR_6375 :알 수 없는 놀이기구
|
||||
STR_6376 :{WINDOW_COLOUR_2}놀이기구 차량:{NEWLINE}{BLACK}{POP16}{STRINGID}의 {PUSH16}{PUSH16}{STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}유형: {BLACK}{POP16}{STRINGID}의 {PUSH16}{PUSH16}{STRINGID}
|
||||
STR_6378 :오브젝트 목록 수신 중: {INT32} / {INT32}
|
||||
STR_6378 :오브젝트 목록 수신 중:
|
||||
STR_6379 :올바르지 않은 데이터 수신
|
||||
STR_6380 :업데이트 사용 가능!
|
||||
STR_6381 :OpenRCT2 디스코드에 참여하세요!
|
||||
|
@ -3701,6 +3670,53 @@ STR_6593 :공원 경계 울타리 제거
|
|||
STR_6594 :칸 조사창: 울타리 경사 변경
|
||||
STR_6595 :{WINDOW_COLOUR_2}제작: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}제작: {BLACK}{STRING}
|
||||
STR_6597 :유효하지 않은 매개변수입니다
|
||||
STR_6598 :범위를 벗어난 값입니다
|
||||
STR_6599 :가상 요소를 찾을 수 없습니다
|
||||
STR_6600 :풍선을 찾을 수 없습니다
|
||||
STR_6601 :직원을 찾을 수 없습니다
|
||||
STR_6602 :놀이기구를 찾을 수 없습니다
|
||||
STR_6603 :놀이기구 오브젝트 출입구를 찾을 수 없습니다
|
||||
STR_6604 :플레이어를 찾을 수 없습니다
|
||||
STR_6605 :출입구를 찾을 수 없습니다
|
||||
STR_6606 :땅 표면 요소를 찾을 수 없습니다
|
||||
STR_6607 :칸 요소를 찾을 수 없습니다
|
||||
STR_6608 :트랙 조각 요소를 찾을 수 없습니다
|
||||
STR_6609 :트랙 블록을 찾을 수 없습니다
|
||||
STR_6610 :보도 요소를 찾을 수 없습니다
|
||||
STR_6611 :벽 요소를 찾을 수 없습니다
|
||||
STR_6612 :팻말 요소를 찾을 수 없습니다
|
||||
STR_6613 :오브젝트 다시 불러오기
|
||||
STR_6614 :공원 입장료를 변경할 수 없습니다
|
||||
STR_6615 :이 칸에 있는 트랙은 물이 있어야 합니다
|
||||
STR_6616 :그 직원에 대한 잘못된 행동입니다
|
||||
STR_6617 :칸 요소를 자기 자신과 바꿀 수는 없습니다
|
||||
STR_6618 :오브젝트를 제한하거나 제한 해제할 수 없습니다…
|
||||
STR_6619 :오브젝트 종류를 제한할 수 없습니다!
|
||||
STR_6620 :오브젝트를 찾을 수 없습니다!
|
||||
STR_6621 :제한
|
||||
STR_6622 :시나리오 에디터 및 모래상자 모드에서 선택한 오브젝트를 사용할 수 없도록 제한합니다.
|
||||
STR_6623 :사용할 수 있는 명령어 목록을 보려면 ‘help’를 입력하세요. 콘솔 창을 닫으려면 ‘hide’를 입력하세요.
|
||||
STR_6624 :칸 조사 창: 요소 정렬
|
||||
STR_6625 :유효하지 않은 색상
|
||||
STR_6626 :애니메이션 반대
|
||||
STR_6627 :트랙 속력이 너무 높습니다!
|
||||
STR_6628 :보도 옆 가장자리에만 설치할 수 있습니다!
|
||||
STR_6629 :메인 메뉴 버튼을 가운데로 정렬
|
||||
STR_6630 :이 설정을 켜면 메인 메뉴의 버튼을 화면 가운데에 수평으로 정렬합니다. 기존 방식은 버튼을 좌측과 우측 끝에 두 그룹으로 정렬합니다.
|
||||
STR_6631 :불러오는 중…
|
||||
STR_6632 :오브젝트 파일 확인 중…
|
||||
STR_6633 :시나리오 파일 확인 중…
|
||||
STR_6634 :트랙 디자인 파일 확인 중…
|
||||
STR_6635 :에셋 팩 확인 중…
|
||||
STR_6636 :타이틀 시퀀스 확인 중…
|
||||
STR_6637 :타이틀 시퀀스 불러오는 중…
|
||||
STR_6638 :UI 확대
|
||||
STR_6639 :터치 환경에서 사용하기 적합하도록 인터페이스를 변경합니다
|
||||
STR_6640 :에셋 팩 편집…
|
||||
STR_6641 :불러오기/진행 창
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4289,87 +4305,87 @@ STR_DTLS :식스 플래그의 빠진 놀이기구를 건설해보거나, 공
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :아프리카 - 아프리카 다이아몬드 광산
|
||||
STR_SCNR :아프리카의 광산
|
||||
STR_PARK :아프리카의 광산
|
||||
STR_DTLS :다이아몬드 폐광을 물려받은 당신은 값비싼 다이아몬드를 발견했고 그 판매 수익으로 세계 일류의 테마파크를 짓기로 결심했습니다.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :아프리카 - 오아시스
|
||||
STR_SCNR :신기루의 광기
|
||||
STR_PARK :신기루의 광기
|
||||
STR_DTLS :사막에서 놀이공원을 짓기에 아주 적당한 오아시스를 발견했습니다. 오아시스로 가는 교통편은 이미 존재합니다.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :아프리카 - 빅토리아 폭포
|
||||
STR_SCNR :폭포 너머
|
||||
STR_PARK :폭포 너머
|
||||
STR_DTLS :공원을 운영하기 충분하고 값싼 전기를 생산하는 수력 발전 댐이 지어졌습니다. 댐을 건설하느라 진 빚을 갚기 위해 높은 가치의 놀이공원을 지어야 합니다.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :남극 - 버려진 환경 복구
|
||||
STR_SCNR :얼음에 뒤덮인 모험
|
||||
STR_PARK :얼음에 뒤덮인 모험
|
||||
STR_DTLS :환경부에서 눈꼴사납고 낡은 정유 시설을 최고의 관광 명소로 만들어달라고 합니다. 땅값은 싸지만 대출 이자는 높습니다. 오래된 건물은 고철로 팔아 버릴 수 있습니다.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :아시아 - 중국 만리장성의 관광 진흥
|
||||
STR_SCNR :만리장성
|
||||
STR_PARK :만리장성
|
||||
STR_DTLS :관광 당국이 만리장성 주변의 땅에 놀이공원을 지어서 관광객 수를 늘리기로 결정했습니다. 돈이 문제가 아니군요!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :아시아 - 일본 연안 간척
|
||||
STR_SCNR :오키나와 해변
|
||||
STR_PARK :오키나와 해변
|
||||
STR_DTLS :기존 공원은 이미 공간이 모자랍니다. 대출을 받아서 바다로 확장해나갈 수밖에 없습니다. 지진 우려와 약한 기반을 이유로 건설 높이가 제한됩니다.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :아시아 - 마하라자 궁전
|
||||
STR_SCNR :마하라자 공원
|
||||
STR_PARK :마하라자 공원
|
||||
STR_DTLS :인도의 왕에게서 국민들에게 즐길 거리를 만들어달라는 임무를 받았습니다. 마하라자 궁전을 연상시키는 공원을 만들어보세요.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :오스트레일리아 - 에어즈 록
|
||||
STR_SCNR :에어즈 어드벤처
|
||||
STR_PARK :에어즈 어드벤처
|
||||
STR_DTLS :문화 인식 프로그램의 일환으로, 오스트레일리아 원주민들을 도와서 공원을 개발하려 합니다. 원주민들의 독특한 문화유산을 알리기 위해 많은 관광객을 모아야 합니다.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :오스트레일리아 - 해변의 즐거움
|
||||
STR_SCNR :해변의 바베큐 파티
|
||||
STR_PARK :해변의 바베큐 파티
|
||||
STR_DTLS :근처 지역 사업가의 해안 공원이 파산해버렸습니다. 이미 작은 공원을 운영하는 당신은 건설사로부터 그 공원을 구입하였습니다. 두 공원을 합쳐 크게 사업을 확장해보세요.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :유럽 - 유럽 문화 축제
|
||||
STR_SCNR :유럽의 축제
|
||||
STR_PARK :유럽의 축제
|
||||
STR_DTLS :유럽 문화 축제의 경영권을 확보한 당신은 이제 유럽 연합의 보조금을 갚기 위해 현재의 유럽 의회 임기가 끝날 때까지 손님을 늘려야합니다.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :유럽 - 혁신
|
||||
STR_SCNR :잿더미를 딛고
|
||||
STR_PARK :잿더미를 딛고
|
||||
STR_DTLS :방치된 낡은 공원이 있습니다. 이 공원이 과거에 누렸던 영광을 재현하기 위해 유럽 연합의 허가를 받았습니다! 허가를 받은 만큼 공원을 혁신해서 보답하세요.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :북아메리카 - 최고의 하와이 섬
|
||||
STR_SCNR :왁자지껄 와이키키
|
||||
STR_PARK :왁자지껄 와이키키
|
||||
STR_DTLS :하와이 주민들이 이제 파도타기가 지겨워져서 좀 더 자극적인 뭔가를 원하고 있습니다. 주민들도 만족시키면서 이 지역의 관광객들이 찾아오고 싶어 하는 공원을 만드세요.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :북아메리카 - 그랜드 캐니언
|
||||
STR_SCNR :불행의 계곡
|
||||
STR_PARK :불행의 계곡
|
||||
STR_DTLS :이 아름답지만 제한적인 공간에 공원을 만들어야 합니다. 미국 원주민에게서 반대편 땅을 살 수 있습니다. 줄어들고 있는 마을 인구를 유지하기 위해서라도 목표를 달성해야 합니다.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :북아메리카 - 롤러코스터 천국
|
||||
STR_SCNR :롤러코스터 천국
|
||||
STR_PARK :롤러코스터 천국
|
||||
STR_DTLS :당신은 긴 휴식기를 가지는 동안 이 도시 공원을 롤러코스터 천국으로 바꾸고자 하는 성공한 사업 거물입니다. 돈은 문제가 되지 않는군요!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :남 아메리카 - 잉카의 잊혀진 도시
|
||||
STR_SCNR :잊혀진 도시의 발견자
|
||||
STR_PARK :잊혀진 도시의 발견자
|
||||
STR_DTLS :이 지역의 관광산업을 보다 활기차게 만들기 위해서는 주변 환경과 잘 어울리는 공원을 지어야 합니다. 높이 제한이 있습니다.
|
||||
STR_DTLS :이 지역의 관광산업을 보다 활기차게 만들기 위해서는 주변 환경과 잘 어울리는 공원을 지어야 합니다.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :남 아메리카 - 열대우림 고원
|
||||
STR_SCNR :열대우림 고원
|
||||
STR_PARK :열대우림 고원
|
||||
STR_DTLS :소중한 열대우림 속의 제한된 공간만을 받았습니다. 이곳의 벌목 산업을 대신할 수 있는 방법을 제공하기 위해 기존의 빈 공간을 최대한 많이 활용해야 합니다.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :남 아메리카 - 리오 축제
|
||||
STR_SCNR :슈거로프 해안
|
||||
STR_PARK :슈거로프 해안
|
||||
STR_DTLS :리오 근처의 작은 공원을 운영하고 있는데 은행이 대출금을 조기 회수하려 합니다. 때 이른 빚 독촉을 갚기 위해서 빨리 돈을 벌어야 합니다.
|
||||
|
||||
|
@ -4377,72 +4393,72 @@ STR_DTLS :리오 근처의 작은 공원을 운영하고 있는데 은행이
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :암흑시대 - 성
|
||||
STR_SCNR :클리프사이드 성
|
||||
STR_PARK :클리프사이드 성
|
||||
STR_DTLS :이 지역의 전투 재현 단체는 자신들의 취미를 진지하게 생각하고 있습니다. 그들은 당신에게 클리프사이드 성 부지에 암흑시대 테마파크를 건설해달라고 요청해왔습니다.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :암흑시대 - 로빈 후드
|
||||
STR_SCNR :셔우드 숲
|
||||
STR_PARK :셔우드 숲
|
||||
STR_DTLS :부자들의 재산을 빼앗아 필요한 사람들에게 나누어주기 위해서 당신과 수하들은 셔우드 숲에 놀이공원을 만들기로 결정했습니다.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :미래 - 첫 만남
|
||||
STR_SCNR :외계인의 축제
|
||||
STR_PARK :외계인의 축제
|
||||
STR_DTLS :먼 행성에서 생명체가 발견되었습니다. 외계인을 주제로 한 놀이공원을 만들어서 전에 없던 관심을 받아 돈을 벌어보세요.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :미래 - 미래 세계
|
||||
STR_SCNR :제미니 시티
|
||||
STR_PARK :제미니 시티
|
||||
STR_DTLS :당신의 미래에 대한 독창적이고 이상적인 시각을 보여줄 때입니다. 첨단의 매력이 느껴지는 미래의 공원 디자인을 제안해봅시다.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :신화 - 영화 세트장
|
||||
STR_SCNR :애니매트로닉 앤틱스
|
||||
STR_PARK :애니매트로닉 앤틱스
|
||||
STR_DTLS :이번 임무는 옛 영화 세트장에 설립된 기존 테마파크를 운영하고 발전시키는 것입니다. 흑백 스크린에 신화 속 인물을 옮겨놓은 스톱 모션 애니메이션의 선구자들에게 이 공원을 헌정합시다.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :신화 - 문명의 요람
|
||||
STR_SCNR :신화의 광기
|
||||
STR_PARK :신화의 광기
|
||||
STR_DTLS :특별한 고고학적 가치를 가진 섬을 소유하게 되었습니다. 이 지역의 풍부한 신화적 유산을 기반으로 한 테마파크를 건설해서 유산 보존 기금을 마련하기로 결정했습니다.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :선사시대 - 소행성 충돌 후
|
||||
STR_SCNR :크레이터 대학살
|
||||
STR_PARK :크레이터 대학살
|
||||
STR_DTLS :당신은 오래된 운석공을 소유하고 있습니다. 기업가 정신을 발휘한 당신은 운석 테마 파크를 건설해서 쓸모없어 보이는 이 땅을 엄청난 행운의 땅으로 바꾸기로 결심했습니다.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :선사시대 - 쥐라기 사파리
|
||||
STR_SCNR :코스터사우르스
|
||||
STR_PARK :코스터사우르스
|
||||
STR_DTLS :당신은 쥐라기 시대 놀이공원을 건설하는 임무를 받았습니다. 색다른 식물과 동물 전시장에 관객이 쉽게 접근할 수 있도록 하려면, 계곡을 가로지르는 놀이기구를 만들어야 할 것입니다.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :선사시대 - 석기시대
|
||||
STR_SCNR :돌무더기 산책
|
||||
STR_PARK :돌무더기 산책
|
||||
STR_DTLS :고속도로 개발자들을 막고 고대 열석을 보호하기 위해, 석기 시대 테마파크를 건설하여 수익을 내야 합니다. 하지만 사람이 살기 조금 힘든 곳인 만큼 손님을 모으기가 어려울 것입니다.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :광란의 20년대 - 감옥 섬
|
||||
STR_SCNR :앨커트래즈
|
||||
STR_PARK :앨커트래즈
|
||||
STR_DTLS :주류 밀매자와 폭력범으로 득실대던 악명 높은 감옥 섬이 경매에 부쳐졌습니다. 이곳을 최고의 관광지로 바꾸기로 한 당신에게 돈은 신경 쓸 필요가 없네요.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :광란의 20년대 - 슈나이더 컵
|
||||
STR_SCNR :슈나이더 해안
|
||||
STR_PARK :슈나이더 해안
|
||||
STR_DTLS :할아버지의 슈나이더 컵 우승 75주년이 얼마 남지 않았습니다. 당신은 할아버지의 업적을 기리기 위해 유명한 수상비행기 경주를 딴 놀이공원을 짓기로 했습니다.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :광란의 20년대 - 마천루
|
||||
STR_SCNR :메트로폴리스
|
||||
STR_PARK :메트로폴리스
|
||||
STR_DTLS :당신은 도시 저층부 근처의 빈 공간을 갖게 되었습니다. 최대한 이익을 많이 얻기 위해, 20년대에 유행했던 아르데코식 건축물을 본딴 마천루 테마파크를 지어보세요.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :로큰롤 - 사랑과 평화
|
||||
STR_SCNR :우드스톡
|
||||
STR_PARK :우드스톡
|
||||
STR_DTLS :매년 열리는 대형 음악 축제가 당신의 땅에서 열립니다. 최신 유행하는 놀이공원을 지어, 자유로운 영혼을 가진 관객들이 즐거워할 수 있게 만드세요.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :로큰롤 - 로큰롤
|
||||
STR_SCNR :로큰롤 부흥
|
||||
STR_PARK :로큰롤 부흥
|
||||
STR_DTLS :이 오래된 놀이공원은 더 나은 미래를 기대하고 있습니다. 소유자를 도와 이 공원을 복고풍의 로큰롤 공원으로 바꾸어 성공적인 장소로 변모시켜보세요.
|
||||
|
||||
|
|
|
@ -95,6 +95,7 @@ STR_0093 :Hybride achtbaan
|
|||
STR_0094 :Achtbaan met enkele rail
|
||||
STR_0095 :Rodelachtbaan
|
||||
STR_0096 :Klassieke houten achtbaan
|
||||
STR_0097 :Klassieke staande achtbaan
|
||||
STR_0512 :Een compacte achtbaan met een spiraalvormige kettingheuvel en soepele, kronkelende afdalingen.
|
||||
STR_0513 :Een achtbaan met loopings waar de passagiers in de karretjes staan.
|
||||
STR_0514 :Treinen hangen onder de baan en zwaaien naar buiten in de bochten.
|
||||
|
@ -112,36 +113,36 @@ STR_0525 :Passagiers rijden over een kronkelende baan, waarbij ze enkel worde
|
|||
STR_0526 :Bezoekers gaan in een roterende observatiecabine langs een toren omhoog
|
||||
STR_0527 :Een soepele stalen achtbaan die verticale loopings kan maken.
|
||||
STR_0528 :Passagiers glijden in opblaasboten door een kronkelende halfopen of compleet gesloten glijbaan.
|
||||
STR_0529 :Achtbaantreinen in de vorm van een mijntrein razen over stalen achtbaanrails die er uitziet als een oude spoorbaan.
|
||||
STR_0529 :Achtbaantreinen in de vorm van een mijntrein razen over stalen achtbaanrails die er uitzien als een oude spoorbaan.
|
||||
STR_0530 :Stoeltjes hangen aan een continu draaiende stalen kabel die van het ene uiteinde van de baan naar het andere loopt, en daarna weer terug.
|
||||
STR_0531 :Een compacte stalen achtbaan waar de trein door schroeven en loopings gaat.
|
||||
STR_0532 :
|
||||
STR_0533 :
|
||||
STR_0532 :Bezoekers lopen door een doolhof van 1,8m hoge heggen of muren, en kunnen er pas uit wanneer ze de uitgang vinden.
|
||||
STR_0533 :Houten gebouw met van binnen een trap en van buiten een spiraalglijbaan voor glijmatten.
|
||||
STR_0534 :Bezoekers racen tegen elkaar in go-karts op een asfaltbaan.
|
||||
STR_0535 :Bezoekers varen in bootjes door een waterbak, waarbij ze van steile hellingen afdalen en doorweekt raken.
|
||||
STR_0536 :Ronde boten varen door een brede waterbak, waarbij ze de passagiers opwinden door watervallen en schuimende stroomversnellingen.
|
||||
STR_0537 :Bezoekers botsen tegen elkaar in elektrisch aangedreven botsauto’s die ze zelf kunnen besturen.
|
||||
STR_0538 :
|
||||
STR_0539 :
|
||||
STR_0540 :
|
||||
STR_0542 :
|
||||
STR_0544 :
|
||||
STR_0545 :
|
||||
STR_0547 :
|
||||
STR_0548 :
|
||||
STR_0549 :
|
||||
STR_0550 :
|
||||
STR_0551 :
|
||||
STR_0552 :
|
||||
STR_0553 :
|
||||
STR_0538 :Groot schommelend piratenschip.
|
||||
STR_0539 :Schip dat is bevestigd aan een arm met een contragewicht, en 360 graden kan draaien.
|
||||
STR_0540 :Een kraampje waar de bezoekers eten kunnen kopen.
|
||||
STR_0542 :Een kraampje waar de bezoekers drinken kunnen kopen.
|
||||
STR_0544 :Een kraampje dat souvenirs verkoopt.
|
||||
STR_0545 :Traditionele draaimolen met uit hout gesneden paarden.
|
||||
STR_0547 :Een kraam waar bezoekers kaarten van het park en paraplu’s kunnen kopen.
|
||||
STR_0548 :Een toiletgebouw.
|
||||
STR_0549 :Groot draaiend rad met open stoeltjes.
|
||||
STR_0550 :Passagiers bekijken een film in de cabine van een bewegingssimulator die wordt gedraaid en bewogen door een hydraulische arm.
|
||||
STR_0551 :Bioscoop in een bolvormig gebouw waarin 3D-films worden getoond.
|
||||
STR_0552 :Passagiers zitten in een gondel die is opgehangen aan grote roterende armen, en worden halsoverkop vooruit en achteruit gedraaid.
|
||||
STR_0553 :Concentrische draaiende ringen waarmee de passagiers vrij kunnen draaien in alle richtingen.
|
||||
STR_0554 :Het karretje wordt het station uitgelanceerd over een lange rechte baan door middel van lineaire inductiemotoren, om daarna recht omhoog te gaan en weer terug te vallen richting het station.
|
||||
STR_0555 :Bezoekers gaan in een lift in een toren omhoog of omlaag om naar een ander hoogteniveau te komen.
|
||||
STR_0556 :Extra brede karretjes rijden over een compleet verticale baan voor de ultieme vrijevalbeleving.
|
||||
STR_0557 :
|
||||
STR_0558 :
|
||||
STR_0559 :
|
||||
STR_0560 :
|
||||
STR_0561 :
|
||||
STR_0557 :Een geldautomaat die de bezoekers kunnen gebruiken als ze bijna door hun contante geld heen zijn.
|
||||
STR_0558 :Passagiers zitten per twee in stoelen die ronddraaien aan de uiteinden van drie lange draaiarmen.
|
||||
STR_0559 :Groot gethematiseerd gebouw met enge gangen en spookachtige kamers.
|
||||
STR_0560 :Een gebouw waar misselijke bezoekers sneller kunnen opknappen.
|
||||
STR_0561 :Een dierennummer in een circustent.
|
||||
STR_0562 :Aangedreven karretjes rijden langs eng decor en special effects over een baan met hoogteverschillen.
|
||||
STR_0563 :Bezoekers zitten in comfortabele treinen met enkel een schootbeugel en gaan soepel door grote afdalingen en kronkelende stukken baan, met veel ‘airtime’ in de heuvels.
|
||||
STR_0564 :Deze over een houten baan lopende achtbaan is snel, ruw, luidruchtig en geeft het gevoel van controleverlies met veel ‘airtime’.
|
||||
|
@ -156,20 +157,20 @@ STR_0574 :Passagiers worden door middel van een speciale beugel in een liggen
|
|||
STR_0575 :Aangedreven treinen hangen aan een enkele rail en vervoeren mensen door het park heen.
|
||||
STR_0577 :Karretjes met draaistellen rijden op een houten baan en kunnen omkeren op speciale stukken baan.
|
||||
STR_0578 :Karretjes rijden in een baan omgeven door hoepels en gaan door steile afdalingen en heartline-twists.
|
||||
STR_0579 :
|
||||
STR_0579 :Een rustig spelletje minigolf.
|
||||
STR_0580 :Een gigantische stalen achtbaan die in staat is tot soepele afdalingen en heuvels die hoger zijn dan 90 meter.
|
||||
STR_0581 :Een ring van stoelen wordt naar de bovenkant van een hoge toren getrokken terwijl hij rustig ronddraait, waarna hij losgelaten wordt in een vrije val, waarna hij beneden rustig wordt afgeremd door middel van magnetische remmen.
|
||||
STR_0582 :Bezoekers botsen tegen elkaar in hovercrafts die ze zelf kunnen besturen.
|
||||
STR_0583 :
|
||||
STR_0583 :Gebouw met scheve kamers en gangen die de bezoekers desoriënteren.
|
||||
STR_0584 :Speciale fietsen rijden over een stalen monorail, voortbewogen door het trappen van de passagiers.
|
||||
STR_0585 :Passagiers zitten in stoelparen die onder de baan hangen terwijl ze door kronkelende en scherpe omkeringen gaan.
|
||||
STR_0586 :Bootvormige karretjes rijden over achtbaanrails, waardoor ze hellende bochten en diepe afdalingen kunnen maken, waarna ze in bakken water neerplonzen en rustig een stukje kunnen varen.
|
||||
STR_0587 :Na een enerverende pneumatische lancering rijdt de trein met hogere snelheid over een verticale baan, over de top, en vervolgens over de andere kant weer naar beneden om terug te keren naar het station.
|
||||
STR_0588 :Losse karretjes hangen onder een zigzaggende baan met haarspeldbochten en scherpe afdalingen.
|
||||
STR_0589 :
|
||||
STR_0589 :Een grote wagen in de vorm van een vliegend tapijt draait rond aan de uiteinden van vier draaiarmen.
|
||||
STR_0590 :Passagiers rijden over een onderwaterparcours in onderzeeërs.
|
||||
STR_0591 :Boten in de vorm van een vlot varen rustig door een waterbak.
|
||||
STR_0593 :
|
||||
STR_0593 :Draaiend wiel met hangende passagierscabines, dat eerst gaat draaien en vervolgens wordt opgetild door een steunarm.
|
||||
STR_0598 :Een omgekeerde achtbaantrein wordt het station uit gelanceerd en gaat een verticale kronkelende baan op, waarna deze terugzakt, door het station heengaat en achteruit een ander stuk verticale baan opgaat.
|
||||
STR_0599 :Een compacte achtbaan met individuele karretjes en steile, kronkelende afdalingen.
|
||||
STR_0600 :Aangedreven mijntreinen rijden over een soepele en kronkelende baan.
|
||||
|
@ -178,12 +179,13 @@ STR_0603 :Een achtbaan met houten ondersteuningen en stalen rails, waardoor s
|
|||
STR_0604 :Passagiers zitten achter elkaar op een smalle baan met één rail, waar ze met hoge snelheid door krappe bochten en over de kop gaan.
|
||||
STR_0605 :Passagiers rodelen over een kronkelende stalen baan, waarbij ze zelf kunnen beslissen hoe snel ze gaan.
|
||||
STR_0606 :Een ouder type houten achtbaan met een snelle en ruwe loop, veel airtime, enige zijwaartse G-krachten en het gevoel van controleverlies.
|
||||
STR_0607 :Een intens ouder type achtbaan waarin de passagiers staan.
|
||||
STR_0767 :Bezoeker {INT32}
|
||||
STR_0768 :Klusjesman {INT32}
|
||||
STR_0769 :Monteur {INT32}
|
||||
STR_0770 :Bewaker {INT32}
|
||||
STR_0771 :Entertainer {INT32}
|
||||
STR_0777 :Naamloos park{POP16}{POP16}
|
||||
STR_0777 :Naamloos park
|
||||
STR_0778 :Bord
|
||||
STR_0779 :1
|
||||
STR_0780 :2
|
||||
|
@ -1738,12 +1740,12 @@ STR_2382 :Land
|
|||
STR_2383 :Water
|
||||
STR_2384 :{WINDOW_COLOUR_2}Je doelstelling:
|
||||
STR_2385 :{BLACK}Geen
|
||||
STR_2386 :{BLACK}Om ten minste {COMMA16} bezoekers in je park te hebben aan het einde van {MONTHYEAR}, met een parkwaardering van ten minste 600
|
||||
STR_2386 :{BLACK}Om ten minste {COMMA32} bezoekers in je park te hebben aan het einde van {MONTHYEAR}, met een parkwaardering van ten minste 600
|
||||
STR_2387 :{BLACK}Om een parkwaarde van ten minste {POP16}{POP16}{CURRENCY} te hebben aan het einde van {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Om plezier te hebben!
|
||||
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 plezierwaarde van ten minste 6,00
|
||||
STR_2391 :{BLACK}Om ten minste {COMMA16} bezoekers in je park te hebben. Je parkwaardering mag geen moment onder de 700 komen!
|
||||
STR_2391 :{BLACK}Om ten minste {COMMA32} bezoekers in je park te hebben. Je parkwaardering mag geen moment onder de 700 komen!
|
||||
STR_2392 :{BLACK}Om in één maand ten minste {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 ten minste {LENGTH} en een plezierwaarde van ten minste 7,00
|
||||
STR_2394 :{BLACK}Om alle 5 deels gebouwde achtbanen in je park af te maken, elk met een plezierwaarde van ten minste {POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2096,39 +2098,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Kan dit bestand niet laden…
|
||||
STR_3011 :Bestand bevat ongeldige gegevens
|
||||
STR_3012 :Botsautostijl
|
||||
STR_3013 :Kermisorgelstijl
|
||||
STR_3014 :Romeinsefanfarestijl
|
||||
STR_3015 :Oosterse stijl
|
||||
STR_3016 :Marsstijl
|
||||
STR_3017 :Jungledrumsstijl
|
||||
STR_3018 :Egyptische stijl
|
||||
STR_3019 :Speelgoedlandstijl
|
||||
STR_3020 :
|
||||
STR_3021 :Ruimtestijl
|
||||
STR_3022 :Horrorstijl
|
||||
STR_3023 :Technostijl
|
||||
STR_3024 :Rustige stijl
|
||||
STR_3025 :Zomerstijl
|
||||
STR_3026 :Waterstijl
|
||||
STR_3027 :Wildweststijl
|
||||
STR_3028 :Jurastijl
|
||||
STR_3029 :Rockstijl
|
||||
STR_3030 :Ragtimestijl
|
||||
STR_3031 :Fantasiestijl
|
||||
STR_3032 :Rockstijl 2
|
||||
STR_3033 :IJsstijl
|
||||
STR_3034 :Sneeuwstijl
|
||||
STR_3035 :Extra muziek 1
|
||||
STR_3036 :Extra muziek 2
|
||||
STR_3037 :Middeleeuwse stijl
|
||||
STR_3038 :Stadsstijl
|
||||
STR_3039 :Orgelstijl
|
||||
STR_3040 :Mechanische stijl
|
||||
STR_3041 :Moderne stijl
|
||||
STR_3042 :Piratenstijl
|
||||
STR_3043 :Rockstijl 3
|
||||
STR_3044 :Snoepstijl
|
||||
STR_3045 :Selecteer welke muziekstijl er moet worden gedraaid
|
||||
STR_3047 :De gemeente staat de sloop van en wijzigingen aan deze attractie niet toe
|
||||
STR_3048 :Marketingcampagnes worden niet toegestaan door de gemeente
|
||||
|
@ -2355,7 +2324,7 @@ STR_3305 :{WINDOW_COLOUR_2}Maandelijkse inkomsten:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Maandelijkse winst:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimumlengte:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Plezierwaarde:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Attracties met een monumentenstatus:
|
||||
|
@ -2917,7 +2886,7 @@ STR_5755 :Incompatibele softwareversie (server gebruikt {STRING})
|
|||
STR_5756 :Ongeldig wachtwoord
|
||||
STR_5757 :Server is vol
|
||||
STR_5758 :{OUTLINE}{GREEN}Nieuwe speler: {STRING}.
|
||||
STR_5759 :Bezig met downloaden van de kaart… ({INT32} / {INT32} KiB)
|
||||
STR_5759 :Bezig met downloaden van de kaart…
|
||||
STR_5760 :Hong Kong-dollar (HK$)
|
||||
STR_5761 :Taiwanese dollar (NT$)
|
||||
STR_5762 :Chinese yuan (CN¥)
|
||||
|
@ -3479,7 +3448,7 @@ STR_6374 :H
|
|||
STR_6375 :Onbekende attractie
|
||||
STR_6376 :{WINDOW_COLOUR_2}Voertuig:{NEWLINE}{BLACK}{STRINGID} voor {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID} voor {STRINGID}
|
||||
STR_6378 :Objectenlijst ophalen: {INT32} / {INT32}
|
||||
STR_6378 :Objectenlijst ophalen:
|
||||
STR_6379 :Ongeldige gegevens ontvangen
|
||||
STR_6380 :Update beschikbaar!
|
||||
STR_6381 :Meepraten op de OpenRCT2-Discord
|
||||
|
@ -3697,6 +3666,47 @@ STR_6593 :Parkafscheiding verwijderen
|
|||
STR_6594 :Vakinspecteur: Helling muur instellen
|
||||
STR_6595 :{WINDOW_COLOUR_2}Auteur: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Auteurs: {BLACK}{STRING}
|
||||
STR_6597 :Ongeldige parameter.
|
||||
STR_6598 :Waarde valt buiten bereik.
|
||||
STR_6599 :Spookelement niet gevonden.
|
||||
STR_6600 :Ballon niet gevonden.
|
||||
STR_6601 :Personeelslid niet gevonden.
|
||||
STR_6602 :Attractie niet gevonden.
|
||||
STR_6603 :Attractie-object niet gevonden.
|
||||
STR_6604 :Speler niet gevonden.
|
||||
STR_6605 :Ingangselement niet gevonden.
|
||||
STR_6606 :Oppervlakte-element niet gevonden.
|
||||
STR_6607 :Kaartelement niet gevonden.
|
||||
STR_6608 :Baanelement niet gevonden.
|
||||
STR_6609 :Baanblok niet gevonden.
|
||||
STR_6610 :Padelement niet gevonden.
|
||||
STR_6611 :Muurelement niet gevonden.
|
||||
STR_6612 :Lichtkrantelement niet gevonden.
|
||||
STR_6613 :Object opnieuw laden
|
||||
STR_6614 :Kan de toegangsprijs niet aanpassen
|
||||
STR_6615 :Dit baantype vereist water
|
||||
STR_6616 :Ongeldige actie voor dit type werknemer
|
||||
STR_6617 :Kan een kaartelement niet met zichzelf verwisselen
|
||||
STR_6618 :Kan de beperkingen van dit object niet aanpassen…
|
||||
STR_6619 :Dit objecttype kan niet worden beperkt!
|
||||
STR_6620 :Object niet gevonden!
|
||||
STR_6621 :Beperken
|
||||
STR_6622 :Maakt het object enkel beschikbaar in de scenariobewerker en zandbakmodus.
|
||||
STR_6623 :Voer ‘help’ in voor een lijst met beschikbare commando’s. Voer ‘hide’ in om de console te verbergen.
|
||||
STR_6624 :Vakinspecteur: Elementen sorteren
|
||||
STR_6625 :Ongeldige kleur
|
||||
STR_6626 :Animatie is in spiegelbeeld
|
||||
STR_6627 :Snelheid is te hoog!
|
||||
STR_6628 :Kan alleen op de rand geplaatst worden!
|
||||
STR_6629 :Werkbalkknoppen horizontaal centreren
|
||||
STR_6630 :Hiermee worden de knoppen van de bovenste werkbalk in het midden geplaatst, in plaats van aan weerszijden.
|
||||
STR_6631 :Bezig met laden…
|
||||
STR_6632 :Objecten checken…
|
||||
STR_6633 :Scenario’s checken…
|
||||
STR_6634 :Baanontwerpen checken…
|
||||
STR_6635 :Assetpacks checken…
|
||||
STR_6636 :Titelpresentaties checken…
|
||||
STR_6637 :Titelpresentatie wordt geladen…
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4273,158 +4283,158 @@ STR_DTLS :Maak je eigen Six Flags-park, door gebruik te maken van attracties
|
|||
|
||||
## Wacky Worlds Scenarios
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afrika - Diamantmijn
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :Je hebt een verlaten diamantmijn geërfd en een waardevolle diamant gevonden. Je besluit dit geld te investeren om een wereldberoemd themapark te bouwen.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afrika - Oase
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :Er is een oase in de woestijn gevonden die een prachtige locatie van een park zou vormen. Voor transport van en naar de oase is gezorgd.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afrika - Victoriawatervallen
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :Er is een stuwdam gebouwd die goedkope energie in overvloed levert voor je park. Je moet een hoge parkwaarde bereiken om de lening voor de dam terug te betalen.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctica - Ecologische reddingsactie
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :De milieuorganisatie heeft je gevraagd om een lelijke oude olieraffinaderij om te vormen tot een toeristische trekpleister. Land is goedkoop maar de rente op leningen is hoog. Je kunt de oude gebouwen verkopen als schroot.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Azië - Meer toeristen naar de Chinese Muur
|
||||
STR_SCNR :De Chinese Muur
|
||||
STR_PARK :De Chinese Muur
|
||||
STR_DTLS :De regering heeft besloten om meer toeristen naar de Chinese Muur door er een themapark naast te bouwen. Geld speelt geen rol!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Azië - Polderen aan de kust
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :Een bestaand pretpark heeft geen ruimte meer. Je enige optie is om naar de zee uit te breiden, waarvoor je geld hebt geleend. Vanwege het aardbevingsgevaar zijn er hoogtebeperkingen van kracht.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Azië - Paleis van de Maharadja
|
||||
STR_SCNR :Park Maharadja
|
||||
STR_PARK :Park Maharadja
|
||||
STR_DTLS :De Maharadja heeft jou aangewezen om de lokale bevolking te vermaken. Bouw een park dat is geïnspireerd door het paleis van de Maharadja.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australië - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :Je helpt de Aboriginals om een park te bouwen om het bewustzijn voor hun cultuur te vergroten. Je moet een groot aantal bezoekers aantrekken om hen de unieke geschiedenis van de Aboriginals bij te brengen.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australië - Plezier op het strand
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :Het themapark van een lokale ondernemer is over de kop gegaan. Je bezit zelf al een klein park en hebt het andere park overgenomen. Combineer beide parken tot één groot park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Europees Cultureel Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :Je bent aangesteld om het beheer over een attractiepark over de Europese cultuur over te nemen. Je moet het aantal bezoekers verhogen om de EU-subsidie terug te betalen voor het einde van de huidige termijn van het Europees Parlement.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovatie
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :Een oud park is vervallen. Je hebt een lening van de Europese Unie gekregen om het troosteloze terrein weer in oude luister te herstellen! Je moet het park renoveren en de lening terugbetalen.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Noord-Amerika - Extreem Hawaiiaans eiland
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :De bevolking van Hawaii wil wel eens iets spannenders dan surfen. Houd dit in het achterhoofd bij het bouwen van een park om zoveel mogelijk mogelijk toeristen aan te trekken.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Noord-Amerika - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :Je moet een park bouwen op de beperkte ruimte aan weerszijden van dit natuurschoon. Hierbij heb je de mogelijkheid om land te kopen van de indianen.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Noord-Amerika - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Je bent een succesvol zakenman op een lange sabbatical. Die wil je gebruiken om het stadspark om te toveren in een achtbanenparadijs. Geld speelt geen rol!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Zuid-Amerika - Verloren Incastad
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :Om nog meer toeristen te trekken moet je een park bouwen dat past bij de omgeving. Dat betekent ook dat er hoogtebeperkingen zijn.
|
||||
STR_DTLS :Om nog meer toeristen te trekken moet je een park bouwen dat past bij de omgeving.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Zuid-Amerika - Regenwoudplateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :In het regenwoud is er niet veel plek. Je moet zo veel mogelijk in de open plek zien te persen om een goed alternatief voor de lokale houtindustrie te vormen.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Zuid-Amerika - Carnival van Rio
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :Je hebt een klein park in de buurt van Rio, maar de bank wil haar lening terug. Je moet je winst zien te verhogen om je schuld terug te betalen.
|
||||
|
||||
## Time Twister
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Middeleeuwen - Kasteel
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :De leden van de lokale vereniging die oude veldslagen naspeelt nemen hun hobby serieus. Ze hebben jou de klus toevertrouwd om van Cliffside Castle een middeleeuws themapark te maken.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Middeleeuwen - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :Om geld van de rijken naar de armen te brengen hebben jij en je Merry Men besloten een themapark te bouwen in Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Toekomst - Eerste ontmoeting
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Er is leven ontdekt op een verre planeet! Bouw een buitenaards themapark om munt te slaan uit de onverwachte golf van interesse.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Toekomst - Stad van de toekomst
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Laat je inventieve, utopische visie van de toekomst zien! Bedenk een furistisch ontwerp met state-of-the-art attracties.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythologie - Animatronic-filmset
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :Je moet een bestaand pretpark, gebouwd op een oude filmset, beheren en verbeteren. Bouw een eerbetoon aan de pioniers van de stop-motionanimatie, die de wezens uit de mythologie tot leven brachten op het witte doek.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythologie - Wieg van de beschaving
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :Je bezit een eiland van grote archeologische waarde, dat je voor het nageslacht wilt beschermen. Dit wil je bekostigen door een park te bouwen met de mythologische geschiedenis van je eiland als thema.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistorie - Na de meteoriet
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :Je bezit een stoffige oude meteorietkrater. Als echte ondernemer heb je besloten om er een themapark van te maken en zo munt te slaan uit je (op het eerste gezicht) waardeloze land.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistorie - Jurasafari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :Je moet een themapark bouwen in Jurastijl. Om de bezoekers zo dicht mogelijk bij de exotische planten en dieren te laten komen, moeten je attracties over en door de vallei gaan lopen.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistorie - Steentijd
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :Om te voorkomen dat er een snelweg wordt aangelegd en zo de mysterieuze prehistorische steencirkels te beschermen, moet je een winstgevend themapark bouwen. Het kan echter lastig worden om bezoekers aan te trekken, aangezien het terrein vrij ruw is.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Alcatraz
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Het beruchte gevangeniseiland, dat ooit volzat met illegale drankstokers en gangsters, is nu te koop. Je hebt besloten het te veranderen in een toeristentrekpleister. Geld speelt geen rol!
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :Het is al bijna 75 jaar geleden dat je grootvader de Schneider Cup won. Je hebt besloten zijn prestatie te eren met een themapark dat is geïnspireerd door de beroemde watervliegtuigenrace.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Wolkenkrabbers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Je bezit een lege kavel in de stad, tussen de laagbouw. Bouw een themapark van wolkenkrabbers, geïnspireerd door de artdecostijl van de jaren twintig.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock-’n-roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Een groot jaarlijks muziekfestival vindt plaats op jouw terrein. Bouw een hip themapark om het publiek van vrije geesten te vermaken.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock-’n-roll - Rock-’n-roll
|
||||
STR_SCNR :Rock ’n’ Roll Revival
|
||||
STR_PARK :Rock ’n’ Roll Revival
|
||||
STR_DTLS :Dit verouderde themapark heeft betere tijden gekend. Geef het park een rock-’n-roll-makeover en verander het in een succesvolle onderneming.
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@ STR_0768 :Dozorca {INT32}
|
|||
STR_0769 :Mechanik {INT32}
|
||||
STR_0770 :Strażnik {INT32}
|
||||
STR_0771 :Komik {INT32}
|
||||
STR_0777 :Park bez nazwy{POP16}{POP16}
|
||||
STR_0777 :Park bez nazwy
|
||||
STR_0778 :Znak
|
||||
STR_0779 :1
|
||||
STR_0780 :2
|
||||
|
@ -1735,12 +1735,12 @@ STR_2382 :Teren
|
|||
STR_2383 :Woda
|
||||
STR_2384 :{WINDOW_COLOUR_2}Twój cel:
|
||||
STR_2385 :{BLACK}Brak
|
||||
STR_2386 :{BLACK}Miej przynajmniej {COMMA16} gości w parku na koniec roku {MONTHYEAR} przy ocenie parku wynoszącej przynajmniej 600
|
||||
STR_2386 :{BLACK}Miej przynajmniej {COMMA32} gości w parku na koniec roku {MONTHYEAR} przy ocenie parku wynoszącej przynajmniej 600
|
||||
STR_2387 :{BLACK}Uzyskaj wartość parku nie mniejszą niż {POP16}{POP16}{CURRENCY} na koniec {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Baw się dobrze!
|
||||
STR_2389 :{BLACK}Wybuduj tę atrakcję ({STRINGID}) najlepiej jak potrafisz!
|
||||
STR_2390 :{BLACK}Zbuduj w parku 10 różnych działających kolejek górskich, każda o współczynniku emocji wynoszącym przynajmniej 6.00
|
||||
STR_2391 :{BLACK}Miej przynajmniej {COMMA16} gości w swoim parku. Nie pozwól aby ocena parku spadła poniżej 700 nawet na chwilę!
|
||||
STR_2391 :{BLACK}Miej przynajmniej {COMMA32} gości w swoim parku. Nie pozwól aby ocena parku spadła poniżej 700 nawet na chwilę!
|
||||
STR_2392 :{BLACK}Uzyskaj miesięczny przychód ze sprzedaży biletów na atrakcje w wysokości przynajmniej {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Zbuduj w parku 10 różnych działających kolejek górskich, każda o współczynniku emocji wynoszącym przynajmniej 7.00 i nie krótsza niż {LENGTH}
|
||||
STR_2394 :{BLACK}Dokończ budowę 5 częściowo już wybudowanych kolejek górskich, projektując je tak aby współczynnik emocji każdej z nich nie był mniejszy niż {POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2095,39 +2095,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Nie można wczytać pliku…
|
||||
STR_3011 :Plik zawiera nieprawidłowe dane
|
||||
STR_3012 :Styl zderzaków (autodromy)
|
||||
STR_3013 :Styl organów wesołego miasteczka
|
||||
STR_3014 :Styl rzymskich fanfarów
|
||||
STR_3015 :Styl orientalny
|
||||
STR_3016 :Styl marsjański
|
||||
STR_3017 :Styl bębnów dżungli
|
||||
STR_3018 :Styl egipski
|
||||
STR_3019 :Styl krainy zabawek
|
||||
STR_3020 :
|
||||
STR_3021 :Styl kosmiczny
|
||||
STR_3022 :Styl horror
|
||||
STR_3023 :Styl techno
|
||||
STR_3024 :Styl delikatny
|
||||
STR_3025 :Styl letni
|
||||
STR_3026 :Styl wodny
|
||||
STR_3027 :Styl dziki zachód
|
||||
STR_3028 :Styl jurajski
|
||||
STR_3029 :Styl rockowy
|
||||
STR_3030 :Styl ragtime
|
||||
STR_3031 :Styl fantasty
|
||||
STR_3032 :Styl rockowy 2
|
||||
STR_3033 :Styl lodowy
|
||||
STR_3034 :Styl śnieżny
|
||||
STR_3035 :Muzyka niestandardowa 1
|
||||
STR_3036 :Muzyka niestandardowa 2
|
||||
STR_3037 :Styl średniowieczny
|
||||
STR_3038 :Styl uliczny
|
||||
STR_3039 :Styl organowy
|
||||
STR_3040 :Styl mechaniczny
|
||||
STR_3041 :Styl nowoczesny
|
||||
STR_3042 :Styl piracki
|
||||
STR_3043 :Styl rockowy 3
|
||||
STR_3044 :Styl cukierkowy
|
||||
STR_3045 :Wybierz styl muzyczny
|
||||
STR_3047 :Władze lokalne zabraniają rozbiórki lub modyfikacji tej atrakcji
|
||||
STR_3048 :Kampanie marketingowe zabronione przez władze lokalne
|
||||
|
@ -2354,7 +2321,7 @@ STR_3305 :{WINDOW_COLOUR_2}Miesięczny przychód:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Miesięczny zysk:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimalna długość:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Wskaźnik emocji:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Przejażdżki/atrakcje według następującej kolejności:
|
||||
|
@ -2914,7 +2881,7 @@ STR_5755 :Niewłaściwa wersja gry
|
|||
STR_5756 :Błędne hasło
|
||||
STR_5757 :Serwer osiągnął maksymalną liczbę graczy
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} dołączył do gry
|
||||
STR_5759 :Pobieranie mapy … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Pobieranie mapy …
|
||||
STR_5760 :Dolar hongkoński (HK$)
|
||||
STR_5761 :Dolar tajwański (NT$)
|
||||
STR_5762 :Juan chiński (CN¥)
|
||||
|
@ -3478,7 +3445,7 @@ STR_6374 :P
|
|||
STR_6375 :Nieznana atrakcja
|
||||
STR_6376 :{WINDOW_COLOUR_2}Pojazd:{NEWLINE}{BLACK}{STRINGID} dla {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Typ: {BLACK}{STRINGID} dla {STRINGID}
|
||||
STR_6378 :Odebrano listę obiektów: {INT32} / {INT32}
|
||||
STR_6378 :Odebrano listę obiektów:
|
||||
STR_6379 :Odebrano nieprawidłowe dane
|
||||
STR_6380 :Dostępna aktualizacja!
|
||||
STR_6381 :Dołącz do Discorda OpenRCT2!
|
||||
|
@ -4204,87 +4171,87 @@ STR_DTLS :Wybuduj brakujące obiekty “Six Flags” lub upiększ lunapark w
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afryka - Kopalnia diamentów
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :Otrzymujesz w spadku nieużywaną kopalnię diamentów i znajdujesz w niej cenny kamień szlachetny. Postanawiasz zainwestować zdobytą fortunę w budowę parku tematycznego, który zasłynie na całym świecie.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afryka - Oaza
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :Odkryto pustynną oazę, która może stać się dobrym miejscem pod budowę lunaparku. Transport został zapewniony.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afryka - Wodospad Wiktorii
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :Wybudowano tamę umożliwiającą produkcję taniej energii w hydroelektrowni, która będzie zasilać park. Musisz sprawić, aby osiągnął on dużą wartość, dzięki czemu spłacisz kredyt zaciągnięty na budowę.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarktyka - Ekologiczny odzysk
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :Agencja ochrony środowiska skierowała cię do przekształcenia starej rafinerii, będącej solą w oku ekologów, w czołową atrakcję turystyczną. Ziemia jest tania, lecz odsetki od kredytów wysokie. Możesz sprzedać stare budynki, aby powiększyć swoje fundusze.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Azja - Rozwój turystyki wokół Wielkiego Muru Chińskiego
|
||||
STR_SCNR :Wielki Mur Chiński
|
||||
STR_PARK :Wielki Mur Chiński
|
||||
STR_DTLS :Władze postanowiły przyciągnąć więcej turystów w okolice Wielkiego Muru, budując w pobliżu park tematyczny. Pieniądze nie grają roli!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Azja - Odzysk japońskiego wybrzeża
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :W pewnym parku zabrakło miejsca. Twoją jedyną szansą jest wyjście w morze i w tym celu zaciągasz kredyt. Twoje budowle muszą mieć ograniczoną wysokość z uwagi na obciążenie fundamentów i zagrożenie trzęsieniem ziemi.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Azja - Pałac Maharadży
|
||||
STR_SCNR :Park Maharadży
|
||||
STR_PARK :Park Maharadży
|
||||
STR_DTLS :Maharadża zlecił ci zapewnienie rozrywki swoim licznym poddanym. Wybuduj lunapark, wzorując się na pałacu maharadży.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :Pomagasz Aborygenom w budowie lunaparku w ramach programu świadomości kulturalnej. Musisz przyciągnąć wielu gości i zapoznać ich z unikalnym dziedzictwem ludu Aborygenów.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australia - Zabawa na plaży
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :Miejscowe oceanarium zbankrutowało. Masz już niewielki własny lunapark i kupujesz drugi park od firmy budowlanej. Przekształć je w duży połączony lunapark.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Europejski Festiwal Kulturalny
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :Zlecono ci objęcie kierownictwa działu Turystycznych Atrakcji Kulturalnych. Musisz zwiększyć liczbę gości, aby spłacić unijne dofinansowanie przed zakończeniem bieżącej kadencji parlamentu europejskiego.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Odbudowa
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :Pewien stary lunapark popadł w ruinę. Otrzymujesz fundusze z Unii Europejskiej, aby przywrócić temu żałosnemu miejscu jego dawną chwałę! Musisz odnowić park i zwrócić otrzymany kredyt.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Ameryka Płn. - Ekstremalne Hawaje
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :Mieszkańcy Hawajów znudzili się surfowaniem i szukają bardziej intensywnych przeżyć. Budując swój lunapark, musisz o tym pamiętać, aby utrzymać wysoką ocenę dla turystów.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Ameryka Płn. - Wielki Kanion
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :Twoim celem jest wybudowanie lunaparku na ograniczonym terenie znajdującym się na jednym z brzegów tego przyrodniczego cudu. Będziesz mógł kupować ziemię od Indian. Musisz osiągnąć swój cel, aby zapewnić utrzymanie mieszkańcom pobliskiego miasteczka.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Ameryka Płn. - Raj kolejek górskich
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Jesteś znanym biznesmenem na urlopie i pragniesz wykorzystać wolny czas na przekształcenie miejskiego lunaparku w raj dla miłośników kolejek górskich. Pieniądze nie grają roli!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Ameryka Płd. - Zaginione miasto Inków
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :W celu lepszego wypromowania miejscowej turystyki musisz wybudować lunapark pasujący do swego otoczenia. Obowiązuje ograniczenie wysokości budynków.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Ameryka Płd. - Tropikalny płaskowyż
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :W lesie deszczowym miejsce jest bardzo cenne - musisz upchnąć jak najwięcej obiektów na dostępnym wykarczowanym obszarze, aby lunapark stał się dobrą alternatywą dla miejscowego przemysłu drzewnego.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Ameryka Płd. - Karnawał w Rio
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :Prowadzisz mały lunapark pod Rio, a bank wezwał cię do spłacenia kredytu. Musisz szybko zwiększyć swoje przychody, aby zwrócić dług.
|
||||
|
||||
|
@ -4292,72 +4259,72 @@ STR_DTLS :Prowadzisz mały lunapark pod Rio, a bank wezwał cię do spłaceni
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Mroczne Wieki - zamek
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Miejscowi miłośnicy odtwarzania rycerskich turniejów podchodzą do swego hobby raczej poważnie. Powierzyli ci zadanie budowy lunaparku stylizowanego na średniowiecze, który ma powstać na ziemiach Zamku na urwisku.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Mroczne Wieki - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :Aby uwolnić bogatych od bogactwa i rozdać go biednym, wraz ze swą bandą wesołych ludzi z lasu planujesz wybudować park tematyczny w lesie Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Przyszłość - Pierwsze spotkania
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Odkryto życie na odległej planecie! Wybuduj park tematyczny, którego motywem przewodnim będą kosmici, a zgarniesz kasę dzięki bezprecedensowej fali zainteresowania tym zagadnieniem.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Przyszłość - Świat przyszłości
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Pokaż ludziom swoją twórczą, utopijną wizję przyszłości - wybuduj futurystyczny lunapark, oferujący atrakcje najwyższej jakości.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitologia - Mechaniczny plan filmowy
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :Otrzymujesz zadanie prowadzenia i rozbudowy istniejącego lunaparku, wybudowanego na dawnym planie filmowym. Stwórz hołd dla pionierów animacji poklatkowej, którzy przywoływali do życia mitologiczne potwory na srebrnym ekranie.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitologia - Kołyska cywilizacji
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :Jesteś właścicielem pewnej wyspy o dużej wartości archeologicznej. Postanawiasz sfinansować konserwację tych zabytków, budując lunapark w stylu inspirowanym mitologicznym dziedzictwem regionu.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoria - Po asteroidzie
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :Otrzymujesz na własność zakurzony krater po meteorycie. Jako przedsiębiorca z krwi i kości, postanawiasz zbudować park tematyczny związany z tym obiektem i przekształcić w ten sposób swój bezwartościowy teren w źródło przyzwoitych dochodów.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoria - Jurajskie safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :Otrzymujesz zadanie wybudowania lunaparku w stylu jurajskim. Aby goście mogli wygodnie podziwiać egzotyczne rośliny i okazy zwierząt, musisz skonstruować kolejki przejeżdżające nad doliną i prowadzące do niej.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoria - Epoka kamienna
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :Aby powstrzymać budowniczych autostrady i zachować dla potomności tajemnicze kamienne kręgi, musisz wybudować lunapark w stylu epoki kamiennej i osiągnąć zyski. Jednak przyciągnięcie gości może okazać się trudne, bo okolica jest wybitnie niegościnna.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Ryczące Dwudziestki - Wyspa więzienna
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Niesławna wyspa więzienna, której ludność składała się niegdyś z przemytników i bandytów, jest na sprzedaż. Postanawiasz przekształcić ją w niesamowitą atrakcję turystyczną - pieniądze nie grają roli.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Ryczące Dwudziestki - Puchar Schneidera
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :Za kilka lat będzie mieć miejsce 75. rocznica zdobycia przez twego dziadka Pucharu Schneidera. Postanawiasz uczcić ten wielki sukces, budując lunapark stylizowany na ów sławny wyścig hydroplanów.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Ryczące Dwudziestki - Drapacze chmur
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Jesteś właścicielem pustej parceli w pobliżu dzielnicy o niskiej zabudowie. Aby wycisnąć jak największy zysk ze swej nieruchomości, wybuduj lunapark, którego motywem wiodącym będą drapacze chmur w stylu art deco, charakterystycznym dla lat dwudziestych.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Na twoim terenie odbywa się wielki doroczny festiwal muzyczny. Wybuduj lunapark w stylu hipisowskim, by wolnomyślicielska publiczność mogła się w nim zabawić.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Rock ’n’ Roll Revival
|
||||
STR_PARK :Rock ’n’ Roll Revival
|
||||
STR_DTLS :Ten starzejący się lunapark ma najlepsze dni za sobą. Pomóż właścicielom nadać mu stylowy, rockandrollowy wygląd i przekształć to miejsce w dochodowe przedsięwzięcie.
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Montanha-Russa Híbrida
|
|||
STR_0094 :Montanha-Russa de Trilho Único
|
||||
STR_0095 :Montanha-Russa Alpina
|
||||
STR_0096 :Montanha-Russa de Madeira Clássica
|
||||
STR_0097 :Montanha-Russa em Pé Clássica
|
||||
STR_0512 :Uma montanha russa compacta com subida de elevação em espiral e quedas suaves e retorcidas
|
||||
STR_0513 :Uma montanha russa de looping onde passageiros andam em pé
|
||||
STR_0514 :Trens suspensos abaixo do trilho da montanha-russa balançam para fora nas curvas
|
||||
|
@ -181,12 +182,13 @@ STR_0603 :Uma montanha-russa com estilo semelhante à de madeira, mas trilhos
|
|||
STR_0604 :Passageiros andam numa fila única em uma pista estreita de monotrilho, enquanto correm por inversões apertadas e mudanças de direções.
|
||||
STR_0605 :Passageiros descem de tobogã por um trilho de aço sinuoso, freando para controlar suas velocidades
|
||||
STR_0606 :Uma montanha-russa de madeira de estilo mais antigo com um trajeto rápido e duro, com muito ‘tempo no ar’, alguma força G lateral e projetada para um sentimento de ‘perda de controle’
|
||||
STR_0607 :Uma montanha-russa de aço intensa e de estilo antigo onde os passageiros andam em pé
|
||||
STR_0767 :Visitante {INT32}
|
||||
STR_0768 :Faxineiro {INT32}
|
||||
STR_0769 :Mecânico {INT32}
|
||||
STR_0770 :Segurança {INT32}
|
||||
STR_0771 :Animador {INT32}
|
||||
STR_0777 :Parque Sem Nome{POP16}{POP16}
|
||||
STR_0777 :Parque Sem Nome
|
||||
STR_0778 :Entrar
|
||||
STR_0779 :1º de
|
||||
STR_0780 :2 de
|
||||
|
@ -1737,12 +1739,12 @@ STR_2382 :Terreno
|
|||
STR_2383 :Água
|
||||
STR_2384 :{WINDOW_COLOUR_2}Seu objetivo:
|
||||
STR_2385 :{BLACK}Nenhum
|
||||
STR_2386 :{BLACK}Ter pelo menos {COMMA16} visitantes em seu parque até o fim de {MONTHYEAR}, com classificação de parque de pelo menos 600
|
||||
STR_2386 :{BLACK}Ter pelo menos {COMMA32} visitantes em seu parque até o fim de {MONTHYEAR}, com classificação de parque de pelo menos 600
|
||||
STR_2387 :{BLACK}Alcançar um valor do parque de pelo menos {POP16}{POP16}{CURRENCY} até o fim de {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Divirta-se!
|
||||
STR_2389 :{BLACK}Construir o melhor {STRINGID} que puder!
|
||||
STR_2390 :{BLACK}Ter 10 tipos de montanha-russa diferentes operando em seu parque, cada uma com um valor de emoção de pelo menos 6.00
|
||||
STR_2391 :{BLACK}Ter pelo menos {COMMA16} visitantes em seu parque. Você não pode deixar a classificação de parque abaixo de 700 em momento algum!
|
||||
STR_2391 :{BLACK}Ter pelo menos {COMMA32} visitantes em seu parque. Você não pode deixar a classificação de parque abaixo de 700 em momento algum!
|
||||
STR_2392 :{BLACK}Alcançar uma receita mensal de ingressos de atrações de pelo menos {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Ter 10 tipos de montanha-russa diferentes operando em seu parque, cada uma com um comprimento mínimo de {LENGTH}, e um valor de emoção de no mínimo 7.00
|
||||
STR_2394 :{BLACK}Terminar de construir todas as 5 montanhas-russas parcialmente construídas neste parque, projetando-as para alcançar um valor de emoção de pelo menos {POP16}{POP16}{COMMA2DP32} cada
|
||||
|
@ -2097,39 +2099,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Incapaz de carregar arquivo…
|
||||
STR_3011 :Arquivo contém dados inválidos
|
||||
STR_3012 :Estilo Carrinho de Bate-Bate
|
||||
STR_3013 :Estilo Órgão de Parque de Diversões
|
||||
STR_3014 :Estilo Fanfarra Romana
|
||||
STR_3015 :Estilo Oriental
|
||||
STR_3016 :Estilo Marciano
|
||||
STR_3017 :Estilo Bateria da Selva
|
||||
STR_3018 :Estilo Egípcio
|
||||
STR_3019 :Estilo Brinquedolândia
|
||||
STR_3020 :
|
||||
STR_3021 :Estilo Espaço
|
||||
STR_3022 :Estilo Horror
|
||||
STR_3023 :Estilo Techno
|
||||
STR_3024 :Estilo Suave/Calmo
|
||||
STR_3025 :Estilo Verão
|
||||
STR_3026 :Estilo Água
|
||||
STR_3027 :Estilo Oeste Selvagem
|
||||
STR_3028 :Estilo Jurássico
|
||||
STR_3029 :Estilo Rock
|
||||
STR_3030 :Estilo Ragtime
|
||||
STR_3031 :Estilo Fantasia
|
||||
STR_3032 :Estilo Rock 2
|
||||
STR_3033 :Estilo Gelo
|
||||
STR_3034 :Estilo Neve
|
||||
STR_3035 :Música Personalizada 1
|
||||
STR_3036 :Música Personalizada 2
|
||||
STR_3037 :Estilo Medieval
|
||||
STR_3038 :Estilo Urbano
|
||||
STR_3039 :Estilo Órgão
|
||||
STR_3040 :Estilo Mecânico
|
||||
STR_3041 :Estilo Moderno
|
||||
STR_3042 :Estilo Piratas
|
||||
STR_3043 :Estilo Rock 3
|
||||
STR_3044 :Estilo Doce
|
||||
STR_3045 :Selecione o estilo de música para tocar
|
||||
STR_3047 :Autoridades locais proíbem a demolição ou modificações nesta atração
|
||||
STR_3048 :Campanhas de marketing proibidas pelas autoridades locais
|
||||
|
@ -2356,7 +2325,7 @@ STR_3305 :{WINDOW_COLOUR_2}Receita Mensal:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Lucro Mensal:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Comprimento Mínimo:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Classificação de emoção:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Atrações em ordem de preservação:
|
||||
|
@ -2916,7 +2885,7 @@ STR_5755 :Versão de Software Incorreta (Servidor está usando {STRING})
|
|||
STR_5756 :Senha Ruim
|
||||
STR_5757 :Servidor Cheio
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} entrou no jogo
|
||||
STR_5759 :Baixando mapa … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Baixando mapa …
|
||||
STR_5760 :Dólar de Hong Kong (HK$)
|
||||
STR_5761 :Dólar de New Taiwan (NT$)
|
||||
STR_5762 :Yuan Chinês(CN¥)
|
||||
|
@ -3480,7 +3449,7 @@ STR_6374 :F
|
|||
STR_6375 :Atração desconhecida
|
||||
STR_6376 :{WINDOW_COLOUR_2}Veículo: {NEWLINE}{BLACK}{STRINGID} para {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Tipo: {BLACK}{STRINGID} para {STRINGID}
|
||||
STR_6378 :Lista de objetos sendo recebidos: {INT32} / {INT32}
|
||||
STR_6378 :Lista de objetos sendo recebidos:
|
||||
STR_6379 :Dados inválidos recebidos
|
||||
STR_6380 :Atualização disponível!
|
||||
STR_6381 :Faça parte do Discord do OpenRCT2!
|
||||
|
@ -3698,6 +3667,53 @@ STR_6593 :Remover cercas do parque
|
|||
STR_6594 :Inspetor de azulejo: Mudar inclinação da parede
|
||||
STR_6595 :{WINDOW_COLOUR_2}Autor: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Autores: {BLACK}{STRING}
|
||||
STR_6597 :Parâmetro inválido
|
||||
STR_6598 :Valor fora do intervalo
|
||||
STR_6599 :Elemento fantasma não encontrado
|
||||
STR_6600 :Balão não encontrado
|
||||
STR_6601 :Funcionário não encontrado
|
||||
STR_6602 :Atração não encontrada
|
||||
STR_6603 :Objeto de entrada de atração não encontrado
|
||||
STR_6604 :Jogador não encontrado
|
||||
STR_6605 :Elemento de entrada não encontrado
|
||||
STR_6606 :Elemento de superfície não encontrado
|
||||
STR_6607 :Elemento de azulejo não encontrado
|
||||
STR_6608 :Elemento de pista não encontrado
|
||||
STR_6609 :Bloco de pista não encontrado
|
||||
STR_6610 :Elemento de caminho não encontrado
|
||||
STR_6611 :Elemento de muro não encontrado
|
||||
STR_6612 :Elemento de banner não encontrado
|
||||
STR_6613 :Recarregar objeto
|
||||
STR_6614 :Não é possível mudar o preço de entrada do parque
|
||||
STR_6615 :A pista nesse azulejo precisa de água
|
||||
STR_6616 :Ação inválida para esse tipo de funcionário
|
||||
STR_6617 :Não é possível trocar o elemento do azulejo com ele mesmo
|
||||
STR_6618 :Não é possível restringir ou liberar o objeto…
|
||||
STR_6619 :Tipo de objeto não pode ser restringido!
|
||||
STR_6620 :Objeto não encontrado!
|
||||
STR_6621 :Restringir
|
||||
STR_6622 :Restringir objeto ao Editor de Cenário e ao modo sandbox.
|
||||
STR_6623 :Digite ‘help’ para uma lista de comandos disponíveis. Digite ‘hide’ para esconder o console.
|
||||
STR_6624 :Inspetor de azulejo: Ordenar elementos
|
||||
STR_6625 :Cor inválida
|
||||
STR_6626 :Animação invertida
|
||||
STR_6627 :Velocidade da pista muito alta!
|
||||
STR_6628 :Só pode ser colocado nas bordas do caminho!
|
||||
STR_6629 :Alinhar botões da barra ferramentas horizontalmente centralizados
|
||||
STR_6630 :Essa configuração irá alinhar os botões da barra de ferramentas horizontalmente no centro da tela. A maneira tradicional de alinhá-los é nos cantos esquerdo e direito.
|
||||
STR_6631 :Carregando…
|
||||
STR_6632 :Verificando arquivos de objeto…
|
||||
STR_6633 :Verificando arquivos de cenário…
|
||||
STR_6634 :Verificando arquivos de projeto de pista…
|
||||
STR_6635 :Verificando conjuntos de recurso…
|
||||
STR_6636 :Verificando sequências de título…
|
||||
STR_6637 :Carregando sequências de título…
|
||||
STR_6638 :Interface Gráfica Ampliada
|
||||
STR_6639 :Modifica a interface para ser mais adequada ao uso por toque
|
||||
STR_6640 :Modificar conjuntos de recurso…
|
||||
STR_6641 :Janela de carregamento/progresso
|
||||
STR_6642 :{STRING} ({COMMA32} / {COMMA32})
|
||||
STR_6643 :{STRING} ({COMMA32} / {COMMA32} KiB)
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4287,87 +4303,87 @@ STR_DTLS :Construa os brinquedos Six Flags que faltam, ou crie seus próprios
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :África - Minas de Diamantes
|
||||
STR_SCNR :Minas da África
|
||||
STR_PARK :Minas da África
|
||||
STR_DTLS :Você herdou uma mina de diamante fora de uso, e encontra um diamante valioso. Você decide investir este dinheiro para construir um parque temático famoso mundialmente.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :África - Oásis
|
||||
STR_SCNR :Loucuras da Miragem
|
||||
STR_PARK :Loucuras da Miragem
|
||||
STR_DTLS :Um Oásis deserto foi encontrado e proporcionaria uma bela localização para um parque. Transporte para o oasis foi fornecido.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :África - Cataratas da Vitória
|
||||
STR_SCNR :No limite
|
||||
STR_PARK :No limite
|
||||
STR_DTLS :Uma barreira foi construída oferecendo energia hidroelétrica barata e abundante com a qual funcionará um parque. Você precisa atingir um alto valor de parque para ajudar a reembolsar o empréstimo para a barreira.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antártica - Resgate Ecológico
|
||||
STR_SCNR :Aventuras Geladas
|
||||
STR_PARK :Aventuras Geladas
|
||||
STR_DTLS :Ajude a agência de ambiente a transformar uma grande e velha refinaria ecológica de petróleo em atração turística de alto nível. Terrenos baratos, mas juros do empréstimo não. Pode-se vender os prédios velhos para melhorar a situação.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Ásia - Melhorias Turísticas na Grande Muralha da China
|
||||
STR_SCNR :Grande Muralha da China
|
||||
STR_PARK :Grande Muralha da China
|
||||
STR_DTLS :As autoridades decidiram melhorar o turismo em volta da Grande Muralha construindo um parque no terreno ao lado. Dinheiro não é o problema!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Ásia - Recuperação da Costa Japonesa
|
||||
STR_SCNR :Costa de Okinawa
|
||||
STR_PARK :Costa de Okinawa
|
||||
STR_DTLS :Um parque já existente ficou sem espaço. Sua única opção é construir em cima do mar, e também você pegou um empréstimo. Restrições de altura nas suas construções são obrigatórias por causa das fundações e riscos de terremotos.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Ásia - Palácio do Marajá
|
||||
STR_SCNR :Parque do Marajá
|
||||
STR_PARK :Parque do Marajá
|
||||
STR_DTLS :Você foi contratado pelo Marajá para trazer entretenimento para a grande população local. Construa um parque inspirado no palácio Mahajara.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australásia - Uluru
|
||||
STR_SCNR :Aventura Uluru
|
||||
STR_PARK :Aventura Uluru
|
||||
STR_DTLS :Você está ajudando os aborígenes a construir um parque como parte do programa de conscientização cultural. Você precisa conseguir um grande número de visitantes para educá-los no patrimônio único dos aborígenes.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australásia - Diversão na Praia
|
||||
STR_SCNR :Explosão de Churrasco na Praia
|
||||
STR_PARK :Explosão de Churrasco na Praia
|
||||
STR_DTLS :Um empreendimento local de parque de vida marinha foi derrubado. Você já opera um pequeno parque e compra o outro parque da companhia de construção. Desenvolva um grande parque combinado.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa - Festival Cultural Europeu
|
||||
STR_SCNR :Extravagância Europeia
|
||||
STR_PARK :Extravagância Europeia
|
||||
STR_DTLS :Você foi trazido para controlar uma Atração Cultural Europeia do Visitante e deve aumentar o número de visitantes a fim de reembolsar o subsídio da União Europeia no fim do mandato atual do Parlamento Europeu.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa - Renovação
|
||||
STR_SCNR :Das Cinzas
|
||||
STR_PARK :Das Cinzas
|
||||
STR_DTLS :Um velho parque caiu em ruínas. Você ganha uma concessão da União Europeia para retornar essa área privada à sua antiga glória! Você precisa renovar o parque e reembolsar a concessão.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :América do Norte - Longínqua Ilha Havaiana
|
||||
STR_SCNR :Waikiki Maluca
|
||||
STR_PARK :Waikiki Maluca
|
||||
STR_DTLS :As pessoas do Havaí estão entediadas de surfar e estão procurando por algo mais intenso. Você precisa construir um parque com isto em mente para manter a atração turística da área com classificação alta.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :América do Norte - Grand Canyon
|
||||
STR_SCNR :Calamidades do Canyon
|
||||
STR_PARK :Calamidades do Canyon
|
||||
STR_DTLS :Você tem que construir um parque num terreno limitado nos dois lados desse tesouro natural - tenha a oportunidade de comprar terrenos vizinhos dos Índios Nativos Americanos. Você precisa completar o objetivo para suprir a população da cidade local.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :América do Norte - Paraíso da Montanha-Russa
|
||||
STR_SCNR :Paraíso da Montanha-Russa
|
||||
STR_PARK :Paraíso da Montanha-Russa
|
||||
STR_DTLS :Você é um bem-sucedido magnata dos negócios em longas férias que deseja usar esse tempo transformando o parque da cidade em um Céu de Montanha-Russa. Dinheiro não é o problema!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :América do Norte - Cidade Perdida Inca
|
||||
STR_SCNR :Fundadação da Cidade Perdida
|
||||
STR_PARK :Fundadação da Cidade Perdida
|
||||
STR_DTLS :Para dar um impulso adicional ao turismo local você deve construir um parque que está em sintonia com seus arredores, e tem restrições de altura.
|
||||
STR_DTLS :Para dar um impulso adicional ao turismo local você deve construir um parque que está em sintonia com seus arredores.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :América do Sul - Planalto da Floresta Tropical
|
||||
STR_SCNR :Diversão na Floresta
|
||||
STR_PARK :Diversão na Floresta
|
||||
STR_DTLS :Espaço é limitado nessa preciosa floresta tropical - você deve amontoar o máximo possível na clareira existente, a fim de prover uma alternativa viável para a indústria madeireira local.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :América do Sul - Carnaval do Rio
|
||||
STR_SCNR :Praia do Pão de Açúcar
|
||||
STR_PARK :Praia do Pão de Açúcar
|
||||
STR_DTLS :Você gere um pequeno parque perto do Rio, mas o banco convocou o seu empréstimo. Você precisa aumentar rapidamente a sua capacidade de ganhos para reembolsar este débito inesperado.
|
||||
|
||||
|
@ -4375,72 +4391,72 @@ STR_DTLS :Você gere um pequeno parque perto do Rio, mas o banco convocou o s
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Idade Média - Castelo
|
||||
STR_SCNR :Castelo Cliffside
|
||||
STR_PARK :Castelo Cliffside
|
||||
STR_DTLS :Membros locais da sociedade de reconstituição da batalha são bastante sérios acerca de seus hobbies. Eles lhe confiaram o trabalho de construir um parque temático da Idade das Trevas nos terrenos do Castelo Cliffside.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Idade Média - Robin Hood
|
||||
STR_SCNR :Floresta de Sherwood
|
||||
STR_PARK :Floresta de Sherwood
|
||||
STR_DTLS :Para liberar a riqueza dos ricos e distribuir para os necessitados, você e seus seguidores decidiram construir um parque temático na Floresta de Sherwood.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Futuro - Primeiro Contado
|
||||
STR_SCNR :Extravagância Extraterrestre
|
||||
STR_PARK :Extravagância Extraterrestre
|
||||
STR_DTLS :Vida foi descoberta em um planeta distante. Construa um parque temático alienígena para ganhar dinheiro com a onda de juros sem precedentes.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Futuro - Mundo Futurista
|
||||
STR_SCNR :Cidade Gemini
|
||||
STR_PARK :Cidade Gemini
|
||||
STR_DTLS :Mostre sua inventiva, utópica visão do futuro - mostre um projeto futurista de parque que incorpore atrações de ponta.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mitológico - Set de Filmagem Animatrônico
|
||||
STR_SCNR :Travessuras Animatrônicas
|
||||
STR_PARK :Travessuras Animatrônicas
|
||||
STR_DTLS :Você foi designado para gerir e melhorar um parque temático existente, que foi construído num velho set de filme. Faça um tributo aos animadores pioneiros de stop-motion, os primeiros a trazer criaturas míticas à vida na tela prateada.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mitológico - Berço da Civilização
|
||||
STR_SCNR :Loucura Mitológica
|
||||
STR_PARK :Loucura Mitológica
|
||||
STR_DTLS :Você é dono de uma ilha de valor arqueológico particular. Você decidiu financiar sua preservação construindo um parque temático baseado no rico patrimônio Mitológico da área.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Pré-Histórico - Depois do Asteroide
|
||||
STR_SCNR :Diversão na Cratera
|
||||
STR_PARK :Diversão na Cratera
|
||||
STR_DTLS :Você é dono de uma velha cratera de meteoro empoeirada. No verdadeiro espírito empreendedor, você decidiu construir um parque temático de asteroide e converta seu terreno aparentemente sem valor em uma grande fortuna.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Pré-Histórico - Jurassic Safari
|
||||
STR_SCNR :Parquessauro
|
||||
STR_PARK :Parquessauro
|
||||
STR_DTLS :Você recebeu a tarefa de construir um parque temático da Era Jurássica. Para otimizar o acesso de seus visitantes para a exibição de plantas e animais exóticos, você precisará construir brinquedos envolta e dentro do vale.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Pré-Histórico - Idade da Pedra
|
||||
STR_SCNR :Passeio Rochoso
|
||||
STR_PARK :Passeio Rochoso
|
||||
STR_DTLS :Frustre os construtores da rodovia e preserve os misteriosos círculos de pedra antigos ao construir um parque temático da Idade da Pedra e lucrar. No entanto, atrair visitantes pode ser desafiador, já que o terreno é um pouco inóspito.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Anos 20 - Ilha-Prisão
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :A infame Ilha da Prisão - cuja população uma vez inchou com contrabandistas e estragos - agora está à venda. Você decidiu convertê-la em uma atração turística de alto nível, e dinheiro não é o problema.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Anos 20 - Copa Schneider
|
||||
STR_SCNR :Praia Schneider
|
||||
STR_PARK :Praia Schneider
|
||||
STR_DTLS :O 75º aniversário da vitória do seu avô na Copa Schneider está chegando em alguns anos. Você vai honrar a conquista dele construindo um parque temático baseado na famosa corrida de hidroavião.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Anos 20 - Arranha-Céus
|
||||
STR_SCNR :Metrópole
|
||||
STR_PARK :Metrópole
|
||||
STR_DTLS :Você é dono de um lote vazio perto da parte baixa da cidade. Para espremer o máximo de sua propriedade urbana, construa um parque temático arranha-céu inspirado pela arquitetura Art Déco crescente dos anos vinte.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Paz e Amor
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Um grande festival anual de música acontece em seu terreno. Construa um parque temático moderno para manter a audiência de espírito livre entretida.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Renascimento do Rock ’n’ Roll
|
||||
STR_PARK :Renascimento do Rock ’n’ Roll
|
||||
STR_DTLS :Este parque temático envelhecido já viu dias melhores. Ajude o dono dar uma aparência rock ’n’ roll retrô e transforme o lugar em um local bem-sucedido.
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ STR_0768 :Дворник {INT32}
|
|||
STR_0769 :Механик {INT32}
|
||||
STR_0770 :Охранник {INT32}
|
||||
STR_0771 :Артист {INT32}
|
||||
STR_0777 :Парк без имени{POP16}{POP16}
|
||||
STR_0777 :Парк без имени
|
||||
STR_0778 :Знак
|
||||
STR_0779 :1е
|
||||
STR_0780 :2е
|
||||
|
@ -1737,12 +1737,12 @@ STR_2382 :Земля
|
|||
STR_2383 :Вода
|
||||
STR_2384 :{WINDOW_COLOUR_2}Ваша задача:
|
||||
STR_2385 :{BLACK}Нет
|
||||
STR_2386 :{BLACK}Иметь не менее {COMMA16} гостей в парке к концу {MONTHYEAR}, и рейтинг парка не менее 600
|
||||
STR_2386 :{BLACK}Иметь не менее {COMMA32} гостей в парке к концу {MONTHYEAR}, и рейтинг парка не менее 600
|
||||
STR_2387 :{BLACK}Поднять стоимость парка до {POP16}{POP16}{CURRENCY} к концу {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Удачи!
|
||||
STR_2389 :{BLACK}Постройте самый лучший {STRINGID} что сможете!
|
||||
STR_2390 :{BLACK}Завести 10 различных типов американских горок, каждую с рейтингом волнения не менее 6.00
|
||||
STR_2391 :{BLACK}Иметь не менее {COMMA16} гостей в парке. Нельзя допустить падения рейтинга ниже 700!
|
||||
STR_2391 :{BLACK}Иметь не менее {COMMA32} гостей в парке. Нельзя допустить падения рейтинга ниже 700!
|
||||
STR_2392 :{BLACK}Довести ежемесячный доход от продажи билетов на аттракционы до {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Завести 10 различных типов Американских горок, каждая не короче {LENGTH}, и рейтингом волнения не менее 7.00
|
||||
STR_2394 :{BLACK}Закончить строительство всех 5 недостроенных горок, разработав тематику и добившись рейтинга волнения не ниже {POP16}{POP16}{COMMA2DP32} на каждой
|
||||
|
@ -2097,39 +2097,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Невозможно загрузить…
|
||||
STR_3011 :Неверные данные
|
||||
STR_3012 :Электро стиль
|
||||
STR_3013 :Ярмарочный стиль
|
||||
STR_3014 :Стиль римских фанфар
|
||||
STR_3015 :Восточный стиль
|
||||
STR_3016 :Марсианский стиль
|
||||
STR_3017 :Африканский стиль
|
||||
STR_3018 :Египетский стиль
|
||||
STR_3019 :Игрушечный стиль
|
||||
STR_3020 :
|
||||
STR_3021 :Космический стиль
|
||||
STR_3022 :Страшный стиль
|
||||
STR_3023 :Техно стиль
|
||||
STR_3024 :Нежный стиль
|
||||
STR_3025 :Летний стиль
|
||||
STR_3026 :Водный стиль
|
||||
STR_3027 :Стиль Дикого Запада
|
||||
STR_3028 :Юрский стиль
|
||||
STR_3029 :Рок
|
||||
STR_3030 :Стиль Регги
|
||||
STR_3031 :Фэнтези стиль
|
||||
STR_3032 :Рок 2
|
||||
STR_3033 :Ледяной стиль
|
||||
STR_3034 :Снежный стиль
|
||||
STR_3035 :Своя музыка 1
|
||||
STR_3036 :Своя музыка 2
|
||||
STR_3037 :Средневековье
|
||||
STR_3038 :Город
|
||||
STR_3039 :Органный стиль
|
||||
STR_3040 :Механический стиль
|
||||
STR_3041 :Современный стиль
|
||||
STR_3042 :Пиратский стиль
|
||||
STR_3043 :Рок 3
|
||||
STR_3044 :Конфетный стиль
|
||||
STR_3045 :Выберите стиль музыки
|
||||
STR_3047 :Местные власти запрещают уничтожение и изменение этого аттракциона
|
||||
STR_3048 :Маркетинговые кампании запрещены местными властями
|
||||
|
@ -2356,7 +2323,7 @@ STR_3305 :{WINDOW_COLOUR_2}Месячный доход:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Месячная прибыль:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Миним. длина:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Рейтинг волнения:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Аттракционы в зарезервированном порядке:
|
||||
|
@ -2846,87 +2813,87 @@ STR_DTLS :Постройте собственный парк Six Flags. Вы
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR : Африка - Добыча алмазов
|
||||
STR_SCNR :Шахты Африки
|
||||
STR_PARK :Шахты Африки
|
||||
STR_DTLS :Вы унаследовали алмазную шахту и нашли дорогой алмаз. Затем вы решили инвестировать деньги в тематический парк.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR : Африка - Оазис
|
||||
STR_SCNR :Мираж
|
||||
STR_PARK :Мираж
|
||||
STR_DTLS :Был открыт пустынный оазис, который может стать прекрасным местом для парка. Транспорт в оазис уже обеспечен.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR : Африка - Водопад
|
||||
STR_SCNR :Водопад
|
||||
STR_PARK :Водопад
|
||||
STR_DTLS :Была построена плотина, котор. дала дешёвую электроэнергию. Вам надо увеличить доходы парка, чтобы помочь выплатить заем за плотину.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR : Антарктика - Экоспасение
|
||||
STR_SCNR :Ледовый Мир
|
||||
STR_PARK :Ледовый Мир
|
||||
STR_DTLS :Агентство по охране природы обратилось к вам, чтобы попросить помощи в строительстве парка развлечений. Земля недорога, но процент по кредитам высок. Можете продавать старые постройки.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR : Евразия - Великая Cтена
|
||||
STR_SCNR :Великая стена
|
||||
STR_PARK :Великая стена
|
||||
STR_DTLS :Власти решили развивать туризм вокруг ВКС, построив тематический парк. Деньги - не проблема!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR : Евразия - Восточные берега
|
||||
STR_SCNR :Окинава
|
||||
STR_PARK :Окинава
|
||||
STR_DTLS :Парку не хватает земли. Единственный шанс - строить в море, и вы берете заем. Высоту сооружений ограничивает фундамент и риск землетрясений.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR : Евразия - Магараджа
|
||||
STR_SCNR :Парк Магарадж
|
||||
STR_PARK :Парк Магарадж
|
||||
STR_DTLS :Вас выбрали развлекать людей вокруг Магараджи. Постройте парк в духе дворца Магараджей.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR : Австралазия - Скала Айа
|
||||
STR_SCNR :Приключение Айа
|
||||
STR_PARK :Приключение Айа
|
||||
STR_DTLS :Вы помогаете аборигенам построить парк, как часть культурной программы. Вам нужно привлечь большое число гостей и передать им уникальное наследие местной культуры.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR : Австралазия - Побережье
|
||||
STR_SCNR :Барбекю на Берегу
|
||||
STR_PARK :Барбекю на Берегу
|
||||
STR_DTLS :Местный морской парк потерпел банкротство. У вас уже есть небольшой парк и вы можете купить еще один у строительной компании. Создайте один общий парк.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR : Европа - Фестиваль Культуры
|
||||
STR_SCNR :Европейский Фестиваль
|
||||
STR_PARK :Европейский Фестиваль
|
||||
STR_DTLS :Вам передали в управление Европейский Культурный Центр. Вы должны увеличить число гостей и вернуть субсидию Евросоюза до начала парламентских выборов.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR : Европа - Обновление
|
||||
STR_SCNR :Возрождение
|
||||
STR_PARK :Возрождение
|
||||
STR_DTLS :Старый парк пришел в запустение. Вы получили грант Евросоюза и должны вернуть эту землю к былой славе! Необходимо обновить парк и выплатить грант.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR : С. Америка - Гавайский экстрим
|
||||
STR_SCNR :Ваки Ваикики
|
||||
STR_PARK :Ваки Ваикики
|
||||
STR_DTLS :Населению Гаваев надоело заниматься сёрфингом и они желают что-нибудь более экстремальное. Вам надо построить парк, чтобы жители островов снова почувствовали вкус жизни!
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR : Сев. Америка - Гранд Каньон
|
||||
STR_SCNR :Гранд Каньон
|
||||
STR_PARK :Гранд Каньон
|
||||
STR_DTLS :Вы должны построить парк на небольшом участке земли - у вас есть возможность покупать близлежащие территории у местных индейцев. Необходимо поддерживать население местного городка.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR : Сев. Америка - Горки в Небесах
|
||||
STR_SCNR :Горки в Небесах
|
||||
STR_PARK :Горки в Небесах
|
||||
STR_DTLS :Вы - успешный предприниматель и желаете сделать из городского парка Горки на Небесах. Деньги для вас - не проблема!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR : Южн. Америка - Город инков
|
||||
STR_SCNR :Город Инков
|
||||
STR_PARK :Город Инков
|
||||
STR_DTLS :Чтобы развивать местный туризм, вы должны создать парк в духе местных достопримечательностей.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR : Юж. Америка - Лесное Плато
|
||||
STR_SCNR :Тропический Лес
|
||||
STR_PARK :Тропический Лес
|
||||
STR_DTLS :Место ограничено ценнейшими тропическими лесами - вы должны строить на существующей территории, чтобы не дать вырубать леса.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR : Юж. Америка - Карнавал в Рио
|
||||
STR_SCNR :Сахарный Берег
|
||||
STR_PARK :Сахарный Берег
|
||||
STR_DTLS :У вас небольшой парк близ Рио, но банк требует вернуть кредит. Вам срочно нужно увеличить прибыли, чтобы вернуть долг.
|
||||
|
||||
|
@ -2934,71 +2901,71 @@ STR_DTLS :У вас небольшой парк близ Рио, но бан
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR : Темные Века-Замок
|
||||
STR_SCNR :Замок на Скале
|
||||
STR_PARK :Замок на Скале
|
||||
STR_DTLS :Члены местного исторического клуба серьезно увлечены своим хобби. Они уговаривают вас построить Парк развлечений на средневековую тематику на территории Старинного Замка.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR : Темные Века-Робин Гуд
|
||||
STR_SCNR :Шервудский Лес
|
||||
STR_PARK :Шервудский Лес
|
||||
STR_DTLS :Чтобы отобрать деньги у богатых и отдать их беднякам, вы и ваши друзья-разбойники решили построить парк развлечений в Шервудском Лесу.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR : Будущее - Первый Контакт
|
||||
STR_SCNR :Фантастическая Феерия
|
||||
STR_PARK :Фантастическая Феерия
|
||||
STR_DTLS :На отдаленной планете была открыта жизнь. Постройте инопланетный тематический парк, чтобы заработать на сенсации.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR : Будущее-Мир Будущего
|
||||
STR_SCNR :Геминеи
|
||||
STR_PARK :Геминеи
|
||||
STR_DTLS :Покажите свое видение будущего - постройте тематический парк футуристической направленности с потрясающими аттракционами.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR : Мифология - Анимационная киностудия
|
||||
STR_SCNR :Студия Абсурда
|
||||
STR_PARK :Студия Абсурда
|
||||
STR_DTLS :Вам поставили задачу улучшить существующий тематический парк, построенный на месте старой киностудии. Сделайте акцент на мифических существах, которых оживили пионеры анимации.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR : Мифология - Колыбель Цивилизации
|
||||
STR_SCNR :Мифическое Безумство
|
||||
STR_PARK :Мифическое Безумство
|
||||
STR_DTLS :Вы владеете островом, имеющим особое археологическое значение. И решили построить парк развлечений, основанный на богатом мифологическом наследии острова.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR : Древние времена - Астероид
|
||||
STR_SCNR :Кратер
|
||||
STR_PARK :Кратер
|
||||
STR_DTLS :Вы владеете старым метеоритным кратером. И решаете превратить дешевую бесполезную землю в процветающее предприятие, построив тематический парк.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR : Прехисторик - Юрское Сафари
|
||||
STR_SCNR :Брегозавр
|
||||
STR_PARK :Брегозавр
|
||||
STR_DTLS :Вам поставили задачу построить парк развлечений Юрского Периода. Для оптимизации доступа посетителей к экзотическим растениям и животным вам придется соорудить аттракционы, катающие людей по территории.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR : Каменный век
|
||||
STR_SCNR :Деревня
|
||||
STR_PARK :Деревня
|
||||
STR_DTLS :Чтобы помешать дорожным строителям и сохранить таинственные каменные круги, вам придётся построить тематический парк каменного века и получить с него прибыль. Однако, местность вам досталась не особо гостеприимная.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR : Двадцатые годы - Тюремный остров
|
||||
STR_SCNR :Алкатрас
|
||||
STR_PARK :Алкатрас
|
||||
STR_DTLS :Безымянный тюремный остров, чье население раньше составляли контрабандисты и рэкетиры, сейчас выставлен на продажу. Вы решили превратить его в туристическую достопримечательность.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR : Двадцатые Годы - Кубок Шнайдера
|
||||
STR_SCNR :Кубок Шнайдера
|
||||
STR_PARK :Кубок Шнайдера
|
||||
STR_DTLS :Через несколько лет наступает 75я годовщина завоевания вашим дедушкой Кубка Шнайдера. Вы собираетесь отметить его достижение, построив тематический парк, посвящённый гонкам на гидросамолетах.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR : Двадцатые годы - Небоскребы
|
||||
STR_SCNR :Метрополис
|
||||
STR_PARK :Метрополис
|
||||
STR_DTLS :Вы владеете пустырём в одном из районов города. Чтобы выжать из своей земли максимум, постройте парк развлечений в виде небоскрёба в духе двадцатых годов.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR : Рок-н-Ролл - Сила Цветов
|
||||
STR_SCNR :Цветник
|
||||
STR_PARK :Цветник
|
||||
STR_DTLS :На вашей земле проводится ежегодный музыкальный фестиваль. Постройте людям парк развлечений в духе музыки и свободы.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR : Рок-н-Ролл - Рок-н-Ролл
|
||||
STR_SCNR :Рок-н-Ролл Жив
|
||||
STR_PARK :Рок-н-Ролл Жив
|
||||
STR_DTLS :Этот чудесный парк видел и лучшие дни. Помогите его владельцу улучшить дела и превратить парк в процветающее предприятие.
|
||||
|
|
|
@ -97,6 +97,8 @@ STR_0091 :Okänd åktur (59)
|
|||
STR_0092 :Induktionsberg- och dalbana
|
||||
STR_0093 :Hybridberg- och dalbana
|
||||
STR_0094 :Enkelspårig berg- och dalbana
|
||||
STR_0095 :Alpin berg- och dalbana
|
||||
STR_0096 :Klassisk berg- och dalbana i trä
|
||||
STR_0512 :En kompakt berg- och dalbana med en spiralvriden kedjelift och mjuka, vridna stup.
|
||||
STR_0513 :En ringlande berg- och dalbana där passagerarna åker stående
|
||||
STR_0514 :Tåg hängande under banan som svingar ut åt sidan i kurvorna
|
||||
|
@ -161,7 +163,7 @@ STR_0578 :Vagnar åker runt en bana omgiven av ringar utför branta nedförsb
|
|||
STR_0579 :En stillsam runda minigolf
|
||||
STR_0580 :En gigantisk berg- och dalbana i stål som kan ge mjuka fall och höjder på över 100 meter
|
||||
STR_0581 :En ring med säten dras upp till toppen av ett högt torn medan det sakta roterar, för att sedan falla fritt och stoppas mjukt vid botten med hjälp av magnetbromsar
|
||||
STR_0582 :Gäster styr svävarfarkoster
|
||||
STR_0582 :Gästerna åker i svävare som de styr fritt
|
||||
STR_0583 :Byggnad med förvrängda rum och vinklade korridorer för att förvilla människorna som går igenom den
|
||||
STR_0584 :Speciella cyklar som passagerarna själva trampar fram längs en stålskensbana
|
||||
STR_0585 :Passagerarna sitter i par med ansiktena antingen bakåt eller framåt då de åker genom loopar och skruvar med snabba omkastningar
|
||||
|
@ -177,13 +179,15 @@ STR_0599 :En kompakt berg- och dalbana med individuella vagnar och mjukt vrid
|
|||
STR_0600 :Motordrivna gruvtåg rusar längs en mjuk och kurvig spårlayout
|
||||
STR_0602 :Berg- och dalbanetågen accelereras ut från stationen med induktionsmotorer för att fara genom tvinnande inversioner
|
||||
STR_0603 :En berg- och dalbana i trästil med stålspår, som möjliggör branta stup och inversioner
|
||||
STR_0604 :Passagerare åker i singelled längs en stålbalk, som tar dem genom tighta inversioner och krökar.
|
||||
STR_0604 :Passagerare åker i singelled längs en stålbalk, som tar dem genom tighta inversioner och krökar
|
||||
STR_0605 :Passagerare åker släde nerför ett slingrande stålspår och bromsar för att reglera hastigheten
|
||||
STR_0606 :Den här berg- och dalbanan i trä är i äldre stil. Den är snabb, tuff, högljudd och ger en känsla av att förlora kontrollen. Dessutom spenderar man mycket tid flygandes över topparna
|
||||
STR_0767 :Besökare {INT32}
|
||||
STR_0768 :Vaktmästare {INT32}
|
||||
STR_0769 :Mekaniker {INT32}
|
||||
STR_0770 :Säkerhetsvakt {INT32}
|
||||
STR_0771 :Underhållare {INT32}
|
||||
STR_0777 :Namnlös park{POP16}{POP16}
|
||||
STR_0777 :Namnlös park
|
||||
STR_0778 :Skylt
|
||||
STR_0779 :1
|
||||
STR_0780 :2
|
||||
|
@ -274,8 +278,8 @@ STR_0883 :Spara spel
|
|||
STR_0884 :Ladda landskap
|
||||
STR_0885 :Spara landskap
|
||||
STR_0887 :Avsluta scenarioredigeraren
|
||||
STR_0888 :Avsluta åktursdesignern
|
||||
STR_0889 :Avsluta spårdesignredigeraren
|
||||
STR_0888 :Avsluta bandesignern
|
||||
STR_0889 :Avsluta bandesignhanterare
|
||||
STR_0891 :Skärmdump
|
||||
STR_0892 :Skärmdumpen sparades som ’{STRINGID}’
|
||||
STR_0893 :Skärmdumpen misslyckades!
|
||||
|
@ -1734,12 +1738,12 @@ STR_2382 :Land
|
|||
STR_2383 :Vatten
|
||||
STR_2384 :{WINDOW_COLOUR_2}Ditt uppdrag:
|
||||
STR_2385 :{BLACK}Inget
|
||||
STR_2386 :{BLACK}Att ha minst {COMMA16} besökare i parken tills {MONTHYEAR}, med ett parkomdöme över 600
|
||||
STR_2386 :{BLACK}Att ha minst {COMMA32} besökare i parken tills {MONTHYEAR}, med ett parkomdöme över 600
|
||||
STR_2387 :{BLACK}Att uppnå ett parkvärde över {POP16}{POP16}{CURRENCY} tills {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Ha kul!
|
||||
STR_2389 :{BLACK}Bygg den bästa {STRINGID} du kan!
|
||||
STR_2390 :{BLACK}Att ha tio olika sorters berg- och dalbanor i din park, alla med en glädjenivå över 6.00
|
||||
STR_2391 :{BLACK}Att ha minst {COMMA16} besökare i din park. Du får aldrig låta parkomdömet gå under 700!
|
||||
STR_2391 :{BLACK}Att ha minst {COMMA32} besökare i din park. Du får aldrig låta parkomdömet gå under 700!
|
||||
STR_2392 :{BLACK}Att få en månadsinkomst från åktursbiljetter på minst {POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}Att ha tio olika sorters berg- och dalbanor i din park, alla ska vara längre än {LENGTH}, och med en glädjenivå över 7.00
|
||||
STR_2394 :{BLACK}Att bygga klart alla fem delvis byggda berg- och dalbanor i parken, designade så att de alla får en glädjenivå över {POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2095,39 +2099,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Kan inte ladda fil…
|
||||
STR_3011 :Filen innehåller ogiltiga data
|
||||
STR_3012 :Radiobilstema
|
||||
STR_3013 :Tivolitema
|
||||
STR_3014 :Romerskt tema
|
||||
STR_3015 :Pagod-tema
|
||||
STR_3016 :Marstema
|
||||
STR_3017 :Djungeltema
|
||||
STR_3018 :Egyptiskt tema
|
||||
STR_3019 :Underlandstema
|
||||
STR_3020 :
|
||||
STR_3021 :Rymdtema
|
||||
STR_3022 :Skräcktema
|
||||
STR_3023 :Technotema
|
||||
STR_3024 :Stillsamt tema
|
||||
STR_3025 :Sommartider
|
||||
STR_3026 :Vattentema
|
||||
STR_3027 :Vilda västern-tema
|
||||
STR_3028 :Dinosaurietema
|
||||
STR_3029 :Rocktema
|
||||
STR_3030 :Glade Chapplies piano
|
||||
STR_3031 :Fantasitema
|
||||
STR_3032 :Rocktema 2
|
||||
STR_3033 :Istema
|
||||
STR_3034 :Snötema
|
||||
STR_3035 :Egen musik 1
|
||||
STR_3036 :Egen musik 2
|
||||
STR_3037 :Medeltidstema
|
||||
STR_3038 :Stadstema
|
||||
STR_3039 :Orgeltema
|
||||
STR_3040 :Mekaniktema
|
||||
STR_3041 :Modernt tema
|
||||
STR_3042 :Pirattema
|
||||
STR_3043 :Rocktema 3
|
||||
STR_3044 :Godislandstema
|
||||
STR_3045 :Välj musikstil som ska spelas{NEWLINE}Teman på sånger och dekorationer kan blandas utan problem
|
||||
STR_3047 :Lokala myndigheter har förbjudit rivning och modifikation av denna åktur
|
||||
STR_3048 :Kampanjer är förbjudna av lokala myndigheter
|
||||
|
@ -2355,7 +2326,7 @@ STR_3305 :{WINDOW_COLOUR_2}Månadsinkomst:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Månadsvinst:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimilängd:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Glädjenivå:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Åkturer och attraktioner som måste bevaras:
|
||||
|
@ -2378,8 +2349,8 @@ STR_3331 :Vägen från parkentrén till kartkanten är antingen inte komplett
|
|||
STR_3332 :Parkentrén är åt fel håll eller har ingen väg som leder till kartkanten
|
||||
STR_3333 :Exportera egendefinierade objekt med sparade spel
|
||||
STR_3334 :Välj om egendefinierade objekt (extra objekt som inte följer med basspelet) ska sparas i sparade spel och scenarion, vilket låter spelare importera dessa data
|
||||
STR_3335 :Åktursdesigner – Välj åkturstyp och fordon
|
||||
STR_3336 :Bandesign-hanterare – Välj åkturstyp
|
||||
STR_3335 :Bandesigner – Välj åkturstyp och fordon
|
||||
STR_3336 :Bandesignhanterare – Välj åkturstyp
|
||||
STR_3338 :{BLACK}Egendesignad layout
|
||||
STR_3339 :{BLACK}{COMMA16} design tillgänglig, eller egendesignad layout
|
||||
STR_3340 :{BLACK}{COMMA16} designer tillgängliga, eller egendesignad layout
|
||||
|
@ -2501,9 +2472,9 @@ STR_5196 :Landrättigheter
|
|||
STR_5197 :Dekorationer
|
||||
STR_5198 :Gångväg
|
||||
STR_5199 :Åkturkonstruktion
|
||||
STR_5200 :Spårdesignplacering
|
||||
STR_5200 :Bandesignplacering
|
||||
STR_5201 :Ny åktur
|
||||
STR_5202 :Spårdesignval
|
||||
STR_5202 :Bandesignval
|
||||
STR_5203 :Åkturer
|
||||
STR_5204 :Åkturslista
|
||||
STR_5205 :Besökare
|
||||
|
@ -2516,8 +2487,8 @@ STR_5211 :Forskningslista
|
|||
STR_5212 :Dekorationsinställningar
|
||||
STR_5213 :Målinställningar
|
||||
STR_5214 :Kartgenerator
|
||||
STR_5215 :Spårdesignfönstret
|
||||
STR_5216 :Spårdesignlistan
|
||||
STR_5215 :Bandesignfönstret
|
||||
STR_5216 :Bandesignlistan
|
||||
STR_5217 :Fusk
|
||||
STR_5218 :Teman
|
||||
STR_5219 :Inställningar
|
||||
|
@ -2918,7 +2889,7 @@ STR_5755 :Fel version av OpenRCT2 (servern använder {STRING})
|
|||
STR_5756 :Fel lösenord
|
||||
STR_5757 :Servern är full
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} har anslutit till spelet
|
||||
STR_5759 :Laddar ner banan… ({INT32} av {INT32}) KiB
|
||||
STR_5759 :Laddar ner banan…
|
||||
STR_5760 :Hong Kong-dollar (HK$)
|
||||
STR_5761 :New Taiwan-dollar (NT$)
|
||||
STR_5762 :Kinesiska Yuan (CN¥)
|
||||
|
@ -3482,7 +3453,7 @@ STR_6374 :F
|
|||
STR_6375 :Okänd åktur
|
||||
STR_6376 :{WINDOW_COLOUR_2}Fordon:{NEWLINE}{BLACK}{STRINGID} för {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Typ: {BLACK}{STRINGID} för {STRINGID}
|
||||
STR_6378 :Mottar objektlista: {INT32} / {INT32}
|
||||
STR_6378 :Mottar objektlista:
|
||||
STR_6379 :Mottog ogiltiga data
|
||||
STR_6380 :Uppdatering tillgänglig!
|
||||
STR_6381 :Gå med i OpenRCT2 Discord!
|
||||
|
@ -3597,6 +3568,109 @@ STR_6490 :Varning: Halvkompatibel parkversion
|
|||
STR_6491 :Denna park sparades i en nyare version av OpenRCT2. Parken är v{INT32} och kräver åtminstone v{INT32}.
|
||||
STR_6492 :Denna park sparades i en äldre version av OpenRCT2, och kan inte öppnas med denna version av OpenRCT2. Parken är v{INT32}.
|
||||
STR_6493 :Denna park sparades i en nyare version av OpenRCT2, viss data kan gå förlorad. Parken är v{INT32} och kräver åtminstone v{INT32}.
|
||||
STR_6494 :Gruppera efter färdtyp
|
||||
STR_6495 :Gruppera turer efter färdtyp istället för att visa varje fordon separat.
|
||||
STR_6496 :{WINDOW_COLOUR_2}{STRINGID}
|
||||
STR_6497 :Klicka på en ruta för att visa dess rutelement.{NEWLINE}Ctrl + klicka på ett rutelement för att välja det direkt.
|
||||
STR_6498 :Aktivera för att behålla kvadratisk kartform.
|
||||
STR_6499 :Fordonstyp stöds inte av spårdesignformatet
|
||||
STR_6500 :Spårelement stöds inte av spårdesignformatet
|
||||
STR_6501 :Slumpvis färg
|
||||
STR_6502 :Ange ett värde mellan {COMMA16} och {COMMA16}
|
||||
STR_6503 :Minst ett stationsobjekt måste väljas
|
||||
STR_6504 :Minst en terrängyta måste väljas
|
||||
STR_6505 :Minst en terrängkant måste väljas
|
||||
STR_6506 :Stor halvkorkskruv (vänster)
|
||||
STR_6507 :Stor halvkorkskruv (höger)
|
||||
STR_6508 :Medium halvloop (vänster)
|
||||
STR_6509 :Medium halvloop (höger)
|
||||
STR_6510 :Noll-G roll (vänster)
|
||||
STR_6511 :Noll-G roll (höger)
|
||||
STR_6512 :Stor noll-G roll (vänster)
|
||||
STR_6513 :Stor noll-G roll (höger)
|
||||
STR_6514 :Ogiltig höjd!
|
||||
STR_6515 :{BLACK}RollerCoaster Tycoon 1 är inte länkad. Reservbilder används.
|
||||
STR_6516 :Ett eller flera objekt som läggs till kräver RollerCoaster Tycoon 1 länkad för korrekt visning. Reservbilder används.
|
||||
STR_6517 :Ett eller flera objekt i den här parken kräver RollerCoaster Tycoon 1 länkad för korrekt visning. Reservbilder används.
|
||||
STR_6518 :{BLACK}Håll muspekaren över ett scenario för att se dess beskrivning och mål. Klicka för att börja spela.
|
||||
STR_6519 :Extra
|
||||
STR_6520 :Resurspaket
|
||||
STR_6521 :Låg prioritet
|
||||
STR_6522 :Hög prioritet
|
||||
STR_6523 :Minska prioriteten för det valda resurspaketet.
|
||||
STR_6524 :Öka prioriteten för det valda resurspaketet.
|
||||
STR_6525 :Ladda om alla resurspaket i spelet med resurspaket aktiverade.
|
||||
STR_6526 :(grundläggande grafik, musik och ljudeffekter)
|
||||
STR_6527 :Tävlingar
|
||||
STR_6528 :Ogiltiga spårparametrar!
|
||||
STR_6529 :Ogiltig färgschemaparameter!
|
||||
STR_6530 :User Created Expansion Set
|
||||
STR_6531 :Tidsmaskinen
|
||||
STR_6532 :Katys drömvärld
|
||||
STR_6533 :{WINDOW_COLOUR_2}Spänningsfaktor: {BLACK}-{COMMA16}%
|
||||
STR_6534 :{WINDOW_COLOUR_2}Intensitetsfaktor: {BLACK}-{COMMA16} %
|
||||
STR_6535 :{WINDOW_COLOUR_2}Illamåendefaktor: {BLACK}-{COMMA16}%
|
||||
STR_6536 :Denna park sparades i en senare version av OpenRCT2. Parken sparades i v{INT32}, du använder för närvarande v{INT32}.
|
||||
STR_6537 :Tillåt normala gångvägar som köer
|
||||
STR_6538 :Visar normala gångvägar i kölistan i gångvägsfönstret
|
||||
STR_6539 :Bromsen stängd
|
||||
STR_6540 :{WINDOW_COLOUR_2}Särskilt tack till följande företag för att de tillåter oss att använda deras likhet:
|
||||
STR_6541 :{WINDOW_COLOUR_2}Rocky Mountain Construction Group, Josef Wiegand GmbH & Co. KG
|
||||
STR_6542 :Medverkande
|
||||
STR_6543 :Medverkande …
|
||||
STR_6544 :Lånet kan inte vara negativt!
|
||||
STR_6545 :Använd RCT1-ränteberäkning
|
||||
STR_6546 :Använd RollerCoaster Tycoon 1:s ränteberäkningsalgoritm, som använder en fast procentsats på cirka 1,33 %.
|
||||
STR_6547 :Allt landskap
|
||||
STR_6548 :Visa räcken vid korsning
|
||||
STR_6549 :Kompatibilitetsobjekt kan inte väljas!
|
||||
STR_6550 :Denna post ingår för bakåtkompatibilitet med gamla eller skadade objekt. Den kan inte väljas, bara avmarkeras.
|
||||
STR_6551 :Armégrönt
|
||||
STR_6552 :Honungsmelon
|
||||
STR_6553 :Gulbrun
|
||||
STR_6554 :Rödbrun
|
||||
STR_6555 :Korallrosa
|
||||
STR_6556 :Skogsgrön
|
||||
STR_6557 :Chartreusegrön
|
||||
STR_6558 :Jaktgrön
|
||||
STR_6559 :Celadongrön
|
||||
STR_6560 :Limegrön
|
||||
STR_6561 :Sepia
|
||||
STR_6562 :Persikorosa
|
||||
STR_6563 :Ljus lavendel
|
||||
STR_6564 :Blågrön
|
||||
STR_6565 :Havsskumsgrön
|
||||
STR_6566 :Violett
|
||||
STR_6567 :Lavendel
|
||||
STR_6568 :Pastellorange
|
||||
STR_6569 :Djupt vatten
|
||||
STR_6570 :Pastellrosa
|
||||
STR_6571 :Umbra
|
||||
STR_6572 :Beige
|
||||
STR_6573 :Osynlig
|
||||
STR_6574 :Tomhet
|
||||
STR_6575 :Tillåt speciella färgscheman
|
||||
STR_6576 :Lägger till speciella färger till färgpaletten
|
||||
STR_6577 :Blockbromshastighet
|
||||
STR_6578 :Ställ in hastighetsgräns för blockbromsar. I blockområdesläge kopplas intilliggande bromsar med en lägre hastighet till blockbromsen.
|
||||
STR_6579 :Blockbromsar ställs in på standardhastighet när de sparas som bandesign
|
||||
STR_6580 :Återställa
|
||||
STR_6581 :Är du säker på att du vill återställa alla kortkommandon på den här fliken?
|
||||
STR_6582 :Öppna fönstret för kortkommandon
|
||||
STR_6583 :{WINDOW_COLOUR_2}Bakvända tåg
|
||||
STR_6584 :Välj att köra tåg baklänges
|
||||
STR_6585 :Ändringar kan inte göras…
|
||||
STR_6586 :OpenRCT2
|
||||
STR_6587 :OpenRCT2:s omslagstema är ett verk av Allister Brimble,{NEWLINE}licensierat under CC BY-SA 4.0.
|
||||
STR_6588 :Tack till Herman Riddering för att vi fick spela in 35er Voigt.
|
||||
STR_6589 :Visa fönsterknappar till vänster
|
||||
STR_6590 :Visa fönsterknapparna (t.ex. för att stänga fönstret) till vänster om titelraden istället för till höger.
|
||||
STR_6591 :Den här personen reparerar just nu en åktur och kan därför inte avskedas.
|
||||
STR_6592 :Den här personen inspekterar just nu en åktur och kan därför inte avskedas.
|
||||
STR_6593 :Ta bort parkstängsel
|
||||
STR_6594 :Rutinspekteraren: Växla vägglutning
|
||||
STR_6595 :{WINDOW_COLOUR_2}Författare: {BLACK}{STRING}
|
||||
STR_6596 :{WINDOW_COLOUR_2}Författare: {BLACK}{STRING}
|
||||
|
||||
#############
|
||||
# Scenarion #
|
||||
|
@ -4189,87 +4263,87 @@ STR_DTLS :Bygg de Six Flags-attraktionerna som saknas eller skapa dina egna f
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Afrika – Afrikansk diamantgruva
|
||||
STR_SCNR :Afrikas gruvor
|
||||
STR_PARK :Afrikas gruvor
|
||||
STR_DTLS :Du har hittat en diamant efter att ha ärvt en övergiven diamantgruva. Du beslutar dig för att satsa pengarna på ett storslaget nöjesfält.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Afrika – Oas
|
||||
STR_SCNR :Hägring och fägring
|
||||
STR_PARK :Hägring och fägring
|
||||
STR_DTLS :Man har upptäckt en ökenoas som skulle passa utmärkt till ett nöjesfält. Transportmöjligheter till oasen har ordnats redan.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Afrika – Victoriafallen
|
||||
STR_SCNR :Över kanten
|
||||
STR_PARK :Över kanten
|
||||
STR_DTLS :En nybyggd damm ger tillräckligt med billig vattenkraft för att kunna driva ett nöjesfält. Du måste dock uppnå ett högt parkvärde för att kunna betala tillbaka lånet för dammen.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarktis – Miljöräddning
|
||||
STR_SCNR :Iskallt äventyr
|
||||
STR_PARK :Iskallt äventyr
|
||||
STR_DTLS :En miljöorganisation har bett dig att bygga om ett gammalt, miljöfarligt oljeraffinaderi till en toppmodern turistattraktion. Marken är billig, men låneräntan är hög. Du kan dock sälja de gamla byggnaderna.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asien – Turistsatsning vid Kinesiska muren
|
||||
STR_SCNR :Kinesiska muren
|
||||
STR_PARK :Kinesiska muren
|
||||
STR_DTLS :Myndigheterna har beslutat att stödja turismen kring Kinesiska muren genom att bygga ett nöjesfält i dess närhet. Pengar är inget hinder!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asien – Japansk kustremsa
|
||||
STR_SCNR :Okinawa-kusten
|
||||
STR_PARK :Okinawa-kusten
|
||||
STR_DTLS :Ett nöjesfält behöver mer plats. Din enda möjlighet är att ta ett lån och bygga ut mot havet. Höjdrestriktioner råder på grund av jordbävningsfaran.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asien – Maharadjans palats
|
||||
STR_SCNR :Maharadjaparken
|
||||
STR_PARK :Maharadjaparken
|
||||
STR_DTLS :Du har fått i uppdrag av maharadjan att underhålla lokalbefolkningen. Inhämta inspiration från maharadjans palats när du bygger nöjesfältet.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasien – Ayers Rock
|
||||
STR_SCNR :Ayers äventyr
|
||||
STR_PARK :Ayers äventyr
|
||||
STR_DTLS :Du hjälper urbefolkningen att bygga ett nöjesfält som en del av ett kulturprogram. Du måste locka tillräckligt med besökare för att kunna sprida urbefolkningens kultur.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasien – Fun at the Beach
|
||||
STR_SCNR :Strandhugg
|
||||
STR_PARK :Strandhugg
|
||||
STR_DTLS :En lokal affärsmans vattenpark har gått i konkurs. Du driver redan en liten välfungerande park, och har köpt upp konkursboet. Utveckla det hela till en stor gemensam park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europa – Europeisk kulturfestival
|
||||
STR_SCNR :Europeisk festival
|
||||
STR_PARK :Europeisk festival
|
||||
STR_DTLS :Du har blivit erbjuden att ta över en europeisk turistattraktion, men måste öka besöksfrekvensen för att kunna betala tillbaka ett EU-lån innan det europeiska parlamentet tar sommarlov.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europa – Renovering
|
||||
STR_SCNR :Ur askan
|
||||
STR_PARK :Ur askan
|
||||
STR_DTLS :Ett gammalt nöjesfält har förfallit. Du har beviljats ett EU-lån för att kunna återställa det nedgångna området till sin forna prakt. Du måste renovera nöjesfältet och betala tillbaka lånet.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :Nordamerika – Extrem Hawaii-ö
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :Folket på Hawaii har tröttnat på att surfa och vill göra något mer spännande. Du måste bygga ett nöjesfält för att hålla dem på gott humör och bibehålla områdets attraktionskraft.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :Nordamerika – Grand Canyon
|
||||
STR_SCNR :Trubbel i Canyon
|
||||
STR_PARK :Trubbel i Canyon
|
||||
STR_DTLS :Du måste bygga ett nöjesfält på ett begränsat område på båda sidor om detta naturfenomen. Du har möjlighet att köpa upp angränsande land från urbefolkningen. Målet med bygget är att bibehålla den lokala befolkningssiffran.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :Nordamerika – Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Du är en framgångsrik affärsman som under ett sabbatsår beslutar dig för att förvandla en stadspark till ett ”Rollercoaster Heaven”, oavsett kostnad!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :Sydamerika – Förlorad inka-stad
|
||||
STR_SCNR :Grundare av Förlorade Staden
|
||||
STR_PARK :Grundare av Förlorade Staden
|
||||
STR_DTLS :Du måste öka de lokala turistintäkterna genom att bygga ett nöjesfält som passar omgivningen och håller sig inom höjdrestriktionerna.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :Sydamerika – Regnskogsplatå
|
||||
STR_SCNR :Kul i regnskog
|
||||
STR_PARK :Kul i regnskog
|
||||
STR_DTLS :Utrymmet är begränsat i den utrotningshotade regnskogen. Du måste få plats med så mycket som möjligt i gläntan för att kunna erbjuda ett alternativ till den lokala timmerindustrin.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :Sydamerika – Rio-karneval
|
||||
STR_SCNR :Sockersöta stränder
|
||||
STR_PARK :Sockersöta stränder
|
||||
STR_DTLS :Du driver ett litet nöjesfält nära Rio, men banken kräver plötsligt betalning av ditt lån. Du måste öka dina intäkter snabbt för att kunna klara den uppkomna krisen.
|
||||
|
||||
|
@ -4277,72 +4351,72 @@ STR_DTLS :Du driver ett litet nöjesfält nära Rio, men banken kräver plöt
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Medeltiden – Slott
|
||||
STR_SCNR :Slott på klipporna
|
||||
STR_PARK :Slott på klipporna
|
||||
STR_DTLS :Medlemmarna i den lokala medeltidsföreningen tar sin hobby på allvar. De har bett dig konstruera en nöjespark med medeltidstema på det gamla slottets ägor.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Medeltiden – Robin Hood
|
||||
STR_SCNR :Sherwoodskogen
|
||||
STR_PARK :Sherwoodskogen
|
||||
STR_DTLS :För att kunna stjäla mer från de rika och ge till de fattiga har du och dina män bestämt er för att bygga ett nöjesfält i Sherwoodskogen.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Framtid – Första kontakt
|
||||
STR_SCNR :Utomjordisk extravagans
|
||||
STR_PARK :Utomjordisk extravagans
|
||||
STR_DTLS :Liv har påträffats på en främmande planet. Bygg en park med utomjordiskt tema för att tjäna pengar på folks nyväckta intresse.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Framtid – Framtidsvärld
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Realisera din innovativa och utopiska vision av framtiden. Bygg en futuristisk park med de allra senaste attraktionerna.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mytologisk tid – Animatronisk filminspelning
|
||||
STR_SCNR :Animatroniska äventyr
|
||||
STR_PARK :Animatroniska äventyr
|
||||
STR_DTLS :Du har fått i uppgift att driva och förbättra en existerande park som ligger på en gammal filminspelningsplats. Bygg en hyllning till filmhistoriens animationspionjärer som först gav liv åt förhistoriska vidunder på vita duken.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mytologisk tid – Civilisationens vagga
|
||||
STR_SCNR :Mytologiskt arv
|
||||
STR_PARK :Mytologiskt arv
|
||||
STR_DTLS :Du äger en ö av högt arkeologiskt värde. Du har bestämt dig för att finansiera dess bevarande genom att konstruera ett nöjesfält med ett tema baserat på områdets rika mytologiska arv.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Förhistorisk tid – Efter asteroiden
|
||||
STR_SCNR :Kraterkatastrof
|
||||
STR_PARK :Kraterkatastrof
|
||||
STR_DTLS :Du äger en dammig gammal meteorkrater. Som den entreprenör du är bestämmer du dig för att bygga ett nöjesfält med asteroidtema och omvandla den till synes värdelösa marken till en förmögenhet.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Förhistorisk tid – Dinosauriesafari
|
||||
STR_SCNR :Bergosaurier
|
||||
STR_PARK :Bergosaurier
|
||||
STR_DTLS :Du har fått i uppgift att bygga en park med Juratema. För att besökarna ska kunna uppleva den exotiska floran och faunan ordentligt krävs det att du bygger attraktioner som går ovanför och ned i dalen.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Förhistorisk tid – Stenålder
|
||||
STR_SCNR :Stenigt värre
|
||||
STR_PARK :Stenigt värre
|
||||
STR_DTLS :Stoppa motorvägsbygget och bevara de urtida stencirklarna genom att bygga ett nöjesfält med stenålderstema som går med vinst. Det kan dock bli en smula problematiskt att locka besökare eftersom terrängen är aningen oländig.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Det glada tjugotalet – Fängelseön
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :Den ökända fängelseön, vars befolkning en gång i tiden utgjordes av smugglare och gangsters, är till salu. Du har bestämt dig för att förvandla den till en förstklassig turistattraktion. Pengar är inget hinder.
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Det glada tjugotalet – Schneidertrofén
|
||||
STR_SCNR :Schneiders strand
|
||||
STR_PARK :Schneiders strand
|
||||
STR_DTLS :75-årsjubiléet av din faders vinst av Schneidertrofén inträffar om några år. Du vill hedra hans prestation genom att bygga en park baserad på den berömda sjöflygplanstävlingen.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Det glada tjugotalet – Skyskrapor
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Du äger en tom tomt i närheten av stadens lågt byggda kvarter. För att få ut så mycket vinst som möjligt av marken bygger du ett nöjesfält i form av en skyskrapa inspirerad av tjugotalets art déco-arkitektur.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock’n’roll – Flower power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :En stor årlig rockfestival äger rum på din mark. Bygg en hipp nöjespark i den fritänkande publikens smak.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock’n’roll – Rock’n’roll
|
||||
STR_SCNR :Rock’n’roll-revival
|
||||
STR_PARK :Rock’n’roll-revival
|
||||
STR_DTLS :Denna åldrande park har sett bättre dagar. Hjälp ägaren med att ge den ett retro-rock’n’roll-tema för att förvandla den till en framgångsrik park.
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ STR_0768 :Temizlikci {INT32}
|
|||
STR_0769 :Mühendis {INT32}
|
||||
STR_0770 :Güvenlik {INT32}
|
||||
STR_0771 :Animatör {INT32}
|
||||
STR_0777 :Isimsiz park{POP16}{POP16}
|
||||
STR_0777 :Isimsiz park
|
||||
STR_0778 :Bir metin giriniz
|
||||
STR_0779 :1.
|
||||
STR_0780 :2.
|
||||
|
@ -1731,12 +1731,12 @@ STR_2382 :Arazi/Zemin
|
|||
STR_2383 :Su
|
||||
STR_2384 :{WINDOW_COLOUR_2}Hedefiniz:
|
||||
STR_2385 :{BLACK}Yok
|
||||
STR_2386 :{BLACK}Parkınızda en az {COMMA16} müşteri {MONTHYEAR} sonuna kadar bulunması ve park değerlendirmesinin en az 600 olması gerekli
|
||||
STR_2386 :{BLACK}Parkınızda en az {COMMA32} müşteri {MONTHYEAR} sonuna kadar bulunması ve park değerlendirmesinin en az 600 olması gerekli
|
||||
STR_2387 :{BLACK}Park değeri en az {POP16}{POP16}{CURRENCY} {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR} kadar olmalı
|
||||
STR_2388 :{BLACK}Iyi eğlenceler!
|
||||
STR_2389 :{BLACK}Kendinize göre en iyi {STRINGID} inşa ediniz!
|
||||
STR_2390 :{BLACK}Parkınızda heyecan oranı en az 6.00 olan, 10 çesitli hız treni inşa edilmeli
|
||||
STR_2391 :{BLACK}Parkınızda en az {COMMA16} müşteri bulunması ve park değerlendirmesinin hiç bir zaman 700’den aşağı düşmemesi gerekli
|
||||
STR_2391 :{BLACK}Parkınızda en az {COMMA32} müşteri bulunması ve park değerlendirmesinin hiç bir zaman 700’den aşağı düşmemesi gerekli
|
||||
STR_2392 :{BLACK}Alet bileti satışlarından aylık en az {POP16}{POP16}{CURRENCY} geliriniz olmalı
|
||||
STR_2393 :{BLACK}Parkınızda heyecan oranı en az 7.00 ve uzunluğu en az {LENGTH} olan 10 çeşitli hız treni inşa edilmeli
|
||||
STR_2394 :{BLACK}Parkınızda bulunan 5 kısmen inşa edilmiş hız trenlerinin inşasını en az {POP16}{POP16}{COMMA2DP32} heyecan oranı ile tamamlayınız
|
||||
|
@ -2091,39 +2091,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Dosya yüklenemiyor…
|
||||
STR_3011 :Dosya geçersiz veri içeriyor
|
||||
STR_3012 :Çarpışan araba tarzı
|
||||
STR_3013 :Atlıkarınca tarzı
|
||||
STR_3014 :Roma tarzi
|
||||
STR_3015 :Oryantal tarzı
|
||||
STR_3016 :Marslı tarzı
|
||||
STR_3017 :Cengel tarzı
|
||||
STR_3018 :Mısırlı tarzı
|
||||
STR_3019 :Oyuncak dünyası tarzı
|
||||
STR_3020 :
|
||||
STR_3021 :Uzay tarzı
|
||||
STR_3022 :Korku tarzı
|
||||
STR_3023 :Tekno tarzı
|
||||
STR_3024 :Sakin tarz
|
||||
STR_3025 :Yaz tarzı
|
||||
STR_3026 :Su tarzı
|
||||
STR_3027 :Vahşi batı tarzı
|
||||
STR_3028 :Dinozor tarzı
|
||||
STR_3029 :Rock tarzı
|
||||
STR_3030 :Ragtime tarzı
|
||||
STR_3031 :Fantazi tarzı
|
||||
STR_3032 :Rock tarzı 2
|
||||
STR_3033 :Buz tarzı
|
||||
STR_3034 :Kar tarzı
|
||||
STR_3035 :Özel müzik 1
|
||||
STR_3036 :Özel müzik 2
|
||||
STR_3037 :Ortaçağ tarzı
|
||||
STR_3038 :Şehir tarzı
|
||||
STR_3039 :Kilise tarzı
|
||||
STR_3040 :Mekanik tarz
|
||||
STR_3041 :Modern tarz
|
||||
STR_3042 :Korsan tarzı
|
||||
STR_3043 :Rock tarzı 3
|
||||
STR_3044 :Şeker dünyası tarzı
|
||||
STR_3045 :Bu aletde çalınacak müzik tarzını seçiniz
|
||||
STR_3047 :Yerel makam tarafından bu aletin değiştirilmesi yasaklandı
|
||||
STR_3048 :Yerel makam tarafından pazarlama kampanyaları yasaklandı
|
||||
|
@ -2350,7 +2317,7 @@ STR_3305 :{WINDOW_COLOUR_2}Aylık gelir:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Aylık kâr:
|
||||
STR_3307 :{WINDOW_COLOUR_2}En az uzunluk:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Heyecan oranı:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Koruma altına almak istediğiniz aletleri seçiniz
|
||||
|
@ -2910,7 +2877,7 @@ STR_5755 :Yanlış yazılım sürümü (Serverda bu kullanılmakda: {STRING})
|
|||
STR_5756 :Şifre yanlış
|
||||
STR_5757 :Server dolu
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} servere katıldı
|
||||
STR_5759 :Harita indiriliyor … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Harita indiriliyor …
|
||||
STR_5760 :Hong Kong Doları (HK$)
|
||||
STR_5761 :Yeni Taiwan Doları (NT$)
|
||||
STR_5762 :Çin Yuanı (CN¥)
|
||||
|
@ -3983,87 +3950,87 @@ STR_DTLS :Gerçekde ABD’nin Texas eyaletinde bulunan bir lunapark
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :Kullanılmayan bir elmas madeni satın aldınız. Bu madende değerli bir elmas buldunuz ve onun satışı ile popüler bir lunapark inşa etmeye karar verdiniz
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :Afrikada bir vaha buldunuz ve bu vahanın etrafına güzel bir lunapark inşa etmeye karar verdiniz
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :Ucuza ve bol miktarda park için ceyeran üretmek amacıyla bir baraj inşa ettirdiniz. Baraj için çektiğiniz krediyi geri ödediniz bile. Şimdi park değerini yükseltmeye çalışınız
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :Çevre koruma makamı size eski petrol rafinerisini görüntü kirliliği olduğundan dolayı yıkıp yerine güzel bir lunapark inşa etmenizi istedi. Arazi satın alma ucuz fakat kredi faizi çok yüksek
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :Yetkililer, bitişik arazide bir lunapark inşa ederek Çin Seddi çevresindeki turizmi geliştirmeye karar verdiler. Paranız sınırsız
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :Burada kurulu olan lunaparkın yeri bitmek üzere. Bundan dolayı suyun üstüne inşa etmeniz gerekli. Bu yüzden kredi çekmeniz gerklidi. Deprem riskinden dolayı yüksek inşa yasağı koyulmuştur
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :Maharaja ailesi sizden yerel halkın eğlenmesi için Maharaja Sarayının etrafına lunapark inşa etmenizi diledi
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :Aborijin halkının kültürünü anma programı için bir lunapark kurmanız rica edildi.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :Yerel bir girişimcinin deniz yaşamı parkı kapandı. Siz henüz küçük bir lunaparka sahipsiniz ve kapalı olan diğer parkıda satın aldınız. Bu parkları birleştiriniz
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :Avrupa kültürel festivalinin yöneticisi olarak seçildiniz. Sizden festivala daha fazla müşteri getirmeniz bekleniyor
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :Eski bir lunapark harabeye dönüşdü. Avrupa Birliği size bu parkı eski ihtişamına getirmek dileği ile verdi. Parkı yenilemeniz ve krediyi geri ödemeniz gerekiyor.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :N. America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :Hawaii’de yaşıyan insanlar bütün gün sörf yapmakdan sıkılmış ve daha heyecanlı birşey yapmak istiyorlar. Sizden turistlerin ziyaret edeceği ve yerel halkı memnun edecek bir park inşa etmeniz bekleniyor
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :Bu doğal hazinenin her iki tarafında sınırlı bir alanda bir park inşa etmelisiniz. - Yerli Kızılderililerden toprak satın alma imkanınız var. Yerel kasabanın nüfusunu sürdürmek için hedefi tamamlamanız gerekiyor.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :Çok başarılı bir iş adamısınız ve uzun bir müddet tatile çıktınız. Bu tatilde şehirin göbeğinde bulunan boş araziye başarılı bir lunapark inşa etmeye karar verdiniz. Paranız sınırsız
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :Yerel turizmi güçlendirmek için çevresiyle uyumlu bir park kurmanız gereklidir. Fakat inşa için yükseklik sınırı koyulmuşdur
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Bu yağmur ormanında boş alan kısıtlı - yerel kereste endüstrisine bir alternatif sunmak için bu kısıtlı alanda lunapark inşa ediniz
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :Rio yakınlarında küçük bir park işletiyorsun fakat banka kredinizi aradı. Bu beklenmedik borcu geri ödemek için kârınızı hızla artırmanız gerekiyor.
|
||||
|
||||
|
@ -4071,71 +4038,71 @@ STR_DTLS :Rio yakınlarında küçük bir park işletiyorsun fakat banka kred
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Dark Age - Castle
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Savaşın yeniden canlandırılması toplumunun yerel üyeleri, hobileri hakkında oldukça ciddi. Cliffside Kalesi’nin arazisinde bir Karanlık Çağ temalı park inşa etmenizi dilediler
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Dark Age - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :Zenginlerden para kırpıp ve muhtaçlara dağıtmak için, siz ve ‘Mutlu Adamlarınız’ Sherwood Ormanı’nda bir lunapark kurmaya karar verdiniz
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Future - First Encounters
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Uzak bir gezegende hayat keşfedildi. Bu gezegende bir uzaylı lunaparkı inşa ediniz
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Future - Future World
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Geleceğin yaratıcı, ütopik vizyonunu sergileyin - son teknoloji konumlarını içeren fütüristik bir park tasarımı ile parkınızı oluşturunuz
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythological - Animatronic Film Set
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :Eski bir film setinde kurulmuş olan mevcut bir lunaparkını işletme ve geliştirme görevi size verilmiştir
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythological - Cradle of Civilisation
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :Arkeolojik eserler bulunduran bir adaya sahipsiniz. Bu eserlerin korunmasını sağlamak için lunapark kurmaya karar verdiniz
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoric - After the Asteroid
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :Eski bir meteor kraterine sahipsiniz. Gerçek girişimci ruhu içinde, bir asteroid lunaparkı kurmaya ve görünüşte değersiz arazinizi büyük bir servete dönüştürmeye karar verdiniz
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoric - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :Jura devri tarzı lunapark inşa etme görevini üstlendiniz. Müşterilerin egzotik bitki ve hayvan sergilerine erişimini optimize etmek için, vadiye giden ve gelen aletler inşa etmeniz gerekecektir
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoric - Stone Age
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :Karayol kurulmasını engellemek için bu araziyi satın aldınız ve Taş Devri temalı bir lunapark inşa etmeye karar verdiniz
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Prison Island
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :ABD’nin meşhur hapishanesini satın aldınız ve burayı güzel bir lunaparka çevirmeye karar verdiniz. Paranız sınırsızdır
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :Dedeniz 75 yıl önce Schneider Kupasını kazanmış ve onun zaferini anmak için buraya bir lunapark inşa etmeye karar verdiniz
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Skyscrapers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :Şehirin içinde boş bir araziye sahipsiniz ve bu boş araziye şehir ve yirmili yıllar teamlı bir lunapark inşa etmeye karar verdiniz
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ’n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :Büyük bir müzik festivalının yanına bir lunapark inşa edinizki festival ziyaretcileri daha çok eğlensin
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ’n’ Roll - Rock ’n’ Roll
|
||||
STR_SCNR :Rock ’n’ Roll Revival
|
||||
STR_PARK :Rock ’n’ Roll Revival
|
||||
STR_DTLS :Bu lunapark zamanında çok başarılımış. Fakat şimdi git gide bu parkın başarısı ve parlaklığı geriliyor. Park sahibi sizden parkı geri canlandırmanızı ve eski parlaklığına getirmenizi diliyor
|
||||
|
|
|
@ -182,7 +182,7 @@ STR_0768 :Lao công {INT32}
|
|||
STR_0769 :Kỹ sư {INT32}
|
||||
STR_0770 :Bảo vệ {INT32}
|
||||
STR_0771 :Hoạt náo {INT32}
|
||||
STR_0777 :Unnamed park{POP16}{POP16}
|
||||
STR_0777 :Unnamed park
|
||||
STR_0778 :Sign
|
||||
STR_0779 :Ngày 1
|
||||
STR_0780 :Ngày 2
|
||||
|
@ -1085,7 +1085,7 @@ STR_1700 :Thuê thêm lao công
|
|||
STR_1701 :Thuê thêm kỹ sư
|
||||
STR_1702 :Thuê thêm bảo vệ
|
||||
STR_1703 :Thuê thêm hoạt náo
|
||||
STR_1704 :Không thể thuê thêm nhân viên...
|
||||
STR_1704 :Không thể thuê thêm nhân viên…
|
||||
STR_1705 :Sa thải nhân viên này
|
||||
STR_1706 :Di chuyển người này
|
||||
STR_1707 :Có quá nhiều nhân viên
|
||||
|
@ -1734,12 +1734,12 @@ STR_2382 :Land
|
|||
STR_2383 :Water
|
||||
STR_2384 :{WINDOW_COLOUR_2}Mục tiêu:
|
||||
STR_2385 :{BLACK}Không
|
||||
STR_2386 :{BLACK}Có ít nhất {COMMA16} khách vào cuối tháng {MONTHYEAR}, với đánh giá công viên từ 600 trở lên
|
||||
STR_2386 :{BLACK}Có ít nhất {COMMA32} khách vào cuối tháng {MONTHYEAR}, với đánh giá công viên từ 600 trở lên
|
||||
STR_2387 :{BLACK}Đạt giá trị công viên ít nhất {POP16}{POP16}{CURRENCY} vào cuối {PUSH16}{PUSH16}{PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
|
||||
STR_2388 :{BLACK}Have Fun!
|
||||
STR_2389 :{BLACK}Build the best {STRINGID} you can!
|
||||
STR_2390 :{BLACK}Có 10 loại tàu lượn khác nhau trong công viên, mỗi cái có chỉ số phấn khích ít nhất 6.00
|
||||
STR_2391 :{BLACK}Có ít nhất {COMMA16} khách. Không được để đánh giá công viên thấp hơn 700 ở bất kỳ thời điểm nào!
|
||||
STR_2391 :{BLACK}Có ít nhất {COMMA32} khách. Không được để đánh giá công viên thấp hơn 700 ở bất kỳ thời điểm nào!
|
||||
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
|
||||
|
@ -2095,39 +2095,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :Unable to load file…
|
||||
STR_3011 :File contains invalid data
|
||||
STR_3012 :Dodgems beat style
|
||||
STR_3013 :Fairground organ style
|
||||
STR_3014 :Roman fanfare style
|
||||
STR_3015 :Oriental style
|
||||
STR_3016 :Martian style
|
||||
STR_3017 :Jungle drums style
|
||||
STR_3018 :Egyptian style
|
||||
STR_3019 :Toyland style
|
||||
STR_3020 :
|
||||
STR_3021 :Space style
|
||||
STR_3022 :Horror style
|
||||
STR_3023 :Techno style
|
||||
STR_3024 :Gentle style
|
||||
STR_3025 :Summer style
|
||||
STR_3026 :Water style
|
||||
STR_3027 :Wild west style
|
||||
STR_3028 :Jurassic style
|
||||
STR_3029 :Rock style
|
||||
STR_3030 :Ragtime style
|
||||
STR_3031 :Fantasy style
|
||||
STR_3032 :Rock style 2
|
||||
STR_3033 :Ice style
|
||||
STR_3034 :Snow style
|
||||
STR_3035 :Custom music 1
|
||||
STR_3036 :Custom music 2
|
||||
STR_3037 :Medieval style
|
||||
STR_3038 :Urban style
|
||||
STR_3039 :Organ style
|
||||
STR_3040 :Mechanical style
|
||||
STR_3041 :Modern style
|
||||
STR_3042 :Pirates style
|
||||
STR_3043 :Rock style 3
|
||||
STR_3044 :Candy style
|
||||
STR_3045 :Select style of music to play
|
||||
STR_3047 :Local authority forbids demolition or modifications to this ride
|
||||
STR_3048 :Marketing campaigns forbidden by local authority
|
||||
|
@ -2354,7 +2321,7 @@ STR_3305 :{WINDOW_COLOUR_2}Monthly income:
|
|||
STR_3306 :{WINDOW_COLOUR_2}Monthly profit:
|
||||
STR_3307 :{WINDOW_COLOUR_2}Minimum length:
|
||||
STR_3308 :{WINDOW_COLOUR_2}Độ phấn khích:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}Rides/attractions under a preservation order:
|
||||
|
@ -2914,7 +2881,7 @@ STR_5755 :Incorrect Software Version (Server is using {STRING})
|
|||
STR_5756 :Bad Password
|
||||
STR_5757 :Server Full
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING} has joined the game
|
||||
STR_5759 :Downloading map … ({INT32} / {INT32}) KiB
|
||||
STR_5759 :Downloading map …
|
||||
STR_5760 :Hong Kong Dollars (HK$)
|
||||
STR_5761 :New Taiwan Dollar (NT$)
|
||||
STR_5762 :Chinese Yuan (CN¥)
|
||||
|
@ -3478,7 +3445,7 @@ STR_6374 :C
|
|||
STR_6375 :Unknown Ride
|
||||
STR_6376 :{WINDOW_COLOUR_2}Ride vehicle:{NEWLINE}{BLACK}{STRINGID} for {STRINGID}
|
||||
STR_6377 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID} for {STRINGID}
|
||||
STR_6378 :Receiving objects list: {INT32} / {INT32}
|
||||
STR_6378 :Receiving objects list:
|
||||
STR_6379 :Received invalid data
|
||||
STR_6380 :Update available!
|
||||
STR_6381 :Join OpenRCT2 Discord!
|
||||
|
@ -4125,87 +4092,87 @@ STR_DTLS :Build the missing Six Flags rides, or create your own designs to im
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :You inherited a disused diamond mine, and find a valuable diamond. You decide to invest that money to build a world-famous theme park.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :A desert Oasis has been discovered and would provide a beautiful location for a park. Transport to the oasis has been provided.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :A dam has been built offering abundant, cheap hydroelectric power with which to run a park. You need to reach a high park value to help repay the loan for the dam.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :The environment agency has turned to you to transform an old oil refinery ecological eyesore into a top tourist attraction. Land is cheap but loan interest is high. You can sell the old buildings for salvage.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :The authorities have decided to enhance tourism around the Great Wall by building a theme park on the adjacent land. Money is no object!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :An existing park has run out of space. Your only option is to build out into the sea, and so you have taken out a loan. Height restrictions on your building are enforced due to foundations and earthquake risk.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :You have been commissioned by the Maharaja to bring entertainment to the large local population. Build a park inspired by the Maharaja’s palace.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :You are helping Aboriginal people to build a park as part of a cultural awareness program. You need to get a large number of guests to educate them in the unique heritage of the Aboriginal people.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :A local entrepreneur’s sealife park has gone bust. You already operate a small park and buy the other park from the construction company. Develop a big combined park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :You have been brought in to take over a European Cultural Visitor Attraction and must increase the number of guests in order to pay back the EU subsidy by the end of the current European parliament term.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :An old park has fallen into disrepair. You gain a European Union grant to return this deprived area to its former glory! You need to renovate the park and repay the grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :North America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :The people of Hawaii are bored of surfing and are looking for something more intense. You need to build a park with this in mind to keep the area’s tourist attraction rating high.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :You have to build a park on limited land either side of this natural treasure - you do have the opportunity to buy neighbouring land from the Native American Indians. You need to complete the objective to sustain the local town’s population.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :You are a successful business tycoon on long sabbatical who desires to use this time transforming the city park into Rollercoaster Heaven. Money is no object!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings, and has height restrictions.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Space is limited in the precious rainforest - you must cram as much as possible into the existing clearing, in order to provide a viable alternative to the local timber industry.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :You run a small park near Rio but the bank has called in your loan. You need to quickly increase your earning capacity to repay this unexpected debt.
|
||||
|
||||
|
@ -4213,72 +4180,72 @@ STR_DTLS :You run a small park near Rio but the bank has called in your loan.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :Dark Age - Castle
|
||||
STR_SCNR :Cliffside Castle
|
||||
STR_PARK :Cliffside Castle
|
||||
STR_DTLS :Local members of the battle re-enactment society are rather serious about their hobby. They’ve entrusted you with the job of constructing a Dark Age theme park on the grounds of Cliffside Castle.
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :Dark Age - Robin Hood
|
||||
STR_SCNR :Sherwood Forest
|
||||
STR_PARK :Sherwood Forest
|
||||
STR_DTLS :To liberate wealth from the rich and distribute it to the needy, you and your Merry Men have decided to build a theme park in Sherwood Forest.
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :Future - First Encounters
|
||||
STR_SCNR :Extraterrestrial Extravaganza
|
||||
STR_PARK :Extraterrestrial Extravaganza
|
||||
STR_DTLS :Life has been discovered on a distant planet Build an alien theme park to cash in on the unprecedented wave of interest.
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :Future - Future World
|
||||
STR_SCNR :Gemini City
|
||||
STR_PARK :Gemini City
|
||||
STR_DTLS :Show off your inventive, utopian vision of the future - come up with a futuristic park design that incorporates state-of-the-art attractions.
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :Mythological - Animatronic Film Set
|
||||
STR_SCNR :Animatronic Antics
|
||||
STR_PARK :Animatronic Antics
|
||||
STR_DTLS :You have been given the task of running and improving an existing theme park, which has been built on an old film set. Build a tribute to the pioneering stop-motion animators who first brought mythical creatures to life on the silver screen.
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :Mythological - Cradle of Civilisation
|
||||
STR_SCNR :Mythological Madness
|
||||
STR_PARK :Mythological Madness
|
||||
STR_DTLS :You own an island of particular archaeological value. You’ve decided to fund its preservation by constructing a theme park based on the area’s rich Mythological heritage.
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :Prehistoric - After the Asteroid
|
||||
STR_SCNR :Crater Carnage
|
||||
STR_PARK :Crater Carnage
|
||||
STR_DTLS :You own a dusty old meteor crater. In the true entrepreneurial spirit, you’ve decided to construct an asteroid theme park and convert your seemingly worthless land into a sizeable fortune.
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :Prehistoric - Jurassic Safari
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :You’ve been given the task of constructing a Jurassic era theme park. To optimize your visitors’ access to the exotic plant and animal exhibits, you will need to build rides going over and into the valley.
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :Prehistoric - Stone Age
|
||||
STR_SCNR :Rocky Rambles
|
||||
STR_PARK :Rocky Rambles
|
||||
STR_DTLS :To thwart the highway developers and preserve the mysterious ancient stone circles, you will need to construct a Stone Age theme park and turn a profit. However, attracting visitors may pose a challenge, as the terrain is a tad inhospitable.
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :Roaring Twenties - Prison Island
|
||||
STR_SCNR :Alcatraz
|
||||
STR_PARK :Alcatraz
|
||||
STR_DTLS :The infamous Prison Island - whose population once swelled with bootleggers and racketeers - is now up for sale. You’ve decided to convert it into a top tourist attraction, and money is no object
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :Roaring Twenties - Schneider Cup
|
||||
STR_SCNR :Schneider Shores
|
||||
STR_PARK :Schneider Shores
|
||||
STR_DTLS :The 75th anniversary of your grandfather’s Schneider Cup victory is coming up in a few years. You’re going to honour his achievement by building a theme park based on the famous seaplane race.
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :Roaring Twenties - Skyscrapers
|
||||
STR_SCNR :Metropolis
|
||||
STR_PARK :Metropolis
|
||||
STR_DTLS :You own an empty lot near the low-rise part of town. To squeeze the most out of your urban property, build a skyscraper theme park inspired by the soaring art deco architecture of the twenties.
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :Rock ‘n’ Roll - Flower Power
|
||||
STR_SCNR :Woodstock
|
||||
STR_PARK :Woodstock
|
||||
STR_DTLS :A large annual music festival takes place on your land. Build a hip theme park to keep the free-spirited audience entertained.
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :Rock ‘n’ Roll - Rock ‘n’ Roll
|
||||
STR_SCNR :Rock ‘n’ Roll Revival
|
||||
STR_PARK :Rock ‘n’ Roll Revival
|
||||
STR_DTLS :This aging theme park has seen better days. Help the owner give it a retro rock ‘n’ roll makeover and turn the place into a successful venue.
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ STR_0768 :清潔工人{INT32}
|
|||
STR_0769 :維修人員{INT32}
|
||||
STR_0770 :安全警衛{INT32}
|
||||
STR_0771 :表演人員{INT32}
|
||||
STR_0777 :未命名樂園{POP16}{POP16}
|
||||
STR_0777 :未命名樂園
|
||||
STR_0778 :招牌
|
||||
STR_0779 :1日
|
||||
STR_0780 :2日
|
||||
|
@ -1741,12 +1741,12 @@ STR_2382 :土地
|
|||
STR_2383 :水塘
|
||||
STR_2384 :{WINDOW_COLOUR_2}你的目標:
|
||||
STR_2385 :{BLACK}無
|
||||
STR_2386 :{BLACK}在{POP16}{MONTHYEAR}尾之前, 樂園裡至少有{PUSH16}{PUSH16}{COMMA16}個遊客, 而且樂園評價並不低於600
|
||||
STR_2386 :{BLACK}在{POP16}{MONTHYEAR}尾之前, 樂園裡至少有{PUSH16}{PUSH16}{COMMA32}個遊客, 而且樂園評價並不低於600
|
||||
STR_2387 :{BLACK}在{POP16}{MONTHYEAR}尾之前, 樂園價值必需達到{CURRENCY}
|
||||
STR_2388 :{BLACK}盡情玩吧!
|
||||
STR_2389 :{BLACK}建造你的最佳{STRINGID}吧!
|
||||
STR_2390 :{BLACK}樂園必需建造十種不同種類的雲霄飛車, 而且每座的興奮度不低於6.00
|
||||
STR_2391 :{BLACK}樂園裡至少有{COMMA16}個遊客. 任何時間下, 你並不可以令樂園評價跌至700以下!
|
||||
STR_2391 :{BLACK}樂園裡至少有{COMMA32}個遊客. 任何時間下, 你並不可以令樂園評價跌至700以下!
|
||||
STR_2392 :{BLACK}遊樂設施的門票收入至少要達到每月{POP16}{POP16}{CURRENCY}
|
||||
STR_2393 :{BLACK}樂園必需建造十種不同種類的雲霄飛車, 每座的長度至少需要{LENGTH}, 而且興奮度都不低於7.00
|
||||
STR_2394 :{BLACK}建造好五座未完成的雲霄飛車, 將他們每座設計成興奮度至少達到{POP16}{POP16}{COMMA2DP32}
|
||||
|
@ -2101,39 +2101,6 @@ STR_3008 :{PEARLAQUA}ABC
|
|||
STR_3009 :{PALESILVER}ABC
|
||||
STR_3010 :無法載入檔案…
|
||||
STR_3011 :檔案中含有非法資料
|
||||
STR_3012 :碰碰車節奏風格
|
||||
STR_3013 :遊樂場風琴風格
|
||||
STR_3014 :羅馬號角風格
|
||||
STR_3015 :東方風格
|
||||
STR_3016 :火星風格
|
||||
STR_3017 :叢林敲擊風格
|
||||
STR_3018 :埃及風格
|
||||
STR_3019 :童真風格
|
||||
STR_3020 :
|
||||
STR_3021 :太空風格
|
||||
STR_3022 :恐怖風格
|
||||
STR_3023 :電子風格
|
||||
STR_3024 :溫和風格
|
||||
STR_3025 :夏日風格
|
||||
STR_3026 :水文風格
|
||||
STR_3027 :美國西部風格
|
||||
STR_3028 :侏儸紀風格
|
||||
STR_3029 :搖滾風格
|
||||
STR_3030 :雷格泰姆音樂風格
|
||||
STR_3031 :夢幻風格
|
||||
STR_3032 :搖滾風格2
|
||||
STR_3033 :冰封風格
|
||||
STR_3034 :雪地風格
|
||||
STR_3035 :自訂音樂1
|
||||
STR_3036 :自訂音樂2
|
||||
STR_3037 :中世紀風格
|
||||
STR_3038 :都市風格
|
||||
STR_3039 :風琴風格
|
||||
STR_3040 :機械風格
|
||||
STR_3041 :摩登風格
|
||||
STR_3042 :海盜風格
|
||||
STR_3043 :搖滾風格3
|
||||
STR_3044 :糖果風格
|
||||
STR_3045 :選擇要播放的音樂風格:
|
||||
STR_3047 :當地政府禁止拆除或修改此遊樂設施
|
||||
STR_3048 :當地政府禁止所有推廣計劃進行
|
||||
|
@ -2360,7 +2327,7 @@ STR_3305 :{WINDOW_COLOUR_2}每月收入:
|
|||
STR_3306 :{WINDOW_COLOUR_2}每月利潤:
|
||||
STR_3307 :{WINDOW_COLOUR_2}最少長度:
|
||||
STR_3308 :{WINDOW_COLOUR_2}興奮度:
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
|
||||
STR_3309 :{WINDOW_COLOUR_2}{COMMA32}
|
||||
STR_3310 :{WINDOW_COLOUR_2}{LENGTH}
|
||||
STR_3311 :{WINDOW_COLOUR_2}{COMMA2DP32}
|
||||
STR_3312 :{WINDOW_COLOUR_2}請選取要保留的遊樂設施/店鋪:
|
||||
|
@ -2922,7 +2889,7 @@ STR_5755 :不合適的遊戲版本 (伺服器版本為{STRING})
|
|||
STR_5756 :密碼錯誤
|
||||
STR_5757 :伺服器人數已滿
|
||||
STR_5758 :{OUTLINE}{GREEN}{STRING}已加入遊戲
|
||||
STR_5759 :下載劇情中… ({INT32} / {INT32}) KiB
|
||||
STR_5759 :下載劇情中…
|
||||
STR_5760 :港幣 (HK$)
|
||||
STR_5761 :新台幣 (NT$)
|
||||
STR_5762 :人民幣 (CN¥)
|
||||
|
@ -3485,7 +3452,7 @@ STR_6374 :阻礙檢查已關閉
|
|||
STR_6375 :未知遊樂設施
|
||||
STR_6376 :{WINDOW_COLOUR_2}遊樂設施車輛:{NEWLINE}{BLACK}{STRINGID}於{STRINGID}內
|
||||
STR_6377 :{WINDOW_COLOUR_2}種類: {BLACK}{STRINGID}於{STRINGID}內
|
||||
STR_6378 :正在接收物件列表: {INT32} / {INT32}
|
||||
STR_6378 :正在接收物件列表:
|
||||
STR_6379 :已接收不正確的資料
|
||||
STR_6380 :有可用的更新!
|
||||
STR_6381 :加入OpenRCT2的Discord!
|
||||
|
@ -4224,87 +4191,87 @@ STR_DTLS :建造缺少的六旗遊樂設施,或建造你自己設計的以改
|
|||
## Wacky Worlds Scenarios
|
||||
###############################################################################
|
||||
<Africa - African Diamond Mine>
|
||||
STR_SCNR :Africa - African Diamond Mine
|
||||
STR_SCNR :Mines of Africa
|
||||
STR_PARK :Mines of Africa
|
||||
STR_DTLS :You inherited a disused diamond mine, and find a valuable diamond. You decide to invest that money to build a world-famous theme park.
|
||||
|
||||
<Africa - Oasis>
|
||||
STR_SCNR :Africa - Oasis
|
||||
STR_SCNR :Mirage Madness
|
||||
STR_PARK :Mirage Madness
|
||||
STR_DTLS :A desert Oasis has been discovered and would provide a beautiful location for a park. Transport to the oasis has been provided.
|
||||
|
||||
<Africa - Victoria Falls>
|
||||
STR_SCNR :Africa - Victoria Falls
|
||||
STR_SCNR :Over The Edge
|
||||
STR_PARK :Over The Edge
|
||||
STR_DTLS :A dam has been built offering abundant, cheap hydroelectric power with which to run a park. You need to reach a high park value to help repay the loan for the dam.
|
||||
|
||||
<Antarctic - Ecological Salvage>
|
||||
STR_SCNR :Antarctic - Ecological Salvage
|
||||
STR_SCNR :Icy Adventures
|
||||
STR_PARK :Icy Adventures
|
||||
STR_DTLS :The environment agency has turned to you to transform an old oil refinery ecological eyesore into a top tourist attraction. Land is cheap but loan interest is high. You can sell the old buildings for salvage.
|
||||
|
||||
<Asia - Great Wall of China Tourism Enhancement>
|
||||
STR_SCNR :Asia - Great Wall of China Tourism Enhancement
|
||||
STR_SCNR :Great Wall of China
|
||||
STR_PARK :Great Wall of China
|
||||
STR_DTLS :The authorities have decided to enhance tourism around the Great Wall by building a theme park on the adjacent land. Money is no object!
|
||||
|
||||
<Asia - Japanese Coastal Reclaim>
|
||||
STR_SCNR :Asia - Japanese Coastal Reclaim
|
||||
STR_SCNR :Okinawa Coast
|
||||
STR_PARK :Okinawa Coast
|
||||
STR_DTLS :An existing park has run out of space. Your only option is to build out into the sea, and so you have taken out a loan. Height restrictions on your building are enforced due to foundations and earthquake risk.
|
||||
|
||||
<Asia - Maharaja Palace>
|
||||
STR_SCNR :Asia - Maharaja Palace
|
||||
STR_SCNR :Park Maharaja
|
||||
STR_PARK :Park Maharaja
|
||||
STR_DTLS :You have been commissioned by the Maharaja to bring entertainment to the large local population. Build a park inspired by the Maharaja’s palace.
|
||||
|
||||
<Australasia - Ayers Rock>
|
||||
STR_SCNR :Australasia - Ayers Rock
|
||||
STR_SCNR :Ayers Adventure
|
||||
STR_PARK :Ayers Adventure
|
||||
STR_DTLS :You are helping Aboriginal people to build a park as part of a cultural awareness program. You need to get a large number of guests to educate them in the unique heritage of the Aboriginal people.
|
||||
|
||||
<Australasia - Fun at the Beach>
|
||||
STR_SCNR :Australasia - Fun at the Beach
|
||||
STR_SCNR :Beach Barbecue Blast
|
||||
STR_PARK :Beach Barbecue Blast
|
||||
STR_DTLS :A local entrepreneur’s sealife park has gone bust. You already operate a small park and buy the other park from the construction company. Develop a big combined park.
|
||||
|
||||
<Europe - European Cultural Festival>
|
||||
STR_SCNR :Europe - European Cultural Festival
|
||||
STR_SCNR :European Extravaganza
|
||||
STR_PARK :European Extravaganza
|
||||
STR_DTLS :You have been brought in to take over a European Cultural Visitor Attraction and must increase the number of guests in order to pay back the EU subsidy by the end of the current European parliament term.
|
||||
|
||||
<Europe - Renovation>
|
||||
STR_SCNR :Europe - Renovation
|
||||
STR_SCNR :From The Ashes
|
||||
STR_PARK :From The Ashes
|
||||
STR_DTLS :An old park has fallen into disrepair. You gain a European Union grant to return this deprived area to its former glory! You need to renovate the park and repay the grant.
|
||||
|
||||
<N. America - Extreme Hawaiian Island>
|
||||
STR_SCNR :N. America - Extreme Hawaiian Island
|
||||
STR_SCNR :Wacky Waikiki
|
||||
STR_PARK :Wacky Waikiki
|
||||
STR_DTLS :The people of Hawaii are bored of surfing and are looking for something more intense. You need to build a park with this in mind to keep the area’s tourist attraction rating high.
|
||||
|
||||
<North America - Grand Canyon>
|
||||
STR_SCNR :North America - Grand Canyon
|
||||
STR_SCNR :Canyon Calamities
|
||||
STR_PARK :Canyon Calamities
|
||||
STR_DTLS :You have to build a park on limited land either side of this natural treasure - you do have the opportunity to buy neighbouring land from the Native American Indians. You need to complete the objective to sustain the local town’s population.
|
||||
|
||||
<North America - Rollercoaster Heaven>
|
||||
STR_SCNR :North America - Rollercoaster Heaven
|
||||
STR_SCNR :Rollercoaster Heaven
|
||||
STR_PARK :Rollercoaster Heaven
|
||||
STR_DTLS :You are a successful business tycoon on long sabbatical who desires to use this time transforming the city park into Rollercoaster Heaven. Money is no object!
|
||||
|
||||
<South America - Inca Lost City>
|
||||
STR_SCNR :South America - Inca Lost City
|
||||
STR_SCNR :Lost City Founder
|
||||
STR_PARK :Lost City Founder
|
||||
STR_DTLS :To further boost local tourism you must construct a park that is in tune with its surroundings, and has height restrictions.
|
||||
|
||||
<South America - Rain Forest Plateau>
|
||||
STR_SCNR :South America - Rain Forest Plateau
|
||||
STR_SCNR :Rainforest Romp
|
||||
STR_PARK :Rainforest Romp
|
||||
STR_DTLS :Space is limited in the precious rainforest - you must cram as much as possible into the existing clearing, in order to provide a viable alternative to the local timber industry.
|
||||
|
||||
<South America - Rio Carnival>
|
||||
STR_SCNR :South America - Rio Carnival
|
||||
STR_SCNR :Sugarloaf Shores
|
||||
STR_PARK :Sugarloaf Shores
|
||||
STR_DTLS :You run a small park near Rio but the bank has called in your loan. You need to quickly increase your earning capacity to repay this unexpected debt.
|
||||
|
||||
|
@ -4312,72 +4279,72 @@ STR_DTLS :You run a small park near Rio but the bank has called in your loan.
|
|||
## Time Twister Scenarios
|
||||
###############################################################################
|
||||
<Dark Age - Castle>
|
||||
STR_SCNR :黑暗時代-城堡
|
||||
STR_SCNR :克利弗塞德城堡
|
||||
STR_PARK :克利弗塞德城堡
|
||||
STR_DTLS :本地的戰役重現協會成員對他們的這項嗜好相當認真。他們授權您建造一座以克利弗塞德城堡為主題的黑暗時代主題樂園。
|
||||
|
||||
<Dark Age - Robin Hood>
|
||||
STR_SCNR :黑暗時代-羅賓漢
|
||||
STR_SCNR :舍伍德森林
|
||||
STR_PARK :舍伍德森林
|
||||
STR_DTLS :為了劫富濟貧,您與您的伙伴們決定要在舍伍德森林中建造一座主題樂園。
|
||||
|
||||
<Future - First Encounters>
|
||||
STR_SCNR :未來-第一次接觸
|
||||
STR_SCNR :外星文明博覽會
|
||||
STR_PARK :外星文明博覽會
|
||||
STR_DTLS :在遙遠的行星上發現了生命 建築一個外星主題樂園,在這個史無前例的風潮中大撈一票。
|
||||
|
||||
<Future - Future World>
|
||||
STR_SCNR :未來-未來世界
|
||||
STR_SCNR :雙子星城市
|
||||
STR_PARK :雙子星城市
|
||||
STR_DTLS :展現您對於未來的創造力與想像力-設計出以最先進科技為特色的未來主題樂園。
|
||||
|
||||
<Mythological - Animatronic Film Set>
|
||||
STR_SCNR :神話-機械偶影片組
|
||||
STR_SCNR :機械偶動作
|
||||
STR_PARK :機械偶動作
|
||||
STR_DTLS :您被賦予經營並改善現有主題樂園的工作,樂園建築在舊片場上。為首先將神話生物帶到銀幕中的定格動畫家們獻上崇高敬意
|
||||
|
||||
<Mythological - Cradle of Civilisation>
|
||||
STR_SCNR :神話-文明起源
|
||||
STR_SCNR :神話狂熱
|
||||
STR_PARK :神話狂熱
|
||||
STR_DTLS :您擁有一個具有特殊考古價值的小島。您決定透過建造一座以這個區域非常豐富的神話遺產為主題的樂園。
|
||||
|
||||
<Prehistoric - After the Asteroid>
|
||||
STR_SCNR :史前時代-小行星撞擊之後
|
||||
STR_SCNR :隕石坑大屠殺
|
||||
STR_PARK :隕石坑大屠殺
|
||||
STR_DTLS :您擁有滿是灰塵的老舊隕石坑。您的企業家精神讓您決定建立小行星主題樂園,並將看來毫無價值的土地轉變成巨大的財富。
|
||||
|
||||
<Prehistoric - Jurassic Safari>
|
||||
STR_SCNR :史前時代 - 侏羅紀探險
|
||||
STR_SCNR :Coastersaurus
|
||||
STR_PARK :Coastersaurus
|
||||
STR_DTLS :您被賦予建立侏羅紀主題公園的工作。為了讓您的訪客能更容易接近觀賞各種動植物,您必須在河谷中建立交通工具
|
||||
|
||||
<Prehistoric - Stone Age>
|
||||
STR_SCNR :史前時代-石器時代
|
||||
STR_SCNR :石間漫步
|
||||
STR_PARK :石間漫步
|
||||
STR_DTLS :為了阻止高速公路開發者並保存神秘的古代石頭環,您必須建立石器時代主題公園並獲利。但很難吸引到遊客,因為地形荒涼
|
||||
|
||||
<Roaring Twenties - Prison Island>
|
||||
STR_SCNR :喧騰的20年代-監獄島
|
||||
STR_SCNR :惡魔島
|
||||
STR_PARK :惡魔島
|
||||
STR_DTLS :惡名昭彰的監獄島-島上居名曾以販賣私酒者或騙徒為主-現在正待價而沽中。您決定要將這個小島轉變為觀光勝地,錢不是問題
|
||||
|
||||
<Roaring Twenties - Schneider Cup>
|
||||
STR_SCNR :喧騰的20年代-施耐德盃
|
||||
STR_SCNR :施耐德海岸
|
||||
STR_PARK :施耐德海岸
|
||||
STR_DTLS :令祖父在施耐德盃優勝的75週年紀念再過幾年就要到了。您決定建造以著名的水上飛機競速賽為主題的樂園來紀念他的成就。
|
||||
|
||||
<Roaring Twenties - Skyscrapers>
|
||||
STR_SCNR :喧騰的20年代-摩天大樓
|
||||
STR_SCNR :大都會
|
||||
STR_PARK :大都會
|
||||
STR_DTLS :您在市鎮低層數建築區中擁有空地。為了讓地產發揮最大價值,請建造以喧騰的20年代裝飾藝術為主題的摩天大樓主題樂園
|
||||
|
||||
<Rock 'n' Roll - Flower Power>
|
||||
STR_SCNR :搖滾-花的魅力
|
||||
STR_SCNR :伍斯托克音樂會
|
||||
STR_PARK :伍斯托克音樂會
|
||||
STR_DTLS :您的土地上將舉辦大型的年度音樂嘉年華。請建立一個能讓這些崇尚心靈自由的人們感到愉快的主題樂園。
|
||||
|
||||
<Rock 'n' Roll - Rock 'n' Roll>
|
||||
STR_SCNR :搖滾-搖滾
|
||||
STR_SCNR :搖滾復興
|
||||
STR_PARK :搖滾復興
|
||||
STR_DTLS :這個過時的主題樂園曾經有過輝煌的日子。請協助所有者將讓這個主題樂園再次搖滾起來,讓這個地方成為成功的企業。
|
||||
|
||||
|
|
|
@ -1,9 +1,139 @@
|
|||
openrct2 (0.4.7-develop-1) unstable; urgency=medium
|
||||
openrct2 (0.4.11-develop-1) unstable; urgency=medium
|
||||
|
||||
* Nightly develop build.
|
||||
* Feature: [#11512] Coloured usernames by group on multiplayer servers.
|
||||
* Feature: [#21734] Park admittance price can now be set via text input.
|
||||
* Feature: [#21957] [Plugin] Expose whether the game is paused to the plugin API.
|
||||
* Improved: [#21728] “Fix all rides” cheat now also works if a mechanic is already fixing the ride.
|
||||
* Improved: [#21769] Expose “animation is backwards” wall property in Tile Inspector.
|
||||
* Improved: [#21855] Add a separator between “Load Game” and “Save Game”, to avoid accidental overwriting.
|
||||
* Change: [#21715] [Plugin] Remove access to the internal `owner` property. Note: `ownership` is still accessible.
|
||||
* Change: [#21855] Cheats menu dropdown no longer requires dragging.
|
||||
* Change: [#21866] Hide the FPS Counter when the top toolbar/widgets have been toggled off.
|
||||
* Change: [#21950] Construction and removal buttons can now be held down for repeated placement.
|
||||
* Fix: [#866] Boat Hire boats get stuck entering track (original bug).
|
||||
* Fix: [#10701] No reason specified when placing door over unsuitable track.
|
||||
* Fix: [#18723, #21870] Attempting to demolish a flat ride in pause mode allows you to place multiple copies.
|
||||
* Fix: [#19559] Custom rides with long descriptions extend into lower widgets.
|
||||
* Fix: [#21696] Fullscreen window option not correctly applied on macOS.
|
||||
* Fix: [#21749] Crash when loading park bigger than current limits.
|
||||
* Fix: [#21787] Map generator heightmap should respect increased height limits.
|
||||
* Fix: [#21829] When creating a new scenario, the default name contains formatting codes.
|
||||
* Fix: [#21937] Build errors with the ORIGINAL_RATINGS flag.
|
||||
* Fix: [objects#324] Cannot build Colosseum inside a turn or helix.
|
||||
* Fix: [objects#325] Sloped castle walls are vertically offset by one pixel (original bug).
|
||||
|
||||
openrct2 (0.4.10-develop-1) unstable; urgency=medium
|
||||
|
||||
* Feature: [#18171] Add port of the RCT1 Stand-Up Roller Coaster.
|
||||
* Feature: [#21590] [Plugin] Plugins can now read and write banner properties of tile elements.
|
||||
* Feature: [#21636] Add shortcut key for sorting tile elements.
|
||||
* Feature: [objects#294] Add scenery versions of wooden truss supports.
|
||||
* Feature: [objects#295] Flipped version of wooden post.
|
||||
* Improved: [#21424] Extra viewports can now rotate independently from the main viewport.
|
||||
* Improved: [#21561, #21631] Enable more features in Android build (plugins, networking, multiplayer, audio formats).
|
||||
* Improved: [#21599] Currency signs now use non-breaking spaces.
|
||||
* Improved: [objects#157] Added sloped images for many walls.
|
||||
* Improved: [objects#288] Better map colours and more sensible prices for RCT1 land surfaces.
|
||||
* Improved: [objects#292] Vehicle colour cleanups for WW/TT vehicles.
|
||||
* Improved: [objects#299] More accurate ratings modifiers for RCT1 vehicles.
|
||||
* Improved: [objects#309] Updated names for dodgems and flying saucers vehicles.
|
||||
* Improved: [objects#313] buildMenuPriority for dodgems and flying saucers vehicles.
|
||||
* Change: [#21529] Classify “Southern Sands”, “Tiny Towers”, “Nevermore Park”, “Pacifica” as expert scenarios.
|
||||
* Change: [#21545] Reorder Wacky Worlds scenarios and adjust their difficulty classification.
|
||||
* Fix: [#910] Extra viewport does not preserve the location when rotating.
|
||||
* Fix: [#18413] Crash when mouse over a hacked train.
|
||||
* Fix: [#20338] Cannot select Scenery Picker or Scatter Tool when the scenery recolouring tool is active.
|
||||
* Fix: [#21317] Track designer allows proceeding without an object selected.
|
||||
* Fix: [#21360] If the object selection is missing certain types, the Object Selection window will switch to an incorrect tab.
|
||||
* Fix: [#21419] Cannot place walls underground beneath sloped tiles with clearance checks disabled.
|
||||
* Fix: [#21434] Number of guests overflows in objective text.
|
||||
* Fix: [#21522] Supports for 3×3 turns and 45 degree turns on the Hybrid Coaster and Wooden Roller Coaster not drawn correctly.
|
||||
* Fix: [#21543] Crash with creating a TrackIterator with invalid arguments.
|
||||
* Fix: [#21635] Tile inspector hotkey can set wall slope for non-slopeable objects.
|
||||
* Fix: [#21641] Crash when creating track iterator from an invalid tile element.
|
||||
* Fix: [#21652] Dialog window to confirm overwriting files does not apply the theme colours correctly.
|
||||
* Fix: [#21654] No sound effects when using RCT Classic as an asset base.
|
||||
* Fix: [#21654] Extraneous reports of an object conflict between `rct2.audio.base` and `rct2.audio.base.rctc`.
|
||||
* Fix: [#21664] Crash when switching between languages that use TTF.
|
||||
* Fix: [#21668] Crash when on null ride in Guest::UpdateRideLeaveExit.
|
||||
* Fix: [#21691] Crash when validating rides which can't contain banked track.
|
||||
* Fix: [objects#290] “Haunted Mansion” cars have a non-functional third remap colour.
|
||||
* Fix: [objects#296] Incorrect wall placement around large Kremlin/drab pieces.
|
||||
* Fix: [objects#300] Incorrect Colosseum and volcano corner clearances.
|
||||
* Fix: [objects#319] Incorrect diagonal slope images used for RCT1 corkscrew.
|
||||
* Fix: [objects#320] Incorrect Mandarin Duck boats capacity.
|
||||
|
||||
openrct2 (0.4.9-develop-1) unstable; urgency=medium
|
||||
|
||||
* Feature: [#20376] Add Ukrainian language.
|
||||
* Feature: [#20709] [Plugin] Plugins can now check metadata from all registered plugins.
|
||||
* Feature: [#21376] Add option to reload an object (for object developers).
|
||||
* Feature: [#21413, OpenSFX#19] Add log flume lift sound effect (when “chainlift” is enabled).
|
||||
* Feature: [#21455] Add option to control hidden scenery.
|
||||
* Feature: [objects#282] Added RCT1 beta terrains.
|
||||
* Improved: [#20093] Use new colours for guests’ clothing when they spawn.
|
||||
* Improved: [#21356] Resize the title bar when moving between displays with different scaling factors on Windows systems.
|
||||
* Improved: [#21388] Tooltips will now show even when an error message is present.
|
||||
* Improved: [#21423] Add mechanism to allow building partly underground.
|
||||
* Improved: [objects#272, objects#276, objects#277, objects#278, objects#279, objects#280, objects#281] Add most remaining ports of RCT1 ride and vehicle objects (for import only).
|
||||
* Improved: [objects#275, objects#284, objects#286] Add remaining RCT1 walls (for import only).
|
||||
* Change: [#21350] Group Dodgems and Flying Saucers vehicles.
|
||||
* Change: [#21453] Reintroduce lost RCT1 Jet skis colour presets to the boat hire.
|
||||
* Change: [objects#285] Mark old reversed train objects as compatibility objects.
|
||||
* Fix: [#17610] Some scenery items are unavailable in RCT1 scenarios.
|
||||
* Fix: [#18963] Research table in parks from Loopy Landscapes is imported incorrectly.
|
||||
* Fix: [#20164] Grass and Rock terrain objects cannot be de-selected.
|
||||
* Fix: [#20907] RCT1/AA scenarios use the 4-across train for the Inverted Roller Coaster.
|
||||
* Fix: [#21037] Map animations in the title sequence are stuck.
|
||||
* Fix: [#21208] Error message will stay open only for a brief moment when the game has been running a while.
|
||||
* Fix: [#21220] When creating a new park from a SC4 file, the localised park name is not applied.
|
||||
* Fix: [#21286] Cannot build unbanking turns with RCT1 vehicles.
|
||||
* Fix: [#21288] Text overlaps in the “About ‘OpenRCT2’” window for Arabic, Chinese, Japanese, Korean and Vietnamese.
|
||||
* Fix: [#21310] Some half loop elements require more clearance than their upward/downward counterparts.
|
||||
* Fix: [#21318] Virtual Floor for building scenery is not properly invalidated.
|
||||
* Fix: [#21330] Tooltips from dropdown widgets have the wrong position.
|
||||
* Fix: [#21332] Mini Helicopters and Monorail Cycles ride types are swapped in research within RCT1 scenarios.
|
||||
* Fix: [#21343] “Pause” and “Build Path” hotkeys do not work if top toolbar is hidden.
|
||||
* Fix: [#21347] Too many options are hidden if the platform has no file picker.
|
||||
* Fix: [#21350] Maze and Mini Golf track designs from RCT1 not shown in track designs list.
|
||||
* Fix: [#21425] Additional missing/misplaced land & construction rights tiles in Japanese Coastal Reclaim.
|
||||
* Fix: [#21484] Upkeep costs for some rides/facilities/shops are not calculated correctly.
|
||||
* Fix: [#21498] Crash when the size of text can’t be determined.
|
||||
* Fix: [objects#262, objects#263, objects#265, objects#266, objects#267, objects#268, objects#270, objects#271, objects#283] Various errors in expansion pack objects (original bug).
|
||||
* Fix: [OpenSFX#18] B&M Roar sound effect not looping correctly.
|
||||
|
||||
openrct2 (0.4.8-develop-1) unstable; urgency=medium
|
||||
|
||||
* Feature: [#21062] [Plugin] Add API for managing a guest's items.
|
||||
* Improved: [#18632, #21306] Land ownership and construction rights are now shown on top of the water.
|
||||
* Improved: [#20951] Activate OpenRCT2 window after using native file dialog on macOS.
|
||||
* Improved: [#21184] The construction marker for rides, paths and large scenery is now shown on top of the water.
|
||||
* Improved: [#21192] Tooltips will now follow the cursor.
|
||||
* Improved: [#21227] Entrance style dropdown is now sorted alphabetically everywhere.
|
||||
* Change: [#21200] Raise maximum lift speeds of the Reverser Coaster, Side Friction Coaster, and Virginia Reel for RCT1 parity.
|
||||
* Change: [#21225] Raise maximum allowed misc entities to 1600.
|
||||
* Fix: [#19494] RCT1 fence gate walls not imported properly if they were placed on slopes.
|
||||
* Fix: [#20196] New scenarios start with an incorrect temperature.
|
||||
* Fix: [#20255] Images from the last hovered-over coaster in the object selection are not freed.
|
||||
* Fix: [#20616] Confirmation button in the track designer’s quit prompt has the wrong text.
|
||||
* Fix: [#20628] Moving caret using Ctrl+left can move too far when using a multibyte grapheme.
|
||||
* Fix: [#20631] IME window not positioned correctly.
|
||||
* Fix: [#20845] Trying to save under a folder with no write permissions causes a crash.
|
||||
* Fix: [#21054] “No entrance” style is selected by default in the track designer.
|
||||
* Fix: [#21145] [Plugin] setInterval/setTimeout handle conflict.
|
||||
* Fix: [#21157] [Plugin] Widgets do not redraw correctly when updating disabled or visibility state.
|
||||
* Fix: [#21158] [Plugin] Potential crash using setInterval/setTimeout within the callback.
|
||||
* Fix: [#21171] [Plugin] Crash creating entities with no more entity slots available.
|
||||
* Fix: [#21178] Inca Lost City’s scenario description incorrectly states there are height restrictions.
|
||||
* Fix: [#21179] Additional missing land/construction rights tiles in Inca Lost City & Renovation.
|
||||
* Fix: [#21198] [Plugin] Setting brake or booster speeds on a tile element doesn’t work.
|
||||
* Fix: [#21290] Sound keeps playing when paused from fast-forward mode.
|
||||
* Fix: [#21291] Hungry guests heading to any flat ride do not count for warning threshold (original bug).
|
||||
* Fix: [#21309] Africa - Oasis & Blackpool Pleasure Beach’s monorails are built outside the park’s land rights.
|
||||
* Fix: [#21316] Isolated land for sale tile on Extreme Hawaiian Island.
|
||||
|
||||
openrct2 (0.4.7-develop-1) unstable; urgency=medium
|
||||
|
||||
* Feature: [#12078] Add shortcut key for toggling wall slope.
|
||||
* Feature: [#19919] Add diagonal brakes and diagonal block brakes to most coaster types.
|
||||
* Feature: [#20141] Add additional track pieces to the Giga Coaster.
|
||||
|
|
|
@ -4,7 +4,7 @@ Section: misc
|
|||
Priority: optional
|
||||
Standards-Version: 3.9.2
|
||||
Multi-Arch: same
|
||||
Build-Depends: debhelper (>= 9), cmake (>= 3.8), libsdl2-dev, g++ (>= 4:7), pkg-config, nlohmann-json3-dev (>= 3.6.0), libspeex-dev, libspeexdsp-dev, libcurl4-openssl-dev, libcrypto++-dev, libfontconfig1-dev, libfreetype6-dev, libpng-dev, libssl-dev, libzip-dev (>= 1.0.0), libicu-dev (>= 59.0), libflac-dev, libvorbis-dev
|
||||
Build-Depends: debhelper (>= 9), cmake (>= 3.8), libsdl2-dev, g++ (>= 4:10), pkg-config, nlohmann-json3-dev (>= 3.6.0), libspeex-dev, libspeexdsp-dev, libcurl4-openssl-dev, libcrypto++-dev, libfontconfig1-dev, libfreetype6-dev, libpng-dev, libssl-dev, libzip-dev (>= 1.0.0), libicu-dev (>= 59.0), libflac-dev, libvorbis-dev
|
||||
|
||||
Package: openrct2
|
||||
Architecture: any
|
||||
|
@ -13,7 +13,14 @@ Vcs-Browser: https://github.com/OpenRCT2/OpenRCT2
|
|||
Vcs-Git: https://github.com/OpenRCT2/OpenRCT2
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Recommends: innoextract
|
||||
Description: An open source re-implementation of Roller Coaster Tycoon 2.
|
||||
An open source clone of RollerCoaster Tycoon 2 built by decompiling the
|
||||
original game one bit at a time.
|
||||
Requires original game assets.
|
||||
Description: An open source re-implementation of RollerCoaster Tycoon 2.
|
||||
OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2,
|
||||
expanding the game with new features, fixing bugs and raising game limits.
|
||||
The gameplay revolves around building and maintaining an amusement park
|
||||
containing attractions, shops and facilities. The player must try to make a
|
||||
profit and maintain a good park reputation whilst keeping the guests happy.
|
||||
.
|
||||
OpenRCT2 allows for both scenario and sandbox play. Scenarios require the
|
||||
player to complete a certain objective in a set time limit whilst sandbox
|
||||
allows the player to build a more flexible park with optionally no
|
||||
restrictions or finance.
|
||||
|
|
|
@ -1,3 +1,184 @@
|
|||
0.4.12 (in development)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#622] Add option to align the top toolbar buttons horizontally centred (off by default).
|
||||
- Feature: [#20263] Ability to increase the size of the map in the (0, 0) direction.
|
||||
- Feature: [#21714] [Plugin] Costume assignment is now tailored to each staff type.
|
||||
- Feature: [#21853] Enlarged UI mode.
|
||||
- Feature: [#21893, #22065] On launch, the game now indicates what system is being initialised.
|
||||
- Feature: [#21913] [Plugin] Allow precise and safe control of peep animations.
|
||||
- Feature: [#22046] [Plugin] Add interface for crashed vehicle particle.
|
||||
- Feature: [#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
|
||||
- Feature: [#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
|
||||
- Improved: [#19870] Allow using new colours in UI themes.
|
||||
- Improved: [#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
|
||||
- Improved: [#21981] Rendering performance of the map window has been improved considerably.
|
||||
- Improved: [#21981] The map window now defaults to showing as much of the map as fits the screen.
|
||||
- Improved: [#21983] Taking a screenshot now shows a message again, closing when taking another.
|
||||
- Improved: [#22026] The options window now stays centred when window scaling is changed.
|
||||
- Improved: [#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
|
||||
- Improved: [#22065] Joining a network game now indicates progress using coaster trains.
|
||||
- Improved: [#22075] [Plugin] Plugins can now use G1 Icons.
|
||||
- Improved: [#22084] The game now temporarily pauses while the load/save window is open.
|
||||
- Improved: [objects#238] Add preview image for invisible queue.
|
||||
- Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
|
||||
- Change: [#7248] Small mini-maps are now centred in the map window.
|
||||
- Change: [#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
|
||||
- Change: [#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
|
||||
- Change: [#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
|
||||
- Change: [#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
|
||||
- Fix: [#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
|
||||
- Fix: [#13294] Map corners are cut off in some directions (original bug).
|
||||
- Fix: [#14630] Non-ASCII thousands and decimal separators not processed correctly.
|
||||
- Fix: [#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
|
||||
- Fix: [#21987] [Plugin] API cannot handle negative removal prices.
|
||||
- Fix: [#22008] Uninverted Lay-down roller coaster uses the wrong support type.
|
||||
- Fix: [#22012] [Plugin] Images on ImgButton widgets cannot be updated.
|
||||
- Fix: [#22121] Some news items in the “Recent Messages” window have the wrong text colour.
|
||||
- Fix: [#22152] [Plugin] Negative signed integers are truncated.
|
||||
- Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
|
||||
- Fix: [objects#331] Incorrect hover car capacity string.
|
||||
- Fix: [objects#334] Incorrect school bus capacity string.
|
||||
- Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
|
||||
|
||||
0.4.11 (2024-05-05)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#11512] Coloured usernames by group on multiplayer servers.
|
||||
- Feature: [#21734] Park admittance price can now be set via text input.
|
||||
- Feature: [#21957] [Plugin] Expose whether the game is paused to the plugin API.
|
||||
- Improved: [#21728] “Fix all rides” cheat now also works if a mechanic is already fixing the ride.
|
||||
- Improved: [#21769] Expose “animation is backwards” wall property in Tile Inspector.
|
||||
- Improved: [#21855] Add a separator between “Load Game” and “Save Game”, to avoid accidental overwriting.
|
||||
- Change: [#21715] [Plugin] Remove access to the internal `owner` property. Note: `ownership` is still accessible.
|
||||
- Change: [#21855] Cheats menu dropdown no longer requires dragging.
|
||||
- Change: [#21866] Hide the FPS Counter when the top toolbar/widgets have been toggled off.
|
||||
- Change: [#21950] Construction and removal buttons can now be held down for repeated placement.
|
||||
- Fix: [#866] Boat Hire boats get stuck entering track (original bug).
|
||||
- Fix: [#10701] No reason specified when placing door over unsuitable track.
|
||||
- Fix: [#18723, #21870] Attempting to demolish a flat ride in pause mode allows you to place multiple copies.
|
||||
- Fix: [#19559] Custom rides with long descriptions extend into lower widgets.
|
||||
- Fix: [#21696] Fullscreen window option not correctly applied on macOS.
|
||||
- Fix: [#21749] Crash when loading park bigger than current limits.
|
||||
- Fix: [#21787] Map generator heightmap should respect increased height limits.
|
||||
- Fix: [#21829] When creating a new scenario, the default name contains formatting codes.
|
||||
- Fix: [#21937] Build errors with the ORIGINAL_RATINGS flag.
|
||||
- Fix: [objects#324] Cannot build Colosseum inside a turn or helix.
|
||||
- Fix: [objects#325] Sloped castle walls are vertically offset by one pixel (original bug).
|
||||
|
||||
0.4.10 (2024-04-02)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#18171] Add port of the RCT1 Stand-Up Roller Coaster.
|
||||
- Feature: [#21590] [Plugin] Plugins can now read and write banner properties of tile elements.
|
||||
- Feature: [#21636] Add shortcut key for sorting tile elements.
|
||||
- Feature: [objects#294] Add scenery versions of wooden truss supports.
|
||||
- Feature: [objects#295] Flipped version of wooden post.
|
||||
- Improved: [#21424] Extra viewports can now rotate independently from the main viewport.
|
||||
- Improved: [#21561, #21631] Enable more features in Android build (plugins, networking, multiplayer, audio formats).
|
||||
- Improved: [#21599] Currency signs now use non-breaking spaces.
|
||||
- Improved: [objects#157] Added sloped images for many walls.
|
||||
- Improved: [objects#288] Better map colours and more sensible prices for RCT1 land surfaces.
|
||||
- Improved: [objects#292] Vehicle colour cleanups for WW/TT vehicles.
|
||||
- Improved: [objects#299] More accurate ratings modifiers for RCT1 vehicles.
|
||||
- Improved: [objects#309] Updated names for dodgems and flying saucers vehicles.
|
||||
- Improved: [objects#313] buildMenuPriority for dodgems and flying saucers vehicles.
|
||||
- Change: [#21529] Classify “Southern Sands”, “Tiny Towers”, “Nevermore Park”, “Pacifica” as expert scenarios.
|
||||
- Change: [#21545] Reorder Wacky Worlds scenarios and adjust their difficulty classification.
|
||||
- Fix: [#910] Extra viewport does not preserve the location when rotating.
|
||||
- Fix: [#6725] Z fighting issue with cars using animated doors.
|
||||
- Fix: [#18413] Crash when mouse over a hacked train.
|
||||
- Fix: [#20338] Cannot select Scenery Picker or Scatter Tool when the scenery recolouring tool is active.
|
||||
- Fix: [#21317] Track designer allows proceeding without an object selected.
|
||||
- Fix: [#21360] If the object selection is missing certain types, the Object Selection window will switch to an incorrect tab.
|
||||
- Fix: [#21419] Cannot place walls underground beneath sloped tiles with clearance checks disabled.
|
||||
- Fix: [#21434] Number of guests overflows in objective text.
|
||||
- Fix: [#21522] Supports for 3×3 turns and 45 degree turns on the Hybrid Coaster and Wooden Roller Coaster not drawn correctly.
|
||||
- Fix: [#21543] Crash with creating a TrackIterator with invalid arguments.
|
||||
- Fix: [#21627] [Plugin] Banners are properly created or deleted when tile elements are changed by plugins.
|
||||
- Fix: [#21635] Tile inspector hotkey can set wall slope for non-slopeable objects.
|
||||
- Fix: [#21641] Crash when creating track iterator from an invalid tile element.
|
||||
- Fix: [#21652] Dialog window to confirm overwriting files does not apply the theme colours correctly.
|
||||
- Fix: [#21654] No sound effects when using RCT Classic as an asset base.
|
||||
- Fix: [#21654] Extraneous reports of an object conflict between `rct2.audio.base` and `rct2.audio.base.rctc`.
|
||||
- Fix: [#21664] Crash when switching between languages that use TTF.
|
||||
- Fix: [#21668] Crash when on null ride in Guest::UpdateRideLeaveExit.
|
||||
- Fix: [#21691] Crash when validating rides which can’t contain banked track.
|
||||
- Fix: [objects#290] “Haunted Mansion” cars have a non-functional third remap colour.
|
||||
- Fix: [objects#296] Incorrect wall placement around large Kremlin/drab pieces.
|
||||
- Fix: [objects#300] Incorrect Colosseum and volcano corner clearances.
|
||||
- Fix: [objects#319] Incorrect diagonal slope images used for RCT1 corkscrew.
|
||||
- Fix: [objects#320] Incorrect Mandarin Duck boats capacity.
|
||||
|
||||
0.4.9 (2024-03-02)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#20376] Add Ukrainian language.
|
||||
- Feature: [#20709] [Plugin] Plugins can now check metadata from all registered plugins.
|
||||
- Feature: [#21376] Add option to reload an object (for object developers).
|
||||
- Feature: [#21413, OpenSFX#19] Add log flume lift sound effect (when “chainlift” is enabled).
|
||||
- Feature: [#21455] Add option to control hidden scenery.
|
||||
- Feature: [objects#282] Added RCT1 beta terrains.
|
||||
- Improved: [#20093] Use new colours for guests’ clothing when they spawn.
|
||||
- Improved: [#21356] Resize the title bar when moving between displays with different scaling factors on Windows systems.
|
||||
- Improved: [#21388] Tooltips will now show even when an error message is present.
|
||||
- Improved: [#21423] Add mechanism to allow building partly underground.
|
||||
- Improved: [objects#272, objects#276, objects#277, objects#278, objects#279, objects#280, objects#281] Add most remaining ports of RCT1 ride and vehicle objects (for import only).
|
||||
- Improved: [objects#275, objects#284, objects#286] Add remaining RCT1 walls (for import only).
|
||||
- Change: [#21350] Group Dodgems and Flying Saucers vehicles.
|
||||
- Change: [#21453] Reintroduce lost RCT1 Jet skis colour presets to the boat hire.
|
||||
- Change: [objects#285] Mark old reversed train objects as compatibility objects.
|
||||
- Fix: [#15782] Some error messages from game actions are empty.
|
||||
- Fix: [#17610] Some scenery items are unavailable in RCT1 scenarios.
|
||||
- Fix: [#18963] Research table in parks from Loopy Landscapes is imported incorrectly.
|
||||
- Fix: [#20164] Grass and Rock terrain objects cannot be de-selected.
|
||||
- Fix: [#20907] RCT1/AA scenarios use the 4-across train for the Inverted Roller Coaster.
|
||||
- Fix: [#21037] Map animations in the title sequence are stuck.
|
||||
- Fix: [#21208] Error message will stay open only for a brief moment when the game has been running a while.
|
||||
- Fix: [#21220] When creating a new park from a SC4 file, the localised park name is not applied.
|
||||
- Fix: [#21286] Cannot build unbanking turns with RCT1 vehicles.
|
||||
- Fix: [#21288] Text overlaps in the “About ‘OpenRCT2’” window for Arabic, Chinese, Japanese, Korean and Vietnamese.
|
||||
- Fix: [#21289] Text overlaps and overflows in the map window for some languages.
|
||||
- Fix: [#21310] Some half loop elements require more clearance than their upward/downward counterparts.
|
||||
- Fix: [#21318] Virtual Floor for building scenery is not properly invalidated.
|
||||
- Fix: [#21330] Tooltips from dropdown widgets have the wrong position.
|
||||
- Fix: [#21332] Mini Helicopters and Monorail Cycles ride types are swapped in research within RCT1 scenarios.
|
||||
- Fix: [#21343] “Pause” and “Build Path” hotkeys do not work if top toolbar is hidden.
|
||||
- Fix: [#21347] Too many options are hidden if the platform has no file picker.
|
||||
- Fix: [#21350] Maze and Mini Golf track designs from RCT1 not shown in track designs list.
|
||||
- Fix: [#21425] Additional missing/misplaced land & construction rights tiles in Japanese Coastal Reclaim.
|
||||
- Fix: [#21484] Upkeep costs for some rides/facilities/shops are not calculated correctly.
|
||||
- Fix: [#21498] Crash when the size of text can’t be determined.
|
||||
- Fix: [objects#262, objects#263, objects#265, objects#266, objects#267, objects#268, objects#270, objects#271, objects#283] Various errors in expansion pack objects (original bug).
|
||||
- Fix: [OpenSFX#18] B&M Roar sound effect not looping correctly.
|
||||
|
||||
0.4.8 (2024-02-04)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#21062] [Plugin] Add API for managing a guest’s items.
|
||||
- Improved: [#18632, #21306] Land ownership and construction rights are now shown on top of the water.
|
||||
- Improved: [#20951] Activate OpenRCT2 window after using native file dialog on macOS.
|
||||
- Improved: [#21184] The construction marker for rides, paths and large scenery is now shown on top of the water.
|
||||
- Improved: [#21192] Tooltips will now follow the cursor.
|
||||
- Improved: [#21227] Entrance style dropdown is now sorted alphabetically everywhere.
|
||||
- Change: [#21200] Raise maximum lift speeds of the Reverser Coaster, Side Friction Coaster, and Virginia Reel for RCT1 parity.
|
||||
- Change: [#21225] Raise maximum allowed misc entities to 1600.
|
||||
- Fix: [#19494] RCT1 fence gate walls not imported properly if they were placed on slopes.
|
||||
- Fix: [#20196] New scenarios start with an incorrect temperature.
|
||||
- Fix: [#20255] Images from the last hovered-over coaster in the object selection are not freed.
|
||||
- Fix: [#20616] Confirmation button in the track designer’s quit prompt has the wrong text.
|
||||
- Fix: [#20628] Moving caret using Ctrl+left can move too far when using a multibyte grapheme.
|
||||
- Fix: [#20631] IME window not positioned correctly.
|
||||
- Fix: [#20845] Trying to save under a folder with no write permissions causes a crash.
|
||||
- Fix: [#21039] Text rendering bleeds pixels through windows.
|
||||
- Fix: [#21054] “No entrance” style is selected by default in the track designer.
|
||||
- Fix: [#21145] [Plugin] setInterval/setTimeout handle conflict.
|
||||
- Fix: [#21157] [Plugin] Widgets do not redraw correctly when updating disabled or visibility state.
|
||||
- Fix: [#21158] [Plugin] Potential crash using setInterval/setTimeout within the callback.
|
||||
- Fix: [#21171] [Plugin] Crash creating entities with no more entity slots available.
|
||||
- Fix: [#21178] Inca Lost City’s scenario description incorrectly states there are height restrictions.
|
||||
- Fix: [#21179] Additional missing land/construction rights tiles in Inca Lost City & Renovation.
|
||||
- Fix: [#21198] [Plugin] Setting brake or booster speeds on a tile element doesn’t work.
|
||||
- Fix: [#21290] Sound keeps playing when paused from fast-forward mode.
|
||||
- Fix: [#21291] Hungry guests heading to any flat ride do not count for warning threshold (original bug).
|
||||
- Fix: [#21309] Africa - Oasis & Blackpool Pleasure Beach’s monorails are built outside the park’s land rights.
|
||||
- Fix: [#21316] Isolated land for sale tile on Extreme Hawaiian Island.
|
||||
|
||||
0.4.7 (2023-12-31)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#12078] Add shortcut key for toggling wall slope.
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0</project_license>
|
||||
<name>OpenRCT2</name>
|
||||
<summary>A construction and management simulation video game that simulates amusement park management</summary>
|
||||
<summary>Amusement park simulation</summary>
|
||||
<developer_name>The OpenRCT2 Team</developer_name>
|
||||
<launchable type="desktop-id">openrct2.desktop</launchable>
|
||||
<description>
|
||||
<p>
|
||||
OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 (RCT2).
|
||||
|
@ -35,7 +37,8 @@
|
|||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://camo.githubusercontent.com/888d993a9716208446bd0d5a762977d6b7993058/68747470733a2f2f692e696d6775722e636f6d2f6537434b3553632e706e67</image>
|
||||
<image>https://camo.githubusercontent.com/fdb7e0506eedc4625f2f776f495c1072c520496dba3ee6c07bfdbf907d478afd/68747470733a2f2f692e696d6775722e636f6d2f6537434b3553632e706e67</image>
|
||||
<caption>Amusement park featuring an inverted roller coaster, a river rapids ride and custom scenery</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">https://openrct2.io/</url>
|
||||
|
@ -66,6 +69,18 @@
|
|||
<content_attribute id="money-gambling">none</content_attribute>
|
||||
</content_rating>
|
||||
<releases>
|
||||
<release version="0.4.11" date="2024-05-05">
|
||||
<url>https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.11</url>
|
||||
</release>
|
||||
<release version="0.4.10" date="2024-04-02">
|
||||
<url>https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.10</url>
|
||||
</release>
|
||||
<release version="0.4.9" date="2024-03-02">
|
||||
<url>https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.9</url>
|
||||
</release>
|
||||
<release version="0.4.8" date="2024-02-04">
|
||||
<url>https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.8</url>
|
||||
</release>
|
||||
<release version="0.4.7" date="2023-12-31">
|
||||
<url>https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.7</url>
|
||||
</release>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.4.7</string>
|
||||
<string>0.4.11</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>ORCT</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -56,7 +56,10 @@ declare global {
|
|||
* Plugin writers should check if ui is available using `typeof ui !== 'undefined'`.
|
||||
*/
|
||||
var ui: Ui;
|
||||
|
||||
/**
|
||||
* APIs for managing the installed plugins
|
||||
*/
|
||||
var pluginManager: PluginManager;
|
||||
/**
|
||||
* Registers the plugin. This may only be called once.
|
||||
* @param metadata Information about the plugin and the entry point.
|
||||
|
@ -213,6 +216,11 @@ declare global {
|
|||
*/
|
||||
readonly mode: GameMode;
|
||||
|
||||
/**
|
||||
* Whether the game is currently paused or not.
|
||||
*/
|
||||
readonly paused: boolean;
|
||||
|
||||
/**
|
||||
* Render the current state of the map and save to disc.
|
||||
* Useful for server administration and timelapse creation.
|
||||
|
@ -309,7 +317,7 @@ declare global {
|
|||
queryAction(action: string, args: object, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: ActionType, args: object, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "balloonpress", args: BalloonPressArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
queryAction(action: "bannerremove", args: BannerRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "bannersetcolour", args: BannerSetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "bannersetname", args: BannerSetNameArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -331,7 +339,7 @@ declare global {
|
|||
queryAction(action: "landsetheight", args: LandSetHeightArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "landsetrights", args: LandSetRightsArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "landsmooth", args: LandSmoothArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
queryAction(action: "largesceneryremove", args: LargeSceneryRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "largescenerysetcolour", args: LargeScenerySetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "loadorquit", args: LoadOrQuitArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -384,7 +392,7 @@ declare global {
|
|||
queryAction(action: "trackplace", args: TrackPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "trackremove", args: TrackRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "tracksetbrakespeed", args: TrackSetBrakeSpeedArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
queryAction(action: "wallremove", args: WallRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "wallsetcolour", args: WallSetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
queryAction(action: "waterlower", args: WaterLowerArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -401,7 +409,7 @@ declare global {
|
|||
executeAction(action: string, args: object, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: ActionType, args: object, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "balloonpress", args: BalloonPressArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
executeAction(action: "bannerremove", args: BannerRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "bannersetcolour", args: BannerSetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "bannersetname", args: BannerSetNameArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -423,7 +431,7 @@ declare global {
|
|||
executeAction(action: "landsetheight", args: LandSetHeightArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "landsetrights", args: LandSetRightsArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "landsmooth", args: LandSmoothArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
executeAction(action: "largesceneryremove", args: LargeSceneryRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "largescenerysetcolour", args: LargeScenerySetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "loadorquit", args: LoadOrQuitArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -476,7 +484,7 @@ declare global {
|
|||
executeAction(action: "trackplace", args: TrackPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "trackremove", args: TrackRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "tracksetbrakespeed", args: TrackSetBrakeSpeedArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
|
||||
executeAction(action: "wallremove", args: WallRemoveArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "wallsetcolour", args: WallSetColourArgs, callback?: (result: GameActionResult) => void): void;
|
||||
executeAction(action: "waterlower", args: WaterLowerArgs, callback?: (result: GameActionResult) => void): void;
|
||||
|
@ -868,7 +876,7 @@ declare global {
|
|||
x: number;
|
||||
y: number;
|
||||
height: number;
|
||||
style: number; // see TILE_ELEMENT_SLOPE in openrct2/world/Surface.h
|
||||
style: number; // see openrct2/world/tile_element/Slope.h
|
||||
}
|
||||
|
||||
interface LandSetRightsArgs extends GameActionArgs {
|
||||
|
@ -931,6 +939,8 @@ declare global {
|
|||
interface MapChangeSizeArgs extends GameActionArgs {
|
||||
targetSizeX: number;
|
||||
targetSizeY: number;
|
||||
shiftX: number;
|
||||
shiftY: number;
|
||||
}
|
||||
|
||||
interface MazePlaceTrackArgs extends GameActionArgs {
|
||||
|
@ -1147,6 +1157,7 @@ declare global {
|
|||
quadrant: number;
|
||||
primaryColour: number;
|
||||
secondaryColour: number;
|
||||
tertiaryColour: number;
|
||||
}
|
||||
|
||||
interface SmallSceneryRemoveArgs extends GameActionArgs {
|
||||
|
@ -1332,6 +1343,10 @@ declare global {
|
|||
expenditureType?: ExpenditureType;
|
||||
}
|
||||
|
||||
interface BannerCreateActionResult extends GameActionResult {
|
||||
readonly bannerIndex?: number;
|
||||
}
|
||||
|
||||
interface RideCreateActionResult extends GameActionResult {
|
||||
readonly ride?: number;
|
||||
}
|
||||
|
@ -1472,7 +1487,6 @@ declare global {
|
|||
occupiedQuadrants: number;
|
||||
isGhost: boolean;
|
||||
isHidden: boolean; /** Take caution when changing this field, it may invalidate TileElements you have stored in your script. */
|
||||
owner: number;
|
||||
}
|
||||
|
||||
interface SurfaceElement extends BaseTileElement {
|
||||
|
@ -1499,12 +1513,12 @@ declare global {
|
|||
|
||||
edges: number;
|
||||
corners: number;
|
||||
slopeDirection: number | null;
|
||||
slopeDirection: Direction | null;
|
||||
isBlockedByVehicle: boolean;
|
||||
isWide: boolean;
|
||||
|
||||
isQueue: boolean;
|
||||
queueBannerDirection: number | null;
|
||||
queueBannerDirection: Direction | null;
|
||||
ride: number | null;
|
||||
station: number | null;
|
||||
|
||||
|
@ -1543,6 +1557,7 @@ declare global {
|
|||
object: number;
|
||||
primaryColour: number;
|
||||
secondaryColour: number;
|
||||
tertiaryColour: number;
|
||||
quadrant: number;
|
||||
age: number;
|
||||
}
|
||||
|
@ -1553,10 +1568,14 @@ declare global {
|
|||
direction: Direction;
|
||||
object: number;
|
||||
primaryColour: number;
|
||||
/** If the element is a banner, this is the text colour. */
|
||||
secondaryColour: number;
|
||||
tertiaryColour: number;
|
||||
bannerIndex: number | null;
|
||||
slope: Direction;
|
||||
/** Writing to bannerIndex is deprecated and may result in uncontrolled behaviour. */
|
||||
readonly bannerIndex: number | null;
|
||||
/** If the element is a banner, this is its text. */
|
||||
bannerText: string | null;
|
||||
}
|
||||
|
||||
interface EntranceElement extends BaseTileElement {
|
||||
|
@ -1577,16 +1596,28 @@ declare global {
|
|||
direction: Direction;
|
||||
object: number;
|
||||
primaryColour: number;
|
||||
/** If the element is a banner, this is the text colour. */
|
||||
secondaryColour: number;
|
||||
tertiaryColour: number;
|
||||
bannerIndex: number | null;
|
||||
sequence: number;
|
||||
/** Writing to bannerIndex is deprecated and may result in uncontrolled behaviour. */
|
||||
readonly bannerIndex: number | null;
|
||||
/** If the element is a banner, this is its text. */
|
||||
bannerText: string | null;
|
||||
}
|
||||
|
||||
interface BannerElement extends BaseTileElement {
|
||||
type: "banner";
|
||||
|
||||
direction: Direction;
|
||||
bannerIndex: number;
|
||||
object: number;
|
||||
primaryColour: number;
|
||||
/** This is the text colour. */
|
||||
secondaryColour: number;
|
||||
/** Writing to bannerIndex is deprecated and may result in uncontrolled behaviour. */
|
||||
readonly bannerIndex: number;
|
||||
bannerText: string;
|
||||
isNoEntry: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2096,6 +2127,11 @@ declare global {
|
|||
supports: number;
|
||||
}
|
||||
|
||||
interface CrashedVehicleColour {
|
||||
body: number;
|
||||
trim: number;
|
||||
}
|
||||
|
||||
interface VehicleColour {
|
||||
body: number;
|
||||
trim: number;
|
||||
|
@ -2581,6 +2617,63 @@ declare global {
|
|||
"waiting_to_depart" |
|
||||
"waiting_to_start";
|
||||
|
||||
type CrashParticleType = "corner" | "rod" | "wheel" | "panel" | "seat";
|
||||
|
||||
/**
|
||||
* Override properties for launch data. All properties except colour are randomly
|
||||
* chosen if not overridden, using the same algorithm as regular crashed particles.
|
||||
*/
|
||||
interface CrashParticleLaunchData {
|
||||
colours?: CrashedVehicleColour;
|
||||
timeToLive?: number;
|
||||
velocity?: CoordsXYZ;
|
||||
crashParticleType?: CrashParticleType;
|
||||
frame?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a vehicle explosion particle. They are emitted during a vehicle
|
||||
* crash and will bounce until their timer expires and they are automatically
|
||||
* removed.
|
||||
*/
|
||||
interface CrashedVehicleParticle extends Entity {
|
||||
/**
|
||||
* The colour of the particle.
|
||||
*/
|
||||
colours: CrashedVehicleColour;
|
||||
|
||||
/**
|
||||
* The lifetime of the particle in ticks. Default value 65535. Entity is
|
||||
* automatically removed at 0.
|
||||
*/
|
||||
timeToLive: number;
|
||||
|
||||
/**
|
||||
* The particle velocity.
|
||||
*/
|
||||
velocity: CoordsXYZ;
|
||||
|
||||
/**
|
||||
* The acceleration of the particle in the x, y, and z directions.
|
||||
*/
|
||||
acceleration: CoordsXYZ;
|
||||
|
||||
/**
|
||||
* The type of crash particle.
|
||||
*/
|
||||
crashParticleType: CrashParticleType;
|
||||
|
||||
/**
|
||||
* The current frame of the crash particle.
|
||||
*/
|
||||
frame: number;
|
||||
|
||||
/**
|
||||
* Sets the sprite bounds and launches the particle.
|
||||
*/
|
||||
launch(launchData?: CrashParticleLaunchData): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a guest or staff member.
|
||||
* @deprecated since version 34, use guest or staff instead.
|
||||
|
@ -2657,6 +2750,34 @@ declare global {
|
|||
*/
|
||||
type PeepType = "guest" | "staff";
|
||||
|
||||
type GuestAnimation =
|
||||
"walking" |
|
||||
"checkTime" |
|
||||
"watchRide" |
|
||||
"eatFood" |
|
||||
"shakeHead" |
|
||||
"emptyPockets" |
|
||||
"holdMat" |
|
||||
"sittingIdle" |
|
||||
"sittingEatFood" |
|
||||
"sittingLookAroundLeft" |
|
||||
"sittingLookAroundRight" |
|
||||
"hanging" |
|
||||
"wow" |
|
||||
"throwUp" |
|
||||
"jump" |
|
||||
"drowning" |
|
||||
"joy" |
|
||||
"readMap" |
|
||||
"wave" |
|
||||
"wave2" |
|
||||
"takePhoto" |
|
||||
"clap" |
|
||||
"disgust" |
|
||||
"drawPicture" |
|
||||
"beingWatched" |
|
||||
"withdrawMoney";
|
||||
|
||||
/**
|
||||
* Represents a guest.
|
||||
*/
|
||||
|
@ -2765,6 +2886,65 @@ declare global {
|
|||
* The list of thoughts this guest has.
|
||||
*/
|
||||
readonly thoughts: Thought[];
|
||||
|
||||
/**
|
||||
* The list of items this guest has.
|
||||
*/
|
||||
readonly items: GuestItem[];
|
||||
|
||||
/**
|
||||
* Checks whether this guest has a certain item.
|
||||
* @param item The item to check.
|
||||
*/
|
||||
hasItem(item: GuestItem): boolean;
|
||||
|
||||
/**
|
||||
* Gives an item to the guest. Guests can only have one item of a given type.
|
||||
* If this guest already has an item of the same type, this will override the current item.
|
||||
* @param item The item to give.
|
||||
*/
|
||||
giveItem(item: GuestItem): void;
|
||||
|
||||
/**
|
||||
* Removes an item from the guest's possession.
|
||||
* @param item The item to remove.
|
||||
*/
|
||||
removeItem(item: GuestItem): void;
|
||||
|
||||
/**
|
||||
* Removes all items from the guest's possession.
|
||||
*/
|
||||
removeAllItems(): void;
|
||||
|
||||
/**
|
||||
* The animations available to this guest.
|
||||
*/
|
||||
readonly availableAnimations: GuestAnimation[];
|
||||
|
||||
/**
|
||||
* Gets an array of sprite ids representing a particular guest animation.
|
||||
*/
|
||||
getAnimationSpriteIds(animation: GuestAnimation, rotation: number): number[];
|
||||
|
||||
/**
|
||||
* The animation the guest is currently exhibiting.
|
||||
*/
|
||||
animation: GuestAnimation;
|
||||
|
||||
/**
|
||||
* The frame offset in the current animation.
|
||||
*/
|
||||
animationOffset: number;
|
||||
|
||||
/**
|
||||
* The total number of frames in the current animation.
|
||||
*/
|
||||
readonly animationLength: number;
|
||||
|
||||
/**
|
||||
* The ride ID of the guest's favourite ride.
|
||||
*/
|
||||
favouriteRide: number | null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2927,6 +3107,158 @@ declare global {
|
|||
"excited_deprecated" |
|
||||
"here_we_are";
|
||||
|
||||
type GuestItemType =
|
||||
"balloon" |
|
||||
"hat" |
|
||||
"map" |
|
||||
"sunglasses" |
|
||||
"toy" |
|
||||
"tshirt" |
|
||||
"umbrella" |
|
||||
"photo1" |
|
||||
"photo2" |
|
||||
"photo3" |
|
||||
"photo4" |
|
||||
"voucher" |
|
||||
"beef_noodles" |
|
||||
"burger" |
|
||||
"candyfloss" |
|
||||
"chicken" |
|
||||
"chips" |
|
||||
"chocolate" |
|
||||
"cookie" |
|
||||
"doughnut" |
|
||||
"hot_dog" |
|
||||
"fried_rice_noodles" |
|
||||
"funnel_cake" |
|
||||
"ice_cream" |
|
||||
"meatball_soup" |
|
||||
"pizza" |
|
||||
"popcorn" |
|
||||
"pretzel" |
|
||||
"roast_sausage" |
|
||||
"sub_sandwich" |
|
||||
"tentacle" |
|
||||
"toffee_apple" |
|
||||
"wonton_soup" |
|
||||
"coffee" |
|
||||
"drink" |
|
||||
"fruit_juice" |
|
||||
"iced_tea" |
|
||||
"lemonade" |
|
||||
"soybean_milk" |
|
||||
"sujeonggwa" |
|
||||
"empty_bottle" |
|
||||
"empty_bowl_blue" |
|
||||
"empty_bowl_red" |
|
||||
"empty_box" |
|
||||
"empty_burger_box" |
|
||||
"empty_can" |
|
||||
"empty_cup" |
|
||||
"empty_drink_carton" |
|
||||
"empty_juice_cup" |
|
||||
"rubbish";
|
||||
|
||||
type VoucherType =
|
||||
"entry_free" |
|
||||
"entry_half_price" |
|
||||
"ride_free" |
|
||||
"food_drink_free";
|
||||
|
||||
/**
|
||||
* Represents an item in a guest's possession.
|
||||
* If giving a guest a photo or voucher, use the other interfaces instead.
|
||||
*/
|
||||
interface GuestItem {
|
||||
/**
|
||||
* The type of item.
|
||||
*/
|
||||
readonly type: GuestItemType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents an on-ride photo in a guest's possession.
|
||||
*/
|
||||
interface GuestPhoto extends GuestItem {
|
||||
readonly type: "photo1" | "photo2" | "photo3" | "photo4";
|
||||
/**
|
||||
* The id of the ride the on-ride photo is for.
|
||||
*/
|
||||
readonly rideId: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a voucher in a guest's possession. If giving a guest a voucher for free rides
|
||||
* or free food/drink, use the other interfaces instead.
|
||||
*/
|
||||
interface Voucher extends GuestItem {
|
||||
readonly type: "voucher";
|
||||
/**
|
||||
* The type of voucher.
|
||||
*/
|
||||
readonly voucherType: VoucherType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a voucher for a free ride in a guest's possession.
|
||||
*/
|
||||
interface RideVoucher extends Voucher {
|
||||
readonly voucherType: "ride_free";
|
||||
/**
|
||||
* The id of the ride the voucher is for.
|
||||
*/
|
||||
readonly rideId: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a voucher for free food or drink in a guest's possession.
|
||||
*/
|
||||
interface FoodDrinkVoucher extends Voucher {
|
||||
readonly voucherType: "food_drink_free";
|
||||
/**
|
||||
* The type of food or drink the voucher is for.
|
||||
*/
|
||||
readonly item: GuestItemType;
|
||||
}
|
||||
|
||||
type StaffCostume =
|
||||
"none" |
|
||||
"handyman" |
|
||||
"mechanic" |
|
||||
"security1" |
|
||||
"security2" |
|
||||
"panda" |
|
||||
"tiger" |
|
||||
"elephant" |
|
||||
"roman" |
|
||||
"gorilla" |
|
||||
"snowman" |
|
||||
"knight" |
|
||||
"astronaut" |
|
||||
"bandit" |
|
||||
"sheriff" |
|
||||
"pirate";
|
||||
|
||||
type StaffAnimation =
|
||||
"walking" |
|
||||
"watchRide" |
|
||||
"wave" |
|
||||
"hanging" |
|
||||
"staffMower" |
|
||||
"staffSweep" |
|
||||
"drowning" |
|
||||
"staffAnswerCall" |
|
||||
"staffAnswerCall2" |
|
||||
"staffCheckBoard" |
|
||||
"staffFix" |
|
||||
"staffFix2" |
|
||||
"staffFixGround" |
|
||||
"staffFix3" |
|
||||
"staffWatering" |
|
||||
"joy" |
|
||||
"staffEmptyBin" |
|
||||
"wave2";
|
||||
|
||||
/**
|
||||
* Represents a staff member.
|
||||
*/
|
||||
|
@ -2937,14 +3269,19 @@ declare global {
|
|||
staffType: StaffType;
|
||||
|
||||
/**
|
||||
* Colour of the staff member. Not applicable for entertainers.
|
||||
* Colour of the staff member. Not applicable to entertainers.
|
||||
*/
|
||||
colour: number;
|
||||
|
||||
/**
|
||||
* The entertainer's costume, only applicable for entertainers.
|
||||
* Array of costumes available to this particular staff member.
|
||||
*/
|
||||
costume: number;
|
||||
readonly availableCostumes: StaffCostume[];
|
||||
|
||||
/**
|
||||
* The staff member's costume.
|
||||
*/
|
||||
costume: StaffCostume | string | number;
|
||||
|
||||
/**
|
||||
* The enabled jobs the staff can do, e.g. sweep litter, water plants, inspect rides etc.
|
||||
|
@ -2955,6 +3292,31 @@ declare global {
|
|||
* Gets the patrol area for the staff member.
|
||||
*/
|
||||
readonly patrolArea: PatrolArea;
|
||||
|
||||
/**
|
||||
* The animations available to this staff member.
|
||||
*/
|
||||
readonly availableAnimations: StaffAnimation[];
|
||||
|
||||
/**
|
||||
* Gets an array of sprite ids representing a particular staff animation.
|
||||
*/
|
||||
getAnimationSpriteIds(animation: StaffAnimation, rotation: number): number[];
|
||||
|
||||
/**
|
||||
* The animation the staff member is currently exhibiting.
|
||||
*/
|
||||
animation: StaffAnimation;
|
||||
|
||||
/**
|
||||
* The frame offset in the current animation.
|
||||
*/
|
||||
animationOffset: number;
|
||||
|
||||
/**
|
||||
* The total number of frames in the current animation.
|
||||
*/
|
||||
readonly animationLength: number;
|
||||
}
|
||||
|
||||
type StaffType = "handyman" | "mechanic" | "security" | "entertainer";
|
||||
|
@ -3464,8 +3826,9 @@ declare global {
|
|||
|
||||
/**
|
||||
* The amount of funding currently spent on research.
|
||||
* 0: none, 1: minimum, 2: normal, 3: maximum
|
||||
*/
|
||||
funding: ResearchFundingLevel;
|
||||
funding: number;
|
||||
|
||||
/**
|
||||
* The categories of research which should be prioritised.
|
||||
|
@ -3515,7 +3878,7 @@ declare global {
|
|||
* E.g. gentle rides, thrill rides, shops etc.
|
||||
* Note: Any updates to this field are ignored by OpenRCT2, the category will be derived from the ride type.
|
||||
*/
|
||||
readonly category?: ResearchCategory;
|
||||
readonly category: RideResearchCategory;
|
||||
|
||||
/**
|
||||
* The ride type. Each vehicle can have a seperate invention for each ride type.
|
||||
|
@ -3529,7 +3892,7 @@ declare global {
|
|||
}
|
||||
|
||||
interface SceneryResearchItem {
|
||||
readonly category?: "scenery_group";
|
||||
readonly category: "scenery";
|
||||
readonly type: "scenery";
|
||||
|
||||
/**
|
||||
|
@ -3538,23 +3901,15 @@ declare global {
|
|||
readonly object: number;
|
||||
}
|
||||
|
||||
type ResearchItemType = "scenery" | "ride";
|
||||
|
||||
type ResearchCategory =
|
||||
type RideResearchCategory =
|
||||
"transport" |
|
||||
"gentle" |
|
||||
"rollercoaster" |
|
||||
"thrill" |
|
||||
"water" |
|
||||
"shop" |
|
||||
"scenery";
|
||||
"shop";
|
||||
|
||||
enum ResearchFundingLevel {
|
||||
None,
|
||||
Minimum,
|
||||
Normal,
|
||||
Maximum
|
||||
}
|
||||
type ResearchCategory = RideResearchCategory | "scenery";
|
||||
|
||||
type ResearchFundingStage =
|
||||
"initial_research" |
|
||||
|
@ -3999,25 +4354,29 @@ declare global {
|
|||
ButtonWidget | CheckboxWidget | ColourPickerWidget | CustomWidget | DropdownWidget | GroupBoxWidget |
|
||||
LabelWidget | ListViewWidget | SpinnerWidget | TextBoxWidget | ViewportWidget;
|
||||
|
||||
type IconName = "arrow_down" | "arrow_up" | "chat" | "cheats" | "copy" | "empty" | "eyedropper" |
|
||||
"fast_forward" | "game_speed_indicator" | "game_speed_indicator_double" | "glassy_recolourable" |
|
||||
"hide_full" | "hide_partial" | "hide_scenery" | "hide_supports" | "hide_vegetation" | "hide_vehicles" |
|
||||
"large_scenery" | "legacy_paths" | "link_chain" | "logo" | "logo_text" | "map_east" |
|
||||
"map_east_pressed" | "map_gen_land" | "map_gen_noise" | "map_gen_trees" | "map_north" |
|
||||
"map_north_pressed" | "map_south" | "map_south_pressed" | "map_west" | "map_west_pressed" |
|
||||
"mountain_tool_even" | "mountain_tool_odd" | "multiplayer" | "multiplayer_desync" | "multiplayer_sync" |
|
||||
"multiplayer_toolbar" | "multiplayer_toolbar_pressed" | "mute" | "mute_pressed" | "news_messages" |
|
||||
"normal_selection_6x6" | "palette_invisible" | "palette_invisible_pressed" | "paste" | "path_railings" | "path_surfaces" | "paths" | "placeholder" |
|
||||
"rct1_close_off" | "rct1_close_off_pressed" | "rct1_close_on" | "rct1_close_on_pressed" | "rct1_open_off" |
|
||||
"rct1_open_off_pressed" | "rct1_open_on" | "rct1_open_on_pressed" | "rct1_simulate_off" |
|
||||
"rct1_simulate_off_pressed" | "rct1_simulate_on" | "rct1_simulate_on_pressed" | "rct1_test_off" |
|
||||
"rct1_test_off_pressed" | "rct1_test_on" | "rct1_test_on_pressed" | "reload" | "ride_stations" |
|
||||
"scenery_scatter_high" | "scenery_scatter_low" | "scenery_scatter_medium" | "search" |
|
||||
"selection_edge_ne" | "selection_edge_nw" | "selection_edge_se" | "selection_edge_sw" |
|
||||
"server_password" | "sideways_tab" | "sideways_tab_active" | "simulate" | "small_scenery" | "sort" |
|
||||
"terrain_edges" | "title_play" | "title_restart" | "title_skip" | "title_stop" | "unmute" |
|
||||
"unmute_pressed" | "view" | "zoom_in" | "zoom_in_background" | "zoom_out" | "zoom_out_background";
|
||||
|
||||
type IconName =
|
||||
"arrow_down" | "arrow_up" | "award" | "awards" | "chain_lift" | "chat" | "cheats" | "closed" | "construction" |
|
||||
"copy" | "demolish" | "empty" | "eyedropper" | "fast_forward" | "finance" | "floppy_disk" | "game_speed_indicator" |
|
||||
"game_speed_indicator_double" | "glassy_recolourable" | "graph" | "guest_inventory" | "guests" |
|
||||
"hearing" | "hide_full" | "hide_partial" | "hide_scenery" | "hide_supports" | "hide_vegetation" | "hide_vehicles" |
|
||||
"kiosks_and_facilities" | "large_scenery" | "legacy_paths" | "link_chain" | "locate" | "logo" | "logo_text" | "map" |
|
||||
"map_east" | "map_east_pressed" | "map_gen_land" | "map_gen_noise" | "map_gen_trees" | "map_north" | "map_north_pressed" |
|
||||
"map_south" | "map_south_pressed" | "map_west" | "map_west_pressed" | "mechanic" | "mirror_arrow" |
|
||||
"mountain_tool_even" | "mountain_tool_odd" | "multiplayer" | "multiplayer_desync" | "multiplayer_sync" |
|
||||
"multiplayer_toolbar" | "multiplayer_toolbar_pressed" | "music" | "mute" | "mute_pressed" | "news_messages" |
|
||||
"new_ride" | "next" | "no_entry" | "open" | "paintbrush" | "palette_invisible" | "palette_invisible_pressed" | "park" |
|
||||
"paste" | "path_railings" | "path_surfaces" | "paths" | "patrol" | "pause" | "pickup" | "placeholder" | "previous" |
|
||||
"question" | "rct1_close_off" | "rct1_close_off_pressed" | "rct1_close_on" | "rct1_close_on_pressed" | "rct1_open_off" |
|
||||
"rct1_open_off_pressed" | "rct1_open_on" | "rct1_open_on_pressed" | "rct1_simulate_off" | "rct1_simulate_off_pressed" |
|
||||
"rct1_simulate_on" | "rct1_simulate_on_pressed" | "rct1_test_off" | "rct1_test_off_pressed" | "rct1_test_on" |
|
||||
"rct1_test_on_pressed" | "reload" | "rename" | "research" | "ride" | "ride_stations" | "rides_gentle" |
|
||||
"rides_rollercoasters" | "rides_shop" | "rides_thrill" | "rides_transport" | "rides_water" | "rotate_arrow" | "scenery" |
|
||||
"scenery_cluster" | "scenery_paths" | "scenery_paths_items" | "scenery_scatter_high" | "scenery_scatter_low" |
|
||||
"scenery_scatter_medium" | "scenery_signage" | "scenery_statues" | "scenery_trees" | "scenery_urban" | "scenery_walls" |
|
||||
"search" | "selection_edge_ne" | "selection_edge_nw" | "selection_edge_se" | "selection_edge_sw" | "server_password" |
|
||||
"shops_and_stalls" | "sideways_tab" | "sideways_tab_active" | "simulate" | "small_scenery" | "sort" | "stats" | "testing" |
|
||||
"terrain_edges" | "title_play" | "title_restart" | "title_skip" | "title_stop" | "unmute" | "unmute_pressed" | "view" |
|
||||
"water" | "zoom_in" | "zoom_in_background" | "zoom_out" | "zoom_out_background";
|
||||
|
||||
interface WidgetBase {
|
||||
readonly window: Window;
|
||||
|
@ -4803,4 +5162,11 @@ declare global {
|
|||
getAllObjects(type: "scenery_group"): SceneryGroupObject[];
|
||||
getAllObjects(type: "music"): LoadedObject[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface to handle the plugin manager
|
||||
*/
|
||||
interface PluginManager {
|
||||
readonly plugins: PluginMetadata[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Last updated: 2023-12-31
|
||||
Release version: 0.4.7
|
||||
Last updated: 2024-05-05
|
||||
Release version: 0.4.11
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<RuntimeLibrary Condition="'$(UseSharedLibs)'=='true'">MultiThreadedDLL</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<AdditionalOptions>/utf-8 /std:c++17 /permissive- /Zc:externConstexpr</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<LargeAddressAware Condition="'$(Platform)'=='Win32'">true</LargeAddressAware>
|
||||
|
@ -86,7 +86,7 @@
|
|||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||
<AdditionalDependencies>brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>brotlicommon.lib;brotlidec.lib;brotlienc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(Breakpad)'=='true' and ('$(Platform)'=='Win32' or '$(Platform)'=='x64')">libbreakpadd.lib;libbreakpad_clientd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>bz2d.lib;discord-rpc.lib;flac.lib;freetyped.lib;libpng16d.lib;ogg.lib;speexdsp.lib;SDL2-staticd.lib;vorbis.lib;vorbisfile.lib;zip.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
|
@ -107,7 +107,7 @@
|
|||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>brotlicommon.lib;brotlidec.lib;brotlienc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(Breakpad)'=='true' and ('$(Platform)'=='Win32' or '$(Platform)'=='x64')">libbreakpad.lib;libbreakpad_client.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>bz2.lib;discord-rpc.lib;flac.lib;freetype.lib;libpng16.lib;ogg.lib;speexdsp.lib;SDL2-static.lib;vorbis.lib;vorbisfile.lib;zip.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
|
|
|
@ -37,22 +37,22 @@
|
|||
<!-- 3rd party libraries / dependencies -->
|
||||
<PropertyGroup>
|
||||
<DependenciesCheckFile>$(RootDir).dependencies</DependenciesCheckFile>
|
||||
<LibsUrl Condition="'$(Platform)'=='Win32'">https://github.com/OpenRCT2/Dependencies/releases/download/v34/openrct2-libs-v34-x86-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='Win32'">5173c04611c94da44af0db9e099edca2d6a7b829</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='x64'">https://github.com/OpenRCT2/Dependencies/releases/download/v34/openrct2-libs-v34-x64-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='x64'">930df83ef49d91b1ef886f5dbf0a9cb61d704a50</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='ARM64'">https://github.com/OpenRCT2/Dependencies/releases/download/v34/openrct2-libs-v34-arm64-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='ARM64'">bd338aa3da9a357fb996dcaa6cea02c4f906718c</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='ARM64'">https://github.com/OpenRCT2/Dependencies/releases/download/v35/openrct2-libs-v35-arm64-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='ARM64'">89f119395c4347f25427990eb47ea8f57bba95d8</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='x64'">https://github.com/OpenRCT2/Dependencies/releases/download/v35/openrct2-libs-v35-x64-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='x64'">1303b2423be26f40bdb75fa2c91f1bc7ef1de1ed</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='Win32'">https://github.com/OpenRCT2/Dependencies/releases/download/v35/openrct2-libs-v35-x86-windows-static.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='Win32'">f3636b530110c7592deab23ca0d0c1916fc7e44c</LibsSha1>
|
||||
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.6/title-sequences.zip</TitleSequencesUrl>
|
||||
<TitleSequencesSha1>80fefc6ebbabc42a6f4703412daa5c62f661420d</TitleSequencesSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.3.13/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>15a60424d5f4f0b94ac07763b6967ba0e6ae3a7d</ObjectsSha1>
|
||||
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.3/opensound.zip</OpenSFXUrl>
|
||||
<OpenSFXSha1>ffec5a97bd5035860c4c9a43fe32cf51886478e3</OpenSFXSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.6/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>49852246ba3d3a44f143e0c4de8f4d2e8f950c10</ObjectsSha1>
|
||||
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.5/opensound.zip</OpenSFXUrl>
|
||||
<OpenSFXSha1>b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb</OpenSFXSha1>
|
||||
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.5/openmusic.zip</OpenMSXUrl>
|
||||
<OpenMSXSha1>f3c707e576281758637598ce68880416891fe5f9</OpenMSXSha1>
|
||||
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.78/replays.zip</ReplaysUrl>
|
||||
<ReplaysSha1>31C5D07EED8481D5C6D57F9E4FE9443AAEDE7739</ReplaysSha1>
|
||||
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.79/replays.zip</ReplaysUrl>
|
||||
<ReplaysSha1>34457077DBA9448A08FF6AC95E5CB92D65252E0C</ReplaysSha1>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -107,8 +107,10 @@
|
|||
</Target>
|
||||
|
||||
<!-- Target to build g2.dat containing OpenRCT2 sprites -->
|
||||
<!-- Only Arm64 machines will build g2.dat for Arm64 -->
|
||||
<!-- Note: Arm64 machines can build for x86, x64 and Arm64 -->
|
||||
<Target Name="g2" AfterTargets="Build" Inputs="@(g2Inputs)" Outputs="$(g2Output)"
|
||||
Condition="'$(TestConfig)'!='true' and '$(Platform)'!='ARM64'">
|
||||
Condition="'$(TestConfig)'!='true' and ('$(Platform)'!='ARM64' or '$(PROCESSOR_ARCHITECTURE)'=='ARM64')">
|
||||
<Message Text="Building g2.dat..." Importance="high" />
|
||||
<Exec Command=""$(OutputExe)" sprite build "$(g2Output)" "$(RootDir)resources\g2\sprites.json""
|
||||
StandardOutputImportance="normal" />
|
||||
|
|
14
readme.md
|
@ -19,7 +19,7 @@
|
|||
### Download
|
||||
| Latest release | Latest development build |
|
||||
|-----------------------------------------------------------------------------------------------------------------------|--------------------------|
|
||||
| [![OpenRCT2.org](https://img.shields.io/badge/master-v0.4.7-green.svg)](https://openrct2.org/downloads/master/latest) | [![OpenRCT2.org](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.org/downloads/develop/latest) |
|
||||
| [![OpenRCT2.org](https://img.shields.io/badge/master-v0.4.11-green.svg)](https://openrct2.org/downloads/master/latest) | [![OpenRCT2.org](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.org/downloads/develop/latest) |
|
||||
|
||||
---
|
||||
|
||||
|
@ -135,7 +135,7 @@ OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play. It can be bo
|
|||
<details>
|
||||
<summary>Linux prerequisites</summary>
|
||||
|
||||
- gcc (>= 7.1) or clang (>= 8.0.0) (for C++17 support)
|
||||
- gcc (>= 8.0) or clang (>= 10.0) (for C++20 support)
|
||||
- sdl2 (only for UI client)
|
||||
- freetype (can be disabled)
|
||||
- fontconfig (can be disabled)
|
||||
|
@ -165,12 +165,14 @@ OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play. It can be bo
|
|||
1. Check out the repository, this can be done using [GitHub Desktop](https://desktop.github.com) or [other tools](https://help.github.com/articles/which-remote-url-should-i-use)
|
||||
2. Open a new Developer Command Prompt for VS 2022
|
||||
3. Navigate to the repository (e.g. `cd C:\GitHub\OpenRCT2`)
|
||||
4. To build the 64-bit version, use `msbuild openrct2.proj /t:build /p:platform=x64`
|
||||
|
||||
To build the 32-bit version, use `msbuild openrct2.proj /t:build /p:platform=Win32`
|
||||
4. To build the x64 version, use `msbuild openrct2.proj /t:build /p:platform=x64`
|
||||
To build the x86 version, use `msbuild openrct2.proj /t:build /p:platform=Win32`
|
||||
To build the Arm64 version, use `msbuild openrct2.proj /t:build /p:platform=arm64`
|
||||
|
||||
**Note:** The file `g2.dat` may not be generated on cross-compilation (e.g. building for Arm64 on a x64 machine). In this case `g2.dat` must be copied from a x86/x64 build.
|
||||
5. Run the game, `bin\openrct2`
|
||||
|
||||
Once you have ran msbuild once, further development can be done within Visual Studio by opening `openrct2.sln`. Make sure to select the correct target platform for which you ran the build in point #3 (`Win32` for the 32-bit version, `x64` for the 64-bit version), otherwise the build will fail in Visual Studio.
|
||||
Once you have ran msbuild once, further development can be done within Visual Studio by opening `openrct2.sln`. Make sure to select the correct target platform for which you ran the build in point #3 (`Win32` for the x86 version, `x64` for the x64 version, `arm64` for the Arm64 version), otherwise the build will fail in Visual Studio.
|
||||
|
||||
Other examples:
|
||||
```
|
||||
|
|
|
@ -45,7 +45,7 @@ BEGIN
|
|||
VALUE "CompanyName", "OpenRCT2 Team"
|
||||
VALUE "FileDescription", "Main executable for OpenRCT2"
|
||||
VALUE "FileVersion", OPENRCT2_PRODUCT_VERSION
|
||||
VALUE "LegalCopyright", "Copyright (c) 2014-2023 OpenRCT2 developers"
|
||||
VALUE "LegalCopyright", "Copyright (c) 2014-2024 OpenRCT2 developers"
|
||||
VALUE "ProductName", "OpenRCT2"
|
||||
VALUE "ProductVersion", OPENRCT2_PRODUCT_VERSION
|
||||
END
|
||||
|
|
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 317 B |
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1021 B |
After Width: | Height: | Size: 1.5 KiB |
|
@ -6,7 +6,7 @@ set -e
|
|||
# It should be dot sourced into your environment
|
||||
if [[ "$GITHUB_ACTIONS" != "true" ]]; then
|
||||
export OPENRCT2_BUILD_SERVER=$(hostname)
|
||||
export OPENRCT2_VERSION=0.4.7
|
||||
export OPENRCT2_VERSION=0.4.11
|
||||
GITHUB_REF=$(git rev-parse --symbolic-full-name HEAD)
|
||||
GITHUB_SHA=$(git rev-parse HEAD)
|
||||
fi
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
compileSdk 34
|
||||
buildToolsVersion "34.0.0"
|
||||
ndkVersion "26.1.10909125" // Latest r26b (LTS), to be synced with CI container image
|
||||
ndkVersion "26.2.11394342" // Latest r26c (LTS), to be synced with CI container image
|
||||
namespace "io.openrct2"
|
||||
defaultConfig {
|
||||
applicationId 'io.openrct2'
|
||||
minSdkVersion 19
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 28
|
||||
|
||||
versionCode 2
|
||||
versionName '0.4.7'
|
||||
versionName '0.4.11'
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments '-DANDROID_STL=c++_shared'
|
||||
targets 'openrct2', 'openrct2-ui', 'openrct2-cli'
|
||||
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||
abiFilters 'armeabi-v7a', 'arm64-v8a'
|
||||
abiFilters 'arm64-v8a', 'x86_64'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,9 @@ android {
|
|||
|
||||
sourceSets.main {
|
||||
jniLibs.srcDir 'libs'
|
||||
java {
|
||||
srcDir 'src/main/java'
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
@ -42,8 +45,8 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'commons-io:commons-io:2.6'
|
||||
implementation 'androidx.appcompat:appcompat:1.4.0'
|
||||
implementation 'commons-io:commons-io:2.13.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
}
|
||||
|
||||
|
|
|
@ -4,10 +4,6 @@ project(openrct2-android CXX)
|
|||
|
||||
set(CMAKE_VERBOSE_MAKEFILE on)
|
||||
|
||||
set(lib_src_DIR ${CMAKE_SOURCE_DIR}/../../../libs)
|
||||
set(lib_build_DIR $ENV{HOME}/tmp)
|
||||
file(MAKE_DIRECTORY ${lib_build_DIR})
|
||||
|
||||
set(DEBUG_LEVEL 0 CACHE STRING "Select debug level for compilation. Use value in range 0–3.")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG=${DEBUG_LEVEL}")
|
||||
|
||||
|
@ -24,7 +20,7 @@ endif()
|
|||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(libs
|
||||
URL https://github.com/OpenRCT2/openrct2-dependencies-android/releases/download/v0.9/openrct2-libs-android-${ANDROID_ABI}.tar.gz
|
||||
URL https://github.com/OpenRCT2/openrct2-dependencies-android/releases/download/v11/${ANDROID_ABI}-android-dynamic.tar.zst
|
||||
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/libs"
|
||||
|
||||
|
@ -33,16 +29,24 @@ ExternalProject_Add(libs
|
|||
INSTALL_COMMAND ""
|
||||
|
||||
BUILD_BYPRODUCTS
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}crypto${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}vorbis${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}vorbisfile${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}FLAC${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}brotlidec${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}brotlicommon${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}ogg${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}bz2${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}freetype${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}png16${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2-2.0${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2main${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}speexdsp${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icui18n${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icuuc${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icudata${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}ssl${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}crypto${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icudata${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icui18n${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icuuc${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}z${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2main${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
|
||||
LOG_DOWNLOAD 1
|
||||
LOG_UPDATE 1
|
||||
|
@ -58,11 +62,22 @@ add_custom_command(TARGET libs POST_BUILD
|
|||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/*.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libcrypto.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libvorbis.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libvorbisfile.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libFLAC.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libbrotlidec.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libbrotlicommon.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libogg.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libbz2.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libicudata.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libicuuc.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libicui18n.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libfreetype.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libpng16.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libSDL2-2.0.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libSDL2.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libspeexdsp.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libssl.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/libs/lib/libz.so" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
)
|
||||
|
||||
add_library(freetype SHARED IMPORTED)
|
||||
|
@ -77,9 +92,15 @@ set_target_properties(png PROPERTIES IMPORTED_LOCATION
|
|||
)
|
||||
add_dependencies(png libs)
|
||||
|
||||
add_library(z SHARED IMPORTED)
|
||||
set_target_properties(z PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}z${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(z libs)
|
||||
|
||||
add_library(SDL2 SHARED IMPORTED)
|
||||
set_target_properties(SDL2 PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2-2.0${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(SDL2 libs)
|
||||
|
||||
|
@ -97,19 +118,19 @@ add_dependencies(speexdsp libs)
|
|||
|
||||
add_library(icu STATIC IMPORTED)
|
||||
set_target_properties(icu PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icui18n${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icui18n${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(icu libs)
|
||||
|
||||
add_library(icuuc STATIC IMPORTED)
|
||||
set_target_properties(icuuc PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icuuc${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icuuc${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(icuuc libs)
|
||||
|
||||
add_library(icudata STATIC IMPORTED)
|
||||
set_target_properties(icudata PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_STATIC_LIBRARY_PREFIX}icudata${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}icudata${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(icudata libs)
|
||||
|
||||
|
@ -125,13 +146,58 @@ set_target_properties(crypto PROPERTIES IMPORTED_LOCATION
|
|||
)
|
||||
add_dependencies(crypto libs)
|
||||
|
||||
add_library(vorbis SHARED IMPORTED)
|
||||
set_target_properties(vorbis PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}vorbis${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(vorbis libs)
|
||||
|
||||
add_library(vorbisfile SHARED IMPORTED)
|
||||
set_target_properties(vorbisfile PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}vorbisfile${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(vorbisfile libs)
|
||||
|
||||
add_library(FLAC SHARED IMPORTED)
|
||||
set_target_properties(FLAC PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}FLAC${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(FLAC libs)
|
||||
|
||||
add_library(brotlidec SHARED IMPORTED)
|
||||
set_target_properties(brotlidec PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}brotlidec${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(brotlidec libs)
|
||||
|
||||
add_library(brotlicommon SHARED IMPORTED)
|
||||
set_target_properties(brotlicommon PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}brotlicommon${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(brotlicommon libs)
|
||||
|
||||
add_library(ogg SHARED IMPORTED)
|
||||
set_target_properties(ogg PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}ogg${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(ogg libs)
|
||||
|
||||
add_library(bz2 SHARED IMPORTED)
|
||||
set_target_properties(bz2 PROPERTIES IMPORTED_LOCATION
|
||||
${CMAKE_BINARY_DIR}/libs/lib/${CMAKE_SHARED_LIBRARY_PREFIX}bz2${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
add_dependencies(bz2 libs)
|
||||
|
||||
|
||||
include_directories(SYSTEM "${CMAKE_BINARY_DIR}/libs/include")
|
||||
include_directories(SYSTEM "${CMAKE_BINARY_DIR}/libs/include/freetype2")
|
||||
include_directories(SYSTEM "${CMAKE_BINARY_DIR}/libs/include/SDL2")
|
||||
|
||||
# now build app's shared lib
|
||||
add_definitions(-DDISABLE_HTTP -DDISABLE_DISCORD_RPC -DDISABLE_HTTP -DDISABLE_NETWORK -DDISABLE_FLAC -DDISABLE_VORBIS -DDISABLE_OPENGL -DGL_GLEXT_PROTOTYPES -D__STDC_LIMIT_MACROS -DNO_TTF -DSDL_MAIN_HANDLED)
|
||||
add_definitions(-DDISABLE_DISCORD_RPC -DDISABLE_OPENGL -DGL_GLEXT_PROTOTYPES -D__STDC_LIMIT_MACROS -DNO_TTF -DSDL_MAIN_HANDLED)
|
||||
|
||||
# Enable scripting
|
||||
add_definitions(-DENABLE_SCRIPTING)
|
||||
|
||||
# Fix SpeexDSP compilation
|
||||
add_definitions(-DHAVE_STDINT_H)
|
||||
|
@ -143,9 +209,12 @@ set(COMMON_COMPILE_OPTIONS "${COMMON_COMPILE_OPTIONS} -fPIC")
|
|||
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++1z ${COMMON_COMPILE_OPTIONS} -Wnon-virtual-dtor")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++20 ${COMMON_COMPILE_OPTIONS} -Wnon-virtual-dtor")
|
||||
get_filename_component(ORCT2_ROOT "${CMAKE_SOURCE_DIR}/../../../../../" REALPATH)
|
||||
|
||||
# Enable char8_t<->char conversion
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-char8_t -Wno-deprecated-declarations")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${ORCT2_ROOT}/cmake")
|
||||
|
||||
find_package(CCache)
|
||||
|
@ -160,6 +229,7 @@ if (CCache_FOUND)
|
|||
endif (CCache_FOUND)
|
||||
|
||||
file(GLOB_RECURSE LIBOPENRCT2_SOURCES
|
||||
"${ORCT2_ROOT}/src/thirdparty/duktape/duktape.cpp"
|
||||
"${ORCT2_ROOT}/src/openrct2/*.cpp"
|
||||
"${ORCT2_ROOT}/src/openrct2/*.h"
|
||||
"${ORCT2_ROOT}/src/openrct2/*.hpp")
|
||||
|
@ -180,20 +250,20 @@ file(GLOB_RECURSE OPENRCT2_CLI_SOURCES
|
|||
"${ORCT2_ROOT}/src/openrct2-cli/*.hpp")
|
||||
|
||||
add_library(openrct2 SHARED ${LIBOPENRCT2_SOURCES})
|
||||
target_link_libraries(openrct2 android stdc++ log dl z SDL2 png icu icuuc icudata)# ssl crypto)
|
||||
target_link_libraries(openrct2 android stdc++ log dl SDL2 png z icu icuuc icudata crypto ssl)
|
||||
|
||||
add_library(openrct2-ui SHARED ${OPENRCT2_GUI_SOURCES})
|
||||
target_link_libraries(openrct2-ui openrct2 android stdc++ GLESv1_CM GLESv2 SDL2main speexdsp)
|
||||
target_link_libraries(openrct2-ui openrct2 android stdc++ GLESv1_CM GLESv2 SDL2main speexdsp brotlicommon brotlidec bz2 freetype ogg vorbis vorbisfile FLAC)
|
||||
|
||||
add_executable(openrct2-cli ${OPENRCT2_CLI_SOURCES})
|
||||
target_link_libraries(openrct2-cli openrct2 android stdc++ GLESv1_CM GLESv2)
|
||||
|
||||
target_include_directories(openrct2 PRIVATE "${ORCT2_ROOT}/src/thirdparty/duktape/")
|
||||
target_include_directories(openrct2 SYSTEM PRIVATE "${ORCT2_ROOT}/src/thirdparty")
|
||||
target_include_directories(openrct2-ui PRIVATE "${ORCT2_ROOT}/src/thirdparty/duktape/")
|
||||
target_include_directories(openrct2-ui PRIVATE "${ORCT2_ROOT}/src")
|
||||
target_include_directories(openrct2-ui SYSTEM PRIVATE "${ORCT2_ROOT}/src/thirdparty")
|
||||
target_include_directories(openrct2-cli PRIVATE "${ORCT2_ROOT}/src")
|
||||
|
||||
# Header-only nlohmann library is installed in CI images at /nlohmann.
|
||||
# To be tiny bit more specific, use '/nlohmann/../' instead of just '/'
|
||||
target_include_directories(openrct2 PRIVATE "/nlohmann/../")
|
||||
target_include_directories(openrct2-ui PRIVATE "/nlohmann/../")
|
||||
target_include_directories(openrct2 PRIVATE "/opt/openrct2/include/nlohmann/../")
|
||||
target_include_directories(openrct2-ui PRIVATE "/opt/openrct2/include/nlohmann/../")
|
||||
|
|
|
@ -80,8 +80,14 @@ public class GameActivity extends SDLActivity {
|
|||
return new String[]{
|
||||
"c++_shared",
|
||||
"speexdsp",
|
||||
"bz2",
|
||||
"freetype",
|
||||
"z",
|
||||
"png16",
|
||||
"SDL2-2.0",
|
||||
"SDL2",
|
||||
"icudata",
|
||||
"icuuc",
|
||||
"icui18n",
|
||||
|
||||
"openrct2",
|
||||
"openrct2-ui"
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
package io.openrct2;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URL;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class HttpAndroid {
|
||||
private static final String TAG = "HttpAndroid";
|
||||
|
||||
// Corresponding Java enum for the C++ 'Status' enum
|
||||
public enum Status {
|
||||
Invalid(0),
|
||||
Ok(200),
|
||||
NotFound(404);
|
||||
|
||||
private final int code;
|
||||
Status(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
// Corresponding Java enum for the C++ 'Method' enum
|
||||
public enum Method {
|
||||
GET,
|
||||
POST,
|
||||
PUT
|
||||
}
|
||||
|
||||
// Java class equivalent to the C++ 'Response' struct
|
||||
public static class Response {
|
||||
Status status;
|
||||
String contentType;
|
||||
String body;
|
||||
Map<String, List<String>> headers;
|
||||
String error;
|
||||
|
||||
}
|
||||
|
||||
// Java class equivalent to the C++ 'Request' struct
|
||||
public static class Request {
|
||||
String url;
|
||||
Map<String, String> headers;
|
||||
Method method;
|
||||
String body;
|
||||
boolean forceIPv4;
|
||||
|
||||
public Request() {
|
||||
this.method = Method.GET; // Default method
|
||||
}
|
||||
}
|
||||
|
||||
public static Response request(Request request) {
|
||||
Response response = new Response();
|
||||
response.status = Status.Invalid;
|
||||
response.error = "Request failed";
|
||||
try {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
URL url = new URL(request.url);
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod(request.method.toString());
|
||||
connection.setConnectTimeout(10000);
|
||||
connection.setReadTimeout(10000);
|
||||
connection.setUseCaches(false);
|
||||
connection.setDoInput(true);
|
||||
connection.setInstanceFollowRedirects(true);
|
||||
if (request.headers != null) {
|
||||
for (Map.Entry<String, String> entry : request.headers.entrySet()) {
|
||||
connection.setRequestProperty(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
connection.connect();
|
||||
if (request.body!= null) {
|
||||
OutputStream os = connection.getOutputStream();
|
||||
os.write(request.body.getBytes());
|
||||
os.flush();
|
||||
os.close();
|
||||
}
|
||||
int responseCode = connection.getResponseCode();
|
||||
if (responseCode == 200) {
|
||||
inputStream = connection.getInputStream();
|
||||
} else {
|
||||
inputStream = connection.getErrorStream();
|
||||
}
|
||||
// Log
|
||||
Log.d(TAG, "Request: " + request.url + ", response code: " + responseCode);
|
||||
response.status = Status.Ok;
|
||||
response.contentType = connection.getContentType();
|
||||
response.headers = connection.getHeaderFields();
|
||||
response.body = IOUtils.toString(inputStream, "UTF-8");
|
||||
response.error = null;
|
||||
return response;
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error while requesting " + request.url + ", error: " + e.getMessage(), e);
|
||||
response.error = e.getMessage();
|
||||
return response;
|
||||
} finally {
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error while requesting " + request.url, e);
|
||||
response.error = e.getMessage();
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.hardware.usb.UsbDevice;
|
||||
|
||||
interface HIDDevice
|
||||
{
|
||||
public int getId();
|
||||
public int getVendorId();
|
||||
public int getProductId();
|
||||
public String getSerialNumber();
|
||||
public int getVersion();
|
||||
public String getManufacturerName();
|
||||
public String getProductName();
|
||||
public UsbDevice getDevice();
|
||||
public boolean open();
|
||||
public int sendFeatureReport(byte[] report);
|
||||
public int sendOutputReport(byte[] report);
|
||||
public boolean getFeatureReport(byte[] report);
|
||||
public void setFrozen(boolean frozen);
|
||||
public void close();
|
||||
public void shutdown();
|
||||
}
|
|
@ -0,0 +1,650 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothGatt;
|
||||
import android.bluetooth.BluetoothGattCallback;
|
||||
import android.bluetooth.BluetoothGattCharacteristic;
|
||||
import android.bluetooth.BluetoothGattDescriptor;
|
||||
import android.bluetooth.BluetoothManager;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.bluetooth.BluetoothGattService;
|
||||
import android.hardware.usb.UsbDevice;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.os.*;
|
||||
|
||||
//import com.android.internal.util.HexDump;
|
||||
|
||||
import java.lang.Runnable;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.UUID;
|
||||
|
||||
class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDevice {
|
||||
|
||||
private static final String TAG = "hidapi";
|
||||
private HIDDeviceManager mManager;
|
||||
private BluetoothDevice mDevice;
|
||||
private int mDeviceId;
|
||||
private BluetoothGatt mGatt;
|
||||
private boolean mIsRegistered = false;
|
||||
private boolean mIsConnected = false;
|
||||
private boolean mIsChromebook = false;
|
||||
private boolean mIsReconnecting = false;
|
||||
private boolean mFrozen = false;
|
||||
private LinkedList<GattOperation> mOperations;
|
||||
GattOperation mCurrentOperation = null;
|
||||
private Handler mHandler;
|
||||
|
||||
private static final int TRANSPORT_AUTO = 0;
|
||||
private static final int TRANSPORT_BREDR = 1;
|
||||
private static final int TRANSPORT_LE = 2;
|
||||
|
||||
private static final int CHROMEBOOK_CONNECTION_CHECK_INTERVAL = 10000;
|
||||
|
||||
static public final UUID steamControllerService = UUID.fromString("100F6C32-1735-4313-B402-38567131E5F3");
|
||||
static public final UUID inputCharacteristic = UUID.fromString("100F6C33-1735-4313-B402-38567131E5F3");
|
||||
static public final UUID reportCharacteristic = UUID.fromString("100F6C34-1735-4313-B402-38567131E5F3");
|
||||
static private final byte[] enterValveMode = new byte[] { (byte)0xC0, (byte)0x87, 0x03, 0x08, 0x07, 0x00 };
|
||||
|
||||
static class GattOperation {
|
||||
private enum Operation {
|
||||
CHR_READ,
|
||||
CHR_WRITE,
|
||||
ENABLE_NOTIFICATION
|
||||
}
|
||||
|
||||
Operation mOp;
|
||||
UUID mUuid;
|
||||
byte[] mValue;
|
||||
BluetoothGatt mGatt;
|
||||
boolean mResult = true;
|
||||
|
||||
private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid) {
|
||||
mGatt = gatt;
|
||||
mOp = operation;
|
||||
mUuid = uuid;
|
||||
}
|
||||
|
||||
private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid, byte[] value) {
|
||||
mGatt = gatt;
|
||||
mOp = operation;
|
||||
mUuid = uuid;
|
||||
mValue = value;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
// This is executed in main thread
|
||||
BluetoothGattCharacteristic chr;
|
||||
|
||||
switch (mOp) {
|
||||
case CHR_READ:
|
||||
chr = getCharacteristic(mUuid);
|
||||
//Log.v(TAG, "Reading characteristic " + chr.getUuid());
|
||||
if (!mGatt.readCharacteristic(chr)) {
|
||||
Log.e(TAG, "Unable to read characteristic " + mUuid.toString());
|
||||
mResult = false;
|
||||
break;
|
||||
}
|
||||
mResult = true;
|
||||
break;
|
||||
case CHR_WRITE:
|
||||
chr = getCharacteristic(mUuid);
|
||||
//Log.v(TAG, "Writing characteristic " + chr.getUuid() + " value=" + HexDump.toHexString(value));
|
||||
chr.setValue(mValue);
|
||||
if (!mGatt.writeCharacteristic(chr)) {
|
||||
Log.e(TAG, "Unable to write characteristic " + mUuid.toString());
|
||||
mResult = false;
|
||||
break;
|
||||
}
|
||||
mResult = true;
|
||||
break;
|
||||
case ENABLE_NOTIFICATION:
|
||||
chr = getCharacteristic(mUuid);
|
||||
//Log.v(TAG, "Writing descriptor of " + chr.getUuid());
|
||||
if (chr != null) {
|
||||
BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
|
||||
if (cccd != null) {
|
||||
int properties = chr.getProperties();
|
||||
byte[] value;
|
||||
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == BluetoothGattCharacteristic.PROPERTY_NOTIFY) {
|
||||
value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE;
|
||||
} else if ((properties & BluetoothGattCharacteristic.PROPERTY_INDICATE) == BluetoothGattCharacteristic.PROPERTY_INDICATE) {
|
||||
value = BluetoothGattDescriptor.ENABLE_INDICATION_VALUE;
|
||||
} else {
|
||||
Log.e(TAG, "Unable to start notifications on input characteristic");
|
||||
mResult = false;
|
||||
return;
|
||||
}
|
||||
|
||||
mGatt.setCharacteristicNotification(chr, true);
|
||||
cccd.setValue(value);
|
||||
if (!mGatt.writeDescriptor(cccd)) {
|
||||
Log.e(TAG, "Unable to write descriptor " + mUuid.toString());
|
||||
mResult = false;
|
||||
return;
|
||||
}
|
||||
mResult = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean finish() {
|
||||
return mResult;
|
||||
}
|
||||
|
||||
private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
|
||||
BluetoothGattService valveService = mGatt.getService(steamControllerService);
|
||||
if (valveService == null)
|
||||
return null;
|
||||
return valveService.getCharacteristic(uuid);
|
||||
}
|
||||
|
||||
static public GattOperation readCharacteristic(BluetoothGatt gatt, UUID uuid) {
|
||||
return new GattOperation(gatt, Operation.CHR_READ, uuid);
|
||||
}
|
||||
|
||||
static public GattOperation writeCharacteristic(BluetoothGatt gatt, UUID uuid, byte[] value) {
|
||||
return new GattOperation(gatt, Operation.CHR_WRITE, uuid, value);
|
||||
}
|
||||
|
||||
static public GattOperation enableNotification(BluetoothGatt gatt, UUID uuid) {
|
||||
return new GattOperation(gatt, Operation.ENABLE_NOTIFICATION, uuid);
|
||||
}
|
||||
}
|
||||
|
||||
public HIDDeviceBLESteamController(HIDDeviceManager manager, BluetoothDevice device) {
|
||||
mManager = manager;
|
||||
mDevice = device;
|
||||
mDeviceId = mManager.getDeviceIDForIdentifier(getIdentifier());
|
||||
mIsRegistered = false;
|
||||
mIsChromebook = mManager.getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
|
||||
mOperations = new LinkedList<GattOperation>();
|
||||
mHandler = new Handler(Looper.getMainLooper());
|
||||
|
||||
mGatt = connectGatt();
|
||||
// final HIDDeviceBLESteamController finalThis = this;
|
||||
// mHandler.postDelayed(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// finalThis.checkConnectionForChromebookIssue();
|
||||
// }
|
||||
// }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return String.format("SteamController.%s", mDevice.getAddress());
|
||||
}
|
||||
|
||||
public BluetoothGatt getGatt() {
|
||||
return mGatt;
|
||||
}
|
||||
|
||||
// Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead
|
||||
// of TRANSPORT_LE. Let's force ourselves to connect low energy.
|
||||
private BluetoothGatt connectGatt(boolean managed) {
|
||||
if (Build.VERSION.SDK_INT >= 23 /* Android 6.0 (M) */) {
|
||||
try {
|
||||
return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE);
|
||||
} catch (Exception e) {
|
||||
return mDevice.connectGatt(mManager.getContext(), managed, this);
|
||||
}
|
||||
} else {
|
||||
return mDevice.connectGatt(mManager.getContext(), managed, this);
|
||||
}
|
||||
}
|
||||
|
||||
private BluetoothGatt connectGatt() {
|
||||
return connectGatt(false);
|
||||
}
|
||||
|
||||
protected int getConnectionState() {
|
||||
|
||||
Context context = mManager.getContext();
|
||||
if (context == null) {
|
||||
// We are lacking any context to get our Bluetooth information. We'll just assume disconnected.
|
||||
return BluetoothProfile.STATE_DISCONNECTED;
|
||||
}
|
||||
|
||||
BluetoothManager btManager = (BluetoothManager)context.getSystemService(Context.BLUETOOTH_SERVICE);
|
||||
if (btManager == null) {
|
||||
// This device doesn't support Bluetooth. We should never be here, because how did
|
||||
// we instantiate a device to start with?
|
||||
return BluetoothProfile.STATE_DISCONNECTED;
|
||||
}
|
||||
|
||||
return btManager.getConnectionState(mDevice, BluetoothProfile.GATT);
|
||||
}
|
||||
|
||||
public void reconnect() {
|
||||
|
||||
if (getConnectionState() != BluetoothProfile.STATE_CONNECTED) {
|
||||
mGatt.disconnect();
|
||||
mGatt = connectGatt();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void checkConnectionForChromebookIssue() {
|
||||
if (!mIsChromebook) {
|
||||
// We only do this on Chromebooks, because otherwise it's really annoying to just attempt
|
||||
// over and over.
|
||||
return;
|
||||
}
|
||||
|
||||
int connectionState = getConnectionState();
|
||||
|
||||
switch (connectionState) {
|
||||
case BluetoothProfile.STATE_CONNECTED:
|
||||
if (!mIsConnected) {
|
||||
// We are in the Bad Chromebook Place. We can force a disconnect
|
||||
// to try to recover.
|
||||
Log.v(TAG, "Chromebook: We are in a very bad state; the controller shows as connected in the underlying Bluetooth layer, but we never received a callback. Forcing a reconnect.");
|
||||
mIsReconnecting = true;
|
||||
mGatt.disconnect();
|
||||
mGatt = connectGatt(false);
|
||||
break;
|
||||
}
|
||||
else if (!isRegistered()) {
|
||||
if (mGatt.getServices().size() > 0) {
|
||||
Log.v(TAG, "Chromebook: We are connected to a controller, but never got our registration. Trying to recover.");
|
||||
probeService(this);
|
||||
}
|
||||
else {
|
||||
Log.v(TAG, "Chromebook: We are connected to a controller, but never discovered services. Trying to recover.");
|
||||
mIsReconnecting = true;
|
||||
mGatt.disconnect();
|
||||
mGatt = connectGatt(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Log.v(TAG, "Chromebook: We are connected, and registered. Everything's good!");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case BluetoothProfile.STATE_DISCONNECTED:
|
||||
Log.v(TAG, "Chromebook: We have either been disconnected, or the Chromebook BtGatt.ContextMap bug has bitten us. Attempting a disconnect/reconnect, but we may not be able to recover.");
|
||||
|
||||
mIsReconnecting = true;
|
||||
mGatt.disconnect();
|
||||
mGatt = connectGatt(false);
|
||||
break;
|
||||
|
||||
case BluetoothProfile.STATE_CONNECTING:
|
||||
Log.v(TAG, "Chromebook: We're still trying to connect. Waiting a bit longer.");
|
||||
break;
|
||||
}
|
||||
|
||||
final HIDDeviceBLESteamController finalThis = this;
|
||||
mHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finalThis.checkConnectionForChromebookIssue();
|
||||
}
|
||||
}, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
|
||||
}
|
||||
|
||||
private boolean isRegistered() {
|
||||
return mIsRegistered;
|
||||
}
|
||||
|
||||
private void setRegistered() {
|
||||
mIsRegistered = true;
|
||||
}
|
||||
|
||||
private boolean probeService(HIDDeviceBLESteamController controller) {
|
||||
|
||||
if (isRegistered()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!mIsConnected) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Log.v(TAG, "probeService controller=" + controller);
|
||||
|
||||
for (BluetoothGattService service : mGatt.getServices()) {
|
||||
if (service.getUuid().equals(steamControllerService)) {
|
||||
Log.v(TAG, "Found Valve steam controller service " + service.getUuid());
|
||||
|
||||
for (BluetoothGattCharacteristic chr : service.getCharacteristics()) {
|
||||
if (chr.getUuid().equals(inputCharacteristic)) {
|
||||
Log.v(TAG, "Found input characteristic");
|
||||
// Start notifications
|
||||
BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
|
||||
if (cccd != null) {
|
||||
enableNotification(chr.getUuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ((mGatt.getServices().size() == 0) && mIsChromebook && !mIsReconnecting) {
|
||||
Log.e(TAG, "Chromebook: Discovered services were empty; this almost certainly means the BtGatt.ContextMap bug has bitten us.");
|
||||
mIsConnected = false;
|
||||
mIsReconnecting = true;
|
||||
mGatt.disconnect();
|
||||
mGatt = connectGatt(false);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void finishCurrentGattOperation() {
|
||||
GattOperation op = null;
|
||||
synchronized (mOperations) {
|
||||
if (mCurrentOperation != null) {
|
||||
op = mCurrentOperation;
|
||||
mCurrentOperation = null;
|
||||
}
|
||||
}
|
||||
if (op != null) {
|
||||
boolean result = op.finish(); // TODO: Maybe in main thread as well?
|
||||
|
||||
// Our operation failed, let's add it back to the beginning of our queue.
|
||||
if (!result) {
|
||||
mOperations.addFirst(op);
|
||||
}
|
||||
}
|
||||
executeNextGattOperation();
|
||||
}
|
||||
|
||||
private void executeNextGattOperation() {
|
||||
synchronized (mOperations) {
|
||||
if (mCurrentOperation != null)
|
||||
return;
|
||||
|
||||
if (mOperations.isEmpty())
|
||||
return;
|
||||
|
||||
mCurrentOperation = mOperations.removeFirst();
|
||||
}
|
||||
|
||||
// Run in main thread
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
synchronized (mOperations) {
|
||||
if (mCurrentOperation == null) {
|
||||
Log.e(TAG, "Current operation null in executor?");
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentOperation.run();
|
||||
// now wait for the GATT callback and when it comes, finish this operation
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void queueGattOperation(GattOperation op) {
|
||||
synchronized (mOperations) {
|
||||
mOperations.add(op);
|
||||
}
|
||||
executeNextGattOperation();
|
||||
}
|
||||
|
||||
private void enableNotification(UUID chrUuid) {
|
||||
GattOperation op = HIDDeviceBLESteamController.GattOperation.enableNotification(mGatt, chrUuid);
|
||||
queueGattOperation(op);
|
||||
}
|
||||
|
||||
public void writeCharacteristic(UUID uuid, byte[] value) {
|
||||
GattOperation op = HIDDeviceBLESteamController.GattOperation.writeCharacteristic(mGatt, uuid, value);
|
||||
queueGattOperation(op);
|
||||
}
|
||||
|
||||
public void readCharacteristic(UUID uuid) {
|
||||
GattOperation op = HIDDeviceBLESteamController.GattOperation.readCharacteristic(mGatt, uuid);
|
||||
queueGattOperation(op);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////// BluetoothGattCallback overridden methods
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public void onConnectionStateChange(BluetoothGatt g, int status, int newState) {
|
||||
//Log.v(TAG, "onConnectionStateChange status=" + status + " newState=" + newState);
|
||||
mIsReconnecting = false;
|
||||
if (newState == 2) {
|
||||
mIsConnected = true;
|
||||
// Run directly, without GattOperation
|
||||
if (!isRegistered()) {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mGatt.discoverServices();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (newState == 0) {
|
||||
mIsConnected = false;
|
||||
}
|
||||
|
||||
// Disconnection is handled in SteamLink using the ACTION_ACL_DISCONNECTED Intent.
|
||||
}
|
||||
|
||||
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
|
||||
//Log.v(TAG, "onServicesDiscovered status=" + status);
|
||||
if (status == 0) {
|
||||
if (gatt.getServices().size() == 0) {
|
||||
Log.v(TAG, "onServicesDiscovered returned zero services; something has gone horribly wrong down in Android's Bluetooth stack.");
|
||||
mIsReconnecting = true;
|
||||
mIsConnected = false;
|
||||
gatt.disconnect();
|
||||
mGatt = connectGatt(false);
|
||||
}
|
||||
else {
|
||||
probeService(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
|
||||
//Log.v(TAG, "onCharacteristicRead status=" + status + " uuid=" + characteristic.getUuid());
|
||||
|
||||
if (characteristic.getUuid().equals(reportCharacteristic) && !mFrozen) {
|
||||
mManager.HIDDeviceFeatureReport(getId(), characteristic.getValue());
|
||||
}
|
||||
|
||||
finishCurrentGattOperation();
|
||||
}
|
||||
|
||||
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
|
||||
//Log.v(TAG, "onCharacteristicWrite status=" + status + " uuid=" + characteristic.getUuid());
|
||||
|
||||
if (characteristic.getUuid().equals(reportCharacteristic)) {
|
||||
// Only register controller with the native side once it has been fully configured
|
||||
if (!isRegistered()) {
|
||||
Log.v(TAG, "Registering Steam Controller with ID: " + getId());
|
||||
mManager.HIDDeviceConnected(getId(), getIdentifier(), getVendorId(), getProductId(), getSerialNumber(), getVersion(), getManufacturerName(), getProductName(), 0, 0, 0, 0);
|
||||
setRegistered();
|
||||
}
|
||||
}
|
||||
|
||||
finishCurrentGattOperation();
|
||||
}
|
||||
|
||||
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
|
||||
// Enable this for verbose logging of controller input reports
|
||||
//Log.v(TAG, "onCharacteristicChanged uuid=" + characteristic.getUuid() + " data=" + HexDump.dumpHexString(characteristic.getValue()));
|
||||
|
||||
if (characteristic.getUuid().equals(inputCharacteristic) && !mFrozen) {
|
||||
mManager.HIDDeviceInputReport(getId(), characteristic.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
|
||||
//Log.v(TAG, "onDescriptorRead status=" + status);
|
||||
}
|
||||
|
||||
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
|
||||
BluetoothGattCharacteristic chr = descriptor.getCharacteristic();
|
||||
//Log.v(TAG, "onDescriptorWrite status=" + status + " uuid=" + chr.getUuid() + " descriptor=" + descriptor.getUuid());
|
||||
|
||||
if (chr.getUuid().equals(inputCharacteristic)) {
|
||||
boolean hasWrittenInputDescriptor = true;
|
||||
BluetoothGattCharacteristic reportChr = chr.getService().getCharacteristic(reportCharacteristic);
|
||||
if (reportChr != null) {
|
||||
Log.v(TAG, "Writing report characteristic to enter valve mode");
|
||||
reportChr.setValue(enterValveMode);
|
||||
gatt.writeCharacteristic(reportChr);
|
||||
}
|
||||
}
|
||||
|
||||
finishCurrentGattOperation();
|
||||
}
|
||||
|
||||
public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
|
||||
//Log.v(TAG, "onReliableWriteCompleted status=" + status);
|
||||
}
|
||||
|
||||
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
|
||||
//Log.v(TAG, "onReadRemoteRssi status=" + status);
|
||||
}
|
||||
|
||||
public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
|
||||
//Log.v(TAG, "onMtuChanged status=" + status);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////// Public API
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return mDeviceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVendorId() {
|
||||
// Valve Corporation
|
||||
final int VALVE_USB_VID = 0x28DE;
|
||||
return VALVE_USB_VID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProductId() {
|
||||
// We don't have an easy way to query from the Bluetooth device, but we know what it is
|
||||
final int D0G_BLE2_PID = 0x1106;
|
||||
return D0G_BLE2_PID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSerialNumber() {
|
||||
// This will be read later via feature report by Steam
|
||||
return "12345";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getManufacturerName() {
|
||||
return "Valve Corporation";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProductName() {
|
||||
return "Steam Controller";
|
||||
}
|
||||
|
||||
@Override
|
||||
public UsbDevice getDevice() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sendFeatureReport(byte[] report) {
|
||||
if (!isRegistered()) {
|
||||
Log.e(TAG, "Attempted sendFeatureReport before Steam Controller is registered!");
|
||||
if (mIsConnected) {
|
||||
probeService(this);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// We need to skip the first byte, as that doesn't go over the air
|
||||
byte[] actual_report = Arrays.copyOfRange(report, 1, report.length - 1);
|
||||
//Log.v(TAG, "sendFeatureReport " + HexDump.dumpHexString(actual_report));
|
||||
writeCharacteristic(reportCharacteristic, actual_report);
|
||||
return report.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sendOutputReport(byte[] report) {
|
||||
if (!isRegistered()) {
|
||||
Log.e(TAG, "Attempted sendOutputReport before Steam Controller is registered!");
|
||||
if (mIsConnected) {
|
||||
probeService(this);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
//Log.v(TAG, "sendFeatureReport " + HexDump.dumpHexString(report));
|
||||
writeCharacteristic(reportCharacteristic, report);
|
||||
return report.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFeatureReport(byte[] report) {
|
||||
if (!isRegistered()) {
|
||||
Log.e(TAG, "Attempted getFeatureReport before Steam Controller is registered!");
|
||||
if (mIsConnected) {
|
||||
probeService(this);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//Log.v(TAG, "getFeatureReport");
|
||||
readCharacteristic(reportCharacteristic);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrozen(boolean frozen) {
|
||||
mFrozen = frozen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
close();
|
||||
|
||||
BluetoothGatt g = mGatt;
|
||||
if (g != null) {
|
||||
g.disconnect();
|
||||
g.close();
|
||||
mGatt = null;
|
||||
}
|
||||
mManager = null;
|
||||
mIsRegistered = false;
|
||||
mIsConnected = false;
|
||||
mOperations.clear();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.PendingIntent;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothManager;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.usb.*;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class HIDDeviceManager {
|
||||
private static final String TAG = "hidapi";
|
||||
private static final String ACTION_USB_PERMISSION = "org.libsdl.app.USB_PERMISSION";
|
||||
|
||||
private static HIDDeviceManager sManager;
|
||||
private static int sManagerRefCount = 0;
|
||||
|
||||
public static HIDDeviceManager acquire(Context context) {
|
||||
if (sManagerRefCount == 0) {
|
||||
sManager = new HIDDeviceManager(context);
|
||||
}
|
||||
++sManagerRefCount;
|
||||
return sManager;
|
||||
}
|
||||
|
||||
public static void release(HIDDeviceManager manager) {
|
||||
if (manager == sManager) {
|
||||
--sManagerRefCount;
|
||||
if (sManagerRefCount == 0) {
|
||||
sManager.close();
|
||||
sManager = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
private HashMap<Integer, HIDDevice> mDevicesById = new HashMap<Integer, HIDDevice>();
|
||||
private HashMap<BluetoothDevice, HIDDeviceBLESteamController> mBluetoothDevices = new HashMap<BluetoothDevice, HIDDeviceBLESteamController>();
|
||||
private int mNextDeviceId = 0;
|
||||
private SharedPreferences mSharedPreferences = null;
|
||||
private boolean mIsChromebook = false;
|
||||
private UsbManager mUsbManager;
|
||||
private Handler mHandler;
|
||||
private BluetoothManager mBluetoothManager;
|
||||
private List<BluetoothDevice> mLastBluetoothDevices;
|
||||
|
||||
private final BroadcastReceiver mUsbBroadcast = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
|
||||
UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
|
||||
handleUsbDeviceAttached(usbDevice);
|
||||
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
|
||||
UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
|
||||
handleUsbDeviceDetached(usbDevice);
|
||||
} else if (action.equals(HIDDeviceManager.ACTION_USB_PERMISSION)) {
|
||||
UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
|
||||
handleUsbDevicePermission(usbDevice, intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final BroadcastReceiver mBluetoothBroadcast = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
// Bluetooth device was connected. If it was a Steam Controller, handle it
|
||||
if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) {
|
||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
Log.d(TAG, "Bluetooth device connected: " + device);
|
||||
|
||||
if (isSteamController(device)) {
|
||||
connectBluetoothDevice(device);
|
||||
}
|
||||
}
|
||||
|
||||
// Bluetooth device was disconnected, remove from controller manager (if any)
|
||||
if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {
|
||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
Log.d(TAG, "Bluetooth device disconnected: " + device);
|
||||
|
||||
disconnectBluetoothDevice(device);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private HIDDeviceManager(final Context context) {
|
||||
mContext = context;
|
||||
|
||||
HIDDeviceRegisterCallback();
|
||||
|
||||
mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE);
|
||||
mIsChromebook = mContext.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
|
||||
|
||||
// if (shouldClear) {
|
||||
// SharedPreferences.Editor spedit = mSharedPreferences.edit();
|
||||
// spedit.clear();
|
||||
// spedit.commit();
|
||||
// }
|
||||
// else
|
||||
{
|
||||
mNextDeviceId = mSharedPreferences.getInt("next_device_id", 0);
|
||||
}
|
||||
}
|
||||
|
||||
public Context getContext() {
|
||||
return mContext;
|
||||
}
|
||||
|
||||
public int getDeviceIDForIdentifier(String identifier) {
|
||||
SharedPreferences.Editor spedit = mSharedPreferences.edit();
|
||||
|
||||
int result = mSharedPreferences.getInt(identifier, 0);
|
||||
if (result == 0) {
|
||||
result = mNextDeviceId++;
|
||||
spedit.putInt("next_device_id", mNextDeviceId);
|
||||
}
|
||||
|
||||
spedit.putInt(identifier, result);
|
||||
spedit.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
private void initializeUSB() {
|
||||
mUsbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);
|
||||
if (mUsbManager == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
// Logging
|
||||
for (UsbDevice device : mUsbManager.getDeviceList().values()) {
|
||||
Log.i(TAG,"Path: " + device.getDeviceName());
|
||||
Log.i(TAG,"Manufacturer: " + device.getManufacturerName());
|
||||
Log.i(TAG,"Product: " + device.getProductName());
|
||||
Log.i(TAG,"ID: " + device.getDeviceId());
|
||||
Log.i(TAG,"Class: " + device.getDeviceClass());
|
||||
Log.i(TAG,"Protocol: " + device.getDeviceProtocol());
|
||||
Log.i(TAG,"Vendor ID " + device.getVendorId());
|
||||
Log.i(TAG,"Product ID: " + device.getProductId());
|
||||
Log.i(TAG,"Interface count: " + device.getInterfaceCount());
|
||||
Log.i(TAG,"---------------------------------------");
|
||||
|
||||
// Get interface details
|
||||
for (int index = 0; index < device.getInterfaceCount(); index++) {
|
||||
UsbInterface mUsbInterface = device.getInterface(index);
|
||||
Log.i(TAG," ***** *****");
|
||||
Log.i(TAG," Interface index: " + index);
|
||||
Log.i(TAG," Interface ID: " + mUsbInterface.getId());
|
||||
Log.i(TAG," Interface class: " + mUsbInterface.getInterfaceClass());
|
||||
Log.i(TAG," Interface subclass: " + mUsbInterface.getInterfaceSubclass());
|
||||
Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol());
|
||||
Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount());
|
||||
|
||||
// Get endpoint details
|
||||
for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++)
|
||||
{
|
||||
UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi);
|
||||
Log.i(TAG," ++++ ++++ ++++");
|
||||
Log.i(TAG," Endpoint index: " + epi);
|
||||
Log.i(TAG," Attributes: " + mEndpoint.getAttributes());
|
||||
Log.i(TAG," Direction: " + mEndpoint.getDirection());
|
||||
Log.i(TAG," Number: " + mEndpoint.getEndpointNumber());
|
||||
Log.i(TAG," Interval: " + mEndpoint.getInterval());
|
||||
Log.i(TAG," Packet size: " + mEndpoint.getMaxPacketSize());
|
||||
Log.i(TAG," Type: " + mEndpoint.getType());
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.i(TAG," No more devices connected.");
|
||||
*/
|
||||
|
||||
// Register for USB broadcasts and permission completions
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
|
||||
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
|
||||
filter.addAction(HIDDeviceManager.ACTION_USB_PERMISSION);
|
||||
mContext.registerReceiver(mUsbBroadcast, filter);
|
||||
|
||||
for (UsbDevice usbDevice : mUsbManager.getDeviceList().values()) {
|
||||
handleUsbDeviceAttached(usbDevice);
|
||||
}
|
||||
}
|
||||
|
||||
UsbManager getUSBManager() {
|
||||
return mUsbManager;
|
||||
}
|
||||
|
||||
private void shutdownUSB() {
|
||||
try {
|
||||
mContext.unregisterReceiver(mUsbBroadcast);
|
||||
} catch (Exception e) {
|
||||
// We may not have registered, that's okay
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface usbInterface) {
|
||||
if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HID) {
|
||||
return true;
|
||||
}
|
||||
if (isXbox360Controller(usbDevice, usbInterface) || isXboxOneController(usbDevice, usbInterface)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isXbox360Controller(UsbDevice usbDevice, UsbInterface usbInterface) {
|
||||
final int XB360_IFACE_SUBCLASS = 93;
|
||||
final int XB360_IFACE_PROTOCOL = 1; // Wired
|
||||
final int XB360W_IFACE_PROTOCOL = 129; // Wireless
|
||||
final int[] SUPPORTED_VENDORS = {
|
||||
0x0079, // GPD Win 2
|
||||
0x044f, // Thrustmaster
|
||||
0x045e, // Microsoft
|
||||
0x046d, // Logitech
|
||||
0x056e, // Elecom
|
||||
0x06a3, // Saitek
|
||||
0x0738, // Mad Catz
|
||||
0x07ff, // Mad Catz
|
||||
0x0e6f, // PDP
|
||||
0x0f0d, // Hori
|
||||
0x1038, // SteelSeries
|
||||
0x11c9, // Nacon
|
||||
0x12ab, // Unknown
|
||||
0x1430, // RedOctane
|
||||
0x146b, // BigBen
|
||||
0x1532, // Razer Sabertooth
|
||||
0x15e4, // Numark
|
||||
0x162e, // Joytech
|
||||
0x1689, // Razer Onza
|
||||
0x1949, // Lab126, Inc.
|
||||
0x1bad, // Harmonix
|
||||
0x20d6, // PowerA
|
||||
0x24c6, // PowerA
|
||||
0x2c22, // Qanba
|
||||
0x2dc8, // 8BitDo
|
||||
0x9886, // ASTRO Gaming
|
||||
};
|
||||
|
||||
if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
|
||||
usbInterface.getInterfaceSubclass() == XB360_IFACE_SUBCLASS &&
|
||||
(usbInterface.getInterfaceProtocol() == XB360_IFACE_PROTOCOL ||
|
||||
usbInterface.getInterfaceProtocol() == XB360W_IFACE_PROTOCOL)) {
|
||||
int vendor_id = usbDevice.getVendorId();
|
||||
for (int supportedVid : SUPPORTED_VENDORS) {
|
||||
if (vendor_id == supportedVid) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isXboxOneController(UsbDevice usbDevice, UsbInterface usbInterface) {
|
||||
final int XB1_IFACE_SUBCLASS = 71;
|
||||
final int XB1_IFACE_PROTOCOL = 208;
|
||||
final int[] SUPPORTED_VENDORS = {
|
||||
0x03f0, // HP
|
||||
0x044f, // Thrustmaster
|
||||
0x045e, // Microsoft
|
||||
0x0738, // Mad Catz
|
||||
0x0e6f, // PDP
|
||||
0x0f0d, // Hori
|
||||
0x10f5, // Turtle Beach
|
||||
0x1532, // Razer Wildcat
|
||||
0x20d6, // PowerA
|
||||
0x24c6, // PowerA
|
||||
0x2dc8, // 8BitDo
|
||||
0x2e24, // Hyperkin
|
||||
0x3537, // GameSir
|
||||
};
|
||||
|
||||
if (usbInterface.getId() == 0 &&
|
||||
usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
|
||||
usbInterface.getInterfaceSubclass() == XB1_IFACE_SUBCLASS &&
|
||||
usbInterface.getInterfaceProtocol() == XB1_IFACE_PROTOCOL) {
|
||||
int vendor_id = usbDevice.getVendorId();
|
||||
for (int supportedVid : SUPPORTED_VENDORS) {
|
||||
if (vendor_id == supportedVid) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void handleUsbDeviceAttached(UsbDevice usbDevice) {
|
||||
connectHIDDeviceUSB(usbDevice);
|
||||
}
|
||||
|
||||
private void handleUsbDeviceDetached(UsbDevice usbDevice) {
|
||||
List<Integer> devices = new ArrayList<Integer>();
|
||||
for (HIDDevice device : mDevicesById.values()) {
|
||||
if (usbDevice.equals(device.getDevice())) {
|
||||
devices.add(device.getId());
|
||||
}
|
||||
}
|
||||
for (int id : devices) {
|
||||
HIDDevice device = mDevicesById.get(id);
|
||||
mDevicesById.remove(id);
|
||||
device.shutdown();
|
||||
HIDDeviceDisconnected(id);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleUsbDevicePermission(UsbDevice usbDevice, boolean permission_granted) {
|
||||
for (HIDDevice device : mDevicesById.values()) {
|
||||
if (usbDevice.equals(device.getDevice())) {
|
||||
boolean opened = false;
|
||||
if (permission_granted) {
|
||||
opened = device.open();
|
||||
}
|
||||
HIDDeviceOpenResult(device.getId(), opened);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void connectHIDDeviceUSB(UsbDevice usbDevice) {
|
||||
synchronized (this) {
|
||||
int interface_mask = 0;
|
||||
for (int interface_index = 0; interface_index < usbDevice.getInterfaceCount(); interface_index++) {
|
||||
UsbInterface usbInterface = usbDevice.getInterface(interface_index);
|
||||
if (isHIDDeviceInterface(usbDevice, usbInterface)) {
|
||||
// Check to see if we've already added this interface
|
||||
// This happens with the Xbox Series X controller which has a duplicate interface 0, which is inactive
|
||||
int interface_id = usbInterface.getId();
|
||||
if ((interface_mask & (1 << interface_id)) != 0) {
|
||||
continue;
|
||||
}
|
||||
interface_mask |= (1 << interface_id);
|
||||
|
||||
HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_index);
|
||||
int id = device.getId();
|
||||
mDevicesById.put(id, device);
|
||||
HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), usbInterface.getId(), usbInterface.getInterfaceClass(), usbInterface.getInterfaceSubclass(), usbInterface.getInterfaceProtocol());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeBluetooth() {
|
||||
Log.d(TAG, "Initializing Bluetooth");
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 31 /* Android 12 */ &&
|
||||
mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH_CONNECT, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
||||
Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH_CONNECT");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT <= 30 /* Android 11.0 (R) */ &&
|
||||
mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
||||
Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) || (Build.VERSION.SDK_INT < 18 /* Android 4.3 (JELLY_BEAN_MR2) */)) {
|
||||
Log.d(TAG, "Couldn't initialize Bluetooth, this version of Android does not support Bluetooth LE");
|
||||
return;
|
||||
}
|
||||
|
||||
// Find bonded bluetooth controllers and create SteamControllers for them
|
||||
mBluetoothManager = (BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE);
|
||||
if (mBluetoothManager == null) {
|
||||
// This device doesn't support Bluetooth.
|
||||
return;
|
||||
}
|
||||
|
||||
BluetoothAdapter btAdapter = mBluetoothManager.getAdapter();
|
||||
if (btAdapter == null) {
|
||||
// This device has Bluetooth support in the codebase, but has no available adapters.
|
||||
return;
|
||||
}
|
||||
|
||||
// Get our bonded devices.
|
||||
for (BluetoothDevice device : btAdapter.getBondedDevices()) {
|
||||
|
||||
Log.d(TAG, "Bluetooth device available: " + device);
|
||||
if (isSteamController(device)) {
|
||||
connectBluetoothDevice(device);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// NOTE: These don't work on Chromebooks, to my undying dismay.
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
|
||||
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
|
||||
mContext.registerReceiver(mBluetoothBroadcast, filter);
|
||||
|
||||
if (mIsChromebook) {
|
||||
mHandler = new Handler(Looper.getMainLooper());
|
||||
mLastBluetoothDevices = new ArrayList<BluetoothDevice>();
|
||||
|
||||
// final HIDDeviceManager finalThis = this;
|
||||
// mHandler.postDelayed(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// finalThis.chromebookConnectionHandler();
|
||||
// }
|
||||
// }, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
private void shutdownBluetooth() {
|
||||
try {
|
||||
mContext.unregisterReceiver(mBluetoothBroadcast);
|
||||
} catch (Exception e) {
|
||||
// We may not have registered, that's okay
|
||||
}
|
||||
}
|
||||
|
||||
// Chromebooks do not pass along ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED properly.
|
||||
// This function provides a sort of dummy version of that, watching for changes in the
|
||||
// connected devices and attempting to add controllers as things change.
|
||||
public void chromebookConnectionHandler() {
|
||||
if (!mIsChromebook) {
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<BluetoothDevice> disconnected = new ArrayList<BluetoothDevice>();
|
||||
ArrayList<BluetoothDevice> connected = new ArrayList<BluetoothDevice>();
|
||||
|
||||
List<BluetoothDevice> currentConnected = mBluetoothManager.getConnectedDevices(BluetoothProfile.GATT);
|
||||
|
||||
for (BluetoothDevice bluetoothDevice : currentConnected) {
|
||||
if (!mLastBluetoothDevices.contains(bluetoothDevice)) {
|
||||
connected.add(bluetoothDevice);
|
||||
}
|
||||
}
|
||||
for (BluetoothDevice bluetoothDevice : mLastBluetoothDevices) {
|
||||
if (!currentConnected.contains(bluetoothDevice)) {
|
||||
disconnected.add(bluetoothDevice);
|
||||
}
|
||||
}
|
||||
|
||||
mLastBluetoothDevices = currentConnected;
|
||||
|
||||
for (BluetoothDevice bluetoothDevice : disconnected) {
|
||||
disconnectBluetoothDevice(bluetoothDevice);
|
||||
}
|
||||
for (BluetoothDevice bluetoothDevice : connected) {
|
||||
connectBluetoothDevice(bluetoothDevice);
|
||||
}
|
||||
|
||||
final HIDDeviceManager finalThis = this;
|
||||
mHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finalThis.chromebookConnectionHandler();
|
||||
}
|
||||
}, 10000);
|
||||
}
|
||||
|
||||
public boolean connectBluetoothDevice(BluetoothDevice bluetoothDevice) {
|
||||
Log.v(TAG, "connectBluetoothDevice device=" + bluetoothDevice);
|
||||
synchronized (this) {
|
||||
if (mBluetoothDevices.containsKey(bluetoothDevice)) {
|
||||
Log.v(TAG, "Steam controller with address " + bluetoothDevice + " already exists, attempting reconnect");
|
||||
|
||||
HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
|
||||
device.reconnect();
|
||||
|
||||
return false;
|
||||
}
|
||||
HIDDeviceBLESteamController device = new HIDDeviceBLESteamController(this, bluetoothDevice);
|
||||
int id = device.getId();
|
||||
mBluetoothDevices.put(bluetoothDevice, device);
|
||||
mDevicesById.put(id, device);
|
||||
|
||||
// The Steam Controller will mark itself connected once initialization is complete
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void disconnectBluetoothDevice(BluetoothDevice bluetoothDevice) {
|
||||
synchronized (this) {
|
||||
HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
|
||||
if (device == null)
|
||||
return;
|
||||
|
||||
int id = device.getId();
|
||||
mBluetoothDevices.remove(bluetoothDevice);
|
||||
mDevicesById.remove(id);
|
||||
device.shutdown();
|
||||
HIDDeviceDisconnected(id);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSteamController(BluetoothDevice bluetoothDevice) {
|
||||
// Sanity check. If you pass in a null device, by definition it is never a Steam Controller.
|
||||
if (bluetoothDevice == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the device has no local name, we really don't want to try an equality check against it.
|
||||
if (bluetoothDevice.getName() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return bluetoothDevice.getName().equals("SteamController") && ((bluetoothDevice.getType() & BluetoothDevice.DEVICE_TYPE_LE) != 0);
|
||||
}
|
||||
|
||||
private void close() {
|
||||
shutdownUSB();
|
||||
shutdownBluetooth();
|
||||
synchronized (this) {
|
||||
for (HIDDevice device : mDevicesById.values()) {
|
||||
device.shutdown();
|
||||
}
|
||||
mDevicesById.clear();
|
||||
mBluetoothDevices.clear();
|
||||
HIDDeviceReleaseCallback();
|
||||
}
|
||||
}
|
||||
|
||||
public void setFrozen(boolean frozen) {
|
||||
synchronized (this) {
|
||||
for (HIDDevice device : mDevicesById.values()) {
|
||||
device.setFrozen(frozen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private HIDDevice getDevice(int id) {
|
||||
synchronized (this) {
|
||||
HIDDevice result = mDevicesById.get(id);
|
||||
if (result == null) {
|
||||
Log.v(TAG, "No device for id: " + id);
|
||||
Log.v(TAG, "Available devices: " + mDevicesById.keySet());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////// JNI interface functions
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public boolean initialize(boolean usb, boolean bluetooth) {
|
||||
Log.v(TAG, "initialize(" + usb + ", " + bluetooth + ")");
|
||||
|
||||
if (usb) {
|
||||
initializeUSB();
|
||||
}
|
||||
if (bluetooth) {
|
||||
initializeBluetooth();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean openDevice(int deviceID) {
|
||||
Log.v(TAG, "openDevice deviceID=" + deviceID);
|
||||
HIDDevice device = getDevice(deviceID);
|
||||
if (device == null) {
|
||||
HIDDeviceDisconnected(deviceID);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Look to see if this is a USB device and we have permission to access it
|
||||
UsbDevice usbDevice = device.getDevice();
|
||||
if (usbDevice != null && !mUsbManager.hasPermission(usbDevice)) {
|
||||
HIDDeviceOpenPending(deviceID);
|
||||
try {
|
||||
final int FLAG_MUTABLE = 0x02000000; // PendingIntent.FLAG_MUTABLE, but don't require SDK 31
|
||||
int flags;
|
||||
if (Build.VERSION.SDK_INT >= 31 /* Android 12.0 (S) */) {
|
||||
flags = FLAG_MUTABLE;
|
||||
} else {
|
||||
flags = 0;
|
||||
}
|
||||
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
|
||||
} catch (Exception e) {
|
||||
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
|
||||
HIDDeviceOpenResult(deviceID, false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return device.open();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int sendOutputReport(int deviceID, byte[] report) {
|
||||
try {
|
||||
//Log.v(TAG, "sendOutputReport deviceID=" + deviceID + " length=" + report.length);
|
||||
HIDDevice device;
|
||||
device = getDevice(deviceID);
|
||||
if (device == null) {
|
||||
HIDDeviceDisconnected(deviceID);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return device.sendOutputReport(report);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int sendFeatureReport(int deviceID, byte[] report) {
|
||||
try {
|
||||
//Log.v(TAG, "sendFeatureReport deviceID=" + deviceID + " length=" + report.length);
|
||||
HIDDevice device;
|
||||
device = getDevice(deviceID);
|
||||
if (device == null) {
|
||||
HIDDeviceDisconnected(deviceID);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return device.sendFeatureReport(report);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public boolean getFeatureReport(int deviceID, byte[] report) {
|
||||
try {
|
||||
//Log.v(TAG, "getFeatureReport deviceID=" + deviceID);
|
||||
HIDDevice device;
|
||||
device = getDevice(deviceID);
|
||||
if (device == null) {
|
||||
HIDDeviceDisconnected(deviceID);
|
||||
return false;
|
||||
}
|
||||
|
||||
return device.getFeatureReport(report);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void closeDevice(int deviceID) {
|
||||
try {
|
||||
Log.v(TAG, "closeDevice deviceID=" + deviceID);
|
||||
HIDDevice device;
|
||||
device = getDevice(deviceID);
|
||||
if (device == null) {
|
||||
HIDDeviceDisconnected(deviceID);
|
||||
return;
|
||||
}
|
||||
|
||||
device.close();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////// Native methods
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private native void HIDDeviceRegisterCallback();
|
||||
private native void HIDDeviceReleaseCallback();
|
||||
|
||||
native void HIDDeviceConnected(int deviceID, String identifier, int vendorId, int productId, String serial_number, int release_number, String manufacturer_string, String product_string, int interface_number, int interface_class, int interface_subclass, int interface_protocol);
|
||||
native void HIDDeviceOpenPending(int deviceID);
|
||||
native void HIDDeviceOpenResult(int deviceID, boolean opened);
|
||||
native void HIDDeviceDisconnected(int deviceID);
|
||||
|
||||
native void HIDDeviceInputReport(int deviceID, byte[] report);
|
||||
native void HIDDeviceFeatureReport(int deviceID, byte[] report);
|
||||
}
|
|
@ -0,0 +1,309 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.hardware.usb.*;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import java.util.Arrays;
|
||||
|
||||
class HIDDeviceUSB implements HIDDevice {
|
||||
|
||||
private static final String TAG = "hidapi";
|
||||
|
||||
protected HIDDeviceManager mManager;
|
||||
protected UsbDevice mDevice;
|
||||
protected int mInterfaceIndex;
|
||||
protected int mInterface;
|
||||
protected int mDeviceId;
|
||||
protected UsbDeviceConnection mConnection;
|
||||
protected UsbEndpoint mInputEndpoint;
|
||||
protected UsbEndpoint mOutputEndpoint;
|
||||
protected InputThread mInputThread;
|
||||
protected boolean mRunning;
|
||||
protected boolean mFrozen;
|
||||
|
||||
public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int interface_index) {
|
||||
mManager = manager;
|
||||
mDevice = usbDevice;
|
||||
mInterfaceIndex = interface_index;
|
||||
mInterface = mDevice.getInterface(mInterfaceIndex).getId();
|
||||
mDeviceId = manager.getDeviceIDForIdentifier(getIdentifier());
|
||||
mRunning = false;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return String.format("%s/%x/%x/%d", mDevice.getDeviceName(), mDevice.getVendorId(), mDevice.getProductId(), mInterfaceIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return mDeviceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVendorId() {
|
||||
return mDevice.getVendorId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProductId() {
|
||||
return mDevice.getProductId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSerialNumber() {
|
||||
String result = null;
|
||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
||||
try {
|
||||
result = mDevice.getSerialNumber();
|
||||
}
|
||||
catch (SecurityException exception) {
|
||||
//Log.w(TAG, "App permissions mean we cannot get serial number for device " + getDeviceName() + " message: " + exception.getMessage());
|
||||
}
|
||||
}
|
||||
if (result == null) {
|
||||
result = "";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getManufacturerName() {
|
||||
String result = null;
|
||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
||||
result = mDevice.getManufacturerName();
|
||||
}
|
||||
if (result == null) {
|
||||
result = String.format("%x", getVendorId());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProductName() {
|
||||
String result = null;
|
||||
if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) {
|
||||
result = mDevice.getProductName();
|
||||
}
|
||||
if (result == null) {
|
||||
result = String.format("%x", getProductId());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UsbDevice getDevice() {
|
||||
return mDevice;
|
||||
}
|
||||
|
||||
public String getDeviceName() {
|
||||
return getManufacturerName() + " " + getProductName() + "(0x" + String.format("%x", getVendorId()) + "/0x" + String.format("%x", getProductId()) + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open() {
|
||||
mConnection = mManager.getUSBManager().openDevice(mDevice);
|
||||
if (mConnection == null) {
|
||||
Log.w(TAG, "Unable to open USB device " + getDeviceName());
|
||||
return false;
|
||||
}
|
||||
|
||||
// Force claim our interface
|
||||
UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
|
||||
if (!mConnection.claimInterface(iface, true)) {
|
||||
Log.w(TAG, "Failed to claim interfaces on USB device " + getDeviceName());
|
||||
close();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Find the endpoints
|
||||
for (int j = 0; j < iface.getEndpointCount(); j++) {
|
||||
UsbEndpoint endpt = iface.getEndpoint(j);
|
||||
switch (endpt.getDirection()) {
|
||||
case UsbConstants.USB_DIR_IN:
|
||||
if (mInputEndpoint == null) {
|
||||
mInputEndpoint = endpt;
|
||||
}
|
||||
break;
|
||||
case UsbConstants.USB_DIR_OUT:
|
||||
if (mOutputEndpoint == null) {
|
||||
mOutputEndpoint = endpt;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure the required endpoints were present
|
||||
if (mInputEndpoint == null || mOutputEndpoint == null) {
|
||||
Log.w(TAG, "Missing required endpoint on USB device " + getDeviceName());
|
||||
close();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Start listening for input
|
||||
mRunning = true;
|
||||
mInputThread = new InputThread();
|
||||
mInputThread.start();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sendFeatureReport(byte[] report) {
|
||||
int res = -1;
|
||||
int offset = 0;
|
||||
int length = report.length;
|
||||
boolean skipped_report_id = false;
|
||||
byte report_number = report[0];
|
||||
|
||||
if (report_number == 0x0) {
|
||||
++offset;
|
||||
--length;
|
||||
skipped_report_id = true;
|
||||
}
|
||||
|
||||
res = mConnection.controlTransfer(
|
||||
UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_OUT,
|
||||
0x09/*HID set_report*/,
|
||||
(3/*HID feature*/ << 8) | report_number,
|
||||
mInterface,
|
||||
report, offset, length,
|
||||
1000/*timeout millis*/);
|
||||
|
||||
if (res < 0) {
|
||||
Log.w(TAG, "sendFeatureReport() returned " + res + " on device " + getDeviceName());
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (skipped_report_id) {
|
||||
++length;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sendOutputReport(byte[] report) {
|
||||
int r = mConnection.bulkTransfer(mOutputEndpoint, report, report.length, 1000);
|
||||
if (r != report.length) {
|
||||
Log.w(TAG, "sendOutputReport() returned " + r + " on device " + getDeviceName());
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFeatureReport(byte[] report) {
|
||||
int res = -1;
|
||||
int offset = 0;
|
||||
int length = report.length;
|
||||
boolean skipped_report_id = false;
|
||||
byte report_number = report[0];
|
||||
|
||||
if (report_number == 0x0) {
|
||||
/* Offset the return buffer by 1, so that the report ID
|
||||
will remain in byte 0. */
|
||||
++offset;
|
||||
--length;
|
||||
skipped_report_id = true;
|
||||
}
|
||||
|
||||
res = mConnection.controlTransfer(
|
||||
UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_IN,
|
||||
0x01/*HID get_report*/,
|
||||
(3/*HID feature*/ << 8) | report_number,
|
||||
mInterface,
|
||||
report, offset, length,
|
||||
1000/*timeout millis*/);
|
||||
|
||||
if (res < 0) {
|
||||
Log.w(TAG, "getFeatureReport() returned " + res + " on device " + getDeviceName());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (skipped_report_id) {
|
||||
++res;
|
||||
++length;
|
||||
}
|
||||
|
||||
byte[] data;
|
||||
if (res == length) {
|
||||
data = report;
|
||||
} else {
|
||||
data = Arrays.copyOfRange(report, 0, res);
|
||||
}
|
||||
mManager.HIDDeviceFeatureReport(mDeviceId, data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
mRunning = false;
|
||||
if (mInputThread != null) {
|
||||
while (mInputThread.isAlive()) {
|
||||
mInputThread.interrupt();
|
||||
try {
|
||||
mInputThread.join();
|
||||
} catch (InterruptedException e) {
|
||||
// Keep trying until we're done
|
||||
}
|
||||
}
|
||||
mInputThread = null;
|
||||
}
|
||||
if (mConnection != null) {
|
||||
UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
|
||||
mConnection.releaseInterface(iface);
|
||||
mConnection.close();
|
||||
mConnection = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
close();
|
||||
mManager = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrozen(boolean frozen) {
|
||||
mFrozen = frozen;
|
||||
}
|
||||
|
||||
protected class InputThread extends Thread {
|
||||
@Override
|
||||
public void run() {
|
||||
int packetSize = mInputEndpoint.getMaxPacketSize();
|
||||
byte[] packet = new byte[packetSize];
|
||||
while (mRunning) {
|
||||
int r;
|
||||
try
|
||||
{
|
||||
r = mConnection.bulkTransfer(mInputEndpoint, packet, packetSize, 1000);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.v(TAG, "Exception in UsbDeviceConnection bulktransfer: " + e);
|
||||
break;
|
||||
}
|
||||
if (r < 0) {
|
||||
// Could be a timeout or an I/O error
|
||||
}
|
||||
if (r > 0) {
|
||||
byte[] data;
|
||||
if (r == packetSize) {
|
||||
data = packet;
|
||||
} else {
|
||||
data = Arrays.copyOfRange(packet, 0, r);
|
||||
}
|
||||
|
||||
if (!mFrozen) {
|
||||
mManager.HIDDeviceInputReport(mDeviceId, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.lang.Class;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
SDL library initialization
|
||||
*/
|
||||
public class SDL {
|
||||
|
||||
// This function should be called first and sets up the native code
|
||||
// so it can call into the Java classes
|
||||
public static void setupJNI() {
|
||||
SDLActivity.nativeSetupJNI();
|
||||
SDLAudioManager.nativeSetupJNI();
|
||||
SDLControllerManager.nativeSetupJNI();
|
||||
}
|
||||
|
||||
// This function should be called each time the activity is started
|
||||
public static void initialize() {
|
||||
setContext(null);
|
||||
|
||||
SDLActivity.initialize();
|
||||
SDLAudioManager.initialize();
|
||||
SDLControllerManager.initialize();
|
||||
}
|
||||
|
||||
// This function stores the current activity (SDL or not)
|
||||
public static void setContext(Context context) {
|
||||
SDLAudioManager.setContext(context);
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public static Context getContext() {
|
||||
return mContext;
|
||||
}
|
||||
|
||||
public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
||||
|
||||
if (libraryName == null) {
|
||||
throw new NullPointerException("No library name provided.");
|
||||
}
|
||||
|
||||
try {
|
||||
// Let's see if we have ReLinker available in the project. This is necessary for
|
||||
// some projects that have huge numbers of local libraries bundled, and thus may
|
||||
// trip a bug in Android's native library loader which ReLinker works around. (If
|
||||
// loadLibrary works properly, ReLinker will simply use the normal Android method
|
||||
// internally.)
|
||||
//
|
||||
// To use ReLinker, just add it as a dependency. For more information, see
|
||||
// https://github.com/KeepSafe/ReLinker for ReLinker's repository.
|
||||
//
|
||||
Class<?> relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
|
||||
Class<?> relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
|
||||
Class<?> contextClass = mContext.getClassLoader().loadClass("android.content.Context");
|
||||
Class<?> stringClass = mContext.getClassLoader().loadClass("java.lang.String");
|
||||
|
||||
// Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
|
||||
// they've changed during updates.
|
||||
Method forceMethod = relinkClass.getDeclaredMethod("force");
|
||||
Object relinkInstance = forceMethod.invoke(null);
|
||||
Class<?> relinkInstanceClass = relinkInstance.getClass();
|
||||
|
||||
// Actually load the library!
|
||||
Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
|
||||
loadMethod.invoke(relinkInstance, mContext, libraryName, null, null);
|
||||
}
|
||||
catch (final Throwable e) {
|
||||
// Fall back
|
||||
try {
|
||||
System.loadLibrary(libraryName);
|
||||
}
|
||||
catch (final UnsatisfiedLinkError ule) {
|
||||
throw ule;
|
||||
}
|
||||
catch (final SecurityException se) {
|
||||
throw se;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected static Context mContext;
|
||||
}
|
|
@ -0,0 +1,514 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioDeviceCallback;
|
||||
import android.media.AudioDeviceInfo;
|
||||
import android.media.AudioFormat;
|
||||
import android.media.AudioManager;
|
||||
import android.media.AudioRecord;
|
||||
import android.media.AudioTrack;
|
||||
import android.media.MediaRecorder;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class SDLAudioManager {
|
||||
protected static final String TAG = "SDLAudio";
|
||||
|
||||
protected static AudioTrack mAudioTrack;
|
||||
protected static AudioRecord mAudioRecord;
|
||||
protected static Context mContext;
|
||||
|
||||
private static final int[] NO_DEVICES = {};
|
||||
|
||||
private static AudioDeviceCallback mAudioDeviceCallback;
|
||||
|
||||
public static void initialize() {
|
||||
mAudioTrack = null;
|
||||
mAudioRecord = null;
|
||||
mAudioDeviceCallback = null;
|
||||
|
||||
if(Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */)
|
||||
{
|
||||
mAudioDeviceCallback = new AudioDeviceCallback() {
|
||||
@Override
|
||||
public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
|
||||
Arrays.stream(addedDevices).forEach(deviceInfo -> addAudioDevice(deviceInfo.isSink(), deviceInfo.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
|
||||
Arrays.stream(removedDevices).forEach(deviceInfo -> removeAudioDevice(deviceInfo.isSink(), deviceInfo.getId()));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public static void setContext(Context context) {
|
||||
mContext = context;
|
||||
if (context != null) {
|
||||
registerAudioDeviceCallback();
|
||||
}
|
||||
}
|
||||
|
||||
public static void release(Context context) {
|
||||
unregisterAudioDeviceCallback(context);
|
||||
}
|
||||
|
||||
// Audio
|
||||
|
||||
protected static String getAudioFormatString(int audioFormat) {
|
||||
switch (audioFormat) {
|
||||
case AudioFormat.ENCODING_PCM_8BIT:
|
||||
return "8-bit";
|
||||
case AudioFormat.ENCODING_PCM_16BIT:
|
||||
return "16-bit";
|
||||
case AudioFormat.ENCODING_PCM_FLOAT:
|
||||
return "float";
|
||||
default:
|
||||
return Integer.toString(audioFormat);
|
||||
}
|
||||
}
|
||||
|
||||
protected static int[] open(boolean isCapture, int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
||||
int channelConfig;
|
||||
int sampleSize;
|
||||
int frameSize;
|
||||
|
||||
Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", requested " + desiredFrames + " frames of " + desiredChannels + " channel " + getAudioFormatString(audioFormat) + " audio at " + sampleRate + " Hz");
|
||||
|
||||
/* On older devices let's use known good settings */
|
||||
if (Build.VERSION.SDK_INT < 21 /* Android 5.0 (LOLLIPOP) */) {
|
||||
if (desiredChannels > 2) {
|
||||
desiredChannels = 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* AudioTrack has sample rate limitation of 48000 (fixed in 5.0.2) */
|
||||
if (Build.VERSION.SDK_INT < 22 /* Android 5.1 (LOLLIPOP_MR1) */) {
|
||||
if (sampleRate < 8000) {
|
||||
sampleRate = 8000;
|
||||
} else if (sampleRate > 48000) {
|
||||
sampleRate = 48000;
|
||||
}
|
||||
}
|
||||
|
||||
if (audioFormat == AudioFormat.ENCODING_PCM_FLOAT) {
|
||||
int minSDKVersion = (isCapture ? 23 /* Android 6.0 (M) */ : 21 /* Android 5.0 (LOLLIPOP) */);
|
||||
if (Build.VERSION.SDK_INT < minSDKVersion) {
|
||||
audioFormat = AudioFormat.ENCODING_PCM_16BIT;
|
||||
}
|
||||
}
|
||||
switch (audioFormat)
|
||||
{
|
||||
case AudioFormat.ENCODING_PCM_8BIT:
|
||||
sampleSize = 1;
|
||||
break;
|
||||
case AudioFormat.ENCODING_PCM_16BIT:
|
||||
sampleSize = 2;
|
||||
break;
|
||||
case AudioFormat.ENCODING_PCM_FLOAT:
|
||||
sampleSize = 4;
|
||||
break;
|
||||
default:
|
||||
Log.v(TAG, "Requested format " + audioFormat + ", getting ENCODING_PCM_16BIT");
|
||||
audioFormat = AudioFormat.ENCODING_PCM_16BIT;
|
||||
sampleSize = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (isCapture) {
|
||||
switch (desiredChannels) {
|
||||
case 1:
|
||||
channelConfig = AudioFormat.CHANNEL_IN_MONO;
|
||||
break;
|
||||
case 2:
|
||||
channelConfig = AudioFormat.CHANNEL_IN_STEREO;
|
||||
break;
|
||||
default:
|
||||
Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
|
||||
desiredChannels = 2;
|
||||
channelConfig = AudioFormat.CHANNEL_IN_STEREO;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (desiredChannels) {
|
||||
case 1:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_MONO;
|
||||
break;
|
||||
case 2:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
|
||||
break;
|
||||
case 3:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
|
||||
break;
|
||||
case 4:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_QUAD;
|
||||
break;
|
||||
case 5:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
|
||||
break;
|
||||
case 6:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
|
||||
break;
|
||||
case 7:
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER;
|
||||
break;
|
||||
case 8:
|
||||
if (Build.VERSION.SDK_INT >= 23 /* Android 6.0 (M) */) {
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_7POINT1_SURROUND;
|
||||
} else {
|
||||
Log.v(TAG, "Requested " + desiredChannels + " channels, getting 5.1 surround");
|
||||
desiredChannels = 6;
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
|
||||
desiredChannels = 2;
|
||||
channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
Log.v(TAG, "Speaker configuration (and order of channels):");
|
||||
|
||||
if ((channelConfig & 0x00000004) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT");
|
||||
}
|
||||
if ((channelConfig & 0x00000008) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT");
|
||||
}
|
||||
if ((channelConfig & 0x00000010) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_FRONT_CENTER");
|
||||
}
|
||||
if ((channelConfig & 0x00000020) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_LOW_FREQUENCY");
|
||||
}
|
||||
if ((channelConfig & 0x00000040) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_BACK_LEFT");
|
||||
}
|
||||
if ((channelConfig & 0x00000080) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_BACK_RIGHT");
|
||||
}
|
||||
if ((channelConfig & 0x00000100) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT_OF_CENTER");
|
||||
}
|
||||
if ((channelConfig & 0x00000200) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT_OF_CENTER");
|
||||
}
|
||||
if ((channelConfig & 0x00000400) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_BACK_CENTER");
|
||||
}
|
||||
if ((channelConfig & 0x00000800) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_SIDE_LEFT");
|
||||
}
|
||||
if ((channelConfig & 0x00001000) != 0) {
|
||||
Log.v(TAG, " CHANNEL_OUT_SIDE_RIGHT");
|
||||
}
|
||||
*/
|
||||
}
|
||||
frameSize = (sampleSize * desiredChannels);
|
||||
|
||||
// Let the user pick a larger buffer if they really want -- but ye
|
||||
// gods they probably shouldn't, the minimums are horrifyingly high
|
||||
// latency already
|
||||
int minBufferSize;
|
||||
if (isCapture) {
|
||||
minBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
|
||||
} else {
|
||||
minBufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);
|
||||
}
|
||||
desiredFrames = Math.max(desiredFrames, (minBufferSize + frameSize - 1) / frameSize);
|
||||
|
||||
int[] results = new int[4];
|
||||
|
||||
if (isCapture) {
|
||||
if (mAudioRecord == null) {
|
||||
mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, sampleRate,
|
||||
channelConfig, audioFormat, desiredFrames * frameSize);
|
||||
|
||||
// see notes about AudioTrack state in audioOpen(), above. Probably also applies here.
|
||||
if (mAudioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
|
||||
Log.e(TAG, "Failed during initialization of AudioRecord");
|
||||
mAudioRecord.release();
|
||||
mAudioRecord = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */ && deviceId != 0) {
|
||||
mAudioRecord.setPreferredDevice(getOutputAudioDeviceInfo(deviceId));
|
||||
}
|
||||
|
||||
mAudioRecord.startRecording();
|
||||
}
|
||||
|
||||
results[0] = mAudioRecord.getSampleRate();
|
||||
results[1] = mAudioRecord.getAudioFormat();
|
||||
results[2] = mAudioRecord.getChannelCount();
|
||||
|
||||
} else {
|
||||
if (mAudioTrack == null) {
|
||||
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
|
||||
|
||||
// Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid
|
||||
// Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java
|
||||
// Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState()
|
||||
if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) {
|
||||
/* Try again, with safer values */
|
||||
|
||||
Log.e(TAG, "Failed during initialization of Audio Track");
|
||||
mAudioTrack.release();
|
||||
mAudioTrack = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */ && deviceId != 0) {
|
||||
mAudioTrack.setPreferredDevice(getInputAudioDeviceInfo(deviceId));
|
||||
}
|
||||
|
||||
mAudioTrack.play();
|
||||
}
|
||||
|
||||
results[0] = mAudioTrack.getSampleRate();
|
||||
results[1] = mAudioTrack.getAudioFormat();
|
||||
results[2] = mAudioTrack.getChannelCount();
|
||||
}
|
||||
results[3] = desiredFrames;
|
||||
|
||||
Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", got " + results[3] + " frames of " + results[2] + " channel " + getAudioFormatString(results[1]) + " audio at " + results[0] + " Hz");
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
private static AudioDeviceInfo getInputAudioDeviceInfo(int deviceId) {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS))
|
||||
.filter(deviceInfo -> deviceInfo.getId() == deviceId)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static AudioDeviceInfo getOutputAudioDeviceInfo(int deviceId) {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS))
|
||||
.filter(deviceInfo -> deviceInfo.getId() == deviceId)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void registerAudioDeviceCallback() {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
audioManager.registerAudioDeviceCallback(mAudioDeviceCallback, null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void unregisterAudioDeviceCallback(Context context) {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||
audioManager.unregisterAudioDeviceCallback(mAudioDeviceCallback);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static int[] getAudioOutputDevices() {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
|
||||
} else {
|
||||
return NO_DEVICES;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static int[] getAudioInputDevices() {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
|
||||
} else {
|
||||
return NO_DEVICES;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static int[] audioOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
||||
return open(false, sampleRate, audioFormat, desiredChannels, desiredFrames, deviceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void audioWriteFloatBuffer(float[] buffer) {
|
||||
if (mAudioTrack == null) {
|
||||
Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT < 21 /* Android 5.0 (LOLLIPOP) */) {
|
||||
Log.e(TAG, "Attempted to make an incompatible audio call with uninitialized audio! (floating-point output is supported since Android 5.0 Lollipop)");
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < buffer.length;) {
|
||||
int result = mAudioTrack.write(buffer, i, buffer.length - i, AudioTrack.WRITE_BLOCKING);
|
||||
if (result > 0) {
|
||||
i += result;
|
||||
} else if (result == 0) {
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch(InterruptedException e) {
|
||||
// Nom nom
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "SDL audio: error return from write(float)");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void audioWriteShortBuffer(short[] buffer) {
|
||||
if (mAudioTrack == null) {
|
||||
Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < buffer.length;) {
|
||||
int result = mAudioTrack.write(buffer, i, buffer.length - i);
|
||||
if (result > 0) {
|
||||
i += result;
|
||||
} else if (result == 0) {
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch(InterruptedException e) {
|
||||
// Nom nom
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "SDL audio: error return from write(short)");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void audioWriteByteBuffer(byte[] buffer) {
|
||||
if (mAudioTrack == null) {
|
||||
Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < buffer.length; ) {
|
||||
int result = mAudioTrack.write(buffer, i, buffer.length - i);
|
||||
if (result > 0) {
|
||||
i += result;
|
||||
} else if (result == 0) {
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch(InterruptedException e) {
|
||||
// Nom nom
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "SDL audio: error return from write(byte)");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static int[] captureOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames, int deviceId) {
|
||||
return open(true, sampleRate, audioFormat, desiredChannels, desiredFrames, deviceId);
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static int captureReadFloatBuffer(float[] buffer, boolean blocking) {
|
||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
||||
return 0;
|
||||
} else {
|
||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||
}
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static int captureReadShortBuffer(short[] buffer, boolean blocking) {
|
||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
||||
return mAudioRecord.read(buffer, 0, buffer.length);
|
||||
} else {
|
||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||
}
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static int captureReadByteBuffer(byte[] buffer, boolean blocking) {
|
||||
if (Build.VERSION.SDK_INT < 23 /* Android 6.0 (M) */) {
|
||||
return mAudioRecord.read(buffer, 0, buffer.length);
|
||||
} else {
|
||||
return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
|
||||
}
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static void audioClose() {
|
||||
if (mAudioTrack != null) {
|
||||
mAudioTrack.stop();
|
||||
mAudioTrack.release();
|
||||
mAudioTrack = null;
|
||||
}
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static void captureClose() {
|
||||
if (mAudioRecord != null) {
|
||||
mAudioRecord.stop();
|
||||
mAudioRecord.release();
|
||||
mAudioRecord = null;
|
||||
}
|
||||
}
|
||||
|
||||
/** This method is called by SDL using JNI. */
|
||||
public static void audioSetThreadPriority(boolean iscapture, int device_id) {
|
||||
try {
|
||||
|
||||
/* Set thread name */
|
||||
if (iscapture) {
|
||||
Thread.currentThread().setName("SDLAudioC" + device_id);
|
||||
} else {
|
||||
Thread.currentThread().setName("SDLAudioP" + device_id);
|
||||
}
|
||||
|
||||
/* Set thread priority */
|
||||
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
|
||||
|
||||
} catch (Exception e) {
|
||||
Log.v(TAG, "modify thread properties failed " + e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public static native int nativeSetupJNI();
|
||||
|
||||
public static native void removeAudioDevice(boolean isCapture, int deviceId);
|
||||
|
||||
public static native void addAudioDevice(boolean isCapture, int deviceId);
|
||||
|
||||
}
|
|
@ -0,0 +1,854 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.util.Log;
|
||||
import android.view.InputDevice;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class SDLControllerManager
|
||||
{
|
||||
|
||||
public static native int nativeSetupJNI();
|
||||
|
||||
public static native int nativeAddJoystick(int device_id, String name, String desc,
|
||||
int vendor_id, int product_id,
|
||||
boolean is_accelerometer, int button_mask,
|
||||
int naxes, int axis_mask, int nhats, int nballs);
|
||||
public static native int nativeRemoveJoystick(int device_id);
|
||||
public static native int nativeAddHaptic(int device_id, String name);
|
||||
public static native int nativeRemoveHaptic(int device_id);
|
||||
public static native int onNativePadDown(int device_id, int keycode);
|
||||
public static native int onNativePadUp(int device_id, int keycode);
|
||||
public static native void onNativeJoy(int device_id, int axis,
|
||||
float value);
|
||||
public static native void onNativeHat(int device_id, int hat_id,
|
||||
int x, int y);
|
||||
|
||||
protected static SDLJoystickHandler mJoystickHandler;
|
||||
protected static SDLHapticHandler mHapticHandler;
|
||||
|
||||
private static final String TAG = "SDLControllerManager";
|
||||
|
||||
public static void initialize() {
|
||||
if (mJoystickHandler == null) {
|
||||
if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) {
|
||||
mJoystickHandler = new SDLJoystickHandler_API19();
|
||||
} else {
|
||||
mJoystickHandler = new SDLJoystickHandler_API16();
|
||||
}
|
||||
}
|
||||
|
||||
if (mHapticHandler == null) {
|
||||
if (Build.VERSION.SDK_INT >= 26 /* Android 8.0 (O) */) {
|
||||
mHapticHandler = new SDLHapticHandler_API26();
|
||||
} else {
|
||||
mHapticHandler = new SDLHapticHandler();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance
|
||||
public static boolean handleJoystickMotionEvent(MotionEvent event) {
|
||||
return mJoystickHandler.handleMotionEvent(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void pollInputDevices() {
|
||||
mJoystickHandler.pollInputDevices();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void pollHapticDevices() {
|
||||
mHapticHandler.pollHapticDevices();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void hapticRun(int device_id, float intensity, int length) {
|
||||
mHapticHandler.run(device_id, intensity, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static void hapticStop(int device_id)
|
||||
{
|
||||
mHapticHandler.stop(device_id);
|
||||
}
|
||||
|
||||
// Check if a given device is considered a possible SDL joystick
|
||||
public static boolean isDeviceSDLJoystick(int deviceId) {
|
||||
InputDevice device = InputDevice.getDevice(deviceId);
|
||||
// We cannot use InputDevice.isVirtual before API 16, so let's accept
|
||||
// only nonnegative device ids (VIRTUAL_KEYBOARD equals -1)
|
||||
if ((device == null) || (deviceId < 0)) {
|
||||
return false;
|
||||
}
|
||||
int sources = device.getSources();
|
||||
|
||||
/* This is called for every button press, so let's not spam the logs */
|
||||
/*
|
||||
if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
|
||||
Log.v(TAG, "Input device " + device.getName() + " has class joystick.");
|
||||
}
|
||||
if ((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) {
|
||||
Log.v(TAG, "Input device " + device.getName() + " is a dpad.");
|
||||
}
|
||||
if ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) {
|
||||
Log.v(TAG, "Input device " + device.getName() + " is a gamepad.");
|
||||
}
|
||||
*/
|
||||
|
||||
return ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ||
|
||||
((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) ||
|
||||
((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SDLJoystickHandler {
|
||||
|
||||
/**
|
||||
* Handles given MotionEvent.
|
||||
* @param event the event to be handled.
|
||||
* @return if given event was processed.
|
||||
*/
|
||||
public boolean handleMotionEvent(MotionEvent event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles adding and removing of input devices.
|
||||
*/
|
||||
public void pollInputDevices() {
|
||||
}
|
||||
}
|
||||
|
||||
/* Actual joystick functionality available for API >= 12 devices */
|
||||
class SDLJoystickHandler_API16 extends SDLJoystickHandler {
|
||||
|
||||
static class SDLJoystick {
|
||||
public int device_id;
|
||||
public String name;
|
||||
public String desc;
|
||||
public ArrayList<InputDevice.MotionRange> axes;
|
||||
public ArrayList<InputDevice.MotionRange> hats;
|
||||
}
|
||||
static class RangeComparator implements Comparator<InputDevice.MotionRange> {
|
||||
@Override
|
||||
public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) {
|
||||
// Some controllers, like the Moga Pro 2, return AXIS_GAS (22) for right trigger and AXIS_BRAKE (23) for left trigger - swap them so they're sorted in the right order for SDL
|
||||
int arg0Axis = arg0.getAxis();
|
||||
int arg1Axis = arg1.getAxis();
|
||||
if (arg0Axis == MotionEvent.AXIS_GAS) {
|
||||
arg0Axis = MotionEvent.AXIS_BRAKE;
|
||||
} else if (arg0Axis == MotionEvent.AXIS_BRAKE) {
|
||||
arg0Axis = MotionEvent.AXIS_GAS;
|
||||
}
|
||||
if (arg1Axis == MotionEvent.AXIS_GAS) {
|
||||
arg1Axis = MotionEvent.AXIS_BRAKE;
|
||||
} else if (arg1Axis == MotionEvent.AXIS_BRAKE) {
|
||||
arg1Axis = MotionEvent.AXIS_GAS;
|
||||
}
|
||||
|
||||
// Make sure the AXIS_Z is sorted between AXIS_RY and AXIS_RZ.
|
||||
// This is because the usual pairing are:
|
||||
// - AXIS_X + AXIS_Y (left stick).
|
||||
// - AXIS_RX, AXIS_RY (sometimes the right stick, sometimes triggers).
|
||||
// - AXIS_Z, AXIS_RZ (sometimes the right stick, sometimes triggers).
|
||||
// This sorts the axes in the above order, which tends to be correct
|
||||
// for Xbox-ish game pads that have the right stick on RX/RY and the
|
||||
// triggers on Z/RZ.
|
||||
//
|
||||
// Gamepads that don't have AXIS_Z/AXIS_RZ but use
|
||||
// AXIS_LTRIGGER/AXIS_RTRIGGER are unaffected by this.
|
||||
//
|
||||
// References:
|
||||
// - https://developer.android.com/develop/ui/views/touch-and-input/game-controllers/controller-input
|
||||
// - https://www.kernel.org/doc/html/latest/input/gamepad.html
|
||||
if (arg0Axis == MotionEvent.AXIS_Z) {
|
||||
arg0Axis = MotionEvent.AXIS_RZ - 1;
|
||||
} else if (arg0Axis > MotionEvent.AXIS_Z && arg0Axis < MotionEvent.AXIS_RZ) {
|
||||
--arg0Axis;
|
||||
}
|
||||
if (arg1Axis == MotionEvent.AXIS_Z) {
|
||||
arg1Axis = MotionEvent.AXIS_RZ - 1;
|
||||
} else if (arg1Axis > MotionEvent.AXIS_Z && arg1Axis < MotionEvent.AXIS_RZ) {
|
||||
--arg1Axis;
|
||||
}
|
||||
|
||||
return arg0Axis - arg1Axis;
|
||||
}
|
||||
}
|
||||
|
||||
private final ArrayList<SDLJoystick> mJoysticks;
|
||||
|
||||
public SDLJoystickHandler_API16() {
|
||||
|
||||
mJoysticks = new ArrayList<SDLJoystick>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pollInputDevices() {
|
||||
int[] deviceIds = InputDevice.getDeviceIds();
|
||||
|
||||
for (int device_id : deviceIds) {
|
||||
if (SDLControllerManager.isDeviceSDLJoystick(device_id)) {
|
||||
SDLJoystick joystick = getJoystick(device_id);
|
||||
if (joystick == null) {
|
||||
InputDevice joystickDevice = InputDevice.getDevice(device_id);
|
||||
joystick = new SDLJoystick();
|
||||
joystick.device_id = device_id;
|
||||
joystick.name = joystickDevice.getName();
|
||||
joystick.desc = getJoystickDescriptor(joystickDevice);
|
||||
joystick.axes = new ArrayList<InputDevice.MotionRange>();
|
||||
joystick.hats = new ArrayList<InputDevice.MotionRange>();
|
||||
|
||||
List<InputDevice.MotionRange> ranges = joystickDevice.getMotionRanges();
|
||||
Collections.sort(ranges, new RangeComparator());
|
||||
for (InputDevice.MotionRange range : ranges) {
|
||||
if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
|
||||
if (range.getAxis() == MotionEvent.AXIS_HAT_X || range.getAxis() == MotionEvent.AXIS_HAT_Y) {
|
||||
joystick.hats.add(range);
|
||||
} else {
|
||||
joystick.axes.add(range);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mJoysticks.add(joystick);
|
||||
SDLControllerManager.nativeAddJoystick(joystick.device_id, joystick.name, joystick.desc,
|
||||
getVendorId(joystickDevice), getProductId(joystickDevice), false,
|
||||
getButtonMask(joystickDevice), joystick.axes.size(), getAxisMask(joystick.axes), joystick.hats.size()/2, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Check removed devices */
|
||||
ArrayList<Integer> removedDevices = null;
|
||||
for (SDLJoystick joystick : mJoysticks) {
|
||||
int device_id = joystick.device_id;
|
||||
int i;
|
||||
for (i = 0; i < deviceIds.length; i++) {
|
||||
if (device_id == deviceIds[i]) break;
|
||||
}
|
||||
if (i == deviceIds.length) {
|
||||
if (removedDevices == null) {
|
||||
removedDevices = new ArrayList<Integer>();
|
||||
}
|
||||
removedDevices.add(device_id);
|
||||
}
|
||||
}
|
||||
|
||||
if (removedDevices != null) {
|
||||
for (int device_id : removedDevices) {
|
||||
SDLControllerManager.nativeRemoveJoystick(device_id);
|
||||
for (int i = 0; i < mJoysticks.size(); i++) {
|
||||
if (mJoysticks.get(i).device_id == device_id) {
|
||||
mJoysticks.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected SDLJoystick getJoystick(int device_id) {
|
||||
for (SDLJoystick joystick : mJoysticks) {
|
||||
if (joystick.device_id == device_id) {
|
||||
return joystick;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleMotionEvent(MotionEvent event) {
|
||||
int actionPointerIndex = event.getActionIndex();
|
||||
int action = event.getActionMasked();
|
||||
if (action == MotionEvent.ACTION_MOVE) {
|
||||
SDLJoystick joystick = getJoystick(event.getDeviceId());
|
||||
if (joystick != null) {
|
||||
for (int i = 0; i < joystick.axes.size(); i++) {
|
||||
InputDevice.MotionRange range = joystick.axes.get(i);
|
||||
/* Normalize the value to -1...1 */
|
||||
float value = (event.getAxisValue(range.getAxis(), actionPointerIndex) - range.getMin()) / range.getRange() * 2.0f - 1.0f;
|
||||
SDLControllerManager.onNativeJoy(joystick.device_id, i, value);
|
||||
}
|
||||
for (int i = 0; i < joystick.hats.size() / 2; i++) {
|
||||
int hatX = Math.round(event.getAxisValue(joystick.hats.get(2 * i).getAxis(), actionPointerIndex));
|
||||
int hatY = Math.round(event.getAxisValue(joystick.hats.get(2 * i + 1).getAxis(), actionPointerIndex));
|
||||
SDLControllerManager.onNativeHat(joystick.device_id, i, hatX, hatY);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getJoystickDescriptor(InputDevice joystickDevice) {
|
||||
String desc = joystickDevice.getDescriptor();
|
||||
|
||||
if (desc != null && !desc.isEmpty()) {
|
||||
return desc;
|
||||
}
|
||||
|
||||
return joystickDevice.getName();
|
||||
}
|
||||
public int getProductId(InputDevice joystickDevice) {
|
||||
return 0;
|
||||
}
|
||||
public int getVendorId(InputDevice joystickDevice) {
|
||||
return 0;
|
||||
}
|
||||
public int getAxisMask(List<InputDevice.MotionRange> ranges) {
|
||||
return -1;
|
||||
}
|
||||
public int getButtonMask(InputDevice joystickDevice) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
class SDLJoystickHandler_API19 extends SDLJoystickHandler_API16 {
|
||||
|
||||
@Override
|
||||
public int getProductId(InputDevice joystickDevice) {
|
||||
return joystickDevice.getProductId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVendorId(InputDevice joystickDevice) {
|
||||
return joystickDevice.getVendorId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAxisMask(List<InputDevice.MotionRange> ranges) {
|
||||
// For compatibility, keep computing the axis mask like before,
|
||||
// only really distinguishing 2, 4 and 6 axes.
|
||||
int axis_mask = 0;
|
||||
if (ranges.size() >= 2) {
|
||||
// ((1 << SDL_GAMEPAD_AXIS_LEFTX) | (1 << SDL_GAMEPAD_AXIS_LEFTY))
|
||||
axis_mask |= 0x0003;
|
||||
}
|
||||
if (ranges.size() >= 4) {
|
||||
// ((1 << SDL_GAMEPAD_AXIS_RIGHTX) | (1 << SDL_GAMEPAD_AXIS_RIGHTY))
|
||||
axis_mask |= 0x000c;
|
||||
}
|
||||
if (ranges.size() >= 6) {
|
||||
// ((1 << SDL_GAMEPAD_AXIS_LEFT_TRIGGER) | (1 << SDL_GAMEPAD_AXIS_RIGHT_TRIGGER))
|
||||
axis_mask |= 0x0030;
|
||||
}
|
||||
// Also add an indicator bit for whether the sorting order has changed.
|
||||
// This serves to disable outdated gamecontrollerdb.txt mappings.
|
||||
boolean have_z = false;
|
||||
boolean have_past_z_before_rz = false;
|
||||
for (InputDevice.MotionRange range : ranges) {
|
||||
int axis = range.getAxis();
|
||||
if (axis == MotionEvent.AXIS_Z) {
|
||||
have_z = true;
|
||||
} else if (axis > MotionEvent.AXIS_Z && axis < MotionEvent.AXIS_RZ) {
|
||||
have_past_z_before_rz = true;
|
||||
}
|
||||
}
|
||||
if (have_z && have_past_z_before_rz) {
|
||||
// If both these exist, the compare() function changed sorting order.
|
||||
// Set a bit to indicate this fact.
|
||||
axis_mask |= 0x8000;
|
||||
}
|
||||
return axis_mask;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getButtonMask(InputDevice joystickDevice) {
|
||||
int button_mask = 0;
|
||||
int[] keys = new int[] {
|
||||
KeyEvent.KEYCODE_BUTTON_A,
|
||||
KeyEvent.KEYCODE_BUTTON_B,
|
||||
KeyEvent.KEYCODE_BUTTON_X,
|
||||
KeyEvent.KEYCODE_BUTTON_Y,
|
||||
KeyEvent.KEYCODE_BACK,
|
||||
KeyEvent.KEYCODE_MENU,
|
||||
KeyEvent.KEYCODE_BUTTON_MODE,
|
||||
KeyEvent.KEYCODE_BUTTON_START,
|
||||
KeyEvent.KEYCODE_BUTTON_THUMBL,
|
||||
KeyEvent.KEYCODE_BUTTON_THUMBR,
|
||||
KeyEvent.KEYCODE_BUTTON_L1,
|
||||
KeyEvent.KEYCODE_BUTTON_R1,
|
||||
KeyEvent.KEYCODE_DPAD_UP,
|
||||
KeyEvent.KEYCODE_DPAD_DOWN,
|
||||
KeyEvent.KEYCODE_DPAD_LEFT,
|
||||
KeyEvent.KEYCODE_DPAD_RIGHT,
|
||||
KeyEvent.KEYCODE_BUTTON_SELECT,
|
||||
KeyEvent.KEYCODE_DPAD_CENTER,
|
||||
|
||||
// These don't map into any SDL controller buttons directly
|
||||
KeyEvent.KEYCODE_BUTTON_L2,
|
||||
KeyEvent.KEYCODE_BUTTON_R2,
|
||||
KeyEvent.KEYCODE_BUTTON_C,
|
||||
KeyEvent.KEYCODE_BUTTON_Z,
|
||||
KeyEvent.KEYCODE_BUTTON_1,
|
||||
KeyEvent.KEYCODE_BUTTON_2,
|
||||
KeyEvent.KEYCODE_BUTTON_3,
|
||||
KeyEvent.KEYCODE_BUTTON_4,
|
||||
KeyEvent.KEYCODE_BUTTON_5,
|
||||
KeyEvent.KEYCODE_BUTTON_6,
|
||||
KeyEvent.KEYCODE_BUTTON_7,
|
||||
KeyEvent.KEYCODE_BUTTON_8,
|
||||
KeyEvent.KEYCODE_BUTTON_9,
|
||||
KeyEvent.KEYCODE_BUTTON_10,
|
||||
KeyEvent.KEYCODE_BUTTON_11,
|
||||
KeyEvent.KEYCODE_BUTTON_12,
|
||||
KeyEvent.KEYCODE_BUTTON_13,
|
||||
KeyEvent.KEYCODE_BUTTON_14,
|
||||
KeyEvent.KEYCODE_BUTTON_15,
|
||||
KeyEvent.KEYCODE_BUTTON_16,
|
||||
};
|
||||
int[] masks = new int[] {
|
||||
(1 << 0), // A -> A
|
||||
(1 << 1), // B -> B
|
||||
(1 << 2), // X -> X
|
||||
(1 << 3), // Y -> Y
|
||||
(1 << 4), // BACK -> BACK
|
||||
(1 << 6), // MENU -> START
|
||||
(1 << 5), // MODE -> GUIDE
|
||||
(1 << 6), // START -> START
|
||||
(1 << 7), // THUMBL -> LEFTSTICK
|
||||
(1 << 8), // THUMBR -> RIGHTSTICK
|
||||
(1 << 9), // L1 -> LEFTSHOULDER
|
||||
(1 << 10), // R1 -> RIGHTSHOULDER
|
||||
(1 << 11), // DPAD_UP -> DPAD_UP
|
||||
(1 << 12), // DPAD_DOWN -> DPAD_DOWN
|
||||
(1 << 13), // DPAD_LEFT -> DPAD_LEFT
|
||||
(1 << 14), // DPAD_RIGHT -> DPAD_RIGHT
|
||||
(1 << 4), // SELECT -> BACK
|
||||
(1 << 0), // DPAD_CENTER -> A
|
||||
(1 << 15), // L2 -> ??
|
||||
(1 << 16), // R2 -> ??
|
||||
(1 << 17), // C -> ??
|
||||
(1 << 18), // Z -> ??
|
||||
(1 << 20), // 1 -> ??
|
||||
(1 << 21), // 2 -> ??
|
||||
(1 << 22), // 3 -> ??
|
||||
(1 << 23), // 4 -> ??
|
||||
(1 << 24), // 5 -> ??
|
||||
(1 << 25), // 6 -> ??
|
||||
(1 << 26), // 7 -> ??
|
||||
(1 << 27), // 8 -> ??
|
||||
(1 << 28), // 9 -> ??
|
||||
(1 << 29), // 10 -> ??
|
||||
(1 << 30), // 11 -> ??
|
||||
(1 << 31), // 12 -> ??
|
||||
// We're out of room...
|
||||
0xFFFFFFFF, // 13 -> ??
|
||||
0xFFFFFFFF, // 14 -> ??
|
||||
0xFFFFFFFF, // 15 -> ??
|
||||
0xFFFFFFFF, // 16 -> ??
|
||||
};
|
||||
boolean[] has_keys = joystickDevice.hasKeys(keys);
|
||||
for (int i = 0; i < keys.length; ++i) {
|
||||
if (has_keys[i]) {
|
||||
button_mask |= masks[i];
|
||||
}
|
||||
}
|
||||
return button_mask;
|
||||
}
|
||||
}
|
||||
|
||||
class SDLHapticHandler_API26 extends SDLHapticHandler {
|
||||
@Override
|
||||
public void run(int device_id, float intensity, int length) {
|
||||
SDLHaptic haptic = getHaptic(device_id);
|
||||
if (haptic != null) {
|
||||
Log.d("SDL", "Rtest: Vibe with intensity " + intensity + " for " + length);
|
||||
if (intensity == 0.0f) {
|
||||
stop(device_id);
|
||||
return;
|
||||
}
|
||||
|
||||
int vibeValue = Math.round(intensity * 255);
|
||||
|
||||
if (vibeValue > 255) {
|
||||
vibeValue = 255;
|
||||
}
|
||||
if (vibeValue < 1) {
|
||||
stop(device_id);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
haptic.vib.vibrate(VibrationEffect.createOneShot(length, vibeValue));
|
||||
}
|
||||
catch (Exception e) {
|
||||
// Fall back to the generic method, which uses DEFAULT_AMPLITUDE, but works even if
|
||||
// something went horribly wrong with the Android 8.0 APIs.
|
||||
haptic.vib.vibrate(length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SDLHapticHandler {
|
||||
|
||||
static class SDLHaptic {
|
||||
public int device_id;
|
||||
public String name;
|
||||
public Vibrator vib;
|
||||
}
|
||||
|
||||
private final ArrayList<SDLHaptic> mHaptics;
|
||||
|
||||
public SDLHapticHandler() {
|
||||
mHaptics = new ArrayList<SDLHaptic>();
|
||||
}
|
||||
|
||||
public void run(int device_id, float intensity, int length) {
|
||||
SDLHaptic haptic = getHaptic(device_id);
|
||||
if (haptic != null) {
|
||||
haptic.vib.vibrate(length);
|
||||
}
|
||||
}
|
||||
|
||||
public void stop(int device_id) {
|
||||
SDLHaptic haptic = getHaptic(device_id);
|
||||
if (haptic != null) {
|
||||
haptic.vib.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
public void pollHapticDevices() {
|
||||
|
||||
final int deviceId_VIBRATOR_SERVICE = 999999;
|
||||
boolean hasVibratorService = false;
|
||||
|
||||
int[] deviceIds = InputDevice.getDeviceIds();
|
||||
// It helps processing the device ids in reverse order
|
||||
// For example, in the case of the XBox 360 wireless dongle,
|
||||
// so the first controller seen by SDL matches what the receiver
|
||||
// considers to be the first controller
|
||||
|
||||
for (int i = deviceIds.length - 1; i > -1; i--) {
|
||||
SDLHaptic haptic = getHaptic(deviceIds[i]);
|
||||
if (haptic == null) {
|
||||
InputDevice device = InputDevice.getDevice(deviceIds[i]);
|
||||
Vibrator vib = device.getVibrator();
|
||||
if (vib.hasVibrator()) {
|
||||
haptic = new SDLHaptic();
|
||||
haptic.device_id = deviceIds[i];
|
||||
haptic.name = device.getName();
|
||||
haptic.vib = vib;
|
||||
mHaptics.add(haptic);
|
||||
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Check VIBRATOR_SERVICE */
|
||||
Vibrator vib = (Vibrator) SDL.getContext().getSystemService(Context.VIBRATOR_SERVICE);
|
||||
if (vib != null) {
|
||||
hasVibratorService = vib.hasVibrator();
|
||||
|
||||
if (hasVibratorService) {
|
||||
SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE);
|
||||
if (haptic == null) {
|
||||
haptic = new SDLHaptic();
|
||||
haptic.device_id = deviceId_VIBRATOR_SERVICE;
|
||||
haptic.name = "VIBRATOR_SERVICE";
|
||||
haptic.vib = vib;
|
||||
mHaptics.add(haptic);
|
||||
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Check removed devices */
|
||||
ArrayList<Integer> removedDevices = null;
|
||||
for (SDLHaptic haptic : mHaptics) {
|
||||
int device_id = haptic.device_id;
|
||||
int i;
|
||||
for (i = 0; i < deviceIds.length; i++) {
|
||||
if (device_id == deviceIds[i]) break;
|
||||
}
|
||||
|
||||
if (device_id != deviceId_VIBRATOR_SERVICE || !hasVibratorService) {
|
||||
if (i == deviceIds.length) {
|
||||
if (removedDevices == null) {
|
||||
removedDevices = new ArrayList<Integer>();
|
||||
}
|
||||
removedDevices.add(device_id);
|
||||
}
|
||||
} // else: don't remove the vibrator if it is still present
|
||||
}
|
||||
|
||||
if (removedDevices != null) {
|
||||
for (int device_id : removedDevices) {
|
||||
SDLControllerManager.nativeRemoveHaptic(device_id);
|
||||
for (int i = 0; i < mHaptics.size(); i++) {
|
||||
if (mHaptics.get(i).device_id == device_id) {
|
||||
mHaptics.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected SDLHaptic getHaptic(int device_id) {
|
||||
for (SDLHaptic haptic : mHaptics) {
|
||||
if (haptic.device_id == device_id) {
|
||||
return haptic;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener {
|
||||
// Generic Motion (mouse hover, joystick...) events go here
|
||||
@Override
|
||||
public boolean onGenericMotion(View v, MotionEvent event) {
|
||||
float x, y;
|
||||
int action;
|
||||
|
||||
switch ( event.getSource() ) {
|
||||
case InputDevice.SOURCE_JOYSTICK:
|
||||
return SDLControllerManager.handleJoystickMotionEvent(event);
|
||||
|
||||
case InputDevice.SOURCE_MOUSE:
|
||||
action = event.getActionMasked();
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_SCROLL:
|
||||
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
||||
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_HOVER_MOVE:
|
||||
x = event.getX(0);
|
||||
y = event.getY(0);
|
||||
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Event was not managed
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean supportsRelativeMouse() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean inRelativeMode() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean setRelativeMouseEnabled(boolean enabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void reclaimRelativeMouseModeIfNeeded()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public float getEventX(MotionEvent event) {
|
||||
return event.getX(0);
|
||||
}
|
||||
|
||||
public float getEventY(MotionEvent event) {
|
||||
return event.getY(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SDLGenericMotionListener_API24 extends SDLGenericMotionListener_API12 {
|
||||
// Generic Motion (mouse hover, joystick...) events go here
|
||||
|
||||
private boolean mRelativeModeEnabled;
|
||||
|
||||
@Override
|
||||
public boolean onGenericMotion(View v, MotionEvent event) {
|
||||
|
||||
// Handle relative mouse mode
|
||||
if (mRelativeModeEnabled) {
|
||||
if (event.getSource() == InputDevice.SOURCE_MOUSE) {
|
||||
int action = event.getActionMasked();
|
||||
if (action == MotionEvent.ACTION_HOVER_MOVE) {
|
||||
float x = event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
|
||||
float y = event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Event was not managed, call SDLGenericMotionListener_API12 method
|
||||
return super.onGenericMotion(v, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsRelativeMouse() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean inRelativeMode() {
|
||||
return mRelativeModeEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setRelativeMouseEnabled(boolean enabled) {
|
||||
mRelativeModeEnabled = enabled;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getEventX(MotionEvent event) {
|
||||
if (mRelativeModeEnabled) {
|
||||
return event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
|
||||
} else {
|
||||
return event.getX(0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getEventY(MotionEvent event) {
|
||||
if (mRelativeModeEnabled) {
|
||||
return event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
|
||||
} else {
|
||||
return event.getY(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
||||
// Generic Motion (mouse hover, joystick...) events go here
|
||||
private boolean mRelativeModeEnabled;
|
||||
|
||||
@Override
|
||||
public boolean onGenericMotion(View v, MotionEvent event) {
|
||||
float x, y;
|
||||
int action;
|
||||
|
||||
switch ( event.getSource() ) {
|
||||
case InputDevice.SOURCE_JOYSTICK:
|
||||
return SDLControllerManager.handleJoystickMotionEvent(event);
|
||||
|
||||
case InputDevice.SOURCE_MOUSE:
|
||||
// DeX desktop mouse cursor is a separate non-standard input type.
|
||||
case InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN:
|
||||
action = event.getActionMasked();
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_SCROLL:
|
||||
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
||||
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_HOVER_MOVE:
|
||||
x = event.getX(0);
|
||||
y = event.getY(0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case InputDevice.SOURCE_MOUSE_RELATIVE:
|
||||
action = event.getActionMasked();
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_SCROLL:
|
||||
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
||||
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_HOVER_MOVE:
|
||||
x = event.getX(0);
|
||||
y = event.getY(0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, true);
|
||||
return true;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Event was not managed
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsRelativeMouse() {
|
||||
return (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean inRelativeMode() {
|
||||
return mRelativeModeEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setRelativeMouseEnabled(boolean enabled) {
|
||||
if (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */) {
|
||||
if (enabled) {
|
||||
SDLActivity.getContentView().requestPointerCapture();
|
||||
} else {
|
||||
SDLActivity.getContentView().releasePointerCapture();
|
||||
}
|
||||
mRelativeModeEnabled = enabled;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reclaimRelativeMouseModeIfNeeded()
|
||||
{
|
||||
if (mRelativeModeEnabled && !SDLActivity.isDeXMode()) {
|
||||
SDLActivity.getContentView().requestPointerCapture();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getEventX(MotionEvent event) {
|
||||
// Relative mouse in capture mode will only have relative for X/Y
|
||||
return event.getX(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getEventY(MotionEvent event) {
|
||||
// Relative mouse in capture mode will only have relative for X/Y
|
||||
return event.getY(0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,405 @@
|
|||
package org.libsdl.app;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
import android.hardware.SensorManager;
|
||||
import android.os.Build;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
import android.view.InputDevice;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
|
||||
/**
|
||||
SDLSurface. This is what we draw on, so we need to know when it's created
|
||||
in order to do anything useful.
|
||||
|
||||
Because of this, that's where we set up the SDL thread
|
||||
*/
|
||||
public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||
View.OnKeyListener, View.OnTouchListener, SensorEventListener {
|
||||
|
||||
// Sensors
|
||||
protected SensorManager mSensorManager;
|
||||
protected Display mDisplay;
|
||||
|
||||
// Keep track of the surface size to normalize touch events
|
||||
protected float mWidth, mHeight;
|
||||
|
||||
// Is SurfaceView ready for rendering
|
||||
public boolean mIsSurfaceReady;
|
||||
|
||||
// Startup
|
||||
public SDLSurface(Context context) {
|
||||
super(context);
|
||||
getHolder().addCallback(this);
|
||||
|
||||
setFocusable(true);
|
||||
setFocusableInTouchMode(true);
|
||||
requestFocus();
|
||||
setOnKeyListener(this);
|
||||
setOnTouchListener(this);
|
||||
|
||||
mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
|
||||
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
|
||||
|
||||
setOnGenericMotionListener(SDLActivity.getMotionListener());
|
||||
|
||||
// Some arbitrary defaults to avoid a potential division by zero
|
||||
mWidth = 1.0f;
|
||||
mHeight = 1.0f;
|
||||
|
||||
mIsSurfaceReady = false;
|
||||
}
|
||||
|
||||
public void handlePause() {
|
||||
enableSensor(Sensor.TYPE_ACCELEROMETER, false);
|
||||
}
|
||||
|
||||
public void handleResume() {
|
||||
setFocusable(true);
|
||||
setFocusableInTouchMode(true);
|
||||
requestFocus();
|
||||
setOnKeyListener(this);
|
||||
setOnTouchListener(this);
|
||||
enableSensor(Sensor.TYPE_ACCELEROMETER, true);
|
||||
}
|
||||
|
||||
public Surface getNativeSurface() {
|
||||
return getHolder().getSurface();
|
||||
}
|
||||
|
||||
// Called when we have a valid drawing surface
|
||||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
Log.v("SDL", "surfaceCreated()");
|
||||
SDLActivity.onNativeSurfaceCreated();
|
||||
}
|
||||
|
||||
// Called when we lose the surface
|
||||
@Override
|
||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||
Log.v("SDL", "surfaceDestroyed()");
|
||||
|
||||
// Transition to pause, if needed
|
||||
SDLActivity.mNextNativeState = SDLActivity.NativeState.PAUSED;
|
||||
SDLActivity.handleNativeState();
|
||||
|
||||
mIsSurfaceReady = false;
|
||||
SDLActivity.onNativeSurfaceDestroyed();
|
||||
}
|
||||
|
||||
// Called when the surface is resized
|
||||
@Override
|
||||
public void surfaceChanged(SurfaceHolder holder,
|
||||
int format, int width, int height) {
|
||||
Log.v("SDL", "surfaceChanged()");
|
||||
|
||||
if (SDLActivity.mSingleton == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
mWidth = width;
|
||||
mHeight = height;
|
||||
int nDeviceWidth = width;
|
||||
int nDeviceHeight = height;
|
||||
try
|
||||
{
|
||||
if (Build.VERSION.SDK_INT >= 17 /* Android 4.2 (JELLY_BEAN_MR1) */) {
|
||||
DisplayMetrics realMetrics = new DisplayMetrics();
|
||||
mDisplay.getRealMetrics( realMetrics );
|
||||
nDeviceWidth = realMetrics.widthPixels;
|
||||
nDeviceHeight = realMetrics.heightPixels;
|
||||
}
|
||||
} catch(Exception ignored) {
|
||||
}
|
||||
|
||||
synchronized(SDLActivity.getContext()) {
|
||||
// In case we're waiting on a size change after going fullscreen, send a notification.
|
||||
SDLActivity.getContext().notifyAll();
|
||||
}
|
||||
|
||||
Log.v("SDL", "Window size: " + width + "x" + height);
|
||||
Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
|
||||
SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, mDisplay.getRefreshRate());
|
||||
SDLActivity.onNativeResize();
|
||||
|
||||
// Prevent a screen distortion glitch,
|
||||
// for instance when the device is in Landscape and a Portrait App is resumed.
|
||||
boolean skip = false;
|
||||
int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
|
||||
|
||||
if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT) {
|
||||
if (mWidth > mHeight) {
|
||||
skip = true;
|
||||
}
|
||||
} else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) {
|
||||
if (mWidth < mHeight) {
|
||||
skip = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Special Patch for Square Resolution: Black Berry Passport
|
||||
if (skip) {
|
||||
double min = Math.min(mWidth, mHeight);
|
||||
double max = Math.max(mWidth, mHeight);
|
||||
|
||||
if (max / min < 1.20) {
|
||||
Log.v("SDL", "Don't skip on such aspect-ratio. Could be a square resolution.");
|
||||
skip = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't skip in MultiWindow.
|
||||
if (skip) {
|
||||
if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) {
|
||||
if (SDLActivity.mSingleton.isInMultiWindowMode()) {
|
||||
Log.v("SDL", "Don't skip in Multi-Window");
|
||||
skip = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (skip) {
|
||||
Log.v("SDL", "Skip .. Surface is not ready.");
|
||||
mIsSurfaceReady = false;
|
||||
return;
|
||||
}
|
||||
|
||||
/* If the surface has been previously destroyed by onNativeSurfaceDestroyed, recreate it here */
|
||||
SDLActivity.onNativeSurfaceChanged();
|
||||
|
||||
/* Surface is ready */
|
||||
mIsSurfaceReady = true;
|
||||
|
||||
SDLActivity.mNextNativeState = SDLActivity.NativeState.RESUMED;
|
||||
SDLActivity.handleNativeState();
|
||||
}
|
||||
|
||||
// Key events
|
||||
@Override
|
||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||
return SDLActivity.handleKeyEvent(v, keyCode, event, null);
|
||||
}
|
||||
|
||||
// Touch events
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
/* Ref: http://developer.android.com/training/gestures/multi.html */
|
||||
int touchDevId = event.getDeviceId();
|
||||
final int pointerCount = event.getPointerCount();
|
||||
int action = event.getActionMasked();
|
||||
int pointerFingerId;
|
||||
int i = -1;
|
||||
float x,y,p;
|
||||
|
||||
/*
|
||||
* Prevent id to be -1, since it's used in SDL internal for synthetic events
|
||||
* Appears when using Android emulator, eg:
|
||||
* adb shell input mouse tap 100 100
|
||||
* adb shell input touchscreen tap 100 100
|
||||
*/
|
||||
if (touchDevId < 0) {
|
||||
touchDevId -= 1;
|
||||
}
|
||||
|
||||
// 12290 = Samsung DeX mode desktop mouse
|
||||
// 12290 = 0x3002 = 0x2002 | 0x1002 = SOURCE_MOUSE | SOURCE_TOUCHSCREEN
|
||||
// 0x2 = SOURCE_CLASS_POINTER
|
||||
if (event.getSource() == InputDevice.SOURCE_MOUSE || event.getSource() == (InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN)) {
|
||||
int mouseButton = 1;
|
||||
try {
|
||||
Object object = event.getClass().getMethod("getButtonState").invoke(event);
|
||||
if (object != null) {
|
||||
mouseButton = (Integer) object;
|
||||
}
|
||||
} catch(Exception ignored) {
|
||||
}
|
||||
|
||||
// We need to check if we're in relative mouse mode and get the axis offset rather than the x/y values
|
||||
// if we are. We'll leverage our existing mouse motion listener
|
||||
SDLGenericMotionListener_API12 motionListener = SDLActivity.getMotionListener();
|
||||
x = motionListener.getEventX(event);
|
||||
y = motionListener.getEventY(event);
|
||||
|
||||
SDLActivity.onNativeMouse(mouseButton, action, x, y, motionListener.inRelativeMode());
|
||||
} else {
|
||||
switch(action) {
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
for (i = 0; i < pointerCount; i++) {
|
||||
pointerFingerId = event.getPointerId(i);
|
||||
x = event.getX(i) / mWidth;
|
||||
y = event.getY(i) / mHeight;
|
||||
p = event.getPressure(i);
|
||||
if (p > 1.0f) {
|
||||
// may be larger than 1.0f on some devices
|
||||
// see the documentation of getPressure(i)
|
||||
p = 1.0f;
|
||||
}
|
||||
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
|
||||
}
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
// Primary pointer up/down, the index is always zero
|
||||
i = 0;
|
||||
/* fallthrough */
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
case MotionEvent.ACTION_POINTER_DOWN:
|
||||
// Non primary pointer up/down
|
||||
if (i == -1) {
|
||||
i = event.getActionIndex();
|
||||
}
|
||||
|
||||
pointerFingerId = event.getPointerId(i);
|
||||
x = event.getX(i) / mWidth;
|
||||
y = event.getY(i) / mHeight;
|
||||
p = event.getPressure(i);
|
||||
if (p > 1.0f) {
|
||||
// may be larger than 1.0f on some devices
|
||||
// see the documentation of getPressure(i)
|
||||
p = 1.0f;
|
||||
}
|
||||
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_CANCEL:
|
||||
for (i = 0; i < pointerCount; i++) {
|
||||
pointerFingerId = event.getPointerId(i);
|
||||
x = event.getX(i) / mWidth;
|
||||
y = event.getY(i) / mHeight;
|
||||
p = event.getPressure(i);
|
||||
if (p > 1.0f) {
|
||||
// may be larger than 1.0f on some devices
|
||||
// see the documentation of getPressure(i)
|
||||
p = 1.0f;
|
||||
}
|
||||
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, MotionEvent.ACTION_UP, x, y, p);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Sensor events
|
||||
public void enableSensor(int sensortype, boolean enabled) {
|
||||
// TODO: This uses getDefaultSensor - what if we have >1 accels?
|
||||
if (enabled) {
|
||||
mSensorManager.registerListener(this,
|
||||
mSensorManager.getDefaultSensor(sensortype),
|
||||
SensorManager.SENSOR_DELAY_GAME, null);
|
||||
} else {
|
||||
mSensorManager.unregisterListener(this,
|
||||
mSensorManager.getDefaultSensor(sensortype));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
|
||||
|
||||
// Since we may have an orientation set, we won't receive onConfigurationChanged events.
|
||||
// We thus should check here.
|
||||
int newOrientation;
|
||||
|
||||
float x, y;
|
||||
switch (mDisplay.getRotation()) {
|
||||
case Surface.ROTATION_90:
|
||||
x = -event.values[1];
|
||||
y = event.values[0];
|
||||
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE;
|
||||
break;
|
||||
case Surface.ROTATION_270:
|
||||
x = event.values[1];
|
||||
y = -event.values[0];
|
||||
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
|
||||
break;
|
||||
case Surface.ROTATION_180:
|
||||
x = -event.values[0];
|
||||
y = -event.values[1];
|
||||
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
|
||||
break;
|
||||
case Surface.ROTATION_0:
|
||||
default:
|
||||
x = event.values[0];
|
||||
y = event.values[1];
|
||||
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT;
|
||||
break;
|
||||
}
|
||||
|
||||
if (newOrientation != SDLActivity.mCurrentOrientation) {
|
||||
SDLActivity.mCurrentOrientation = newOrientation;
|
||||
SDLActivity.onNativeOrientationChanged(newOrientation);
|
||||
}
|
||||
|
||||
SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
|
||||
y / SensorManager.GRAVITY_EARTH,
|
||||
event.values[2] / SensorManager.GRAVITY_EARTH);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Captured pointer events for API 26.
|
||||
public boolean onCapturedPointerEvent(MotionEvent event)
|
||||
{
|
||||
int action = event.getActionMasked();
|
||||
|
||||
float x, y;
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_SCROLL:
|
||||
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
||||
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_HOVER_MOVE:
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
x = event.getX(0);
|
||||
y = event.getY(0);
|
||||
SDLActivity.onNativeMouse(0, action, x, y, true);
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_BUTTON_PRESS:
|
||||
case MotionEvent.ACTION_BUTTON_RELEASE:
|
||||
|
||||
// Change our action value to what SDL's code expects.
|
||||
if (action == MotionEvent.ACTION_BUTTON_PRESS) {
|
||||
action = MotionEvent.ACTION_DOWN;
|
||||
} else { /* MotionEvent.ACTION_BUTTON_RELEASE */
|
||||
action = MotionEvent.ACTION_UP;
|
||||
}
|
||||
|
||||
x = event.getX(0);
|
||||
y = event.getY(0);
|
||||
int button = event.getButtonState();
|
||||
|
||||
SDLActivity.onNativeMouse(button, action, x, y, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ buildscript {
|
|||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.3.0-alpha10'
|
||||
classpath 'com.android.tools.build:gradle:8.3.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
android.enableJetifier=true
|
||||
android.enableJetifier=false
|
||||
android.useAndroidX=true
|
||||
org.gradle.configuration-cache=true
|
||||
org.gradle.jvmargs=-Xmx4096m
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#Tue Dec 17 14:39:20 EST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
||||
|
|
|
@ -1,74 +1,127 @@
|
|||
#!/usr/bin/env bash
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
# Resolve links: $0 may be a link
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn ( ) {
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die ( ) {
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
nonstop=false
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
@ -77,84 +130,120 @@ Please set the JAVA_HOME variable in your environment to match the
|
|||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ -n "$GRADLE_CYGPATTERN" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
|
@ -1,4 +1,20 @@
|
|||
@if "%DEBUG%" == "" @echo off
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
|
@ -8,20 +24,24 @@
|
|||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
@ -35,7 +55,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
@ -45,44 +65,26 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -27,7 +27,7 @@ CursorRepository::~CursorRepository()
|
|||
|
||||
void CursorRepository::LoadCursors()
|
||||
{
|
||||
SetCursorScale(static_cast<uint8_t>(round(gConfigGeneral.WindowScale)));
|
||||
SetCursorScale(static_cast<uint8_t>(round(Config::Get().general.WindowScale)));
|
||||
SetCurrentCursor(CursorID::Arrow);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -11,6 +11,8 @@
|
|||
|
||||
#include <SDL.h>
|
||||
|
||||
using namespace OpenRCT2::Ui;
|
||||
|
||||
SDLException::SDLException(const std::string& message)
|
||||
: runtime_error(message.c_str())
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -12,19 +12,22 @@
|
|||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
* An exception which wraps an SDL error.
|
||||
*/
|
||||
class SDLException : public std::runtime_error
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
public:
|
||||
explicit SDLException(const std::string& message);
|
||||
|
||||
explicit SDLException(const char* message);
|
||||
|
||||
/**
|
||||
* Throws an SDL exception with a message containing the given call information
|
||||
* and the message given by SDL_GetError.
|
||||
* An exception which wraps an SDL error.
|
||||
*/
|
||||
static void Throw(const char* call);
|
||||
};
|
||||
class SDLException : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
explicit SDLException(const std::string& message);
|
||||
|
||||
explicit SDLException(const char* message);
|
||||
|
||||
/**
|
||||
* Throws an SDL exception with a message containing the given call information
|
||||
* and the message given by SDL_GetError.
|
||||
*/
|
||||
static void Throw(const char* call);
|
||||
};
|
||||
} // namespace OpenRCT2::Ui
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -10,16 +10,19 @@
|
|||
#include "TextComposition.h"
|
||||
|
||||
#include "UiContext.h"
|
||||
#include "UiStringIds.h"
|
||||
#include "interface/InGameConsole.h"
|
||||
|
||||
#include <SDL.h>
|
||||
#include <algorithm>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
#include <openrct2/common.h>
|
||||
#include <openrct2/core/Memory.hpp>
|
||||
#include <openrct2/core/String.hpp>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/localisation/Language.h>
|
||||
|
||||
// TODO: only because of STR_NONE. We can do better.
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
|
||||
#ifdef __MACOSX__
|
||||
// macOS uses COMMAND rather than CTRL for many keyboard shortcuts
|
||||
|
@ -38,11 +41,7 @@ bool TextComposition::IsActive()
|
|||
|
||||
TextInputSession* TextComposition::Start(u8string& buffer, size_t maxLength)
|
||||
{
|
||||
// TODO This doesn't work, and position could be improved to where text entry is
|
||||
SDL_Rect rect = { 10, 10, 100, 100 };
|
||||
SDL_SetTextInputRect(&rect);
|
||||
SDL_StartTextInput();
|
||||
|
||||
_session.Buffer = &buffer;
|
||||
_session.MaxLength = maxLength;
|
||||
_session.SelectionStart = buffer.size();
|
||||
|
@ -88,7 +87,7 @@ void TextComposition::HandleMessage(const SDL_Event* e)
|
|||
Insert(e->text.text);
|
||||
|
||||
console.RefreshCaret(_session.SelectionStart);
|
||||
WindowUpdateTextbox();
|
||||
OpenRCT2::Ui::Windows::WindowUpdateTextbox();
|
||||
}
|
||||
break;
|
||||
case SDL_KEYDOWN:
|
||||
|
@ -131,7 +130,7 @@ void TextComposition::HandleMessage(const SDL_Event* e)
|
|||
Delete();
|
||||
|
||||
console.RefreshCaret(_session.SelectionStart);
|
||||
WindowUpdateTextbox();
|
||||
OpenRCT2::Ui::Windows::WindowUpdateTextbox();
|
||||
}
|
||||
break;
|
||||
case SDLK_HOME:
|
||||
|
@ -153,11 +152,11 @@ void TextComposition::HandleMessage(const SDL_Event* e)
|
|||
_session.SelectionStart = startOffset;
|
||||
Delete();
|
||||
console.RefreshCaret(_session.SelectionStart);
|
||||
WindowUpdateTextbox();
|
||||
OpenRCT2::Ui::Windows::WindowUpdateTextbox();
|
||||
break;
|
||||
}
|
||||
case SDLK_RETURN:
|
||||
WindowCancelTextbox();
|
||||
OpenRCT2::Ui::Windows::WindowCancelTextbox();
|
||||
break;
|
||||
case SDLK_LEFT:
|
||||
if (modifier & KEYBOARD_PRIMARY_MODIFIER)
|
||||
|
@ -186,7 +185,7 @@ void TextComposition::HandleMessage(const SDL_Event* e)
|
|||
utf8* text = SDL_GetClipboardText();
|
||||
Insert(text);
|
||||
SDL_free(text);
|
||||
WindowUpdateTextbox();
|
||||
OpenRCT2::Ui::Windows::WindowUpdateTextbox();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -276,7 +275,8 @@ void TextComposition::CaretMoveToLeftToken()
|
|||
lastChar = selectionOffset;
|
||||
break;
|
||||
}
|
||||
|
||||
if (selectionOffset == 0)
|
||||
break;
|
||||
ch--;
|
||||
selectionOffset--;
|
||||
}
|
||||
|
@ -295,12 +295,13 @@ void TextComposition::CaretMoveToLeftToken()
|
|||
break;
|
||||
|
||||
lastChar = selectionOffset;
|
||||
|
||||
if (selectionOffset == 0)
|
||||
break;
|
||||
ch--;
|
||||
selectionOffset--;
|
||||
}
|
||||
|
||||
_session.SelectionSize = std::max<size_t>(0, _session.SelectionSize - (selectionOffset - _session.SelectionStart));
|
||||
_session.SelectionSize = _session.SelectionSize - (selectionOffset - _session.SelectionStart);
|
||||
_session.SelectionStart = selectionOffset == 0 ? 0 : lastChar;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -11,13 +11,16 @@
|
|||
|
||||
# include "UiContext.h"
|
||||
|
||||
# include "UiStringIds.h"
|
||||
|
||||
# include <SDL.h>
|
||||
# include <algorithm>
|
||||
# include <dlfcn.h>
|
||||
# include <openrct2/common.h>
|
||||
# include <openrct2/core/Path.hpp>
|
||||
# include <openrct2/core/String.hpp>
|
||||
# include <openrct2/core/StringBuilder.h>
|
||||
# include <openrct2/localisation/Localisation.h>
|
||||
# include <openrct2/localisation/Language.h>
|
||||
# include <openrct2/platform/Platform.h>
|
||||
# include <openrct2/ui/UiContext.h>
|
||||
# include <sstream>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -11,6 +11,9 @@
|
|||
|
||||
// Windows.h needs to be included first
|
||||
// clang-format off
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# include <shellapi.h>
|
||||
// clang-format on
|
||||
|
@ -21,7 +24,6 @@
|
|||
|
||||
# include <SDL.h>
|
||||
# include <SDL_syswm.h>
|
||||
# include <algorithm>
|
||||
# include <openrct2/common.h>
|
||||
# include <openrct2/core/Path.hpp>
|
||||
# include <openrct2/core/String.hpp>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include "CursorRepository.h"
|
||||
#include "SDLException.h"
|
||||
#include "TextComposition.h"
|
||||
#include "UiStringIds.h"
|
||||
#include "WindowManager.h"
|
||||
#include "drawing/engines/DrawingEngineFactory.hpp"
|
||||
#include "input/ShortcutManager.h"
|
||||
|
@ -21,7 +22,6 @@
|
|||
#include "title/TitleSequencePlayer.h"
|
||||
|
||||
#include <SDL.h>
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
|
@ -39,15 +39,17 @@
|
|||
#include <openrct2/drawing/IDrawingEngine.h>
|
||||
#include <openrct2/interface/Chat.h>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
#include <openrct2/platform/Platform.h>
|
||||
#include <openrct2/scenes/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/scripting/ScriptEngine.h>
|
||||
#include <openrct2/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/ui/WindowManager.h>
|
||||
#include <openrct2/world/Location.hpp>
|
||||
#include <vector>
|
||||
|
||||
// TODO: only because of STR_NONE. We can do better.
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Drawing;
|
||||
using namespace OpenRCT2::Scripting;
|
||||
|
@ -140,6 +142,10 @@ public:
|
|||
void Tick() override
|
||||
{
|
||||
_inGameConsole.Update();
|
||||
|
||||
_windowManager->UpdateMapTooltip();
|
||||
|
||||
WindowDispatchUpdateAll();
|
||||
}
|
||||
|
||||
void Draw(DrawPixelInfo& dpi) override
|
||||
|
@ -177,7 +183,7 @@ public:
|
|||
SDL_WINDOW_FULLSCREEN,
|
||||
SDL_WINDOW_FULLSCREEN_DESKTOP,
|
||||
};
|
||||
uint32_t windowFlags = _sdlFullscreenFlags[static_cast<int32_t>(mode)];
|
||||
uint32_t windowFlags = _sdlFullscreenFlags[EnumValue(mode)];
|
||||
|
||||
// HACK Changing window size when in fullscreen usually has no effect
|
||||
if (mode == FULLSCREEN_MODE::FULLSCREEN)
|
||||
|
@ -186,12 +192,13 @@ public:
|
|||
|
||||
// Set window size
|
||||
UpdateFullscreenResolutions();
|
||||
Resolution resolution = GetClosestResolution(gConfigGeneral.FullscreenWidth, gConfigGeneral.FullscreenHeight);
|
||||
Resolution resolution = GetClosestResolution(
|
||||
Config::Get().general.FullscreenWidth, Config::Get().general.FullscreenHeight);
|
||||
SDL_SetWindowSize(_window, resolution.Width, resolution.Height);
|
||||
}
|
||||
else if (mode == FULLSCREEN_MODE::WINDOWED)
|
||||
{
|
||||
SDL_SetWindowSize(_window, gConfigGeneral.WindowWidth, gConfigGeneral.WindowHeight);
|
||||
SDL_SetWindowSize(_window, Config::Get().general.WindowWidth, Config::Get().general.WindowHeight);
|
||||
}
|
||||
|
||||
if (SDL_SetWindowFullscreen(_window, windowFlags))
|
||||
|
@ -352,16 +359,16 @@ public:
|
|||
{
|
||||
// Update default display index
|
||||
int32_t displayIndex = SDL_GetWindowDisplayIndex(_window);
|
||||
if (displayIndex != gConfigGeneral.DefaultDisplay)
|
||||
if (displayIndex != Config::Get().general.DefaultDisplay)
|
||||
{
|
||||
gConfigGeneral.DefaultDisplay = displayIndex;
|
||||
ConfigSaveDefault();
|
||||
Config::Get().general.DefaultDisplay = displayIndex;
|
||||
Config::Save();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (gConfigSound.audio_focus)
|
||||
if (Config::Get().sound.audio_focus)
|
||||
{
|
||||
if (e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED)
|
||||
{
|
||||
|
@ -374,8 +381,8 @@ public:
|
|||
}
|
||||
break;
|
||||
case SDL_MOUSEMOTION:
|
||||
_cursorState.position = { static_cast<int32_t>(e.motion.x / gConfigGeneral.WindowScale),
|
||||
static_cast<int32_t>(e.motion.y / gConfigGeneral.WindowScale) };
|
||||
_cursorState.position = { static_cast<int32_t>(e.motion.x / Config::Get().general.WindowScale),
|
||||
static_cast<int32_t>(e.motion.y / Config::Get().general.WindowScale) };
|
||||
break;
|
||||
case SDL_MOUSEWHEEL:
|
||||
if (_inGameConsole.IsOpen())
|
||||
|
@ -391,8 +398,8 @@ public:
|
|||
{
|
||||
break;
|
||||
}
|
||||
ScreenCoordsXY mousePos = { static_cast<int32_t>(e.button.x / gConfigGeneral.WindowScale),
|
||||
static_cast<int32_t>(e.button.y / gConfigGeneral.WindowScale) };
|
||||
ScreenCoordsXY mousePos = { static_cast<int32_t>(e.button.x / Config::Get().general.WindowScale),
|
||||
static_cast<int32_t>(e.button.y / Config::Get().general.WindowScale) };
|
||||
switch (e.button.button)
|
||||
{
|
||||
case SDL_BUTTON_LEFT:
|
||||
|
@ -427,8 +434,8 @@ public:
|
|||
{
|
||||
break;
|
||||
}
|
||||
ScreenCoordsXY mousePos = { static_cast<int32_t>(e.button.x / gConfigGeneral.WindowScale),
|
||||
static_cast<int32_t>(e.button.y / gConfigGeneral.WindowScale) };
|
||||
ScreenCoordsXY mousePos = { static_cast<int32_t>(e.button.x / Config::Get().general.WindowScale),
|
||||
static_cast<int32_t>(e.button.y / Config::Get().general.WindowScale) };
|
||||
switch (e.button.button)
|
||||
{
|
||||
case SDL_BUTTON_LEFT:
|
||||
|
@ -582,7 +589,7 @@ public:
|
|||
{
|
||||
char scaleQualityBuffer[4];
|
||||
_scaleQuality = ScaleQuality::SmoothNearestNeighbour;
|
||||
if (gConfigGeneral.WindowScale == std::floor(gConfigGeneral.WindowScale))
|
||||
if (Config::Get().general.WindowScale == std::floor(Config::Get().general.WindowScale))
|
||||
{
|
||||
_scaleQuality = ScaleQuality::NearestNeighbour;
|
||||
}
|
||||
|
@ -602,10 +609,10 @@ public:
|
|||
|
||||
void CreateWindow() override
|
||||
{
|
||||
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, gConfigGeneral.MinimizeFullscreenFocusLoss ? "1" : "0");
|
||||
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, Config::Get().general.MinimizeFullscreenFocusLoss ? "1" : "0");
|
||||
|
||||
// Set window position to default display
|
||||
int32_t defaultDisplay = std::clamp(gConfigGeneral.DefaultDisplay, 0, 0xFFFF);
|
||||
int32_t defaultDisplay = std::clamp(Config::Get().general.DefaultDisplay, 0, 0xFFFF);
|
||||
auto windowPos = ScreenCoordsXY{ static_cast<int32_t>(SDL_WINDOWPOS_UNDEFINED_DISPLAY(defaultDisplay)),
|
||||
static_cast<int32_t>(SDL_WINDOWPOS_UNDEFINED_DISPLAY(defaultDisplay)) };
|
||||
|
||||
|
@ -714,9 +721,7 @@ public:
|
|||
{
|
||||
if (_titleSequencePlayer == nullptr)
|
||||
{
|
||||
auto context = GetContext();
|
||||
auto gameState = context->GetGameState();
|
||||
_titleSequencePlayer = OpenRCT2::Title::CreateTitleSequencePlayer(*gameState);
|
||||
_titleSequencePlayer = OpenRCT2::Title::CreateTitleSequencePlayer();
|
||||
}
|
||||
return _titleSequencePlayer.get();
|
||||
}
|
||||
|
@ -732,8 +737,8 @@ private:
|
|||
void CreateWindow(const ScreenCoordsXY& windowPos)
|
||||
{
|
||||
// Get saved window size
|
||||
int32_t width = gConfigGeneral.WindowWidth;
|
||||
int32_t height = gConfigGeneral.WindowHeight;
|
||||
int32_t width = Config::Get().general.WindowWidth;
|
||||
int32_t height = Config::Get().general.WindowHeight;
|
||||
if (width <= 0)
|
||||
width = 640;
|
||||
if (height <= 0)
|
||||
|
@ -741,7 +746,7 @@ private:
|
|||
|
||||
// Create window in window first rather than fullscreen so we have the display the window is on first
|
||||
uint32_t flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI;
|
||||
if (gConfigGeneral.DrawingEngine == DrawingEngine::OpenGL)
|
||||
if (Config::Get().general.DrawingEngine == DrawingEngine::OpenGL)
|
||||
{
|
||||
flags |= SDL_WINDOW_OPENGL;
|
||||
}
|
||||
|
@ -755,7 +760,7 @@ private:
|
|||
ApplyScreenSaverLockSetting();
|
||||
|
||||
SDL_SetWindowMinimumSize(_window, 720, 480);
|
||||
SetCursorTrap(gConfigGeneral.TrapCursor);
|
||||
SetCursorTrap(Config::Get().general.TrapCursor);
|
||||
_platformUiContext->SetWindowIcon(_window);
|
||||
|
||||
// Initialise the surface, palette and draw buffer
|
||||
|
@ -764,20 +769,15 @@ private:
|
|||
|
||||
UpdateFullscreenResolutions();
|
||||
|
||||
// Fix #4022: Force Mac to windowed to avoid cursor offset on launch issue
|
||||
#ifdef __MACOSX__
|
||||
gConfigGeneral.FullscreenMode = static_cast<int32_t>(OpenRCT2::Ui::FULLSCREEN_MODE::WINDOWED);
|
||||
#else
|
||||
SetFullscreenMode(static_cast<FULLSCREEN_MODE>(gConfigGeneral.FullscreenMode));
|
||||
#endif
|
||||
SetFullscreenMode(static_cast<FULLSCREEN_MODE>(Config::Get().general.FullscreenMode));
|
||||
TriggerResize();
|
||||
}
|
||||
|
||||
void OnResize(int32_t width, int32_t height)
|
||||
{
|
||||
// Scale the native window size to the game's canvas size
|
||||
_width = static_cast<int32_t>(width / gConfigGeneral.WindowScale);
|
||||
_height = static_cast<int32_t>(height / gConfigGeneral.WindowScale);
|
||||
_width = static_cast<int32_t>(width / Config::Get().general.WindowScale);
|
||||
_height = static_cast<int32_t>(height / Config::Get().general.WindowScale);
|
||||
|
||||
DrawingEngineResize();
|
||||
|
||||
|
@ -799,11 +799,11 @@ private:
|
|||
|
||||
if (!(flags & nonWindowFlags))
|
||||
{
|
||||
if (width != gConfigGeneral.WindowWidth || height != gConfigGeneral.WindowHeight)
|
||||
if (width != Config::Get().general.WindowWidth || height != Config::Get().general.WindowHeight)
|
||||
{
|
||||
gConfigGeneral.WindowWidth = width;
|
||||
gConfigGeneral.WindowHeight = height;
|
||||
ConfigSaveDefault();
|
||||
Config::Get().general.WindowWidth = width;
|
||||
Config::Get().general.WindowHeight = height;
|
||||
Config::Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -848,10 +848,11 @@ private:
|
|||
resolutions.erase(last, resolutions.end());
|
||||
|
||||
// Update config fullscreen resolution if not set
|
||||
if (!resolutions.empty() && (gConfigGeneral.FullscreenWidth == -1 || gConfigGeneral.FullscreenHeight == -1))
|
||||
if (!resolutions.empty()
|
||||
&& (Config::Get().general.FullscreenWidth == -1 || Config::Get().general.FullscreenHeight == -1))
|
||||
{
|
||||
gConfigGeneral.FullscreenWidth = resolutions.back().Width;
|
||||
gConfigGeneral.FullscreenHeight = resolutions.back().Height;
|
||||
Config::Get().general.FullscreenWidth = resolutions.back().Width;
|
||||
Config::Get().general.FullscreenHeight = resolutions.back().Height;
|
||||
}
|
||||
|
||||
_fsResolutions = resolutions;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -20,35 +20,35 @@ namespace OpenRCT2
|
|||
{
|
||||
struct IContext;
|
||||
struct IPlatformEnvironment;
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
struct FileDialogDesc;
|
||||
class InGameConsole;
|
||||
struct IUiContext;
|
||||
|
||||
struct IPlatformUiContext
|
||||
{
|
||||
virtual ~IPlatformUiContext() = default;
|
||||
virtual void SetWindowIcon(SDL_Window* window) abstract;
|
||||
virtual bool IsSteamOverlayAttached() abstract;
|
||||
|
||||
virtual void ShowMessageBox(SDL_Window* window, const std::string& message) abstract;
|
||||
virtual bool HasMenuSupport() abstract;
|
||||
virtual int32_t ShowMenuDialog(
|
||||
const std::vector<std::string>& options, const std::string& title, const std::string& text) abstract;
|
||||
virtual void OpenFolder(const std::string& path) abstract;
|
||||
|
||||
virtual void OpenURL(const std::string& url) abstract;
|
||||
virtual std::string ShowFileDialog(SDL_Window* window, const FileDialogDesc& desc) abstract;
|
||||
virtual std::string ShowDirectoryDialog(SDL_Window* window, const std::string& title) abstract;
|
||||
|
||||
virtual bool HasFilePicker() const abstract;
|
||||
};
|
||||
|
||||
[[nodiscard]] std::unique_ptr<IUiContext> CreateUiContext(const std::shared_ptr<IPlatformEnvironment>& env);
|
||||
[[nodiscard]] std::unique_ptr<IPlatformUiContext> CreatePlatformUiContext();
|
||||
|
||||
[[nodiscard]] InGameConsole& GetInGameConsole();
|
||||
} // namespace Ui
|
||||
} // namespace OpenRCT2
|
||||
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
struct FileDialogDesc;
|
||||
class InGameConsole;
|
||||
struct IUiContext;
|
||||
|
||||
struct IPlatformUiContext
|
||||
{
|
||||
virtual ~IPlatformUiContext() = default;
|
||||
virtual void SetWindowIcon(SDL_Window* window) abstract;
|
||||
virtual bool IsSteamOverlayAttached() abstract;
|
||||
|
||||
virtual void ShowMessageBox(SDL_Window* window, const std::string& message) abstract;
|
||||
virtual bool HasMenuSupport() abstract;
|
||||
virtual int32_t ShowMenuDialog(
|
||||
const std::vector<std::string>& options, const std::string& title, const std::string& text) abstract;
|
||||
virtual void OpenFolder(const std::string& path) abstract;
|
||||
|
||||
virtual void OpenURL(const std::string& url) abstract;
|
||||
virtual std::string ShowFileDialog(SDL_Window* window, const FileDialogDesc& desc) abstract;
|
||||
virtual std::string ShowDirectoryDialog(SDL_Window* window, const std::string& title) abstract;
|
||||
|
||||
virtual bool HasFilePicker() const abstract;
|
||||
};
|
||||
|
||||
[[nodiscard]] std::unique_ptr<IUiContext> CreateUiContext(const std::shared_ptr<IPlatformEnvironment>& env);
|
||||
[[nodiscard]] std::unique_ptr<IPlatformUiContext> CreatePlatformUiContext();
|
||||
|
||||
[[nodiscard]] InGameConsole& GetInGameConsole();
|
||||
} // namespace OpenRCT2::Ui
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -129,6 +129,7 @@ namespace OpenRCT2::Ui
|
|||
}
|
||||
else
|
||||
{
|
||||
SDL_RaiseWindow(window);
|
||||
return std::string();
|
||||
}
|
||||
|
||||
|
@ -137,10 +138,12 @@ namespace OpenRCT2::Ui
|
|||
panel.directoryURL = [NSURL fileURLWithPath:directory];
|
||||
if ([panel runModal] == NSModalResponseCancel)
|
||||
{
|
||||
SDL_RaiseWindow(window);
|
||||
return std::string();
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_RaiseWindow(window);
|
||||
return panel.URL.path.UTF8String;
|
||||
}
|
||||
}
|
||||
|
@ -158,10 +161,12 @@ namespace OpenRCT2::Ui
|
|||
{
|
||||
NSString* selectedPath = panel.URL.path;
|
||||
const char* path = selectedPath.UTF8String;
|
||||
SDL_RaiseWindow(window);
|
||||
return path;
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_RaiseWindow(window);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -10,6 +10,7 @@
|
|||
#include "WindowManager.h"
|
||||
|
||||
#include "interface/Theme.h"
|
||||
#include "ride/VehicleSounds.h"
|
||||
#include "windows/Window.h"
|
||||
|
||||
#include <openrct2-ui/input/InputManager.h>
|
||||
|
@ -27,7 +28,9 @@
|
|||
#include <openrct2/ride/Vehicle.h>
|
||||
#include <openrct2/ui/WindowManager.h>
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Ui;
|
||||
using namespace OpenRCT2::Ui::Windows;
|
||||
|
||||
class WindowManager final : public IWindowManager
|
||||
{
|
||||
|
@ -43,101 +46,101 @@ public:
|
|||
switch (wc)
|
||||
{
|
||||
case WindowClass::About:
|
||||
return WindowAboutOpen();
|
||||
return AboutOpen();
|
||||
case WindowClass::BottomToolbar:
|
||||
return WindowGameBottomToolbarOpen();
|
||||
return GameBottomToolbarOpen();
|
||||
case WindowClass::Changelog:
|
||||
return OpenView(WV_CHANGELOG);
|
||||
case WindowClass::Cheats:
|
||||
return WindowCheatsOpen();
|
||||
return CheatsOpen();
|
||||
case WindowClass::ClearScenery:
|
||||
return WindowClearSceneryOpen();
|
||||
return ClearSceneryOpen();
|
||||
case WindowClass::CustomCurrencyConfig:
|
||||
return CustomCurrencyWindowOpen();
|
||||
return CustomCurrencyOpen();
|
||||
case WindowClass::DebugPaint:
|
||||
return WindowDebugPaintOpen();
|
||||
return DebugPaintOpen();
|
||||
case WindowClass::EditorInventionList:
|
||||
return WindowEditorInventionsListOpen();
|
||||
return EditorInventionsListOpen();
|
||||
case WindowClass::EditorObjectSelection:
|
||||
return WindowEditorObjectSelectionOpen();
|
||||
return EditorObjectSelectionOpen();
|
||||
case WindowClass::EditorObjectiveOptions:
|
||||
return WindowEditorObjectiveOptionsOpen();
|
||||
return EditorObjectiveOptionsOpen();
|
||||
case WindowClass::EditorScenarioOptions:
|
||||
return WindowEditorScenarioOptionsOpen();
|
||||
return EditorScenarioOptionsOpen();
|
||||
case WindowClass::Finances:
|
||||
return WindowFinancesOpen();
|
||||
return FinancesOpen();
|
||||
case WindowClass::Footpath:
|
||||
return WindowFootpathOpen();
|
||||
return FootpathOpen();
|
||||
case WindowClass::GuestList:
|
||||
return WindowGuestListOpen();
|
||||
return GuestListOpen();
|
||||
case WindowClass::Land:
|
||||
return WindowLandOpen();
|
||||
return LandOpen();
|
||||
case WindowClass::LandRights:
|
||||
return WindowLandRightsOpen();
|
||||
return LandRightsOpen();
|
||||
case WindowClass::MainWindow:
|
||||
return WindowMainOpen();
|
||||
return MainOpen();
|
||||
case WindowClass::Map:
|
||||
return WindowMapOpen();
|
||||
return MapOpen();
|
||||
case WindowClass::Mapgen:
|
||||
return WindowMapgenOpen();
|
||||
return MapgenOpen();
|
||||
case WindowClass::Multiplayer:
|
||||
return WindowMultiplayerOpen();
|
||||
return MultiplayerOpen();
|
||||
case WindowClass::ConstructRide:
|
||||
return WindowNewRideOpen();
|
||||
return NewRideOpen();
|
||||
case WindowClass::ParkInformation:
|
||||
return WindowParkEntranceOpen();
|
||||
return ParkEntranceOpen();
|
||||
case WindowClass::RecentNews:
|
||||
return WindowNewsOpen();
|
||||
return NewsOpen();
|
||||
case WindowClass::RideConstruction:
|
||||
return WindowRideConstructionOpen();
|
||||
return RideConstructionOpen();
|
||||
case WindowClass::Research:
|
||||
return WindowResearchOpen();
|
||||
return ResearchOpen();
|
||||
case WindowClass::RideList:
|
||||
return WindowRideListOpen();
|
||||
return RideListOpen();
|
||||
case WindowClass::NotificationOptions:
|
||||
return WindowNewsOptionsOpen();
|
||||
return NewsOptionsOpen();
|
||||
case WindowClass::Options:
|
||||
return WindowOptionsOpen();
|
||||
return OptionsOpen();
|
||||
case WindowClass::SavePrompt:
|
||||
return WindowSavePromptOpen();
|
||||
return SavePromptOpen();
|
||||
case WindowClass::Scenery:
|
||||
return WindowSceneryOpen();
|
||||
return SceneryOpen();
|
||||
case WindowClass::SceneryScatter:
|
||||
return WindowSceneryScatterOpen();
|
||||
return SceneryScatterOpen();
|
||||
#ifndef DISABLE_NETWORK
|
||||
case WindowClass::ServerList:
|
||||
return WindowServerListOpen();
|
||||
return ServerListOpen();
|
||||
case WindowClass::ServerStart:
|
||||
return WindowServerStartOpen();
|
||||
return ServerStartOpen();
|
||||
#endif
|
||||
case WindowClass::KeyboardShortcutList:
|
||||
return WindowShortcutKeysOpen();
|
||||
return ShortcutKeysOpen();
|
||||
case WindowClass::StaffList:
|
||||
return WindowStaffListOpen();
|
||||
return StaffListOpen();
|
||||
case WindowClass::Themes:
|
||||
return WindowThemesOpen();
|
||||
return ThemesOpen();
|
||||
case WindowClass::TileInspector:
|
||||
return WindowTileInspectorOpen();
|
||||
return TileInspectorOpen();
|
||||
case WindowClass::TitleExit:
|
||||
return WindowTitleExitOpen();
|
||||
return TitleExitOpen();
|
||||
case WindowClass::TitleLogo:
|
||||
return WindowTitleLogoOpen();
|
||||
return TitleLogoOpen();
|
||||
case WindowClass::TitleMenu:
|
||||
return WindowTitleMenuOpen();
|
||||
return TitleMenuOpen();
|
||||
case WindowClass::TitleOptions:
|
||||
return WindowTitleOptionsOpen();
|
||||
return TitleOptionsOpen();
|
||||
case WindowClass::TopToolbar:
|
||||
return WindowTopToolbarOpen();
|
||||
return TopToolbarOpen();
|
||||
case WindowClass::ViewClipping:
|
||||
return WindowViewClippingOpen();
|
||||
return ViewClippingOpen();
|
||||
case WindowClass::Viewport:
|
||||
return WindowViewportOpen();
|
||||
return ViewportOpen();
|
||||
case WindowClass::Water:
|
||||
return WindowWaterOpen();
|
||||
return WaterOpen();
|
||||
case WindowClass::Transparency:
|
||||
return WindowTransparencyOpen();
|
||||
return TransparencyOpen();
|
||||
case WindowClass::AssetPacks:
|
||||
return WindowAssetPacksOpen();
|
||||
return AssetPacksOpen();
|
||||
default:
|
||||
Console::Error::WriteLine("Unhandled window class (%d)", wc);
|
||||
return nullptr;
|
||||
|
@ -149,35 +152,35 @@ public:
|
|||
switch (view)
|
||||
{
|
||||
case WV_PARK_AWARDS:
|
||||
return WindowParkAwardsOpen();
|
||||
return ParkAwardsOpen();
|
||||
case WV_PARK_RATING:
|
||||
return WindowParkRatingOpen();
|
||||
return ParkRatingOpen();
|
||||
case WV_PARK_OBJECTIVE:
|
||||
return WindowParkObjectiveOpen();
|
||||
return ParkObjectiveOpen();
|
||||
case WV_PARK_GUESTS:
|
||||
return WindowParkGuestsOpen();
|
||||
return ParkGuestsOpen();
|
||||
case WV_FINANCES_RESEARCH:
|
||||
return WindowFinancesResearchOpen();
|
||||
return FinancesResearchOpen();
|
||||
case WV_RIDE_RESEARCH:
|
||||
if (gConfigInterface.ToolbarShowResearch)
|
||||
if (Config::Get().interface.ToolbarShowResearch)
|
||||
{
|
||||
return this->OpenWindow(WindowClass::Research);
|
||||
}
|
||||
return WindowNewRideOpenResearch();
|
||||
return NewRideOpenResearch();
|
||||
case WV_MAZE_CONSTRUCTION:
|
||||
return WindowMazeConstructionOpen();
|
||||
return MazeConstructionOpen();
|
||||
case WV_NETWORK_PASSWORD:
|
||||
return WindowNetworkStatusOpenPassword();
|
||||
return NetworkStatusOpenPassword();
|
||||
case WV_EDITOR_BOTTOM_TOOLBAR:
|
||||
return WindowEditorBottomToolbarOpen();
|
||||
return EditorBottomToolbarOpen();
|
||||
case WV_CHANGELOG:
|
||||
return WindowChangelogOpen(WV_CHANGELOG);
|
||||
return ChangelogOpen(WV_CHANGELOG);
|
||||
case WV_NEW_VERSION_INFO:
|
||||
return WindowChangelogOpen(WV_NEW_VERSION_INFO);
|
||||
return ChangelogOpen(WV_NEW_VERSION_INFO);
|
||||
case WV_CONTRIBUTORS:
|
||||
return WindowChangelogOpen(WV_CONTRIBUTORS);
|
||||
return ChangelogOpen(WV_CONTRIBUTORS);
|
||||
case WV_FINANCE_MARKETING:
|
||||
return WindowFinancesMarketingOpen();
|
||||
return FinancesMarketingOpen();
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -188,33 +191,33 @@ public:
|
|||
switch (type)
|
||||
{
|
||||
case WD_BANNER:
|
||||
return WindowBannerOpen(id);
|
||||
return BannerOpen(id);
|
||||
case WD_NEW_CAMPAIGN:
|
||||
return WindowNewCampaignOpen(id);
|
||||
return NewCampaignOpen(id);
|
||||
case WD_DEMOLISH_RIDE:
|
||||
return WindowRideDemolishPromptOpen(*GetRide(RideId::FromUnderlying(id)));
|
||||
return RideDemolishPromptOpen(*GetRide(RideId::FromUnderlying(id)));
|
||||
case WD_REFURBISH_RIDE:
|
||||
return WindowRideRefurbishPromptOpen(*GetRide(RideId::FromUnderlying(id)));
|
||||
return RideRefurbishPromptOpen(*GetRide(RideId::FromUnderlying(id)));
|
||||
case WD_SIGN:
|
||||
return WindowSignOpen(id);
|
||||
return SignOpen(id);
|
||||
case WD_SIGN_SMALL:
|
||||
return WindowSignSmallOpen(id);
|
||||
return SignSmallOpen(id);
|
||||
case WD_PLAYER:
|
||||
return WindowPlayerOpen(id);
|
||||
return PlayerOpen(id);
|
||||
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
WindowBase* ShowError(StringId title, StringId message, const Formatter& args) override
|
||||
WindowBase* ShowError(StringId title, StringId message, const Formatter& args, bool autoClose /* = false */) override
|
||||
{
|
||||
return WindowErrorOpen(title, message, args);
|
||||
return ErrorOpen(title, message, args, autoClose);
|
||||
}
|
||||
|
||||
WindowBase* ShowError(std::string_view title, std::string_view message) override
|
||||
WindowBase* ShowError(std::string_view title, std::string_view message, bool autoClose /* = false */) override
|
||||
{
|
||||
return WindowErrorOpen(title, message);
|
||||
return ErrorOpen(title, message, autoClose);
|
||||
}
|
||||
|
||||
WindowBase* OpenIntent(Intent* intent) override
|
||||
|
@ -222,13 +225,13 @@ public:
|
|||
switch (intent->GetWindowClass())
|
||||
{
|
||||
case WindowClass::Peep:
|
||||
return WindowGuestOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
|
||||
return GuestOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
|
||||
case WindowClass::FirePrompt:
|
||||
return WindowStaffFirePromptOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
|
||||
return StaffFirePromptOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
|
||||
case WindowClass::InstallTrack:
|
||||
return WindowInstallTrackOpen(intent->GetStringExtra(INTENT_EXTRA_PATH).c_str());
|
||||
return InstallTrackOpen(intent->GetStringExtra(INTENT_EXTRA_PATH).c_str());
|
||||
case WindowClass::GuestList:
|
||||
return WindowGuestListOpenWithFilter(
|
||||
return GuestListOpenWithFilter(
|
||||
static_cast<GuestListFilterType>(intent->GetSIntExtra(INTENT_EXTRA_GUEST_LIST_FILTER)),
|
||||
intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
|
||||
case WindowClass::Loadsave:
|
||||
|
@ -238,7 +241,7 @@ public:
|
|||
loadsave_callback callback = reinterpret_cast<loadsave_callback>(
|
||||
intent->GetPointerExtra(INTENT_EXTRA_CALLBACK));
|
||||
TrackDesign* trackDesign = static_cast<TrackDesign*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN));
|
||||
auto* w = WindowLoadsaveOpen(
|
||||
auto* w = LoadsaveOpen(
|
||||
type, defaultName,
|
||||
[callback](int32_t result, std::string_view path) {
|
||||
if (callback != nullptr)
|
||||
|
@ -250,20 +253,19 @@ public:
|
|||
return w;
|
||||
}
|
||||
case WindowClass::ManageTrackDesign:
|
||||
return WindowTrackManageOpen(
|
||||
static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));
|
||||
return TrackManageOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));
|
||||
case WindowClass::NetworkStatus:
|
||||
{
|
||||
std::string message = intent->GetStringExtra(INTENT_EXTRA_MESSAGE);
|
||||
close_callback callback = intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK);
|
||||
return WindowNetworkStatusOpen(message, callback);
|
||||
return NetworkStatusOpen(message, callback);
|
||||
}
|
||||
case WindowClass::ObjectLoadError:
|
||||
{
|
||||
std::string path = intent->GetStringExtra(INTENT_EXTRA_PATH);
|
||||
auto objects = static_cast<const ObjectEntryDescriptor*>(intent->GetPointerExtra(INTENT_EXTRA_LIST));
|
||||
size_t count = intent->GetUIntExtra(INTENT_EXTRA_LIST_COUNT);
|
||||
WindowObjectLoadErrorOpen(const_cast<utf8*>(path.c_str()), count, objects);
|
||||
ObjectLoadErrorOpen(const_cast<utf8*>(path.c_str()), count, objects);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -271,20 +273,19 @@ public:
|
|||
{
|
||||
const auto rideId = RideId::FromUnderlying(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
|
||||
auto ride = GetRide(rideId);
|
||||
return ride == nullptr ? nullptr : WindowRideMainOpen(*ride);
|
||||
return ride == nullptr ? nullptr : RideMainOpen(*ride);
|
||||
}
|
||||
case WindowClass::TrackDesignPlace:
|
||||
return WindowTrackPlaceOpen(
|
||||
static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));
|
||||
return TrackPlaceOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));
|
||||
case WindowClass::TrackDesignList:
|
||||
{
|
||||
RideSelection rideItem;
|
||||
rideItem.Type = intent->GetUIntExtra(INTENT_EXTRA_RIDE_TYPE);
|
||||
rideItem.EntryIndex = intent->GetUIntExtra(INTENT_EXTRA_RIDE_ENTRY_INDEX);
|
||||
return WindowTrackListOpen(rideItem);
|
||||
return TrackListOpen(rideItem);
|
||||
}
|
||||
case WindowClass::ScenarioSelect:
|
||||
return WindowScenarioselectOpen(
|
||||
return ScenarioselectOpen(
|
||||
reinterpret_cast<scenarioselect_callback>(intent->GetPointerExtra(INTENT_EXTRA_CALLBACK)));
|
||||
|
||||
case WindowClass::Null:
|
||||
|
@ -301,7 +302,7 @@ public:
|
|||
case INTENT_ACTION_NEW_RIDE_OF_TYPE:
|
||||
{
|
||||
// Open ride list window
|
||||
auto w = WindowNewRideOpen();
|
||||
auto w = NewRideOpen();
|
||||
|
||||
// Switch to right tab and scroll to ride location
|
||||
RideSelection rideItem;
|
||||
|
@ -324,7 +325,7 @@ public:
|
|||
if (!ToolSet(*tlbrWindow, WC_TOP_TOOLBAR__WIDX_SCENERY, Tool::Arrow))
|
||||
{
|
||||
InputSetFlag(INPUT_FLAG_6, true);
|
||||
window = WindowSceneryOpen();
|
||||
window = SceneryOpen();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -334,6 +335,28 @@ public:
|
|||
return window;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_PROGRESS_OPEN:
|
||||
{
|
||||
std::string message = intent->GetStringExtra(INTENT_EXTRA_MESSAGE);
|
||||
close_callback callback = intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK);
|
||||
return ProgressWindowOpen(message, callback);
|
||||
}
|
||||
|
||||
case INTENT_ACTION_PROGRESS_SET:
|
||||
{
|
||||
uint32_t currentProgress = intent->GetUIntExtra(INTENT_EXTRA_PROGRESS_OFFSET);
|
||||
uint32_t totalCount = intent->GetUIntExtra(INTENT_EXTRA_PROGRESS_TOTAL);
|
||||
StringId format = intent->GetUIntExtra(INTENT_EXTRA_STRING_ID);
|
||||
ProgressWindowSet(currentProgress, totalCount, format);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_PROGRESS_CLOSE:
|
||||
{
|
||||
ProgressWindowClose();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_NULL:
|
||||
// Intent does not hold an intent action
|
||||
break;
|
||||
|
@ -346,9 +369,9 @@ public:
|
|||
switch (intent->GetWindowDetail())
|
||||
{
|
||||
case WD_VEHICLE:
|
||||
return WindowRideOpenVehicle(static_cast<Vehicle*>(intent->GetPointerExtra(INTENT_EXTRA_VEHICLE)));
|
||||
return RideOpenVehicle(static_cast<Vehicle*>(intent->GetPointerExtra(INTENT_EXTRA_VEHICLE)));
|
||||
case WD_TRACK:
|
||||
return WindowRideOpenTrack(static_cast<TileElement*>(intent->GetPointerExtra(INTENT_EXTRA_TILE_ELEMENT)));
|
||||
return RideOpenTrack(static_cast<TileElement*>(intent->GetPointerExtra(INTENT_EXTRA_TILE_ELEMENT)));
|
||||
|
||||
case WD_NULL:
|
||||
// Intent does not hold an window detail
|
||||
|
@ -511,6 +534,10 @@ public:
|
|||
WindowInvalidateByClass(WindowClass::Research);
|
||||
break;
|
||||
|
||||
case INTENT_ACTION_UPDATE_VEHICLE_SOUNDS:
|
||||
OpenRCT2::Audio::UpdateVehicleSounds();
|
||||
break;
|
||||
|
||||
case INTENT_ACTION_TRACK_DESIGN_REMOVE_PROVISIONAL:
|
||||
TrackPlaceClearProvisionalTemporarily();
|
||||
break;
|
||||
|
@ -548,6 +575,10 @@ public:
|
|||
WindowNetworkStatusClose();
|
||||
break;
|
||||
|
||||
case WindowClass::ProgressWindow:
|
||||
ProgressWindowClose();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -587,7 +618,7 @@ public:
|
|||
mainWindow->viewport_target_sprite = EntityId::GetNull();
|
||||
mainWindow->savedViewPos = viewPos;
|
||||
viewport->zoom = zoom;
|
||||
gCurrentRotation = rotation;
|
||||
viewport->rotation = rotation;
|
||||
|
||||
if (zoomDifference != ZoomLevel{ 0 })
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -48,7 +48,7 @@ namespace OpenRCT2::Audio
|
|||
AudioChannelImpl()
|
||||
{
|
||||
AudioChannelImpl::SetRate(1);
|
||||
AudioChannelImpl::SetVolume(MIXER_VOLUME_MAX);
|
||||
AudioChannelImpl::SetVolume(kMixerVolumeMax);
|
||||
AudioChannelImpl::SetPan(0.5f);
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ namespace OpenRCT2::Audio
|
|||
|
||||
void SetVolume(int32_t volume) override
|
||||
{
|
||||
_volume = std::clamp(volume, 0, MIXER_VOLUME_MAX);
|
||||
_volume = std::clamp(volume, 0, kMixerVolumeMax);
|
||||
}
|
||||
|
||||
[[nodiscard]] float GetPan() const override
|
||||
|
@ -265,7 +265,7 @@ namespace OpenRCT2::Audio
|
|||
{
|
||||
_done = true;
|
||||
}
|
||||
else if (_loop == MIXER_LOOP_INFINITE)
|
||||
else if (_loop == kMixerLoopInfinite)
|
||||
{
|
||||
_offset = 0;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
@ -34,7 +34,7 @@ namespace OpenRCT2::Audio
|
|||
{
|
||||
if (SDL_Init(SDL_INIT_AUDIO) < 0)
|
||||
{
|
||||
SDLException::Throw("SDL_Init(SDL_INIT_AUDIO)");
|
||||
Ui::SDLException::Throw("SDL_Init(SDL_INIT_AUDIO)");
|
||||
}
|
||||
_audioMixer = std::make_unique<AudioMixer>();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
|
|