Compare commits

..

1015 Commits
v59 ... v73

Author SHA1 Message Date
Anuken
a2e55f7861 Removed creeptree for now 2019-04-30 13:09:40 -04:00
Anuken
761e0114a5 Apparent typo fix 2019-04-30 12:56:57 -04:00
laohuaji233
dcae128d06 Update bundle_zh_CN.properties (#475)
more translations
2019-04-30 12:49:39 -04:00
J-VdS
a891a8badc NL_BE bundle progress (Fishbuilder) (#474)
* Create bundle_nl_BE.properties

work in progress, just to save the file

* tot 148
2019-04-30 12:47:54 -04:00
Zachary
f3ec5b533e Update bundle_ja.properties (#473)
Translated like one name lmao
2019-04-30 12:47:42 -04:00
Zachary
d50397edf1 Update bundle_zh_CN.properties (#472)
Translated more block names.
2019-04-30 12:47:32 -04:00
Deyvid67
49986f22c8 Update bundle_pt_BR.properties (#469) 2019-04-30 12:47:26 -04:00
Predator127
70f279d978 Update bundle_pt_BR.properties (#467)
This is an updated version of the Brazillian translation, Made by Hanko
2019-04-30 12:46:01 -04:00
VizardAlpha
84c5a75b6c Updates bundle_fr_BE.properties (#462)
* Updates bundle_fr_BE.properties

* Update bundle_fr_BE.properties

* Update bundle_fr_BE.properties
2019-04-30 12:45:38 -04:00
Paul T
97663e87a6 Update bundle_de.properties (#452)
* Update bundle_de.properties

* Update bundle_de.properties
2019-04-30 12:45:06 -04:00
laohuaji233
5956edcb8e Update bundle_zh_CN.properties (#453)
More translations
2019-04-30 12:44:57 -04:00
Prosta4okua
7e975f2134 Update bundle_uk_UA.properties and bundle_ru.properties (#454)
* Update bundle_uk_UA.properties

Виправив помилку, переклав Slag.

* Update bundle_uk_UA.properties

Додав переклад дьогтю

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_ru.properties

Commit from Github Desktop

* Update bundle_ru.properties

* New translations was added

Salt Rocks and Pebbles

* Update bundle_ru.properties

* Update bundle_ru.properties

* New text

* Fix error

* Update bundle_ru.properties

* Add new translations

* Add Solonchaki :D

* 1
2019-04-30 12:44:41 -04:00
키에르
40de13f9c7 Update bundle_ko.properties (#457)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

*  Apr 22, 2019

* fix typo

* Update bundle_ko.properties
2019-04-30 12:44:08 -04:00
Dominik
70946539e3 Update bundle_pl.properties (#458)
Translated: wave info, generate, ammo info, drill, power efficency
2019-04-30 12:43:20 -04:00
CinExPL
996c594dfc Update bundle_pl.properties (#460)
Improvements based on comparison with original bundle file.
2019-04-30 12:39:00 -04:00
Anuken
d8eeb79b63 Un-debugged content 2019-04-30 12:29:19 -04:00
Anuken
cf61dd0704 Removed antialiasing due to bugs / Improved default waves 2019-04-30 12:05:01 -04:00
Anuken
6fd5f1563a Fixed incorrect power source sprite 2019-04-30 00:07:38 -04:00
Anuken
3c643c917a Map bugfixes / Sprite tweak / Zone loadout moved to dialog 2019-04-29 23:58:16 -04:00
Anuken
378be0ef86 Better Discord presence 2019-04-29 13:34:27 -04:00
Anuken
29e90969eb Removed UIUtils 2019-04-29 11:50:49 -04:00
Anuken
fb724514f3 Fixed portrait custom game dialog 2019-04-29 11:27:15 -04:00
Anuken
1f11da75d2 Push test 2019-04-29 08:34:40 -04:00
Anuken
fcc433fe17 Zone balancing 2019-04-28 22:03:26 -04:00
Anuken
617bdf9910 New zone maps / Dark map border / Tweaks 2019-04-28 20:25:41 -04:00
Anuken
3b2aa92eb7 Visual server respawning fix 2019-04-28 10:51:14 -04:00
Anuken
4c17b56e28 Less messy respawning / Standard starter mech / Bugfixes 2019-04-28 10:34:53 -04:00
Anuken
ad13c83f93 Fixed gen copying for earlier versions of IntelliJ 2019-04-27 09:58:14 -04:00
Anuken
768d67a8ae Updated desolate rift / Spawning fixes 2019-04-26 23:23:45 -04:00
Anuken
d827cda395 Fixed dispose() causing crash 2019-04-26 11:32:38 -04:00
Anuken
106e6c98a3 Disabled liquid ore placement 2019-04-26 11:31:55 -04:00
Anuken
e7ad797d4e Fixed unit tests 2019-04-26 11:23:41 -04:00
Anuken
6e1fb71194 Bugfixes 2019-04-25 21:53:17 -04:00
Anuken
9f5dc7f091 Fixed obscure zone test bug 2019-04-25 12:25:45 -04:00
Anuken
57b273639c Entity cleanup 2019-04-25 12:01:14 -04:00
Anuken
278d690a6b Even better avoidance 2019-04-24 23:16:18 -04:00
Anuken
c91c0f7b47 "Fixed" unit collisions 2019-04-24 22:47:49 -04:00
Anuken
6a406f4d45 Removed SolidTrait#movable 2019-04-24 22:18:00 -04:00
Anuken
eecaa850e0 Fixed minimap zoom not resetting after map load 2019-04-24 09:12:33 -04:00
Anuken
f332332eaa Removed unused variables 2019-04-23 21:59:44 -04:00
Anuken
79b0e76be0 Bugfixes / Unit test fix 2019-04-23 11:59:07 -04:00
Anuken
30650efd98 Added unfinished zone map 2019-04-22 23:56:46 -04:00
Anuken
b7759c8151 Better shared crash handling 2019-04-22 12:00:47 -04:00
Anuken
0382c35ac0 Settings menu layout improved / Rule dialog improvements 2019-04-21 22:39:56 -04:00
Anuken
819262c93f Removed GameMode requirements 2019-04-21 16:34:02 -04:00
Anuken
db60f4bb1c Updated to Gradle 5.4 2019-04-20 23:09:28 -04:00
Anuken
7785ca55c2 New unstable mass driver code 2019-04-20 21:10:52 -04:00
Anuken
75dcceff43 Zone requirement changes / Bugfixes 2019-04-20 19:57:20 -04:00
Franciszek Zaranowicz
af91979d4c New custom games and custom rules screen (#464)
* New waves and limited respawning option.

Added ability to manipulate number of respawns per wave. Added option to hold counting for next wave until all enemies are destroyed

* Critical bug fixed

Fixed frozen wave timer when rules.waitForWaveToEnd was enabled

* Requested changes

* Missed Import

* New custom game and custom rules screen

RulePreset is now a Gamemode (because each of them has a different goal).
New button under Gamemode selection which opens a dialog to modify rules of gamemode.
Now without any mutually exclusive options

* Requested changes

* Applied some text sugestions

* Wrong waveInProgress message displaying fixed

* Unwanted text

* Text changes

* I broke git

* Fixed chrash

* More fixes

New rule : manyCores; needed for sanbox mode

* Visual fix

* Requested changes #1 : small oversights

* Moved respawning logic to Player

and another imports cleanup

* manyCores in now attackMode

* UI changes

* Given back waves to sandbox and integer input in custom rules

* Renamed functions in CustomRulesScreen

* SPACES... Actually one space...
2019-04-20 14:19:17 -04:00
Anuken
52cd4a77dd MechPad deselect / Flyer patrol tweak 2019-04-20 14:14:34 -04:00
Anuken
8a1da3c0ed Added mobile camera clamping / Mech pad tap power validation 2019-04-19 23:32:46 -04:00
Anuken
9d67c36c32 Cleanup, bugfixes 2019-04-19 23:07:21 -04:00
Anuken
f283709e62 Removed NumberUtils 2019-04-19 11:39:47 -04:00
Anuken
5035559b08 Net cleanup 2019-04-17 23:45:42 -04:00
Anuken
01e1438382 Switched to ArcNet networking extension 2019-04-17 21:59:26 -04:00
Anuken
4eee472043 Blend fix 2019-04-16 20:31:40 -04:00
Anuken
5f89a1b9ca Sprite updates 2019-04-16 20:30:47 -04:00
Anuken
b9db5ad662 Added block cracks 2019-04-16 12:15:06 -04:00
Anuken
5b8084e1fa Solid bush block 2019-04-16 00:49:14 -04:00
Anuken
ab67b67e4c Updated environmental sprites 2019-04-15 22:52:44 -04:00
Anuken
f825931f92 Consistent output timer 2019-04-15 18:53:31 -04:00
Anuken
6113edf2ce Made fortress mechs keep walking when attacking 2019-04-15 18:40:10 -04:00
Anuken
8413443c26 Tech tree usability improvements / Bugfixes 2019-04-15 18:32:32 -04:00
Anuken
f67fb31bc5 Updated craters map 2019-04-14 21:44:01 -04:00
Anuken
d321ec5ed1 Fixed impact reactor not requiring blast compound 2019-04-14 10:37:15 -04:00
Anuken
084ae184f9 Fixed core inventory persistence bug 2019-04-14 10:18:18 -04:00
Anuken
d1ec652f7b More blasting 2019-04-13 19:55:06 -04:00
Anuken
7a2a6586be Fixed nuclear reactor not exploding properly 2019-04-13 17:45:53 -04:00
Anuken
392dcf3092 Made frozen forest less constricted / Tree block fix / Server crash fix 2019-04-13 17:32:49 -04:00
Anuken
8a983c784d Added missing jcenter repository 2019-04-13 14:57:26 -04:00
Anuken
a443263439 Updated Discord RPC 2019-04-13 14:41:56 -04:00
Anuken
3e766b9f54 Merge branch 'remove-link-byte' of https://github.com/Anuken/Mindustry 2019-04-13 11:04:43 -04:00
Anuken
89b9501f35 Fixed tree color 2019-04-13 11:04:36 -04:00
Anuken
816ae84005 Overlay testing 2019-04-12 23:03:34 -04:00
Anuken
c0e425cf46 Fixed drones being useless 2019-04-12 16:05:30 -04:00
Anuken
9ebb4c7d12 Removed link byte, replaced with rotation 2019-04-12 15:30:34 -04:00
Anuken
46c3b35028 Generic overlay tiles 2019-04-12 15:10:10 -04:00
Anuken
ef2b8be726 Cleaned up some sprites 2019-04-11 22:52:29 -04:00
Anuken
df51078858 New generation 2019-04-11 16:41:46 -04:00
Anuken
5783b61631 Bugfixes 2019-04-10 17:47:22 -04:00
Anuken
98a53381fb Testing more procedural generation 2019-04-09 23:40:29 -04:00
Anuken
daccfa5fe3 Procedural zone generation 2019-04-09 22:52:38 -04:00
Anuken
d82c24616f Fixed tests 2019-04-09 13:45:38 -04:00
Anuken
905ca3dcfc Balance 2019-04-09 13:19:55 -04:00
Anuken
b4fb687c4f Coal centrifuge / In-game chat / Player health rule / Bugfixes 2019-04-09 12:44:07 -04:00
Anuken
39fb2ae5ab Net fixes 2019-04-08 18:33:22 -04:00
Anuken
b40beb0d1d Source reformat 2019-04-08 09:03:18 -04:00
Anuken
4a96b9bb00 Force projector allocation fix 2019-04-08 08:38:36 -04:00
Anuken
f83a178982 Removed useless net logging 2019-04-08 08:37:13 -04:00
Anuken
986b4276e1 Less snapshots per second 2019-04-07 18:19:38 -04:00
Anuken
6f6f418ec9 Fixed save/multiplayer sync bugs 2019-04-07 17:36:28 -04:00
Anuken
1463571cd7 Input fix 2019-04-07 16:58:22 -04:00
Anuken
7dfb0a81e3 Test fixes 2019-04-07 14:53:53 -04:00
Anuken
9699d9467a New tests / Bugfixes 2019-04-07 14:09:34 -04:00
Anuken
08a2872527 Bugfixes 2019-04-07 11:25:08 -04:00
Anuken
7c81a807ea Generator fixes 2019-04-06 10:04:00 -04:00
Anuken
3bf7031e6a Fixed cryofluid mixer 2019-04-05 20:48:13 -04:00
Anuken
503fc980f4 Bugfixes 2019-04-05 14:10:01 -04:00
Anuken
efed11eb97 stuff 2019-04-05 09:26:31 -04:00
Anuken
330820062f Fixed multiblock exploit 2019-04-04 23:53:51 -04:00
Anuken
45d157fe3f Minimap fixes 2019-04-04 23:34:09 -04:00
Anuken
812dea385c more bugfixes 2019-04-04 22:05:12 -04:00
키에르
c582bdea46 Update bundle_ko.properties (#439)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* match orignal bundle

* Update bundle_ko.properties

* Update bundle_ko.properties
2019-04-04 19:59:09 -06:00
laohuaji233
e6c6a9381b Update bundle_zh_CN.properties (#440)
* Update bundle_zh_CN.properties

More translations and fixed some wrong words

* Update bundle_zh_CN.properties
2019-04-04 19:58:05 -06:00
VXF
4b4c0755c6 Update bundle_zh_CN.properties (#441) 2019-04-04 19:53:34 -06:00
Prosta4okua
aeb0539c91 Russian bundle (#443)
* Go build communism

* Update bundle_ru.properties

Last commit: minimap

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2019-04-04 19:53:02 -06:00
Prosta4okua
9feafa45f5 Ukrainian bundle (#444)
* No. Routernism is better.

Last commit: bugfixes

* Update bundle_uk_UA.properties

Last commit: minimap

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2019-04-04 19:52:09 -06:00
Math2128
927df391f3 Update bundle_fr.properties (#447)
* Update bundle_fr.properties

Haven't done much. If I have more time, I will work on it. If anyone else wants to contribute, make sure not to do the same as me ! :p

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

Add a bit more. If anyone knows where to find all the filters in the game, please tell me. It'll help me get the word in context

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties
2019-04-04 19:50:59 -06:00
Anuken
cbef6adeb1 Crafter bugfixes 2019-04-04 21:49:45 -04:00
Anuken
2dee221861 Crash fix 2019-04-04 20:39:04 -04:00
Anuken
0b175cb25d Fixed release script using wrong folder 2019-04-04 19:36:15 -04:00
Anuken
0820338b55 Moved FPS counter once more / Pulverizer sprite fix 2019-04-04 19:31:17 -04:00
Anuken
a2b46eee6f Improved pixel zoom / Possible player duplicate glitch 2019-04-04 18:58:48 -04:00
Anuken
09a435320a Impact reactor display bugfix 2019-04-04 15:14:45 -04:00
Anuken
bf56200c06 Power amount message for buffered blocks 2019-04-04 15:06:27 -04:00
Anuken
2d18df2011 Multiplayer bugfixes / Balancing 2019-04-04 14:46:41 -04:00
Anuken
bab87c0da8 Default spawn limit bumped to 4 2019-04-04 00:05:59 -04:00
Anuken
148f272500 New rule modifiers 2019-04-04 00:03:19 -04:00
Anuken
6de4af727b JSON read/write generation 2019-04-03 22:24:14 -04:00
Anuken
75946b9d14 Explosion propagation 2019-04-03 09:39:11 -04:00
Anuken
1c63ee6743 Clean pixel zoom 2019-04-02 23:30:40 -04:00
Anuken
efdaf0d986 Balancing, tweaks and bugfixes 2019-04-02 22:43:20 -04:00
Anuken
3f6aeac33d Cleanup of new graphical options 2019-04-02 17:18:55 -04:00
Anuken
d9692004cc Shield optimization 2019-04-02 17:08:22 -04:00
Anuken
67a12eecad Bugfixes 2019-04-02 15:52:44 -04:00
Anuken
37999e0870 Risky building changes 2019-04-02 14:26:23 -04:00
Anuken
66dc1e94f5 Slight entity optimizations / Turret sprite fixes 2019-04-02 13:58:44 -04:00
Anuken
ebcce194a0 Turret coolant use balancing 2019-04-02 11:26:02 -04:00
Anuken
95eab94c80 Fixed liquid blocks not accepting liquids 2019-04-02 10:51:52 -04:00
Anuken
41a6dbe06c Basic minimap 2019-04-01 21:16:22 -04:00
Anuken
fa22b0ec12 Removed dead donations code 2019-04-01 18:51:49 -04:00
Anuken
be60a367e8 Removed donations library and Android support libraries 2019-04-01 18:46:11 -04:00
Anuken
608de34205 Updated bundles 2019-04-01 13:32:49 -04:00
Anuken
0a8f2edb05 Block update unit tests 2019-04-01 11:57:43 -04:00
Anuken
41b08f38c5 Fixed tests 2019-04-01 11:34:10 -04:00
Anuken
a83c0b2e9a "fixes" 2019-03-31 22:27:11 -04:00
Anuken
8f853c8f18 Back button cleanup 2019-03-31 18:26:52 -04:00
Anuken
b4071f6dcb Merge 2019-03-31 18:24:25 -04:00
Anuken
6b70418861 Cleanup 2019-03-31 18:20:38 -04:00
Anuken
de0235ad94 Sweeping rework 2019-03-31 17:49:15 -04:00
Anuken
c278c632b3 Back button quitting 2019-03-31 13:16:43 -04:00
Anuken
6392330e70 Optimizations / Very broken changes 2019-03-31 13:11:12 -04:00
Anuken
160ae4e244 Fixed startup crashing 2019-03-31 10:37:52 -04:00
Anuken
a6c9bd3182 Class cleanup 2019-03-30 23:23:57 -04:00
Anuken
801eadd8a8 Bugfixes 2019-03-30 19:10:06 -04:00
Anuken
211dab1297 Compilation cleanup 2019-03-30 18:48:54 -04:00
Anuken
0c3b39ffdc Merge branches 'avoidance-optimization' and 'master' of https://github.com/Anuken/Mindustry 2019-03-30 13:52:46 -04:00
Anuken
c31f88a318 Fixes 2019-03-30 13:01:55 -04:00
Anuken
e9eb981782 More optimization / Flying avoidance 2019-03-30 12:54:29 -04:00
Anuken
83bde8a781 Improved avoidance 2019-03-30 12:33:01 -04:00
Anuken
52f352bf94 Fixed nondeterministic drill item sorting 2019-03-30 10:16:48 -04:00
Anuken
b419a96d69 Mech balance / Re-added map screenshot 2019-03-30 00:17:29 -04:00
Anuken
eb3d5b62f5 Tweaks 2019-03-29 22:48:04 -04:00
Anuken
1c5f578d88 Initial implementation 2019-03-29 18:48:03 -04:00
Anuken
db3aae1388 Merge remote-tracking branch 'origin/master' 2019-03-29 18:15:31 -04:00
Anuken
0b08eb72a6 Bugfixes 2019-03-29 18:15:22 -04:00
Skybbles // L5474
cbc81376be pulverizer pulverises scrap not stone (#442) 2019-03-29 13:55:45 -06:00
Anuken
27e9901d05 Removed unused shadow methods; minor tweaks 2019-03-29 09:07:46 -04:00
Anuken
532c36677c Map preview block shadows 2019-03-28 22:23:59 -04:00
Anuken
0c20c6ecb7 Removed greek bundle temporarily, as font does not support it 2019-03-28 20:48:34 -04:00
Anuken
fbb3240ebb Hid 0-damage stat to prevent confusion 2019-03-28 19:20:09 -04:00
Anuken
bffae90022 Crash fixes 2019-03-28 17:41:57 -04:00
Anuken
61f6368591 Bundle update 2019-03-28 17:31:22 -04:00
Valen. H
1027ca2a85 Greek (#394)
Made in 2018, might be a bit out of date but seems functional. (4-alpha-63)
**Not complete**
2019-03-28 15:29:11 -06:00
Prosta4okua
5acc42f739 @router & @xzimur Create a PR for the Russian language (#437)
Останній комміт — Code cleanup (97f5bf3cc4 (diff-daade3141498d8856d75ec34b88bbb19))
2019-03-28 15:26:14 -06:00
laohuaji233
1edeaeb94e Update bundle_zh_CN.properties (#436)
more translations
2019-03-28 15:26:08 -06:00
키에르
879acc6077 Update bundle_ko.properties (#435)
* Update bundle_ko.properties

* Oops

* Oops 2

* Update bundle_ko.properties

* Update bundle_ko.properties
2019-03-28 15:25:35 -06:00
Anuken
4e5d87104c Unit AI fixes / Other general fixes 2019-03-28 17:12:49 -04:00
Anuken
e6a24b8ba1 Balancing / Bugfixes / Decreased build duration slightly 2019-03-28 14:38:00 -04:00
Anuken
fd190c7770 UI layout fixes 2019-03-28 12:50:22 -04:00
Anuken
d56869aefa Unit shadows 2019-03-28 12:42:04 -04:00
Anuken
c8a15bb7e4 Shadow optimization: 30 -> 60 FPS on phone tested 2019-03-28 12:19:54 -04:00
Anuken
07c28c3f6d Minor fixes 2019-03-28 11:00:34 -04:00
Anuken
855957b099 Broke all crafting 2019-03-27 23:24:07 -04:00
Anuken
50959317e9 New launch pad / Tech tree tweaks 2019-03-27 22:13:40 -04:00
Anuken
20a681a71f Zone unlocking tweak 2019-03-27 19:21:15 -04:00
Anuken
4e2d558b36 Merge remote-tracking branch 'origin/master' 2019-03-27 09:31:12 -04:00
Anuken
0430b908f4 New requirements for zone unlock, currently broken 2019-03-27 09:31:07 -04:00
Anuken
a84e9f2aaa Updated RoboVM plugin 2019-03-26 20:35:29 -04:00
Anuken
7ce571e59c New tentative edge style / Zone tweaks 2019-03-26 20:10:01 -04:00
Anuken
545a64f7dc Merge remote-tracking branch 'origin/master' 2019-03-26 11:05:55 -04:00
Anuken
10c999a4a2 Bugfixes / Mender block / Extra stats / Balancing 2019-03-26 11:05:47 -04:00
Anuken
d0e026d597 Bugfixes 2019-03-25 13:12:55 -04:00
Anuken
0b1e2bf19b Compile fixes 2019-03-24 21:54:01 -04:00
Anuken
71c2c7ad05 More code cleanup 2019-03-24 21:10:59 -04:00
Anuken
97f5bf3cc4 Code cleanup 2019-03-24 19:58:51 -04:00
Anuken
bb9573b85a Build cost/speed rules 2019-03-24 18:33:07 -04:00
Anuken
e1f53dfc67 Added bundle entries 2019-03-24 17:58:59 -04:00
Anuken
87481e0a4d Ammo stats 2019-03-24 17:55:41 -04:00
Anuken
f7aa58e385 Many small tweaks / Custom rules / Server run files / Balance 2019-03-24 16:29:25 -04:00
Anuken
ea5c78f814 UI scaling fixes 2019-03-23 22:00:41 -04:00
Anuken
c93c016e9c more icons 2019-03-23 19:06:50 -04:00
Anuken
4bb6664c7e Merge remote-tracking branch 'origin/master' 2019-03-23 18:48:00 -04:00
Anuken
9578068a02 another menu attempt 2019-03-23 18:47:57 -04:00
Anuken
30e5f2b17d iOS building fix 2019-03-23 18:33:33 -04:00
Anuken
f959760c07 More iOS icon stuff 2019-03-23 15:05:22 -04:00
Anuken
e7db2350bc Merge remote-tracking branch 'origin/master' 2019-03-23 14:39:08 -04:00
Anuken
0585dabf7a iOS icons 2019-03-23 14:39:04 -04:00
William So
a3c6e3f1df Update 'bundle_zh_TW.properties' (#433)
* Match 'bundle_zh_TW.properties' with 'bundle.properties'

* Update 'bundle_zh_TW.properties'
2019-03-23 11:48:55 -06:00
Prosta4okua
9f57278644 Update bundle_uk_UA.properties (#430)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* deleted Ыы

* Update bundle_uk_UA.properties
2019-03-23 11:48:50 -06:00
ScriptHosT12
afc35cf623 Update bundle_pt_BR.properties (#432) 2019-03-23 11:48:37 -06:00
Prosta4okua
6d8523054b Update bundle_ru.properties (#429)
* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2019-03-23 11:48:31 -06:00
Anuken
fdecd55278 Updated build files 2019-03-23 13:40:13 -04:00
Anuken
7e7f95916b Moved launch button to top right 2019-03-23 11:49:48 -04:00
Anuken
ab52c65dcf Updated bundles 2019-03-23 11:08:46 -04:00
Anuken
ed4d0eb5d0 Shadows setting / Server map text limit / Fallback spritesheet 2019-03-23 11:02:59 -04:00
Anuken
4bc9143306 New icon / Windows deployment fixes / Map fixes / Menu fix 2019-03-22 22:30:26 -04:00
Anuken
a4f558c77a Code cleanup / Tainted water 2019-03-22 19:16:15 -04:00
Anuken
e4f226a9c5 more menu table fighting 2019-03-22 13:58:51 -04:00
Anuken
c7d34049fa Crash fix / Input tweak 2019-03-22 00:16:09 -04:00
Anuken
ee06e620c6 Zone wave bugfix / New tests / More "encouragement" 2019-03-21 19:19:12 -04:00
Anuken
b48110db3b Fixed #431 [item spacing not taken into account] 2019-03-21 17:13:46 -04:00
Anuken
8413046dd8 Crash/visual fixes 2019-03-21 15:37:36 -04:00
Anuken
83a5a82e18 Fixed server map find bug 2019-03-21 11:22:10 -04:00
Anuken
771c5fbe3d Better packr minimization 2019-03-21 11:15:03 -04:00
Anuken
74f16d0137 Reduced drone factory cost 2019-03-21 10:43:04 -04:00
Anuken
5d5d354f7d Balancing 2019-03-21 10:36:33 -04:00
Anuken
8f5f27755d Bugfixes / Allow placing blocks in shallow liquids 2019-03-21 10:16:37 -04:00
Anuken
4cb92cdb06 Fixed some deployment issues 2019-03-21 00:58:06 -04:00
Anuken
9e067ebdd6 Merge remote-tracking branch 'origin/master' 2019-03-21 00:19:10 -04:00
Anuken
fd5fcc9928 Wave editor bugfixes 2019-03-21 00:19:06 -04:00
Prosta4okua
c0b2abb5fd Update bundle_uk_UA.properties (#423)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2019-03-20 21:04:20 -06:00
Anuken
2c8620a75c Added missing sprites 2019-03-20 22:42:33 -04:00
Anuken
62f6ed0878 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/assets/bundles/bundle_ru.properties
2019-03-20 22:41:24 -04:00
Anuken
886b62bbad Too many things to list in a single line commit log 2019-03-20 22:40:47 -04:00
Prosta4okua
4bd58589fc Update bundle_ru.properties (#422)
* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2019-03-20 17:37:46 -06:00
키에르
0ce4144767 Update bundle_ko.properties (#425)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

91741ec29c

* Update bundle_ko.properties

783f453da3 (diff-daade3141498d8856d75ec34b88bbb19)
2019-03-20 17:16:21 -06:00
bei2
cde945f40e Update Japanese translations (#428)
* Add new japanese translation

It translated on commit 66810c8.
so it don't apply changes from commit 17e0489.

* Update Japanese translation

Applies commit 7a51693. and small changes.

* Upadte Japanese translations

* Update Japanese

* Update Japanese

* Update Japanese translations

Improve and update for new changes

* Update Japanese

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translation

* Update Japanese translations

* Update Japanese translations

* Oops!

* Update Japanese translations

* Update Japanese

* Update Japanese

* Update Japanese translations
2019-03-20 17:14:03 -06:00
Anuken
e2126a2693 Mandatory line placement tutorial 2019-03-20 19:12:14 -04:00
Anuken
c9f6d92bef committing from a phone is hard 2019-03-20 09:58:54 -04:00
Anuken
fbf4c411c1 Map editor fixes / Zone environment changes 2019-03-19 23:51:52 -04:00
Anuken
ce5218db58 Wave editor clipboard save+load / Bugfixes / Balancing 2019-03-19 19:25:48 -04:00
Anuken
e2ea7f9b87 Bundle update 2019-03-19 15:27:19 -04:00
Anuken
94d9f04814 Toggleable diagonals 2019-03-19 15:26:30 -04:00
Anuken
c86dbac04a no snek 2019-03-19 14:01:00 -04:00
Anuken
f36eed32b9 Bugfixes / Balancing 2019-03-19 12:47:09 -04:00
Anuken
cd752209ad Snake cleanup 2019-03-19 11:46:00 -04:00
Anuken
fe37d619b9 Mobile snake 2019-03-19 10:30:13 -04:00
Anuken
043f4688ef snakes 2019-03-18 23:09:03 -04:00
Anuken
949f171579 Fixed ores not spawning in certain maps 2019-03-18 09:29:27 -04:00
Anuken
87d586a30e More boulders 2019-03-17 18:35:33 -04:00
Anuken
783f453da3 Generate tool bugfixes / Map edits / New blocks 2019-03-17 18:30:33 -04:00
Anuken
6dcf889ffe Map tweaks 2019-03-17 14:04:55 -04:00
Anuken
8d44879cc6 Power/wave dialog fixes 2019-03-17 12:03:48 -04:00
Anuken
e7b813962d Bugfixes 2019-03-16 22:59:50 -04:00
Anuken
22fadab3b3 Fixed units patrolling too quickly / Editor bugfixes 2019-03-16 13:25:50 -04:00
Anuken
91741ec29c Enemy indicators 2019-03-16 12:44:45 -04:00
Anuken
8269d842ce Removed redundant zone waves / Fixed wave dialog float issue 2019-03-16 10:13:49 -04:00
Anuken
d038bdb6ce Better filter layout 2019-03-15 20:32:08 -04:00
Anuken
6cef301b94 Filter localization / Ore filter / Pick tool ore compatibility 2019-03-15 20:19:09 -04:00
Anuken
e7ffbd817c Improved generation tool 2019-03-15 15:06:55 -04:00
Anuken
97067a6ee2 heck 2019-03-15 10:25:27 -04:00
Anuken
7d1a8f5404 Unfinished generation tool 2019-03-15 00:13:54 -04:00
Anuken
43bcf0cf3b Fixed unit icons / New scatter AA turret 2019-03-14 16:37:07 -04:00
Anuken
71751ee18d Fixed build error / Minor wave info dialog correction / Bugfix 2019-03-14 14:12:08 -04:00
Anuken
ed105b102d Custom wave patterns / Fixed checkbox sprite / Bugfixes 2019-03-14 14:01:22 -04:00
Anuken
f2662045ed New item bars / Map bugfixes / Stub wave editing 2019-03-13 21:26:53 -04:00
Anuken
ecb77b0283 Fortress builtin map / Attributes / Efficiency stat / Bugfixes 2019-03-12 23:39:39 -04:00
Anuken
4d4869842e Bugfixes 2019-03-12 16:37:32 -04:00
BLucky-gh
47300b42b0 Add instructions to change permissions (#415) 2019-03-12 13:09:06 -06:00
Andreas Heiskanen
609565af5f Tests: Add tests for addDarkness() in World.java (#412)
* Tests: Add tests for addDarkness() in World.java

Add Junit tests for the addDarkness found in core/src/io/anuke/mindustry/core/World.java

* Refactor: Remove code duplication

Remove code duplication in WorldTests. Invoke launchApplication directly from ApplicationTests.

* BugFix: Assign Tiles[][] tiles used for testing. 

Add assignment of Tiles[][] tiles separately when invoking ApplicationTests.launchApplication.
2019-03-12 13:08:35 -06:00
Anuken
0c75f920de Fixed editor placing blocks at 0 health 2019-03-12 14:57:10 -04:00
Anuken
e7b51f313b Merge branches 'master' and 'new-map-format' of https://github.com/Anuken/Mindustry 2019-03-12 13:50:48 -04:00
Anuken
e8204fc983 Fixed misc compile errors 2019-03-12 13:46:40 -04:00
Anuken
aa69af64fb Fixed some ores not loading in correctly / Conflict check 2019-03-12 13:42:20 -04:00
Anuken
41f734b04d Fixed legacy maps loading with no team 2019-03-12 13:35:25 -04:00
Anuken
8ad6f3abcc New ore system / Multiblock fixes 2019-03-12 13:28:00 -04:00
Anuken
e4875903f1 More fixes 2019-03-12 11:31:14 -04:00
Anuken
0a04de04f1 Format bugfixes 2019-03-12 11:07:02 -04:00
Anuken
20427fdffa Implemented correct map loading, legacy format support 2019-03-12 10:36:04 -04:00
Anuken
0fd0abc6c0 Fixed compile errors / New non-crappy undo system 2019-03-11 23:06:41 -04:00
Anuken
70f7fc29d4 Cleanup 2019-03-11 17:18:37 -04:00
Anuken
b0c1aff783 Heal bullet effect fix / Spawned ID sync / Crash fix 2019-03-11 14:54:15 -04:00
Anuken
4909c28ed9 Better low-FPS predict 2019-03-11 14:33:39 -04:00
Anuken
9e6745f691 Fixed polluted water 2019-03-11 13:34:15 -04:00
Anuken
6c3ccb259f Some errors fixed 2019-03-11 13:27:15 -04:00
Anuken
6c8d80777c Removed useless name mapping / Cleanup 2019-03-11 11:43:23 -04:00
Anuken
2db61f93ac Balance 2019-03-11 09:28:50 -04:00
Anuken
ad059cbc38 Unfinished RLE 2019-03-11 09:26:35 -04:00
Anuken
87e7e04c5e Balance 2019-03-11 08:29:18 -04:00
Anuken
c083d059c9 Progress 2019-03-11 08:25:03 -04:00
Anuken
ebd44d3b60 Merge 2019-03-10 22:51:04 -04:00
Anuken
51f5d04889 Work on map format upgrade 2019-03-10 22:47:09 -04:00
Anuken
0f4d574115 New unfinished environment blocks / Bugfixes / Tech tree tweak 2019-03-10 22:38:53 -04:00
Anuken
1feb4a5e6d Tar shader / Spritesheet split / Font cleanup 2019-03-10 11:11:16 -04:00
키에르
f861b75c7d Fix fonts (#424)
* Fix fonts

* Add more fonts & bundle update

* Increase font size
2019-03-10 08:03:54 -06:00
Anuken
3530ca8989 Fixed more tests 2019-03-10 00:21:21 -05:00
Anuken
6b074ed4b2 Fixed some tests failing 2019-03-10 00:10:33 -05:00
Anuken
671823b4fa Tentative travis build fix 2019-03-09 23:55:01 -05:00
Anuken
8ceebf1546 More UDP 2019-03-09 23:10:47 -05:00
Anuken
376495836a ok 2019-03-09 23:06:55 -05:00
Anuken
98212df076 Water shader 2019-03-09 22:53:16 -05:00
Anuken
1316c9235a Made inventory hide on second tap / Mobile rotation arrow 2019-03-09 19:43:33 -05:00
Anuken
a0905d5695 Faster, smaller server / Bundle check cleanup 2019-03-09 19:12:54 -05:00
Anuken
2a35e22dd2 Merge remote-tracking branch 'origin/master' 2019-03-09 16:47:12 -05:00
Anuken
f86a07daee Removed awt use / Sand recolor / Bugfixes / Link fix 2019-03-09 16:47:08 -05:00
키에르
997628622a bundle upgrade for beta version (#421)
* Update bundle_ko.properties

* Update bundle_ko.properties
2019-03-09 09:19:17 -07:00
Anuken
563e015c92 Fixed power bug 2019-03-09 09:51:12 -05:00
Anuken
64533de597 Bugfixes / Font changed / Zone tweaks 2019-03-08 19:07:23 -05:00
Anuken
3776b99c39 nothing 2019-03-06 17:36:47 -05:00
Anuken
a5d1350815 Removed map screenshot key / Basic zone guide 2019-03-05 16:07:48 -05:00
Anuken
82e44397ff Bundle update / Minor tweaks 2019-03-05 13:50:28 -05:00
Anuken
335c880af2 Bundle update / Unit factory active stats 2019-03-05 11:36:55 -05:00
Anuken
966efa0669 Bugfixes / Sprite tweak 2019-03-05 09:53:37 -05:00
Anuken
526a61381d Merge remote-tracking branch 'origin/master' 2019-03-04 17:06:11 -05:00
Anuken
d01f68f731 something may have been fixed 2019-03-04 17:06:07 -05:00
Anuken
1235b41172 Update bundle.properties 2019-03-04 13:19:41 -05:00
Anuken
21f3a053ed Impact map balance / Block balance / Editor block sorting 2019-03-03 19:54:20 -05:00
Anuken
9e960d461b Balancing 2019-03-03 19:27:31 -05:00
Anuken
02fad0a9cc Consumer fixes / Removed unit factory target tag / Rank tweak 2019-03-03 10:55:56 -05:00
Anuken
627b78043b Atlas updated 2019-03-02 23:09:50 -05:00
Anuken
89b439c3c8 Bugfixes 2019-03-02 23:06:14 -05:00
Anuken
4a4a9f267b Switched impact blocks to blue 2019-03-01 23:18:00 -05:00
Anuken
f605aabaa9 Updated packed sprites for last commit 2019-03-01 23:03:09 -05:00
Anuken
d82d0ae923 Waveskip / Stat fixes / 3x3 thermalpump / Removed liquid tiers 2019-03-01 23:01:12 -05:00
Anuken
1e111d29d9 More map balance / Fixed 'oh no' on 5x5+ block destruction 2019-03-01 17:18:08 -05:00
Anuken
110def97d9 Sprite fixes 2019-02-28 22:59:48 -05:00
Anuken
5bacdfa951 Turret stat fix 2019-02-28 22:46:55 -05:00
Anuken
914f1b38f8 Zone tweaks 2019-02-28 12:03:24 -05:00
Anuken
2aff73a958 Added drill output rate bar 2019-02-28 09:45:03 -05:00
Anuken
13c2eae1f4 Frozen forest rework / Reduced starter copper / Auto-deselect 2019-02-27 19:48:00 -05:00
Anuken
8f4258b119 Build shader swap 2019-02-26 16:02:06 -05:00
Anuken
4eba89603e Shader tests 2019-02-26 15:13:05 -05:00
Anuken
61f75d7331 Removed unused shader 2019-02-26 14:48:23 -05:00
Anuken
cd387c5c3a Merge remote-tracking branch 'origin/master' 2019-02-26 14:47:08 -05:00
Anuken
2fa32e5099 Nuclear reactor fixes / Additional info bars 2019-02-26 14:47:05 -05:00
Damlon
f12da57720 Update bundle_ko.properties (#417)
* Update bundle_ko.properties

Javelin : 자비린->재블린
https://www.korean.go.kr/front/onlineQna/onlineQnaView.do;front=2D3014620660AD4C0DA36360CA63518C?mn_id=61&qna_seq=144359&pageIndex=11

Dagger : 디거->대거
노코멘트.

Combustion Generator : 석탄 발전기->화력 발전기
석탄 이외에 여러 재료들을 불태워 발전하는 방식이기 때문

* Update bundle_ko.properties

대거->디거.. 는 되있넹?
Frozen Forest:겨울 정글->얼어붙은 숲
Forest는 숲의 의미가 강함

differential generator:미분 발전기->차동 발전기.
differential 이 발전기 출력 제한시키는 발전기 안정장치밖에 안나옴. 일단은 가장 적절한 차동 발전기로.

Graphite press:흑연 프레스->흑연 압축기
Multi press:멀티 프레스->다중 압축기
석탄 압축해서 흑연 만드는 공장임. Press(압축)

*Crags 는 울퉁불퉁한 돌들. 정도의 뜻이 있으나 깔쌈한 번역 안떠올라서 패스.

* Update bundle_ko.properties
2019-02-26 11:12:46 -07:00
Anuken
964d1a0d87 Shader cleanup 2019-02-26 13:11:49 -05:00
Anuken
0cb14461ba Improved antialiasing / Improved outlines 2019-02-26 10:42:20 -05:00
Anuken
d05f9c5540 Bundle pruning 2019-02-25 22:38:01 -05:00
Prosta4okua
690580c57d Update bundle_ru.properties (#363)
* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* From PL Beryllium

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

RIP

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2019-02-25 20:36:55 -07:00
Prosta4okua
5039763a52 Update bundle_uk_UA.properties (#392)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2019-02-25 20:33:12 -07:00
Anuken
2cc54ffa5b Merge remote-tracking branch 'origin/master' 2019-02-25 22:26:55 -05:00
Anuken
0a9b78f013 Bugfixes / Renamed biomatter / Cleaned up conveyor sprites 2019-02-25 22:26:51 -05:00
키에르
e42fa7ad20 Update bundle_ko.properties (#416)
Hotfix
2019-02-25 08:02:53 -07:00
Anuken
9c179e559b Cleaned up team assignment 2019-02-24 22:55:53 -05:00
Anuken
6dd10b74d5 Merge remote-tracking branch 'origin/master' 2019-02-24 21:44:38 -05:00
Anuken
a073b0ab18 bugfixes etc etc etc 2019-02-24 21:44:35 -05:00
Kenny
4f253999ac Added Translations and misc. (#410)
* Added Translations and misc.

Added many translations(maybe it is the newer things?) and did some misc. grammar change.

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties
2019-02-24 17:59:58 -07:00
키에르
9108a7bae6 Update bundle_ko.properties (#411)
* Update bundle_ko.properties

* Update bundle_ko.properties
2019-02-24 17:59:37 -07:00
AceEllysium
6ba88323fe Create bundle_nl.properties (#413)
* Create bundle_nl.properties

* Update bundle_nl.properties

* Update bundle_nl.properties

* Update bundle_nl.properties

* Update bundle_nl.properties

* Update bundle_nl.properties
2019-02-24 17:59:20 -07:00
Anuken
e112e3f949 Removed most units from tech tree / Bugfixes / Balancing 2019-02-24 10:39:59 -05:00
Anuken
1ed4e9f5bb Internal loadout system / Starting drills / Bugfixes 2019-02-23 22:31:38 -05:00
Anuken
b6c5f202e4 Bugfixes / Pathfinding 'improvements' 2019-02-23 20:16:32 -05:00
Anuken
976b39414f Fixed: missing spawns / incorrect ranks / jittery movement / tests 2019-02-23 15:08:07 -05:00
Anuken
d74887eaa1 More bugfixes 2019-02-22 23:16:50 -05:00
Anuken
7fb72bf0e2 Removed unnecessary uncertainty 2019-02-21 19:12:07 -05:00
Anuken
b0126206e1 Bridge sprite cleanup 2019-02-21 17:16:42 -05:00
Anuken
9c240850b8 Fixed pad shader/disconnect bugs 2019-02-21 14:08:42 -05:00
Anuken
5b7b50f555 Boss waves, health bars / Better lasers / Bugfixes 2019-02-21 13:11:28 -05:00
Anuken
f591403b7d Zone wave correctness checks 2019-02-20 17:54:23 -05:00
Anuken
4b028b3435 Re-added core database in game menus 2019-02-20 09:14:51 -05:00
Anuken
cbcf237d80 Bugfixes 2019-02-19 13:43:15 -05:00
Anuken
a815c564fb Wave balancing / Fixed wave not extinguishing fire 2019-02-19 09:28:27 -05:00
Anuken
cb12501d5b Untested loadout config / Better filter display / Bugfixes 2019-02-18 22:51:31 -05:00
Anuken
86aeabc911 Fixed item display being too close to top left of screen 2019-02-17 11:36:54 -05:00
Anuken
5e2a455045 a 2019-02-17 01:36:46 -05:00
Anuken
86dddd0253 Minor tweaks 2019-02-16 11:15:10 -05:00
Anuken
4677de80c1 Destructible grey blocks / Content cleanup / Wave fixes / Impact balance 2019-02-16 11:10:01 -05:00
Anuken
fbcbca6f24 crashfix 2019-02-15 18:59:19 -05:00
Anuken
7024273a02 Better team interaction 2019-02-15 12:32:01 -05:00
Anuken
070bb4d2d1 Removed battery balance from displayed balance 2019-02-15 09:15:00 -05:00
Anuken
f33e924cdf Fixed power balance display being influenced by delta 2019-02-14 19:17:08 -05:00
Anuken
18fcc6e596 Bugfixes / Requirement display 2019-02-14 15:20:08 -05:00
Anuken
59e909ae3a Better 'unknown' map names / Recipe fixes 2019-02-14 12:11:20 -05:00
Anuken
66766b43c7 Bugfixes 2019-02-14 10:00:17 -05:00
Anuken
8c6c4c2630 Power balance info 2019-02-13 22:37:12 -05:00
Anuken
ea2ed7d776 Fixed ranks being flipped 2019-02-13 19:32:37 -05:00
Anuken
a708c8b7ea Untested rank system / 'Fixed' junction speed / Balancing 2019-02-13 18:28:36 -05:00
Anuken
12ca4cda91 Recipe tweaks 2019-02-13 16:24:18 -05:00
Anuken
85f73fee02 Bundle fixes 2019-02-13 16:23:41 -05:00
Anuken
1b5b6d424b Keybind changes 2019-02-13 13:48:18 -05:00
Anuken
126a764918 Zone balancing 2019-02-13 13:35:41 -05:00
Anuken
f796a24956 Default patrol behavior for units 2019-02-13 13:14:12 -05:00
Anuken
e815cff291 Bugfixes 2019-02-13 12:40:00 -05:00
DinoWattz
0ad89ebc04 Update bundle_pt_BR.properties (#401) 2019-02-12 12:05:32 -05:00
CinExPL
a4b9579d25 Update bundle_pl.properties (#406)
improving some spelling errors
2019-02-12 12:05:13 -05:00
Anuken
e65b6670ec Incomplete production meta system 2019-02-12 10:49:13 -05:00
Anuken
1665e75068 Improved block bar config 2019-02-12 00:06:08 -05:00
Anuken
6d01d893f7 Fixed unit tests 2019-02-11 23:31:50 -05:00
Anuken
cb9616a381 Fixed waves not spawning in custom maps 2019-02-11 22:44:51 -05:00
Anuken
d218fb926a Bugfixes 2019-02-11 17:32:44 -05:00
Anuken
39276b4b03 Default wave tweaks / Zone reseach requirements changed 2019-02-11 13:50:56 -05:00
Anuken
51ba999ee1 Bugfixes 2019-02-11 09:02:28 -05:00
Anuken
52593252c5 Wave balancing / Smoother conveyor items 2019-02-10 20:23:20 -05:00
Anuken
718f56172e Enlarged laser/blast drills / Removed ground zero copper cost 2019-02-10 17:32:22 -05:00
Anuken
34b7961814 Improved placement visuals 2019-02-10 12:32:33 -05:00
Anuken
897b90f044 Possible save fix / Place arrow de-mushroomified / Fixed descriptions 2019-02-10 11:46:18 -05:00
Anuken
a9778e6e68 Bugfixes / Map tweaks 2019-02-10 10:20:26 -05:00
Anuken
ccaf888e8b Merge remote-tracking branch 'origin/master' 2019-02-09 23:20:24 -05:00
Anuken
29821003fe Tweaked sector dialog / Item icons fixed / Bugfixes 2019-02-09 23:20:20 -05:00
Sonnicon
3f7ba23dff Update bundle_pl.properties (#404) 2019-02-09 14:54:14 -05:00
Anuken
6fd243522d Merge pull request #403 from ZacBytes/patch-1
Update bundle_zh_CN.properties
2019-02-09 11:09:32 -05:00
Anuken
368bf2258f Merge pull request #402 from BLucky-gh/patch-1
Added some details to README.md
2019-02-09 11:09:12 -05:00
Anuken
533ddb874e Fixed various mobile bugs / Automatic map folder creation 2019-02-09 11:07:51 -05:00
Zachary
baaf126c15 Update bundle_zh_CN.properties 2019-02-09 21:27:33 +08:00
BLucky-gh
5b2bfe10bc Added some details to README.md 2019-02-09 12:38:30 +04:00
Anuken
17b24c3389 Bugfixes (again) 2019-02-08 21:29:32 -05:00
Anuken
55b3e8639f ? 2019-02-08 17:52:19 -05:00
Anuken
22dad88ff7 Fixed shore world borders / Core size tweaks 2019-02-08 17:25:17 -05:00
Anuken
ce3b0f2d8f Actually fixed tests 2019-02-08 17:11:31 -05:00
Anuken
a87e2a56d2 Bugfixes / Possibly fixed unit tests 2019-02-08 17:05:09 -05:00
Anuken
bb0ee26e4f Merge remote-tracking branch 'origin/master' 2019-02-08 16:29:31 -05:00
Anuken
adf5189541 TODO cleanup / Test fixes 2019-02-08 16:29:10 -05:00
Anuken
82077936bb Merge pull request #395 from etaoinshrdlcumwfgypbvkjxqz/zh-TW
Update 'bundle_zh_TW.properties'
2019-02-08 12:04:51 -05:00
Anuken
5094a6fc49 Merge branch 'master' into zh-TW 2019-02-08 12:04:43 -05:00
Anuken
274ef166ef Merge pull request #399 from Prosta4okua/patch-49
Update bundle.properties
2019-02-08 12:00:24 -05:00
Anuken
66c27fab13 Bugfixes 2019-02-08 08:44:20 -05:00
Anuken
56bcabedf7 Balancing / Bugfixes / Badly antialiased turret outlines 2019-02-07 23:06:43 -05:00
Anuken
79a9541394 Turret, power generator and bullet balancing sweep 2019-02-07 15:55:31 -05:00
Anuken
7e35de3c33 Balancing / Renamed palettes file 2019-02-07 15:33:56 -05:00
Anuken
7b90044544 Build/break queue shuffling 2019-02-07 11:21:03 -05:00
Anuken
5a7e5450dc Wall fix 2019-02-07 10:45:49 -05:00
Anuken
ec2ec59be0 Import fix 2019-02-07 10:41:48 -05:00
Anuken
beb25bd595 Fixed legacy color mapping 2019-02-07 10:40:29 -05:00
Anuken
c2919f7e7a Fixed turrets saving ammo / Duo buff / Ammo display / Map saves break 2019-02-07 10:11:16 -05:00
Anuken
cee9d86835 Bugfixes 2019-02-07 09:36:39 -05:00
Anuken
9dbedc6e5d Bugfixes 2019-02-06 17:37:39 -05:00
Anuken
53310ed80a Merge remote-tracking branch 'origin/master' 2019-02-06 17:14:54 -05:00
Anuken
9251c55be2 Crater fixes 2019-02-06 17:14:51 -05:00
Anuken
25658f2a0a Fixed build shader / Server now displays map directory 2019-02-06 13:59:10 -05:00
Anuken
4f9e64588f Hid irrelevant entries in placement menu 2019-02-06 13:20:15 -05:00
Prosta4okua
afeb4d033b Update bundle.properties 2019-02-06 17:30:08 +02:00
Anuken
2569b2139d Crash fix 2019-02-06 09:04:19 -05:00
Anuken
d88923bb71 Balancing 2019-02-06 08:58:53 -05:00
Anuken
d0c6d9a489 Launch confirm dialog 2019-02-06 08:52:30 -05:00
Anuken
1bdea1b8d8 Arc balancing / Bundle update / Changed turret colors 2019-02-05 22:36:20 -05:00
Anuken
6ea90ea828 Fixed lighting not rendering / Fixed engine colors 2019-02-05 22:11:02 -05:00
Anuken
6217ae78e3 Unit gun tweaks 2019-02-05 19:05:41 -05:00
Anuken
20529d3ebc Various mobile bugfixes 2019-02-05 13:49:43 -05:00
Anuken
c8fa116a24 Fixed magic turret items / Ground zero map tweaks 2019-02-05 11:50:55 -05:00
Anuken
2904bc69d9 Bugfixes 2019-02-05 00:34:05 -05:00
Anuken
38b3ad07b7 Balancing 2019-02-05 00:22:55 -05:00
Anuken
fe765e5a5b Fixed infinite copper bug 2019-02-04 22:04:00 -05:00
Anuken
6e7514491c Balancing 2019-02-04 21:24:12 -05:00
Anuken
eb5b50b3e9 Added pick keybind / Minor visual tweaks 2019-02-04 13:23:41 -05:00
Anuken
82b908f0ab Unit balancing 2019-02-04 09:09:47 -05:00
Anuken
336256fc71 Bundle/tech tree fixes 2019-02-03 23:08:48 -05:00
Anuken
49a7da6393 Finalized unit type definitions 2019-02-03 22:48:27 -05:00
Anuken
a8c645f00d Weapon refactor / New units with edgy names / Spritesheet cleanup 2019-02-03 21:11:26 -05:00
Anuken
62d8cb0b25 Impact reactor 2019-02-03 11:22:53 -05:00
Anuken
f5028a4937 Multipress sprite / Shields re-added 2019-02-02 22:33:12 -05:00
Anuken
203612853b Better block hover info / Liquids source crash fix / Generator fix 2019-02-02 18:03:52 -05:00
Anuken
8e8e95cd2d Merged alpha and dart mech pads / Differential gen / Fixed optional display 2019-02-02 17:39:46 -05:00
Anuken
696e6cb84b Pad respawning 2019-02-02 16:10:29 -05:00
Anuken
67940476af Fixed refactoring errors 2019-02-02 15:59:07 -05:00
Anuken
0dd9d2b460 Moved entity package from Arc / Entity code cleanup 2019-02-02 15:53:35 -05:00
Anuken
6b2f2d0664 Preparing to refactor entity module 2019-02-02 14:42:47 -05:00
Anuken
636bfdb530 Unit factory limit / Removed overdrive block effects / BlockFlag cleanup 2019-02-02 14:33:13 -05:00
Anuken
c0d6618808 Final map 2019-02-02 12:35:36 -05:00
Anuken
e21a3347ac Misc bugfixes / New zone 2019-02-02 10:14:16 -05:00
Anuken
59a68ee981 Spritesheet cleanup / Heat blocks / Editor bugfix 2019-02-01 21:47:44 -05:00
Anuken
7a072746d9 Fixed map colors / Cultivator tweak / Color gen 2019-02-01 19:01:08 -05:00
Anuken
a6799dd29b Kiln texture fix / New map resize dialog 2019-02-01 18:08:09 -05:00
Anuken
163ecb160a Added new unit type / Made reactor use cryo only / Balancing 2019-02-01 15:55:11 -05:00
Anuken
f00d1f9505 Added missing tech tree blocks / Zone improvements 2019-02-01 13:14:42 -05:00
Anuken
87b489a541 Tile cleanup 2019-02-01 09:22:08 -05:00
Anuken
f670ade2ee Work on new maps continues 2019-02-01 00:04:21 -05:00
Anuken
b5508c1152 New power node type / Bugfixes / Random item caches 2019-01-31 15:57:21 -05:00
Anuken
564c258c86 Core tiers 2019-01-31 15:33:07 -05:00
Anuken
745ff1a270 Map implemented / Editor pick key / Crash fix 2019-01-31 12:45:11 -05:00
Anuken
e727ee6d4a Even more blocks / Map generator config / Editor fixes 2019-01-31 10:58:26 -05:00
Anuken
e6a39a8255 Shader crash fix / More blocks / Kiln / Removed (unused) flux 2019-01-30 22:51:24 -05:00
Anuken
43bff5c34d Removed camera clamp / Self-destruct timer / More blend tweaks 2019-01-30 19:48:41 -05:00
Anuken
c046a1b474 New blocks / Floor edge fixes 2019-01-30 18:39:10 -05:00
Anuken
209e3f03c1 Implemented shore map / New blocks / Bugfixes 2019-01-30 13:34:38 -05:00
Anuken
dbf05a1419 New basic water sprite 2019-01-29 22:26:02 -05:00
Anuken
5af35b6771 Zone balancing 2019-01-29 14:33:41 -05:00
Anuken
00abba11ae Removed carrying 2019-01-29 14:13:29 -05:00
Anuken
d268d94f76 Edge cleanup / Spawn warn / Bugfixes 2019-01-29 11:51:41 -05:00
Anuken
76af3e3077 Customizable edge stencil / Reduced redundant sprites 2019-01-28 23:30:11 -05:00
Anuken
54bade668e New tile edge algorithms / Struct value type generation 2019-01-28 22:11:23 -05:00
Anuken
5a3ec8f407 Fixed server crash / Struct annotation begins 2019-01-28 15:43:33 -05:00
Anuken
c043664ad6 2 2019-01-28 09:04:59 -05:00
Anuken
7e9ca6fbb6 Compile fix 2019-01-28 09:04:28 -05:00
Anuken
e9a82652a0 New blocks 2019-01-27 23:26:07 -05:00
Anuken
db2e6b6973 Better launch / Better spawns / Tweaks 2019-01-27 18:09:59 -05:00
Anuken
da9278ad8d Added recorder module 2019-01-27 12:31:14 -05:00
Anuken
5a9307e9a7 Smooth block shadows / Large procedural blocks 2019-01-27 12:09:01 -05:00
Anuken
f31fd622dd Fixed #396 2019-01-27 09:19:23 -05:00
Anuken
6723157ca5 Power tweaks 2019-01-26 17:33:20 -05:00
Anuken
956448a1a5 Fixed tests again, locally 2019-01-26 13:20:07 -05:00
Anuken
4be675f977 Thermal generator now based on floor / Power restructuring 2019-01-26 12:48:15 -05:00
Anuken
7924051c0d Graphite press balancing 2019-01-26 11:32:39 -05:00
Anuken
83b5f6ef2d Custom game loading 2019-01-26 10:52:16 -05:00
Anuken
0f26d62a0a Bundle update / Custom game button / Join button 2019-01-26 10:37:04 -05:00
Anuken
a9f11256cd Unfinished graphite press block 2019-01-25 23:15:30 -05:00
Anuken
ead0547d59 Tree-based zone layout 2019-01-25 21:48:03 -05:00
Anuken
89e29bce62 Incomplete zone layout 2019-01-25 14:09:08 -05:00
Anuken
058db5d5d0 Sprite cleanup 2019-01-24 20:00:35 -05:00
Anuken
76aa409f89 Changed unnecessary server output to 'debug' log level 2019-01-24 16:36:48 -05:00
Anuken
923d0497e6 Added sprites 2019-01-24 13:11:41 -05:00
Anuken
dd4f4b83fc Editor variant display / Visual changes 2019-01-24 13:11:22 -05:00
William So
c2bed82db5 Update 'bundle_zh_TW.properties' 2019-01-24 20:07:59 +08:00
Anuken
9a444da343 Unfinished block / Bugfixes 2019-01-23 23:43:31 -05:00
Anuken
9dd6a77c76 Various blocks added / Crater map updated / Fixed status effect bugs 2019-01-23 20:08:28 -05:00
Anuken
895725df64 Removed ores near enemy spawns 2019-01-23 16:55:35 -05:00
Anuken
6f07576748 Merge branches 'master' and 'new-map-format' of https://github.com/Anuken/Mindustry into new-map-format
# Conflicts:
#	core/src/io/anuke/mindustry/editor/MapEditorDialog.java
#	core/src/io/anuke/mindustry/io/MapIO.java
#	core/src/io/anuke/mindustry/maps/MapTileData.java
2019-01-23 13:52:36 -05:00
Anuken
550a11962e Fixed compile errors in MapIO 2019-01-23 09:23:34 -05:00
Anuken
c3883cdad0 Slight improvements to editor rendering / Renamed blockpart -> part 2019-01-23 08:51:21 -05:00
Anuken
e9e2cd614d Basic crater map / Spray tool / Crater floor / canProduce() 2019-01-22 23:02:04 -05:00
Anuken
55e1759b47 Block optimizations 2019-01-22 19:35:00 -05:00
Anuken
33f5215e6d Finished ground zero map layout 2019-01-22 17:58:43 -05:00
Anuken
5459a646b3 In-game block team display / Editor bugfix 2019-01-22 15:46:22 -05:00
Anuken
6229f99a2e Fixed tests / Various build tools updated 2019-01-22 15:01:30 -05:00
Anuken
0e5b95e3aa Added health bars to block info / Fixed block info refresh bug 2019-01-22 13:46:10 -05:00
Anuken
72d7c1ba54 Fixed 'unlocks' dialog entries 2019-01-21 22:29:50 -05:00
Anuken
ee9a2ee03d Deploy dialog requirements done 2019-01-21 19:37:02 -05:00
Anuken
6bfbcc4aa9 Added zone requirement display 2019-01-21 16:04:50 -05:00
Anuken
a9d7ed50b7 Re-added all recipes to blocks 2019-01-20 21:11:58 -05:00
Anuken
bc77ebc10c Automatic tech node cost generation 2019-01-20 15:44:54 -05:00
Anuken
cbdce79d7d Misc. cleanup 2019-01-20 15:21:46 -05:00
Anuken
46dfa064d0 Removed recipe definitions 2019-01-20 13:50:56 -05:00
Anuken
0478af2564 Recipe class removed completely 2019-01-20 13:49:53 -05:00
Anuken
750388a425 Defined first 12 zones 2019-01-20 11:49:17 -05:00
Anuken
ea9155b903 Further UI cleanup 2019-01-19 23:13:46 -05:00
Anuken
d34f228d2f Functional tech tree 2019-01-19 22:16:28 -05:00
Anuken
093043750b UI cleanup 2019-01-19 17:45:33 -05:00
Anuken
4fb0c246db Tech tree filled out 2019-01-19 14:58:29 -05:00
Anuken
5e951f27c9 Block icon rework / Dynamic icon generation / Tech tree tweaks 2019-01-19 12:42:02 -05:00
Anuken
49253964d8 Tech tree rendering + layout 2019-01-19 00:26:39 -05:00
Anuken
4ff1d0c2e1 Render fix 2019-01-18 15:41:49 -05:00
Anuken
2385011f96 Better build request display / Fixed incorrect rotation axes 2019-01-18 11:30:15 -05:00
Anuken
7527f9326c Fixed units not rotating to target 2019-01-18 09:23:39 -05:00
Anuken
9c7b80f066 Scrap ore / Player shadows 2019-01-18 09:19:42 -05:00
Anuken
48facc0978 Launch button 2019-01-17 23:17:17 -05:00
Anuken
22a6c4e8af Glass 2019-01-17 19:28:25 -05:00
Anuken
bd6cfa6461 Removed UnitCommand / Disabled mechs flying over env. blocks 2019-01-17 19:00:18 -05:00
Anuken
c63dca1c0d Map distortion / Multi-spawns 2019-01-17 16:28:42 -05:00
Anuken
c6af151bf3 Sprite cleanup / Stats / More balancing / New events 2019-01-17 15:30:50 -05:00
Anuken
ccc20a9716 Balancing 2019-01-17 13:03:06 -05:00
Anuken
47605583d1 Saving fix 2019-01-16 23:48:21 -05:00
Anuken
58e83c11f0 Saves / Paused dialog cleanup / Zone rule save 2019-01-16 23:25:43 -05:00
Anuken
836a4eb892 Antialiasing 2019-01-16 22:45:51 -05:00
Anuken
6d50a747e3 Basic map shading 2019-01-16 20:37:43 -05:00
Anuken
4344af1f02 Added unlock messages for all content 2019-01-16 19:52:58 -05:00
Anuken
6510d83524 Starting items / No editor unlocks / Fixed Block#synthetic() 2019-01-16 19:36:30 -05:00
Anuken
6d01193e1e Tweaks 2019-01-15 23:04:27 -05:00
Anuken
8c3d6d05ab broken stuff 2019-01-15 22:16:02 -05:00
Anuken
733a064c79 NetworkIO cleanup 2019-01-15 21:33:08 -05:00
Anuken
8715f6a301 Removed zone init() 2019-01-15 21:26:45 -05:00
Anuken
b51725633e Merge remote-tracking branch 'origin/master' 2019-01-15 21:21:32 -05:00
Anuken
5ec11c61bd Added map-specific generator 2019-01-15 21:21:28 -05:00
Anuken
ab038a4d46 Merge pull request #390 from VizardAlpha/patch-19
Update bundle_fr_BE.properties
2019-01-15 20:29:39 -05:00
Anuken
a976a7affb Merge branch 'master' into patch-19 2019-01-15 20:29:34 -05:00
Anuken
2f76684113 Cheaper arc 2019-01-14 18:38:32 -05:00
Anuken
1ad7f12e2d Updated README 2019-01-13 20:10:43 -05:00
Anuken
017b83d375 push time 2019-01-13 14:20:25 -05:00
Anuken
650b443fd0 Starting items / Zone balancing 2019-01-12 18:51:21 -05:00
Anuken
8aa1509f47 Gamemodes removed 2019-01-12 16:55:24 -05:00
VizardAlpha
b21bf2d544 Updates bundle_fr_BE.properties 2019-01-12 14:56:51 +01:00
Anuken
777bd60f88 Added basic ore generator 2019-01-11 20:29:50 -05:00
Anuken
7889db43a8 Zone generator requirement 2019-01-11 09:46:49 -05:00
Anuken
ae3aa20508 elevation is gone but this time I'm not doing the crab rave meme 2019-01-10 21:45:18 -05:00
Anuken
84e754dd10 Added zone class / Dialog method inline 2019-01-09 18:50:10 -05:00
Anuken
b9618d66f2 Removed 'text.*' prefix 2019-01-09 16:58:06 -05:00
Anuken
daa7b20e4a World generation launch pad preset 2019-01-09 16:37:14 -05:00
Anuken
48a7254aa3 Code generation fix 2019-01-09 11:52:45 -05:00
Anuken
2bc63b37e4 Bugfixes 2019-01-09 11:49:28 -05:00
Anuken
33afab7294 Launchpad block 2019-01-09 11:44:33 -05:00
VizardAlpha
8010a82776 Update bundle_fr_BE.properties 2019-01-09 16:49:25 +01:00
Anuken
048b7bd32f Global inventory / 'Deploying' / Removed command center 2019-01-09 09:07:48 -05:00
Anuken
28fa0b070d Merge branch 'unsector'
# Conflicts:
#	core/src/io/anuke/mindustry/maps/SectorPresets.java
#	core/src/io/anuke/mindustry/maps/Sectors.java
#	core/src/io/anuke/mindustry/maps/TutorialSector.java
#	core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java
#	core/src/io/anuke/mindustry/maps/missions/MissionWithStartingCore.java
#	core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java
2019-01-08 22:28:13 -05:00
Anuken
dc0be93b25 Status effect cleanup 2019-01-08 20:32:22 -05:00
Anuken
5e49d2d8d6 Cleanup 2019-01-08 18:02:25 -05:00
Anuken
1d8efe5f9d Packer reorganization 2019-01-08 17:41:51 -05:00
Anuken
8b791b68d3 Removed exe scaling 2019-01-08 17:24:01 -05:00
Anuken
521174f911 Removed autogenerated liquid sprites 2019-01-08 09:56:42 -05:00
Anuken
a6f7bd9099 Cleanup 2019-01-07 21:22:06 -05:00
Anuken
fed964e0f7 a rather large merge 2019-01-07 21:10:57 -05:00
Anuken
77b4f3e930 Merge branch 'crafting-rework' 2019-01-07 18:49:28 -05:00
Anuken
351b8c2469 Fixed content class errors 2019-01-07 18:48:55 -05:00
Anuken
ee9f65d4a3 Block class merge 2019-01-07 18:39:06 -05:00
Anuken
a1a69f62e1 🦀 FX classes are gone 🦀 2019-01-07 17:11:53 -05:00
Anuken
ff52fec663 Cleanup: all bullet definitions moved into one class 2019-01-07 16:53:04 -05:00
Anuken
5743d30851 Removed AmmoType class completely 2019-01-07 16:01:27 -05:00
Anuken
de02061b5e Removed dependency on old BulletEntity/BaseBulletType classes 2019-01-07 12:25:54 -05:00
Anuken
b64c38809e Removed unused upload build script 2019-01-07 10:50:31 -05:00
Anuken
a163db485b Merge branch 'master' into crafting-rework 2019-01-07 10:40:22 -05:00
Anuken
47f7507af3 Merge branch 'master' into unsector 2019-01-07 10:38:07 -05:00
Anuken
568e55e373 Crash fix 2019-01-07 10:37:58 -05:00
Anuken
79e722b5ff Ignored annotation out folder 2019-01-06 15:57:39 -05:00
Anuken
415252a5b2 Merge branches 'master' and 'unsector' of https://github.com/Anuken/Mindustry into unsector 2019-01-06 10:21:15 -05:00
Anuken
307bb7aeec Merge branch 'master' of https://github.com/Anuken/Mindustry into crafting-rework
# Conflicts:
#	core/src/io/anuke/mindustry/content/Recipes.java
2019-01-06 09:45:11 -05:00
Anuken
397da91ab4 Fixed all code generation errors 2019-01-06 09:42:08 -05:00
Anuken
fdd0c25a25 Removed core drone 2019-01-06 09:27:56 -05:00
Anuken
d691e9f39d it is commit o'clock 2019-01-05 23:00:58 -05:00
Anuken
a5cbe19d23 Merge branches 'crafting-rework' and 'master' of https://github.com/Anuken/Mindustry into crafting-rework
# Conflicts:
#	core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java
#	core/src/io/anuke/mindustry/content/blocks/TurretBlocks.java
#	core/src/io/anuke/mindustry/core/Renderer.java
#	core/src/io/anuke/mindustry/world/blocks/power/ItemGenerator.java
2019-01-04 16:15:23 -05:00
Anuken
5661124d86 Merge branches 'master' and 'unsector' of https://github.com/Anuken/Mindustry into unsector 2019-01-04 16:11:30 -05:00
Anuken
1346e163e9 Merge branch 'master' of https://github.com/Anuken/Mindustry 2019-01-04 15:27:39 -05:00
Anuken
d5626bfe52 Updated to next version of kryonet 2019-01-04 15:12:34 -05:00
Anuken
0900c13fa1 Cleanup 2019-01-04 15:11:58 -05:00
Anuken
5019f200b7 Large world size optimizations 2019-01-04 13:55:06 -05:00
Anuken
3b41ded045 More zoom fixes 2019-01-04 12:18:26 -05:00
Anuken
9f84b84819 Removed all extra floor rendering for larger worlds 2019-01-04 12:17:42 -05:00
Anuken
f61f3af687 Zoom fixes 2019-01-04 11:39:49 -05:00
Anuken
0a6f7ac817 Functional play button 2019-01-03 20:42:34 -05:00
Anuken
153e6c5f1b Re-structuring 2019-01-03 19:46:25 -05:00
Anuken
e24d96da6f Note 2019-01-03 18:35:48 -05:00
Anuken
59e5099ed6 Merge remote-tracking branch 'origin/master' 2019-01-03 18:22:26 -05:00
Anuken
b8e6e5df61 Power PR merged / Various bugfixes
Closes #288
2019-01-03 18:22:13 -05:00
Anuken
16851a457e Further recipe tweaks 2019-01-03 12:30:25 -05:00
Anuken
1c5bb605c3 Removed recipe dependencies 2019-01-03 12:26:49 -05:00
Anuken
dc12d58054 Standardized item capacity across blocks 2019-01-03 12:00:14 -05:00
Anuken
120e0f6971 Changed several more resources 2019-01-02 18:49:04 -05:00
Anuken
b9136e4e98 Merge pull request #364 from Prosta4okua/patch-43
(Complete) Close before 64 build
2019-01-02 21:00:15 -02:00
Prosta4okua
197b97d0db Update bundle_uk_UA.properties 2019-01-02 13:26:36 +02:00
Anuken
912136d174 Merge remote-tracking branch 'origin/master' 2019-01-01 18:41:07 -05:00
Anuken
653c85c58d Manually implemented #376 2019-01-01 18:41:00 -05:00
Anuken
638c99981d Merge pull request #389 from Prosta4okua/patch-47
Create strings.xml
2019-01-01 21:35:24 -02:00
Anuken
71e61abcd6 Merge pull request #356 from DaGamerFiles/patch-1
Update bundle_in_ID.properties [INCOMPLETE]
2019-01-01 21:33:57 -02:00
Anuken
fa1d440bb0 Merge pull request #355 from JustYanns/patch-2
Update bundle_fr.properties [Incomplete]
2019-01-01 21:32:16 -02:00
Prosta4okua
f0064e35bc Create strings.xml 2019-01-02 01:29:06 +02:00
Anuken
88d208268a Merge pull request #387 from CinExPL/patch-4
Update bundle_pl.properties
2019-01-01 21:13:28 -02:00
Anuken
6aa90a44f7 Merge branch 'master' into patch-4 2019-01-01 21:13:20 -02:00
Anuken
3c9322ee08 Update strings.xml (#383) 2019-01-01 21:09:55 -02:00
키에르
b2f47e6b70 Update bundle and fix error (+orignal bundle) (#382)
* Update bundle_ko.properties

* Update bundle.properties

* Duplicate
2019-01-01 21:09:45 -02:00
VizardAlpha
c905a870e0 Update bundle_fr_BE.properties (#381)
* Update bundle_fr_BE.properties

* Update bundle_fr_BE.properties
2019-01-01 21:09:34 -02:00
William So
b2360e42c6 Update bundle_zh_TW.properties (#379) 2019-01-01 21:09:25 -02:00
Ignacy
0da621745a Update bundle_pl.properties (#386) 2019-01-01 17:17:02 -02:00
SkeptiC
d8fc3851a7 Create bundle_cs.properties (#388)
Finished translation to czech
2019-01-01 17:15:45 -02:00
Anuken
edd3fb3440 Graphite, scrap 2019-01-01 14:04:17 -05:00
Anuken
a105c017d5 Tile cost tweak 2019-01-01 13:48:20 -05:00
Anuken
dd1034e37b Merge 2018-12-31 19:03:51 -05:00
Anuken
41f16a54de Logo downscale 2018-12-30 12:54:03 -05:00
Anuken
b91510efb3 Input fixes 2018-12-30 11:41:06 -05:00
Anuken
745d8122f5 Removed GH API calls 2018-12-30 10:27:37 -05:00
Anuken
98e4f7409b Removed main arc dependency 2018-12-30 10:11:54 -05:00
Anuken
cdb3971b8d Update build.gradle 2018-12-30 09:21:16 -05:00
Anuken
d01b8c7ad1 Improved snapshot netcode 2018-12-29 22:46:46 -05:00
Anuken
7c35b6e95a Minor build file fixes 2018-12-29 15:58:11 -05:00
Anuken
86b35fc43d Various graphical fixes 2018-12-29 13:06:17 -05:00
Anuken
5b2c8ac337 Removed '-snapshot' based dependencies 2018-12-29 12:22:41 -05:00
Anuken
734d4a912b Fixed failing tests 2018-12-29 12:05:29 -05:00
Anuken
4386d3169a JITPack-based dependencies 2018-12-29 11:59:43 -05:00
Anuken
35348f1150 Re-implemented block shadows / Removed alpha drones 2018-12-29 09:12:37 -05:00
Anuken
36b27458b6 Merged 4x graphics 2018-12-28 23:46:09 -05:00
Anuken
bbb2153112 Merge branch 'arc-port' of https://github.com/Anuken/Mindustry 2018-12-28 22:22:08 -05:00
Anuken
9ec1d8f16b Vars cleanup 2018-12-28 22:18:58 -05:00
Anuken
e1858df645 Clamping fix 2018-12-28 22:03:34 -05:00
Anuken
3b1066e16f Removed block bars / Fixed some input issues 2018-12-28 16:54:19 -05:00
Anuken
75709a7812 Fixed android version / Smooth zoom 2018-12-28 16:05:49 -05:00
Anuken
81c68e90cb Fixed shadow rendering 2018-12-28 13:22:44 -05:00
Anuken
bc9110b344 Fixed most world rendering 2018-12-28 13:01:35 -05:00
CinExPL
89d5618232 Update bundle_pl.properties 2018-12-28 14:36:06 +01:00
Anuken
1e8b844eac Debugging, cleanup 2018-12-27 20:26:18 -05:00
Anuken
3fc278c7b7 Fixed most main menu bugs 2018-12-27 17:14:07 -05:00
Anuken
db546412f1 Arc compatibility update 2018-12-27 15:47:17 -05:00
Anuken
3b42b604e1 Successful desktop compilation 2018-12-26 17:38:40 -05:00
Prosta4okua
f22caed088 Update bundle_uk_UA.properties 2018-12-26 22:49:18 +02:00
Prosta4okua
1f4e611629 Update bundle_uk_UA.properties 2018-12-26 22:45:13 +02:00
Anuken
8879593381 hhhhhhh 2018-12-26 13:22:31 -05:00
Anuken
22b7086bea Additional fixes 2018-12-23 23:58:24 -05:00
Anuken
c097841d78 Fixed #385 2018-12-23 17:11:19 -05:00
Anuken
44e4ffbe62 Fixed most things besides drawing 2018-12-22 22:17:28 -05:00
Prosta4okua
84f60f63b8 Update bundle_uk_UA.properties 2018-12-22 17:11:52 +02:00
Prosta4okua
572f358bda Update bundle_uk_UA.properties 2018-12-22 16:47:57 +02:00
Prosta4okua
46df7726c3 Update bundle_uk_UA.properties 2018-12-22 11:38:01 +02:00
Anuken
3abfaf1bca ctrl-shift-f 2018-12-21 21:33:05 -05:00
Prosta4okua
f119afe436 Update strings.xml 2018-12-21 20:17:35 +02:00
Anuken
94908bc599 🔥🔥🔥🔥🔥🔥maximum breakage 2018-12-20 12:38:27 -05:00
Anuken
cabcfc7136 Initial creation of Arc port 2018-12-20 11:49:32 -05:00
Anuken
d2c6305548 Merge remote-tracking branch 'origin/master' 2018-12-17 05:09:41 -02:00
Anuken
414af6a5d5 Minor button optimizations 2018-12-17 05:09:17 -02:00
beito
ecab13af57 Update Japanese translations (#378)
* Add new japanese translation

It translated on commit 66810c8.
so it don't apply changes from commit 17e0489.

* Update Japanese translation

Applies commit 7a51693. and small changes.

* Upadte Japanese translations

* Update Japanese

* Update Japanese

* Update Japanese translations

Improve and update for new changes

* Update Japanese

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translations

* Update Japanese translation

* Update Japanese translations

* Update Japanese translations
2018-12-17 02:50:01 -02:00
Baltazár Radics
47f9aece38 Merge pull request #16 from Timmeey86/baltitenger
More efficient way of retrieving ConsumePower subclasses
2018-12-16 10:45:39 +01:00
Anuken
6dc64cf2f6 Cleanup 2018-12-15 21:00:03 -05:00
Anuken
832582caa9 Cleanup 2018-12-15 20:59:28 -05:00
Timmeey86
828661e9de More efficient way of retrieving ConsumePower subclasses 2018-12-15 23:49:46 +01:00
Baltazár Radics
52f78ee4ed Merge pull request #15 from Timmeey86/baltitenger
Baltitenger
2018-12-15 09:11:14 +01:00
Anuken
6029b6d67f Updated smooth UI 2018-12-14 22:07:43 -05:00
Anuken
9d744580a1 Merge 2018-12-14 21:48:34 -05:00
Anuken
b295f51c29 Merge branch 'master' of https://github.com/Anuken/Mindustry into crafting-rework 2018-12-14 19:11:50 -05:00
Anuken
5c6aea0d50 Merge remote-tracking branch 'origin/master' 2018-12-14 19:11:05 -05:00
Anuken
99bf50ee52 Core recipe tweak 2018-12-14 19:10:58 -05:00
Timmeey86
f48a19a3bc Merged master into branch 2018-12-15 00:49:38 +01:00
Timmeey86
fed11db92e Buffered consumers now fill instantly 2018-12-15 00:47:47 +01:00
Timmeey86
23fb15fe78 Buffered consumers will no longer have their buffer reset when being unlinked 2018-12-14 21:14:19 +01:00
Prosta4okua
7a533f6053 Update bundle_uk_UA.properties 2018-12-14 18:28:40 +02:00
Prosta4okua
a292ff4287 Update bundle_uk_UA.properties 2018-12-14 18:24:06 +02:00
BasedUser
29329383e4 Update bundle_ru.properties (#377)
* Update bundle_ru.properties

* Update bundle_ru.properties
2018-12-14 11:14:30 -05:00
Anuken
fefdad5335 Minimap switched to container 2018-12-14 10:27:23 -05:00
Anuken
982f9ce8fb Padding fix 2018-12-14 00:12:08 -05:00
Anuken
5c6d4b9ac2 Fixed extremely strange join dialog server padding 2018-12-14 00:09:44 -05:00
Anuken
49954f5c07 Merge remote-tracking branch 'origin/master' 2018-12-13 18:02:05 -05:00
Anuken
0b837925a2 Build script reformatting / 'Fixed' all unchecked warnings 2018-12-13 18:01:51 -05:00
Clarence "Sparr" Risher
54dd67a435 Center sectors map on most recently saved (played and not abandoned) sector (#375) 2018-12-13 17:35:24 -05:00
Anuken
18ddc040d1 Merge remote-tracking branch 'origin/master' 2018-12-13 16:46:50 -05:00
Anuken
aeb28f67e4 Overlapping icon button casings will bother me no more 2018-12-13 16:46:45 -05:00
CrazyBearTR
54b892cd29 Incomplete update for turkish translation (#272)
Its incomplete. Still needed to work on it.
2018-12-13 15:58:06 -05:00
Anuken
2e28525c4b Typo fix 2018-12-13 08:37:05 -05:00
Anuken
8aa8de570f Fixed editor UI bug 2018-12-12 22:19:46 -05:00
Anuken
6723479c32 Removed sound config 2018-12-12 20:13:21 -05:00
Anuken
e318b6a113 Fixed #374 (temporary workaround) 2018-12-12 13:17:11 -05:00
Anuken
df44f82198 Drownable tar and lava 2018-12-12 10:10:15 -05:00
Anuken
97d54868e9 Grid mode tweak 2018-12-11 17:48:55 -05:00
Anuken
65e65ba308 Formatting cleanup / Bugfix 2018-12-11 17:29:13 -05:00
Anuken
2056d5e350 Merge branch 'master' of https://github.com/Anuken/Mindustry 2018-12-11 17:24:14 -05:00
indielm
8b3b72243f Gridmode and eyedropper select (#372)
* Gridmode

Adds keybindings to category and block selection

* bugfixes and comments

* more keybind

* Update PlacementFragment.java

* Update PlacementFragment.java

* eyedropper crashfix

* formatted with default.xml
2018-12-11 17:24:05 -05:00
Baltazár Radics
814146f227 Merge pull request #13 from Timmeey86/baltitenger
Merged master changes and fixed conflicts
2018-12-11 06:56:49 +01:00
Timmeey86
511983e1ea Merge branch 'master' of https://github.com/Anuken/Mindustry into baltitenger 2018-12-11 00:17:15 +01:00
Anuken
13e5df62c9 Removed fog classes 2018-12-10 14:12:50 -05:00
Anuken
8debf8caf8 Message cleanup / Player target reset 2018-12-10 14:10:54 -05:00
William So
eab90cac05 [Completed] Translate the rest of bundle_zh_TW.properties (#370)
* Translate unit strings

* Translate tutorial strings

* Translate walls', projecters', and turrents' strings

* Translate recently added strings

* Translate strings to the part before power

* Translate strings to the part before containers

* Translate containers', drills', and mechs' strings

* Translate factories' strings

* Translate everything else untranslated
2018-12-10 10:47:40 -05:00
VizardAlpha
ce401b01b6 Updates bundle_fr_BE.properties (#373) 2018-12-10 10:39:14 -05:00
Anuken
271dcd46bc Bugfixes 2018-12-10 10:38:09 -05:00
Anuken
c1a7b452e0 Misc cleanup 2018-12-09 23:28:36 -05:00
Timmeey86
e50ff6b0a5 Merged current master and fixed conflicts 2018-12-09 22:40:33 +01:00
Anuken
34ddb92e4d Merge remote-tracking branch 'origin/master' 2018-12-09 14:42:25 -05:00
Anuken
35b16c7292 New placement unit tests / Placing bugfix 2018-12-09 14:42:22 -05:00
Anuken
931fc93b4b Merge branch 'master' of https://github.com/Anuken/Mindustry into crafting-rework 2018-12-09 11:16:39 -05:00
BasedUser
aacd9dc62c Update bundle_ru.properties (#369) 2018-12-09 00:05:09 -05:00
Anuken
061c55614b Balancing / Tau mech mobile block repair 2018-12-08 20:11:15 -05:00
Timmeey86
41c6887f33 Merge branch 'master' of https://github.com/Anuken/Mindustry into baltitenger 2018-12-08 20:07:45 +01:00
Anuken
b427185fac 'Added' attack mode / Core inventory sharing 2018-12-07 19:32:44 -05:00
Anuken
6fa14accfe Added proper core blocks / Murdered snek 2018-12-07 15:19:14 -05:00
Baltazár Radics
1b8933cd84 Merge pull request #12 from Timmeey86/baltitenger
More power changes
2018-12-07 19:42:27 +01:00
Timmeey86
e6261a6bf8 Merge branch 'master' of https://github.com/Anuken/Mindustry into baltitenger 2018-12-07 19:40:10 +01:00
Timmeey86
0a76647175 ForceProjector should now work properly 2018-12-07 19:38:14 +01:00
Timmeey86
787706b1f7 Set default minimum power to 50% and set four blocks to 100% 2018-12-07 19:37:51 +01:00
Anuken
94665e8055 Formatting / Removed mobile map screenshots due to crashes 2018-12-07 13:10:25 -05:00
Anuken
b24770629e Merge remote-tracking branch 'origin/master' 2018-12-07 12:12:09 -05:00
Anuken
a09bd09a0e Removed tank chaining 2018-12-07 12:11:58 -05:00
Prosta4okua
988df8742c Update bundle_uk_UA.properties 2018-12-07 10:27:11 +02:00
Prosta4okua
10c41bf443 Update bundle_uk_UA.properties 2018-12-07 10:16:21 +02:00
Prosta4okua
bb30876557 From Ber and 2018-12-07 10:13:22 +02:00
Anuken
81c24b3de1 Fixed file chooser style / Fixed sector save invisibility 2018-12-06 22:27:39 -05:00
Anuken
4e1f734af7 Merge remote-tracking branch 'origin/master' 2018-12-06 19:57:31 -05:00
Anuken
2f726cf7f2 (2) 2018-12-06 19:57:26 -05:00
Timmeey86
e726d16094 Removed power bars from direct consumers 2018-12-06 19:49:49 +01:00
Timmeey86
5bda5124e6 Merged current master to branch 2018-12-06 19:48:01 +01:00
Anuken
1a66b7c4c3 Graphical fix 2018-12-06 11:41:05 -05:00
Anuken
da86dee981 Freezing armor multiplier 2018-12-06 09:30:41 -05:00
Anuken
6caf0fc1cc Merge remote-tracking branch 'origin/master' 2018-12-05 19:00:18 -05:00
Anuken
8d28976b0d Misc cleanup 2018-12-05 19:00:10 -05:00
Prosta4okua
26e972314e Update bundle_uk_UA.properties 2018-12-05 22:44:03 +02:00
iczero
8a582f8872 Check client version type against server version type (#367) 2018-12-05 15:43:13 -05:00
Anuken
ca04504573 Renamed internal 'noWaves' mode / Fixed text encoding issues 2018-12-05 15:38:32 -05:00
Anuken
80360214df Bar re-scaling 2018-12-05 13:33:03 -05:00
Baltazár Radics
c69eae486e Merge pull request #11 from Timmeey86/baltitenger
Fixes requested by Anuke
2018-12-05 19:09:14 +01:00
Timmeey86
57bebd3fb6 Removed file which was not supposed to be commited 2018-12-05 18:57:52 +01:00
Timmeey86
329dac77ee Consumers only draw power when all other required inputs are valid 2018-12-05 18:56:07 +01:00
Timmeey86
e5dabc63c2 Removed power bars from producers 2018-12-05 18:03:50 +01:00
Anuken
f652135e19 Merge remote-tracking branch 'origin/master' 2018-12-04 18:31:02 -05:00
Anuken
6bf7d8b111 ok desktop 2018-12-04 18:30:55 -05:00
Predator127
004ad0eb8c PT-BR updated (#365) 2018-12-03 12:46:48 -05:00
Skybbles // L5474
989034c799 Made Unloader have the same "memory" as the sorter (#366)
I implemented the same 'memory' feature as the sorter's, introduced in b62. It's sort of under the 'sorter' category in terms of features, so I thought it would be logical to do so.
2018-12-03 12:46:31 -05:00
Baltazár Radics
c2334ce80a Merge pull request #10 from Timmeey86/baltitenger
Continued work on Power Generators
2018-12-03 18:46:06 +01:00
Anuken
6d59fe3080 Bugfixes 2018-12-03 10:33:50 -05:00
Anuken
9c01256029 Output cleanup 2018-12-02 17:04:55 -05:00
Anuken
e33c863162 Bugfixes 2018-12-02 16:56:44 -05:00
Prosta4okua
787a9c0083 Update bundle_uk_UA.properties 2018-12-02 22:12:39 +02:00
Prosta4okua
c75c22955c Update bundle_uk_UA.properties 2018-12-02 22:01:42 +02:00
Anuken
5afb5d24d8 Wave preset changes 2018-12-02 13:57:13 -05:00
Anuken
134cc34d74 Merge remote-tracking branch 'origin/master' 2018-12-02 12:03:41 -05:00
Anuken
3397d6c907 Misc bug/crash fixes 2018-12-02 12:03:18 -05:00
Timmeey86
f8cf185db9 Fixed display of solar panel power generation 2018-12-02 12:43:18 +01:00
Anuken
735935c0c4 Merge branch 'remove-tile-pack' of https://github.com/Anuken/Mindustry 2018-12-01 17:36:16 -05:00
Anuken
fd3beaf2b9 Removed silicon coal requirement 2018-12-01 14:48:55 -05:00
Timmeey86
034fab480d Most direct consumers now operate slower when not supplied with full power 2018-12-01 18:32:17 +01:00
VizardAlpha
17432d1f94 Update bundle_fr_BE.properties (#361)
* Update bundle_fr_BE.properties

* Updates bundle_fr_BE.properties
2018-12-01 11:22:28 -05:00
Timmeey86
62c6d8e42d Fixed Arcs not firing 2018-12-01 16:49:30 +01:00
Timmeey86
14e057cf05 - Resolved all remaining TODOs 2018-12-01 16:13:03 +01:00
Timmeey86
982c9bf964 - Fixed double power production
- Buffered consumers no longer request power when full
2018-12-01 14:31:01 +01:00
Timmeey86
b4aba3d263 All power blocks now produce power as stated in v63 tool tips 2018-12-01 13:41:14 +01:00
Anuken
9f9d57b9a9 Merge remote-tracking branch 'origin/master' 2018-11-30 23:12:52 -05:00
Anuken
236e3c7e61 Added wet shocking 2018-11-30 23:12:48 -05:00
Anuken
2160844ad0 Merge remote-tracking branch 'origin/master' 2018-11-30 17:48:19 -05:00
Anuken
51475d600c iOS fix 2018-11-30 17:48:09 -05:00
Timmeey86
149f7a1d9d Merged current master into branch (with manual changes) 2018-11-30 21:33:09 +01:00
elmenda452
56ef7ae60c Update bundle_es.properties (#360)
It was strangely hard to find the (Constructing) translation... (for block.constructing), but anyway I finally found it
2018-11-30 15:16:54 -05:00
Anuken
7ec6586c4a Line power nodes 2018-11-30 15:14:27 -05:00
Timmeey86
074a6bfa87 Reverted accidental file push 2018-11-30 21:10:31 +01:00
Timmeey86
965fec5927 Continued work on power generators 2018-11-30 21:08:33 +01:00
Anuken
58b87aa999 Additional crash fixes 2018-11-30 13:49:43 -05:00
Anuken
b0b16b52ee Merge remote-tracking branch 'origin/master' 2018-11-30 13:20:39 -05:00
Anuken
9ab3f7e5aa Crash fix 2018-11-30 13:20:15 -05:00
Timmeey86
61210955bd Optimized power distribution implementation for buffered consumers 2018-11-30 18:45:40 +01:00
Timmeey86
28f73d0a76 Merged ItemGenerator, LiquidGenerator and ItemLiquidGenerator into a single class.
Unit tests now test the ItemsOnly, LiquidsOnly and LiquidsAndItems cases
2018-11-30 18:37:51 +01:00
Anuken
99fb1a4c5f Implemented null-items for sorters and item sources 2018-11-30 10:28:27 -05:00
Baltazár Radics
42cf80106f Merge pull request #9 from Timmeey86/baltitenger
Resolved more TODOs
2018-11-30 05:46:35 +01:00
Timmeey86
bcb9cfd2fe Synchronized Item/Liquid generator code 2018-11-30 00:03:53 +01:00
Timmeey86
1d57568322 All power distributors now update power graph
Replaced manual power graph update by base implementation call so future changes in base class get applied to all subclasses automatically. Added the call where missing.
2018-11-29 23:35:56 +01:00
Anuken
d56c041c4a Fixed ground units always spawning in (-1, -1) 2018-11-29 16:58:11 -05:00
Anuken
be48ed5589 Fixed another boring layout issue 2018-11-29 16:37:22 -05:00
Anuken
897c296fbe Fixed server crash 2018-11-29 16:30:41 -05:00
Anuken
d25fe028b8 Fixed mobile recipe switching 2018-11-29 16:23:11 -05:00
Anuken
d9ade96fad Compile fix 2018-11-29 14:47:39 -05:00
Anuken
7fd05b7ca6 Added mobile copy/paste 2018-11-29 13:04:34 -05:00
Anuken
0eec5383ed UI fixes / Better ghost connection fix 2018-11-29 12:07:43 -05:00
Anuken
f474d2c834 Fixed ghost connections 2018-11-29 09:32:36 -05:00
Anuken
e40e5e6a99 UI fix 2018-11-29 09:22:39 -05:00
Baltazár Radics
82d20efa8d Merge pull request #8 from Timmeey86/baltitenger
Fixed test names / Continued work on generators
2018-11-29 08:47:11 +01:00
Anuken
8c7716428d Logo update 2018-11-28 22:38:01 -05:00
Anuken
9ac8a4211e Merge 2018-11-28 22:37:49 -05:00
Anuken
23750bab55 Layout fixes 2018-11-28 22:05:34 -05:00
Anuken
22aeddc655 Fixed screenshot key firing when chat open 2018-11-28 20:30:34 -05:00
Anuken
ab69cd8027 Initial crafting rework changes 2018-11-28 19:00:59 -05:00
Anuken
f3d35e9537 Crash fixes 2018-11-28 18:43:35 -05:00
Timmeey86
4cb72c1998 Resolved some of the power-related TODOs 2018-11-29 00:38:53 +01:00
Timmeey86
12ccc10e83 Restored SolarGenerator and adapted to new power system. 2018-11-28 23:56:11 +01:00
Timmeey86
ec631f3499 Changed test naming conventions as requested by Anuke 2018-11-28 23:54:26 +01:00
Anuken
75d2ea1519 Added build revision 2018-11-28 17:42:12 -05:00
Anuken
14e9a94061 Merge remote-tracking branch 'origin/master' 2018-11-28 17:24:26 -05:00
Anuken
d3284ab9f6 Chained block inventory scaling 2018-11-28 17:24:21 -05:00
Anuken
775df43470 Merge remote-tracking branch 'origin/master' 2018-11-28 14:00:57 -05:00
Anuken
e2e6024e8f Pan tweak 2018-11-28 14:00:51 -05:00
elmenda452
d89b51f17d Update bundle_es.properties (#359)
Just making another revision.
2018-11-28 13:22:36 -05:00
Anuken
aa626947ed HUD cleanup 2018-11-28 13:14:54 -05:00
Baltazár Radics
630693d64e Merge pull request #7 from Timmeey86/baltitenger
Adapted ItemLiquidGenerator to new power system
2018-11-28 17:14:19 +01:00
Anuken
f2be23274e Crash fixes 2018-11-28 08:53:03 -05:00
Timmeey86
2972780bed Initial Efficiency is now zero. Blocks display efficiency. 2018-11-28 13:19:52 +01:00
Timmeey86
cf3d2c3def Fixed handling of item duration 2018-11-28 11:59:58 +01:00
Timmeey86
1f8751054c Tested/fixed delta calculations
Tests now use a fixed delta of 0.5 to make sure calculations work with deltas different from 1.0
2018-11-28 11:04:08 +01:00
Anuken
cc90e6d479 b a l a n c i n g 2018-11-27 21:07:29 -05:00
Anuken
76dd3c86f2 Removed redundant sector mission display 2018-11-27 20:36:23 -05:00
Anuken
91468fa2f9 Style changes 2018-11-27 20:12:49 -05:00
Timmeey86
739219c57b Finished first draft of ItemLiquidGenerator through TDD 2018-11-27 22:28:41 +01:00
Timmeey86
f56e1933a6 Fixed occassional crashes of Power Tests and continued TDD 2018-11-27 21:27:35 +01:00
Anuken
8e4aec9c4d Merge remote-tracking branch 'origin/master' 2018-11-27 13:19:48 -05:00
Anuken
e6e29aaf1e Team button layout fix 2018-11-27 13:19:44 -05:00
Prosta4okua
1ac5f54e9e [СOMPLETE]Update Uk_ua bundle (#328)
* [WIP]Update Uk_ua bundle

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2018-11-27 13:10:51 -05:00
Prosta4okua
bf983658c8 [COMPLETE]Close before 62 build (#345)
* [wip]Some changes from Xzimur

* Update bundle_ru.properties

Mine

* Update bundle_ru.properties

New UI / 8c437eb815

* Update bundle_ru.properties

* Update bundle_ru.properties

Разблокированные->разблоки\nрованные

* Update bundle_ru.properties

* Update bundle_ru.properties

Присоеди\nниться

* Update bundle_ru.properties

владелец

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2018-11-27 13:08:07 -05:00
Anuken
e17286eb9f Player list fixes with teams 2018-11-27 13:00:34 -05:00
Anuken
19c17e96de Mobile UI fixes 2018-11-27 12:31:45 -05:00
Anuken
b45368342d Block config UI fixes 2018-11-27 09:29:28 -05:00
Timmeey86
11e071289b Reorganized power tests ...
... and changed creation of fake tiles so update() implementations have all required dependencies
2018-11-27 08:51:19 +01:00
Anuken
dcea8ae64f New UI 2018-11-26 22:47:54 -05:00
Baltazár Radics
c9480ef17d Merge pull request #6 from Timmeey86/baltitenger
Merged most recent Anuken master into branch and fixed conflicts
2018-11-26 23:28:52 +01:00
Timmeey86
a9517096f9 Merged current Anuke master into branch 2018-11-26 23:25:24 +01:00
Timmeey86
fc3f03425e Merge branch 'master' of https://github.com/baltitenger/Mindustry into baltitenger 2018-11-26 23:12:55 +01:00
Baltazár Radics
8d43046f13 Merge pull request #5 from Timmeey86/baltitenger
Fixed batteries / Added Tests / Fixed delta
2018-11-26 22:18:29 +01:00
Timmeey86
cd6880aff4 Merge branch 'master' of https://github.com/baltitenger/Mindustry into baltitenger 2018-11-26 21:59:25 +01:00
Anuken
ccefa45fb0 Atlas update 2018-11-26 13:23:56 -05:00
Anuken
b721d7a10f Merge branch 'master' of https://github.com/Anuken/Mindustry into rendering-optimizations
# Conflicts:
#	core/assets/sprites/sprites.atlas
#	core/assets/sprites/sprites.png
#	core/src/io/anuke/mindustry/core/Renderer.java
#	core/src/io/anuke/mindustry/entities/units/types/Drone.java
#	core/src/io/anuke/mindustry/graphics/CacheLayer.java
#	core/src/io/anuke/mindustry/world/blocks/Floor.java
2018-11-26 13:23:38 -05:00
Anuken
ef85d1d83e Merge remote-tracking branch 'origin/master' 2018-11-26 12:40:28 -05:00
Anuken
d03ceb2a23 Bugfixes / Sorter item memory 2018-11-26 12:40:24 -05:00
VizardAlpha
90198be1cb Updates bundle_fr_BE.properties (#358)
* Updates bundle_fr_BE.properties

* Updates bundle_fr_BE.properties

* Update bundle_fr_BE.properties

* Update bundle_fr_BE.properties

* Update bundle_fr_BE.properties
2018-11-26 12:34:01 -05:00
Timmeey86
f640494c1f PowerGraph now handles delta
Also power bars are displayed for non-buffered consumers as well
2018-11-26 10:26:49 +01:00
Timmeey86
77b9feb765 More Tests and fixes
- Batteries will now get charged with no consumers
- Fixed stat display of power generators
2018-11-26 09:24:08 +01:00
Timmeey86
99139dfcca Added unit tests for batteries...
...and fixed battery distribution until all tests passed
2018-11-26 08:58:16 +01:00
Anuken
a241f63ddc Merge remote-tracking branch 'origin/master' 2018-11-25 22:55:18 -05:00
Anuken
70507258ae Cleanup 2018-11-25 22:55:13 -05:00
beito
51a8144f49 Update Japanese translations (#357)
* Add new japanese translation

It translated on commit 66810c8.
so it don't apply changes from commit 17e0489.

* Update Japanese translation

Applies commit 7a51693. and small changes.

* Upadte Japanese translations

* Update Japanese

* Update Japanese

* Update Japanese translations

Improve and update for new changes

* Update Japanese

* Update Japanese translations
2018-11-25 22:54:46 -05:00
Anuken
54ad9ba243 Added fullscreen map screenshot 2018-11-25 20:43:45 -05:00
Anuken
a7f7a09418 Drone repair cleanup / Percentage-based repair 2018-11-25 16:34:31 -05:00
Anuken
44897fb371 Mobile chat fix / Turret balance / UI disable variable 2018-11-25 13:58:19 -05:00
Anuken
bb6a748167 Various bugfixes 2018-11-25 10:29:38 -05:00
DaGamerFiles
21f61d46da Update bundle_in_ID.properties [INCOMPLETE]
Some fixes and translations from line 2 to line 130.
2018-11-25 17:47:22 +07:00
JustYanns
6ac8a9d440 Update bundle_fr.properties
Some improvement on the text (capital letters, plurals, ...)
More later !
2018-11-25 10:29:12 +01:00
Anuken
c321402414 Various bugfixes 2018-11-24 20:04:20 -05:00
Anuken
ec80fc9f3f Android build update 2018-11-24 19:39:35 -05:00
Anuken
6bfd57097f Cleanup of TODOs 2018-11-24 08:21:22 -05:00
Anuken
6f5df6a671 Added list of contributors to credits 2018-11-23 14:30:58 -05:00
Anuken
1baf3190cd Host dialog name selection 2018-11-23 13:35:16 -05:00
Anuken
66c29c49e5 Wave spawner moved / Bundle tweaks / Blank name 2018-11-23 13:32:17 -05:00
Anuken
e5d6740555 Additional tests, inventory fixes 2018-11-23 12:40:36 -05:00
Anuken
30b5dd63e4 Build tag fix 2018-11-23 10:21:47 -05:00
Anuken
f0aa8d73ea Merge remote-tracking branch 'origin/master' 2018-11-23 09:23:48 -05:00
Anuken
8a0761cad8 Bugfixes 2018-11-23 09:23:42 -05:00
키에르
322d76b713 Update bundle_ko.properties (#354)
* Update bundle_ko.properties

* Update bundle_ko.properties
2018-11-23 08:41:55 -05:00
Anuken
4f56bf3c3e Consume icon fix / Liquid mixer fix 2018-11-23 08:32:56 -05:00
Anuken
942eed402a uCore update 2018-11-22 23:38:59 -05:00
Anuken
24c72650fb Bundles update 2018-11-22 19:10:31 -05:00
Anuken
f5959c8829 Optional display section 2018-11-22 19:09:51 -05:00
Baltazár Radics
4a8299d9dc Merge pull request #4 from Timmeey86/baltitenger
Baltitenger
2018-11-22 23:59:15 +01:00
Timmeey86
560d388df4 Added Tests, fixed detected bugs and updated JUnit 2018-11-22 23:30:49 +01:00
Anuken
7621ebed42 Merge remote-tracking branch 'origin/master' 2018-11-22 08:39:15 -05:00
Anuken
5447c71790 Removed junction item voiding 2018-11-22 08:39:05 -05:00
Anuken
c5241eaaf6 Encoding tests 2018-11-21 23:12:27 -05:00
Anuken
9266b55ddf Fixed charset issues 2018-11-21 23:05:33 -05:00
VizardAlpha
1bc1f66613 Updates bundle_fr_BE.properties (#351)
I had not seen the last line to translate.
2018-11-21 22:02:28 -05:00
Anuken
7795a690ed Fixed fillitems command 2018-11-21 21:17:45 -05:00
Anuken
d498ac89f2 Mining bugfix 2018-11-21 21:13:30 -05:00
Timmeey86
7683e86d8b Added two unit tests for bounds checking 2018-11-21 23:57:24 +01:00
Baltazár Radics
ebb763db03 Merge pull request #3 from Timmeey86/baltitenger
Implemented the new power system with Consumers
2018-11-21 23:42:47 +01:00
Timmeey86
920491ddb2 MassDriver now properly displays the power per shot 2018-11-21 23:38:28 +01:00
Timmeey86
761728ac43 Fixed the ConsumePower constructors which got mixed up at some point 2018-11-21 23:04:18 +01:00
Timmeey86
d8ddb9dc82 Merged the three ConsumePower classes into a single one 2018-11-21 22:55:53 +01:00
Timmeey86
405f153439 Reverted/Adapted blocks to new Consume interfaces 2018-11-21 21:54:43 +01:00
Timmeey86
f789a35901 Readded buffered and direct consumers as three classes 2018-11-21 20:07:05 +01:00
Anuken
2842018c2f Ignored robovm.properties 2018-11-21 11:01:16 -05:00
Anuken
51641cc704 Merge remote-tracking branch 'origin/master' 2018-11-21 11:00:58 -05:00
Anuken
729f5ed5e4 New version format / Updated bundles / ConnectPacket encoding fix 2018-11-21 11:00:50 -05:00
Anuken
46c6b2168c Added automatic build incrementing 2018-11-21 10:04:38 -05:00
Anuken
1f955904a4 Merge 2018-11-21 10:04:17 -05:00
VizardAlpha
03ff33acaf Updates bundle_fr_BE.properties (#350) 2018-11-21 10:00:19 -05:00
Anuken
46035e76cc Build increment 2018-11-21 09:59:56 -05:00
Anuken
7c073f76ae Added automatic build incrementing 2018-11-20 19:28:26 -05:00
Timmeey86
558c89cc30 Finished first unit test (equal power input and output) and fixed bugs detected by it 2018-11-21 00:04:26 +01:00
Timmeey86
222d41c84a Added Test stub 2018-11-20 22:58:13 +01:00
Baltazár Radics
12a62f4607 Merge pull request #2 from Timmeey86/baltitenger
Branch now compiles again (but won't work yet)
2018-11-20 22:39:47 +01:00
Timmeey86
f561768c67 Handled compiler errors by either resolving them or commenting & adding a TODO 2018-11-20 22:33:36 +01:00
Anuken
5ced5ce253 Fixed some bugs/crashes 2018-11-20 10:00:13 -05:00
Anuken
55781e911e Merge remote-tracking branch 'origin/master' 2018-11-20 00:26:18 -05:00
Anuken
ee3c4a4124 Mass driver buff 2018-11-20 00:26:14 -05:00
키에르
6815e56e57 Update bundle_ko.properties (#346) 2018-11-19 22:56:14 -05:00
Anuken
6c744443fb Item list value fix 2018-11-19 20:52:31 -05:00
Anuken
3c37047afb Misc bugfixes 2018-11-19 17:56:26 -05:00
Anuken
f31f09d77a Visual fix 2018-11-19 16:40:33 -05:00
Baltazár Radics
c1bb05c0a4 Merge pull request #1 from Timmeey86/baltitenger
Fixed compiler errors/typos in PowerGraph
2018-11-19 22:17:06 +01:00
Timmeey86
f5b8d8a60c Fixed compiler errors/typos in PowerGraph 2018-11-19 22:11:11 +01:00
Baltazár Radics
8218cfc72c cleaned up PowerGraph 2018-11-19 22:00:45 +01:00
Anuken
de508ee68f "Legacy" unlock loading 2018-11-19 15:08:18 -05:00
Anuken
a932111040 Removed ContentUnlockSet 2018-11-19 14:38:46 -05:00
Anuken
8c437eb815 New UI 2018-11-19 14:30:40 -05:00
Anuken
1ad4815983 Added all placement controls 2018-11-19 14:20:57 -05:00
LQ
00706daae5 editor MapRenderer block icon scaling (#344) 2018-11-19 12:33:50 -05:00
Anuken
c75cdc6d28 Placement toggle support 2018-11-19 12:27:42 -05:00
Anuken
b9fae7fb7d Bundle update 2018-11-19 10:47:18 -05:00
Anuken
e74a3da5cd Merge remote-tracking branch 'origin/master' 2018-11-19 10:20:46 -05:00
Anuken
08cf986cae Fixed destruction of broken blocks leading to neutral team block 2018-11-19 10:20:41 -05:00
Anuken
ba01ed0153 Flipped place menu 2018-11-18 23:19:39 -05:00
Anuken
19ac8bd9b2 Info menu 2018-11-18 20:50:12 -05:00
Anuken
ab79ccb02b Implemented unlocks for placement 2018-11-18 20:04:15 -05:00
Baltazár Radics
6ba8a6a600 Added support for buffered power consumers 2018-11-18 23:47:03 +01:00
Baltazár Radics
377fb2329c Merge branch 'master' of github.com:Anuken/Mindustry 2018-11-18 23:26:10 +01:00
Baltazár Radics
285ee665ee rewritten PowerGraph 2018-11-18 23:12:54 +01:00
Anuken
d862498516 Replaced tooltips with names 2018-11-18 15:17:19 -05:00
Prosta4okua
b09b03a427 [COMPLETE]Update bundle_ru.properties (#313)
* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2018-11-18 14:12:44 -05:00
Sonnicon
4ef2ede4cf Important comment repair. (#343) 2018-11-18 14:10:35 -05:00
Anuken
0efaa11553 2 new categories, less space used 2018-11-18 14:10:02 -05:00
LQ
ea87b958ef update zh_CN translations (#342)
* Update bundle_zh_CN.properties

Add descriptions translate for zh_CN

* Update bundle_zh_CN.properties
2018-11-18 09:46:13 -05:00
Anuken
ff62f075d0 New place menu 2018-11-18 00:07:25 -05:00
Anuken
348744086d Broken BlocksFragment 2018-11-17 18:30:13 -05:00
Anuken
d1d4f79973 Fixed ores appearing as 'air' 2018-11-17 18:01:08 -05:00
Anuken
2a3f7f8cb3 Bundle update 2018-11-17 17:08:31 -05:00
Anuken
7eaef11a84 Improved hover block system 2018-11-17 17:04:16 -05:00
Anuken
efe93d0117 Added tile selection view 2018-11-17 14:45:29 -05:00
Anuken
7d12e18b98 Merge remote-tracking branch 'origin/master' 2018-11-17 13:04:39 -05:00
Anuken
de6bca424f Re-added hacky power graph fix 2018-11-17 13:04:34 -05:00
Milinai
03268a5575 Update ServerControl.java (#339)
* Update ServerControl.java

Hopefully made core fill for teams.

* Fixed compile errors and incorrect team handling
2018-11-17 12:57:10 -05:00
Sonnicon
1251680a1c Fixed BlocksFragment categories row limit (#340) 2018-11-17 12:56:59 -05:00
Anuken
f8d55ba837 Better scaling algorithm 2018-11-17 12:51:06 -05:00
William So
cd0e49914b Complete most of the Chinese translations (#338)
* Update some Chinese translations

* Translate control guides

* Translate mission text, server text, and others

* Translate generic text

* Translate a lot of short strings

* Translate a bunch of mech strings

* Translate rest of the strings except mainly the descriptions

The descriptions will probably take 3 more days to translate. I will stop here now.

I will translate the rest later.
2018-11-17 12:36:31 -05:00
beito
700e845727 Update Japanese translations (#337)
* Add new japanese translation

It translated on commit 66810c8.
so it don't apply changes from commit 17e0489.

* Update Japanese translation

Applies commit 7a51693. and small changes.

* Upadte Japanese translations

* Update Japanese

* Update Japanese
2018-11-17 12:26:57 -05:00
Anuken
bab8120814 Crash reporting fixes 2018-11-17 12:25:38 -05:00
Anuken
c6f1f19866 Removed shadow sprites 2018-11-17 11:33:56 -05:00
Anuken
745592f507 Merge branch 'master' of https://github.com/Anuken/Mindustry into rendering-optimizations 2018-11-17 11:24:37 -05:00
Anuken
afec65eb56 New mobile text dialog / Cleanup / Minimap fix / Collision optimization 2018-11-17 11:13:59 -05:00
Anuken
d6661da0a7 Syncing enemy display 2018-11-17 00:04:11 -05:00
Anuken
dcc4732748 Updated to libGDX 1.9.9 2018-11-16 23:36:11 -05:00
Anuken
6a5bf08d55 Implemented local server configs 2018-11-16 22:28:27 -05:00
Anuken
d52f5e6e03 Shadow tweaks 2018-11-16 21:33:10 -05:00
Anuken
eb62356313 Merge remote-tracking branch 'origin/rendering-optimizations' into rendering-optimizations 2018-11-16 21:20:08 -05:00
Anuken
919dc248e3 Less terrible shadows 2018-11-16 21:20:03 -05:00
Anuken
ca5db2bff8 Fixed bugs with waiting for players, world border 2018-11-16 18:17:24 -05:00
Anuken
658698ed2f Merge remote-tracking branch 'origin/master' 2018-11-16 17:28:47 -05:00
Anuken
7f391dacbd Fixed low-FPS movement getting broken 2018-11-16 17:28:42 -05:00
Timmeey86
90e0bf95d1 Negative power values will be fixed by reloading the map (#335) 2018-11-15 19:02:17 -05:00
Anuken
930bfb26f4 Merge remote-tracking branch 'origin/master' 2018-11-15 12:40:29 -05:00
Anuken
7e788f212a Additional fixes 2018-11-15 12:38:36 -05:00
Anuken
8f99530795 Fix for off-screen players and laggy interpolation 2018-11-15 12:37:07 -05:00
VizardAlpha
434af4b998 Updates bundle_fr_BE.properties (#333)
* Updates bundle_fr_BE.properties

* Updates

* last update
2018-11-15 10:50:21 -05:00
Anuken
a011728cc9 Build shader update 2018-11-15 10:01:03 -05:00
Anuken
e584139b6d Merge branch 'master' of https://github.com/Anuken/Mindustry into rendering-optimizations 2018-11-15 09:56:09 -05:00
Anuken
a7c8526f3e Merge remote-tracking branch 'origin/master' 2018-11-14 23:46:37 -05:00
Anuken
459256e83a Slower unloader 2018-11-14 23:46:33 -05:00
Anuken
21f3f52c7b Fixed minimap / Improved ore shadows 2018-11-14 18:15:47 -05:00
Anuken
568e43cf3d Script fixes, padding improvements 2018-11-14 17:14:22 -05:00
Anuken
e004e540d7 Correct tile edges 2018-11-14 17:05:51 -05:00
Anuken
cac6172344 Incomplete point shaders 2018-11-14 16:28:59 -05:00
beito
8dbfb87246 Add Japanese translations (#332)
* Add new japanese translation

It translated on commit 66810c8.
so it don't apply changes from commit 17e0489.

* Update Japanese translation

Applies commit 7a51693. and small changes.

* Upadte Japanese translations
2018-11-14 14:12:41 -05:00
Anuken
d8cbc7ddd8 "point shader" 2018-11-14 10:39:43 -05:00
Anuken
bdf3a2dfe8 Merge remote-tracking branch 'origin/rendering-optimizations' into rendering-optimizations 2018-11-14 10:12:12 -05:00
Anuken
693b82e47d Merge branch 'master' of https://github.com/Anuken/Mindustry into rendering-optimizations 2018-11-14 10:12:12 -05:00
Anuken
888be0fd5e Completely cleaned FloorRenderer class 2018-11-14 10:12:03 -05:00
Anuken
9f97ed331b Various bugfixes / Updated uCore 2018-11-14 09:55:54 -05:00
LQ
e8ea2af298 add drawRequest for mobile input (#330) 2018-11-14 09:49:27 -05:00
Anuken
785c2e36c6 Fixed some things 2018-11-13 23:24:59 -05:00
Anuken
ee043e67a4 Probable crash fix 2018-11-13 22:43:10 -05:00
Anuken
d824b41bbb Added replacement sprites 2018-11-13 22:11:29 -05:00
Anuken
a9df64f861 Semi-usable sprites 2018-11-13 22:10:41 -05:00
Anuken
6c3b449f74 Merge remote-tracking branch 'origin/master' 2018-11-13 18:51:38 -05:00
Anuken
536c6a7b2c Various bugfixes 2018-11-13 18:51:34 -05:00
Baramos666
e90e0fc615 update descriptions (#325) 2018-11-13 18:15:20 -05:00
VizardAlpha
b704121dcb Minor Update bundle_fr_BE.properties (#326) 2018-11-13 18:14:31 -05:00
Anuken
5e0886d744 Compile fix 2018-11-13 15:53:01 -05:00
Anuken
f819e4829b Writing of player nick bytes 2018-11-13 15:27:50 -05:00
Anuken
8873948e9e String encoding fix 2018-11-13 15:18:50 -05:00
Anuken
a25ea14436 Removed ancient comment 2018-11-13 14:49:58 -05:00
Anuken
1a922f05c1 Fixed sectors carrying over to multiplayer 2018-11-13 12:54:33 -05:00
elmenda452
e8268b1dab Update bundle_es.properties (#327)
There wasn't much to translate, this is just a second check.
2018-11-13 11:07:32 -05:00
Anuken
4cb78f55d1 Fixed edge scale 2018-11-13 09:30:21 -05:00
Anuken
7a516930b1 Bugfixes of various kinds 2018-11-13 09:13:53 -05:00
Baltazár Radics
8091bec6bf added buffered power consumer 2018-11-13 08:40:32 +01:00
Anuken
7baf42b138 New scaling pipelines 2018-11-12 19:03:24 -05:00
Anuken
ab9835b896 New scaling system 2018-11-12 17:37:26 -05:00
Anuken
9d142c5607 Removed shadow/world padding 2018-11-12 13:17:43 -05:00
Anuken
92b68bdb8f Merge branch 'remove-multithreading' of https://github.com/Anuken/Mindustry 2018-11-12 11:00:09 -05:00
Anuken
a86bb9f6e6 Merge branch 'master' of https://github.com/Anuken/Mindustry 2018-11-12 10:59:19 -05:00
Anuken
09db6dc424 4x 2018-11-11 23:31:59 -05:00
Anuken
3b62526267 Re-added shadows 2018-11-11 16:53:03 -05:00
Anuken
5d80031a40 Various rendering improvements 2018-11-11 15:57:23 -05:00
Timmeey86
c9777af91c Added Unlocks menu button to Escape menu on desktop (#324) 2018-11-11 13:03:15 -05:00
Anuken
656e4d529c Utterly broken 60fps rendering 2018-11-11 12:25:02 -05:00
Baltazár Radics
a894873d6b reset my fork, started work on using power consumers 2018-11-11 17:34:32 +01:00
Anuken
2d1a97e042 Removed unnecessary synchronized() blocks 2018-11-11 11:12:54 -05:00
Anuken
ece3f96867 Fixed net errors not being displayed properly 2018-11-11 10:50:33 -05:00
Anuken
65a48b324d Removed multithreading 2018-11-11 10:32:00 -05:00
Anuken
53bf622065 Merge remote-tracking branch 'origin/master' 2018-11-10 21:26:17 -05:00
Anuken
075be18123 Fixed wave button layout 2018-11-10 21:26:11 -05:00
Timmeey86
044390b4b4 Sector -2 0 fix (#322)
* Added a battle mission to Sector (-2,0) as otherwise no core would be spawned

* Fixed a crash which occurred during test execution...

... and could maybe occur during any startup with bad timing

* Added a new class for sector tests ...

... and added a test which makes sure that any predefined sector defines
a spawn point

* Added fix after applying test driven bugfixing
2018-11-10 21:19:27 -05:00
Anuken
37d03aaebe iOS build update 2018-11-09 13:12:04 -05:00
Anuken
51a51833d4 iOS build fix 2018-11-09 10:18:53 -05:00
Anuken
a8cfc1ef7a Mobile input tweak 2018-11-09 08:49:23 -05:00
Anuken
1d238c8315 Crash fix 2018-11-09 08:33:43 -05:00
Anuken
4f96744ff2 Shield shader simplification 2018-11-08 23:50:03 -05:00
Anuken
e9783ecccc Possible minimap fix 2018-11-08 23:19:47 -05:00
Anuken
6342cc41ac Better lake generation 2018-11-08 22:18:34 -05:00
Anuken
c554390de5 Crash fix 2018-11-08 18:48:19 -05:00
Anuken
4d8bbe3023 ita -> it 2018-11-08 17:40:50 -05:00
Anuken
969076f1ef Fixed sector data carry-over 2018-11-08 17:38:51 -05:00
Anuken
832aac0e6e Fixed potential spawner issues 2018-11-07 16:41:33 -05:00
Anuken
6967d4e762 Branch created 2018-11-07 16:32:28 -05:00
1428 changed files with 66523 additions and 43914 deletions

10
.gitignore vendored
View File

@@ -1,5 +1,3 @@
##Packr, build stuff
logs/ logs/
/core/assets/mindustry-saves/ /core/assets/mindustry-saves/
/core/assets/mindustry-maps/ /core/assets/mindustry-maps/
@@ -13,8 +11,10 @@ logs/
/desktop/gifexport/ /desktop/gifexport/
/core/lib/ /core/lib/
/core/assets-raw/sprites/generated/ /core/assets-raw/sprites/generated/
/core/assets-raw/sprites_out/
/annotations/build/ /annotations/build/
/kryonet/build/ /annotations/out/
/net/build/
/tools/build/ /tools/build/
/tests/build/ /tests/build/
/server/build/ /server/build/
@@ -26,6 +26,10 @@ logs/
/core/assets/version.properties /core/assets/version.properties
/core/assets/locales /core/assets/locales
/ios/src/io/anuke/mindustry/gen/ /ios/src/io/anuke/mindustry/gen/
/core/src/io/anuke/mindustry/gen/
ios/robovm.properties
packr-out/
config/
*.gif *.gif
version.properties version.properties

View File

@@ -1,10 +1,10 @@
jdk: jdk:
- openjdk8 - openjdk8
script: script:
- "./gradlew test" - "git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc"
- "./gradlew desktop:dist" - "./gradlew test"
- "./gradlew server:dist" - "./gradlew desktop:dist -Pbuildversion=${TRAVIS_TAG:1}"
- "./gradlew server:dist -Pbuildversion=${TRAVIS_TAG:1}"
deploy: deploy:
provider: releases provider: releases

View File

@@ -3,32 +3,35 @@
[![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry) [![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry)
[![Discord](https://img.shields.io/discord/391020510269669376.svg)](https://discord.gg/mindustry) [![Discord](https://img.shields.io/discord/391020510269669376.svg)](https://discord.gg/mindustry)
A pixelated sandbox tower defense game made using [LibGDX](https://libgdx.badlogicgames.com/). Winner of the [GDL Metal Monstrosity Jam](https://itch.io/jam/gdl---metal-monstrosity-jam). A sandbox tower defense game written in Java.
_[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_ _[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_
_[Wiki](http://mindustry.wikia.com/wiki/Mindustry_Wiki)_ _[Wiki](http://mindustry.wikia.com/wiki/Mindustry_Wiki)_
_[Discord](https://discord.gg/r8BkXNd)_
### Building ### Building
Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://jenkins.hellomouse.net/job/mindustry/). Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://jenkins.hellomouse.net/job/mindustry/).
If you'd rather compile on your own, follow these instructions. If you'd rather compile on your own, follow these instructions.
First, make sure you have Java 8 and JDK 8 installed. Open a terminal in the root directory, and run the following commands: First, make sure you have Java 8 and JDK 8 installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands:
#### Windows #### Windows
_Running:_ `gradlew desktop:run` _Running:_ `gradlew desktop:run`
_Building:_ `gradlew desktop:dist` _Building:_ `gradlew desktop:dist`
#### Linux #### Linux/Mac OS
_Running:_ `./gradlew desktop:run` _Running:_ `./gradlew desktop:run`
_Building:_ `./gradlew desktop:dist` _Building:_ `./gradlew desktop:dist`
#### For Server Builds... #### Server
Server builds are bundled with each released build (in Releases). If you'd rather compile on your own, replace 'desktop' with 'server' i.e. `gradlew server:dist`. Server builds are bundled with each released build (in Releases). If you'd rather compile on your own, replace 'desktop' with 'server', e.g. `gradlew server:dist`.
##### Troubleshooting
If the terminal returns `Permission denied` or `Command not found` on Mac/Linux, run `chmod +x ./gradlew` before running `./gradlew`. *This is a one-time procedure.*
--- ---

View File

@@ -2,11 +2,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.anuke.mindustry"> package="io.anuke.mindustry">
<uses-feature android:glEsVersion="0x00020000" android:required="true" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<uses-permission android:name="com.android.vending.BILLING" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET" />
<application <application
android:resizeableActivity="false" android:resizeableActivity="false"
@@ -17,6 +16,7 @@
android:appCategory="game" android:appCategory="game"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/GdxTheme" android:fullBackupContent="@xml/backup_rules"> android:theme="@style/GdxTheme" android:fullBackupContent="@xml/backup_rules">
<meta-data android:name="android.max_aspect" android:value="2.1"/>
<activity <activity
android:name="io.anuke.mindustry.AndroidLauncher" android:name="io.anuke.mindustry.AndroidLauncher"
android:label="@string/app_name" android:label="@string/app_name"
@@ -24,8 +24,8 @@
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout"> android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
@@ -33,7 +33,7 @@
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="application/octet-stream"/> <data android:mimeType="application/octet-stream"/>
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.mmap" /> <data android:scheme="file" android:host="*" android:pathPattern=".*\\.mmap"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
@@ -41,29 +41,25 @@
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="application/octet-stream"/> <data android:mimeType="application/octet-stream"/>
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.msav" /> <data android:scheme="file" android:host="*" android:pathPattern=".*\\.msav"/>
</intent-filter> </intent-filter>
<intent-filter android:icon="@mipmap/ic_launcher" <intent-filter android:icon="@mipmap/ic_launcher"
android:label="Mindustry Map" android:label="Mindustry Map"
android:priority="1"> android:priority="1">
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.mmap" android:mimeType="*/*" /> <data android:scheme="file" android:host="*" android:pathPattern=".*\\.mmap" android:mimeType="*/*"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.msav" android:mimeType="*/*" /> <data android:scheme="file" android:host="*" android:pathPattern=".*\\.msav" android:mimeType="*/*"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".DonationsActivity"
android:theme="@style/GdxTheme" />
</application> </application>
</manifest> </manifest>

View File

@@ -1,64 +1,59 @@
buildscript { buildscript{
repositories { repositories{
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
google() google()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter() jcenter()
} }
dependencies { dependencies{
classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.android.tools.build:gradle:3.4.0'
} }
} }
apply plugin: "com.android.application" apply plugin: "com.android.application"
configurations { natives } configurations{ natives }
repositories { repositories{
mavenCentral() mavenCentral()
jcenter() jcenter()
maven { maven{
url "https://maven.google.com" url "https://maven.google.com"
} }
} }
dependencies { dependencies{
implementation project(":core") implementation project(":core")
implementation project(":kryonet") implementation project(":net")
implementation 'com.android.support:support-v4:28.0.0'
implementation 'org.sufficientlysecure:donations:2.5'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" implementation arcModule("backends:backend-android")
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
} }
task deploy(type: Copy){ task deploy(type: Copy){
dependsOn "assembleRelease" dependsOn "assembleRelease"
from "build/outputs/apk/google/release/android-google-release.apk" from "build/outputs/apk/release/android-release.apk"
into "../deploy/" into "../deploy/"
rename ("android-google-release.apk", appName + "-android-" + getVersionString() + ".apk") rename("android-release.apk", appName + "-android-" + getVersionString() + ".apk")
} }
android { android{
buildToolsVersion '28.0.3' buildToolsVersion '28.0.3'
compileSdkVersion 28 compileSdkVersion 28
sourceSets { sourceSets{
main { main{
manifest.srcFile 'AndroidManifest.xml' manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src'] java.srcDirs = ['src']
aidl.srcDirs = ['src'] aidl.srcDirs = ['src']
@@ -70,11 +65,11 @@ android {
androidTest.setRoot('tests') androidTest.setRoot('tests')
} }
packagingOptions { packagingOptions{
exclude 'META-INF/robovm/ios/robovm.xml' exclude 'META-INF/robovm/ios/robovm.xml'
} }
defaultConfig { defaultConfig{
def vfile = file('../core/assets/version.properties') def vfile = file('../core/assets/version.properties')
def code = 0 def code = 0
@@ -93,27 +88,21 @@ android {
applicationId "io.anuke.mindustry" applicationId "io.anuke.mindustry"
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 27 targetSdkVersion 28
versionCode code versionCode code
versionName versionNameResult versionName versionNameResult
} }
compileOptions { compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
flavorDimensions "google" flavorDimensions "google"
productFlavors { signingConfigs{
google { release{
buildConfigField "boolean", "DONATIONS_GOOGLE", "true" if(project.hasProperty("RELEASE_STORE_FILE")){
}
}
signingConfigs {
release {
if(project.hasProperty("RELEASE_STORE_FILE")) {
storeFile file(RELEASE_STORE_FILE) storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS keyAlias RELEASE_KEY_ALIAS
@@ -124,8 +113,8 @@ android {
} }
} }
buildTypes { buildTypes{
release { release{
signingConfig signingConfigs.release signingConfig signingConfigs.release
} }
} }
@@ -133,22 +122,22 @@ android {
// called every time gradle gets executed, takes the native dependencies of // called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders // the natives configuration, and extracts them to the proper libs/ folders
// so they get packed with the APK. // so they get packed with the APK.
task copyAndroidNatives() { task copyAndroidNatives(){
file("libs/armeabi/").mkdirs() file("libs/armeabi/").mkdirs()
file("libs/armeabi-v7a/").mkdirs() file("libs/armeabi-v7a/").mkdirs()
file("libs/arm64-v8a/").mkdirs() file("libs/arm64-v8a/").mkdirs()
file("libs/x86_64/").mkdirs() file("libs/x86_64/").mkdirs()
file("libs/x86/").mkdirs() file("libs/x86/").mkdirs()
configurations.natives.files.each { jar -> configurations.natives.files.each{ jar ->
def outputDir = null def outputDir = null
if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
if (jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi") if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
if (jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
if (jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
if (outputDir != null) { if(outputDir != null){
copy { copy{
from zipTree(jar) from zipTree(jar)
into outputDir into outputDir
include "*.so" include "*.so"
@@ -157,21 +146,21 @@ task copyAndroidNatives() {
} }
} }
task run(type: Exec) { task run(type: Exec){
def path def path
def localProperties = project.file("../local.properties") def localProperties = project.file("../local.properties")
if (localProperties.exists()) { if(localProperties.exists()){
Properties properties = new Properties() Properties properties = new Properties()
localProperties.withInputStream { instr -> localProperties.withInputStream{ instr ->
properties.load(instr) properties.load(instr)
} }
def sdkDir = properties.getProperty('sdk.dir') def sdkDir = properties.getProperty('sdk.dir')
if (sdkDir) { if(sdkDir){
path = sdkDir path = sdkDir
} else { }else{
path = "$System.env.ANDROID_HOME" path = "$System.env.ANDROID_HOME"
} }
} else { }else{
path = "$System.env.ANDROID_HOME" path = "$System.env.ANDROID_HOME"
} }
@@ -180,19 +169,19 @@ task run(type: Exec) {
} }
// sets up the Android Idea project, using the old Ant based build. // sets up the Android Idea project, using the old Ant based build.
idea { idea{
module { module{
sourceDirs += file("src") sourceDirs += file("src")
scopes = [COMPILE: [plus: [project.configurations.compile]]] scopes = [COMPILE: [plus: [project.configurations.compile]]]
iml { iml{
withXml { withXml{
def node = it.asNode() def node = it.asNode()
def builder = NodeBuilder.newInstance() def builder = NodeBuilder.newInstance()
builder.current = node builder.current = node
builder.component(name: "FacetManager") { builder.component(name: "FacetManager"){
facet(type: "android", name: "Android") { facet(type: "android", name: "Android"){
configuration { configuration{
option(name: "UPDATE_PROPERTY_FILES", value: "true") option(name: "UPDATE_PROPERTY_FILES", value: "true")
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -20,26 +20,10 @@
#} #}
-verbose -verbose
-verbose
-dontwarn android.support.** -ignorewarnings
-dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication -keep class io.anuke.mindustry.game.Rules
-dontwarn com.badlogic.gdx.utils.GdxBuild -keep class io.anuke.mindustry.desktop.DesktopLauncher
-dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild -keepclasseswithmembers public class * {
-dontwarn com.badlogic.gdx.jnigen.BuildTarget* public static void main(java.lang.String[]);
-dontwarn com.badlogic.gdx.graphics.g2d.freetype.FreetypeBuild
-keep class com.badlogic.gdx.controllers.android.AndroidControllers
-keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* {
<init>(com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration);
}
-keepclassmembers class com.badlogic.gdx.physics.box2d.World {
boolean contactFilter(long, long);
void beginContact(long);
void endContact(long);
void preSolve(long, long);
void postSolve(long, long);
boolean reportFixture(long);
float reportRayFixture(long, float, float, float, float, float);
} }

View File

@@ -9,6 +9,5 @@
# #
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target. # Project target.
target=android-19 target=android-19

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 911 B

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#000">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"
android:adjustViewBounds="false"
android:contentDescription="background"
android:cropToPadding="false"
android:scaleType="centerCrop"
android:src="@drawable/background" />
<LinearLayout
android:id="@+id/donations_activity_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
</LinearLayout>

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<EditText
android:id="@+id/gdxDialogsEditTextInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
>
<requestFocus />
</EditText>
</LinearLayout>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 553 B

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 달러</item>
<item>2 달러</item>
<item>5 달러</item>
<item>10 달러</item>
<item>15 달러</item>
<item>25 달러</item>
<item>50 달러</item>
</string-array>
</resources>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 Доллар</item>
<item>2 Доллара</item>
<item>5 Доллара</item>
<item>10 Долларов</item>
<item>15 Долларов</item>
<item>25 Долларов</item>
<item>50 Долларов</item>
</string-array>
</resources>

View File

@@ -2,14 +2,5 @@
<resources> <resources>
<string name="app_name">Mindustry</string> <string name="app_name">Mindustry</string>
<string-array name="donation_google_catalog_values">
<item>1 Dollar</item>
<item>2 Dollars</item>
<item>5 Dollars</item>
<item>10 Dollars</item>
<item>15 Dollars</item>
<item>25 Dollars</item>
<item>50 Dollars</item>
</string-array>
</resources> </resources>

View File

@@ -10,37 +10,28 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import io.anuke.arc.Core;
import com.badlogic.gdx.Gdx; import io.anuke.arc.backends.android.surfaceview.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration;
import com.badlogic.gdx.files.FileHandle; import io.anuke.arc.files.FileHandle;
import com.badlogic.gdx.utils.Base64Coder; import io.anuke.arc.function.Consumer;
import com.google.android.gms.common.GoogleApiAvailability; import io.anuke.arc.scene.ui.layout.Unit;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException; import io.anuke.arc.util.Strings;
import com.google.android.gms.common.GooglePlayServicesRepairableException; import io.anuke.arc.util.serialization.Base64Coder;
import com.google.android.gms.security.ProviderInstaller;
import io.anuke.kryonet.KryoClient;
import io.anuke.kryonet.KryoServer;
import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.game.Saves.SaveSlot; import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.ui.dialogs.FileChooser; import io.anuke.mindustry.ui.dialogs.FileChooser;
import io.anuke.ucore.function.Consumer; import io.anuke.mindustry.net.ArcNetClient;
import io.anuke.ucore.scene.ui.TextField; import io.anuke.mindustry.net.ArcNetServer;
import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.Strings;
import java.io.File; import java.io.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class AndroidLauncher extends PatchedAndroidApplication{ public class AndroidLauncher extends AndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1; public static final int PERMISSION_REQUEST_CODE = 1;
boolean doubleScaleTablets = true; boolean doubleScaleTablets = true;
FileChooser chooser; FileChooser chooser;
@@ -50,16 +41,12 @@ public class AndroidLauncher extends PatchedAndroidApplication{
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true; config.useImmersiveMode = true;
config.depth = 0;
Platform.instance = new Platform(){ Platform.instance = new Platform(){
@Override @Override
public void addDialog(TextField field, int length){ public void hide(){
TextFieldDialogListener.add(field, 0, length); moveTaskToBack(true);
}
@Override
public void openDonations(){
showDonations();
} }
@Override @Override
@@ -69,7 +56,7 @@ public class AndroidLauncher extends PatchedAndroidApplication{
int len = s.length(); int len = s.length();
byte[] data = new byte[len / 2]; byte[] data = new byte[len / 2];
for(int i = 0; i < len; i += 2){ for(int i = 0; i < len; i += 2){
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) data[i / 2] = (byte)((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16)); + Character.digit(s.charAt(i + 1), 16));
} }
String result = new String(Base64Coder.encode(data)); String result = new String(Base64Coder.encode(data));
@@ -99,13 +86,13 @@ public class AndroidLauncher extends PatchedAndroidApplication{
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE); perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
} }
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE); requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
} }
} }
@Override @Override
public void beginForceLandscape(){ public void beginForceLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} }
@Override @Override
@@ -119,26 +106,19 @@ public class AndroidLauncher extends PatchedAndroidApplication{
} }
}; };
try{
ProviderInstaller.installIfNeeded(this);
}catch(GooglePlayServicesRepairableException e){
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
apiAvailability.getErrorDialog(this, e.getConnectionStatusCode(), 0).show();
}catch(GooglePlayServicesNotAvailableException e){
Log.e("SecurityException", "Google Play Services not available.");
}
if(doubleScaleTablets && isTablet(this.getContext())){ if(doubleScaleTablets && isTablet(this.getContext())){
Unit.dp.addition = 0.5f; Unit.dp.addition = 0.5f;
} }
config.hideStatusBar = true; config.hideStatusBar = true;
Net.setClientProvider(new KryoClient()); Net.setClientProvider(new ArcNetClient());
Net.setServerProvider(new KryoServer()); Net.setServerProvider(new ArcNetServer());
initialize(new Mindustry(), config); initialize(new Mindustry(), config);
checkFiles(getIntent()); checkFiles(getIntent());
} }
@Override @Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
if(requestCode == PERMISSION_REQUEST_CODE){ if(requestCode == PERMISSION_REQUEST_CODE){
for(int i : grantResults){ for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return; if(i != PackageManager.PERMISSION_GRANTED) return;
@@ -167,28 +147,30 @@ public class AndroidLauncher extends PatchedAndroidApplication{
InputStream inStream; InputStream inStream;
if(myFile != null) inStream = new FileInputStream(myFile); if(myFile != null) inStream = new FileInputStream(myFile);
else inStream = getContentResolver().openInputStream(uri); else inStream = getContentResolver().openInputStream(uri);
Gdx.app.postRunnable(() -> { Core.app.post(() -> {
if(save){ //open save if(save){ //open save
System.out.println("Opening save."); System.out.println("Opening save.");
FileHandle file = Gdx.files.local("temp-save." + saveExtension); FileHandle file = Core.files.local("temp-save." + saveExtension);
file.write(inStream, false); file.write(inStream, false);
if(SaveIO.isSaveValid(file)){ if(SaveIO.isSaveValid(file)){
try{ try{
SaveSlot slot = control.saves.importSave(file); SaveSlot slot = control.saves.importSave(file);
ui.load.runLoadSave(slot); ui.load.runLoadSave(slot);
}catch(IOException e){ }catch(IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false))); ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, false)));
} }
}else{ }else{
ui.showError("$text.save.import.invalid"); ui.showError("$save.import.invalid");
} }
}else if(map){ //open map }else if(map){ //open map
Gdx.app.postRunnable(() -> { FileHandle file = Core.files.local("temp-map." + mapExtension);
file.write(inStream, false);
Core.app.post(() -> {
System.out.println("Opening map."); System.out.println("Opening map.");
if(!ui.editor.isShown()){ if(!ui.editor.isShown()){
ui.editor.show(); ui.editor.show();
} }
ui.editor.beginEditMap(inStream); ui.editor.beginEditMap(file);
}); });
} }
}); });
@@ -198,22 +180,8 @@ public class AndroidLauncher extends PatchedAndroidApplication{
} }
} }
private boolean isPackageInstalled(String packagename){
try{
getPackageManager().getPackageInfo(packagename, 0);
return true;
}catch(Exception e){
return false;
}
}
private boolean isTablet(Context context){ private boolean isTablet(Context context){
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE; return manager != null && manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
private void showDonations(){
Intent intent = new Intent(this, DonationsActivity.class);
startActivity(intent);
} }
} }

View File

@@ -1,119 +0,0 @@
package io.anuke.mindustry;
import android.app.Activity;
import android.app.AlertDialog;
import android.text.InputFilter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.EditText;
import com.badlogic.gdx.Gdx;
public class AndroidTextFieldDialog{
private Activity activity;
private EditText userInput;
private AlertDialog.Builder builder;
private TextPromptListener listener;
private boolean isBuild;
public AndroidTextFieldDialog(){
this.activity = (Activity) Gdx.app;
load();
}
public AndroidTextFieldDialog show(){
activity.runOnUiThread(() -> {
AlertDialog dialog = builder.create();
dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();
});
return this;
}
private AndroidTextFieldDialog load(){
activity.runOnUiThread(() -> {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
LayoutInflater li = LayoutInflater.from(activity);
View promptsView = li.inflate(getResourceId("gdxdialogs_inputtext", "layout"), null);
alertDialogBuilder.setView(promptsView);
userInput = promptsView.findViewById(getResourceId("gdxDialogsEditTextInput", "id"));
alertDialogBuilder.setCancelable(false);
builder = alertDialogBuilder;
isBuild = true;
});
// Wait till TextPrompt is built.
while(!isBuild){
try{
Thread.sleep(10);
}catch(InterruptedException ignored){
}
}
return this;
}
public int getResourceId(String pVariableName, String pVariableType){
try{
return activity.getResources().getIdentifier(pVariableName, pVariableType, activity.getPackageName());
}catch(Exception e){
Gdx.app.error("Android Dialogs", "Cannot find resouce with name: " + pVariableName
+ " Did you copy the layouts to /res/layouts and /res/layouts_v14 ?");
e.printStackTrace();
return -1;
}
}
public AndroidTextFieldDialog setText(CharSequence value){
userInput.append(value);
return this;
}
public AndroidTextFieldDialog setCancelButtonLabel(CharSequence label){
builder.setNegativeButton(label, (dialog, id) -> dialog.cancel());
return this;
}
public AndroidTextFieldDialog setConfirmButtonLabel(CharSequence label){
builder.setPositiveButton(label, (dialog, id) -> {
if(listener != null && !userInput.getText().toString().isEmpty()){
listener.confirm(userInput.getText().toString());
}
});
return this;
}
public AndroidTextFieldDialog setTextPromptListener(TextPromptListener listener){
this.listener = listener;
return this;
}
public AndroidTextFieldDialog setInputType(int type){
userInput.setInputType(type);
return this;
}
public AndroidTextFieldDialog setMaxLength(int length){
userInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(length)});
return this;
}
public interface TextPromptListener{
void confirm(String text);
}
}

View File

@@ -1,74 +0,0 @@
package io.anuke.mindustry;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button;
import org.sufficientlysecure.donations.DonationsFragment;
public class DonationsActivity extends FragmentActivity{
/**
* Google
*/
private static final String GOOGLE_PUBKEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG93KhpfBPKTo2jF0yxbWkkmMKwsPNM4SsMj1aDq7vv6n3R+mqJVfprOJxFfJh7JchXTflLIgiaKXFAiU70gJbMTniEWnEaFSxAeF09a7U0RjOwN+7rFwjCG91c2CpYxPanBTQP4zasc1ODPVzq4q6/4ByjhenN71V4WmR08NFIAodcfFPrOkDPil7i8y7cgcd1Ky53U0TS+LLYJttAK3XdTK4s7VE3I5IKoeNa4uwCmIM59R67q2k3cXjLk/nP6MP+y++EzHN/PTiR1sVg4dMP8K31RPw/1QNLPQwJz6Wc872oWwb7xo5gkoXbDc5WPPydsi8F3SyKNaYwzN6CDFQIDAQAB";
private static final String[] GOOGLE_CATALOG = new String[]{
"mindustry.donation.1", "mindustry.donation.2", "mindustry.donation.5",
"mindustry.donation.10", "mindustry.donation.15",
"mindustry.donation.25", "mindustry.donation.50"};
DonationsFragment donationsFragment;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTheme(R.style.GdxTheme);
setContentView(R.layout.donations_activity);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if(BuildConfig.DONATIONS_GOOGLE){
donationsFragment = DonationsFragment.newInstance(BuildConfig.DEBUG, true, GOOGLE_PUBKEY, GOOGLE_CATALOG,
getResources().getStringArray(R.array.donation_google_catalog_values), false, null, null,
null, false, null, null, false, null);
}
ft.replace(R.id.donations_activity_container, donationsFragment, "donationsFragment");
ft.commit();
}
public void onStart(){
super.onStart();
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
b.setOnClickListener(view -> {
donationsFragment.donateGoogleOnClick(donationsFragment.getView());
b.setEnabled(false);
});
}
/**
* Needed for Google Play In-app Billing. It uses startIntentSenderForResult(). The result is not propagated to
* the Fragment like in startActivityForResult(). Thus we need to propagate manually to our Fragment.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Button b = findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button);
b.setEnabled(true);
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag("donationsFragment");
if(fragment != null){
fragment.onActivityResult(requestCode, resultCode, data);
//TODO donation event, set settings?
}
}
}

View File

@@ -1,20 +0,0 @@
package io.anuke.mindustry;
import com.badlogic.gdx.backends.android.AndroidApplication;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class PatchedAndroidApplication extends AndroidApplication {
private final ExecutorService exec = Executors.newSingleThreadExecutor();
@Override
protected void onPause () {
if(useImmersiveMode) {
exec.submit(() -> {
try {Thread.sleep(100);} catch (InterruptedException ignored) {}
graphics.onDrawFrame(null);
});
}
super.onPause();
}
}

View File

@@ -1,68 +0,0 @@
package io.anuke.mindustry;
import android.text.InputType;
import com.badlogic.gdx.Application.ApplicationType;
import com.badlogic.gdx.Gdx;
import io.anuke.ucore.scene.event.ChangeListener;
import io.anuke.ucore.scene.event.ClickListener;
import io.anuke.ucore.scene.event.InputEvent;
import io.anuke.ucore.scene.event.InputListener;
import io.anuke.ucore.scene.ui.TextField;
public class TextFieldDialogListener extends ClickListener{
private TextField field;
private int type;
private int max;
//type - 0 is text, 1 is numbers, 2 is decimals
public TextFieldDialogListener(TextField field, int type, int max){
this.field = field;
this.type = type;
this.max = max;
}
public static void add(TextField field, int type, int max){
field.addListener(new TextFieldDialogListener(field, type, max));
field.addListener(new InputListener(){
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
Gdx.input.setOnscreenKeyboardVisible(false);
return false;
}
});
}
public static void add(TextField field){
add(field, 0, 16);
}
public void clicked(final InputEvent event, float x, float y){
if(Gdx.app.getType() == ApplicationType.Desktop) return;
AndroidTextFieldDialog dialog = new AndroidTextFieldDialog();
dialog.setTextPromptListener(text ->
Gdx.app.postRunnable(() -> {
field.clearText();
field.appendText(text);
field.fire(new ChangeListener.ChangeEvent());
Gdx.graphics.requestRendering();
}));
if(type == 0){
dialog.setInputType(InputType.TYPE_CLASS_TEXT);
}else if(type == 1){
dialog.setInputType(InputType.TYPE_CLASS_NUMBER);
}else if(type == 2){
dialog.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
dialog.setConfirmButtonLabel("OK").setText(field.getText());
dialog.setCancelButtonLabel("Cancel");
dialog.setMaxLength(max);
dialog.show();
event.cancel();
}
}

View File

@@ -1,6 +1,6 @@
apply plugin: "java" apply plugin: "java"
sourceCompatibility = 1.8 sourceCompatibility = 1.8
sourceSets.main.java.srcDirs = [ "src/main/java/" ] sourceSets.main.java.srcDirs = ["src/main/java/"]
sourceSets.main.resources.srcDirs = [ "src/main/resources/" ] sourceSets.main.resources.srcDirs = ["src/main/resources/"]

View File

@@ -1,19 +1,43 @@
package io.anuke.annotations; package io.anuke.annotations;
import java.lang.annotation.ElementType; import java.lang.annotation.*;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class Annotations{ public class Annotations{
/** Marks a class as serializable.*/ @Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface Nullable{
}
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface NonNull{
}
/** Marks a class as serializable. */
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface Serialize{ public @interface Serialize{
} }
/** Marks a class as a special value type struct. Class name must end in 'Struct'. */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Struct{
}
/** Marks a field of a struct. Optional. */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface StructField{
/** Size of a struct field in bits. Not valid on booleans or floating point numbers. */
int value();
}
public enum PacketPriority{ public enum PacketPriority{
/** Gets put in a queue and processed if not connected. */ /** Gets put in a queue and processed if not connected. */
normal, normal,

View File

@@ -1,7 +1,5 @@
package io.anuke.annotations; package io.anuke.annotations;
import io.anuke.annotations.MethodEntry;
import java.util.ArrayList; import java.util.ArrayList;
/** Represents a class witha list method entries to include in it. */ /** Represents a class witha list method entries to include in it. */

View File

@@ -1,8 +1,6 @@
package io.anuke.annotations; package io.anuke.annotations;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.*;
import io.anuke.annotations.Annotations.PacketPriority;
import io.anuke.annotations.Annotations.Variant;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.ExecutableElement;

View File

@@ -1,18 +1,13 @@
package io.anuke.annotations; package io.anuke.annotations;
import com.squareup.javapoet.FieldSpec; import com.squareup.javapoet.*;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.TypeSpec;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.annotations.IOFinder.ClassSerializer; import io.anuke.annotations.IOFinder.ClassSerializer;
import javax.annotation.processing.*; import javax.annotation.processing.*;
import javax.lang.model.SourceVersion; import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element; import javax.lang.model.element.*;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -21,13 +16,15 @@ import java.util.stream.Collectors;
/** The annotation processor for generating remote method call code. */ /** The annotation processor for generating remote method call code. */
@SupportedSourceVersion(SourceVersion.RELEASE_8) @SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes({ @SupportedAnnotationTypes({
"io.anuke.annotations.Annotations.Remote", "io.anuke.annotations.Annotations.Remote",
"io.anuke.annotations.Annotations.WriteClass", "io.anuke.annotations.Annotations.WriteClass",
"io.anuke.annotations.Annotations.ReadClass", "io.anuke.annotations.Annotations.ReadClass",
}) })
public class RemoteMethodAnnotationProcessor extends AbstractProcessor{ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
/** Maximum size of each event packet. */ /** Maximum size of each event packet. */
public static final int maxPacketSize = 4096; public static final int maxPacketSize = 4096;
/** Warning on top of each autogenerated file. */
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
/** Name of the base package to put all the generated classes. */ /** Name of the base package to put all the generated classes. */
private static final String packageName = "io.anuke.mindustry.gen"; private static final String packageName = "io.anuke.mindustry.gen";
@@ -35,7 +32,7 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
private static final String readServerName = "RemoteReadServer"; private static final String readServerName = "RemoteReadServer";
/** Name of class that handles reading and invoking packets on the client. */ /** Name of class that handles reading and invoking packets on the client. */
private static final String readClientName = "RemoteReadClient"; private static final String readClientName = "RemoteReadClient";
/**Simple class name of generated class name.*/ /** Simple class name of generated class name. */
private static final String callLocation = "Call"; private static final String callLocation = "Call";
/** Processing round number. */ /** Processing round number. */
@@ -107,15 +104,13 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
ClassEntry clas = new ClassEntry(callLocation); ClassEntry clas = new ClassEntry(callLocation);
classMap.put(callLocation, clas); classMap.put(callLocation, clas);
classes.add(clas); classes.add(clas);
Utils.messager.printMessage(Kind.NOTE, "Generating class '" + clas.name + "'.");
} }
ClassEntry entry = classMap.get(callLocation); ClassEntry entry = classMap.get(callLocation);
//create and add entry //create and add entry
MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(), MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(),
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement) element, annotation.priority()); annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement)element, annotation.priority());
entry.methods.add(method); entry.methods.add(method);
methods.add(method); methods.add(method);
@@ -138,6 +133,7 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
//create class for storing unique method hash //create class for storing unique method hash
TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC); TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC);
hashBuilder.addJavadoc(autogenWarning);
hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL) hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL)
.initializer("$1L", Objects.hash(methods)).build()); .initializer("$1L", Objects.hash(methods)).build());

View File

@@ -2,12 +2,8 @@ package io.anuke.annotations;
import com.squareup.javapoet.*; import com.squareup.javapoet.*;
import io.anuke.annotations.IOFinder.ClassSerializer; import io.anuke.annotations.IOFinder.ClassSerializer;
import io.anuke.annotations.MethodEntry;
import io.anuke.annotations.Utils;
import javax.lang.model.element.Modifier; import javax.lang.model.element.*;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
@@ -27,8 +23,7 @@ public class RemoteReadGenerator{
/** /**
* Generates a class for reading remote invoke packets. * Generates a class for reading remote invoke packets.
* * @param entries List of methods to use.
* @param entries List of methods to use/
* @param className Simple target class name. * @param className Simple target class name.
* @param packageName Full target package name. * @param packageName Full target package name.
* @param needsPlayer Whether this read method requires a reference to the player sender. * @param needsPlayer Whether this read method requires a reference to the player sender.
@@ -37,6 +32,7 @@ public class RemoteReadGenerator{
throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException{ throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException{
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
//create main method builder //create main method builder
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("readPacket") MethodSpec.Builder readMethod = MethodSpec.methodBuilder("readPacket")
@@ -51,7 +47,7 @@ public class RemoteReadGenerator{
Constructor<TypeName> cons = TypeName.class.getDeclaredConstructor(String.class); Constructor<TypeName> cons = TypeName.class.getDeclaredConstructor(String.class);
cons.setAccessible(true); cons.setAccessible(true);
TypeName playerType = cons.newInstance("io.anuke.mindustry.entities.Player"); TypeName playerType = cons.newInstance("io.anuke.mindustry.entities.type.Player");
//add player parameter //add player parameter
readMethod.addParameter(playerType, "player"); readMethod.addParameter(playerType, "player");
} }
@@ -116,7 +112,7 @@ public class RemoteReadGenerator{
//execute the relevant method before the forward //execute the relevant method before the forward
//if it throws a ValidateException, the method won't be forwarded //if it throws a ValidateException, the method won't be forwarded
readBlock.addStatement("$N." + entry.element.getSimpleName() + "(" + varResult.toString() + ")", ((TypeElement) entry.element.getEnclosingElement()).getQualifiedName().toString()); readBlock.addStatement("$N." + entry.element.getSimpleName() + "(" + varResult.toString() + ")", ((TypeElement)entry.element.getEnclosingElement()).getQualifiedName().toString());
//call forwarded method, don't forward on the client reader //call forwarded method, don't forward on the client reader
if(entry.forward && entry.where.isServer && needsPlayer){ if(entry.forward && entry.where.isServer && needsPlayer){

View File

@@ -4,10 +4,7 @@ import com.squareup.javapoet.*;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.IOFinder.ClassSerializer; import io.anuke.annotations.IOFinder.ClassSerializer;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.*;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -29,6 +26,7 @@ public class RemoteWriteGenerator{
for(ClassEntry entry : entries){ for(ClassEntry entry : entries){
//create builder //create builder
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(entry.name).addModifiers(Modifier.PUBLIC); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(entry.name).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
//add temporary write buffer //add temporary write buffer
classBuilder.addField(FieldSpec.builder(ByteBuffer.class, "TEMP_BUFFER", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL) classBuilder.addField(FieldSpec.builder(ByteBuffer.class, "TEMP_BUFFER", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL)
@@ -79,7 +77,7 @@ public class RemoteWriteGenerator{
return; return;
} }
if(!elem.getParameters().get(0).asType().toString().equals("io.anuke.mindustry.entities.Player")){ if(!elem.getParameters().get(0).asType().toString().equals("io.anuke.mindustry.entities.type.Player")){
Utils.messager.printMessage(Kind.ERROR, "Client invoke methods should have a first parameter of type Player.", elem); Utils.messager.printMessage(Kind.ERROR, "Client invoke methods should have a first parameter of type Player.", elem);
return; return;
} }
@@ -108,7 +106,7 @@ public class RemoteWriteGenerator{
for(VariableElement var : elem.getParameters()){ for(VariableElement var : elem.getParameters()){
//special case: calling local-only methods uses the local player //special case: calling local-only methods uses the local player
if(index == 0 && methodEntry.where == Loc.client){ if(index == 0 && methodEntry.where == Loc.client){
results.append("io.anuke.mindustry.Vars.players[0]"); results.append("io.anuke.mindustry.Vars.player");
}else{ }else{
results.append(var.getSimpleName()); results.append(var.getSimpleName());
} }
@@ -118,7 +116,7 @@ public class RemoteWriteGenerator{
//add the statement to call it //add the statement to call it
method.addStatement("$N." + elem.getSimpleName() + "(" + results.toString() + ")", method.addStatement("$N." + elem.getSimpleName() + "(" + results.toString() + ")",
((TypeElement) elem.getEnclosingElement()).getQualifiedName().toString()); ((TypeElement)elem.getEnclosingElement()).getQualifiedName().toString());
if(methodEntry.local != Loc.both){ if(methodEntry.local != Loc.both){
method.endControlFlow(); method.endControlFlow();
@@ -129,7 +127,7 @@ public class RemoteWriteGenerator{
method.beginControlFlow("if(" + getCheckString(methodEntry.where) + ")"); method.beginControlFlow("if(" + getCheckString(methodEntry.where) + ")");
//add statement to create packet from pool //add statement to create packet from pool
method.addStatement("$1N packet = $2N.obtain($1N.class, $1N::new)", "io.anuke.mindustry.net.Packets.InvokePacket", "io.anuke.ucore.util.Pooling"); method.addStatement("$1N packet = $2N.obtain($1N.class, $1N::new)", "io.anuke.mindustry.net.Packets.InvokePacket", "io.anuke.arc.util.pooling.Pools");
//assign buffer //assign buffer
method.addStatement("packet.writeBuffer = TEMP_BUFFER"); method.addStatement("packet.writeBuffer = TEMP_BUFFER");
//assign priority //assign priority

View File

@@ -5,13 +5,10 @@ import io.anuke.annotations.Annotations.Serialize;
import javax.annotation.processing.*; import javax.annotation.processing.*;
import javax.lang.model.SourceVersion; import javax.lang.model.SourceVersion;
import javax.lang.model.element.Modifier; import javax.lang.model.element.*;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.util.ElementFilter; import javax.lang.model.util.ElementFilter;
import java.io.DataInput; import java.io.*;
import java.io.DataOutput; import java.lang.reflect.Field;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -20,7 +17,7 @@ import java.util.Set;
"io.anuke.annotations.Annotations.Serialize" "io.anuke.annotations.Annotations.Serialize"
}) })
public class SerializeAnnotationProcessor extends AbstractProcessor{ public class SerializeAnnotationProcessor extends AbstractProcessor{
/**Target class name.*/ /** Target class name. */
private static final String className = "Serialization"; private static final String className = "Serialization";
/** Name of the base package to put all the generated classes. */ /** Name of the base package to put all the generated classes. */
private static final String packageName = "io.anuke.mindustry.gen"; private static final String packageName = "io.anuke.mindustry.gen";
@@ -45,35 +42,61 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
Set<TypeElement> elements = ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Serialize.class)); Set<TypeElement> elements = ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Serialize.class));
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
TypeName jsonType = ClassName.bestGuess("io.anuke.arc.util.serialization.Json");
TypeName jsonValueType = ClassName.bestGuess("io.anuke.arc.util.serialization.JsonValue");
TypeName ubJsonWriterType = ClassName.bestGuess("io.anuke.arc.util.serialization.UBJsonWriter");
TypeName ubJsonReaderType = ClassName.bestGuess("io.anuke.arc.util.serialization.UBJsonReader");
classBuilder.addField(jsonType, "bjson", Modifier.STATIC, Modifier.PRIVATE);
classBuilder.addField(ubJsonReaderType, "bjsonReader", Modifier.STATIC, Modifier.PRIVATE);
classBuilder.addStaticBlock(CodeBlock.builder()
.addStatement("bjson = new " + jsonType + "()")
.addStatement("bjsonReader = new " + ubJsonReaderType + "()")
.build());
for(TypeElement elem : elements){ for(TypeElement elem : elements){
TypeName type = TypeName.get(elem.asType()); TypeName type = TypeName.get(elem.asType());
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("") TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get( .addSuperinterface(ParameterizedTypeName.get(
ClassName.bestGuess("io.anuke.ucore.io.TypeSerializer"), type)); ClassName.bestGuess("io.anuke.arc.Settings.TypeSerializer"), type));
MethodSpec.Builder writeMethod = MethodSpec.methodBuilder("write") MethodSpec.Builder writeMethod = MethodSpec.methodBuilder("write")
.returns(void.class) .returns(void.class)
.addParameter(DataOutput.class, "stream") .addParameter(DataOutput.class, "stream")
.addParameter(type, "object") .addParameter(type, "object")
.addAnnotation(Override.class)
.addException(IOException.class) .addException(IOException.class)
.addModifiers(Modifier.PUBLIC); .addModifiers(Modifier.PUBLIC);
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("read") MethodSpec.Builder readMethod = MethodSpec.methodBuilder("read")
.returns(type) .returns(type)
.addParameter(DataInput.class, "stream") .addParameter(DataInput.class, "stream")
.addAnnotation(Override.class)
.addException(IOException.class) .addException(IOException.class)
.addModifiers(Modifier.PUBLIC); .addModifiers(Modifier.PUBLIC);
MethodSpec.Builder jsonWriteMethod = MethodSpec.methodBuilder("write" + simpleTypeName + "Json")
.returns(void.class)
.addParameter(jsonType, "json")
.addParameter(type, "object")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
MethodSpec.Builder jsonReadMethod = MethodSpec.methodBuilder("read" + simpleTypeName + "Json")
.returns(type)
.addParameter(jsonValueType, "value")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
readMethod.addStatement("$L object = new $L()", type, type); readMethod.addStatement("$L object = new $L()", type, type);
jsonReadMethod.addStatement("$L object = new $L()", type, type);
List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem)); List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem));
for(VariableElement field : fields){ for(VariableElement field : fields){
if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE)) continue; if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE))
continue;
String name = field.getSimpleName().toString(); String name = field.getSimpleName().toString();
String typeName = Utils.typeUtils.erasure(field.asType()).toString().replace('$', '.'); String typeName = Utils.typeUtils.erasure(field.asType()).toString().replace('$', '.');
@@ -82,18 +105,57 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
if(field.asType().getKind().isPrimitive()){ if(field.asType().getKind().isPrimitive()){
writeMethod.addStatement("stream.write" + capName + "(object." + name + ")"); writeMethod.addStatement("stream.write" + capName + "(object." + name + ")");
readMethod.addStatement("object." + name + "= stream.read" + capName + "()"); readMethod.addStatement("object." + name + "= stream.read" + capName + "()");
jsonWriteMethod.addStatement("json.writeValue(\"" + name + "\", object." + name + ")");
jsonReadMethod.addStatement("if(value.has(\"" + name + "\")) object." + name + "= value.get" + capName + "(\"" + name + "\")");
}else{ }else{
writeMethod.addStatement("io.anuke.ucore.core.Settings.getSerializer(" + typeName+ ".class).write(stream, object." + name + ")"); writeMethod.addStatement("io.anuke.arc.Core.settings.getSerializer(" + typeName + ".class).write(stream, object." + name + ")");
readMethod.addStatement("object." + name + " = (" +typeName+")io.anuke.ucore.core.Settings.getSerializer(" + typeName+ ".class).read(stream)"); readMethod.addStatement("object." + name + " = (" + typeName + ")io.anuke.arc.Core.settings.getSerializer(" + typeName + ".class).read(stream)");
} }
} }
readMethod.addStatement("return object"); readMethod.addStatement("return object");
jsonReadMethod.addStatement("return object");
serializer.addMethod(writeMethod.build()); serializer.addMethod(writeMethod.build());
serializer.addMethod(readMethod.build()); serializer.addMethod(readMethod.build());
method.addStatement("io.anuke.ucore.core.Settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build()); method.addStatement("io.anuke.arc.Core.settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build());
name(writeMethod, "write" + simpleTypeName);
name(readMethod, "read" + simpleTypeName);
writeMethod.addModifiers(Modifier.STATIC);
readMethod.addModifiers(Modifier.STATIC);
classBuilder.addMethod(writeMethod.build());
classBuilder.addMethod(readMethod.build());
classBuilder.addMethod(jsonWriteMethod.build());
classBuilder.addMethod(jsonReadMethod.build());
MethodSpec.Builder binaryJsonWriteMethod = MethodSpec.methodBuilder("write" + simpleTypeName + "StreamJson")
.returns(void.class)
.addParameter(DataOutput.class, "stream")
.addParameter(type, "object")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addStatement("java.io.StringWriter output = new java.io.StringWriter()")
.addStatement("bjson.setWriter(output)")
.addStatement("bjson.writeObjectStart(" + type + ".class, " + type + ".class)")
.addStatement("write" + simpleTypeName + "Json(bjson, object)")
.addStatement("bjson.writeObjectEnd()")
.addStatement("stream.writeUTF(output.toString())");
MethodSpec.Builder binaryJsonReadMethod = MethodSpec.methodBuilder("read" + simpleTypeName + "StreamJson")
.returns(type)
.addParameter(DataInput.class, "stream")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addStatement("return read" + simpleTypeName + "Json(bjson.fromJson(null, stream.readUTF()))");
classBuilder.addMethod(binaryJsonWriteMethod.build());
classBuilder.addMethod(binaryJsonReadMethod.build());
} }
classBuilder.addMethod(method.build()); classBuilder.addMethod(method.build());
@@ -107,4 +169,14 @@ public class SerializeAnnotationProcessor extends AbstractProcessor{
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
static void name(MethodSpec.Builder builder, String name){
try{
Field field = builder.getClass().getDeclaredField("name");
field.setAccessible(true);
field.set(builder, name);
}catch(Exception e){
throw new RuntimeException(e);
}
}
} }

View File

@@ -0,0 +1,226 @@
package io.anuke.annotations;
import com.squareup.javapoet.*;
import io.anuke.annotations.Annotations.Struct;
import io.anuke.annotations.Annotations.StructField;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
import javax.lang.model.type.TypeKind;
import javax.lang.model.util.ElementFilter;
import javax.tools.Diagnostic.Kind;
import java.util.List;
import java.util.Set;
/**
* Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size.
* It would be nice if Java didn't make crazy hacks like this necessary.
*/
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes({
"io.anuke.annotations.Annotations.Struct"
})
public class StructAnnotationProcessor extends AbstractProcessor{
/** Name of the base package to put all the generated classes. */
private static final String packageName = "io.anuke.mindustry.gen";
private int round;
@Override
public synchronized void init(ProcessingEnvironment processingEnv){
super.init(processingEnv);
//put all relevant utils into utils class
Utils.typeUtils = processingEnv.getTypeUtils();
Utils.elementUtils = processingEnv.getElementUtils();
Utils.filer = processingEnv.getFiler();
Utils.messager = processingEnv.getMessager();
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round++ != 0) return false; //only process 1 round
try{
Set<TypeElement> elements = ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Struct.class));
for(TypeElement elem : elements){
if(!elem.getSimpleName().toString().endsWith("Struct")){
Utils.messager.printMessage(Kind.ERROR, "All classes annotated with @Struct must have their class names end in 'Struct'.", elem);
continue;
}
String structName = elem.getSimpleName().toString().substring(0, elem.getSimpleName().toString().length() - "Struct".length());
String structParam = structName.toLowerCase();
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(structName)
.addModifiers(Modifier.FINAL, Modifier.PUBLIC);
try{
List<VariableElement> variables = ElementFilter.fieldsIn(elem.getEnclosedElements());
int structSize = variables.stream().mapToInt(StructAnnotationProcessor::varSize).sum();
int structTotalSize = (structSize <= 8 ? 8 : structSize <= 16 ? 16 : structSize <= 32 ? 32 : 64);
if(variables.size() == 0){
Utils.messager.printMessage(Kind.ERROR, "making a struct with no fields is utterly pointles.", elem);
continue;
}
//obtain type which will be stored
Class<?> structType = typeForSize(structSize);
//[constructor] get(fields...) : structType
MethodSpec.Builder constructor = MethodSpec.methodBuilder("get")
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType);
StringBuilder cons = new StringBuilder();
StringBuilder doc = new StringBuilder();
doc.append("Bits used: ").append(structSize).append(" / ").append(structTotalSize).append("\n");
int offset = 0;
for(VariableElement var : variables){
int size = varSize(var);
TypeName varType = TypeName.get(var.asType());
String varName = var.getSimpleName().toString();
//add val param to constructor
constructor.addParameter(varType, varName);
//[get] field(structType) : fieldType
MethodSpec.Builder getter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(varType)
.addParameter(structType, structParam);
//[set] field(structType, fieldType) : structType
MethodSpec.Builder setter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType)
.addParameter(structType, structParam).addParameter(varType, "value");
//[getter]
if(varType == TypeName.BOOLEAN){
//bools: single bit, is simplified
getter.addStatement("return ($L & (1L << $L)) != 0", structParam, offset);
}else if(varType == TypeName.FLOAT){
//floats: need conversion
getter.addStatement("return Float.intBitsToFloat((int)(($L >>> $L) & $L))", structParam, offset, bitString(size, structTotalSize));
}else{
//bytes, shorts, chars, ints
getter.addStatement("return ($T)(($L >>> $L) & $L)", varType, structParam, offset, bitString(size, structTotalSize));
}
//[setter] + [constructor building]
if(varType == TypeName.BOOLEAN){
cons.append(" | (").append(varName).append(" ? ").append("1L << ").append(offset).append("L : 0)");
//bools: single bit, needs special case to clear things
setter.beginControlFlow("if(value)");
setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset);
setter.nextControlFlow("else");
setter.addStatement("return ($T)(($L & ~(1L << $LL)) | (1L << $LL))", structType, structParam, offset, offset);
setter.endControlFlow();
}else if(varType == TypeName.FLOAT){
cons.append(" | (").append("(").append(structType).append(")").append("Float.floatToIntBits(").append(varName).append(") << ").append(offset).append("L)");
//floats: need conversion
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}else{
cons.append(" | (((").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)").append(" & ").append(bitString(offset, size, structTotalSize)).append(")");
//bytes, shorts, chars, ints
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}
doc.append("<br> ").append(varName).append(" [").append(offset).append("..").append(size + offset).append("]\n");
//add finished methods
classBuilder.addMethod(getter.build());
classBuilder.addMethod(setter.build());
offset += size;
}
classBuilder.addJavadoc(doc.toString());
//add constructor final statement + add to class and build
constructor.addStatement("return ($T)($L)", structType, cons.toString().substring(3));
classBuilder.addMethod(constructor.build());
JavaFile.builder(packageName, classBuilder.build()).build().writeTo(Utils.filer);
}catch(IllegalArgumentException e){
e.printStackTrace();
Utils.messager.printMessage(Kind.ERROR, e.getMessage(), elem);
}
}
return true;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
static String bitString(int offset, int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < offset; i++) builder.append('0');
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size - offset; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static String bitString(int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static int varSize(VariableElement var) throws IllegalArgumentException{
if(!var.asType().getKind().isPrimitive()){
throw new IllegalArgumentException("All struct fields must be primitives: " + var);
}
StructField an = var.getAnnotation(StructField.class);
if(var.asType().getKind() == TypeKind.BOOLEAN && an != null && an.value() != 1){
throw new IllegalArgumentException("Booleans can only be one bit long... why would you do this?");
}
if(var.asType().getKind() == TypeKind.FLOAT && an != null && an.value() != 32){
throw new IllegalArgumentException("Float size can't be changed. Very sad.");
}
return an == null ? typeSize(var.asType().getKind()) : an.value();
}
static Class<?> typeForSize(int size) throws IllegalArgumentException{
if(size <= 8){
return byte.class;
}else if(size <= 16){
return short.class;
}else if(size <= 32){
return int.class;
}else if(size <= 64){
return long.class;
}
throw new IllegalArgumentException("Too many fields, must fit in 64 bits. Curent size: " + size);
}
/** returns a type's element size in bits. */
static int typeSize(TypeKind kind) throws IllegalArgumentException{
switch(kind){
case BOOLEAN:
return 1;
case BYTE:
return 8;
case SHORT:
return 16;
case FLOAT:
case CHAR:
case INT:
return 32;
default:
throw new IllegalArgumentException("Invalid type kind: " + kind + ". Note that doubles and longs are not supported.");
}
}
}

View File

@@ -14,7 +14,7 @@ public class Utils{
public static Messager messager; public static Messager messager;
public static String getMethodName(Element element){ public static String getMethodName(Element element){
return ((TypeElement) element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName(); return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName();
} }
public static boolean isPrimitive(String type){ public static boolean isPrimitive(String type){

View File

@@ -1,2 +1,3 @@
io.anuke.annotations.RemoteMethodAnnotationProcessor io.anuke.annotations.RemoteMethodAnnotationProcessor
io.anuke.annotations.SerializeAnnotationProcessor io.anuke.annotations.SerializeAnnotationProcessor
io.anuke.annotations.StructAnnotationProcessor

View File

@@ -1,31 +1,63 @@
buildscript { buildscript{
repositories { repositories{
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
google() google()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter() jcenter()
} }
dependencies {
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0' dependencies{
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8" classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.6'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.9"
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
} }
} }
allprojects { allprojects{
apply plugin: "eclipse"
apply plugin: "idea" apply plugin: "idea"
version = 'release' version = 'release'
ext { ext{
versionNumber = '4.0' versionNumber = '4'
versionModifier = 'alpha' versionModifier = 'beta'
versionType = 'official' if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.8' gdxVersion = '1.9.9'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.6'
uCoreVersion = 'eb1503dfb786f5f727bdb4b6a302718490444335' arcHash = null
debugged = {
return new File(projectDir.parent, '../debug').exists() && !project.hasProperty("release")
}
localArc = {
return (!project.hasProperty("release")) && new File(projectDir.parent, '../Arc').exists()
}
getArcHash = {
//get latest commit hash from gtihub since JITPack's '-snapshot' version doesn't work correctly
if(arcHash == null){
try{
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
}catch(e){
e.printStackTrace()
arcHash = "-SNAPSHOT"
}
}
return arcHash
}
arcModule = { String name ->
if(localArc()){
return project(":Arc:$name")
}else{
//skip to last submodule
if(name.contains(':')) name = name.split(':').last()
return "com.github.Anuken.Arc:$name:${getArcHash()}"
}
}
getVersionString = { getVersionString = {
String buildVersion = getBuildVersion() String buildVersion = getBuildVersion()
@@ -44,7 +76,7 @@ allprojects {
generateLocales = { generateLocales = {
def output = 'en\n' def output = 'en\n'
def bundles = new File(project(':core').projectDir, 'assets/bundles/') def bundles = new File(project(':core').projectDir, 'assets/bundles/')
bundles.listFiles().each { other -> bundles.listFiles().each{ other ->
if(other.name == "bundle.properties") return if(other.name == "bundle.properties") return
output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n" output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n"
} }
@@ -57,10 +89,10 @@ allprojects {
try{ try{
pfile.createNewFile() pfile.createNewFile()
}catch (Exception ignored){} }catch(Exception ignored){
}
if(pfile.exists()) {
if(pfile.exists()){
props.load(new FileInputStream(pfile)) props.load(new FileInputStream(pfile))
String buildid = getBuildVersion() String buildid = getBuildVersion()
@@ -75,155 +107,158 @@ allprojects {
} }
} }
repositories { repositories{
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" } maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
maven { url 'https://jitpack.io' } maven{ url 'https://jitpack.io' }
jcenter()
} }
} }
project(":desktop") { project(":desktop"){
apply plugin: "java" apply plugin: "java"
dependencies { dependencies{
compile project(":core") compile project(":core")
compile project(":kryonet") compile project(":net")
if(new File(projectDir.parent, '../debug').exists() && System.properties["release"] == null) compile project(":debug")
if(debugged()) compile project(":debug")
compile "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-controllers-lwjgl3:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0'
compile arcModule("backends:backend-lwjgl3")
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.2'
} }
} }
project(":ios") { project(":ios"){
apply plugin: "java" apply plugin: "java"
apply plugin: "robovm" apply plugin: "robovm"
task copyGen{ task incrementConfig{
copy{ def vfile = file('robovm.properties')
from ("core/build/classes/java/main/io/anuke/mindustry/gen/"){
include "**/*.java" def props = new Properties()
if(vfile.exists()){
props.load(new FileInputStream(vfile))
} }
into "ios/src/io/anuke/mindustry/gen" props['app.id'] = 'io.anuke.mindustry'
props['app.version'] = '4.0'
props['app.mainclass'] = 'io.anuke.mindustry.IOSLauncher'
props['app.executable'] = 'IOSLauncher'
props['app.name'] = 'Mindustry'
props['app.build'] = (!props.containsKey("app.build") ? 40 : props['app.build'].toInteger() + 1) + ""
props.store(vfile.newWriter(), null)
} }
doFirst{ dependencies{
delete{
delete "ios/src/io/anuke/mindustry/gen/"
}
}
}
build.dependsOn(copyGen)
dependencies {
compile project(":core") compile project(":core")
implementation project(":kryonet") compile project(":net")
compileOnly project(":annotations")
compile arcModule("backends:backend-robovm")
compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion" compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
compile "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion" compile "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios" compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"
} }
} }
project(":core") { project(":core"){
apply plugin: "java" apply plugin: "java"
task finish { task finish{
generateLocales() generateLocales()
} }
dependencies { task cleanGen{
build.finalizedBy(finish) doFirst{
delete{
def comp = System.properties["release"] == null || System.properties["release"] == "false" delete "../core/src/io/anuke/mindustry/gen/"
if(!comp) println("Note: Compiling release build.") }
}
if(new File(projectDir.parent, '../uCore').exists() && comp){
compile project(":uCore")
}else{
compile "com.github.anuken:ucore:$uCoreVersion"
} }
if(new File(projectDir.parent, '../GDXGifRecorder').exists() && comp) { task copyGen{
compile project(":GDXGifRecorder") doLast{
copy{
from("../core/build/generated/sources/annotationProcessor/java/main/io/anuke/mindustry/gen"){
include "**/*.java"
} }
compile "com.badlogicgames.gdx:gdx:$gdxVersion" into "../core/src/io/anuke/mindustry/gen"
compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion" }
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" }
}
dependencies{
compileJava.dependsOn(cleanGen)
compileJava.finalizedBy(copyGen)
compile arcModule("arc-core")
compile arcModule("extensions:freetype")
compile arcModule("extensions:arcnet")
if(localArc() && debugged()) compile arcModule("extensions:recorder")
compileOnly project(":annotations") compileOnly project(":annotations")
annotationProcessor project(":annotations") annotationProcessor project(":annotations")
} }
} }
project(":server") { project(":server"){
apply plugin: "java" apply plugin: "java"
configurations { dependencies{
if(findProject(":android") != null){
compile.exclude module: android
}
}
dependencies {
compile project(":core") compile project(":core")
compile project(":kryonet") compile project(":net")
compile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion" compile arcModule("backends:backend-headless")
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
} }
} }
project(":tests"){ project(":tests"){
apply plugin: "java" apply plugin: "java"
dependencies { dependencies{
testImplementation project(":core") testImplementation project(":core")
testImplementation('org.junit.jupiter:junit-jupiter-api:5.1.0') testImplementation "org.junit.jupiter:junit-jupiter-params:5.3.1"
testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.1.0') testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
testImplementation "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1"
testImplementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile arcModule("backends:backend-headless")
} }
test { test{
useJUnitPlatform() useJUnitPlatform()
workingDir = new File("../core/assets") workingDir = new File("../core/assets")
} }
} }
project(":tools") { project(":tools"){
apply plugin: "java" apply plugin: "java"
dependencies { dependencies{
compile project(":core") compile project(":core")
} }
} }
project(":annotations") { project(":annotations"){
apply plugin: "java" apply plugin: "java"
dependencies { dependencies{
compile 'com.squareup:javapoet:1.11.0' compile 'com.squareup:javapoet:1.11.0'
} }
} }
project(":kryonet") { project(":net"){
apply plugin: "java" apply plugin: "java"
dependencies { dependencies{
compile project(":core") compile project(":core")
compile "org.lz4:lz4-java:1.4.1" compile "org.lz4:lz4-java:1.4.1"
compile 'com.github.Anuken:kryonet:53b10247b1'
compile 'com.github.Anuken:WaifUPnP:05eb46bc577fd7674596946ba288c96c0cedd893' compile 'com.github.Anuken:WaifUPnP:05eb46bc577fd7674596946ba288c96c0cedd893'
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 B

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 B

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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