Commit Graph

16724 Commits

Author SHA1 Message Date
Benau
67332bc991 Use gui race message for goal text to avoid confusing with in game chat 2020-07-05 09:50:30 +08:00
Benau
b5f25ef057 Fix assertion when resizing screen in result gui 2020-07-05 09:20:58 +08:00
Sebastian Krzyszkowiak
b74dce3887 file_manager: Emit a compiler error when no asset dir is defined for mobile platform
This may save some $HOMEs from being rm -rf'd.
2020-06-25 07:16:38 +02:00
David Carlier
a4b9900aee Haiku glew build fix and update. 2020-06-21 08:11:02 +00:00
David CARLIER
485a346198
Add memory total for NVIDIA cards in the logs (#4315)
* Add memory total for NVIDIA cards in the logs

* define the GL request ID
2020-06-21 02:44:13 +08:00
risostk
0b66f84755 Use skin color for the kart name label on kart selection screen 2020-06-19 17:55:06 -05:00
risostk
88f2624624 use skin color for player list 2020-06-17 22:00:25 -05:00
Benau
65b13cfeb2 Only rebuild device list when there is difference in gamepad count 2020-06-17 14:42:53 +08:00
Benau
1055dd8932 Remove unused gamepad android config 2020-06-17 11:12:09 +08:00
Benau
11a7cdfe9d Fix server only build 2020-06-17 10:05:10 +08:00
Benau
5feed3186a Hide the anonymous hardware statistics button because server is down 2020-06-16 14:07:49 +08:00
Benau
451bbd1a4a Allow downloading addon icons on demand, fixed #2844 2020-06-16 14:02:55 +08:00
Benau
2171bd7bf3 Update SDL2 with screen keyboard height functions for iOS 2020-06-16 12:07:13 +08:00
Benau
945565790c Fix crash in OSX
Resizing of screen can only be done in main thread
2020-06-16 09:59:02 +08:00
Benau
d1ab5f8aaf Allow remembering network splitscreen option when opening STK 2020-06-16 09:46:56 +08:00
Benau
07f6282142 Remove hasHardwareKeyboard because it's not reliable in iOS 2020-06-16 08:04:46 +08:00
Benau
89a57e6e19 Allow configure event callback for widgets based on input type
This will allow for example touch screen tapping to not triggering kart
selection in mobile STK
2020-06-16 00:44:11 +08:00
Benau
2b0b941219 Add window position to creation parameters 2020-06-15 16:35:33 +08:00
Benau
964a13368c Fix branch new initialization of iOS STK 2020-06-15 12:02:16 +08:00
risostk
22987062d2 make red team color also configurable 2020-06-14 22:00:58 -05:00
Panagiotis Vasilopoulos
cdb33f18fa
Added user agent for Haiku 2020-06-14 22:03:50 +03:00
Panagiotis Vasilopoulos
6e4c4a757d Improved socket code
* Removed assertion
* Fixes networking/compiling on the Haiku operating system

Co-authored-by: Benau <Benau@users.noreply.github.com>
2020-06-14 22:03:50 +03:00
riso
4694223c03
SVG support (#4306)
* first version of svg support

* merge some nanosvg pr

* look for svg icons first

* bug fix

* scale svg depends on screen size

* use irrlicht headers to get screen size

* finish isALoadableFileFormat for svg

* delete dynamically allocated memory

* fix wrong delete

* only rescale icons, due to size settings in stkskin.xml depends on the size of the image file

* check svg in FileManager::getAsset

* fix large icon in list
2020-06-14 15:15:47 +08:00
Benau
128ef93abf Fix crashes if resize event exists unexpectedly 2020-06-13 16:36:28 +08:00
Benau
d2474f79aa Update strings for iOS STK 2020-06-13 16:16:27 +08:00
Benau
5ca51fd2a9 Add support for adaptive vsync 2020-06-13 16:10:27 +08:00
Benau
a2675497e0 Fix strings for mobile STK 2020-06-13 15:45:03 +08:00
Benau
84cf6b1ea0 Add pause main loop for mobile STK 2020-06-13 15:38:22 +08:00
Benau
ae3497a31d Save keyboard and gamepad availability result in kart selection screen
Calling hasHardwareKeyboard maybe expensive in iOS
2020-06-12 20:43:00 +08:00
Benau
784d641ebc Add screen keyboard handling for iOS 2020-06-11 13:53:47 +08:00
Benau
ea0380ae16 Use SDL2 to create iOS device 2020-06-11 11:40:25 +08:00
Benau
23a26648d8 Improve in game resizing handling 2020-06-09 11:56:05 +08:00
Benau
0a7f9cd314 Add race gui resizing 2020-06-09 11:05:56 +08:00
Benau
83a49068e4 Add text billboard resizing 2020-06-09 10:56:19 +08:00
Benau
81def6cb65 Add in game screen resizing 2020-06-07 16:03:16 +08:00
Benau
d4cd6d6fc9 Add minimum window size 2020-06-06 01:02:01 +08:00
Benau
2f1acc8139 Enable screen resizing in some places 2020-06-04 15:51:54 +08:00
Benau
da1d41bf85 Add resizing of GUIEngine (only works with some screen) 2020-06-04 15:49:34 +08:00
Benau
d7695cb0a7 Fix crash when render loading polling joystick event 2020-06-02 15:14:09 +08:00
Benau
7d16f2456a Add unicode text input with SDL2 2020-06-02 10:58:39 +08:00
Benau
cc13d32951 Use SDL2 clipboard for edit box 2020-06-02 10:46:20 +08:00
Benau
2eaca2091e Use SDL2 to handle window creation 2020-06-02 10:36:06 +08:00
Benau
03fd9f1639 Fix broken translation generation 2020-05-31 12:00:21 +08:00
riso
661688db2d
Show a message once a goal is made in soccer (#4304)
* log the goal on server once a player scored in soccer

* show a message once a player made a goal in soccer

* bug fix, add comments

* remove server log
2020-05-30 13:28:27 +08:00
Benau
7829cb3928 Avoid possible crash 2020-05-24 23:59:41 +08:00
riso
b22c09e345
Os emoji in lobby (#4298)
* first version, not work with old version server

* fix bug of sending extra byte

* delete the extra line
2020-05-24 23:56:25 +08:00
Benau
f316a83c63 Limit max user name length for offline account in server 2020-05-23 13:35:05 +08:00
Benau
92b40a986f Remove duplicated code 2020-05-23 13:12:10 +08:00
Benau
cbb3863180 Use std::unique_ptr for message queue memory management 2020-05-23 13:02:04 +08:00
Benau
acf862903d Allow message queue changing size with font 2020-05-23 12:52:00 +08:00
Benau
30e39b5a7a Fix crash during encoding when exiting race 2020-05-23 12:13:09 +08:00
3risian
712854b33a
Expose getDifficulty() to scripting 2020-05-23 11:40:58 +10:00
Benau
4a8306fca5 Initialize global variables in android device before android_app->running 2020-05-14 10:49:49 +08:00
Benau
1795495bde Allow picking tracks from addon category now 2020-05-14 09:40:28 +08:00
Benau
6b43af33fa Add Silesian language support to tinygettext 2020-05-13 15:47:22 +08:00
Benau
53bf93f2df Allow always spectating with /spectate [0 or 1] 2020-05-13 11:27:27 +08:00
Benau
b122572a0c Handle invisibility of team chat button depends on settings 2020-05-13 08:53:02 +08:00
Benau
8f40f49506 Fix missing initialization of variables 2020-05-13 08:48:50 +08:00
Benau
e802b21d15 Fix missing country names translation when system language is used 2020-05-13 08:44:28 +08:00
Benau
5d3ccb54b0 Move server refresh list storage to class user
This fixes possible duplicated servers when refreshing too quickly
2020-05-09 13:24:07 +08:00
Benau
0fc9e8dba8 Use std::stable_sort to avoid destroying order when toggling IPv6 2020-05-08 10:13:28 +08:00
Benau
3d74dfea34 Add team chat for online team game 2020-05-08 09:21:37 +08:00
Benau
c77a695f35 Add back the default stun servers list to user config
Now we can remove stun server in c8d9383d6a
2020-05-07 15:23:12 +08:00
Benau
c8d9383d6a Allow erasing stun server by using zero weight in dns record 2020-05-07 09:19:41 +08:00
Benau
80d1ba6b10 Revert "Allow music title to be translatable, fix #4281"
Some translator and stk fans think it is confusing
2020-05-06 14:28:46 +08:00
Benau
d03a821e53 Allow music title to be translatable, fix #4281 2020-05-05 10:22:21 +08:00
Karl Ove Hufthammer
1d9e6f8135 Make formatting of song title translatable
Different languages use different quotation marks and spacing
(e.g., « Song title » in French), so the formatting needs
to be translatable.
2020-05-02 13:32:57 +02:00
QwertyChouskie
3359862b2b
Update shoulder-less controller mapping
Although there's not much we can do about accel on the shoulder-less config, we can at least make the menu keys and pause/rescue consistent with the shouldered config.
2020-05-01 20:39:01 -07:00
Benau
cf24157358 Fix #2438 with SDL2 gamecontroller mapping 2020-05-01 12:17:14 +08:00
Benau
3bb910099d Update buttons translation 2020-05-01 11:40:21 +08:00
Benau
9f217ccf62 Add some text drawing batching in race gui 2020-05-01 09:55:29 +08:00
Benau
e892b43d0e Remove unneeded setShadow because black border is always used 2020-05-01 09:51:24 +08:00
Benau
5c77e641e9 Add batch drawing for list box widget 2020-05-01 09:45:22 +08:00
Benau
4d72b118e3 Batch glyph for quicker text rendering 2020-05-01 09:34:04 +08:00
Benau
719af8c54b Add the missing checking for wrong password 2020-05-01 08:36:53 +08:00
Benau
b1bcfd94a1 Fix crash when widget is cleared and old spinner widget received callback 2020-04-30 16:34:44 +08:00
Benau
10af6f7a80 Allow updating kart color when slider moves with mouse 2020-04-30 16:10:41 +08:00
Benau
cc9980f2a4 Allow re-enter password instantly for failed private server joining 2020-04-30 07:43:14 +08:00
Benau
1bd34e338e Allow showing or hiding soccer player list with F7 in artist debug mode 2020-04-29 01:09:33 +08:00
Benau
5dffc8cfa1 Allow exit splitscreen multiplayer with gamepad only 2020-04-28 12:37:40 +08:00
Benau
11757a557a Update gui strings and hide some button for mobile stk (with gamepad) 2020-04-28 10:20:24 +08:00
Benau
e7e702ad39 Fix crashes if broken mesh is loaded (found in google play) 2020-04-28 09:27:25 +08:00
Benau
720ed698ce Use bitset for easier code and fix more than 1 possible hat 2020-04-28 01:12:05 +08:00
Benau
cd8848ad53 Use timer only for analog axis 2020-04-27 01:12:06 +08:00
Benau
957fe41f3d Remove unneeded axis checking after SDL2 is used 2020-04-21 20:05:50 +08:00
Benau
0e023cae78 Use sdl mapping to determine if axes are analog 2020-04-21 19:57:04 +08:00
Benau
32e3e4a504 Make gamepad visualization work with SDL2 2020-04-21 19:40:30 +08:00
Benau
6a875e04b6 Remove user id from XInput devices name to allow hotplugging with same config 2020-04-21 18:47:16 +08:00
Benau
96ec4d9c3d Try to fix duplicated event produced by button 2020-04-21 18:33:56 +08:00
Benau
8c412ee840 Push desktop kart selection depends on device available in mobile STK 2020-04-21 18:26:45 +08:00
Benau
abfb9e535c Allow gamepad without mapped buttons to use scan code directly in android 2020-04-21 18:07:43 +08:00
Benau
8f9fc8f7fe Handle all input events in java 2020-04-21 15:47:04 +08:00
Benau
bae2262bd9 Add SDL2 to android 2020-04-21 15:28:02 +08:00
Benau
5eb7b023b3 Add SDL2 to iOS 2020-04-21 10:11:41 +08:00
Benau
6db8906adb Add default mapping from sdl controller
Also adjust default non-sdl mapping, maybe now 4 actions in 1 stick
works better...
2020-04-21 09:46:00 +08:00
Benau
2405a3a00c Add sdl controller mapping parser 2020-04-21 09:07:29 +08:00
Benau
d3f45e84a3 Add default setting for binding which STICKBUTTON uses 2020-04-21 00:54:20 +08:00
Benau
130be12a64 Fix input sensing with SDL2 2020-04-21 00:30:03 +08:00
Benau
189938e179 Make gamepad auto added or removed in option screen 2020-04-21 00:19:51 +08:00
Benau
00cb6c2d48 Use SDL2 for better gamepad support and hotplug 2020-04-21 00:14:32 +08:00
luffah
cd7aa2c90c replace split screen horizontal checkbox by a spinner vertical/horizontal 2020-04-19 15:56:49 +02:00
Deve
e6464fff9e Don't spam in server logs 2020-04-16 22:38:47 +02:00
luffah
914f1a6a77 add user option (config.xml) to substitute look back camera by a camera that follows the ball in soccer mode 2020-04-16 18:50:35 +02:00
luffah
2ca815ace4 add top view for spectator mode & remove gui item view for this camera mode 2020-04-16 16:24:56 +02:00
Benau
aec3790a19 Use a better type for replacement of ssize_t 2020-04-14 12:48:50 +08:00
Benau
8aca832441 Fix msvc build 2020-04-14 11:53:03 +08:00
Benau
93cf4bab52 Fix crash in case system doesn't support IPv4 or IPv6 2020-04-14 11:35:43 +08:00
Benau
8e64433c3a Add inet_pton for Windows XP support 2020-04-14 11:00:59 +08:00
Benau
359e2ff84f Add llvm mingw for pdb generation
It uses visual studio dependencies
2020-04-11 16:25:58 +08:00
Benau
9157fb43f0 Use std::thread, std::mutex and std::condition_variable everywhere 2020-04-11 11:01:18 +08:00
Benau
b6e9fcd801 Use std::thread for wiimote manager 2020-04-11 00:48:11 +08:00
Benau
f6be14d157 Add proper cleaning of thread for news manager 2020-04-11 00:33:29 +08:00
Benau
ccc4bc793d Fix possbile conflict with SearchPathW 2020-04-10 10:02:53 +08:00
Benau
5aafb42b28 Use thread local for thread id mapping in profiler 2020-04-10 09:58:45 +08:00
wb9688
b7342a9774
Use smoothed position for kart sounds (#4264)
* Use smoothed position for kart sounds

* Don't use smoothed position for explosion

Co-authored-by: wb9688 <wb9688@users.noreply.github.com>
2020-04-10 00:14:10 +08:00
QwertyChouskie
694d169ef4 Fix more textures paths 2020-04-08 18:14:10 -07:00
QwertyChouskie
e614f9f384 Remove old code
It's never reached as it's impossible to build STK with stock Irrlicht
2020-04-08 17:44:15 -07:00
QwertyChouskie
7c287676a5 Fix display of anchor icon 2020-04-08 17:41:36 -07:00
Benau
a0e4835602 Fix wrong prediction of powerup in online soccer 2020-04-06 15:00:47 +08:00
Benau
f55331cf65 Fix duplicated event for joining in splitscreen screen 2020-04-06 10:24:10 +08:00
David Carlier
12afc23e4e NetBSD build few updates. 2020-04-05 16:10:34 +01:00
Benau
bffca4f812 Fix sticking of pause button in spectate mode 2020-04-04 01:10:16 +08:00
Benau
ec93746513 Fix #4257 2020-04-03 14:28:21 +08:00
Benau
84d38cd221 Sort kart with position for soccer spectate with icons code updated 2020-04-03 14:19:20 +08:00
Benau
0d0da15a62 Use std::vector for ai profiles so the order is preserved 2020-04-03 14:10:52 +08:00
Benau
22ff215d15 Allow using pause action in spectate for gamepad only controlling 2020-04-03 13:35:47 +08:00
QwertyChouskie
ea4d3c03a9
Allow theming of powerup/attachment icons (#4258)
* Allow theming of powerup/attachment icons
Icons were optimized with `pngquant` then `optimize_data.sh`

* Change help screens to use icons from icons folder rather than `models`
2020-04-03 13:18:50 +08:00
Benau
f9f5d3ebb1 Fix broken IPv4 direct connection after LAN server creation 2020-03-29 11:41:11 +08:00
Benau
76c78b82d8 Fix broken backward spectate camera after switching to soccer one 2020-03-29 10:34:06 +08:00
Benau
da4b985b8f Fix broken map fire to select which lead to duplicated events 2020-03-29 09:32:01 +08:00
QwertyChouskie
da5cbee577 Fix missing track icon on track info screen not being themed
Also fixes the aspect ratio and increases the resolution.
2020-03-28 18:19:51 -07:00
Benau
6991305b71 Remove unused field in class 2020-03-27 12:46:23 +08:00
Benau
20bcd1ae05 Use the same order as team side for drawing soccer kart list 2020-03-27 12:41:34 +08:00
Benau
2f4f0ea560 Fix missing control when gamepad has no axis at all 2020-03-27 12:29:25 +08:00
Benau
b2c741a4b5 Fixed wrong icon frame with arrow used in kart list 2020-03-24 01:02:19 +08:00
Benau
f47b410d92 Add soccer support to show karts held powerups 2020-03-24 00:46:20 +08:00
QwertyChouskie
3c627170ee Increase size of Loading icon
Also center the whole icon+text to the center of screen, rather than
centering the icon and putting the text below
2020-03-20 12:10:35 -07:00
Benau
4170628d23 Rewrite some code for updated kart characteristics 2020-03-16 11:48:02 +08:00
Benau
a589ab4a10 Update kart characteristics with python script 2020-03-16 11:27:21 +08:00
luffah
8449bf2714 add camera parameter forward-smoothing (bool to set smoothing) and implement forward-up-angle in smoothing case 2020-03-15 19:32:15 +01:00
Benau
1b3cc83235 Avoid using android robot icon 2020-03-15 14:05:41 +08:00
Benau
7174bcb741 Change help for touch device 2020-03-15 13:55:40 +08:00
Benau
840a8cbb2d Add tablet icon for touch device icon 2020-03-15 13:54:28 +08:00
Benau
2cf36570c4 Fix missing initialization of confirmed item ticks in child server 2020-03-15 10:14:29 +08:00
Benau
846ee94247 Try to fix STKPeer destructor crash 2020-03-15 10:13:21 +08:00
Benau
a1fa1749d1 Make sure the correct socket type is used 2020-03-15 10:10:59 +08:00
Benau
9860191409 Rename IPv6 server option to allow old config to use as default 2020-03-15 10:10:05 +08:00
Benau
364936e37b Allow getting stun server list using SRV records 2020-03-15 10:05:13 +08:00
Benau
7598dc7b37 Use minidns for android to fix starting crash 2020-03-13 21:31:33 +08:00
Luffah
cf6225e3ae
add a camera mode to spectate soccer in large isometric view (switchable with accel/brake keys) (#4245)
Co-authored-by: luffah <luffah@runbox.com>
2020-03-13 13:08:40 +08:00
Benau
fbb1889faa Pause request in iOS STK to avoid crash when pressing home button 2020-03-12 23:48:29 +08:00
Benau
dccbe675fc Quick fix for weird "triangle selection" in touch screen for dynamic ribbon widget 2020-03-11 15:45:28 +08:00
Benau
80dd4732f3 Disable unsupported setter from kart for network ai 2020-03-11 15:44:59 +08:00
Benau
65cd28f767 Always enable crash checking for network ai 2020-03-11 15:44:45 +08:00
Benau
fd4cac7c9d Fix non-updating slip stream texture after kart finished race 2020-03-11 15:42:14 +08:00
Benau
afa60c4537 Disable scripting engine in child process 2020-03-11 15:35:02 +08:00
riso
1d855ccfd7
allow 0 player number if there is AI (#4240)
* allow 0 player number if there is AI

* space
2020-03-11 12:05:29 +08:00
Benau
da561b7081 Update child process addons newly installed in lobby 2020-03-09 23:44:36 +08:00
Benau
d4c9b16c28 Don't kick in game GUI server host so he can idle in game
Fixed #4237
2020-03-09 16:19:54 +08:00
Benau
07e471c8ba Avoid calling gui and music related functions in child process 2020-03-09 16:14:12 +08:00
Benau
1ea75b5f0e Update translation string 2020-03-07 11:53:43 +08:00
Benau
c542feaf4d Include all tracks by default using android app bundle 2020-03-06 10:37:01 +08:00
Benau
122d2cf737 Fix string grammar 2020-03-01 10:18:34 +08:00
Benau
bd513646ac Show a better change team text for multitouch device 2020-03-01 10:17:00 +08:00
Benau
ed0a2b49e7 Add soccer tips set 2020-03-01 01:16:37 +08:00
Benau
8b8f03ad75 Tell the main process network type 2020-03-01 00:40:29 +08:00
Benau
e584bced0e Enable iOS server creation 2020-02-29 01:26:01 +08:00
Benau
8b119201dc Use request manager to handle server recovery and registration 2020-02-29 01:16:20 +08:00
Benau
e31bd30f1f Avoid exit hang in wan server for GUI server 2020-02-28 22:49:21 +08:00
Benau
ee22c0f714 Stop STKHost if cannot register public address 2020-02-28 22:49:06 +08:00
Benau
eff00140f1 Remove unneeded previous unjoin because request is executed one by one 2020-02-28 20:27:26 +08:00
Benau
9a7dcf8d8b Fix global variable of rubber ball id 2020-02-28 19:53:18 +08:00
Benau
e6deaabcf1 Use std::atomic enum for SFXStatus 2020-02-28 19:53:13 +08:00
Benau
a2f72a0d13 Avoid including sfx_manager.hpp inside kart properties header 2020-02-28 19:53:08 +08:00
Benau
f590280431 Fix mobile STK server logging 2020-02-28 19:53:01 +08:00
Benau
f37a5ee5d3 Only use sound and music in main process 2020-02-28 19:52:54 +08:00
Benau
885aec8020 Add 3d animation ipo copying to child track objects 2020-02-28 19:52:23 +08:00
Benau
607c6932f0 Add track object copying to child process 2020-02-28 19:52:17 +08:00
Benau
f3b5938b8e Use a new way to identify server owner in graphical server 2020-02-28 19:52:12 +08:00
Benau
4322f47413 Reset graphical client server if its owner quited the game 2020-02-28 19:52:07 +08:00
Benau
97ad138763 Fix child process invalid usage at different places 2020-02-28 19:52:00 +08:00
Benau
d41594ea5b Initial working of starting game if no physical object exists 2020-02-28 19:51:40 +08:00
Benau
6b08a873a2 Allow world to have 2 process instances
Also add specific process type handling to world
2020-02-28 09:43:25 +08:00
Benau
1958e5940c Allow rewind manager to have 2 process instances 2020-02-28 09:43:19 +08:00
Benau
ca0749cf6b Allow game protocol to have 2 process instances 2020-02-28 09:43:13 +08:00
Benau
6a635e1a56 Turn physics into a singleton get for 2 processes 2020-02-28 09:43:05 +08:00
Benau
63bad92765 Turn race event manager into a singleton get for 2 processes 2020-02-28 09:43:00 +08:00
Benau
ccdca532b5 Turn projectile manager into a singleton get for 2 processes 2020-02-28 09:42:52 +08:00
Benau
6a3e606c2d Turn race manager into a singleton get for 2 processes 2020-02-28 09:42:44 +08:00
Benau
c8ea01d264 Initial work on client server within same process 2020-02-28 09:41:07 +08:00
Benau
b7f2a9614d Add tool for server creation in the same process
For iOS or Android App Bundle (or other platform) where create process
or fork is not possible or can not be easily done
2020-02-28 09:35:25 +08:00
Benau
d63c68af78 Add thread safe log prefix assignment 2020-02-28 09:35:11 +08:00
Benau
56fb1b9cba Add header helper for thread local storage 2020-02-28 09:35:07 +08:00
Benau
015530e1eb Don't dismiss dialog in no graphics world of STK 2020-02-28 09:32:22 +08:00
Benau
fa0da462fb Update ENetAddress to use 5 uint32_t to store IP
ENetAddress ea = {} will allow to listen to any IPv4 or IPv6 address
when using system or bundled enet

The last uint32_t is for IPv6 scope id (required for IPv6 only lan
servers)
2020-02-28 00:59:37 +08:00
Benau
6d85a03423 Remove unneeded checking of client lobby peer connection 2020-02-27 11:02:15 +08:00
Benau
2ddc26ef9c Move disconnected peer checking to STKHost loop to avoid race condition 2020-02-27 11:00:41 +08:00
Benau
f935c68d20 Don't discard static message in no graphics STK 2020-02-25 12:22:35 +08:00
Benau
a418302d9f Add thread safe function for server time logging prefix 2020-02-25 12:17:27 +08:00
Benau
40c57e8115 Don't check dialog for enterGameState in no graphics STK 2020-02-25 09:55:59 +08:00