Compare commits

...
611 Commits
Author SHA1 Message Date
Anuken 3d0b02ee23 Cleaned up enemy base walls 2018-09-03 22:12:46 -04:00
Anuken d7cfbfe6c8 Merge remote-tracking branch 'origin/master' 2018-09-03 21:51:18 -04:00
Anuken dc00e22f13 Fixed unit pads hiding in PvP / Fixed recipes not deselecting in menu 2018-09-03 21:51:13 -04:00
CrazyBearTR bcde481304 Update of the Turkish Translation Bundle (#212)
* Update of the Turkish Translation Bundle

Some words were wrong. Fixed in this version.

* Update bundle_tr.properties
2018-09-03 19:38:01 -04:00
Prosta4okua 5b1341e488 [Complete]Update bundle_uk_UA.properties (#211)
* 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-09-03 19:37:55 -04:00
Anuken 6ad70ceee3 Typo fix 2018-09-03 17:17:32 -04:00
Anuken 9c4d2f5490 Merge remote-tracking branch 'origin/master' 2018-09-03 17:04:16 -04:00
Anuken 6c5eff1143 Crash fix / Cleanup 2018-09-03 17:04:11 -04:00
Anuken a893767d0f Merge remote-tracking branch 'origin/master' 2018-09-03 16:22:29 -04:00
Anuken a4f240edc8 Fixed some high-FPS bugs 2018-09-03 16:22:24 -04:00
Anuken e0a94f694b Shader fix / Hail buff / Tau nerf / Turkish lower case fix 2018-09-03 15:57:06 -04:00
Anuken 8654f25a4f Bugfixes for GWT 2018-09-03 13:48:16 -04:00
Anuken e877310d85 Mech balancing / Less glitchy menu shader 2018-09-03 13:33:40 -04:00
Anuken bb59f45ba6 Crash fix 2018-09-03 10:29:44 -04:00
Anuken 3d4c2a2c20 Merge remote-tracking branch 'origin/master' 2018-09-03 09:56:18 -04:00
Anuken e36667cd08 Bugfixes 2018-09-03 09:56:14 -04:00
CrazyBearTR cebaa6949e Turkish language request (#210) 2018-09-03 09:55:04 -04:00
Anuken 019e22aff2 Fixed missile shield pierce 2018-09-03 09:07:59 -04:00
Anuken 5129e2ea73 Crash fixes 2018-09-03 09:02:16 -04:00
Anuken 3b63f60462 Fixed some junction issues / Improved server crash reporting 2018-09-02 22:40:23 -04:00
Anuken 5e29115c2e Fixed ship flight targeting / Fixed unit weapon sprite offset 2018-09-02 16:23:39 -04:00
Anuken 0b4b30286d Fixed bridge infinite capacity / Fixed crash 2018-09-02 15:19:54 -04:00
Anuken a01f64080d Fixed unit pads / Added chat log 2018-09-02 14:16:14 -04:00
Anuken d031351bc8 Merge remote-tracking branch 'origin/master' 2018-09-02 13:49:42 -04:00
Anuken 1d21d36253 Fixed font line height / Bundles updated / Changelog date 2018-09-02 13:49:38 -04:00
iczero 8d4cd72b41 Remove duplicate roundrobin properties in weapons (#207) 2018-09-02 13:34:24 -04:00
Anuken 46ab6d3476 Minor fix 2018-09-02 13:33:43 -04:00
Anuken 3fcf3cbf93 Merge remote-tracking branch 'origin/master' 2018-09-02 13:20:58 -04:00
Anuken ada912c69b Made group error message more specific 2018-09-02 13:20:51 -04:00
Prosta4okua e204b89eaf Update bundle_ru.properties (#206)
* Update bundle_ru.properties

* Update bundle_ru.properties
2018-09-02 13:20:40 -04:00
Anuken e903798fc2 Crash report fixes / Mobile mech fixes / Multiplayer fixes 2018-09-02 13:12:45 -04:00
Anuken 54497c43b6 Fixed mobile menu shader / Added 'old save' message for sectors 2018-09-02 11:46:47 -04:00
Anuken 99e54cc214 Fixed server connect crash 2018-09-02 11:22:05 -04:00
Anuken 56ae47cd8d Fixed server build error / Possible crash fix 2018-09-02 11:00:14 -04:00
Anuken 0fb336cf7b Balancing / Fixed bridge contamination 2018-09-02 10:46:24 -04:00
Anuken 469b3c0a94 Balance tweaks / Changed block liquid place-ability 2018-09-01 22:29:25 -04:00
Anuken d90d88c68b Menu shader / Sprite fixes 2018-09-01 20:16:49 -04:00
Anuken dcc061af3e New seed-based AI bases 2018-09-01 14:44:06 -04:00
Anuken a2960f5c50 Pathfind updates / Less reflection / Platform cleanup 2018-08-31 23:19:36 -04:00
Anuken 565f8a2b4d Merge branch 'reflectionless' of https://github.com/Anuken/Mindustry 2018-08-31 16:15:43 -04:00
Anuken 5cb50d57ec Reduced reflection usage / Improved event system 2018-08-31 16:14:14 -04:00
Anuken 522e19d4bf Updated discord URL 2018-08-31 15:40:32 -04:00
Anuken 0db7a78889 Merge remote-tracking branch 'origin/master' 2018-08-31 10:15:12 -04:00
Anuken 1ce3b40b4e Basic pathfinding implementations 2018-08-31 10:15:08 -04:00
Leone25 e633528a7a Update bundle_ita.properties (#205) 2018-08-31 09:24:26 -04:00
Anuken 6570b411d1 Merge remote-tracking branch 'origin/master' 2018-08-31 00:02:42 -04:00
Anuken ac9e774795 Added basic turret blob structures 2018-08-31 00:02:38 -04:00
Prosta4okua 8791747453 [Complete]Update bundle_ru.properties (#202)
* 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-08-30 23:52:41 -04:00
Anuken dda3afe9fa now with waifus 2018-08-30 21:39:27 -04:00
Anuken d4435f980c Fixed ability input conflicts 2018-08-30 18:30:05 -04:00
Anuken f29673a6e3 Made desktop selection rebindable 2018-08-30 16:46:41 -04:00
Anuken 9816bab151 Fixed build error 2018-08-30 09:58:18 -04:00
Anuken 5884c0bcb3 Merge branch 'crash-report-server' of https://github.com/Anuken/Mindustry 2018-08-30 09:23:10 -04:00
Anuken 96dc00beac Fixed carrying bug 2018-08-30 09:22:16 -04:00
Anuken febc1e53b6 Added dedicated server crash reports 2018-08-30 09:05:15 -04:00
Anuken 3e18fb3ca0 Final crash report system for desktop 2018-08-29 23:46:04 -04:00
Anuken 28b9de2e7a Moved reporting system to CoreBot; JSON-base reports 2018-08-29 22:54:15 -04:00
Anuken 9a41399178 Initial proof-of-concept for crash report server 2018-08-29 22:09:55 -04:00
Anuken db47b9a877 Minor tweaks 2018-08-29 16:19:34 -04:00
Anuken 7cdd7a3487 Merge remote-tracking branch 'origin/master' 2018-08-29 10:07:38 -04:00
Anuken 833f646903 Start of groundwork for dynamic bases 2018-08-29 10:07:34 -04:00
Senventise 35a85860b1 Add Simplified Chinese font and update translations (#204)
* update translation

* add simplified chinese font

* delete outdated font

* Update uiskin.json
2018-08-29 09:38:10 -04:00
Anuken 00f24dfb79 Balancing 2018-08-28 20:10:43 -04:00
Anuken 8c6ae2576d Fuse shot implemented 2018-08-28 19:00:29 -04:00
Anuken 5416ad33bd Basic fuse implementation 2018-08-28 13:10:49 -04:00
Anuken 1e25ba2d8e Implemented ammo types for cyclone 2018-08-28 12:12:08 -04:00
Anuken 8d08d25f5b Updated uCore 2018-08-28 09:02:38 -04:00
Anuken 802e7b12d0 Surge uses / Fixes, optimizations / Turret implementation base 2018-08-27 23:50:23 -04:00
Anuken 9b57550f3d Worldgen changes 2018-08-27 16:04:55 -04:00
Anuken 28c13c8e52 Fixed dropping items into enemy blocks 2018-08-27 13:56:20 -04:00
Anuken d8f9059989 Player bufixes / Balancing 2018-08-27 13:46:33 -04:00
Anuken ac9d37d038 Core player shield / Bundles updated 2018-08-27 13:30:34 -04:00
Anuken 6323c13704 Mech descriptions / Balancing / Crash fix / Physics fix 2018-08-27 09:52:33 -04:00
Anuken 2f7f16daff Added mend projector 2018-08-26 23:03:02 -04:00
Anuken 9059238aee Fixed lancer turning incorrectly / Buffed lancer 2018-08-26 20:02:29 -04:00
Anuken 2677c0e752 Merge remote-tracking branch 'origin/master' 2018-08-26 17:39:37 -04:00
Anuken ba80770564 Disabled snapshot debug 2018-08-26 17:39:32 -04:00
Anuken 06ad35d934 Fixed jittery snapshots / Fixed misaligned unit bullets 2018-08-26 17:38:22 -04:00
Anuken 864c4f6bc3 Added custom port support 2018-08-26 10:25:23 -04:00
iczero f5f0f02abe Fix UUID generation on desktop (#203) 2018-08-26 09:12:16 -04:00
Anuken 19979dec55 Fixed multiplayer crash 2018-08-25 23:25:04 -04:00
Anuken 926e61b7cc Initial test 2018-08-25 20:43:36 -04:00
Anuken 15378d3267 Removed incorrect health values 2018-08-25 20:25:09 -04:00
Anuken 33fcfda1a0 Added alloy smelter 2018-08-25 16:50:42 -04:00
Anuken 74d7b43d0f Fixed game-over state / Recipe balance 2018-08-25 15:35:35 -04:00
Anuken e392c8f0e6 All reconstructors implemented / Balancing 2018-08-25 14:52:46 -04:00
Anuken f60ba8587f Balancing / Reconstructors require power 2018-08-25 10:37:05 -04:00
Anuken 86a7f837cd Implemented halberd 2018-08-25 09:55:08 -04:00
Anuken 9465497481 Implemented trident 2018-08-24 23:32:08 -04:00
Anuken 8c3f3ac304 Javelin abilities 2018-08-24 17:53:54 -04:00
Anuken 88ba8f6f55 Ignored gif recorder images 2018-08-24 15:52:51 -04:00
Anuken c64459dbf4 Fixed alpha drones dying on load 2018-08-24 15:52:05 -04:00
Anuken 8b0bbffe27 Merge remote-tracking branch 'origin/mechs-balance-altfire' into mechs-balance-altfire
# Conflicts:
#	core/src/io/anuke/mindustry/content/Mechs.java
2018-08-24 13:58:32 -04:00
Anuken 94805259d7 Added alpha drone swarm ability 2018-08-24 13:54:53 -04:00
Anuken e796d44f92 Tau idle regen / Fixed non-synced alts / Fixed units not retreating 2018-08-24 10:19:56 -04:00
Anuken 5e8686db77 Removed Upgrade class / Buffed units / Bugfixes 2018-08-24 09:39:02 -04:00
Anuken ee835f6514 Merge branch 'master' of https://github.com/Anuken/Mindustry into mechs-balance-altfire
# Conflicts:
#	core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java
2018-08-24 08:57:19 -04:00
Anuken 5de61aaed3 Unlockable mechs 2018-08-24 08:55:19 -04:00
Anuken 6613e4ec42 Generaor changes 2018-08-23 23:26:45 -04:00
Anuken 206314f4f4 Implemented lightning tile damage 2018-08-23 09:09:54 -04:00
Anuken 8f12c3f1a8 Fixed lightning / Implemented delta ability and gun 2018-08-23 09:02:09 -04:00
Anuken 4c224d0b9c Balancing, keybinds 2018-08-22 23:45:01 -04:00
Anuken 30dd089c8b Tau mech implemented 2018-08-22 23:29:14 -04:00
Anuken 8d9ec206bf Fixed mech hovering 2018-08-22 17:48:44 -04:00
Anuken 8319288776 Omega mech ability / Rendering fix 2018-08-22 16:13:26 -04:00
Anuken 60bf36613f Merge remote-tracking branch 'origin/master' 2018-08-22 12:42:30 -04:00
Anuken a75994cbbf Updates to iOS build 2018-08-22 12:42:19 -04:00
Anuken e1f7c7b03d Omega mech implementation 2018-08-21 22:40:39 -04:00
Anuken bb7e2c7cee Commit #2000 2018-08-21 19:01:35 -04:00
Anuken 69eb6469f9 Merge branch 'continuous-servers' of https://github.com/Anuken/Mindustry 2018-08-21 18:56:32 -04:00
Anuken d2eb3be7f8 Merge remote-tracking branch 'origin/master' 2018-08-21 18:54:15 -04:00
Anuken 5aa76639d1 Changed noise octaves with non-detailed worldgen 2018-08-21 18:54:11 -04:00
Anuken 3bf72a1af6 Forced hovering while on block 2018-08-21 17:28:35 -04:00
Anuken b745d88299 Player State reset / Improved messages / Round end time 2018-08-21 17:23:17 -04:00
Anuken 3aedc07ad0 Initial continuous server implementation 2018-08-21 16:37:57 -04:00
Anuken dbb164f4be Increased mech damage 2018-08-21 14:21:00 -04:00
Prosta4okua b0103d1ce3 [Complete]Update bundle_ru.properties (#199)
* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties
2018-08-21 13:27:20 -04:00
Prosta4okua 9c532047d3 [Complete]Update bundle_uk_UA.properties (#201)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2018-08-21 13:27:09 -04:00
Anuken 0003a58210 Added land effect / Cleanup 2018-08-21 13:25:04 -04:00
Anuken 34f2704dc7 Added ground mech flight 2018-08-21 12:22:49 -04:00
Anuken 0ddee379ca Added mode-specific respawn time 2018-08-21 10:56:06 -04:00
Anuken 6dcbe4fabb Added phase walls 2018-08-21 10:36:42 -04:00
Anuken 5dbb9fdf3f Final tweaks, ready to merge 2018-08-21 09:45:54 -04:00
Anuken 914fa3079d Per-mode no-build radius 2018-08-20 23:47:56 -04:00
Anuken 2e958d8d8f New team system / Prototype dedicated PvP gamemode 2018-08-20 23:45:27 -04:00
Anuken 7a5e61fd2e Fixed off-color stone floor blocks 2018-08-20 22:17:34 -04:00
Anuken 6a031d8f53 Nerfed wall health 25% 2018-08-20 22:13:29 -04:00
Anuken dc6f01c0d3 Merge branch 'resource-rework' of https://github.com/Anuken/Mindustry 2018-08-20 22:09:57 -04:00
Anuken 1cc8cbe8a8 Bundles updated / Updated mechanical drill sprite 2018-08-20 22:09:15 -04:00
Anuken 01ae8bec85 Turret sprite fixes 2018-08-20 21:30:37 -04:00
Anuken 258ab87f6b Palette swap / Blocks changed and renamed 2018-08-20 21:04:03 -04:00
Anuken 8ba2db6c58 Dense alloy / Compile errors fixed 2018-08-20 17:43:56 -04:00
Anuken a7599e85dc Merge remote-tracking branch 'origin/master' 2018-08-20 10:21:56 -04:00
Anuken 28389d698e Fixed editor fill freeze 2018-08-20 10:21:51 -04:00
Gureumi c47a220721 Update bundle_ko.properties (#198) 2018-08-20 09:21:13 -04:00
Anuken 69f7296baa Merge remote-tracking branch 'origin/master' 2018-08-19 22:49:39 -04:00
Anuken 855f56bb45 Crash fix 2018-08-19 22:49:35 -04:00
Anuken a79d072aaf More copper 2018-08-19 22:47:46 -04:00
iczero 467047a011 Fix typo (#197) 2018-08-19 22:46:41 -04:00
Leone25 0288daa39d Update bundle_ita.properties (#195) 2018-08-19 18:40:53 -04:00
Prosta4okua 3f075068a9 Update bundle_ru.properties (#196) 2018-08-19 18:40:43 -04:00
Anuken 278e7027f2 Bundles updated 2018-08-19 13:35:35 -04:00
Anuken 9d654c1f18 Copper added, carbide removed 2018-08-19 13:34:36 -04:00
JustYanns 279187d13b Update bundle_fr.properties [Complete] (#146)
* Update bundle_fr.properties

Few things translated in french.
I'll do more soon !!

* Update bundle_fr.properties V2

Update with comment of Math2128

* Update bundle_fr.properties V3

Few translations fixed

* Update bundle_fr.properties V4

•1 Thorium is the same in french and in english. 
•2 Carbide and cryofluid are not translatable !!
•3 Phase matter = "matière de Phase" doesn't sound good, I think we have to let the english word.
•4 Pyratite can be translated as "pyrrhotite" is it a good idea ?

* Update bundle_fr V5

Few translations fixed

* Update bundle_fr.properties V6 [Almost complete]

The french translation is almost finished, I will release the final translation soon.

* Update bundle_fr.properties [pre-release1]

Translation almost finished,
I just have 2 problems (see in the conversation)

* Update bundle_fr.properties  [pre-release2]

Translation almost finished
I just have 2 problems (see in the conversation)

* Update bundle_fr.properties [pre-release3]

Thank you to Math2128, for having helping me ;)

* Update bundle_fr.properties  [pre-release4]

Translations of Math2128's commit added
2018-08-19 13:34:17 -04:00
Anuken 360494f971 Fixed connect/disconnect message color tags 2018-08-19 10:31:25 -04:00
Anuken 81931eb536 Removed unnecessary tungsten references 2018-08-19 10:30:12 -04:00
Gureumi a2ef11eb0f Fix 'has connected' message + Add chat font (#194)
* Fix 'has connected' message

* Add chat font
2018-08-19 10:29:40 -04:00
Anuken b872252771 Removed unnecessary tungsten references 2018-08-18 23:02:10 -04:00
Leone25 b2c388276f Update bundle_ita.properties (#192) 2018-08-18 18:33:49 -04:00
Prosta4okua 178928f866 [Complete]Update bundle_uk_UA.properties (#188)
* 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

* 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-08-18 13:10:57 -04:00
Prosta4okua 7e548f9969 Update bundle_ru.properties (#191)
* Update bundle_ru.properties

* Update bundle_ru.properties
2018-08-18 13:10:43 -04:00
Anuken a60ce3c54c Merge branch 'master' of https://github.com/Anuken/Mindustry into resource-rework 2018-08-18 13:10:22 -04:00
Anuken 0f173bcc5a Increased blink frequency 2018-08-18 13:10:01 -04:00
Anuken 64dbe8312e Fixed merge issues 2018-08-18 13:07:54 -04:00
Anuken 7f443c71ae Merge remote-tracking branch 'origin/master' 2018-08-18 13:06:59 -04:00
Anuken 27276c025c Merge branch 'remove-ammo' of https://github.com/Anuken/Mindustry 2018-08-18 13:06:54 -04:00
Anuken e9d03c179c init() test 2018-08-18 12:19:20 -04:00
Uriel dec01c23a9 [Completed] Remaking spanish translation bundle (#187)
* started translating all the stuff

* translated more of the original english file

* translated more parts

* almost half of the file!

* MOREgit add .!

* Update bundle_es.properties

* completed

* forgot about these ones...
2018-08-18 08:57:42 -04:00
Anuken e0eb227ce5 Recipe init() method added 2018-08-17 22:49:45 -04:00
Anuken 20021c5b31 Fixed 1-character names being valid / Fixed collideLine with tiles 2018-08-17 20:21:49 -04:00
Anuken f8d6797fc2 Fixed android module being necessary to compile 2018-08-17 18:05:28 -04:00
Anuken 25051980ce Fixed category bundle properties missing 2018-08-17 14:51:18 -04:00
Anuken fb8becca99 Minor ban fix 2018-08-17 14:09:31 -04:00
Anuken 25bd8a7eaa Fixed sector name not being displayed in saves 2018-08-17 13:02:53 -04:00
Anuken bbd2424a3f Merge remote-tracking branch 'origin/master' 2018-08-17 12:55:18 -04:00
Anuken 83eeeed319 Discord rich presence improvements 2018-08-17 12:55:06 -04:00
Anuken c92e8161a1 Merge pull request #190 from Prosta4okua/patch-21
[Complete] bundle_ru.properties
2018-08-17 11:33:29 -04:00
Anuken 258555c990 Merge remote-tracking branch 'origin/master' 2018-08-17 11:32:19 -04:00
Anuken 0f7799422e Crashes fixed 2018-08-17 11:32:12 -04:00
Anuken 177b565d7c Merge pull request #173 from Gab351/patch-1
Translate l227 to l239
2018-08-17 10:38:24 -04:00
Prosta4okua a62b336b6c Update bundle_ru.properties 2018-08-17 12:59:51 +03:00
Prosta4okua 3ea61c8b3a Update bundle_ru.properties 2018-08-17 12:02:44 +03:00
Prosta4okua 4c57f9f902 Update bundle_ru.properties 2018-08-17 10:48:29 +03:00
Anuken 6d7941fba4 iOS portrait mode support 2018-08-16 18:38:43 -04:00
Anuken 020c6388c2 Block renaming 2018-08-16 18:38:04 -04:00
Anuken 53d35e8c77 Bundles updated / Fixed some localization bugs 2018-08-16 17:43:43 -04:00
Anuken 01f205d352 Merge pull request #189 from Leone25/patch-1
last update bundle_ita.properties
2018-08-16 17:38:44 -04:00
Anuken a786167b04 Reduced health flash 2018-08-16 17:38:16 -04:00
Anuken 1699ab48e8 Added alternate health bar on all units 2018-08-16 17:07:20 -04:00
Leone25 b15c04a532 Update bundle_ita.properties 2018-08-16 21:10:04 +02:00
Anuken 20d3740e75 Branch created 2018-08-16 11:46:34 -04:00
Anuken 80d57f8c0c Comma fix 2018-08-16 11:25:27 -04:00
Anuken 1de367e89c Full chat revert / Crash fixes 2018-08-16 10:09:22 -04:00
Anuken 8850a89e30 Fixed game-over sector algorithm 2018-08-15 21:25:07 -04:00
Anuken 4f72011cf7 Fixed markup crash / setsector command fixed / Drone crash fixed 2018-08-15 21:00:40 -04:00
Anuken c569232e74 Fixed multiblocks not accepting items 2018-08-15 19:38:13 -04:00
Anuken 14c526d0c4 Power distribution fix 2018-08-15 18:41:21 -04:00
Anuken 5c4ac6b702 Fixed major issue with Vector2.ZERO mutation 2018-08-15 18:37:20 -04:00
Anuken d58cc18136 Fixed block targeting bug 2018-08-15 18:18:57 -04:00
Anuken 36c01fde94 Updated uCore / Minor server tweak 2018-08-15 17:46:33 -04:00
Anuken d4d9d59fe4 Server sector commands / World data compression / Snapshot sent w/ world 2018-08-15 17:25:19 -04:00
Anuken 8dbd0a6130 Fixed drones repairing incorrect blocks 2018-08-15 16:28:00 -04:00
Anuken 3746344cba Crash fixes 2018-08-15 16:26:08 -04:00
Anuken d07fd1bbfe Improved build sync 2018-08-15 15:16:56 -04:00
Anuken 02f95c0ed4 Merge remote-tracking branch 'origin/master' 2018-08-15 14:16:42 -04:00
Anuken c98fcbd795 Turrets target blocks / Added core no-build radius 2018-08-15 14:13:50 -04:00
Anuken d071877963 Merge pull request #186 from Leone25/patch-1
Big update for italian bundle
2018-08-15 13:12:18 -04:00
Anuken 0267cb4006 Conduit sprites improved / Fixed incorrect proximity update 2018-08-15 13:11:55 -04:00
Leone25 bf571e595c Update bundle_ita.properties 2018-08-15 19:05:18 +02:00
Anuken c0cad70212 Merge remote-tracking branch 'origin/master' 2018-08-15 10:49:05 -04:00
Anuken 7bd6dbb4b4 Partial korean font PR revert / Crash fixes 2018-08-15 10:48:19 -04:00
Anuken 6d932e3d04 Merge pull request #185 from Prosta4okua/patch-19
Update bundle_ru.properties
2018-08-15 09:20:41 -04:00
Prosta4okua e154b5179d Update bundle_ru.properties 2018-08-15 08:27:26 +03:00
Anuken 52110d6008 ok 2018-08-14 19:30:05 -04:00
Anuken 103b08fd1d Added build progress sync 2018-08-14 18:56:42 -04:00
Anuken cb09d10e7f Merge remote-tracking branch 'origin/master' 2018-08-14 18:51:13 -04:00
Anuken a041c1e60d Synced whole place queue / Fixed player flash desync 2018-08-14 18:51:06 -04:00
Anuken 586b4cf4bd Merge pull request #183 from cloud9350/master
Add korean chat fonts + fix typos
2018-08-14 18:32:52 -04:00
Leone25 d0ff149cca Update bundle_ita.properties 2018-08-14 21:07:39 +02:00
Anuken f8ddc8325c Fixed puddle/IO crash / crafter storage / player NaN position / red tint 2018-08-14 12:24:04 -04:00
Anuken 59ec09e82c Crash fixes / Resource-steal fixed / No-build while shooting fixed 2018-08-14 12:16:21 -04:00
Anuken 2ae5c96690 Merge remote-tracking branch 'origin/master' 2018-08-14 10:42:09 -04:00
Anuken fda9e6bb9c Various crashes fixed 2018-08-14 10:41:54 -04:00
Anuken 29bcb8e07c Removed bars 2018-08-14 10:29:45 -04:00
Leone25 b70de81c2d Update bundle_ita.properties 2018-08-14 14:41:38 +02:00
Gureumi 5e89b2568f Add korean chat fonts + fix typos 2018-08-14 15:59:07 +09:00
Anuken ac1d8215ff Merge pull request #182 from Prosta4okua/patch-18
[COMPLETE]Update bundle_ru.properties
2018-08-13 22:21:06 -04:00
Leone25 fefc734bfa Update bundle_ita.properties 2018-08-12 22:24:10 +02:00
Prosta4okua 7f8735842c Update bundle_ru.properties 2018-08-12 22:28:23 +03:00
Prosta4okua a226983470 Update bundle_ru.properties 2018-08-12 19:19:07 +03:00
Prosta4okua 28526d0a12 Update bundle_ru.properties 2018-08-12 18:54:51 +03:00
Prosta4okua 913e005bae Update bundle_ru.properties 2018-08-12 10:44:56 +03:00
Prosta4okua 7bd9fd5bae Update bundle_ru.properties 2018-08-12 00:12:55 +03:00
Anuken 8986b89d67 Removed unit ammo 2018-08-10 10:45:37 -04:00
Anuken ef936214f0 Merge pull request #180 from Prosta4okua/patch-17
[Complete]Update bundle_uk_UA.properties
2018-08-10 10:20:43 -04:00
Anuken 18fce6b3e3 Merge pull request #179 from cloud9350/master
Change items name texts and update font
2018-08-10 09:12:52 -04:00
Prosta4okua ecda4d74ab Update bundle_uk_UA.properties 2018-08-10 16:12:44 +03:00
Prosta4okua 31124037b5 Update bundle_uk_UA.properties 2018-08-10 16:07:46 +03:00
Prosta4okua aaf95e0756 Update bundle_uk_UA.properties 2018-08-10 16:06:01 +03:00
Gureumi 804e311875 Update 2018-08-10 19:21:46 +09:00
Anuken 61ad9bc47d Merge remote-tracking branch 'origin/master' 2018-08-09 22:20:52 -04:00
Anuken 2b23b7876a Minor bugfix 2018-08-09 22:20:46 -04:00
Anuken 547d334f43 Merge pull request #178 from Leone25/patch-1
update italian boundle_ita
2018-08-09 19:29:34 -04:00
Leone25 7432dc115e Update bundle_ita.properties 2018-08-10 00:48:20 +02:00
Anuken 905defe8ce Merge pull request #177 from Prosta4okua/patch-15
Update bundle_ru.properties
2018-08-09 18:35:44 -04:00
Prosta4okua 0a8ff0cde7 Update bundle_ru.properties 2018-08-10 00:59:27 +03:00
Prosta4okua bd5f44030e Update bundle_ru.properties 2018-08-10 00:53:41 +03:00
Anuken 79abb86262 Merge remote-tracking branch 'origin/master' 2018-08-09 17:45:09 -04:00
Anuken fe6f98ec5a Minor bugfixes / Added block names to bundle/ Autogen ore names 2018-08-09 17:44:52 -04:00
Anuken e39a856e54 Update TRANSLATING.md 2018-08-09 09:47:15 -04:00
Anuken 64e5f8155d Merge pull request #176 from cloud9350/patch-1
Update language ko file
2018-08-09 09:20:10 -04:00
Gureumi 8328b11f6b Update. 2018-08-09 19:54:09 +09:00
Anuken 15778b2ca5 Server hotfix 2018-08-08 22:37:52 -04:00
Anuken b7842014c1 Fixed minor autotile bug 2018-08-08 22:29:56 -04:00
Anuken a804053904 Typo fix / Biomatter compressor buffed 2018-08-08 21:10:57 -04:00
Anuken 2aee72b47b Improved host command 2018-08-08 20:57:24 -04:00
Anuken 0cb8c600b7 Merge remote-tracking branch 'origin/master' 2018-08-08 20:53:02 -04:00
Anuken aa5348f37e Auto-play server sectors / Difficulty decrease / Improved d/c messages 2018-08-08 20:52:51 -04:00
Anuken 0736574a57 Merge pull request #174 from Prosta4okua/patch-13
[Сomlete]Update bundle_ru.properties
2018-08-08 20:07:23 -04:00
Anuken d56365ce63 Merge pull request #175 from CinExPL/patch-1
Update bundle_pl.properties
2018-08-08 20:07:14 -04:00
Prosta4okua c82d2f856a Update bundle_ru.properties 2018-08-09 00:02:22 +03:00
Prosta4okua 8432677826 Update bundle_ru.properties 2018-08-08 23:58:41 +03:00
Prosta4okua 0c0c6e5470 Update bundle_ru.properties 2018-08-08 23:56:42 +03:00
Anuken 57019b6e20 Fixed oil extractor desync / Buffed thermal genenerator / Typo fix 2018-08-08 16:00:33 -04:00
CinExPL 12ab2249b4 Update bundle_pl.properties 2018-08-08 21:10:42 +02:00
Anuken 22d0992d38 Merge remote-tracking branch 'origin/master' 2018-08-08 15:04:04 -04:00
Anuken f8def04653 Overall difficulty decrease / Crash fix / Server fillitems command 2018-08-08 15:02:51 -04:00
Anuken 6349530fc5 Updated build.gradle 2018-08-08 14:42:10 -04:00
Anuken ad83a7dcc3 Merge remote-tracking branch 'origin/master' 2018-08-08 12:37:46 -04:00
Anuken cfc2239733 Minor iso changes 2018-08-08 12:37:29 -04:00
Anuken 91552a3a2b Various bugfixes 2018-08-08 12:22:47 -04:00
Anuken 4e3204bc6d All known crashes fixed 2018-08-08 11:18:30 -04:00
Anuken a94998bd02 Merge remote-tracking branch 'origin/master' 2018-08-08 10:43:09 -04:00
Anuken 81c78eafa6 Biomass compressor fix / Crash fix / Removed spawners in waves 2018-08-08 10:43:03 -04:00
Prosta4okua 273523480f Update bundle_ru.properties 2018-08-08 08:34:44 +03:00
Anuken b27fefae88 Misc fixes 2018-08-08 01:09:57 -04:00
Anuken aa00a1b8d1 Minor save-time fix 2018-08-07 20:16:50 -04:00
Anuken ba62e0eefc Fixed playtime not resetting on save exit 2018-08-07 19:46:05 -04:00
Anuken cb16c75e11 Minor bundle fixes / Web build fixed 2018-08-07 19:36:56 -04:00
Anuken 3efed0ace3 Added sector loc display 2018-08-07 19:04:58 -04:00
Anuken 879fb8194f Further nerfed AI 2018-08-07 19:01:23 -04:00
Anuken 049dd89470 Fixed drone spam 2018-08-07 18:49:43 -04:00
Anuken 1f59d4354a Fixed retreat command, more pathfinding 2018-08-07 18:26:16 -04:00
Anuken 8dea45d9d5 More pathfinding fixes 2018-08-07 18:19:02 -04:00
Anuken 21ba6e257c Added indicator when core is under attack 2018-08-07 17:01:17 -04:00
Anuken 18ebda01a4 Drill balancing / More starting resources 2018-08-07 16:13:37 -04:00
Leone25 3acb843109 Update bundle_ita.properties 2018-08-07 21:48:42 +02:00
Leone25 1768aea66f Update bundle_ita.properties 2018-08-07 20:54:40 +02:00
Anuken 4b61f273d5 Targeting fixes / command center fixes 2018-08-07 11:59:16 -04:00
Anuken a1dbbbdafc Crash fixes / 2x2 drills 2018-08-07 11:40:25 -04:00
Anuken dcb840f290 Many bugfixes / Dagger unit buffed / Build times increased 2018-08-07 11:17:32 -04:00
Anuken e6c4c66199 All drill costs decreased / Fixed specific sector save errors 2018-08-06 23:32:43 -04:00
Anuken b76cd558aa Added difficulty grace period scaling 2018-08-06 22:58:22 -04:00
Anuken 85b077b5c5 Additional recipe balancing 2018-08-06 22:03:25 -04:00
Anuken c34d6e6606 Improved targeting / Balancing / Monsoon nerf 2018-08-06 19:17:42 -04:00
Anuken a5fd0aebe6 Fixed armageddon / Removed idle command / Balancing 2018-08-06 19:04:07 -04:00
Anuken aaec04d04a Balancing / Made pads spawn infinite units 2018-08-06 16:58:44 -04:00
Leone25 b4272e0387 Update bundle_ita.properties 2018-08-06 20:44:09 +02:00
Anuken 77f9d6cb1d Grace period increased / Even more starting resources / Pulverizer buff 2018-08-06 12:52:29 -04:00
Anuken aaa82b34e4 Difficulty display / More starting resources / Recipe tweaks 2018-08-06 12:42:34 -04:00
Anuken 7a6b1129d9 Merge remote-tracking branch 'origin/master' 2018-08-06 12:23:12 -04:00
Anuken 1f8918c773 Added starter items based on difficulty 2018-08-06 12:22:55 -04:00
Anuken e9fe724e59 Merge pull request #172 from Prosta4okua/patch-11
(Complete)Update bundle_ru.properties
2018-08-06 11:21:41 -04:00
Anuken 80001246ef Added sector wave difficulty / ita bundle updated 2018-08-06 11:19:44 -04:00
Anuken 50461bb7c8 Merge pull request #164 from Leone25/patch-2 2018-08-06 11:17:29 -04:00
Anuken c7c7cfde74 Merge branch 'master' into patch-2 2018-08-06 11:17:20 -04:00
Anuken dcc29c0c48 Fixed extremely suicidal enemies / Conveyor tile fixes 2018-08-06 10:54:56 -04:00
Anuken 635e299464 Tweaked spawn times / Liquid bridge fixes 2018-08-06 10:31:50 -04:00
Gab_351 502c4e51ae Translate l227 to l239 2018-08-06 15:16:39 +03:00
Prosta4okua 382fdcbb40 Update bundle_ru.properties 2018-08-06 15:03:23 +03:00
Anuken 468e092422 Pad ammo autofill / Per-mission waves / Better core resource selection 2018-08-05 23:19:11 -04:00
Anuken 6904d4693f Merge remote-tracking branch 'origin/master' 2018-08-05 19:19:55 -04:00
Anuken 3ef7ec3be5 Bundles updated 2018-08-05 19:19:50 -04:00
Anuken 70257cbbfa Merge pull request #170 from Prosta4okua/patch-10
[Complete] Update bundle_ru.properties
2018-08-05 19:18:25 -04:00
Anuken 6ef31d0ec1 Added spawner grace period 2018-08-05 19:17:46 -04:00
Prosta4okua d3077bec58 Update bundle_ru.properties 2018-08-06 00:12:50 +03:00
Prosta4okua a1095353fc Update bundle_ru.properties 2018-08-06 00:11:19 +03:00
Anuken 66fab1b3df Added thermal generator / Enemy bases with spawning 2018-08-05 17:00:26 -04:00
Prosta4okua 569d6d4272 Update bundle_ru.properties 2018-08-05 19:09:01 +03:00
Anuken 07c19ce085 Added thermal pump / Better conveyor autotile 2018-08-05 10:14:18 -04:00
Anuken d86dd4f80b Fixed terrible spawn generation 2018-08-04 23:19:10 -04:00
Anuken f0f89f0894 New non-clipped 8x8 turret sprites 2018-08-04 20:19:04 -04:00
Anuken 47af2e83f7 Improved structure generation 2018-08-04 16:58:31 -04:00
Anuken 8ec87872c8 Added outpost schematic system 2018-08-04 14:51:33 -04:00
Anuken f30ea80b42 Made units self-destruct after spawner removal 2018-08-03 20:22:33 -04:00
Anuken 1dd6e66167 Added basic enemy outposts 2018-08-03 16:39:12 -04:00
Anuken 4e681b2dd1 Merge remote-tracking branch 'origin/master' 2018-08-03 12:13:39 -04:00
Anuken 58be00b3ce Exploit fixes 2018-08-03 12:13:17 -04:00
Anuken 5604ac6b6a Merge pull request #169 from Prosta4okua/patch-9
[COMPLETE]Update bundle_ru.properties
2018-08-03 10:53:52 -04:00
Anuken effdaefdf3 Added built-in sandbox map 2018-08-02 13:58:02 -04:00
Anuken 5775fad030 Fixed core generation 2018-08-02 12:00:29 -04:00
Prosta4okua eabc6d79c3 Update bundle_ru.properties 2018-08-02 12:44:35 +03:00
Prosta4okua 5f4ca6e383 Update bundle_ru.properties 2018-08-02 11:57:11 +03:00
Anuken c05020e28e Fixed no-wave FPS display / Fixed unit pad inventories 2018-08-01 22:14:43 -04:00
Anuken 5206079e23 Implemented sandbox mode 2018-08-01 20:13:57 -04:00
Anuken 9b01140882 Fixed merge conflicts 2018-08-01 18:44:53 -04:00
Anuken 4dae27da98 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/assets/bundles/bundle_ru.properties
2018-08-01 18:44:25 -04:00
Anuken f0cab65a6d Bundles updated 2018-08-01 18:38:48 -04:00
Anuken 699a47351b Merge pull request #168 from Prosta4okua/patch-8
[COMPLETE]Update bundle_ru.properties
2018-08-01 18:37:51 -04:00
Anuken af004da699 Added mission completion dialog / Bundle fixes 2018-08-01 18:31:44 -04:00
Prosta4okua b5ad885237 Update bundle_ru.properties 2018-08-01 23:45:08 +03:00
Prosta4okua 07bd0fec70 Update bundle_ru.properties 2018-08-01 23:44:25 +03:00
Prosta4okua 318e51d736 Update bundle_ru.properties 2018-08-01 23:43:18 +03:00
Anuken ae90db50fe Added monsoon pad / Renamed factories to pads 2018-08-01 16:18:13 -04:00
Prosta4okua 64772c195e Update bundle_ru.properties 2018-08-01 21:17:23 +03:00
Prosta4okua 05ead63bdc Update bundle_ru.properties 2018-08-01 21:16:55 +03:00
Prosta4okua 6f5c64420d Update bundle_ru.properties 2018-08-01 20:59:45 +03:00
Prosta4okua d9d9a00a24 Update bundle_ru.properties 2018-08-01 20:53:01 +03:00
Anuken c1de67032c Nerfed monsoon bomber 2018-08-01 13:09:46 -04:00
Anuken 890d49fdd7 Merge remote-tracking branch 'origin/master' 2018-08-01 12:46:54 -04:00
Anuken ba96ea5a0c Gamemode-specfic missions / Red-enabled location verification 2018-08-01 12:19:17 -04:00
Anuken b481b784bb Merge pull request #166 from Predator127/patch-4
Fixed PT-BR
2018-07-31 21:56:58 -04:00
Anuken 53b6e68a85 Merge remote-tracking branch 'origin/master' 2018-07-31 21:55:22 -04:00
Anuken e3d16418a0 Added island around core generation 2018-07-31 21:53:40 -04:00
Predator127 e41f560ecd Fixed PT-BR
Small fixes.
2018-07-31 17:49:14 -03:00
Anuken d394d9a529 Merge pull request #165 from bdjnk/patch-1
fix english translation bundle link, fix spelling
2018-07-31 15:55:14 -04:00
Michael Plotke a73015fa6e fix english translation bundle link, fix spelling 2018-07-31 14:37:54 -04:00
Anuken 87846864cc Merge remote-tracking branch 'origin/master' 2018-07-31 12:57:48 -04:00
Anuken f3b976bdd1 All web version bugs fixed 2018-07-31 12:57:34 -04:00
Anuken 3a06e319b0 Merge pull request #163 from toushangyouxiang/master
Add bundle_zh_CN.properties
2018-07-31 07:02:25 -07:00
Anuken fe31c404ff Merge pull request #162 from Predator127/patch-3
Huehue
2018-07-31 07:02:16 -07:00
Anuken cc23378758 Updated gradle version 2018-07-31 09:48:33 -04:00
toushangyouxiang 5cac949ea8 fix translation 2018-07-31 21:02:25 +08:00
toushangyouxiang a35e897194 translate fix 2018-07-31 21:01:29 +08:00
toushangyouxiang 8e92edeae1 add bundle_zh_CN.properties 2018-07-31 14:25:32 +08:00
toushangyouxiang f289a0a9a8 fix name 2018-07-31 14:20:20 +08:00
toushangyouxiang 65a7e89a8c add bundle_zh_CN.properties 2018-07-31 14:17:01 +08:00
Anuken 43be3259c9 Removed all websocket code 2018-07-30 23:43:11 -04:00
Anuken 54a4c95a1b Minor UI fixes 2018-07-30 23:32:43 -04:00
Anuken ddac5cbfbc Added unit type descriptions / Changed blast drill sprite 2018-07-30 21:20:00 -04:00
Anuken 22342d01a5 Added blast drill 2018-07-30 19:40:44 -04:00
Predator127 7cffaeb193 Huehue
small changes
2018-07-30 19:34:55 -03:00
Anuken 2534496543 Merge remote-tracking branch 'origin/master' 2018-07-30 17:00:24 -04:00
Anuken fe9b11e771 Fully implemented mass driver 2018-07-30 17:00:18 -04:00
Anuken 032347840f Merge pull request #161 from Prosta4okua/patch-6
[COMPLETE] Upt8te bundle_ru.properties
2018-07-30 10:50:24 -07:00
Prosta4okua 2978bc6ac5 Update bundle_ru.properties 2018-07-30 19:24:06 +03:00
Prosta4okua a3b0bb323f Update bundle_ru.properties 2018-07-30 19:23:06 +03:00
Prosta4okua a6246d27d9 [INCOMPLETE]Upt8te bundle_ru.properties 2018-07-30 19:11:25 +03:00
Anuken 884b649b53 Merge pull request #160 from Predator127/patch-2
Update bundle_pt_BR.properties
2018-07-29 16:29:31 -07:00
Predator127 92a2f770b4 Update bundle_pt_BR.properties 2018-07-29 20:02:54 -03:00
Anuken e88ce078df Fixed place distance not being respected 2018-07-29 19:00:29 -04:00
Anuken 77f0dfb9b1 Added system to query block outputs / Editor bugfixes 2018-07-29 17:41:27 -04:00
Anuken 78d1accf07 Added resource mission 2018-07-29 12:26:48 -04:00
Anuken 2ec68a7f07 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/assets/bundles/bundle_pt_BR.properties
2018-07-29 12:01:52 -04:00
Anuken bbaa2a2c92 Updated bundles, removed unused text 2018-07-29 12:01:25 -04:00
Anuken 341bb67ef4 Merge pull request #159 from TriggeredBoi/patch-1
Update bundle_pt_BR.properties
2018-07-29 09:00:43 -07:00
Anuken e377cb423b Merge remote-tracking branch 'origin/master' 2018-07-29 11:57:56 -04:00
Anuken 81e954c258 Implemented multi-mission sectors / Various bugfixes 2018-07-29 11:57:46 -04:00
Trigg 79d41ba7ac Update bundle_pt_BR.properties
fixed some stuff for now, I guess

(Don't want to be rude, but a good chunk of Predator's translation seems to have been made by fucken google translate )
2018-07-29 12:20:30 -03:00
Anuken e740e4da87 Merge pull request #158 from Predator127/patch-1
Update bundle_pt_BR.properties
2018-07-29 06:51:58 -07:00
Predator127 b476c47194 Update bundle_pt_BR.properties 2018-07-28 23:33:56 -03:00
Anuken b2d61a93d9 Added sector mission display and generation 2018-07-28 22:06:01 -04:00
Anuken a045ec9d46 Fixed sector dialog UI scaling 2018-07-28 12:59:52 -04:00
Anuken 1daf8d2743 cleanup of cleanup 2018-07-28 12:52:02 -04:00
Anuken 295824f440 Minor cleanup 2018-07-28 12:50:11 -04:00
Anuken 22b59e0cf6 Merge pull request #157 from Ameb/libgdx-miui-fix
Introduce workaround for libgdx issue by @codegist
2018-07-28 08:49:52 -07:00
Ameb ecabdb82e6 Introduce workaround for libgdx issue by @codegist
libgdx/libgdx#3861 libgdx/libgdx#4626 libgdx/libgdx#5312
2018-07-28 17:24:20 +02:00
Anuken 924b1c1a67 Fixed #156 2018-07-28 10:06:28 -04:00
Anuken 0454c4c25a Added skin aliases 2018-07-28 09:44:38 -04:00
Anuken 3a3b81941b Fixed server fog not being cleared by blocks 2018-07-27 20:18:04 -04:00
Anuken 0875c29da5 Implemented fog saving 2018-07-27 17:26:12 -04:00
Anuken 0d4cf9f6c4 Mac crash fix 2018-07-27 14:26:34 -04:00
Anuken 6a525dcf59 Mac crash fix 2018-07-27 14:25:06 -04:00
Anuken 01f6904f82 Tile field encapsulation 2018-07-27 10:52:14 -04:00
Anuken 23bd9a989b Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/assets/bundles/bundle_ru.properties
2018-07-27 09:15:24 -04:00
Anuken acfa02475b Updated bundles 2018-07-27 09:10:39 -04:00
Anuken 9dba304011 Merge pull request #151 from Prosta4okua/patch-5
[COMPLETE]Update bundle_ru.properties
2018-07-27 09:09:37 -04:00
Prosta4okua 69b0020d15 Update bundle_ru.properties 2018-07-27 10:03:52 +03:00
Anuken ce2896cb38 Command center name added / Regression fix 2018-07-26 23:04:37 -04:00
Anuken 68fd09c222 Improved unit commands 2018-07-26 19:20:47 -04:00
Anuken c832a7b93f Full command center implementation 2018-07-26 17:51:25 -04:00
Anuken 49e19ab34d Removed 'in' class 2018-07-26 15:40:35 -04:00
Anuken c1c82b451d Removed multi-class call generation 2018-07-26 15:24:48 -04:00
Anuken ea6f88b7f6 Added basic command center logic 2018-07-26 15:17:23 -04:00
Anuken 2a6ee6d65b Bundle cleanup 2018-07-26 14:19:58 -04:00
Anuken 583342b430 Merge remote-tracking branch 'origin/master' 2018-07-26 13:34:25 -04:00
Anuken 7289c1080c Cleaned up custom game dialog / Disabled saving in sectors 2018-07-26 13:34:20 -04:00
Prosta4okua 9ed4f2b7a3 Update bundle_ru.properties 2018-07-26 19:40:51 +03:00
Prosta4okua 7396f91a5e Update bundle_ru.properties 2018-07-26 19:39:48 +03:00
Prosta4okua ccc926d812 Update bundle_ru.properties 2018-07-26 19:36:26 +03:00
Prosta4okua bd39255ead Update bundle_ru.properties 2018-07-26 19:31:21 +03:00
Prosta4okua add7b1a7d9 Update bundle_ru.properties 2018-07-26 19:29:19 +03:00
Prosta4okua 8e471f9939 Update bundle_ru.properties 2018-07-26 19:24:08 +03:00
Prosta4okua c61568ef98 Update bundle_ru.properties 2018-07-26 19:13:47 +03:00
Prosta4okua 3260e45e71 Update bundle_ru.properties 2018-07-26 19:11:48 +03:00
Prosta4okua ea61b560b8 Update bundle_ru.properties 2018-07-26 19:03:58 +03:00
Prosta4okua f8ad7d485b [INCOMPLETE]Update bundle_ru.properties 2018-07-26 18:58:24 +03:00
Anuken 229e624434 Merge pull request #150 from Prosta4okua/patch-4
Update bundle_ru.properties
2018-07-26 11:19:31 -04:00
Anuken 7a3fb9c759 Sector size increased / Cores moved / Fixed desktop recipes appearing 2018-07-26 10:47:46 -04:00
Prosta4okua 9a7ea0d28c Update bundle_ru.properties 2018-07-26 17:40:38 +03:00
Anuken ee5e655668 Made splitter faster when unchained 2018-07-25 17:29:43 -04:00
Anuken 58be055f57 Added interceptor factory / Sector-specific ore gen 2018-07-24 21:57:09 -04:00
Leone25 38e1944503 Update bundle_ita.properties 2018-07-24 16:34:52 +02:00
Anuken 992b402e9c Merge remote-tracking branch 'origin/master' 2018-07-24 10:15:31 -04:00
Anuken 81bf28e4ed Fixed build error / Added per-type drone mine config 2018-07-24 10:15:25 -04:00
Anuken f10734b083 Merge pull request #149 from Prosta4okua/patch-3
[Сomplete]Upd8te bundle_ru.properties
2018-07-24 10:00:35 -04:00
Anuken bf8f565631 Fixed ore-cliff blending 2018-07-24 09:18:04 -04:00
Anuken 9bc1ff8fa2 Added unit type unlocking / Fixed viewing of enemy block stats 2018-07-24 09:08:35 -04:00
Prosta4okua 56239b6bbf Up8te bundle_ru.properties
It's all?!
2018-07-24 13:44:30 +03:00
Leone25 cedd2bfe57 Update bundle_ita.properties 2018-07-24 10:42:09 +02:00
Anuken 7e187a57d8 Volcanic terrain now more frequent 2018-07-23 22:58:56 -04:00
Anuken 572a30a2c5 Improved worldgen 2018-07-23 22:36:39 -04:00
Anuken f3235ef7e8 Merge remote-tracking branch 'origin/master' 2018-07-23 20:44:42 -04:00
Anuken 7448eb32cc Added battle misson / Team block colors / Mission worldgen 2018-07-23 20:44:33 -04:00
Anuken 33e8cc4711 Merge pull request #148 from Prosta4okua/patch-2
[WIP] Update bundle_ru.properties
2018-07-23 17:53:27 -04:00
Prosta4okua 6cdb016c2c [WIP] Update bundle_ru.properties 2018-07-23 23:45:43 +03:00
Leone25 ababb7f5ab Update bundle_ita.properties 2018-07-23 21:24:23 +02:00
Leone25 9f2b66e09d Update bundle_ita.properties 2018-07-23 20:56:38 +02:00
Leone25 8de267f6a9 Update bundle_ita.properties 2018-07-23 19:20:58 +02:00
Anuken ecf9a3cbc9 Added FPS cap setting / Bugfixes 2018-07-23 11:09:51 -04:00
Anuken 01300b97e2 Changed game over menu for sectors 2018-07-22 19:06:52 -04:00
Leone25 787163fb06 Flew changes at the bottom 2018-07-22 22:18:51 +02:00
Anuken 3701a3c3d9 Updated italian bundle 2018-07-22 15:55:36 -04:00
Anuken 68c51bb1bc More generation improvements 2018-07-22 13:29:01 -04:00
Anuken df147c700c Merge remote-tracking branch 'origin/master' 2018-07-21 22:05:10 -04:00
Anuken f5fc4d99dd Improved generation 2018-07-21 22:04:10 -04:00
Anuken 2a4aa9e550 Merge pull request #145 from theshadowknight/patch-2
PL update
2018-07-21 17:38:12 -04:00
theshadowknight 0a489f1117 . 2018-07-21 18:16:33 +02:00
theshadowknight 9cc7c061a3 FINAL 2018-07-21 18:10:38 +02:00
theshadowknight a1e7274ec3 I think it is final
*think*
2018-07-21 17:59:44 +02:00
theshadowknight 51d516a39e . 2018-07-21 17:49:32 +02:00
theshadowknight de7c38231c look 2018-07-21 17:46:48 +02:00
theshadowknight c352ef9382 PL update
YAY! *Some easter eggs here*
2018-07-21 17:15:14 +02:00
Anuken e36b5551e9 Added translation testing info, useful information 2018-07-21 11:13:21 -04:00
Anuken 57856c38d6 Merge remote-tracking branch 'origin/master' 2018-07-21 10:07:01 -04:00
Anuken 2a8e02339b Added disclaimer 2018-07-21 10:06:20 -04:00
Anuken 57f94ca6a2 Merge pull request #144 from theshadowknight/patch-1
PL translation update
2018-07-21 10:03:17 -04:00
theshadowknight 0eaca8b80a PL translation update
I finished at 458
2018-07-21 13:00:56 +02:00
Anuken d2dbab57dc Updated translation guide 2018-07-21 00:47:31 -04:00
Anuken cb448a3494 Ignored locales.json 2018-07-21 00:45:11 -04:00
Anuken 3fa6eae05b Removed locales.json 2018-07-21 00:44:49 -04:00
Anuken 52cc7d699a Added translation guide / Added locale list autogen 2018-07-21 00:44:13 -04:00
Anuken ec4eac3a7d Moved locale declaration to json file 2018-07-20 23:48:42 -04:00
Anuken fbcfb23676 fixBundles -> updateBundles 2018-07-20 20:35:53 -04:00
Anuken dbb2371801 Re-added block shadows / Block optimization 2018-07-20 18:41:08 -04:00
Anuken 4d6dc9546f Fixed cliffs not blending properly 2018-07-20 16:52:42 -04:00
Anuken 06b9d328f4 Added auto-generated cliffs for floor blocks 2018-07-20 16:06:26 -04:00
Anuken 48c7daa4ab iOS fixes 2018-07-20 13:59:00 -04:00
Anuken 3c83b88127 Multi-threaded generation previews 2018-07-20 09:26:41 -04:00
Anuken 3a63fa5475 Generation minor improvements / Added debug map view 2018-07-19 20:46:30 -04:00
Anuken 882790d133 Sleeping system changes 2018-07-19 18:10:29 -04:00
Anuken bcf72b894d Fixed conveyor entities not sleeping 2018-07-19 17:58:16 -04:00
Anuken 9f723c39ef Bundles updated / Fixed player name color changing join/leave text 2018-07-19 14:20:51 -04:00
Anuken 56fc40a64d Removed sound assets / Fixed text wrap / Proper screen clear 2018-07-19 11:06:10 -04:00
Anuken 091f591ffb Added sector-specific spawns 2018-07-19 09:58:19 -04:00
Anuken 4d88a8206a Fixed unnecessary disconnect messages / Fixed player ban crash 2018-07-19 09:30:58 -04:00
Anuken 363bf7c552 Removed sector camera clamp / Added map edge padding / Turret sprite fix 2018-07-18 22:43:35 -04:00
Anuken 7ff4e5879d Implemented multi-cell sectors 2018-07-18 13:23:54 -04:00
Anuken 0b7decbfdd Removed static block layer / Minor bugfixes 2018-07-18 10:40:31 -04:00
Anuken be9ea33aa4 Improved floodfill / Fixed resource use bug / Fixed editor turret draw 2018-07-17 23:20:05 -04:00
Anuken d4b2cad94e Merge remote-tracking branch 'origin/master' 2018-07-17 19:19:55 -04:00
Anuken ac039ce7cd Fixed sector world gen / Added sector goal unlocks 2018-07-17 19:12:44 -04:00
Anuken 946e60937d iOS fixes 2018-07-17 14:15:43 -04:00
Anuken 6f6601d270 Improved sector dialog look / Made mobile versions show play select 2018-07-17 13:19:20 -04:00
Anuken 71016f0d7c Updated uCore / Added hidden sector saves 2018-07-17 12:47:11 -04:00
Anuken c2c2551607 Implemented save time recording 2018-07-17 10:42:44 -04:00
Anuken d7812ec030 New save slot system / Buffed smelter / Fixed flying shadow glitches 2018-07-17 09:18:19 -04:00
Anuken f184b0700f Fixed conveyor/conduit crash / Improved conveyor movement 2018-07-16 21:44:15 -04:00
Anuken 07f0be8d8d Updated uCore / Sector deploying support 2018-07-16 20:53:35 -04:00
Anuken dd45b43d7f Classes moved / Fixed autotile bugs / Added sector display 2018-07-16 18:42:29 -04:00
Anuken 9b505106e3 Fixed ugly oversized shadows in corner autotiles 2018-07-16 09:42:13 -04:00
Anuken d552f37daf Added conveyor autotiling / Fixed autotile update bug 2018-07-15 22:33:14 -04:00
Anuken 6a7ff13859 Added basic sector classes / Changed play menu dialog 2018-07-15 17:19:33 -04:00
Anuken 9e3af13efc Added build version warning for servers 2018-07-15 14:51:03 -04:00
Anuken 92a968217c Fixed power being set to NaN / Set splitter sprite to router 2018-07-15 11:50:06 -04:00
Anuken 37b9df3202 Removed all UI builders / Updated uCore and functional interfaces 2018-07-14 22:06:03 -04:00
Anuken 7dc33111fc Changed default world size back 2018-07-14 20:04:27 -04:00
Anuken ab2f260a52 Fixed some crashes 2018-07-14 17:16:13 -04:00
Anuken 1aa4b8cb88 Fixed crash report displaying location incorrectly 2018-07-14 17:00:33 -04:00
Anuken dfed36748c Fixed saves not loading / Increased biomatter compressor output 2018-07-14 16:06:38 -04:00
Anuken d35f736548 Updated traditional chinese bundle / Fixed korean bundle 2018-07-14 12:14:22 -04:00
Anuken cfecdae970 Class package refactoring 2018-07-14 12:11:48 -04:00
Anuken 59ade6cf09 Vault optimizations / Removed unloader 2018-07-14 10:47:18 -04:00
Anuken 642842888a Removed Waffle.io links 2018-07-14 09:34:19 -04:00
Anuken 3ae51edf3a Merge branch '4.0' of https://github.com/Anuken/Mindustry
# Conflicts:
#	core/assets/bundles/bundle_ko.properties
#	core/src/io/anuke/mindustry/Vars.java
#	core/src/io/anuke/mindustry/core/UI.java
2018-07-14 09:32:55 -04:00
Anuken d8ccb81015 Merge remote-tracking branch 'origin/4.0' into 4.0 2018-07-14 09:26:43 -04:00
Anuken 0db6020231 Increased bridge range / Bugfixes 2018-07-14 09:26:34 -04:00
Anuken 738c0a5c9c Merge pull request #143 from player20033/patch-1
#142 Solution
2018-07-13 22:12:51 -04:00
player20033 a2f7d3e241 #142 Solution 2018-07-14 10:02:13 +08:00
Anuken 9b86ded164 Merge pull request #141 from cloud9350/patch-4
Update bundle_ko.properties
2018-07-13 20:00:34 -04:00
Gureumi 6cbb645b10 Update bundle_ko.properties 2018-07-14 08:54:55 +09:00
Anuken 066a1d7591 Merge remote-tracking branch 'origin/4.0' into 4.0
# Conflicts:
#	core/src/io/anuke/mindustry/Vars.java
2018-07-13 19:54:20 -04:00
Anuken 5f82d575ee iOS fixes 2018-07-13 19:50:18 -04:00
Anuken 302ae0a83c Merge remote-tracking branch 'origin/4.0' into 4.0
# Conflicts:
#	core/assets/bundles/bundle_ko.properties
2018-07-13 13:48:52 -04:00
Anuken 82c4c791cc Added message for loading broken saves 2018-07-13 13:43:37 -04:00
Anuken 3c0310120d Merge pull request #140 from cloud9350/patch-4
Update bundle_ko.properties
2018-07-13 13:24:05 -04:00
Anuken 21c106e9d5 Updated splitter description 2018-07-13 12:53:40 -04:00
Anuken 2c8cd2f8dc Fixed autosave not triggering 2018-07-13 12:50:45 -04:00
Anuken 380d9908b4 Fixed chat stopping velocity / Fixed drone repair not being synced 2018-07-13 11:46:16 -04:00
Anuken 6abef7d645 Fixed item bridge crash 2018-07-13 11:09:33 -04:00
Anuken 98ac25ac29 Fixed distributor 2018-07-13 10:21:17 -04:00
Anuken 93bec04c92 Fixed overflow gate, splitter 2018-07-13 10:11:42 -04:00
Gureumi 136559cddd Update bundle_ko.properties 2018-07-13 22:34:41 +09:00
Gureumi 3f63a6ed70 Update bundle_ko.properties 2018-07-13 22:24:00 +09:00
Anuken 2fcb3c4420 Bugfixes 2018-07-12 21:13:08 -04:00
Anuken baaeb229cf Formatting 2018-07-12 20:37:15 -04:00
Anuken a3bda3a941 Changed crash report location 2018-07-12 19:00:02 -04:00
Anuken 3d536aa28d Fixed player names not displaying 2018-07-12 18:58:02 -04:00
Anuken 454267455b Fixed mobile consume frag / Added ability for ship to mine 2018-07-12 15:44:05 -04:00
Anuken 8e9adeb4b4 Fixed web version bugs 2018-07-12 14:06:50 -04:00
Anuken 1f18e7beed Improved glitchy interpolation / Updated uCore 2018-07-12 11:38:09 -04:00
Anuken b5e8e54107 Added build tools to travis 2018-07-12 10:24:56 -04:00
Anuken f41e426b69 Reactor balancing / Fixed generators / Fixed pump crash / Travis update 2018-07-12 10:20:38 -04:00
Anuken 6375862a71 Fixed deadlock / Crafter fixes / Autotile fixes / Low FPS ship fixes 2018-07-12 09:11:28 -04:00
Anuken be2a745d78 Increased ore generation amount 2018-07-11 19:58:49 -04:00
Anuken d89feb2c75 Bugfixes, minor optimizations 2018-07-11 19:57:27 -04:00
Anuken b4a20c8fcb Fixed fog glitching around during screenshake 2018-07-11 12:30:07 -04:00
Anuken 73087a92f4 Fixed build error 2018-07-11 12:21:46 -04:00
Anuken 2b58bd5bd8 Optimizations 2018-07-11 12:19:21 -04:00
Anuken bce0101278 Fixed some multiplayer crashes 2018-07-10 21:04:14 -04:00
Anuken bba418c79d Added consumers for repair/resupply points 2018-07-10 18:57:50 -04:00
Anuken cb58eb82fc Added requirement display / Text fixes / Better crash reports 2018-07-10 16:53:35 -04:00
Anuken 3aafffabc1 Added BlockConsumeFragment 2018-07-10 11:41:51 -04:00
Anuken 66b9cdf64c Conduit autotiling / Added Block.onProximityUpdate() 2018-07-10 10:14:10 -04:00
Anuken d31fbf3b6f Added flyer shadows / Fixed block inventory rebuild spawn / Distributor 2018-07-09 20:18:50 -04:00
Anuken dbee30a412 Updated uCore / Made splitter distribute properly 2018-07-09 18:14:55 -04:00
Anuken f3cc881930 Status bar cleanup / Fixed power distribution / Fixed adjacency updates 2018-07-09 14:25:52 -04:00
Anuken 3d9c9e639d Automatic external bundle loading 2018-07-09 11:24:24 -04:00
Anuken d6969d2c74 Removed unused bundle keys 2018-07-09 11:06:15 -04:00
Anuken b7e28a73ba Bugfixes / Added tool to re-format bundles with missing text 2018-07-09 11:02:30 -04:00
Anuken 1e8206757d Various bugfixes / Fixed persistent inventory, block crashes 2018-07-08 23:59:02 -04:00
Anuken a0e94577fc Fixed infinite red square, glitchy shadows 2018-07-08 17:04:32 -04:00
Anuken a2a0c2f791 Fixed startup error 2018-07-08 16:50:52 -04:00
Anuken 63a0fde121 Offload optimizations / Compile errors fixed / Massive refactor 2018-07-08 16:38:29 -04:00
Anuken c06152de07 Consumption system more or less complete 2018-07-08 00:04:41 -04:00
Anuken 0b3ccbda20 Merge pull request #136 from JaiunL/patch-1
Translated a few parts
2018-07-07 21:00:03 -04:00
Anuken 97b7eb0768 Bugfixes / Compile error fixes / Removed routers 2018-07-07 13:48:20 -04:00
Jaiun Lee b712301804 Revised 2018-07-07 13:29:11 +09:00
Jaiun Lee 76ebe3ff41 Translated a few parts
Mostly focused on grammatical errors and inconsistency in styling. Still need multiple revisions on a full spectrum. Discord: Reaper#7917
2018-07-07 13:24:00 +09:00
Anuken d988bb1821 Massive amount of bugfixes / Multi-liquid support / Broken build 2018-07-06 23:24:14 -04:00
Anuken 64f1fbe400 Fixed many various crashes 2018-07-06 12:04:33 -04:00
Anuken c2c837329c Fixed block construction / Added build version to crash 2018-07-06 10:54:20 -04:00
Anuken b6531efe08 Merge remote-tracking branch 'origin/4.0' into 4.0 2018-07-06 09:52:26 -04:00
Anuken 2c97a4aefe Fixed importing saves / File chooser bad size 2018-07-06 09:52:18 -04:00
Anuken f0ffebd58c Delete vcs.xml 2018-07-05 18:56:48 -04:00
Anuken 05e407f064 Delete github_settings.xml 2018-07-05 18:56:33 -04:00
Anuken 6dd2eec1b6 Merge pull request #131 from Lorex/master
Add Traditional Chinese support
2018-07-05 18:56:12 -04:00
Anuken df13436688 Merge pull request #135 from cloud9350/patch-1
Update language file for game beta version
2018-07-05 18:54:27 -04:00
Anuken fa0d89b6df Fixed crash 2018-07-05 17:37:24 -04:00
Anuken ab0f8defa4 Merge branch '4.0' of https://github.com/Anuken/Mindustry into 4.0 2018-07-05 17:11:27 -04:00
Anuken 6b3329845b Fixed onConstructFinish() not syncing rotation 2018-07-05 16:49:29 -04:00
Anuken fc07c5efa6 Fixed carry entity chain reaction 2018-07-05 16:01:12 -04:00
Anuken 23188df276 Fixed slowdown when FPS got lower than TPS 2018-07-05 15:40:31 -04:00
Anuken 5e66dfcc36 Minor optimization 2018-07-05 15:23:20 -04:00
Anuken bc36c57f9f Improved enemy drop tables 2018-07-05 14:09:46 -04:00
Anuken 5efa7d551e Fixed enemies dropping duplicate items 2018-07-05 14:05:11 -04:00
Anuken 8c6cda0d97 Fixed pathfinding using water / Fixed mech factories moving too fast 2018-07-05 13:38:42 -04:00
Anuken 4fa165bc6a Updated uCore 2018-07-05 13:23:31 -04:00
Anuken da6695ceee Decreased flyer speed, damage, moved start wave / Wave time increase 2018-07-05 13:20:54 -04:00
Anuken 1043a5bb0d Fixed ghosts appearing in player list 2018-07-05 12:30:29 -04:00
Anuken c7625278b5 Fixed autosave not triggering, offset player resource bars 2018-07-05 12:19:57 -04:00
Anuken b9ef88951e Massive amount of bugfixes, too many to list in commit log 2018-07-05 12:05:53 -04:00
Gureumi 14fe35bba0 Update bundle_ko.properties 2018-07-05 22:21:12 +09:00
Anuken 4a32706c5a Misc bugfixes / Unified build/break block system 2018-07-04 23:52:21 -04:00
Anuken cc92edfa58 Fixed item drop duplicates, invincible players 2018-07-04 15:22:59 -04:00
Anuken 071d0fbbf7 Fixed player names not displaying 2018-07-04 15:01:29 -04:00
Anuken 6ff44fddd0 Fixed plastanium compressor 2018-07-04 13:42:15 -04:00
Anuken 8760e99c43 Fixed dedicated server crash 2018-07-04 13:18:50 -04:00
Anuken 423f5f16bb Fixed extremely glitchy player pickup 2018-07-04 12:31:09 -04:00
Anuken 1c8c702afd Made flying units appear later in waves 2018-07-04 11:58:41 -04:00
Anuken d2a739262d Added admin wave sending / Admin system fixes / Build fix 2018-07-04 11:57:04 -04:00
Anuken 76d0285e3f Added freebuild / Power system fix / Net packet pool fix / Crash fixes 2018-07-04 11:38:59 -04:00
Anuken cb9d3414f2 Merge branch '4.0' of https://github.com/Anuken/Mindustry into 4.0 2018-07-03 20:07:15 -04:00
Anuken 12f444750c Fixed custom client inversion 2018-07-03 20:03:51 -04:00
Anuken 5fdf7e3a12 Updated annotations module 2018-07-03 19:58:24 -04:00
Anuken 60deb9205b uCore update / Kick packet priority / Custom client lock / Net fixes 2018-07-03 19:48:29 -04:00
Anuken 677526cb16 Fixed iOS NullPtr 2018-07-03 19:03:53 -04:00
Anuken 359a392cca Fixed various bugs and crashes 2018-07-03 15:53:06 -04:00
Anuken 4d600f973a Added max power output display to item power generator 2018-07-03 13:20:01 -04:00
Anuken 4a626bc920 Various net crashes fixed 2018-07-03 13:13:02 -04:00
Anuken 3597860074 Additional crashes/synchronizations fixed 2018-07-03 12:57:22 -04:00
Anuken 68d2c30c38 More bugfixes 2018-07-03 12:48:20 -04:00
Anuken e210d9c08e Fixed server verifying mobile player positions 2018-07-03 12:29:14 -04:00
Anuken c9b77e4e23 Crash fixes 2018-07-03 12:27:37 -04:00
Anuken 08690b9d9e Merge pull request #133 from cloud9350/patch-4
fix fatal language translate (bundle ko)
2018-06-18 23:10:07 -04:00
Gureumi d3eb9c9d99 Update bundle_ko.properties 2018-06-19 10:18:32 +09:00
Gureumi a0ef3a0e44 fix fatal language translate (bundle ko)
fix no show server version + host user name on list
2018-06-19 10:13:07 +09:00
Lorex 87c5ad79f4 IC-2018.1.4 <Lorex@DESKTOP-8V15HFB Merge branch 'master' 2018-06-09 16:33:18 +08:00
Lorex 2e210e7adc Add Traditional Chinese support 2018-06-09 16:15:17 +08:00
Lorex c56f4783c0 IC-2018.1.4 <Lorex@DESKTOP-8V15HFB Create vcs.xml, github_settings.xml 2018-06-09 16:13:55 +08:00
Lorex a1d351aa37 IC-2018.1.4 <Lorex@DESKTOP-8V15HFB Overwrite remote https://github.com/Lorex/Mindustry.git to local 2018-06-09 16:02:39 +08:00
1197 changed files with 55156 additions and 31862 deletions
+4
View File
@@ -2,6 +2,8 @@
/core/assets/mindustry-saves/
/core/assets/mindustry-maps/
/core/assets/bundles/output/
/core/assets/.gifimages/
/deploy/
/desktop/packr-out/
/desktop/packr-export/
@@ -19,6 +21,8 @@
/android/assets/mindustry-saves/
/core/assets/gifexport/
/core/assets/version.properties
/core/assets/locales.json
/ios/src/io/anuke/mindustry/gen/
*.gif
version.properties
+3 -2
View File
@@ -5,13 +5,14 @@ jdk:
android:
components:
- android-26
- android-27
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-26
- addon-google_apis-google-27
- build-tools-27.0.3
script:
- ./gradlew desktop:dist
+2 -4
View File
@@ -1,11 +1,9 @@
![Imgur](https://i.imgur.com/w4N0yhv.png)
[![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry)
[![Waffle.io - Columns and their card count](https://badge.waffle.io/Anuken/Mindustry.svg?columns=all)](https://waffle.io/Anuken/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).
_[Issue tracker](https://waffle.io/Anuken/Mindustry)_
_[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_
_[Wiki](http://mindustry.wikia.com/wiki/Mindustry_Wiki)_
_[Discord](https://discord.gg/r8BkXNd)_
@@ -32,7 +30,7 @@ _Building:_ `./gradlew desktop:dist`
---
Gradle may take up to several minutes to download files. Be patient. <br>
After building, the output .JAR file should be in the output JAR file should be in `/desktop/build/libs/desktop-release.jar.`
After building, the output .JAR file should be in `/desktop/build/libs/desktop-release.jar.`
### Downloads
+39
View File
@@ -0,0 +1,39 @@
## Translating for Mindustry
**DISCLAIMER:** *Currently, 4.0 is far from done, which means that things such as block names, descriptions, and core text will be changing often. If you begin translating now, you might have to re-do large chunks of the bundle before final release.*
To begin, log in to your GitHub account, or if you don't have one yet, create it [here](https://github.com/).
Consult [this list](https://www.science.co.il/language/Locale-codes.php) to find the locale code for your language. Once you've found it,
head over to the translation bundle folder and check the [list of bundles](https://github.com/Anuken/Mindustry/tree/master/core/assets/bundles) that have already been created.
You're looking for a file called "`bundle_`(insert locale code here)`.properties`". If you don't find one, create one manually (more info below).
#### Editing an existing translation
If a translation bundle already exists, that means someone has already started working on a translation. To edit it or translate text, simply click the file and press the edit (pencil) button in the top right. Once you're done editing, press the green "propose file change" button at the bottom, then "create pull request" (twice).
Once this is done, all you need to do is wait for me to approve your changes.
#### Creating a new translation bundle
If a translation bundle for your language *doesn't* exist, you need to create one yourself.
In the folder with all the bundles in it, click the *'create new file'* button, and name it `bundle_(locale code here).properties`.
Then, copy-paste the entire contents of the [English translation bundle](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets/bundles/bundle.properties) into the file, and translate all the necessary text to your language.
Once you are done, press the *propose new file* button at the bottom, then 'create pull request' twice.
#### Useful Information
- When you see text surrounded by square brackets, such as `[RED]`, `[]` or `[accent]`, this indicates a color code. Don't translate it.
- `{0}` means an argument that will be replaced when the text is displayed. For example, `Wave: {0}` will replace the `{0}` with whatever wave you are in.
- Empty lines are fine, and it doesn't matter in what order you place the text.
- `\n` means "new line". If you want to split text into multiple lines, use `\n` to do it.
#### Testing your translation bundle
There are two ways to test the translation bundle:
1) Assuming you have the PC version downloaded, download your bundle file, name it `bundle.properties`, then place it in the same folder as the Mindustry desktop executable and run it. *You should get a popup message in-game confirming that you have loaded an external translation.*
2) For advanced users: simply download your fork of mindustry and compile/run the game.
**And that's it.**
*(...of course, that's never really it. Bother me on Discord when something inevitably goes wrong.)*
+2 -2
View File
@@ -20,8 +20,8 @@
<activity
android:name="io.anuke.mindustry.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="sensor"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
android:screenOrientation="user"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
-1
View File
@@ -24,7 +24,6 @@ dependencies {
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_64"
implementation "com.badlogicgames.gdx:gdx-ai:$aiVersion"
implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
}
@@ -12,7 +12,6 @@ import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Base64Coder;
@@ -25,8 +24,8 @@ import io.anuke.kryonet.KryoClient;
import io.anuke.kryonet.KryoServer;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.io.Saves.SaveSlot;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.ui.dialogs.FileChooser;
import io.anuke.ucore.function.Consumer;
@@ -48,238 +47,206 @@ import java.util.Locale;
import static io.anuke.mindustry.Vars.*;
public class AndroidLauncher extends AndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1;
public class AndroidLauncher extends PatchedAndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1;
boolean doubleScaleTablets = true;
FileChooser chooser;
boolean doubleScaleTablets = true;
FileChooser chooser;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true;
Platform.instance = new Platform(){
DateFormat format = SimpleDateFormat.getDateTimeInstance();
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
@Override
public String format(Date date){
return format.format(date);
}
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true;
@Override
public String format(int number){
return NumberFormat.getIntegerInstance().format(number);
}
Platform.instance = new Platform(){
DateFormat format = SimpleDateFormat.getDateTimeInstance();
@Override
public void addDialog(TextField field, int length){
TextFieldDialogListener.add(field, 0, length);
}
@Override
public boolean hasDiscord() {
return isPackageInstalled("com.discord");
}
@Override
public String getLocaleName(Locale locale){
return locale.getDisplayName(locale);
}
@Override
public String format(Date date){
return format.format(date);
}
@Override
public void openDonations(){
showDonations();
}
@Override
public String format(int number){
return NumberFormat.getIntegerInstance().format(number);
}
@Override
public ThreadProvider getThreadProvider(){
return new DefaultThreadImpl();
}
@Override
public void addDialog(TextField field, int length){
TextFieldDialogListener.add(field, 0, length);
}
@Override
public boolean isDebug(){
return false;
}
@Override
public String getLocaleName(Locale locale){
return locale.getDisplayName(locale);
}
@Override
public String getUUID(){
try{
String s = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
int len = s.length();
byte[] data = new byte[len / 2];
for(int i = 0; i < len; i += 2){
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
String result = new String(Base64Coder.encode(data));
if(result.equals("AAAAAAAAAOA=")) throw new RuntimeException("Bad UUID.");
return result;
}catch(Exception e){
return super.getUUID();
}
}
@Override
public void openDonations() {
showDonations();
}
@Override
public void shareFile(FileHandle file){
}
@Override
public ThreadProvider getThreadProvider() {
return new DefaultThreadImpl();
}
@Override
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){
chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
chooser.show();
chooser = null;
}else{
ArrayList<String> perms = new ArrayList<>();
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE);
}
}
@Override
public boolean isDebug() {
return false;
}
@Override
public void beginForceLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
@Override
public String getUUID() {
try {
String s = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
String result = new String(Base64Coder.encode(data));
if(result.equals("AAAAAAAAAOA=")) throw new RuntimeException("Bad UUID.");
return result;
}catch (Exception e){
return super.getUUID();
}
}
@Override
public void shareFile(FileHandle file){
}
@Override
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype) {
chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
chooser.show();
chooser = null;
}else {
ArrayList<String> perms = new ArrayList<>();
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
requestPermissions(perms.toArray(new String[perms.size()]), PERMISSION_REQUEST_CODE);
}
}
@Override
public void beginForceLandscape() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
@Override
public void endForceLandscape() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
@Override
public boolean canDonate(){
return true;
}
};
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())){
Unit.dp.addition = 0.5f;
}
config.hideStatusBar = true;
@Override
public void endForceLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
@Override
public boolean canDonate(){
return true;
}
};
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())){
Unit.dp.addition = 0.5f;
}
config.hideStatusBar = true;
Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer());
initialize(new Mindustry(), config);
checkFiles(getIntent());
}
checkFiles(getIntent());
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
if(requestCode == PERMISSION_REQUEST_CODE){
for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return;
}
if(chooser != null){
chooser.show();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
if(requestCode == PERMISSION_REQUEST_CODE){
for(int i : grantResults){
if(i != PackageManager.PERMISSION_GRANTED) return;
}
private void checkFiles(Intent intent){
try{
Uri uri = intent.getData();
if(uri != null){
File myFile = null;
String scheme = uri.getScheme();
if(scheme.equals("file")){
String fileName = uri.getEncodedPath();
myFile = new File(fileName);
}else if(!scheme.equals("content")){
//error
return;
}
boolean save = uri.getPath().endsWith(saveExtension);
boolean map = uri.getPath().endsWith(mapExtension);
InputStream inStream;
if(myFile != null) inStream = new FileInputStream(myFile);
else inStream = getContentResolver().openInputStream(uri);
Gdx.app.postRunnable(() -> {
if(save){ //open save
System.out.println("Opening save.");
FileHandle file = Gdx.files.local("temp-save." + saveExtension);
file.write(inStream, false);
if(SaveIO.isSaveValid(file)){
try{
SaveSlot slot = control.getSaves().importSave(file);
ui.load.runLoadSave(slot);
}catch(IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));
}
}else{
ui.showError("$text.save.import.invalid");
}
}else if(map){ //open map
Gdx.app.postRunnable(() -> {
System.out.println("Opening map.");
if(!ui.editor.isShown()){
ui.editor.show();
}
ui.editor.beginEditMap(inStream);
});
}
});
}
}catch(IOException e){
e.printStackTrace();
}
}
if(chooser != null){
chooser.show();
}
}
}
private boolean isPackageInstalled(String packagename){
try{
getPackageManager().getPackageInfo(packagename, 0);
return true;
}catch(Exception e){
return false;
}
}
private void checkFiles(Intent intent){
try {
Uri uri = intent.getData();
if (uri != null) {
File myFile = null;
String scheme = uri.getScheme();
if (scheme.equals("file")) {
String fileName = uri.getEncodedPath();
myFile = new File(fileName);
} else if (!scheme.equals("content")) {
//error
return;
}
private boolean isTablet(Context context){
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
boolean save = uri.getPath().endsWith(saveExtension);
boolean map = uri.getPath().endsWith(mapExtension);
InputStream inStream;
if (myFile != null) inStream = new FileInputStream(myFile);
else inStream = getContentResolver().openInputStream(uri);
Gdx.app.postRunnable(() -> {
if(save){ //open save
System.out.println("Opening save.");
FileHandle file = Gdx.files.local("temp-save." + saveExtension);
file.write(inStream, false);
if(SaveIO.isSaveValid(file)){
try{
SaveSlot slot = control.getSaves().importSave(file);
ui.load.runLoadSave(slot);
}catch (IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));
}
}else{
ui.showError("$text.save.import.invalid");
}
}else if(map){ //open map
Gdx.app.postRunnable(() -> {
System.out.println("Opening map.");
if (!ui.editor.isShown()) {
ui.editor.show();
}
ui.editor.beginEditMap(inStream);
});
}
});
}
}catch (IOException e){
e.printStackTrace();
}
}
private boolean isPackageInstalled(String packagename) {
try {
getPackageManager().getPackageInfo(packagename, 0);
return true;
} catch (Exception e) {
return false;
}
}
private boolean isTablet(Context context) {
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}
private void showDonations(){
Intent intent = new Intent(this, DonationsActivity.class);
startActivity(intent);
}
private void showDonations(){
Intent intent = new Intent(this, DonationsActivity.class);
startActivity(intent);
}
}
@@ -11,20 +11,20 @@ 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;
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(){
this.activity = (Activity) Gdx.app;
load();
}
public AndroidTextFieldDialog show() {
public AndroidTextFieldDialog show(){
activity.runOnUiThread(() -> {
activity.runOnUiThread(() -> {
AlertDialog dialog = builder.create();
dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
@@ -33,12 +33,12 @@ public class AndroidTextFieldDialog{
});
return this;
}
return this;
}
private AndroidTextFieldDialog load() {
private AndroidTextFieldDialog load(){
activity.runOnUiThread(() -> {
activity.runOnUiThread(() -> {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
LayoutInflater li = LayoutInflater.from(activity);
@@ -55,64 +55,65 @@ public class AndroidTextFieldDialog{
isBuild = true;
});
// Wait till TextPrompt is built.
while (!isBuild) {
try {
Thread.sleep(10);
} catch (InterruptedException e) { }
}
// Wait till TextPrompt is built.
while(!isBuild){
try{
Thread.sleep(10);
}catch(InterruptedException e){
}
}
return this;
}
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 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 setText(CharSequence value){
userInput.append(value);
return this;
}
public AndroidTextFieldDialog setCancelButtonLabel(CharSequence label) {
builder.setNegativeButton(label, (dialog, id) -> dialog.cancel());
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()) {
public AndroidTextFieldDialog setConfirmButtonLabel(CharSequence label){
builder.setPositiveButton(label, (dialog, id) -> {
if(listener != null && !userInput.getText().toString().isEmpty()){
listener.confirm(userInput.getText().toString());
}
});
return this;
}
return this;
}
public AndroidTextFieldDialog setTextPromptListener(TextPromptListener listener) {
this.listener = listener;
return this;
}
public AndroidTextFieldDialog setTextPromptListener(TextPromptListener listener){
this.listener = listener;
return this;
}
public AndroidTextFieldDialog setInputType(int type) {
userInput.setInputType(type);
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);
}
public AndroidTextFieldDialog setMaxLength(int length){
userInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(length)});
return this;
}
public interface TextPromptListener{
void confirm(String text);
}
}
@@ -8,12 +8,9 @@ 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 {
DonationsFragment donationsFragment;
public class DonationsActivity extends FragmentActivity{
/**
* Google
*/
@@ -21,13 +18,14 @@ public class DonationsActivity extends FragmentActivity {
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" };
"mindustry.donation.25", "mindustry.donation.50"};
DonationsFragment donationsFragment;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTheme(R.style.GdxTheme);
@@ -35,7 +33,7 @@ public class DonationsActivity extends FragmentActivity {
setContentView(R.layout.donations_activity);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (BuildConfig.DONATIONS_GOOGLE) {
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);
@@ -48,9 +46,10 @@ public class DonationsActivity extends FragmentActivity {
public void onStart(){
super.onStart();
Button b = ((Button)findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button));
b.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
Button b = ((Button) findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button));
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
donationsFragment.donateGoogleOnClick(donationsFragment.getView());
b.setEnabled(false);
}
@@ -58,20 +57,19 @@ public class DonationsActivity extends FragmentActivity {
}
/**
* 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) {
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Button b = ((Button)findViewById(org.sufficientlysecure.donations.R.id.donations__google_android_market_donate_button));
Button b = ((Button) 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) {
if(fragment != null){
fragment.onActivityResult(requestCode, resultCode, data);
//TODO donation event, set settings?
}
@@ -0,0 +1,20 @@
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();
}
}
@@ -11,57 +11,57 @@ 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;
private TextField field;
private int type;
private int 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;
}
});
}
//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){
add(field, 0, 16);
}
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;
}
});
}
//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){
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();
public void clicked(final InputEvent event, float x, float y){
dialog.setTextPromptListener(text -> {
if(Gdx.app.getType() == ApplicationType.Desktop) return;
AndroidTextFieldDialog dialog = new AndroidTextFieldDialog();
dialog.setTextPromptListener(text -> {
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);
}
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();
dialog.setConfirmButtonLabel("OK").setText(field.getText());
dialog.setCancelButtonLabel("Cancel");
dialog.setMaxLength(max);
dialog.show();
event.cancel();
}
}
}
@@ -9,59 +9,31 @@ import java.lang.annotation.Target;
* Goal: To create a system to send events to the server from the client and vice versa, without creating a new packet type each time.<br>
* These events may optionally also trigger on the caller client/server as well.<br>
*/
public class Annotations {
public class Annotations{
/**Marks a method as invokable remotely across a server/client connection.*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface Remote {
/**Specifies the locations from which this method can be invoked.*/
Loc targets() default Loc.server;
/**Specifies which methods are generated. Only affects server-to-client methods.*/
Variant variants() default Variant.all;
/**The local locations where this method is called locally, when invoked.*/
Loc called() default Loc.none;
/**Whether to forward this packet to all other clients upon recieval. Server only.*/
boolean forward() default false;
/**Whether the packet for this method is sent with UDP instead of TCP.
* UDP is faster, but is prone to packet loss and duplication.*/
boolean unreliable() default false;
/**The simple class name where this method is placed.*/
String in() default "Call";
public enum PacketPriority{
/** Gets put in a queue and processed if not connected. */
normal,
/** Gets handled immediately, regardless of connection status. */
high,
/** Does not get handled unless client is connected. */
low
}
/**Specifies that this method will be used to write classes of the type returned by {@link #value()}.<br>
* This method must return void and have two parameters, the first being of type {@link java.nio.ByteBuffer} and the second
* being the type returned by {@link #value()}.*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface WriteClass {
Class<?> value();
}
/**Specifies that this method will be used to read classes of the type returned by {@link #value()}. <br>
* This method must return the type returned by {@link #value()},
* and have one parameter, being of type {@link java.nio.ByteBuffer}.*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface ReadClass {
Class<?> value();
}
/**A set of two booleans, one specifying server and one specifying client.*/
public enum Loc {
/**Method can only be invoked on the client from the server.*/
/** A set of two booleans, one specifying server and one specifying client. */
public enum Loc{
/** Method can only be invoked on the client from the server. */
server(true, false),
/**Method can only be invoked on the server from the client.*/
/** Method can only be invoked on the server from the client. */
client(false, true),
/**Method can be invoked from anywhere*/
/** Method can be invoked from anywhere */
both(true, true),
/**Neither server no client.*/
/** Neither server nor client. */
none(false, false);
/**If true, this method can be invoked ON clients FROM servers.*/
/** If true, this method can be invoked ON clients FROM servers. */
public final boolean isServer;
/**If true, this method can be invoked ON servers FROM clients.*/
/** If true, this method can be invoked ON servers FROM clients. */
public final boolean isClient;
Loc(boolean server, boolean client){
@@ -70,12 +42,12 @@ public class Annotations {
}
}
public enum Variant {
/**Method can only be invoked targeting one player.*/
public enum Variant{
/** Method can only be invoked targeting one player. */
one(true, false),
/**Method can only be invoked targeting all players.*/
/** Method can only be invoked targeting all players. */
all(false, true),
/**Method targets both one player and all players.*/
/** Method targets both one player and all players. */
both(true, true);
public final boolean isOne, isAll;
@@ -85,4 +57,52 @@ public class Annotations {
this.isAll = isAll;
}
}
/** Marks a method as invokable remotely across a server/client connection. */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface Remote{
/** Specifies the locations from which this method can be invoked. */
Loc targets() default Loc.server;
/** Specifies which methods are generated. Only affects server-to-client methods. */
Variant variants() default Variant.all;
/** The local locations where this method is called locally, when invoked. */
Loc called() default Loc.none;
/** Whether to forward this packet to all other clients upon recieval. Client only. */
boolean forward() default false;
/**
* Whether the packet for this method is sent with UDP instead of TCP.
* UDP is faster, but is prone to packet loss and duplication.
*/
boolean unreliable() default false;
/** Priority of this event. */
PacketPriority priority() default PacketPriority.normal;
}
/**
* Specifies that this method will be used to write classes of the type returned by {@link #value()}.<br>
* This method must return void and have two parameters, the first being of type {@link java.nio.ByteBuffer} and the second
* being the type returned by {@link #value()}.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface WriteClass{
Class<?> value();
}
/**
* Specifies that this method will be used to read classes of the type returned by {@link #value()}. <br>
* This method must return the type returned by {@link #value()},
* and have one parameter, being of type {@link java.nio.ByteBuffer}.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface ReadClass{
Class<?> value();
}
}
@@ -2,14 +2,14 @@ package io.anuke.annotations;
import java.util.ArrayList;
/**Represents a class witha list method entries to include in it.*/
public class ClassEntry {
/**All methods in this generated class.*/
/** Represents a class witha list method entries to include in it. */
public class ClassEntry{
/** All methods in this generated class. */
public final ArrayList<MethodEntry> methods = new ArrayList<>();
/**Simple class name.*/
/** Simple class name. */
public final String name;
public ClassEntry(String name) {
public ClassEntry(String name){
this.name = name;
}
}
@@ -10,12 +10,16 @@ import javax.tools.Diagnostic.Kind;
import java.util.HashMap;
import java.util.Set;
/**This class finds reader and writer methods annotated by the {@link io.anuke.annotations.Annotations.WriteClass}
* and {@link io.anuke.annotations.Annotations.ReadClass} annotations.*/
public class IOFinder {
/**
* This class finds reader and writer methods annotated by the {@link io.anuke.annotations.Annotations.WriteClass}
* and {@link io.anuke.annotations.Annotations.ReadClass} annotations.
*/
public class IOFinder{
/**Finds all class serializers for all types and returns them. Logs errors when necessary.
* Maps fully qualified class names to their serializers.*/
/**
* Finds all class serializers for all types and returns them. Logs errors when necessary.
* Maps fully qualified class names to their serializers.
*/
public HashMap<String, ClassSerializer> findSerializers(RoundEnvironment env){
HashMap<String, ClassSerializer> result = new HashMap<>();
@@ -51,33 +55,33 @@ public class IOFinder {
}
private String getValue(WriteClass write){
try {
try{
Class<?> type = write.value();
return type.getName();
}catch (MirroredTypeException e){
}catch(MirroredTypeException e){
return e.getTypeMirror().toString();
}
}
private String getValue(ReadClass read){
try {
try{
Class<?> type = read.value();
return type.getName();
}catch (MirroredTypeException e){
}catch(MirroredTypeException e){
return e.getTypeMirror().toString();
}
}
/**Information about read/write methods for a specific class type.*/
/** Information about read/write methods for a specific class type. */
public static class ClassSerializer{
/**Fully qualified method name of the reader.*/
/** Fully qualified method name of the reader. */
public final String readMethod;
/**Fully qualified method name of the writer.*/
/** Fully qualified method name of the writer. */
public final String writeMethod;
/**Fully qualified class type name.*/
/** Fully qualified class type name. */
public final String classType;
public ClassSerializer(String readMethod, String writeMethod, String classType) {
public ClassSerializer(String readMethod, String writeMethod, String classType){
this.readMethod = readMethod;
this.writeMethod = writeMethod;
this.classType = classType;
@@ -1,34 +1,39 @@
package io.anuke.annotations;
import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.PacketPriority;
import io.anuke.annotations.Annotations.Variant;
import javax.lang.model.element.ExecutableElement;
/**Class that repesents a remote method to be constructed and put into a class.*/
public class MethodEntry {
/**Simple target class name.*/
/** Class that repesents a remote method to be constructed and put into a class. */
public class MethodEntry{
/** Simple target class name. */
public final String className;
/**Fully qualified target method to call.*/
/** Fully qualified target method to call. */
public final String targetMethod;
/**Whether this method can be called on a client/server.*/
/** Whether this method can be called on a client/server. */
public final Loc where;
/**Whether an additional 'one' and 'all' method variant is generated. At least one of these must be true.
* Only applicable to client (server-invoked) methods.*/
/**
* Whether an additional 'one' and 'all' method variant is generated. At least one of these must be true.
* Only applicable to client (server-invoked) methods.
*/
public final Variant target;
/**Whether this method is called locally as well as remotely.*/
/** Whether this method is called locally as well as remotely. */
public final Loc local;
/**Whether this method is unreliable and uses UDP.*/
/** Whether this method is unreliable and uses UDP. */
public final boolean unreliable;
/**Whether to forward this method call to all other clients when a client invokes it. Server only.*/
/** Whether to forward this method call to all other clients when a client invokes it. Server only. */
public final boolean forward;
/**Unique method ID.*/
/** Unique method ID. */
public final int id;
/**The element method associated with this entry.*/
/** The element method associated with this entry. */
public final ExecutableElement element;
/** The assigned packet priority. Only used in clients. */
public final PacketPriority priority;
public MethodEntry(String className, String targetMethod, Loc where, Variant target,
Loc local, boolean unreliable, boolean forward, int id, ExecutableElement element) {
Loc local, boolean unreliable, boolean forward, int id, ExecutableElement element, PacketPriority priority){
this.className = className;
this.forward = forward;
this.targetMethod = targetMethod;
@@ -38,10 +43,11 @@ public class MethodEntry {
this.id = id;
this.element = element;
this.unreliable = unreliable;
this.priority = priority;
}
@Override
public int hashCode() {
public int hashCode(){
return targetMethod.hashCode();
}
}
@@ -18,25 +18,27 @@ import java.util.*;
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)
@SupportedAnnotationTypes({
"io.anuke.annotations.Annotations.Remote",
"io.anuke.annotations.Annotations.WriteClass",
"io.anuke.annotations.Annotations.ReadClass",
"io.anuke.annotations.Annotations.Remote",
"io.anuke.annotations.Annotations.WriteClass",
"io.anuke.annotations.Annotations.ReadClass",
})
public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
/**Maximum size of each event packet.*/
public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
/** Maximum size of each event packet. */
public static final int maxPacketSize = 4096;
/**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";
/**Name of class that handles reading and invoking packets on the server.*/
/** Name of class that handles reading and invoking packets on the server. */
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";
/**Simple class name of generated class name.*/
private static final String callLocation = "Call";
/**Processing round number.*/
/** Processing round number. */
private int round;
//class serializers
@@ -51,7 +53,7 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
private ArrayList<ClassEntry> classes;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
public synchronized void init(ProcessingEnvironment processingEnv){
super.init(processingEnv);
//put all relevant utils into utils class
Utils.typeUtils = processingEnv.getTypeUtils();
@@ -61,15 +63,15 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round > 1) return false; //only process 2 rounds
round ++;
round++;
try {
try{
//round 1: find all annotations, generate *writers*
if(round == 1) {
if(round == 1){
//get serializers
serializers = new IOFinder().findSerializers(roundEnv);
@@ -88,33 +90,33 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
orderedElements.sort(Comparator.comparing(Object::toString));
//create methods
for (Element element : orderedElements) {
for(Element element : orderedElements){
Remote annotation = element.getAnnotation(Remote.class);
//check for static
if (!element.getModifiers().contains(Modifier.STATIC) || !element.getModifiers().contains(Modifier.PUBLIC)) {
if(!element.getModifiers().contains(Modifier.STATIC) || !element.getModifiers().contains(Modifier.PUBLIC)){
Utils.messager.printMessage(Kind.ERROR, "All @Remote methods must be public and static: ", element);
}
//can't generate none methods
if (annotation.targets() == Loc.none) {
if(annotation.targets() == Loc.none){
Utils.messager.printMessage(Kind.ERROR, "A @Remote method's targets() cannot be equal to 'none':", element);
}
//get and create class entry if needed
if (!classMap.containsKey(annotation.in())) {
ClassEntry clas = new ClassEntry(annotation.in());
classMap.put(annotation.in(), clas);
if(!classMap.containsKey(callLocation)){
ClassEntry clas = new ClassEntry(callLocation);
classMap.put(callLocation, clas);
classes.add(clas);
Utils.messager.printMessage(Kind.NOTE, "Generating class '" + clas.name + "'.");
}
ClassEntry entry = classMap.get(annotation.in());
ClassEntry entry = classMap.get(callLocation);
//create and add entry
MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(),
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement) element);
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement) element, annotation.priority());
entry.methods.add(method);
methods.add(method);
@@ -127,7 +129,7 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
writegen.generateFor(classes, packageName);
return true;
}else if(round == 2) { //round 2: generate all *readers*
}else if(round == 2){ //round 2: generate all *readers*
RemoteReadGenerator readgen = new RemoteReadGenerator(serializers);
//generate server readers
@@ -147,7 +149,7 @@ public class RemoteMethodAnnotationProcessor extends AbstractProcessor {
return true;
}
}catch (Exception e){
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
@@ -14,22 +14,25 @@ import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.List;
/**Generates code for reading remote invoke packets on the client and server.*/
public class RemoteReadGenerator {
/** Generates code for reading remote invoke packets on the client and server. */
public class RemoteReadGenerator{
private final HashMap<String, ClassSerializer> serializers;
/**Creates a read generator that uses the supplied serializer setup.*/
public RemoteReadGenerator(HashMap<String, ClassSerializer> serializers) {
/** Creates a read generator that uses the supplied serializer setup. */
public RemoteReadGenerator(HashMap<String, ClassSerializer> serializers){
this.serializers = serializers;
}
/**Generates a class for reading remote invoke packets.
/**
* Generates a class for reading remote invoke packets.
*
* @param entries List of methods to use/
* @param className Simple target class 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.
*/
public void generateFor(List<MethodEntry> entries, String className, String packageName, boolean needsPlayer)
throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException {
throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException{
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
@@ -69,10 +72,10 @@ public class RemoteReadGenerator {
StringBuilder varResult = new StringBuilder();
//go through each parameter
for(int i = 0; i < entry.element.getParameters().size(); i ++){
for(int i = 0; i < entry.element.getParameters().size(); i++){
VariableElement var = entry.element.getParameters().get(i);
if(!needsPlayer || i != 0) { //if client, skip first parameter since it's always of type player and doesn't need to be read
if(!needsPlayer || i != 0){ //if client, skip first parameter since it's always of type player and doesn't need to be read
//full type name of parameter
String typeName = var.asType().toString();
//name of parameter
@@ -81,17 +84,17 @@ public class RemoteReadGenerator {
String capName = typeName.equals("byte") ? "" : Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
//write primitives automatically
if (Utils.isPrimitive(typeName)) {
if (typeName.equals("boolean")) {
if(Utils.isPrimitive(typeName)){
if(typeName.equals("boolean")){
readBlock.addStatement("boolean " + varName + " = buffer.get() == 1");
} else {
}else{
readBlock.addStatement(typeName + " " + varName + " = buffer.get" + capName + "()");
}
} else {
}else{
//else, try and find a serializer
ClassSerializer ser = serializers.get(typeName);
if (ser == null) { //make sure a serializer exists!
if(ser == null){ //make sure a serializer exists!
Utils.messager.printMessage(Kind.ERROR, "No @ReadClass method to read class type: '" + typeName + "'", var);
return;
}
@@ -117,11 +120,11 @@ public class RemoteReadGenerator {
if(entry.forward && entry.where.isServer && needsPlayer){
//call forwarded method
readBlock.addStatement(packageName + "." + entry.className + "." + entry.element.getSimpleName() +
"__forward(player.clientid" + (varResult.length() == 0 ? "" : ", ") + varResult.toString() + ")");
"__forward(player.con.id" + (varResult.length() == 0 ? "" : ", ") + varResult.toString() + ")");
}
readBlock.nextControlFlow("catch (java.lang.Exception e)");
readBlock.addStatement("throw new java.lang.RuntimeException(\"Failed to to read remote method '"+entry.element.getSimpleName() +"'!\", e)");
readBlock.addStatement("throw new java.lang.RuntimeException(\"Failed to to read remote method '" + entry.element.getSimpleName() + "'!\", e)");
readBlock.endControlFlow();
}
@@ -14,17 +14,17 @@ import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.List;
/**Generates code for writing remote invoke packets on the client and server.*/
public class RemoteWriteGenerator {
/** Generates code for writing remote invoke packets on the client and server. */
public class RemoteWriteGenerator{
private final HashMap<String, ClassSerializer> serializers;
/**Creates a write generator that uses the supplied serializer setup.*/
public RemoteWriteGenerator(HashMap<String, ClassSerializer> serializers) {
/** Creates a write generator that uses the supplied serializer setup. */
public RemoteWriteGenerator(HashMap<String, ClassSerializer> serializers){
this.serializers = serializers;
}
/**Generates all classes in this list.*/
public void generateFor(List<ClassEntry> entries, String packageName) throws IOException {
/** Generates all classes in this list. */
public void generateFor(List<ClassEntry> entries, String packageName) throws IOException{
for(ClassEntry entry : entries){
//create builder
@@ -58,7 +58,7 @@ public class RemoteWriteGenerator {
}
}
/**Creates a specific variant for a method entry.*/
/** Creates a specific variant for a method entry. */
private void writeMethodVariant(TypeSpec.Builder classBuilder, MethodEntry methodEntry, boolean toAll, boolean forwarded){
ExecutableElement elem = methodEntry.element;
@@ -99,7 +99,7 @@ public class RemoteWriteGenerator {
if(!forwarded && methodEntry.local != Loc.none){
//add in local checks
if(methodEntry.local != Loc.both){
method.beginControlFlow("if("+getCheckString(methodEntry.local) + " || !io.anuke.mindustry.net.Net.active())");
method.beginControlFlow("if(" + getCheckString(methodEntry.local) + " || !io.anuke.mindustry.net.Net.active())");
}
//concatenate parameters
@@ -109,16 +109,16 @@ public class RemoteWriteGenerator {
//special case: calling local-only methods uses the local player
if(index == 0 && methodEntry.where == Loc.client){
results.append("io.anuke.mindustry.Vars.players[0]");
}else {
}else{
results.append(var.getSimpleName());
}
if(index != elem.getParameters().size() - 1) results.append(", ");
index ++;
index++;
}
//add the statement to call it
method.addStatement("$N." + elem.getSimpleName() + "(" + results.toString() + ")",
((TypeElement)elem.getEnclosingElement()).getQualifiedName().toString());
((TypeElement) elem.getEnclosingElement()).getQualifiedName().toString());
if(methodEntry.local != Loc.both){
method.endControlFlow();
@@ -126,18 +126,20 @@ public class RemoteWriteGenerator {
}
//start control flow to check if it's actually client/server so no netcode is called
method.beginControlFlow("if("+getCheckString(methodEntry.where)+")");
method.beginControlFlow("if(" + getCheckString(methodEntry.where) + ")");
//add statement to create packet from pool
method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "com.badlogic.gdx.utils.Pools");
method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "io.anuke.ucore.util.Pooling");
//assign buffer
method.addStatement("packet.writeBuffer = TEMP_BUFFER");
//assign priority
method.addStatement("packet.priority = (byte)" + methodEntry.priority.ordinal());
//assign method ID
method.addStatement("packet.type = (byte)" + methodEntry.id);
//rewind buffer
method.addStatement("TEMP_BUFFER.position(0)");
for(int i = 0; i < elem.getParameters().size(); i ++){
for(int i = 0; i < elem.getParameters().size(); i++){
//first argument is skipped as it is always the player caller
if((!methodEntry.where.isServer/* || methodEntry.mode == Loc.both*/) && i == 0){
continue;
@@ -162,7 +164,7 @@ public class RemoteWriteGenerator {
method.beginControlFlow("if(io.anuke.mindustry.net.Net.server())");
}
if(Utils.isPrimitive(typeName)) { //check if it's a primitive, and if so write it
if(Utils.isPrimitive(typeName)){ //check if it's a primitive, and if so write it
if(typeName.equals("boolean")){ //booleans are special
method.addStatement("TEMP_BUFFER.put(" + varName + " ? (byte)1 : 0)");
}else{
@@ -179,7 +181,7 @@ public class RemoteWriteGenerator {
}
//add statement for writing it
method.addStatement(ser.writeMethod + "(TEMP_BUFFER, " + varName +")");
method.addStatement(ser.writeMethod + "(TEMP_BUFFER, " + varName + ")");
}
if(writePlayerSkipCheck){ //write end check
@@ -195,7 +197,7 @@ public class RemoteWriteGenerator {
if(forwarded){ //forward packet
if(!methodEntry.local.isClient){ //if the client doesn't get it called locally, forward it back after validation
sendString = "send(";
}else {
}else{
sendString = "sendExcept(exceptSenderID, ";
}
}else if(toAll){ //send to all players / to server
@@ -205,8 +207,8 @@ public class RemoteWriteGenerator {
}
//send the actual packet
method.addStatement("io.anuke.mindustry.net.Net." + sendString + "packet, "+
(methodEntry.unreliable ? "io.anuke.mindustry.net.Net.SendMode.udp" : "io.anuke.mindustry.net.Net.SendMode.tcp")+")");
method.addStatement("io.anuke.mindustry.net.Net." + sendString + "packet, " +
(methodEntry.unreliable ? "io.anuke.mindustry.net.Net.SendMode.udp" : "io.anuke.mindustry.net.Net.SendMode.tcp") + ")");
//end check for server/client
@@ -218,7 +220,7 @@ public class RemoteWriteGenerator {
private String getCheckString(Loc loc){
return loc.isClient && loc.isServer ? "io.anuke.mindustry.net.Net.server() || io.anuke.mindustry.net.Net.client()" :
loc.isClient ? "io.anuke.mindustry.net.Net.client()" :
loc.isServer ? "io.anuke.mindustry.net.Net.server()" : "false";
loc.isClient ? "io.anuke.mindustry.net.Net.client()" :
loc.isServer ? "io.anuke.mindustry.net.Net.server()" : "false";
}
}
@@ -7,14 +7,14 @@ import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
public class Utils {
public class Utils{
public static Types typeUtils;
public static Elements elementUtils;
public static Filer filer;
public static Messager messager;
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){
+49 -16
View File
@@ -9,7 +9,7 @@ buildscript {
dependencies {
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0'
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.android.tools.build:gradle:3.1.0'
classpath 'com.android.tools.build:gradle:3.1.3'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
}
}
@@ -26,8 +26,7 @@ allprojects {
appName = 'Mindustry'
gdxVersion = '1.9.8'
roboVMVersion = '2.3.0'
aiVersion = '1.8.1'
uCoreVersion = 'bc1c2e0848'
uCoreVersion = '64ec4a15148b27749ca7b505dea9743add9902f2'
getVersionString = {
String buildVersion = getBuildVersion()
@@ -43,8 +42,19 @@ allprojects {
return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1)
}
generateLocales = {
def output = '["en",'
def bundles = new File(project(':core').projectDir, 'assets/bundles/')
bundles.listFiles().each { other ->
if(other.name == "bundle.properties") return;
output += '"' + other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + '",'
}
output = (output.substring(0, output.size() - 1) + "]")
new File(project(':core').projectDir, 'assets/locales.json').text = output;
}
writeVersion = {
def pfile = new File('core/assets/version.properties')
def pfile = new File(project(':core').projectDir, 'assets/version.properties')
def props = new Properties()
try{
@@ -86,7 +96,6 @@ project(":desktop") {
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-controllers-lwjgl3:$gdxVersion"
compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.0'
compile 'com.yuvimasory:orange-extensions:1.3.0'
}
}
@@ -102,13 +111,10 @@ project(":html") {
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-ai:$aiVersion:sources"
compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion:sources"
compile "com.sksamuel.gwt:gwt-websockets:1.0.4"
compile "com.sksamuel.gwt:gwt-websockets:1.0.4:sources"
}
compileJava.options.compilerArgs = [
@@ -120,6 +126,23 @@ project(":ios") {
apply plugin: "java"
apply plugin: "robovm"
task copyGen{
copy{
from ("core/build/classes/java/main/io/anuke/mindustry/gen/"){
include "**/*.java"
}
into "ios/src/io/anuke/mindustry/gen"
}
doFirst{
delete{
delete "ios/src/io/anuke/mindustry/gen/"
}
}
}
build.dependsOn(copyGen)
dependencies {
compile project(":core")
@@ -135,16 +158,16 @@ project(":ios") {
project(":core") {
apply plugin: "java"
task finish {
generateLocales()
}
dependencies {
compileOnly project(":annotations")
build.finalizedBy(finish)
boolean comp = System.properties["release"] == null || System.properties["release"] == "false"
if(!comp){
println("NOTICE: Compiling release build.")
}else{
println("Compiling DEBUG build.")
}
def comp = System.properties["release"] == null || System.properties["release"] == "false"
if(!comp) println("Note: Compiling release build.")
if(new File(projectDir.parent, '../uCore').exists() && comp){
compile project(":uCore")
@@ -168,6 +191,12 @@ project(":core") {
project(":server") {
apply plugin: "java"
configurations {
if(findProject(":android") != null){
compile.exclude module: android
}
}
dependencies {
compileOnly project(":annotations")
@@ -200,10 +229,14 @@ project(":kryonet") {
dependencies {
compile project(":core")
compile 'com.github.crykn:kryonet:2.22.1'
compile "org.java-websocket:Java-WebSocket:1.3.7"
compile 'com.github.Anuken:WaifUPnP:05eb46bc577fd7674596946ba288c96c0cedd893'
}
}
project(":reporter"){
apply plugin: "java"
}
tasks.eclipse.doLast {
delete ".project"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

After

Width:  |  Height:  |  Size: 84 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

After

Width:  |  Height:  |  Size: 75 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

After

Width:  |  Height:  |  Size: 170 B

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