240 Commits

Author SHA1 Message Date
Alayan
fc969982da Merge with latest master 2018-10-05 17:55:02 +02:00
Alayan
68916b0adf Add the possibility to exclude owned projectiles from the nearby projectiles count 2018-10-05 17:50:43 +02:00
Alayan
6445fb059d Split DrawGlobalPlayerIcons 2018-10-05 17:42:54 +02:00
Deve
0c5b1a3999 Always show current reolution in options 2018-10-04 21:55:00 +02:00
Deve
dc428b94cf Add a script that allows to build all android packages with single command 2018-10-04 20:48:42 +02:00
Benau
1bb0be6a8c Fix crash for deve's soccer arena without navmesh 2018-10-05 00:58:46 +08:00
Deve
fedf93c928 Tweak range of touch device gui scale 2018-10-03 21:13:01 +02:00
Benau
693a3bc954 Allow flag to be placed on driveable object (for ctf temple) 2018-10-04 01:06:58 +08:00
Deve
b26d8f3454 Avoid a crash when using close button in kart selection screen 2018-10-02 22:28:12 +02:00
Deve
da4f6cf8cf Fixed memory leak 2018-10-02 22:16:37 +02:00
Deve
be1fab75b8 Add a margin for screenshot in better way 2018-10-01 23:27:03 +02:00
Deve
2084121405 Give more space for translations in ghost replay screen 2018-10-01 22:04:49 +02:00
Deve
53b6c0c80b Fixed checkbox in ghost replay dialog and other minor tweaks 2018-10-01 20:52:53 +02:00
Alayan
3e6d7afb14 Move rank indicator to the top-right and adda rank icon 2018-09-30 20:55:04 +02:00
Alayan
87725b4415 Make alert indicator more discrete, restrict kart icon display 2018-09-30 17:00:46 +02:00
Benau
a2d4763201 Hide minimap when hide all for artist debug mode 2018-09-30 16:30:27 +08:00
Benau
c8db9e2490 Restore swatter discard now in arena or soccer in network properly 2018-09-30 16:10:58 +08:00
Benau
ab94fdfceb Allow more than 1 player winning in FFA if a tie 2018-09-30 14:38:18 +08:00
Benau
6478a0714d Fix multiplayer sound keep playing 2018-09-30 14:06:40 +08:00
Benau
cb9a17563e Don't call SP::SPTextureManager::get() if not GLSL to avoid leaking 2018-09-30 13:00:24 +08:00
Benau
05e1d629ee Fix exit STK requests leak 2018-09-30 12:42:17 +08:00
Benau
6809984928 Fix #2813 2018-09-30 11:08:54 +08:00
Benau
767651124a Always specify --server-password so that empty password can disable private server 2018-09-30 01:08:46 +08:00
Alayan
61df9c4b35 Don't show an alert when the player uses an offensive powerup 2018-09-29 16:41:43 +02:00
Alayan
7b62947e08 Add an alert icon when a dangerous projectile is nerby 2018-09-29 16:28:34 +02:00
Alayan
dcec81c7d5 Add an alert icon when another kart is nearby 2018-09-29 15:42:50 +02:00
Alayan
799f6d98c1 Optimize new icons 2018-09-29 14:26:43 +02:00
Alayan
fa98a30543 Icons for danger warnings 2018-09-29 14:22:51 +02:00
Deve
93298023b4 Don't display powerup count indicator after finish online race 2018-09-29 08:14:55 +02:00
Benau
a4c9a8826c Don't crash if user opened paused dialog in network when ending race 2018-09-29 14:00:54 +08:00
Deve
51c67aa1e4 Add a fallback lib path for server creation 2018-09-28 23:15:16 +02:00
Benau
e5a66cf5af Fix mingw build 2018-09-29 01:03:54 +08:00
Benau
e55ee508f8 Disable switch and bubblegum for now in network again 2018-09-29 00:24:54 +08:00
Benau
5041c6585d Allow recreation of kart animation from state if the required creation event missed 2018-09-29 00:21:25 +08:00
Benau
addcb84802 Undo to before kart animation position for item collection 2018-09-29 00:15:35 +08:00
Benau
2fafe495dd Make it consistent with attachment rewind when eating banana with bomb 2018-09-29 00:11:26 +08:00
Benau
51f8884881 Fix missing no graphics option for lan server 2018-09-29 00:03:32 +08:00
Benau
abd3a79526 Merge remote-tracking branch 'origin/network-item-debugging' 2018-09-28 23:39:04 +08:00
Benau
e7aa03f1bf Try an up-to-date current frame bone-child attachment in legacy pipeline 2018-09-28 23:33:51 +08:00
Benau
d61b74fdd4 Fix parachute rewind 2018-09-28 22:52:18 +08:00
Benau
97e5e63e7c Split plunger drawing in race GUI to update graphics
Avoid overwriting the values by rewind
2018-09-28 19:27:05 +08:00
Benau
759a1d5a33 Fix missing lookback firing for network ai 2018-09-28 18:07:54 +08:00
Benau
8efd422125 Update server version
At the moment ignore server config before final release
2018-09-28 17:41:45 +08:00
Benau
ae4ed9e2e7 Restore rubber band with hit kart and reserve mode included 2018-09-28 17:05:17 +08:00
Benau
689fab6bc8 Default lobby chat on 2018-09-28 16:04:18 +08:00
Benau
dd9bb640d1 Use the same item index for server and client
TrackObjectPresentationSound will create item trigger, when network
split screen is used it will be diverged.
2018-09-28 16:01:08 +08:00
Benau
8950354e62 Avoid using deleted end controller when rewind 2018-09-28 14:40:37 +08:00
Benau
136b649716 Fix error log encoding 2018-09-28 09:59:40 +08:00
hiker
7720ab45f5 Merge pull request #3467 from supertuxkart/ConstantTurnRadius
Fix the turn radius bug
2018-09-28 01:35:38 +10:00
auria.mg
1fe8e36c97 Improve questionable text 2018-09-26 18:57:38 -04:00
Deve
c360209676 Avoid memory leaks when window is closed during the race 2018-09-26 22:34:23 +02:00
Alayan
7386465931 Remove outdated comment 2018-09-26 18:57:36 +02:00
Alayan
f5abd2c798 Move the rank indicator to the top-left and clarify it 2018-09-26 18:57:13 +02:00
Benau
e16aa9f1ed Update string 2018-09-26 14:52:19 +08:00
Alayan
871ee40053 Merge branch 'master' of https://github.com/supertuxkart/stk-code 2018-09-25 23:50:10 +02:00
Alayan
f0d862f472 Fix lap time difference being displayed for only a few ticks 2018-09-25 23:49:58 +02:00
Alayan
091d9bf130 Fix display overlap between live difference and lap indicator at some resolutions 2018-09-25 23:10:31 +02:00
Deve
4c6af1d381 Fixed more memory leaks when closing stk server 2018-09-25 22:39:02 +02:00
Alayan
8d40a69842 Remove call to removed function 2018-09-25 20:02:23 +02:00
Alayan
69ee902327 Make hiker happy 2018-09-25 19:46:28 +02:00
Alayan
4a39813f07 Make the Cocoa Temple challenge a ghost replay challenge available from the start 2018-09-24 21:39:57 +02:00
Alayan
aa3afa7048 Add replays for a story mode replay challenge 2018-09-24 20:42:47 +02:00
Alayan
6196782420 Remove debug prints 2018-09-24 19:33:14 +02:00
Alayan
a08866f96d Fix #3271 : a kart's turn radius is independent of its length 2018-09-24 19:31:52 +02:00
Alayan
791a490e58 Fix display of very long track author names 2018-09-24 13:28:26 +02:00
Alayan
50f87e3f0f Fix even more incorrect flying 2018-09-24 13:08:55 +02:00
Alayan-stk-2
1c6890f77e Race UI improvements (#3465)
* Add a flag icon next to the lap counter

* Fix flag icon scaling across resolutions

* Add an option controlling minimap display

* Allow to display all the karts in the icon list if the minimap is hidden/on the right

* Remove useless scaling

* Fix minimap issues in splitscreen

* Align the spinners in the UI options

* Check for touch settings instead of a compile-time Android check

* Fix server-only compilation

* Make UI options checkboxes have the same size than checkboxes elsewhere

* Add translation cues for minimap options

* Don't look up icon paths every frame
2018-09-23 21:15:51 -04:00
Benau
0c3691cf18 Fix alayan crash 2018-09-24 08:38:25 +08:00
Deve
2ac0e5fd07 Avoid a crash when path is empty.
Happened for me few times, but reason unknown.
2018-09-23 22:53:11 +02:00
Deve
36d1376567 Probably fixed broken music and some crashes after server close on android 2018-09-23 22:53:11 +02:00
Benau
56e9be326e Fix #3463 2018-09-23 15:26:24 +08:00
Alayan
896768ebbe Make boosted AI karts be less hindered by rubber-banding 2018-09-22 23:22:37 +02:00
Alayan
5bd37e1e2e Merge branch 'master' of https://github.com/supertuxkart/stk-code 2018-09-22 23:14:53 +02:00
Deve
0dca414e02 Fixed some memory leaks when a server is closed 2018-09-22 22:06:27 +02:00
Alayan
46c2c88461 Give a boosted AI to some AI karts in races and GP 2018-09-22 22:02:11 +02:00
Deve
c8305012f8 Make sure that m_flying is initialized when reset function is called first time during initialization. 2018-09-22 20:54:43 +02:00
Deve
8bdc45f7a3 Increase hiscore file version.
Hiscores with more than 3 entries are incompatible with older STK versions and cause a crash on startup.
2018-09-22 20:50:05 +02:00
Deve
eed9d200d3 Revert "Revert "Fixed android compilation""
This reverts commit 8f6daefc73.
2018-09-22 20:43:05 +02:00
Alayan
f60dc3ce4c Fix #3399 2018-09-22 19:15:33 +02:00
Alayan
0b7e2d35fb Fix another instance of kart flying incorrectly 2018-09-22 16:28:51 +02:00
Alayan
63a377cf0b Tell the AI to not gift free nitro cans when a switch is active 2018-09-22 16:22:52 +02:00
Alayan
c7ea40df6c Correctly wait before using a gum shield against a bomb for best AI 2018-09-22 16:06:11 +02:00
Alayan
e11f327519 Fix a crash with ghost replays 2018-09-22 15:50:05 +02:00
Alayan
4a18ac2725 Merge branch 'master' of https://github.com/supertuxkart/stk-code 2018-09-22 03:31:51 +02:00
Alayan
902e64c7f5 Redesign track info screen to work with 5 highscores, battle mode and hi-dpi 2018-09-22 03:31:07 +02:00
Alayan
82408aab2f Restore 5 highscores 2018-09-22 01:55:28 +02:00
Benau
553747237e Check for possible null m_confirmed_state 2018-09-22 00:54:37 +08:00
Benau
5f463f7f80 Enable auto server recovery for wan servers only 2018-09-21 20:37:45 +08:00
Benau
b1a535b21f Save ticks till return for eating banana with bomb 2018-09-21 20:06:47 +08:00
Benau
aa2d944813 Use setTicksForRewind for count down game timer 2018-09-21 16:13:19 +08:00
Benau
2f2a128e06 Fix missing initialized values 2018-09-21 16:12:04 +08:00
Alayan
13b3b3c2bd Remove redundancy between kart constructor and reset, reset a few more variables 2018-09-21 02:44:51 +02:00
Alayan
6dedbff1a8 Fix all known instances of kart flying due to cushioning 2018-09-20 23:56:53 +02:00
Alayan
0da04805b4 Merge branch 'master' of https://github.com/supertuxkart/stk-code 2018-09-20 22:22:56 +02:00
Alayan
961c4af662 Fix cushioning when landing on a slope, reduce needed data size 2018-09-20 22:22:23 +02:00
hiker
7cabefc8e9 Fixed incorrect bubble gum rotation prediction (because wrong time
was used when rewinding).
2018-09-20 19:30:52 +10:00
Benau
6232140689 Implement auto server recovery if connection to stk-addons is lost 2018-09-20 16:43:34 +08:00
Benau
f975e37dea Use a uniform material loading for non-glsl (for server) 2018-09-20 14:20:38 +08:00
Deve
bc675ffd81 Revert "Disconnect android player from wan race when the window is not active anymore"
This reverts commit e80e0555e1.
2018-09-19 22:06:41 +02:00
Deve
2c79b02088 Make pause button working when watching ghost replay 2018-09-19 22:06:24 +02:00
Alayan
9f3bc471d8 Specify reverse status for existing challenges 2018-09-19 18:17:36 +02:00
Alayan
6af8f70b48 Add support for challenges in reverse mode 2018-09-19 18:13:42 +02:00
Deve
63ba99457e Add a check for null when unset squash 2018-09-19 07:07:40 +02:00
Benau
951c48292a Fix #3446 2018-09-19 09:19:34 +08:00
auria.mg
afe2b6f2f4 Fix crash when searching for users fails. Does not fix the search, only fixes STK crashing when errors occur 2018-09-18 19:20:19 -04:00
Alayan
52f5562be8 Fix crash with ghost replays 2018-09-19 01:04:19 +02:00
hiker
23a82aab54 Merge remote-tracking branch 'origin/master' into network-item-debugging 2018-09-19 08:33:42 +10:00
Deve
402cbea3d6 Restore wheels size when game is restarted.
Fixes #3455
2018-09-19 00:14:53 +02:00
Deve
e80e0555e1 Disconnect android player from wan race when the window is not active anymore 2018-09-18 23:05:54 +02:00
Deve
18c108c99a Add some commandline params 2018-09-18 23:05:54 +02:00
Alayan
eb274e01d4 Adjust value to cushion most small jumps 2018-09-18 20:32:13 +02:00
Alayan
6145aff895 Use height data to cushion only close to the ground and adjust impulse strength 2018-09-18 20:01:59 +02:00
Alayan
6af07fac77 Don't assume number of physics ticks per second 2018-09-18 15:56:09 +02:00
Alayan-stk-2
6b4ebc2148 Minor style fixes 2018-09-18 13:52:08 +02:00
Alayan
d39b2a0620 Move special bomb steering in handleSteering 2018-09-18 13:19:14 +02:00
Alayan
ab1e86d796 Move handleNitroAndZipper in handleAcceleration 2018-09-18 12:40:29 +02:00
Alayan
1f514727d5 Change handleAcceleration into handleAccelerationAndBraking 2018-09-18 12:00:02 +02:00
Benau
07ad8977dd Use separate nettle aes context for encryption and decryption
So it can be used and validated by different threads at the same time
2018-09-18 14:25:55 +08:00
Benau
0cd8c03bcd Fix uninitialized value 2018-09-18 10:03:46 +08:00
Alayan
f0807f9c0e Move handleBraking next to handleAcceleration for easier maintenance 2018-09-18 03:40:08 +02:00
Alayan
488e53d669 Remove hardcoded number assuming tick duration 2018-09-18 03:30:31 +02:00
Alayan
c032bfe941 Remove unused findNonCrashingPointFixed 2018-09-18 03:13:55 +02:00
Deve
c2b2a57c87 Minor fix for run_server script.
Restart if known error happened and also update datetime to avoid overwriting log files.
2018-09-17 22:15:14 +02:00
Alayan
fb95e9736b Disable rubber-banding for FTL leader 2018-09-17 21:25:27 +02:00
Alayan
8271213756 Fix incorrect braking before starting line 2018-09-17 21:17:19 +02:00
Alayan
2486e72c25 Tell the FTL AI to not build up a nitro reserve for use in lap 99999 2018-09-17 20:38:48 +02:00
Alayan
1e9f175f43 Fix some identation 2018-09-17 20:26:28 +02:00
Alayan
3aa2a04197 Make the FTL leader use a boosted AI 2018-09-17 20:19:21 +02:00
Alayan
21e88698d2 Make AI kart slowdown before having finished overtaking the leader in FTL 2018-09-17 20:09:58 +02:00
Alayan-stk-2
0c353f4b49 Increase difficulty for the SuperTux challenge 2018-09-17 17:36:20 +02:00
Alayan-stk-2
7bda2d097d Clear last overworld position when switching profile 2018-09-17 17:01:59 +02:00
Alayan-stk-2
2e559aa391 Improve scotland challenge balance in expert/supertux 2018-09-17 15:48:22 +02:00
Alayan
025c60033d Reset min nitro time when no nitro and fix #3180 2018-09-17 14:40:23 +02:00
Alayan
75127fc044 Merge branch 'LockSTG' 2018-09-17 12:42:50 +02:00
Alayan
4d9407653a Fix #3383 2018-09-17 12:40:51 +02:00
hiker
23acbf5260 Fixed shaking after collecting bubble gum (caused by restoring item state
after restorint kart state - during item state restoration items can
be 'collected', which overwrites kart states values that just had been
restored).
2018-09-17 18:19:23 +10:00
Benau
dc059aa8f7 Fix attachment with swatter removing bomb animation rewind 2018-09-17 16:15:15 +08:00
Alayan
02a3de4dd8 Fix #3439 2018-09-17 03:46:20 +02:00
Alayan-stk-2
e269c5a72d Fix #3442 2018-09-17 02:32:46 +02:00
Alayan
b98024f11e Use skin-specific credit color. Fix #3433 2018-09-17 01:53:07 +02:00
Alayan
96c5293021 Add credits color to the skins 2018-09-17 01:46:22 +02:00
Alayan
137a7e671f Move online screns to their own folders to reduce clutter 2018-09-16 23:55:40 +02:00
Alayan
4d68d324a2 Move options screns to their own folder to reduce clutter 2018-09-16 23:35:40 +02:00
Deve
2cb9f1e714 Fixed compilation 2018-09-16 23:11:20 +02:00
Deve
fc04eeade7 Merge remote-tracking branch 'Alayan/DisableKeyboardConfig' 2018-09-16 23:06:54 +02:00
Alayan-stk-2
073f337415 Allow word wrap for ghost replay dialog buttons 2018-09-16 17:29:55 +02:00
Benau
7c53a5556c Single CPU core usage as shown in top 2018-09-16 23:23:23 +08:00
Alayan
152c695a37 Remove unused GUI files 2018-09-16 17:02:38 +02:00
Alayan
085e3f8eae Merge branch 'master' of https://github.com/supertuxkart/stk-code into GUI_Folders 2018-09-16 16:44:31 +02:00
Alayan
03839b7cfe Move GUI files to categorized folders and update all references 2018-09-16 16:37:42 +02:00
Benau
d663bb2caf Update german translation by Wuzzy 2018-09-16 22:01:08 +08:00
Benau
68d6326348 Update NETWORKING.md for network AI tester 2018-09-16 20:48:51 +08:00
Benau
f1057726ad Log peer address who formed bad message 2018-09-16 19:48:27 +08:00
Benau
8cb5e43bad Allow using --auto-connect with network ai tester 2018-09-16 19:19:42 +08:00
Benau
b3bffacb40 Add network ai tester for linear race 2018-09-16 17:58:00 +08:00
Benau
2c35b0f03c Allow using --connect-now with wan server with server-id 2018-09-16 12:26:34 +08:00
Alayan-stk-2
07e681e927 Minor improvement to the help text 2018-09-16 05:42:39 +02:00
Alayan-stk-2
21857327d4 Improvement for #3441 2018-09-16 04:53:39 +02:00
Alayan-stk-2
1fc58ef445 Fix #3434 2018-09-16 03:37:26 +02:00
Alayan-stk-2
4bbc494de4 Fix #3445 2018-09-16 01:50:39 +02:00
Alayan-stk-2
c22403f080 Fix #3448 2018-09-16 01:36:43 +02:00
Alayan-stk-2
ccdf0098a6 Fix #3447 2018-09-16 00:41:11 +02:00
Deve
35cc6930ab Make button labels in user screen a bit shorter 2018-09-15 23:50:27 +02:00
Deve
2026eb6a69 Ghost replay tables are quite complex, so give them a context for more flexible translations 2018-09-15 23:45:27 +02:00
Deve
e84ac0da7c Avoid a crash when node is null 2018-09-15 23:31:22 +02:00
Alayan-stk-2
02732e78be Make minigolf expert/supertux challenge easier
The grass texture slowdown working again makes this challenge several seconds slower than in 0.9.3 ; and the previous balancing change for supertux ended up overshooting.

The additional AI karts also make it more challenging than in 0.9.3, as it's frequent to be hit by something in the 1st lap.
2018-09-15 21:09:14 +02:00
Alayan-stk-2
9a82e168de Make sure there is always one enabled keyboard config 2018-09-15 19:33:29 +02:00
Alayan-stk-2
15bc188aa3 Add getActiveKeyboardAmount function 2018-09-15 19:31:56 +02:00
Benau
32d192460e Update translation from transifex 2018-09-16 01:24:22 +08:00
Alayan-stk-2
3c89e20733 Add support for disabled keyboard config icon 2018-09-15 18:58:22 +02:00
Alayan-stk-2
d6fd2df8f5 Add new icon for disabled keyboard configs 2018-09-15 18:57:29 +02:00
Alayan-stk-2
88d0313230 Fix comment 2018-09-15 18:30:01 +02:00
Benau
b400d56585 Don't use static in unicode conversion due to multiple threads usage now 2018-09-16 00:29:59 +08:00
Alayan-stk-2
19ba899afd Allow to disable a keyboard configuration without deleting it 2018-09-15 18:28:31 +02:00
Alayan-stk-2
78e592bfbf Add disable button 2018-09-15 18:27:49 +02:00
Benau
0c7475c6cf Handle linebreaking from motd if needed 2018-09-15 23:06:28 +08:00
Benau
28511c597e Remove compiler warning 2018-09-15 22:43:35 +08:00
Benau
211def77a6 Make sure no IV is duplicated and allow using 32bit counter completely 2018-09-15 16:36:01 +08:00
Benau
bbb618fe6b Write to a dummy blocks instead of out of bounds pointer for AES 2018-09-15 16:09:49 +08:00
Benau
4cf9542be1 Add user version in string to connection request 2018-09-15 15:57:27 +08:00
Benau
57d4017cc6 Fix documentation 2018-09-15 15:23:06 +08:00
Benau
e5f5a1c04d Use a more server owner friendly value instead of threshold 2018-09-15 15:10:03 +08:00
Benau
4c6d535f00 Compress kart control action 2018-09-15 14:25:38 +08:00
Benau
01b95d873e Header clean up 2018-09-15 11:18:30 +08:00
Benau
f547753aaa Add seamless endcontroller transition in network 2018-09-15 09:43:37 +08:00
Alayan-stk-2
505a67a372 More improvements for #3430
Now that the list is wider, time and version can fit with a smaller place, leaving more for the rest.
2018-09-15 03:32:51 +02:00
Alayan-stk-2
4c8d1b6b67 Move the track screenshot down to help with #3430 2018-09-15 03:04:35 +02:00
Benau
c10b40fb7d Use a special detail map shader for normal map (later) 2018-09-14 22:51:44 +08:00
Benau
b613c2c989 Make new startup boost and penalty working in network 2018-09-14 22:23:37 +08:00
Benau
641998be69 Move startup boost and penalty handling to set phase for local games 2018-09-14 22:03:02 +08:00
Benau
83a456e835 Add kart id checking so that only peer with correct kart can control 2018-09-14 21:42:35 +08:00
Benau
a53307cc14 Reset only physical objects in onGo 2018-09-14 13:43:44 +08:00
Benau
ea3215aad6 Use "and" search for server 2018-09-14 09:06:03 +08:00
Deve
99a4fac85e Fixed a crash when server was created in GUI.
Regression since 7d561de3fb
2018-09-13 21:07:19 +02:00
Alayan-stk-2
0fd62c1ca7 Add Super Tux time requirements for challenges lacking it
The AI is not yet good enough to be the sole factor ; the time requirement is necessary to not have these Super Tux challenges much easier than others.
2018-09-13 16:27:17 +02:00
Alayan-stk-2
d7b6e4c339 More consistent balance in time requirements
Time-trial records give a good idea of the relative length of different tracks. I tried to keep a similar balance to the one reached in Cornfield Crossing's challenge.
2018-09-13 16:17:35 +02:00
Alayan-stk-2
0b5d390c48 Switch to position requirements for intermediate/novice difficulties
Finishing first should always result in challenge success in low difficulties, and the AI balancing should be more effective than per-challenge tweaking in achieving consistent difficulty across challenges.
2018-09-13 16:03:20 +02:00
Alayan-stk-2
3616e93201 Switch to position requirement for low difficulties
The AI is slower than the required times in this challenge, so it makes it easier.

The previous times were, without nitro/skidding, as hard if not harder than the expert challenge.
2018-09-13 15:51:33 +02:00
Alayan-stk-2
3d14ae5bf1 Move repeated code to a function 2018-09-13 15:14:56 +02:00
Alayan-stk-2
b413d9ef24 Remove useless time requirements
Even with max rubberbanding effect (staying purposefully way behind), the first AI kart finishes around or under the required time.
2018-09-13 15:06:07 +02:00
Benau
803fae5320 Use a correct way to decrypt GCM with openssl
From http://patches.opendataplane.org/patch/7237/, use the correct
order (set tag, than update, and than final)
2018-09-13 16:36:35 +08:00
Benau
c8d56cc2b9 Use absolute path of cert location 2018-09-13 16:29:50 +08:00
Benau
f0a4b707ef Print incorrect packet 2018-09-13 10:46:54 +08:00
Benau
3b070cdaad Fix ranked server player reconnection handling 2018-09-13 10:46:37 +08:00
hiker
1291d2c0d3 Fix crash in case of multiple item collection and different
item ids on client and server.
2018-09-13 11:29:40 +10:00
Alayan-stk-2
323af45fbd Change profile folder to avoid compatibilities issues
As discussed on IRC with Auria.

This removes the several issues already noticed when switching between 0.9.3 and git versions (forgotten challenges and settings ; and more recently a crash with highscores).

Reminder for git users : you can migrate your data by copying it from the previous folder to the new one, so you won't have to redo your settings/profiles.
2018-09-13 02:19:00 +02:00
QwertyChouskie
6dab3b4e03 Fix centering in race paused dialog (#3429) 2018-09-13 01:31:30 +02:00
Deve
0ff4d3d286 Update pot file to fix a typo 2018-09-12 22:58:06 +02:00
Deve
127c91d825 Minor fix for update_pot.
The "supertuxkart-assets" is supported everywhere else.
2018-09-12 22:53:58 +02:00
Deve
b911a31bf2 Quick fix for run_server script 2018-09-12 22:08:38 +02:00
Benau
60157a33c4 Avoid allocating large memory for m_gpu_times in no graphics 2018-09-13 01:33:29 +08:00
Benau
7d561de3fb Disable freetype in no graphics 2018-09-13 01:11:17 +08:00
Benau
930115a449 Disable addons and news manager in no graphics 2018-09-13 00:58:45 +08:00
Benau
e5aa172d00 Clear player chosen kart each race if not grand prix 2018-09-13 00:40:55 +08:00
Benau
114dca1733 Fix typo 2018-09-13 00:12:32 +08:00
Benau
1b0f5be495 Pre-upload powerup spm to prevent hangs when using item 2018-09-12 16:34:38 +08:00
Benau
f39946347f Try to free vertex buffer memory if possible 2018-09-12 16:29:41 +08:00
Benau
37cf5ac459 Add delete vertex buffer to save memory for no graphics 2018-09-12 15:30:57 +08:00
Benau
930c2c004d Always disable network console in child process server 2018-09-12 10:28:02 +08:00
Benau
f5ba14fc54 Fix typo 2018-09-12 10:07:15 +08:00
Benau
a51c88febe Update translation which is completed 2018-09-12 09:42:42 +08:00
Benau
e64fd7a47d Show help in lobby only if connection accepted 2018-09-12 09:30:43 +08:00
Deve
31d425795c Bubblegum may be used up only if switch was not used 2018-09-11 22:29:55 +02:00
Deve
3ebc68ff10 Fixed glow when switch is used 2018-09-11 22:02:06 +02:00
Benau
29a7be5531 Add server hosting documentation 2018-09-12 02:07:34 +08:00
Benau
6203b415e2 Set log filename with server config without .xml suffix + .log 2018-09-12 00:55:34 +08:00
Benau
8f8d5f8814 Use time-played from database 2018-09-11 23:15:08 +08:00
Benau
8ad3cbdff9 Save server config when exit server lobby 2018-09-11 21:08:18 +08:00
Benau
c778a22a3a Use a correct xml syntax for map config 2018-09-11 20:57:19 +08:00
Benau
300cdff07f Disable showing dialog in server for news 2018-09-11 16:04:10 +08:00
Benau
3337f41529 Fix ServerConfig and STKConfig dependencies 2018-09-11 15:35:24 +08:00
Benau
1c94cd6880 Avoid spamming with connect to peer message with localhost 2018-09-11 15:23:45 +08:00
Benau
ade3551c16 Disable message queue in no graphics too 2018-09-11 14:35:07 +08:00
Benau
8bb2eeb629 Always disable online user polling for wan server
With d6955f03fcbc21cb4cd9332d0d528063ad9a0f60 in stk-addons it is no
longer necessary
2018-09-11 14:31:43 +08:00
Benau
612e8bdaf6 Keep http header of curl_slist* until the exit of stk to prevent memory leak 2018-09-11 14:24:59 +08:00
Benau
dd15947aa1 Use ServerConfig for setup server 2018-09-11 14:06:30 +08:00
Benau
0d93fe427e Initial work on server_config.xml 2018-09-11 10:13:33 +08:00
Deve
4262418532 Don't report stats for server_only/no-graphics.
It may cause a crash on some devices eg. when glGetString returns NULL.
2018-09-09 23:58:26 +02:00
hiker
9211b26251 Fixed bubble gum collection in networking (at least the problem
that you would on the client collect the gum you just dropped).
2018-09-04 18:32:10 +10:00
hiker
5955166931 Try to fix that a client collects its own bubble gum in case of
a rewind.
2018-09-03 18:21:03 +10:00
584 changed files with 140843 additions and 78680 deletions

171
NETWORKING.md Normal file
View File

@@ -0,0 +1,171 @@
# Online networking games for STK
## Hosting server
First of all, you can compile STK with `-DSERVER_ONLY=ON` which will produce a GUI-less STK binary optimized for size and memory usage, useful for situation like in VPS.
### Hosting WAN (public internet) server
You are required to have an stk online account first, go [here](https://addons.supertuxkart.net/register.php) for registration.
It is recommended you have a saved user in your computer to allow hosting multiple servers simultaneously with the same account, if you have a fresh STK installation, first run:
`supertuxkart --init-user --login=your_registered_name --password=your_password`
After that you should see `Done saving user, leaving` in terminal if it successfully logged in.
Than you can just run:
`supertuxkart --server-config=your_config.xml --network-console`
It will create that xml configuration file if not found in current directory, you can type `quit` in terminal, than you can edit that file for further configuration as required.
The current server configuration xml looks like this:
```xml
<?xml version="1.0"?>
<server-config version="1" >
<!-- Name of server, encode in XML if you want to use unicode characters. -->
<server-name value="stk server" />
<!-- Port used in server, if you specify 0, it will use the server port specified in stk_config.xml or if random-server-port is enabled in user config, than any port. STK will auto change to random port if the port you specify failed to be bound. -->
<server-port value="0" />
<!-- Game mode in server, 0 is normal race (grand prix), 1 is time trial (grand prix), 3 is normal race, 4 time trial, 6 is soccer, 7 is free-for-all and 8 is capture the flag. Notice: grand prix server doesn't allow for players to join and wait for ongoing game. -->
<server-mode value="3" />
<!-- Difficulty in server, 0 is beginner, 1 is intermediate, 2 is expert and 3 is supertux (the most difficult). -->
<server-difficulty value="0" />
<!-- Number of grand prix tracks per game (If grand prix enabled). -->
<gp-track-count value="3" />
<!-- Use goal target in soccer. -->
<soccer-goal-target value="false" />
<!-- Enable wan server, which requires you to have an stk-addons account with a saved session. Check init-user command for details. -->
<wan-server value="true" />
<!-- Enable network console, which can do for example kickban. -->
<enable-console value="false" />
<!-- Maximum number of players on the server, setting it more than 8 will have performance degradation. -->
<server-max-players value="8" />
<!-- Password for private server, empty for a public server. -->
<private-server-password value="" />
<!-- Message of today shown in lobby, you can enter encoded XML words here or a file.txt and let STK load it. -->
<motd value="" />
<!-- Timeout in seconds for voting tracks in server. -->
<voting-timeout value="20" />
<!-- Timeout in seconds for validation of clients in wan, currently stk will use the stk-addons server to share AES key between client and server. -->
<validation-timeout value="20" />
<!-- By default WAN server will always validate player and LAN will not, disable it to allow non-validated player in WAN. -->
<validating-player value="true" />
<!-- Disable it to turn off all stun related code in server, it allows saving server resource if your server is not behind a firewall. -->
<firewalled-server value="true" />
<!-- No server owner in lobby which can control the starting of game or kick any players. -->
<owner-less value="false" />
<!-- Time to wait before entering kart selection screen if satisfied min-start-game-players below for owner less or ranked server. -->
<start-game-counter value="30" />
<!-- Only auto start kart selection when number of connected player is larger than or equals this value, for owner less or ranked server, after start-game-counter reaches 0. -->
<min-start-game-players value="2" />
<!-- Automatically end linear race game after 1st player finished for some time (currently his finished time * 0.25 + 15.0). -->
<auto-end value="false" />
<!-- Enable team choosing in lobby in team game (soccer and CTF). If owner-less is enabled, than this option is always disabled. -->
<team-choosing value="true" />
<!-- Server will submit ranking to stk addons server for linear race games, you require permission for that. validating-player, auto-end and owner-less will be turned on. -->
<ranked value="false" />
<!-- Time in seconds when a flag is dropped a by player in CTF returning to its own base. -->
<flag-return-timemout value="20" />
<!-- Value used to calculate hit limit in free for all, which is min(number of players * hit-limit-threshold, 40), negative value to disable hit limit. -->
<hit-limit-threshold value="5" />
<!-- Value used to calculate time limit in free for all, which is max(number of players * time-limit-threshold-ffa, 3.0) * 60, negative value to disable time limit. -->
<time-limit-threshold-ffa value="0.7" />
<!-- Value used to calculate capture limit in CTF, which is max(3.0, number of players * capture-limit-threshold), negative value to disable capture limit. -->
<capture-limit-threshold value="0.7" />
<!-- Value used to calculate time limit in CTF, which is max(3.0, number of players * (time-limit-threshold-ctf + flag-return-timemout / 60.0)) * 60.0, negative value to disable time limit. -->
<time-limit-threshold-ctf value="0.9" />
<!-- Value used by server to automatically calculate lap of each race in network game, if more than 0.0f, the number of lap of each track vote in linear race will be determined by max(1.0f, auto-lap-ratio * default lap of that track). -->
<auto-lap-ratio value="-1" />
<!-- Maximum ping allowed for a player (in ms). -->
<max-ping value="300" />
<!-- Tolerance of jitter in network allowed (in ms). -->
<jitter-tolerance value="100" />
<!-- Kick players whose ping is above max-ping. -->
<kick-high-ping-players value="false" />
<!-- ip: IP in X.X.X.X/Y (CIDR) format for banning, use Y of 32 for a specific ip, expired-time: unix timestamp to expire, if -1 (uint32_t max) than a permanent ban. -->
<server-ip-ban-list>
<ban ip="0.0.0.0/0" expired-time="0"/>
</server-ip-ban-list>
<!-- online-id: online id for banning, expired-time: unix timestamp to expire, if -1 (uint32_t max) than a permanent ban. -->
<server-online-id-ban-list>
<ban online-id="0" expired-time="0"/>
</server-online-id-ban-list>
</server-config>
```
At the moment STK has a list of STUN servers for NAT penetration which allows players or servers behind a firewall or router to be able to connect to each other, but in case it doesn't work, you have to manually disable the firewall or port forward the port(s) used by the STK.
By default STK servers use port `2759`. For example, in Ubuntu based distributions, run the following command to disable the firewall on that port:
`sudo ufw allow 2759`
You may also need to handle the server discovery port `2757` for connecting your WAN server in LAN / localhost.
Notice: You don't need to make any firewall or router configuration changes if you connect to our official servers.
### Hosting LAN (local internet) server
Everything is basically the same as WAN one, except you don't need an stk online account, just do:
`supertuxkart --server-config=your_config.xml --lan-server=your_server_name --network-console`
In LAN network it is required that the server and server discovery port is connectable by clients directly, no NAT penetration will be done in LAN.
------
After the first time configuration, you can just start the server with the command:
`supertuxkart --server-config=your_config.xml`, regardless of whether LAN or WAN server is chosen (of course you need to have a saved user for the WAN one), by default your server logging will be saved to the STK configuration directory with a name of `your_config.log`, given that the server configuration filename is `your_config.xml`.
You can find out that directory location [here (See Where is the configuration stored?)](https://supertuxkart.net/FAQ)
## Testing server
There is a network AI tester in STK which can use AI on player controller for server hosting linear races game mode, which helps automating the testing for servers, to enable it use:
`supertuxkart --connect-now=x.x.x.x:y --server-id=id --network-ai=n --auto-connect --no-graphics`
x.x.x.x:y is your server ip address with its port, id is the id field of server-info in STK server xml list, omit it if you are testing LAN server, n is the number of AI you want to create.
You can see STK server xml list [here](https://addons.supertuxkart.net/api/v2/server/get-all).
The server you want to test must be able to be connected without NAT penetration. You can remove `--auto-connect` if you have another client which can control the starting of games in server, or you can consider enable owner-less mode on server so the games on server can keep going. Remove `--no-graphics` if you want to see the AI racing. You can also run network AI tester in server-only build of STK.
With the network AI tester, it's easier to for example simulate high-loaded servers or bad (high ping with packet loss) network.
Tested on a Raspberry Pi 3 Model B+, if you have 8 players connected to a server hosted on it, the usage of a single CPU core is ~60% and there are ~60MB of memory usage for game with heavy tracks like Cocoa Temple or Candela City on the server, you can use the above figures to consider number of STK servers hosting on a same computer.
For bad network simulation, we recommend `network traffic control` by linux kernel, see [here](https://wiki.linuxfoundation.org/networking/netem) for details.
You have the best gaming experience when choosing server less than 100ms ping with no packet loss.

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="abyss" laps="3"/>
<track id="abyss" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="0"/>
<best>
<karts number="7"/>
<requirements position="1" time="150"/>
<requirements position="1" time="140"/>
</best>
<hard>
<karts number="6"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="5"/>
<requirements time="197"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="4"/>
<requirements time="270"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="candela_city" laps="3"/>
<track id="candela_city" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="75"/>
<best>
<karts number="9"/>
<requirements position="1"/>
<requirements position="1" time="120"/>
</best>
<hard>
<karts number="8"/>

View File

@@ -1,24 +1,31 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="cocoa_temple" laps="3"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="5"/>
<track id="cocoa_temple" laps="3" reverse="false"/>
<mode major="single" minor="timetrial"/>
<requirements trophies="0"/>
<best>
<karts number="8"/>
<requirements position="1" time="140"/>
<karts number="1"
replay_file="challenge_cocoa_temple_supertux.replay"/>
<requirements position="1"/>
</best>
<hard>
<karts number="7"/>
<requirements position="1" time="170"/>
<karts number="1"
replay_file="challenge_cocoa_temple_expert.replay"/>
<requirements position="1"/>
</hard>
<medium>
<karts number="6"/>
<requirements time="210"/>
<karts number="1"
replay_file="challenge_cocoa_temple_intermediate.replay"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="5"/>
<requirements time="300"/>
<karts number="1"
replay_file="challenge_cocoa_temple_novice.replay"/>
<karts number="1"/>
<requirements position="1"/>
</easy>
<unlock kart="suzanne"/>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="cornfield_crossing" laps="3"/>
<track id="cornfield_crossing" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="0"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="5"/>
<requirements time="195"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="4"/>
<requirements time="290"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="fortmagma" laps="3"/>
<track id="fortmagma" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="190"/>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="gran_paradiso_island" laps="3"/>
<track id="gran_paradiso_island" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="80"/>
<best>
<karts number="9"/>
<requirements position="1"/>
<requirements position="1" time="145"/>
</best>
<hard>
<karts number="8"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="greenvalley" laps="3"/>
<track id="greenvalley" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="90"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="hacienda" laps="3"/>
<track id="hacienda" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="25"/>
@@ -19,6 +19,6 @@
</medium>
<easy>
<karts number="5"/>
<requirements time="260"/>
<requirements position="2"/>
</easy>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="lighthouse" laps="4"/>
<track id="lighthouse" laps="4" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="125"/>
@@ -11,7 +11,7 @@
</best>
<hard>
<karts number="9"/>
<requirements position="1" time="140"/>
<requirements position="1" time="145"/>
</hard>
<medium>
<karts number="8"/>
@@ -19,6 +19,6 @@
</medium>
<easy>
<karts number="7"/>
<requirements time="250"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="mansion" laps="3"/>
<track id="mansion" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="100"/>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="mines" laps="3"/>
<track id="mines" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="140"/>
<best>
<karts number="10"/>
<requirements position="1" time="140"/>
<requirements position="1" time="135"/>
</best>
<hard>
<karts number="9"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="8"/>
<requirements position="2" time="190"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="7"/>
<requirements time="255"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="minigolf" laps="4"/>
<track id="minigolf" laps="4" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="130"/>
<best>
<karts number="10"/>
<requirements position="1"/>
<requirements position="1" time="135"/>
</best>
<hard>
<karts number="9"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="olivermath" laps="5"/>
<track id="olivermath" laps="5" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="0"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="5"/>
<requirements position="1" time="140"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="4"/>
<requirements position="1" time="210"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="sandtrack" laps="3"/>
<track id="sandtrack" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="0"/>

View File

@@ -1,24 +1,24 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="scotland" laps="3"/>
<track id="scotland" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="0"/>
<best>
<karts number="7"/>
<requirements position="1" time="140"/>
<requirements position="1" time="125"/>
</best>
<hard>
<karts number="6"/>
<requirements position="1" time="165"/>
<requirements position="1" time="150"/>
</hard>
<medium>
<karts number="5"/>
<requirements time="185"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="4"/>
<requirements time="270"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="snowmountain" laps="3"/>
<track id="snowmountain" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="115"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="8"/>
<requirements time="187"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="7"/>
<requirements time="250"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="snowtuxpeak" laps="3"/>
<track id="snowtuxpeak" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="45"/>
<best>
<karts number="8"/>
<requirements position="1" time="120"/>
<requirements position="1" time="115"/>
</best>
<hard>
<karts number="7"/>
@@ -15,10 +15,10 @@
</hard>
<medium>
<karts number="6"/>
<requirements time="170"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="5"/>
<requirements time="210"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="stk_enterprise" laps="3"/>
<track id="stk_enterprise" laps="3" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="105"/>
<best>
<karts number="9"/>
<requirements position="1"/>
<requirements position="1" time="155"/>
</best>
<hard>
<karts number="8"/>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="volcano_island" laps="2"/>
<track id="volcano_island" laps="2" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="15"/>
<best>
<karts number="8"/>
<requirements position="1"/>
<requirements position="1" time="165"/>
</best>
<hard>
<karts number="7"/>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="xr591" laps="2"/>
<track id="xr591" laps="2" reverse="false"/>
<mode major="single" minor="quickrace"/>
<requirements trophies="135"/>
<best>
<karts number="1"/>
<requirements energy="20" time="100"/>
<requirements energy="20" time="95"/>
</best>
<hard>
<karts number="1"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<challenge version="3">
<unlock_list list="false"/>
<track id="zengarden" laps="4"/>
<track id="zengarden" laps="4" reverse="false"/>
<mode major="single" minor="timetrial"/>
<requirements trophies="35"/>

View File

@@ -3,7 +3,7 @@
<div x="5%" y="5%" width="90%" height="90%" layout="vertical-row">
<div x="5%" y="0%" width="90%" proportion="6" layout="horizontal-row">
<div width="40%" height="100%" layout="vertical-row">
<icon id="icon" align="center" proportion="8" width="100%" icon="gui/loading.png" />
<icon id="icon" align="center" proportion="8" width="100%" icon="gui/icons/loading.png" />
<spacer proportion="1" />
</div>
<spacer proportion="1" />
@@ -27,13 +27,13 @@
<div width="80%" proportion="5" align="center">
<buttonbar id="actions" x="0" y="0" height="100%" width="100%" align="center">
<icon-button id="install" width="128" height="128"
icon="gui/package-update.png"
icon="gui/icons/package-update.png"
I18N="Add-on screen action" text="Install" />
<icon-button id="uninstall" width="128" height="128"
icon="gui/package-uninstall.png"
icon="gui/icons/package-uninstall.png"
I18N="Add-on screen action" text="Uninstall" />
<icon-button id="back" width="128" height="128"
icon="gui/back.png"
icon="gui/icons/back.png"
I18N="Add-on screen action" text="Back" />
</buttonbar>
<progressbar id="progress" x="0" y="20%" width="100%" height="30%" />

View File

@@ -8,9 +8,9 @@
<spacer height="7%" width="10"/>
<ribbon id="control_type" proportion="1" width="100%" align="center">
<icon-button id="accelerometer" width="fit" height="fit" icon="gui/difficulty_medium.png"
<icon-button id="accelerometer" width="fit" height="fit" icon="gui/icons/difficulty_medium.png"
I18N="Control type" text="Accelerometer"/>
<icon-button id="steering_wheel" width="fit" height="fit" icon="gui/difficulty_hard.png"
<icon-button id="steering_wheel" width="fit" height="fit" icon="gui/icons/difficulty_hard.png"
I18N="Control type" text="Steering wheel"/>
</ribbon>

View File

@@ -27,7 +27,7 @@
<label proportion="1" align="center" text_align="right" I18N="In the multitouch settings screen" text="Buttons scale"/>
<div proportion="1" align="center" height="fit" layout="horizontal-row" >
<spacer width="40" height="10" />
<gauge id="scale" proportion="1" min_value="50" max_value="150"/>
<gauge id="scale" proportion="1" min_value="80" max_value="160"/>
</div>
</div>

View File

@@ -7,10 +7,10 @@
<buttonbar id="buttons" height="30%" width="30%" align="center">
<icon-button id="confirm" icon="gui/green_check.png" I18N="In a 'are you sure?' dialog"
<icon-button id="confirm" icon="gui/icons/green_check.png" I18N="In a 'are you sure?' dialog"
text="Yes" align="center"/>
<icon-button id="cancel" icon="gui/remove.png" I18N="In a 'are you sure?' dialog"
<icon-button id="cancel" icon="gui/icons/remove.png" I18N="In a 'are you sure?' dialog"
text="Cancel" align="center"/>
</buttonbar>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<stkgui>
<div x="1%" y="2%" width="98%" height="96%" layout="vertical-row">
<div width="100%" height="40%" layout="vertical-row">
<div width="100%" height="25%" layout="vertical-row" >
<label id="name" width="100%" text_align="center"/>
</div>
<!-- This is filled in programmatically -->
<box width="100%" height="75%" align="center" layout="vertical-row" padding="1">
<list id="current_replay_info" x="0" y="0" width="100%" height="100%"/>
</box>
</div>
<div width="100%" height="60%" layout="horizontal-row">
<div width="36%" height="100%" layout="vertical-row">
<icon-button proportion="1" width="100%" height="100%" id="track_screenshot" custom_ratio="1.33333"/>
</div>
<div width="64%" height="100%" layout="vertical-row">
<div width="95%" align="center" layout="vertical-row" height="50%">
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="record-race" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="record-race-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Record the race for ghost replay"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="watch-only" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="watch-only-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Watch replay only"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="compare-ghost" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="compare-ghost-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Compare to another ghost"/>
</div>
</div>
<div width="95%" height="40%" align="center">
<buttonbar id="actions" x="0" y="0" height="100%" width="100%" align="center">
<icon-button id="start" width="128" height="128"
icon="gui/icons/green_check.png"
I18N="Ghost replay info screen action" text="Start Race" word_wrap="true" />
<icon-button id="add-ghost-to-compare" width="128" height="128"
icon="gui/icons/ghost_plus.png"
I18N="Ghost replay info screen action" text="Compare ghost" word_wrap="true" />
<icon-button id="remove" width="128" height="128"
icon="gui/icons/remove.png"
I18N="Ghost replay info action" text="Remove" word_wrap="true" />
<icon-button id="back" width="128" height="128"
icon="gui/icons/back.png"
I18N="Ghost replay info action" text="Back" word_wrap="true" />
</buttonbar>
</div>
<spacer width="10" height="10%"/>
</div>
</div>
</div>
</stkgui>

View File

@@ -5,12 +5,14 @@
<model id="model" width="100%" layout="horizontal-row" height="100%">
</model>
</div>
<label text="0 to use the original color, otherwise pick one from slider."
width="100%" text_align="center" word_wrap="true"
I18N="In the kart color slider dialog"/>
<div width="20%" height="fit" text-align="left" layout="horizontal-row" >
<checkbox id="toggle-slider" />
<spacer width="40"/>
<label id="toggle-text"/>
</div>
<spacer height="30" width="10"/>
<div height="fit" width="100%" layout="horizontal-row">
<gauge id="color-slider" min_value="0" max_value="100" proportion="1"/>
<gauge id="color-slider" min_value="1" max_value="100" proportion="1"/>
</div>
<spacer height="30" width="10"/>
<button id="close" text="Apply" align="center"/>

View File

@@ -35,9 +35,9 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="90%" height="16%" align="center">
<icon-button id="submit" width="64" height="64" icon="gui/green_check.png"
<icon-button id="submit" width="64" height="64" icon="gui/icons/green_check.png"
I18N="In the change password dialog" text="Submit" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="In the change password dialog" text="Close" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -7,9 +7,9 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="90%" height="30%" align="center">
<icon-button id="view" width="64" height="64" icon="gui/difficulty_medium.png"
<icon-button id="view" width="64" height="64" icon="gui/icons/difficulty_medium.png"
I18N="User info dialog" text="View" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="User info dialog" text="Close" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -15,10 +15,10 @@
<buttonbar id="options" width="90%" height="10%" align="center">
<icon-button id="ok" width="16" height="16"
icon="gui/green_check.png" text="OK"
icon="gui/icons/green_check.png" text="OK"
label_location="bottom"/>
<icon-button id="refresh" width="16" height="16"
icon="gui/restart.png"
icon="gui/icons/restart.png"
text="Refresh" label_location="bottom"/>
</buttonbar>
<spacer width="20" height="2%" />

View File

@@ -12,7 +12,7 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="25%" height="15%" align="center">
<icon-button id="cancel" width="64" height="64" icon="gui/green_check.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/green_check.png"
I18N="In the recovery dialog" text="Close" label_location="none"/>
</buttonbar>
</div>

View File

@@ -34,9 +34,9 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="25%" proportion="1" align="center">
<icon-button id="submit" width="64" height="64" icon="gui/green_check.png"
<icon-button id="submit" width="64" height="64" icon="gui/icons/green_check.png"
I18N="In the recovery dialog" text="Submit" label_location="none"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="In the recovery dialog" text="Cancel" label_location="none"/>
</buttonbar>
</div>

View File

@@ -23,9 +23,9 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="45%" height="14%" align="center">
<icon-button id="accept" width="64" height="64" icon="gui/green_check.png"
<icon-button id="accept" width="64" height="64" icon="gui/icons/green_check.png"
I18N="In the registration dialog" text="Accept" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="In the registration dialog" text="Cancel" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -12,9 +12,9 @@
<textbox id="password" proportion="2" height="fit"/>
</div>
<buttonbar id="options" width="90%" height="15%" align="center">
<icon-button id="join" width="64" height="64" icon="gui/green_check.png"
<icon-button id="join" width="64" height="64" icon="gui/icons/green_check.png"
I18N="In the server info dialog" text="Join" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="In the server info dialog" text="Cancel" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -33,13 +33,13 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="90%" height="20%" align="center">
<icon-button id="add" width="64" height="64" icon="gui/blue_plus.png"
<icon-button id="add" width="64" height="64" icon="gui/icons/blue_plus.png"
I18N="Splitscreen player in network" text="Add player" label_location="bottom"/>
<icon-button id="connect" width="64" height="64" icon="gui/green_check.png"
<icon-button id="connect" width="64" height="64" icon="gui/icons/green_check.png"
I18N="Splitscreen player in network" text="All players ready" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="Splitscreen player in network" text="Cancel" label_location="bottom"/>
<icon-button id="reset" width="64" height="64" icon="gui/remove.png"
<icon-button id="reset" width="64" height="64" icon="gui/icons/remove.png"
I18N="Splitscreen player in network" text="Clear added player" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -20,17 +20,17 @@
<spacer height="20" width="50"/>
<buttonbar id="options" width="90%" height="20%" align="center">
<icon-button id="remove" width="64" height="64" icon="gui/package-uninstall.png"
<icon-button id="remove" width="64" height="64" icon="gui/icons/package-uninstall.png"
I18N="User info dialog" text="Remove" label_location="bottom"/>
<icon-button id="friend" width="64" height="64" icon="gui/main_help.png"
<icon-button id="friend" width="64" height="64" icon="gui/icons/main_help.png"
I18N="User info dialog" text="Add Friend" label_location="bottom"/>
<icon-button id="accept" width="64" height="64" icon="gui/green_check.png"
<icon-button id="accept" width="64" height="64" icon="gui/icons/green_check.png"
I18N="User info dialog" text="Accept" label_location="bottom"/>
<icon-button id="decline" width="64" height="64" icon="gui/red_mark.png"
<icon-button id="decline" width="64" height="64" icon="gui/icons/red_mark.png"
I18N="User info dialog" text="Decline" label_location="bottom"/>
<icon-button id="enter" width="64" height="64" icon="gui/difficulty_medium.png"
<icon-button id="enter" width="64" height="64" icon="gui/icons/difficulty_medium.png"
I18N="User info dialog" text="View" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="User info dialog" text="Close" label_location="bottom"/>
</buttonbar>
</div>

View File

@@ -17,7 +17,7 @@
<spacer height="40" width="50"/>
<buttonbar id="options" width="25%" height="20%" align="center">
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
<icon-button id="cancel" width="64" height="64" icon="gui/icons/main_quit.png"
I18N="Vote dialog" text="Close" label_location="none"/>
</buttonbar>
</div>

View File

@@ -5,23 +5,23 @@
<!-- FIXME: some play in proportions occur below because the text of an icon
button is added UNDER it and not within its allocated height -->
<icon-button id="backbtn" align="center" icon="gui/back.png" extend_label="200"
<icon-button id="backbtn" align="center" icon="gui/icons/back.png" extend_label="200"
I18N="In the in-game dialog" text="Back to Game" proportion="3"/>
<spacer width="20" height="50" />
<buttonbar id="choiceribbon" proportion="4" width="100%" align="center">
<icon-button id="selectkart" width="128" height="128" icon="gui/random_kart.png"
<icon-button id="selectkart" width="128" height="128" icon="gui/icons/random_kart.png"
I18N="In the in-game dialog" text="Select kart" word_wrap="true"/>
<icon-button id="options" width="128" height="128" icon="gui/main_options.png"
<icon-button id="options" width="128" height="128" icon="gui/icons/main_options.png"
I18N="In the in-game dialog" text="Options" word_wrap="true"/>
<icon-button id="help" width="128" height="128" icon="gui/main_help.png"
<icon-button id="help" width="128" height="128" icon="gui/icons/main_help.png"
I18N="In the in-game dialog" text="Help" word_wrap="true"/>
<icon-button id="exit" width="128" height="128" icon="gui/main_quit.png"
<icon-button id="exit" width="128" height="128" icon="gui/icons/main_quit.png"
I18N="In the in-game dialog" text="Back to menu" word_wrap="true"/>
</buttonbar>

View File

@@ -1,33 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<stkgui>
<div x="2%" y="5%" width="90%" height="90%" layout="vertical-row" >
<div x="2%" y="5%" width="96%" height="90%" layout="vertical-row" >
<header id="title" width="100%" text_align="center" text="Paused" proportion="2" />
<!-- FIXME: some play in proportions occur below because the text of an icon
button is added UNDER it and not within its allocated height -->
<icon-button id="backbtn" align="center" icon="gui/back.png" extend_label="200"
<icon-button id="backbtn" align="center" icon="gui/icons/back.png" extend_label="200"
I18N="Race paused button" text="Back to Race" proportion="3"/>
<spacer width="20" height="50" />
<buttonbar id="choiceribbon" proportion="4" width="100%" align="center">
<icon-button id="newrace" width="128" height="128" icon="gui/main_race.png"
<icon-button id="newrace" width="128" height="128" icon="gui/icons/main_race.png"
I18N="Race paused button" text="Setup New Race" word_wrap="true"/>
<icon-button id="restart" width="128" height="128" icon="gui/restart.png"
<icon-button id="restart" width="128" height="128" icon="gui/icons/restart.png"
I18N="Race paused button" text="Restart Race" word_wrap="true"/>
<icon-button id="endrace" width="128" height="128" icon="gui/race_giveup.png"
<icon-button id="endrace" width="128" height="128" icon="gui/icons/race_giveup.png"
I18N="Race paused button" text="Give Up Race" word_wrap="true"/>
<icon-button id="options" width="128" height="128" icon="gui/main_options.png"
<icon-button id="options" width="128" height="128" icon="gui/icons/main_options.png"
I18N="Race paused button" text="Options" word_wrap="true"/>
<icon-button id="help" width="128" height="128" icon="gui/main_help.png"
<icon-button id="help" width="128" height="128" icon="gui/icons/main_help.png"
I18N="Race paused button" text="Help" word_wrap="true"/>
<icon-button id="exit" width="128" height="128" icon="gui/main_quit.png"
<icon-button id="exit" width="128" height="128" icon="gui/icons/main_quit.png"
I18N="Race paused button" text="Exit Race" word_wrap="true"/>
</buttonbar>

View File

@@ -15,7 +15,7 @@
<spacer height="2%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="novice" icon="gui/difficulty_easy.png"
<icon-button id="novice" icon="gui/icons/difficulty_easy.png"
I18N="Difficulty" text="Novice" height="100%"/>
<spacer width="5%" height="1"/>
<label id="novice_label" proportion="1" height="100%"/>
@@ -24,7 +24,7 @@
<spacer height="6%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="intermediate" icon="gui/difficulty_medium.png"
<icon-button id="intermediate" icon="gui/icons/difficulty_medium.png"
I18N="Difficulty" text="Intermediate" height="100%"/>
<spacer width="5%" height="1"/>
<label id="intermediate_label" proportion="1" height="100%"/>
@@ -33,7 +33,7 @@
<spacer height="6%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="expert" icon="gui/difficulty_hard.png"
<icon-button id="expert" icon="gui/icons/difficulty_hard.png"
I18N="Difficulty" text="Expert" height="100%"/>
<spacer width="5%" height="1"/>
<label id="difficult_label" proportion="1" height="100%"/>
@@ -42,7 +42,7 @@
<spacer height="6%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="supertux" icon="gui/difficulty_best.png"
<icon-button id="supertux" icon="gui/icons/difficulty_best.png"
I18N="Difficulty" text="SuperTux" height="100%"/>
<spacer width="5%" height="1"/>
<label id="supertux_label" proportion="1" height="100%"/>

View File

@@ -15,7 +15,7 @@
<spacer height="2%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="novice" icon="gui/difficulty_easy.png"
<icon-button id="novice" icon="gui/icons/difficulty_easy.png"
I18N="Difficulty" text="Novice" height="100%"/>
<spacer width="5%" height="1"/>
<label id="novice_label" proportion="1" height="100%"/>
@@ -24,7 +24,7 @@
<spacer height="8%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="intermediate" icon="gui/difficulty_medium.png"
<icon-button id="intermediate" icon="gui/icons/difficulty_medium.png"
I18N="Difficulty" text="Intermediate" height="100%"/>
<spacer width="5%" height="1"/>
<label id="intermediate_label" proportion="1" height="100%"/>
@@ -33,7 +33,7 @@
<spacer height="8%" width="1"/>
<div width="100%" proportion="1" layout="horizontal-row">
<icon-button id="expert" icon="gui/difficulty_hard.png"
<icon-button id="expert" icon="gui/icons/difficulty_hard.png"
I18N="Difficulty" text="Expert" height="100%"/>
<spacer width="5%" height="1"/>
<label id="difficult_label" proportion="1" height="100%"/>

View File

@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<stkgui>
<div y="2%" width="100%" height="96%" layout="vertical-row">
<div width="100%" height="50%" proportion="6" layout="horizontal-row">
<div width="25%" height="100%" layout="vertical-row">
<icon-button proportion="1" width="100%" height="100%" id="track_screenshot" custom_ratio="1.33333"/>
</div>
<div width="75%" height="100%" layout="vertical-row">
<div width="100%" height="25%" layout="vertical-row" >
<label id="name" width="100%" text_align="center"/>
</div>
<!-- This is filled in programmatically -->
<box width="98%" height="75%" align="center" layout="vertical-row" padding="1">
<list id="current_replay_info" x="0" y="0" width="100%" height="100%"/>
</box>
</div>
</div>
<div width="90%" align="center" layout="vertical-row" height="fit">
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="record-race" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="record-race-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Record the race for ghost replay"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="watch-only" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="watch-only-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Watch replay only"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<checkbox width="fit" id="compare-ghost" I18N="Ghost replay info action" text_align="left"/>
<spacer width="10"/>
<label proportion="1" id="compare-ghost-text" height="100%" text_align="left" I18N="Ghost replay info action" text="Compare to another ghost"/>
</div>
</div>
<div width="90%" proportion="5" align="center">
<buttonbar id="actions" x="0" y="0" height="100%" width="100%" align="center">
<icon-button id="start" width="128" height="128"
icon="gui/green_check.png"
I18N="Ghost replay info screen action" text="Start Race" />
<icon-button id="add-ghost-to-compare" width="128" height="128"
icon="gui/ghost_plus.png"
I18N="Ghost replay info screen action" text="Compare ghost" />
<icon-button id="remove" width="128" height="128"
icon="gui/remove.png"
I18N="Ghost replay info action" text="Remove" />
<icon-button id="back" width="128" height="128"
icon="gui/back.png"
I18N="Ghost replay info action" text="Back" />
</buttonbar>
</div>
</div>
</stkgui>

View File

@@ -44,6 +44,8 @@ options_language.png by Alayan, based on http://www.languageicon.org/, released
blue_flag.png, heart.png and red_flag.png by Benau, released under CC-BY-SA 4
lap_flag.png, modified by Alayan, original by Alina Oleynik from The Noun Project, under CC-BY 3.0
====
Glass Skin by Auria, under CC-BY-SA 3+

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Some files were not shown because too many files have changed in this diff Show More